[
  {
    "path": ".coveragerc",
    "content": "[run]\nomit = tests/*\n"
  },
  {
    "path": ".github/.codecov.yml",
    "content": "coverage:\n  precision: 2\n  round: nearest\n  range: \"40..100\"\n  status:\n    # Only consider coverage of the code snippet changed in PR\n    # https://docs.codecov.io/docs/commit-status\n    project: no\n    patch: yes\n    changes: no\n\ncomment:\n  layout: \"header, diff\"\n  behavior: default\n  require_changes: no\n\nflags:\n  library:\n    paths:\n    - aiohttp/\n  configs:\n    paths:\n    - requirements/\n    - \".git*\"\n    - \"*.toml\"\n    - \"*.yml\"\n  changelog:\n    paths:\n    - CHANGES/\n    - CHANGES.rst\n  docs:\n    paths:\n    - docs/\n    - \"*.md\"\n    - \"*.rst\"\n    - \"*.txt\"\n  tests:\n    paths:\n    - tests/\n  tools:\n    paths:\n    - tools/\n  third-party:\n    paths:\n    - vendor/\n\nignore:\n- old/\n- tests/\n"
  },
  {
    "path": ".github/CODE_OF_CONDUCT.md",
    "content": "# Community Code of Conduct\n Please see the official [Ansible Community Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html).\n"
  },
  {
    "path": ".gitignore",
    "content": "# Created by https://www.gitignore.io/api/git,linux,pydev,python,windows,pycharm+all,jupyternotebook,vim,webstorm,emacs\n# Edit at https://www.gitignore.io/?templates=git,linux,pydev,python,windows,pycharm+all,jupyternotebook,vim,webstorm,emacs\n\n### Emacs ###\n# -*- mode: gitignore; -*-\n*~\n\\#*\\#\n/.emacs.desktop\n/.emacs.desktop.lock\n*.elc\nauto-save-list\ntramp\n.\\#*\n\n# Org-mode\n.org-id-locations\n*_archive\n\n# flymake-mode\n*_flymake.*\n\n# eshell files\n/eshell/history\n/eshell/lastdir\n\n# elpa packages\n/elpa/\n\n# reftex files\n*.rel\n\n# AUCTeX auto folder\n/auto/\n\n# cask packages\n.cask/\ndist/\n\n# Flycheck\nflycheck_*.el\n\n# server auth directory\n/server/\n\n# projectiles files\n.projectile\n\n# directory configuration\n.dir-locals.el\n\n# network security\n/network-security.data\n\n\n### Git ###\n# Created by git for backups. To disable backups in Git:\n# $ git config --global mergetool.keepBackup false\n*.orig\n\n# Created by git when using merge tools for conflicts\n*.BACKUP.*\n*.BASE.*\n*.LOCAL.*\n*.REMOTE.*\n*_BACKUP_*.txt\n*_BASE_*.txt\n*_LOCAL_*.txt\n*_REMOTE_*.txt\n\n### JupyterNotebook ###\n.ipynb_checkpoints\n*/.ipynb_checkpoints/*\n\n# Remove previous ipynb_checkpoints\n#   git rm -r .ipynb_checkpoints/\n#\n\n### Linux ###\n\n# temporary files which can be created if a process still has a handle open of a deleted file\n.fuse_hidden*\n\n# KDE directory preferences\n.directory\n\n# Linux trash folder which might appear on any partition or disk\n.Trash-*\n\n# .nfs files are created when an open file is removed but is still being accessed\n.nfs*\n\n### PyCharm+all ###\n# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm\n# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839\n\n# User-specific stuff\n.idea/**/workspace.xml\n.idea/**/tasks.xml\n.idea/**/usage.statistics.xml\n.idea/**/dictionaries\n.idea/**/shelf\n\n# Generated files\n.idea/**/contentModel.xml\n\n# Sensitive or high-churn files\n.idea/**/dataSources/\n.idea/**/dataSources.ids\n.idea/**/dataSources.local.xml\n.idea/**/sqlDataSources.xml\n.idea/**/dynamic.xml\n.idea/**/uiDesigner.xml\n.idea/**/dbnavigator.xml\n\n# Gradle\n.idea/**/gradle.xml\n.idea/**/libraries\n\n# Gradle and Maven with auto-import\n# When using Gradle or Maven with auto-import, you should exclude module files,\n# since they will be recreated, and may cause churn.  Uncomment if using\n# auto-import.\n# .idea/modules.xml\n# .idea/*.iml\n# .idea/modules\n\n# CMake\ncmake-build-*/\n\n# Mongo Explorer plugin\n.idea/**/mongoSettings.xml\n\n# File-based project format\n*.iws\n\n# IntelliJ\nout/\n\n# mpeltonen/sbt-idea plugin\n.idea_modules/\n\n# JIRA plugin\natlassian-ide-plugin.xml\n\n# Cursive Clojure plugin\n.idea/replstate.xml\n\n# Crashlytics plugin (for Android Studio and IntelliJ)\ncom_crashlytics_export_strings.xml\ncrashlytics.properties\ncrashlytics-build.properties\nfabric.properties\n\n# Editor-based Rest Client\n.idea/httpRequests\n\n# Android studio 3.1+ serialized cache file\n.idea/caches/build_file_checksums.ser\n\n### PyCharm+all Patch ###\n# Ignores the whole .idea folder and all .iml files\n# See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360\n\n.idea/\n\n# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023\n\n*.iml\nmodules.xml\n.idea/misc.xml\n*.ipr\n\n### pydev ###\n.pydevproject\n\n### Python ###\n# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\nbuild/\ndevelop-eggs/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\nshare/python-wheels/\n*.egg-info/\n.installed.cfg\n*.egg\nMANIFEST\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.nox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*.cover\n.hypothesis/\n.pytest_cache/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\ndb.sqlite3\n\n# Flask stuff:\ninstance/\n.webassets-cache\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\ntarget/\n\n# Jupyter Notebook\n\n# IPython\nprofile_default/\nipython_config.py\n\n# pyenv\n.python-version\n\n# celery beat schedule file\ncelerybeat-schedule\n\n# SageMath parsed files\n*.sage.py\n\n# Environments\n.env\n.venv\nenv/\nvenv/\nENV/\nenv.bak/\nvenv.bak/\n\n# Spyder project settings\n.spyderproject\n.spyproject\n\n# Rope project settings\n.ropeproject\n\n# mkdocs documentation\n/site\n\n# mypy\n.mypy_cache/\n.dmypy.json\ndmypy.json\n\n# Pyre type checker\n.pyre/\n\n### Python Patch ###\n.venv/\n\n### Vim ###\n# Swap\n[._]*.s[a-v][a-z]\n[._]*.sw[a-p]\n[._]s[a-rt-v][a-z]\n[._]ss[a-gi-z]\n[._]sw[a-p]\n\n# Session\nSession.vim\n\n# Temporary\n.netrwhist\n# Auto-generated tag files\ntags\n# Persistent undo\n[._]*.un~\n\n### WebStorm ###\n# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm\n# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839\n\n# User-specific stuff\n\n# Generated files\n\n# Sensitive or high-churn files\n\n# Gradle\n\n# Gradle and Maven with auto-import\n# When using Gradle or Maven with auto-import, you should exclude module files,\n# since they will be recreated, and may cause churn.  Uncomment if using\n# auto-import.\n# .idea/modules.xml\n# .idea/*.iml\n# .idea/modules\n\n# CMake\n\n# Mongo Explorer plugin\n\n# File-based project format\n\n# IntelliJ\n\n# mpeltonen/sbt-idea plugin\n\n# JIRA plugin\n\n# Cursive Clojure plugin\n\n# Crashlytics plugin (for Android Studio and IntelliJ)\n\n# Editor-based Rest Client\n\n# Android studio 3.1+ serialized cache file\n\n### WebStorm Patch ###\n# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721\n\n# *.iml\n# modules.xml\n# .idea/misc.xml\n# *.ipr\n\n# Sonarlint plugin\n.idea/sonarlint\n\n### Windows ###\n# Windows thumbnail cache files\nThumbs.db\nehthumbs.db\nehthumbs_vista.db\n\n# Dump file\n*.stackdump\n\n# Folder config file\n[Dd]esktop.ini\n\n# Recycle Bin used on file shares\n$RECYCLE.BIN/\n\n# Windows Installer files\n*.cab\n*.msi\n*.msix\n*.msm\n*.msp\n\n# Windows shortcuts\n*.lnk\n\n# End of https://www.gitignore.io/api/git,linux,pydev,python,windows,pycharm+all,jupyternotebook,vim,webstorm,emacs\n\n\n\ndata*\nheaders*\nrun*\nansibullbot.egg-info\nansibullbot.cfg\n*.sublime-*\nansibullbot/utils/ghostdriver.log\nansible/\n*.bak\ntestrl.py\ntests/fixtures/ansible-*.tar.gz\n.vagrant\n*.retry\n*.xml\n/issues/\n"
  },
  {
    "path": ".gitmodules",
    "content": "[submodule \"playbooks/roles/ansibullbot\"]\n\tpath = playbooks/roles/ansibullbot\n\turl = https://github.com/mkrizek/ansible-role-ansibullbot.git\n    branch = 2.3.3\n[submodule \"playbooks/roles/firewall\"]\n\tpath = playbooks/roles/firewall\n\turl = https://github.com/samdoran/ansible-role-firewall.git\n    branch = 2.1.2\n[submodule \"playbooks/roles/repo_epel\"]\n\tpath = playbooks/roles/repo_epel\n\turl = https://github.com/samdoran/ansible-role-repo-epel.git\n    branch = 1.2.2\n[submodule \"playbooks/roles/ansibullbot_instance\"]\n\tpath = playbooks/roles/ansibullbot_instance\n\turl = https://github.com/samdoran/ansible-role-ansibullbot-instance.git\n    branch = 3.1.2\n[submodule \"playbooks/roles/mongodb\"]\n\tpath = playbooks/roles/mongodb\n\turl = https://github.com/samdoran/ansible-role-mongodb.git\n    branch = 1.1.2\n[submodule \"playbooks/roles/fail2ban\"]\n\tpath = playbooks/roles/fail2ban\n\turl = https://github.com/samdoran/ansible-role-fail2ban.git\n    branch = 1.0.3\n[submodule \"playbooks/roles/yum_cron\"]\n\tpath = playbooks/roles/yum_cron\n\turl = https://github.com/samdoran/ansible-role-yum-cron.git\n    branch = 1.2.1\n[submodule \"playbooks/roles/caddy\"]\n\tpath = playbooks/roles/caddy\n\turl = https://github.com/samdoran/ansible-role-caddy.git\n    branch = 2.1.1\n[submodule \"playbooks/roles/authorized_keys\"]\n\tpath = playbooks/roles/authorized_keys\n\turl = https://github.com/samdoran/ansible-role-authorized-keys.git\n    branch = 1.0.2\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Ansibullbot Contributor's Guide\n\n## Python compatibility\n\nAnsibullbot is compatible with Python 3.8+.\n\n## Getting started\n\n1. Fork this repo\n2. Clone your fork\n3. Create a feature branch\n4. Optionally: create a [Python virtual environment](https://realpython.com/python-virtual-environments-a-primer/)\n4. Install the python requirements: `pip install -r requirements.txt`\n5. Create the log file:\n    * either add `--log path/to/file.log` to the `triage_ansible.py` below\n    * or use `sudo touch /var/log/ansibullbot.log && sudo chmod 777 /var/log/ansibullbot.log`\n6. Create the config file, copy [`examples/ansibullbot.cfg`](https://github.com/ansible/ansibullbot/blob/devel/examples/ansibullbot.cfg) to one of these paths:\n    * `~/.ansibullbot.cfg`\n    * `$CWD/ansibullot.cfg`\n    * `/etc/ansibullot/ansibullbot.cfg`\n    * define `ANSIBULLBOT_CONFIG` environment variable where the configuration file is located\n7. fill in the credentials\n\n## Testing your changes\n\nRun with `verbose`, `debug` and `dry-run` ...\n\n```bash\n./triage_ansible.py --debug --verbose --dry-run\n```\n\n## Testing changes to BOTMETA.yml\n\n1. Download [`BOTMETA.yml`](https://github.com/ansible/ansible/blob/devel/.github/BOTMETA.yml) to a local directory\n2. Edit the file with whatever changes you want to make.\n3. Run `triage_ansible.py` with `--botmetafile=<PATHTOFILE>`.\n\nIf you have a specific issue to test against, use the `--id` parameter to speed up testing.\n\n## Testing changes related to a single label\n\nThe `--id` parameter can take a path to a script. The `scripts` directory is full of scripts that will return json'ified lists of issue numbers. One example is the `scripts/list_open_issues_with_needs_info.sh` script which scrapes the github UI for any issues with the needs_info label. Here's how you might use that to test your changes to ansibullbot against all issues with needs_info ...\n\n```\n./triage_ansible.py --debug --verbose --dry-run --id=scripts/list_open_issues_with_needs_info.sh\n```\n\n\n## Updating Ansible Playbooks and Roles used by Ansibullbot ##\n\nAnsibullbot is deployed and managed using [Ansible](https://www.ansible.com) and [Ansible Tower](https://www.ansible.com/tower). There are several roles used by Ansibullbot, each of which is a [git submodule](https://git-scm.com/book/en/v2/Git-Tools-Submodules).\n\nWhen making changes anything besides the roles, make the changes to this repository and submit a pull request.\n\nWhen making changes to roles, first submit pull request to the role repository and ensure it is merged to the pull request repository. Then, submit a pull request to this repository updating the submodule to the include the new commit.\n\nTo update the role submodule and include it in your pull request:\n\n1. Run `git submodule update --remote [path to role]` to pull in the latest role commits.\n1. `git add [path to role]`\n1. Commit and push the branch to your fork\n2. Submit the pull request\n"
  },
  {
    "path": "ISSUE_HELP.md",
    "content": "# Ansibullbot Help\n\nMaking progress in resolving issues for modules depends upon your interaction! Please be sure to respond to requests or additional information as needed.\n\nIf at any time you think this bot is misbehaving (not for test failures), please leave a comment containing the keyword [`bot_broken`](#cmd-bot_broken) and an Ansible staff member will intervene.\n\n#### Table of contents\n\n* [Overview](#overview)\n* [For issue submitters](#for-issue-submitters)\n* [For pull request submitters](#for-pull-request-submitters)\n  * [When will your pull request be merged?](#when-will-your-pull-request-be-merged)\n    * [New Modules](#new-modules)\n    * [Existing Modules](#existing-modules)\n      * [core](#core)\n      * [certified](#certified)\n      * [community](#community)\n      * [network](#network)\n    * [Non-module changes](#non-module-changes)\n* [For community maintainers](#for-community-maintainers)\n  * [How to disable notifications](#how-to-disable-notifications)\n* [For anyone else](#for-anyone-else)\n* [Commands](#commands)\n* [Labels](#labels)\n  * [When to use label commands](#when-to-use-label-commands)\n  * [How to use label commands](#how-to-use-label-commands)\n\n## Overview\n\nThe Ansibull Triage Bot serves many functions:\n\n* Responds quickly to issue and pull request submitters to thank them;\n* Identifies the maintainers responsible for reviewing pull requests for any files affected;\n* Tracks the current status of pull requests;\n* Pings responsible parties to remind them of any actions that they may be responsible for;\n* Provides maintainers with the ability to move pull requests through our [workflow](#when-will-your-pull-request-be-merged);\n* Identifies issues and pull requests abandoned by their authors so that we can close them;\n* Identifies modules abandoned by their maintainers so that we can find new maintainers;\n* Automatically labels issues and pull requests based on keywords or affected files.\n\n## For issue submitters\nPlease note that if you have a question about how to use this feature or module with Ansible, that's probably something you should ask on the [ansible-project](https://groups.google.com/forum/#!forum/ansible-project) mailing list, rather than submitting a bug report. For more details, please see [I’ve Got A Question](http://docs.ansible.com/ansible/community.html#i-ve-got-a-question).\n\nIf the feature/module maintainer or ansibullbot needs further information, please respond to the request, so that you can help the devs to help you!\n\nThe bot requires a minimal subset of information from the issue template:\n* issue type\n* component name\n* ansible version\n* summary\n\nIf any of those items are missing or empty, ansibullbot will keep the issue in a `needs_info` state until the data is provided in the issue's description. The bot is expecting an issue description styled after the default issue template, so please use that whenever possible.\n\nExpect the bot to do a few things:\n\n1. Add common [labels](#labels) such as `needs_triage`, `bug_report`, `feature_idea`, etc.\n\n   These labels are determined by templated data in the description. Please fill out the templates as accurately as possible so that the appropriate labels are used.\n\n2. Notify and assign the maintainer(s) of the relevant file(s) or module(s).\n\n   Notifications will happen via a comment with the `@NAME` syntax. If you know of other interested parties, feel free to ping them in a comment or in your issue description.\n\nIf you are not sure who the issue is waiting on, please use the [`bot_status`](#cmd-bot_status) command.\n\n## For pull request submitters\nExpect the bot to do a few things:\n\n1. All of the items described in the for [issue submitters](#for-issue-submitters) section.\n\n2. Add [labels](#labels) indicating the status of the pull request.\n\nPlease prefix your pull request's title with `WIP` if you are not yet finished making changes. This will tell the bot to ignore the [`needs_rebase`](#label-needs_rebase) and [`shipit`](#label-shipit) workflows until you remove it from the title.\n\nIf you are finished committing to your pull request or have made changes due to a request, please use the [`ready_for_review`](#cmd-ready_for_review) command.\n\nIf you are not sure who the pull request is waiting on, please use the [`bot_status`](#cmd-bot_status) command.\n\n### When will your pull request be merged?\n\n:information_source: `Approve` pull request status is ignored, [`shipit`](#cmd-shipit) command is used by maintainer to approve a pull request. The bot automatically adds a [`shipit`](#label-shipit) label to the pull request when the required number of [`shipit`](#cmd-shipit) commands has been reached.\n\nThe bot will label a pull request with [`shipit`](#label-shipit) when at least **two** [`shipit`] commands are issued, the following rules describe how [`shipit`](#cmd-shipit) commands are count:\n\n* [`shipit`](#cmd-shipit) issued by a module maintainer or a maintainer of a module in the same namespace or a core team member are always taken in account\n* when the submitter is a module maintainer or a maintainer of a module in the same namespace or a core team member, their [`shipit`](#cmd-shipit) is automatically counted\n* [`shipit`](#cmd-shipit) issued by anyone else is taken in account when both conditions are met:\n  * at least one module maintainer or a maintainer of a module in the same namespace or a core team member has approved the pull request with a [`shipit`](#cmd-shipit) command\n  * at least three people which aren't maintainer nor core team member have approved the pull request using the [`shipit`](#cmd-shipit)\n\n#### New Modules\n\nOnce the pull request labeled with [`shipit`](#label-shipit), the module will be merged once a member of the Ansible organization has reviewed it and decided to include it.\n\n:information_source: If you are a maintainer of a module in the same namespace, only one `shipit` is required.\n\n#### Existing Modules\n\nMembers of the Ansible Core Team typically do all the maintenance on these modules, so only they can approve changes.\n\n#### Non-module changes\n\nThe ansible core team approves these pull requests and it may take some time for them to get to your request.\n\n## For community maintainers\n\n:information_source: `Approve` pull request status is ignored, [`shipit`](#cmd-shipit) command must be used in order to approve a pull request.\n\nThanks in advance for taking a look at issues and pull requests and for your ongoing maintenance. If you are unable to troubleshoot or review this issue/pull request with the information provided, please ping the submitter of the issue in a comment to let them know.\n\n### How to disable notifications\nIf you wish to stop receiving notifications from Ansibullbot to issues and pull requests you need to add your github name into the `ignored` key under plugin you are no longer insterested in in the [BOTMETA.yml](https://github.com/ansible/ansible/blob/devel/.github/BOTMETA.yml) file and send a pull request against the [ansible/ansible](https://github.com/ansible/ansible) repository. See an example below:\n```yaml\n...\n$modules/cloud/amazon/:\n  ignored: erydo seiffert simplesteph nadirollo tedder joshsouza defionscode\n  maintainers: $team_aws\n...\n```\n\nIf the plugin was migrated to a [collection](https://github.com/ansible-collections) you also need to add an ignore entry into `BOTMETA.yml` in the collection repository as well.\n\n## For anyone else\nReactions help us determine how many people are interested in a pull request or have run across a similar bug. Please leave a +1 [reaction](https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments) (:+1:) if that applies to you. Any additional details you can provide, such as your usecase, environment, steps to reproduce, or workarounds you have found, can help out with resolving issues or getting pull requests merged.\n\n## Commands\n\nTo streamline the maintenance process, we've added some commands to Ansibullbot that you can use to help direct the work flow. Using the automation is simply a matter of adding one of the following commands in your comments:\n\nCommand | Scope | Allowed | Description\n--- | --- | --- | ---\n**<a name=\"cmd-bot_broken\">bot_broken</a>** | issues pull requests | anyone | Use this command if you think the bot is misbehaving (not for test failures), and an Ansible staff member will investigate.\n**<a name=\"cmd-bot_broken\">!bot_broken</a>** | issues pull requests | anyone | Clear `bot_broken` command.\n**<a name=\"cmd-bot_skip\">bot_skip</a>** | issues pull requests | staff | Ansible staff members use this to have the bot skip triaging an issue.\n**<a name=\"cmd-bot_skip\">!bot_skip</a>** | issues pull requests | staff | Clear `bot_skip` command.\n**<a name=\"cmd-bot_status\">bot_status</a>** | pull requests | submitters maintainers | Use this command if you would like the bot to comment with some helpful metadata about the issue.\n**<a name=\"cmd-!needs_collection_redirect\">!needs_collection_redirect</a>** | issues pull requests | anyone | Use this command if bot made a mistake in deciding an issue or PR was for a file in a collection. Ansible Core team member will need to re-open the issue/PR. Contact a Core team member to review the issue/PR on IRC: `#ansible-devel` on Libera.chat IRC.\n**<a name=\"cmd-needs_info\">needs_info</a>** | issues pull requests | maintainers past committers | Use this command if you need more information from the submitter. We will notify the submitter and apply the [`needs_info`](#label-needs_info) label.\n**<a name=\"cmd-!needs_info\">!needs_info</a>** | issues pull requests | maintainers past committers | If you do not need any more information and just need time to work the issue, leave a comment that contains the command `!needs_info` and the [`needs_info`](#label-needs_info) label will be replaced with [`waiting_on_maintainer`](#label-waiting_on_maintainer).\n**<a name=\"cmd-needs_revision\">needs_revision</a>** | pull requests | maintainers | Use this command if you would like the submitter to make changes.\n**<a name=\"cmd-!needs_revision\">!needs_revision</a>** | pull requests | maintainers | If you want to clear the [`needs_revision`](#label-needs_revision) label, use this command.\n**<a name=\"cmd-needs_rebase\">needs_rebase</a>** | pull requests | maintainers | Use this command if the submitters branch is out of date. The bot should automatically apply this label, so you may never need to use it.\n**<a name=\"cmd-!needs_rebase\">!needs_rebase</a>** | pull requests | maintainers | Clear the [`needs_rebase`](#label-needs_rebase) label.\n**<a name=\"cmd-notabug\">notabug</a>** | issues | maintainers | If you believe this is not a bug, please leave a comment stating `notabug`, along with any additional information as to why it is not, and we will close this issue.\n**<a name=\"cmd-bug_resolved\">bug_resolved</a>** | issues | maintainers | If you believe this issue is resolved, please leave a comment stating `bug_resolved`, and we will close this issue.\n**<a name=\"cmd-resolved_by_pr\">resolved_by_pr</a>** | issues | maintainers | If you believe this issue has been resolved by a pull request, please leave a comment stating `resolved_by_pr` followed by the pull request number.\n**<a name=\"cmd-wontfix\">wontfix</a>** | issues | maintainers | If this is a bug that you can't or won't fix, please leave a comment including the word `wontfix`, along with an explanation for why it won't be fixed.\n**<a name=\"cmd-needs_contributor\">needs_contributor</a>** | issues | maintainers | If this bug or feature request is something that you want implemented but do not have the time or expertise to do, comment with `needs_contributor`, and the issue will be put into a [`waiting_on_contributor`](#label-waiting_on_contributor) state.\n**<a name=\"cmd-duplicate_of\">duplicate_of</a>** | issues | maintainers | If this bug or feature request is a duplicate of another issue, comment with `duplicate_of` followed by the issue number that it duplicates, and the issue will be closed.\n**<a name=\"cmd-close_me\">close_me</a>** | issues | maintainers | If the issue can be closed for a reason you will specify in the comment, use this command.\n**<a name=\"cmd-ready_for_review\">ready_for_review</a>** | pull requests | submitters | If you are finished making commits to your pull request or have made changes due to a request, please use this command to trigger a review from the maintainer(s).\n**<a name=\"cmd-shipit\">shipit</a>** | pull requests | maintainers | If you approve the code in this pull request, use this command to have it merged. Note that Github `Approve` pull request status is ignored. Nonetheless `shipit` in review summary of commented or approved review is taken in account. In place of `shipit`, `+1` and `LGTM` can be used too. Note that these commands must not be surrounded by any character, spaces excepted.\n**<a name=\"cmd-add-label\">+label</a>** | issues pull requests | staff maintainers | Add a [supported label](#labels). See [When to use label commands](#when-to-use-label-commands).\n**<a name=\"cmd-remove-label\">-label</a>** | issues pull requests | staff maintainers | Remove a [supported label](#labels). See [When to use label commands](#when-to-use-label-commands).\n**<a name=\"cmd-rebuild_merge\">rebuild_merge</a>** | pull requests | staff | Allow core team members to trigger CI, then the pull request is automatically merged if CI results are successful.\n**<a name=\"cmd-rebuild\">/rebuild</a>** | pull requests | anyone | Allows anyone to re-trigger CI.\n**<a name=\"cmd-rebuild_failed\">/rebuild_failed</a>** | pull requests | anyone | Allows anyone to re-trigger CI only on failed jobs [this is usually much faster than /rebuild].\n**<a name=\"cmd-component\">!component</a>** | issues | anyone | Set, append or remove a file from the matched components. To set, use `!component =lib/ansible/foo/bar`. To add, use `!component +lib/ansible/foo/bar`. To remove, use `!component -lib/ansible/foo/bar`.\n**<a name=\"cmd-waffling\">!waffling</a>** | all | maintainers | Disable waffling detection on a label. To use `!waffling <labelname>` on a separate line in a comment.\n\n## Labels\n\nThe bot adds many labels on issues and pull requests.\n\nLabel | Scope | Prevent automerge | Description\n--- | --- | --- | ---\n**<a name=\"label-automerge\">automerge</a>** | pull requests | no | Identify pull requests automatically merged by the bot.\n**<a name=\"label-backport\">backport</a>** | pull requests | yes | Added to pull requests which don't target `devel` branch.\n**<a name=\"label-bot_broken\">bot_broken</a>** | pull requests | yes | Allow to identify pull requests for which [`bot_broken`](#cmd-bot_broken) had been used.\n**<a name=\"label-bug\">bug</a>** | issues pull requests | no | Added to issues or pull requests reporting/fixing bugs.\n**<a name=\"label-c:_name_\">c:_name_</a>** | issues pull requests | no | Categorize issues or pull requests by their relevant source code files.\n**<a name=\"label-ci_verified\">ci_verified</a>** | pull requests | yes | Identify pull requests for which CI failed. A pull request must successfully pass CI in order to be merged.\n**<a name=\"label-docs\">docs</a>** | issues pull requests | no | Identify issues or pull requests related to documentation.\n**<a name=\"label-docsite_pr\">docsite_pr</a>** | pull requests | no | Identify pull requests created through documentation's \"Edit on GitHub\" link\n**<a name=\"label-easyfix\">easyfix</a>** | issue or pull requests | no | Identify easy entrance point for people who are looking to start contributing.\n**<a name=\"label-feature\">feature</a>** | issues pull requests | no | Added to issues or pull requests requesting/adding new features.\n**<a name=\"label-filament\">filament</a>** | pull requests | no | Identify pull requests related to [Ansible Lightbulb](https://github.com/ansible/lightbulb) project.\n**<a name=\"label-merge_commit\">merge_commit</a>** | pull requests | no | Added to pull requests containing at least one merge commit. Pull requests must not contain merge commit.\n**<a name=\"label-module\">module</a>** | pull requests | no | Identify pull requests updating existing modules.\n**<a name=\"label-needs_ci\">needs_ci</a>** | pull requests | no | Identify pull requests for which CI status is missing. When a pull request is closed and reopened or when new commits are updated, the CI is triggered again.\n**<a name=\"label-needs_collection_redirect\">needs_collection_redirect</a>** | issue or pull requests | no | [Collection Migration Docs](https://github.com/ansible/ansibullbot/blob/devel/docs/collection_migration.md)\n**<a name=\"label-needs_info\">needs_info</a>** | issues | yes | Identify issues for which reviewer requested further information.\n**<a name=\"label-needs_maintainer\">needs_maintainer</a>** | pull requests | no | Ansibullbot is unable to identify authors or maintainers of the related module. Check `author` field format in [`DOCUMENTATION block`](http://docs.ansible.com/ansible/devel/dev_guide/developing_modules_documenting.html#documentation-block).\n**<a name=\"label-needs_rebase\">needs_rebase</a>** | pull requests | yes | Pull requests which are out of sync with ansible/ansible's `devel` branch. Please review the [rebase guide](http://docs.ansible.com/ansible/devel/dev_guide/developing_rebasing.html) for further information.\n**<a name=\"label-needs_revision\">needs_revision</a>** | pull requests | yes | Used for pull request which fail continuous integration tests or if a maintainer has requested a review/revision of the code. This label can be cleared by fixing any failed tests or by commenting [`ready_for_review`](#cmd-ready_for_review).\n**<a name=\"label-needs_template\">needs_template</a>** | issues pull requests | no | Label added when description is incomplete. See [issue templates](https://github.com/ansible/ansible/tree/devel/.github/ISSUE_TEMPLATE) or pull request [template](https://raw.githubusercontent.com/ansible/ansible/devel/.github/PULL_REQUEST_TEMPLATE.md).\n**<a name=\"label-needs_triage\">needs_triage</a>** | issues pull requests | no | This label will be added if your issue is being labeled for the first time. We (ansible staff and maintainers) use this label to find issues that need a human first touch. We'll remove it once we've given the issue a quick look for any labeling problems or missing data.\n**<a name=\"label-needs_verified\">needs_verified</a>** | issues | no | This label implies a maintainer needs to check if the issue can be reproduced in the latest version.\n**<a name=\"label-new_module\">new_module</a>** | pull requests | yes | Identify pull requests adding new module.\n**<a name=\"label-owner_pr\">owner_pr</a>** | pull requests | no | Identify pull requests made by module maintainers.\n**<a name=\"label-shipit\">shipit</a>** | pull requests | no | Identify pull requests for which the required number of `shipit` has been reached. For [community](#community) reviewed pull requests, if `automerge` workflow applies, then pull request should be automatically merged. For all other cases, merge should be performed by a core team members. If your pull request gets no comment and becomes tagged with [`stale_review`](#label-stale_review), you can add it to the [IRC core team meeting agenda](https://github.com/ansible/community/blob/devel/meetings/core-team.yaml) to receive more comments.\n**<a name=\"label-stale_ci\">stale_ci</a>** | pull requests | yes | Added when the last CI result is older than one week. When a pull request is closed and reopened, the CI is triggered again. In some case, the bot will automatically trigger the CI when a pull request is labeled with both [`shipit`](#label-shipit) and `stale_ci`.\n**<a name=\"label-stale_review\">stale_review</a>** | pull requests | no | Added when submitter made some updates after a reviewer requested some changes, if the submitter updates are older than seven days and the reviewer didn't update their review.\n**<a name=\"label-test\">test</a>** | pull requests | no | Identify pull requests related to tests.\n**<a name=\"label-waiting_on_contributor\">waiting_on_contributor</a>** | issues pull requests | no | The feature or fix would be accepted, but there are no plans to actively work on it.\n**<a name=\"label-WIP\">WIP</a>** | pull requests | yes | Identify pull requests which are not ready (from the submitter point of view) to be merged.\n\nSome labels are used to categorize issues and pull requests:\n\n* Pull requests related to [test](https://github.com/ansible/community/wiki):\n  * `test`\n\n* Namespace labels:\n  * `aci`\n  * `avi`\n  * `aws`\n  * `azure`\n  * `cloud`\n  * `cloudstack`\n  * `digital_ocean`\n  * `docker`\n  * `f5`\n  * `gce`\n  * `infoblox`\n  * `jboss`\n  * `meraki`\n  * `netapp`\n  * `networking`\n  * `nxos`\n  * `openstack`\n  * `ovirt`\n  * `ucs`\n  * `vmware`\n  * `windows`\n\n* Module labels:\n  * `m:unarchive`\n  * `m:xml`\n\n### When to use label commands\n\nThe `+label` and `-label` commands are restricted to a subset of available labels and are not meant to replace the other bot commands:\n\n* `affects_X.Y` -- indicates that the issue is relevant to a particular ansible *major.minor* version.\n* `c:...` -- these labels categorize issues or pull requests by their relevant source code files.\n* `easyfix` -- indicates that the issue an easy entrance point for people who are looking to start contributing.\n* `m:...` -- these labels categorize issues or pull requests by their module name.\n* `module` -- classifies the issue as a module related issue.\n* `needs_triage` -- a human being still needs to validate the issue is properly labeled and has all the information required.\n* `test` and namespace labels\n\n### How to use label commands\n\nTo use the commands, please type the command and label on one line each in a comment.\nExample:\n```\n-label needs_triage\n+label cloud\n+label gce\n```\n"
  },
  {
    "path": "LICENSE",
    "content": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The GNU General Public License is a free, copyleft license for\nsoftware and other kinds of works.\n\n  The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works.  By contrast,\nthe GNU General Public License is intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.  We, the Free Software Foundation, use the\nGNU General Public License for most of our software; it applies also to\nany other work released this way by its authors.  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n  To protect your rights, we need to prevent others from denying you\nthese rights or asking you to surrender the rights.  Therefore, you have\ncertain responsibilities if you distribute copies of the software, or if\nyou modify it: responsibilities to respect the freedom of others.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must pass on to the recipients the same\nfreedoms that you received.  You must make sure that they, too, receive\nor can get the source code.  And you must show them these terms so they\nknow their rights.\n\n  Developers that use the GNU GPL protect your rights with two steps:\n(1) assert copyright on the software, and (2) offer you this License\ngiving you legal permission to copy, distribute and/or modify it.\n\n  For the developers' and authors' protection, the GPL clearly explains\nthat there is no warranty for this free software.  For both users' and\nauthors' sake, the GPL requires that modified versions be marked as\nchanged, so that their problems will not be attributed erroneously to\nauthors of previous versions.\n\n  Some devices are designed to deny users access to install or run\nmodified versions of the software inside them, although the manufacturer\ncan do so.  This is fundamentally incompatible with the aim of\nprotecting users' freedom to change the software.  The systematic\npattern of such abuse occurs in the area of products for individuals to\nuse, which is precisely where it is most unacceptable.  Therefore, we\nhave designed this version of the GPL to prohibit the practice for those\nproducts.  If such problems arise substantially in other domains, we\nstand ready to extend this provision to those domains in future versions\nof the GPL, as needed to protect the freedom of users.\n\n  Finally, every program is threatened constantly by software patents.\nStates should not allow patents to restrict development and use of\nsoftware on general-purpose computers, but in those that do, we wish to\navoid the special danger that patents applied to a free program could\nmake it effectively proprietary.  To prevent this, the GPL assures that\npatents cannot be used to render the program non-free.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                       TERMS AND CONDITIONS\n\n  0. Definitions.\n\n  \"This License\" refers to version 3 of the GNU General Public License.\n\n  \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n  \"The Program\" refers to any copyrightable work licensed under this\nLicense.  Each licensee is addressed as \"you\".  \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n  To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy.  The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n  A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n  To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy.  Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n  To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies.  Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n  An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License.  If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n  1. Source Code.\n\n  The \"source code\" for a work means the preferred form of the work\nfor making modifications to it.  \"Object code\" means any non-source\nform of a work.\n\n  A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n  The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form.  A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n  The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities.  However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work.  For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n  The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n  The Corresponding Source for a work in source code form is that\nsame work.\n\n  2. Basic Permissions.\n\n  All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met.  This License explicitly affirms your unlimited\npermission to run the unmodified Program.  The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work.  This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n  You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force.  You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright.  Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n  Conveying under any other circumstances is permitted solely under\nthe conditions stated below.  Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n  3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n  No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n  When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n  4. Conveying Verbatim Copies.\n\n  You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n  You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n  5. Conveying Modified Source Versions.\n\n  You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n    a) The work must carry prominent notices stating that you modified\n    it, and giving a relevant date.\n\n    b) The work must carry prominent notices stating that it is\n    released under this License and any conditions added under section\n    7.  This requirement modifies the requirement in section 4 to\n    \"keep intact all notices\".\n\n    c) You must license the entire work, as a whole, under this\n    License to anyone who comes into possession of a copy.  This\n    License will therefore apply, along with any applicable section 7\n    additional terms, to the whole of the work, and all its parts,\n    regardless of how they are packaged.  This License gives no\n    permission to license the work in any other way, but it does not\n    invalidate such permission if you have separately received it.\n\n    d) If the work has interactive user interfaces, each must display\n    Appropriate Legal Notices; however, if the Program has interactive\n    interfaces that do not display Appropriate Legal Notices, your\n    work need not make them do so.\n\n  A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit.  Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n  6. Conveying Non-Source Forms.\n\n  You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n    a) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by the\n    Corresponding Source fixed on a durable physical medium\n    customarily used for software interchange.\n\n    b) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by a\n    written offer, valid for at least three years and valid for as\n    long as you offer spare parts or customer support for that product\n    model, to give anyone who possesses the object code either (1) a\n    copy of the Corresponding Source for all the software in the\n    product that is covered by this License, on a durable physical\n    medium customarily used for software interchange, for a price no\n    more than your reasonable cost of physically performing this\n    conveying of source, or (2) access to copy the\n    Corresponding Source from a network server at no charge.\n\n    c) Convey individual copies of the object code with a copy of the\n    written offer to provide the Corresponding Source.  This\n    alternative is allowed only occasionally and noncommercially, and\n    only if you received the object code with such an offer, in accord\n    with subsection 6b.\n\n    d) Convey the object code by offering access from a designated\n    place (gratis or for a charge), and offer equivalent access to the\n    Corresponding Source in the same way through the same place at no\n    further charge.  You need not require recipients to copy the\n    Corresponding Source along with the object code.  If the place to\n    copy the object code is a network server, the Corresponding Source\n    may be on a different server (operated by you or a third party)\n    that supports equivalent copying facilities, provided you maintain\n    clear directions next to the object code saying where to find the\n    Corresponding Source.  Regardless of what server hosts the\n    Corresponding Source, you remain obligated to ensure that it is\n    available for as long as needed to satisfy these requirements.\n\n    e) Convey the object code using peer-to-peer transmission, provided\n    you inform other peers where the object code and Corresponding\n    Source of the work are being offered to the general public at no\n    charge under subsection 6d.\n\n  A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n  A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling.  In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage.  For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product.  A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n  \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source.  The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n  If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information.  But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n  The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed.  Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n  Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n  7. Additional Terms.\n\n  \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law.  If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n  When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit.  (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.)  You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n  Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n    a) Disclaiming warranty or limiting liability differently from the\n    terms of sections 15 and 16 of this License; or\n\n    b) Requiring preservation of specified reasonable legal notices or\n    author attributions in that material or in the Appropriate Legal\n    Notices displayed by works containing it; or\n\n    c) Prohibiting misrepresentation of the origin of that material, or\n    requiring that modified versions of such material be marked in\n    reasonable ways as different from the original version; or\n\n    d) Limiting the use for publicity purposes of names of licensors or\n    authors of the material; or\n\n    e) Declining to grant rights under trademark law for use of some\n    trade names, trademarks, or service marks; or\n\n    f) Requiring indemnification of licensors and authors of that\n    material by anyone who conveys the material (or modified versions of\n    it) with contractual assumptions of liability to the recipient, for\n    any liability that these contractual assumptions directly impose on\n    those licensors and authors.\n\n  All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10.  If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term.  If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n  If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n  Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n  8. Termination.\n\n  You may not propagate or modify a covered work except as expressly\nprovided under this License.  Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n  However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n  Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n  Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License.  If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n  9. Acceptance Not Required for Having Copies.\n\n  You are not required to accept this License in order to receive or\nrun a copy of the Program.  Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance.  However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work.  These actions infringe copyright if you do\nnot accept this License.  Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n  10. Automatic Licensing of Downstream Recipients.\n\n  Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License.  You are not responsible\nfor enforcing compliance by third parties with this License.\n\n  An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations.  If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n  You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License.  For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n  11. Patents.\n\n  A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based.  The\nwork thus licensed is called the contributor's \"contributor version\".\n\n  A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version.  For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n  Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n  In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement).  To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n  If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients.  \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n  If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n  A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License.  You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n  Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n  12. No Surrender of Others' Freedom.\n\n  If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all.  For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n  13. Use with the GNU Affero General Public License.\n\n  Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU Affero General Public License into a single\ncombined work, and to convey the resulting work.  The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the special requirements of the GNU Affero General Public License,\nsection 13, concerning interaction through a network will apply to the\ncombination as such.\n\n  14. Revised Versions of this License.\n\n  The Free Software Foundation may publish revised and/or new versions of\nthe GNU General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n  Each version is given a distinguishing version number.  If the\nProgram specifies that a certain numbered version of the GNU General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation.  If the Program does not specify a version number of the\nGNU General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n  If the Program specifies that a proxy can decide which future\nversions of the GNU General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n  Later license versions may give you additional or different\npermissions.  However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n  15. Disclaimer of Warranty.\n\n  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. Limitation of Liability.\n\n  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n  17. Interpretation of Sections 15 and 16.\n\n  If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\nAlso add information on how to contact you by electronic and paper mail.\n\n  If the program does terminal interaction, make it output a short\nnotice like this when it starts in an interactive mode:\n\n    <program>  Copyright (C) <year>  <name of author>\n    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, your program's commands\nmight be different; for a GUI interface, you would use an \"about box\".\n\n  You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU GPL, see\n<http://www.gnu.org/licenses/>.\n\n  The GNU General Public License does not permit incorporating your program\ninto proprietary programs.  If your program is a subroutine library, you\nmay consider it more useful to permit linking proprietary applications with\nthe library.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.  But first, please read\n<http://www.gnu.org/philosophy/why-not-lgpl.html>.\n\n\n"
  },
  {
    "path": "README.md",
    "content": "[![Build Status](https://dev.azure.com/ansible/ansibullbot/_apis/build/status/ansible.ansibullbot?branchName=devel)](https://dev.azure.com/ansible/ansibullbot/_build/latest?definitionId=12&branchName=devel) [![codecov](https://codecov.io/gh/ansible/ansibullbot/branch/devel/graph/badge.svg)](https://codecov.io/gh/ansible/ansibullbot)\n\nSee the Ansibullbot Project Board for what is being worked on:  [![Project Board](https://img.shields.io/github/issues/ansible/ansibullbot.svg)](https://github.com/ansible/ansibullbot/projects/1)\n\n# User Guide\n\n\nIf you are looking for help, please see the [ISSUE HELP](ISSUE_HELP.md)\n\n\n# Ansibull Github Issue/Pullrequest Bot\n\n```\n$ ./triage_ansible.py --help\nusage: triage_ansible.py [-h] [--cachedir CACHEDIR_BASE] [--logfile LOGFILE]\n                         [--daemonize]\n                         [--daemonize_interval DAEMONIZE_INTERVAL] [--debug]\n                         [--dry-run] [--force] [--pause] [--dump_actions]\n                         [--botmetafile BOTMETAFILE]\n                         [--repo {ansible/ansible}] [--skip_no_update]\n                         [--collect_only] [--sort {asc,desc}]\n                         [--skiprepo SKIPREPO] [--only_prs] [--only_issues]\n                         [--only_closed]\n                         [--ignore_state] [--ignore_bot_broken]\n                         [--ignore_module_commits] [--pr PR]\n                         [--start-at START_AT] [--resume] [--last LAST]\n                         [--commit ANSIBLE_COMMIT] [--ignore_galaxy]\n                         [--ci {azp}]\n\nTriage issue and pullrequest queues for Ansible. (NOTE: only useful if you\nhave commit access to the repo in question.)\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --cachedir CACHEDIR_BASE\n  --logfile LOGFILE     Send logging to this file\n  --daemonize           run in a continuos loop\n  --daemonize_interval DAEMONIZE_INTERVAL\n                        seconds to sleep between loop iterations\n  --debug, -d           Debug output\n  --dry-run, -n         Don't make any changes\n  --force, -f           Do not ask questions\n  --pause, -p           Always pause between prs|issues\n  --dump_actions        serialize the actions to disk [/tmp/actions]\n  --botmetafile BOTMETAFILE\n                        Use this filepath for botmeta instead of from the\n                        repo\n  --repo {ansible/ansible}, -r {ansible/ansible}\n                        Github repo to triage (defaults to all)\n  --skip_no_update      skip processing if updated_at hasn't changed\n  --collect_only        stop after caching issues\n  --sort {asc,desc}     Direction to sort issues [desc=9-0 asc=0-9]\n  --skiprepo SKIPREPO   Github repo to skip triaging\n  --only_prs            Triage pullrequests only\n  --only_issues         Triage issues only\n  --only_closed         Triage closed issues|prs only\n  --ignore_state        Do not skip processing closed issues\n  --ignore_bot_broken   Do not skip processing bot_broken|bot_skip issues\n  --ignore_module_commits\n                        Do not enumerate module commit logs\n  --pr PR, --id PR      Triage only the specified pr|issue (separated by\n                        commas)\n  --start-at START_AT   Start triage at the specified pr|issue\n  --resume              pickup right after where the bot last stopped\n  --last LAST           triage the last N issues or PRs\n  --commit ANSIBLE_COMMIT\n                        Use a specific commit for the indexers\n  --ignore_galaxy       do not index or search for components in galaxy\n  --ci {azp}            Specify a CI provider that repo uses\n```\n"
  },
  {
    "path": "Vagrantfile",
    "content": "# -*- mode: ruby -*-\n# vi: set ft=ruby :\n\n$script = <<SCRIPT\n# AUTHENTICATION\necho 'root:vagrant' | chpasswd\necho 'vagrant:vagrant' | chpasswd\negrep \"^PasswordAuthentication yes\" /etc/ssh/sshd_config\nRC=$?\nif [[ $RC != 0 ]]; then\n    echo \"Enabling ssh passwords\"\n    sed -i.bak 's/PasswordAuthentication\\ no/PasswordAuthentication\\ yes/' /etc/ssh/sshd_config\n    service sshd restart\nfi\n\n# BASELINE PACKAGES\nPACKAGES=\"epel-release ansible git rsync vim-enhanced bind-utils policycoreutils-python net-tools lsof\"\nfor PKG in $PACKAGES; do\n    rpm -q $PKG || yum -y install $PKG\ndone\n\n# VIMRC\nrm -f /etc/vimrc\ncp /vagrant/playbooks/files/centos7.vimrc /etc/vimrc\n\n# WORKAROUNDS\nsetenforce 0\nfgrep docker /etc/group || groupadd -g 993 docker\nfgrep ansibot /etc/group || groupadd -g 1099 ansibot\nid ansibot || useradd -u 1099 -g ansibot ansibot\nusermod -a -G docker ansibot\nrsync -avz --exclude='/vagrant/.vagrant' /vagrant/* /home/ansibot/ansibullbot\n\n# PSEUDO ANSIBLE-LOCAL PROVISIONER\nsetenforce 0\necho \"ansibullbot ansible_host=localhost ansible_connection=local\" > /tmp/inv.ini\necho \"ansibullbot.eng.ansible.com ansible_host=localhost ansible_connection=local\" >> /tmp/inv.ini\ncd /vagrant/playbooks\n#PLAYBOOKS=\"setup-ansibullbot.yml\"\nPLAYBOOKS=\"vagrant.yml\"\nfor PLAYBOOK in $PLAYBOOKS; do\n    ansible-playbook \\\n        -v \\\n        -i /tmp/inv.ini \\\n        --skip-tags=ssh \\\n        $PLAYBOOK\ndone\n\n#        --tags=packages,ansibullbot,caddy \\\n#        --skip-tags=botinstance,dns,ssh,ansibullbot_service,ansibullbot_logs \\\n#--skip-tags=botinstance,dns,ssh,ansibullbot_service,ansibullbot_logs \\\n#    -e \"ansibullbot_action=install\" \\\n# HACK IN FIREWALL EXCEPTIONS\nfirewall-cmd --zone=public --add-port=80/tcp --permanent\nfirewall-cmd --reload\n\nSCRIPT\n\n\nVagrant.configure(\"2\") do |config|\n  config.vm.box = \"centos/7\"\n  config.vm.hostname = \"ansibullbot.eng.ansible.com\"\n  config.hostmanager.enabled = true\n  config.hostmanager.manage_host = true\n  config.hostmanager.manage_guest = true\n  config.hostmanager.ignore_private_ip = false\n  config.hostmanager.include_offline = true\n  config.vm.network \"private_network\", ip: \"10.0.0.210\"\n  config.vm.synced_folder \".\", \"/vagrant\", type: \"nfs\", nfs_udp: false\n\n  config.vm.provider :libvirt do |libvirt|\n    libvirt.cpus = 2\n    libvirt.memory = 2048\n  end\n\n  config.vm.provision \"shell\", inline: $script\nend\n"
  },
  {
    "path": "ansible.cfg",
    "content": "# config file for ansible -- http://ansible.com/\n# ==============================================\n\n# nearly all parameters can be overridden in ansible-playbook\n# or with command line flags. ansible will read ANSIBLE_CONFIG,\n# ansible.cfg in the current working directory, .ansible.cfg in\n# the home directory or /etc/ansible/ansible.cfg, whichever it\n# finds first\n\n[defaults]\n\n# some basic default values...\n\ninventory      = playbooks/hosts.yml\n#library        = /usr/share/my_modules/\n#remote_tmp     = $HOME/.ansible/tmp\n#local_tmp      = $HOME/.ansible/tmp\nforks          = 50\n#poll_interval  = 15\n#sudo_user      = root\n#ask_sudo_pass = True\n#ask_pass      = True\ntransport      = ssh\n#remote_port    = 22\n#module_lang    = C\n#module_set_locale = False\n#vault_password_file = ~/bin/getvaultkey.sh\n\n# plays will gather facts by default, which contain information about\n# the remote system.\n#\n# smart - gather by default, but don't regather if already gathered\n# implicit - gather by default, turn off with gather_facts: False\n# explicit - do not gather by default, must say gather_facts: True\ngathering = smart\n\n# by default retrieve all facts subsets\n# all - gather all subsets\n# network - gather min and network facts\n# hardware - gather hardware facts (longest facts to retrieve)\n# virtual - gather min and virtual facts\n# facter - import facts from facter\n# ohai - import facts from ohai\n# You can combine them using comma (ex: network,virtual)\n# You can negate them using ! (ex: !hardware,!facter,!ohai)\n# A minimal set of facts is always gathered.\n#gather_subset = all\n\n# additional paths to search for roles in, colon separated\n#roles_path    = /etc/ansible/roles\n\n# uncomment this to disable SSH key host checking\nhost_key_checking = False\n\n# change the default callback\nstdout_callback = debug\n# enable additional callbacks\n#callback_whitelist = profile_tasks\n\n# Determine whether includes in tasks and handlers are \"static\" by\n# default. As of 2.0, includes are dynamic by default. Setting these\n# values to True will make includes behave more like they did in the\n# 1.x versions.\n#task_includes_static = True\n#handler_includes_static = True\n\n# change this for alternative sudo implementations\n#sudo_exe = sudo\n\n# What flags to pass to sudo\n# WARNING: leaving out the defaults might create unexpected behaviours\n#sudo_flags = -H -S -n\n\n# SSH timeout\n#timeout = 10\n\n# default user to use for playbooks if user is not specified\n# (/usr/bin/ansible will use current user as default)\n#remote_user = root\n\n# logging is off by default unless this path is defined\n# if so defined, consider logrotate\n#log_path = /var/log/ansible.log\n\n# default module name for /usr/bin/ansible\n#module_name = command\n\n# use this shell for commands executed under sudo\n# you may need to change this to bin/bash in rare instances\n# if sudo is constrained\n#executable = /bin/sh\n\n# if inventory variables overlap, does the higher precedence one win\n# or are hash values merged together?  The default is 'replace' but\n# this can also be set to 'merge'.\n#hash_behaviour = replace\n\n# by default, variables from roles will be visible in the global variable\n# scope. To prevent this, the following option can be enabled, and only\n# tasks and handlers within the role will see the variables there\n#private_role_vars = yes\n\n# list any Jinja2 extensions to enable here:\n#jinja2_extensions = jinja2.ext.do,jinja2.ext.i18n\n\n# if set, always use this private key file for authentication, same as\n# if passing --private-key to ansible or ansible-playbook\n#private_key_file = /path/to/file\n\n# If set, configures the path to the Vault password file as an alternative to\n# specifying --vault-password-file on the command line.\n#vault_password_file = /path/to/vault_password_file\n\n# format of string {{ ansible_managed }} available within Jinja2\n# templates indicates to users editing templates files will be replaced.\n# replacing {file}, {host} and {uid} and strftime codes with proper values.\n#ansible_managed = Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host}\nansible_managed = Ansible managed. Any local changes will be overwritten.\n# This short version is better used in templates as it won't flag the file as changed every run.\n#ansible_managed = Ansible managed: {file} on {host}\n\n# by default, ansible-playbook will display \"Skipping [host]\" if it determines a task\n# should not be run on a host.  Set this to \"False\" if you don't want to see these \"Skipping\"\n# messages. NOTE: the task header will still be shown regardless of whether or not the\n# task is skipped.\n#display_skipped_hosts = True\n\n# by default, if a task in a playbook does not include a name: field then\n# ansible-playbook will construct a header that includes the task's action but\n# not the task's args.  This is a security feature because ansible cannot know\n# if the *module* considers an argument to be no_log at the time that the\n# header is printed.  If your environment doesn't have a problem securing\n# stdout from ansible-playbook (or you have manually specified no_log in your\n# playbook on all of the tasks where you have secret information) then you can\n# safely set this to True to get more informative messages.\n#display_args_to_stdout = False\n\n# by default (as of 1.3), Ansible will raise errors when attempting to dereference\n# Jinja2 variables that are not set in templates or action lines. Uncomment this line\n# to revert the behavior to pre-1.3.\n#error_on_undefined_vars = False\n\n# by default (as of 1.6), Ansible may display warnings based on the configuration of the\n# system running ansible itself. This may include warnings about 3rd party packages or\n# other conditions that should be resolved if possible.\n# to disable these warnings, set the following value to False:\n#system_warnings = True\n\n# by default (as of 1.4), Ansible may display deprecation warnings for language\n# features that should no longer be used and will be removed in future versions.\n# to disable these warnings, set the following value to False:\n#deprecation_warnings = True\n\n# (as of 1.8), Ansible can optionally warn when usage of the shell and\n# command module appear to be simplified by using a default Ansible module\n# instead.  These warnings can be silenced by adjusting the following\n# setting or adding warn=yes or warn=no to the end of the command line\n# parameter string.  This will for example suggest using the git module\n# instead of shelling out to the git command.\n# command_warnings = False\n\n\n# set plugin path directories here, separate with colons\n#action_plugins     = /usr/share/ansible/plugins/action\n#cache_plugins      = /usr/share/ansible/plugins/cache\n#callback_plugins   = /usr/share/ansible/plugins/callback\n#connection_plugins = /usr/share/ansible/plugins/connection\n#lookup_plugins     = /usr/share/ansible/plugins/lookup\n#inventory_plugins  = /usr/share/ansible/plugins/inventory\n#vars_plugins       = /usr/share/ansible/plugins/vars\n#filter_plugins     = /usr/share/ansible/plugins/filter\n#test_plugins       = /usr/share/ansible/plugins/test\n#strategy_plugins   = /usr/share/ansible/plugins/strategy\n\n# by default callbacks are not loaded for /bin/ansible, enable this if you\n# want, for example, a notification or logging callback to also apply to\n# /bin/ansible runs\n#bin_ansible_callbacks = False\n\n\n# don't like cows?  that's unfortunate.\n# set to 1 if you don't want cowsay support or export ANSIBLE_NOCOWS=1\n#nocows = 1\n\n# set which cowsay stencil you'd like to use by default. When set to 'random',\n# a random stencil will be selected for each task. The selection will be filtered\n# against the `cow_whitelist` option below.\n#cow_selection = default\n#cow_selection = random\n\n# when using the 'random' option for cowsay, stencils will be restricted to this list.\n# it should be formatted as a comma-separated list with no spaces between names.\n# NOTE: line continuations here are for formatting purposes only, as the INI parser\n#       in python does not support them.\n#cow_whitelist=bud-frogs,bunny,cheese,daemon,default,dragon,elephant-in-snake,elephant,eyes,\\\n#              hellokitty,kitty,luke-koala,meow,milk,moofasa,moose,ren,sheep,small,stegosaurus,\\\n#              stimpy,supermilker,three-eyes,turkey,turtle,tux,udder,vader-koala,vader,www\n\n# don't like colors either?\n# set to 1 if you don't want colors, or export ANSIBLE_NOCOLOR=1\n#nocolor = 1\n\n# if set to a persistent type (not 'memory', for example 'redis') fact values\n# from previous runs in Ansible will be stored.  This may be useful when\n# wanting to use, for example, IP information from one group of servers\n# without having to talk to them in the same playbook run to get their\n# current IP information.\nfact_caching = jsonfile\nfact_caching_connection = ~/.cache/facts\nfact_caching_timout = 3600\n\n\n# retry files\n# When a playbook fails by default a .retry file will be created in ~/\n# You can disable this feature by setting retry_files_enabled to False\n# and you can change the location of the files by setting retry_files_save_path\n\nretry_files_enabled = False\n#retry_files_save_path = ~/.ansible-retry\n\n# squash actions\n# Ansible can optimise actions that call modules with list parameters\n# when looping. Instead of calling the module once per with_ item, the\n# module is called once with all items at once. Currently this only works\n# under limited circumstances, and only with parameters named 'name'.\n#squash_actions = apk,apt,dnf,package,pacman,pkgng,yum,zypper\n\n# prevents logging of task data, off by default\n#no_log = False\n\n# prevents logging of tasks, but only on the targets, data is still logged on the master/controller\n#no_target_syslog = False\n\n# controls whether Ansible will raise an error or warning if a task has no\n# choice but to create world readable temporary files to execute a module on\n# the remote machine.  This option is False by default for security.  Users may\n# turn this on to have behaviour more like Ansible prior to 2.1.x.  See\n# https://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user\n# for more secure ways to fix this than enabling this option.\n#allow_world_readable_tmpfiles = False\n\n# controls the compression level of variables sent to\n# worker processes. At the default of 0, no compression\n# is used. This value must be an integer from 0 to 9.\n#var_compression_level = 9\n\n# controls what compression method is used for new-style ansible modules when\n# they are sent to the remote system.  The compression types depend on having\n# support compiled into both the controller's python and the client's python.\n# The names should match with the python Zipfile compression types:\n# * ZIP_STORED (no compression. available everywhere)\n# * ZIP_DEFLATED (uses zlib, the default)\n# These values may be set per host via the ansible_module_compression inventory\n# variable\n#module_compression = 'ZIP_DEFLATED'\n\n# This controls the cutoff point (in bytes) on --diff for files\n# set to 0 for unlimited (RAM may suffer!).\n#max_diff_size = 1048576\n\n[privilege_escalation]\nbecome=True\nbecome_method=sudo\nbecome_user=root\nbecome_ask_pass=False\n\n[paramiko_connection]\n\n# uncomment this line to cause the paramiko connection plugin to not record new host\n# keys encountered.  Increases performance on new host additions.  Setting works independently of the\n# host key checking setting above.\n#record_host_keys=False\n\n# by default, Ansible requests a pseudo-terminal for commands executed under sudo. Uncomment this\n# line to disable this behaviour.\n#pty=False\n\n[ssh_connection]\n\n# ssh arguments to use\n# Leaving off ControlPersist will result in poor performance, so use\n# paramiko on older platforms rather than removing it, -C controls compression use\n#ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s\n\n# The path to use for the ControlPath sockets. This defaults to\n# \"%(directory)s/ansible-ssh-%%h-%%p-%%r\", however on some systems with\n# very long hostnames or very long path names (caused by long user names or\n# deeply nested home directories) this can exceed the character limit on\n# file socket names (108 characters for most platforms). In that case, you\n# may wish to shorten the string below.\n#\n# Example:\n# control_path = %(directory)s/%%h-%%r\n#control_path = %(directory)s/ansible-ssh-%%h-%%p-%%r\n\n# Enabling pipelining reduces the number of SSH operations required to\n# execute a module on the remote server. This can result in a significant\n# performance improvement when enabled, however when using \"sudo:\" you must\n# first disable 'requiretty' in /etc/sudoers\n#\n# By default, this option is disabled to preserve compatibility with\n# sudoers configurations that have requiretty (the default on many distros).\n#\npipelining = True\n\n# if True, make ansible use scp if the connection type is ssh\n# (default is sftp)\n#scp_if_ssh = True\n\n# if False, sftp will not use batch mode to transfer files. This may cause some\n# types of file transfer failures impossible to catch however, and should\n# only be disabled if your sftp version has problems with batch mode\n#sftp_batch_mode = False\n\n[accelerate]\n#accelerate_port = 5099\n#accelerate_timeout = 30\n#accelerate_connect_timeout = 5.0\n\n# The daemon timeout is measured in minutes. This time is measured\n# from the last activity to the accelerate daemon.\n#accelerate_daemon_timeout = 30\n\n# If set to yes, accelerate_multi_key will allow multiple\n# private keys to be uploaded to it, though each user must\n# have access to the system via SSH to add a new key. The default\n# is \"no\".\n#accelerate_multi_key = yes\n\n[selinux]\n# file systems that require special treatment when dealing with security context\n# the default behaviour that copies the existing context or uses the user default\n# needs to be changed to use the file system dependent context.\n#special_context_filesystems=nfs,vboxsf,fuse,ramfs\n\n# Set this to yes to allow libvirt_lxc connections to work without SELinux.\n#libvirt_lxc_noseclabel = yes\n\n[colors]\n#highlight = white\n#verbose = blue\n#warn = bright purple\n#error = red\n#debug = dark gray\n#deprecate = purple\n#skip = cyan\n#unreachable = red\n#ok = green\n#changed = yellow\n#diff_add = green\n#diff_remove = red\n#diff_lines = cyan\n"
  },
  {
    "path": "ansibullbot/__init__.py",
    "content": ""
  },
  {
    "path": "ansibullbot/_text_compat.py",
    "content": "# This code is part of Ansible, but is an independent component.\n# This particular file snippet, and this file snippet only, is BSD licensed.\n# Modules you write using this snippet, which is embedded dynamically by Ansible\n# still belong to the author of the module, and may assign their own license\n# to the complete work.\n#\n# Copyright (c), Toshio Kuratomi <a.badger@gmail.com>, 2016\n#\n# Redistribution and use in source and binary forms, with or without modification,\n# are permitted provided that the following conditions are met:\n#\n#    * Redistributions of source code must retain the above copyright\n#      notice, this list of conditions and the following disclaimer.\n#    * Redistributions in binary form must reproduce the above copyright notice,\n#      this list of conditions and the following disclaimer in the documentation\n#      and/or other materials provided with the distribution.\n#\n# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\n# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n#\n\n\"\"\"\n.. warn:: This module_util is currently internal implementation.\n    We want to evaluate this code for stability and API suitability before\n    making backwards compatibility guarantees.  The API may change between\n    releases.  Do not use this unless you are willing to port your module code.\n\"\"\"\nimport codecs\n\n\ntry:\n    codecs.lookup_error('surrogateescape')\n    HAS_SURROGATEESCAPE = True\nexcept LookupError:\n    HAS_SURROGATEESCAPE = False\n\n\n_COMPOSED_ERROR_HANDLERS = frozenset((None, 'surrogate_or_replace',\n                                      'surrogate_or_strict',\n                                      'surrogate_then_replace'))\n\n\ndef to_bytes(obj, encoding='utf-8', errors=None, nonstring='simplerepr'):\n    \"\"\"Make sure that a string is a byte string\n\n    :arg obj: An object to make sure is a byte string.  In most cases this\n        will be either a text string or a byte string.  However, with\n        ``nonstring='simplerepr'``, this can be used as a traceback-free\n        version of ``str(obj)``.\n    :kwarg encoding: The encoding to use to transform from a text string to\n        a byte string.  Defaults to using 'utf-8'.\n    :kwarg errors: The error handler to use if the text string is not\n        encodable using the specified encoding.  Any valid `codecs error\n        handler <https://docs.python.org/2/library/codecs.html#codec-base-classes>`_\n        may be specified. There are three additional error strategies\n        specifically aimed at helping people to port code.  The first two are:\n\n            :surrogate_or_strict: Will use ``surrogateescape`` if it is a valid\n                handler, otherwise it will use ``strict``\n            :surrogate_or_replace: Will use ``surrogateescape`` if it is a valid\n                handler, otherwise it will use ``replace``.\n\n        Because ``surrogateescape`` was added in Python3 this usually means that\n        Python3 will use ``surrogateescape`` and Python2 will use the fallback\n        error handler. Note that the code checks for ``surrogateescape`` when the\n        module is imported.  If you have a backport of ``surrogateescape`` for\n        Python2, be sure to register the error handler prior to importing this\n        module.\n\n        The last error handler is:\n\n            :surrogate_then_replace: Will use ``surrogateescape`` if it is a valid\n                handler.  If encoding with ``surrogateescape`` would traceback,\n                surrogates are first replaced with a replacement characters\n                and then the string is encoded using ``replace`` (which replaces\n                the rest of the nonencodable bytes).  If ``surrogateescape`` is\n                not present it will simply use ``replace``.  (Added in Ansible 2.3)\n                This strategy is designed to never traceback when it attempts\n                to encode a string.\n\n        The default until Ansible-2.2 was ``surrogate_or_replace``\n        From Ansible-2.3 onwards, the default is ``surrogate_then_replace``.\n\n    :kwarg nonstring: The strategy to use if a nonstring is specified in\n        ``obj``.  Default is 'simplerepr'.  Valid values are:\n\n        :simplerepr: The default.  This takes the ``str`` of the object and\n            then returns the bytes version of that string.\n        :empty: Return an empty byte string\n        :passthru: Return the object passed in\n        :strict: Raise a :exc:`TypeError`\n\n    :returns: Typically this returns a byte string.  If a nonstring object is\n        passed in this may be a different type depending on the strategy\n        specified by nonstring.  This will never return a text string.\n\n    .. note:: If passed a byte string, this function does not check that the\n        string is valid in the specified encoding.  If it's important that the\n        byte string is in the specified encoding do::\n\n            encoded_string = to_bytes(to_text(input_string, 'latin-1'), 'utf-8')\n\n    .. version_changed:: 2.3\n\n        Added the ``surrogate_then_replace`` error handler and made it the default error handler.\n    \"\"\"\n    if isinstance(obj, bytes):\n        return obj\n\n    # We're given a text string\n    # If it has surrogates, we know because it will decode\n    original_errors = errors\n    if errors in _COMPOSED_ERROR_HANDLERS:\n        if HAS_SURROGATEESCAPE:\n            errors = 'surrogateescape'\n        elif errors == 'surrogate_or_strict':\n            errors = 'strict'\n        else:\n            errors = 'replace'\n\n    if isinstance(obj, str):\n        try:\n            # Try this first as it's the fastest\n            return obj.encode(encoding, errors)\n        except UnicodeEncodeError:\n            if original_errors in (None, 'surrogate_then_replace'):\n                # We should only reach this if encoding was non-utf8 original_errors was\n                # surrogate_then_escape and errors was surrogateescape\n\n                # Slow but works\n                return_string = obj.encode('utf-8', 'surrogateescape')\n                return_string = return_string.decode('utf-8', 'replace')\n                return return_string.encode(encoding, 'replace')\n            raise\n\n    # Note: We do these last even though we have to call to_bytes again on the\n    # value because we're optimizing the common case\n    if nonstring == 'simplerepr':\n        try:\n            value = str(obj)\n        except UnicodeError:\n            try:\n                value = repr(obj)\n            except UnicodeError:\n                # Giving up\n                return to_bytes('')\n    elif nonstring == 'passthru':\n        return obj\n    elif nonstring == 'empty':\n        # python2.4 doesn't have b''\n        return to_bytes('')\n    elif nonstring == 'strict':\n        raise TypeError('obj must be a string type')\n    else:\n        raise TypeError('Invalid value %s for to_bytes\\' nonstring parameter' % nonstring)\n\n    return to_bytes(value, encoding, errors)\n\n\ndef to_text(obj, encoding='utf-8', errors=None, nonstring='simplerepr'):\n    \"\"\"Make sure that a string is a text string\n\n    :arg obj: An object to make sure is a text string.  In most cases this\n        will be either a text string or a byte string.  However, with\n        ``nonstring='simplerepr'``, this can be used as a traceback-free\n        version of ``str(obj)``.\n    :kwarg encoding: The encoding to use to transform from a byte string to\n        a text string.  Defaults to using 'utf-8'.\n    :kwarg errors: The error handler to use if the byte string is not\n        decodable using the specified encoding.  Any valid `codecs error\n        handler <https://docs.python.org/2/library/codecs.html#codec-base-classes>`_\n        may be specified.   We support three additional error strategies\n        specifically aimed at helping people to port code:\n\n            :surrogate_or_strict: Will use surrogateescape if it is a valid\n                handler, otherwise it will use strict\n            :surrogate_or_replace: Will use surrogateescape if it is a valid\n                handler, otherwise it will use replace.\n            :surrogate_then_replace: Does the same as surrogate_or_replace but\n                `was added for symmetry with the error handlers in\n                :func:`ansible.module_utils._text.to_bytes` (Added in Ansible 2.3)\n\n        Because surrogateescape was added in Python3 this usually means that\n        Python3 will use `surrogateescape` and Python2 will use the fallback\n        error handler. Note that the code checks for surrogateescape when the\n        module is imported.  If you have a backport of `surrogateescape` for\n        python2, be sure to register the error handler prior to importing this\n        module.\n\n        The default until Ansible-2.2 was `surrogate_or_replace`\n        In Ansible-2.3 this defaults to `surrogate_then_replace` for symmetry\n        with :func:`ansible.module_utils._text.to_bytes` .\n    :kwarg nonstring: The strategy to use if a nonstring is specified in\n        ``obj``.  Default is 'simplerepr'.  Valid values are:\n\n        :simplerepr: The default.  This takes the ``str`` of the object and\n            then returns the text version of that string.\n        :empty: Return an empty text string\n        :passthru: Return the object passed in\n        :strict: Raise a :exc:`TypeError`\n\n    :returns: Typically this returns a text string.  If a nonstring object is\n        passed in this may be a different type depending on the strategy\n        specified by nonstring.  This will never return a byte string.\n        From Ansible-2.3 onwards, the default is `surrogate_then_replace`.\n\n    .. version_changed:: 2.3\n\n        Added the surrogate_then_replace error handler and made it the default error handler.\n    \"\"\"\n    if isinstance(obj, str):\n        return obj\n\n    if errors in _COMPOSED_ERROR_HANDLERS:\n        if HAS_SURROGATEESCAPE:\n            errors = 'surrogateescape'\n        elif errors == 'surrogate_or_strict':\n            errors = 'strict'\n        else:\n            errors = 'replace'\n\n    if isinstance(obj, bytes):\n        # Note: We don't need special handling for surrogate_then_replace\n        # because all bytes will either be made into surrogates or are valid\n        # to decode.\n        return obj.decode(encoding, errors)\n\n    # Note: We do these last even though we have to call to_text again on the\n    # value because we're optimizing the common case\n    if nonstring == 'simplerepr':\n        try:\n            value = str(obj)\n        except UnicodeError:\n            try:\n                value = repr(obj)\n            except UnicodeError:\n                # Giving up\n                return ''\n    elif nonstring == 'passthru':\n        return obj\n    elif nonstring == 'empty':\n        return ''\n    elif nonstring == 'strict':\n        raise TypeError('obj must be a string type')\n    else:\n        raise TypeError('Invalid value %s for to_text\\'s nonstring parameter' % nonstring)\n\n    return to_text(value, encoding, errors)\n"
  },
  {
    "path": "ansibullbot/ansibletriager.py",
    "content": "# Key features:\n#   * daemonize mode that can continuously loop and process w/out scripts\n#   * maintainers can be assigned to more than just the files in\n#     ansibullbot.ansible/modules\n#   * false positives on module issue detection can be corrected by a wide range\n#     of people\n#   * more people (not just maintainers) should have access to a subset of bot\n#     commands\n#   * a generic label add|remove command will allow the community to fill in\n#     where the bot can't\n#   * different workflows should be a matter of enabling different plugins\n\nimport datetime\nimport json\nimport logging\nimport os\n\nfrom copy import deepcopy\nfrom pprint import pprint\n\nimport ansibullbot.constants as C\n\nfrom ansibullbot._text_compat import to_bytes, to_text\nfrom ansibullbot.exceptions import LabelWafflingError\nfrom ansibullbot.utils.botmetadata import BotMetadataParser\nfrom ansibullbot.defaulttriager import DefaultActions, DefaultTriager, render_boilerplate\nfrom ansibullbot.utils.component_tools import AnsibleComponentMatcher\nfrom ansibullbot.utils.extractors import extract_pr_number_from_comment\nfrom ansibullbot.utils.moduletools import ModuleIndexer\nfrom ansibullbot.utils.receiver_client import post_to_receiver\nfrom ansibullbot.utils.timetools import strip_time_safely\nfrom ansibullbot.utils.version_tools import AnsibleVersionIndexer, get_version_major_minor\nfrom ansibullbot.issuewrapper import IssueWrapper\n\nfrom ansibullbot.plugins.backports import get_backport_facts\nfrom ansibullbot.plugins.botstatus import get_bot_status_facts\nfrom ansibullbot.plugins.ci_rebuild import get_ci_facts\nfrom ansibullbot.plugins.ci_rebuild import get_rebuild_facts\nfrom ansibullbot.plugins.ci_rebuild import get_rebuild_command_facts\nfrom ansibullbot.plugins.ci_rebuild import get_rebuild_merge_facts\nfrom ansibullbot.plugins.community_workgroups import get_community_workgroup_facts\nfrom ansibullbot.plugins.component_matching import get_component_match_facts\nfrom ansibullbot.plugins.collection_facts import get_collection_facts\nfrom ansibullbot.plugins.cross_references import get_cross_reference_facts\nfrom ansibullbot.plugins.filament import get_filament_facts\nfrom ansibullbot.plugins.label_commands import get_label_command_facts\nfrom ansibullbot.plugins.label_commands import get_waffling_overrides\nfrom ansibullbot.plugins.needs_contributor import get_needs_contributor_facts\nfrom ansibullbot.plugins.needs_info import is_needsinfo\nfrom ansibullbot.plugins.needs_info import needs_info_template_facts\nfrom ansibullbot.plugins.needs_info import needs_info_timeout_facts\nfrom ansibullbot.plugins.needs_revision import get_needs_revision_facts\nfrom ansibullbot.plugins.needs_revision import get_ci_run_facts\nfrom ansibullbot.plugins.contributors import get_contributor_facts\nfrom ansibullbot.plugins.notifications import get_notification_facts\nfrom ansibullbot.plugins.shipit import get_automerge_facts\nfrom ansibullbot.plugins.shipit import get_shipit_facts\nfrom ansibullbot.plugins.small_patch import get_small_patch_facts\nfrom ansibullbot.plugins.spam import get_spam_facts\nfrom ansibullbot.plugins.test_support_plugins import get_test_support_plugins_facts\nfrom ansibullbot.plugins.traceback import get_traceback_facts\nfrom ansibullbot.plugins.deprecation import get_deprecation_facts\nfrom ansibullbot.plugins.docs_info import get_docs_facts\n\n\nVALID_CI_PROVIDERS = frozenset(('azp',))\n\n\nclass AnsibleActions(DefaultActions):\n    def __init__(self):\n        super().__init__()\n        self.rebuild = False\n        self.rebuild_failed = False\n        self.cancel_ci = False\n        self.cancel_ci_branch = False\n\n\nclass AnsibleTriager(DefaultTriager):\n    CLOSING_LABELS = ['bot_closed']\n\n    ISSUE_TYPES = {\n        'bug report': 'bug',\n        'bugfix pull request': 'bug',\n        'feature idea': 'feature',\n        'feature pull request': 'feature',\n        'documentation report': 'docs',\n        'docs pull request': 'docs',\n        'new module pull request': 'new_plugin'\n    }\n\n    # modules having files starting like the key, will get the value label\n    MODULE_NAMESPACE_LABELS = {\n        'windows': \"windows\",\n        'network': \"networking\"\n    }\n\n    VALID_COMMANDS = [\n        'needs_info',\n        '!needs_info',\n        'notabug',\n        'bot_status',\n        'bot_broken',\n        '!bot_broken',\n        'bot_skip',\n        '!bot_skip',\n        'wontfix',\n        'bug_resolved',\n        'resolved_by_pr',\n        'needs_contributor',\n        '!needs_contributor',\n        'needs_rebase',\n        '!needs_rebase',\n        'needs_revision',\n        '!needs_revision',\n        'shipit',\n        '!shipit',\n        'duplicate_of',\n        'close_me',\n        'waiting_on_contributor',\n        '!waiting_on_contributor',\n    ]\n\n    def __init__(self, args=None):\n        super().__init__(args)\n\n        if self.args.ci == 'azp':\n            from ansibullbot.ci.azp import AzurePipelinesCI as ci_class\n        else:\n            raise ValueError(\n                'Unknown CI provider specified in the config file: %s. Valid CI providers: %s' %\n                (C.DEFAULT_CI_PROVIDER, ', '.join(VALID_CI_PROVIDERS))\n            )\n\n        self.ci = None\n        self.ci_class = ci_class\n\n    def load_botmeta(self, gitrepo):\n        if self.args.botmetafile is not None:\n            with open(self.args.botmetafile, 'rb') as f:\n                rdata = f.read()\n        else:\n            rdata = gitrepo.get_file_content('.github/BOTMETA.yml')\n        logging.info('ansible triager [re]loading botmeta')\n        return BotMetadataParser.parse_yaml(rdata)\n\n    def _should_skip_issue(self, summary):\n        reponame = summary['repository']['nameWithOwner']\n\n        if summary['number'] in self.repos[reponame]['stale']:\n            return False\n\n        if not (lmeta := self.load_meta(reponame, str(summary['number']))):\n            return False\n\n        if strip_time_safely(lmeta['updated_at']) != strip_time_safely(summary['updated_at']):\n            return False\n\n        if summary['type'] == 'pullRequest' and (lmeta.get('needs_rebuild') or lmeta.get('admin_merge')):\n            return False\n\n        return True\n\n    def run(self):\n        '''Primary execution method'''\n        ts1 = datetime.datetime.now()\n\n        self.collect_repos()\n\n        if self.args.collect_only:\n            return\n\n        icount = 0\n        for repopath, repodata in self.repos.items():\n            repo = repodata['repo']\n            cachedir = os.path.join(self.cachedir_base, repopath)\n\n            logging.info('loading botmeta')\n            self.botmeta = self.load_botmeta(repodata['gitrepo'])\n\n            logging.info('creating version indexer')\n            self.version_indexer = AnsibleVersionIndexer(checkoutdir=repodata['gitrepo'].checkoutdir)\n\n            logging.info('creating module indexer')\n            self.module_indexer = ModuleIndexer(\n                botmeta=self.botmeta,\n                gh_client=self.gqlc,\n                cachedir=self.cachedir_base,\n                gitrepo=repodata['gitrepo'],\n                commits=not self.args.ignore_module_commits\n            )\n\n            logging.info('creating component matcher')\n            self.component_matcher = AnsibleComponentMatcher(\n                cachedir=self.cachedir_base,\n                gitrepo=repodata['gitrepo'],\n                botmeta=self.botmeta,\n                email_cache=self.module_indexer.emails_cache,\n                usecache=True,\n                use_galaxy=not self.args.ignore_galaxy\n            )\n\n            for issue in (\n                repodata['issuecache'].get(n, repodata['repo'].get_issue(n)) for n in repodata['numbers']\n            ):\n                icount += 1\n\n                self.meta = {}\n                self.processed_meta = {}\n                self.set_resume(repopath, issue.number)\n\n                # keep track of how many times this isssue has been re-done\n                loopcount = 0\n\n                its1 = datetime.datetime.now()\n                redo = True\n                while redo:\n                    redo = False\n\n                    # use the loopcount to check new data\n                    loopcount += 1\n\n                    if loopcount <= 1:\n                        logging.info('starting triage for %s' % issue.html_url)\n                    else:\n                        # if >1 get latest data\n                        logging.info('restarting triage for %s' % issue.number)\n                        issue = repo.get_issue(issue.number)\n\n                    if self.args.skip_no_update and self._should_skip_issue(repodata['summaries'][str(issue.number)]):\n                        logging.info('skipping: no changes since last run')\n                        continue\n\n                    # create the wrapper on each loop iteration\n                    iw = IssueWrapper(\n                        github=self.ghw,\n                        repo=repo,\n                        issue=issue,\n                        cachedir=cachedir,\n                        gitrepo=repodata['gitrepo'],\n                    )\n                    iw.updated_at = strip_time_safely(repodata['summaries'][str(issue.number)]['updated_at'])\n                    if iw.is_pullrequest():\n                        logging.info('creating CI wrapper')\n                        self.ci = self.ci_class(self.cachedir_base, iw)\n                    else:\n                        self.ci = None\n\n                    # force an update on the PR data\n                    iw.update_pullrequest()\n\n                    self.process(iw, repodata['labels'])\n\n                    # build up actions from the meta\n                    actions = AnsibleActions()\n                    self.create_actions(iw, actions, repodata['labels'])\n                    self.save_meta(iw, self.meta, actions)\n\n                    # DEBUG!\n                    logging.info('url: %s' % iw.html_url)\n                    logging.info('title: %s' % iw.title)\n                    if iw.is_pullrequest():\n                        for fn in iw.files:\n                            logging.info('component[f]: %s' % fn)\n                    else:\n                        for line in iw.template_data.get('component_raw', '').split('\\n'):\n                            logging.info('component[t]: %s' % line)\n                        for fn in self.meta['component_filenames']:\n                            logging.info('component[m]: %s' % fn)\n\n                    if self.meta['template_missing_sections']:\n                        logging.info(\n                            'missing sections: ' +\n                            ', '.join(self.meta['template_missing_sections'])\n                        )\n                    if self.meta['is_needs_revision']:\n                        logging.info('needs_revision')\n                        for msg in self.meta['is_needs_revision_msgs']:\n                            logging.info('needs_revision_msg: %s' % msg)\n                    if self.meta['is_needs_rebase']:\n                        logging.info('needs_rebase')\n                        for msg in self.meta['is_needs_rebase_msgs']:\n                            logging.info('needs_rebase_msg: %s' % msg)\n\n                    pprint(vars(actions))\n\n                    action_meta = self.apply_actions(iw, actions)\n                    if action_meta['REDO']:\n                        redo = True\n\n                its2 = datetime.datetime.now()\n                td = (its2 - its1).total_seconds()\n                logging.info('finished triage for %s in %ss' % (str(issue.number), td))\n\n        ts2 = datetime.datetime.now()\n        td = (ts2 - ts1).total_seconds()\n        logging.info('triaged %s issues in %s seconds' % (icount, td))\n\n    def save_meta(self, issuewrapper, meta, actions):\n        # save the meta+actions\n        dmeta = meta.copy()\n        dmeta['submitter'] = issuewrapper.submitter\n        dmeta['number'] = issuewrapper.number\n        dmeta['title'] = issuewrapper.title\n        dmeta['body'] = issuewrapper.body\n        dmeta['filenames'] = issuewrapper.files\n        dmeta['renamed_filenames'] = issuewrapper.renamed_files\n        dmeta['html_url'] = issuewrapper.html_url\n        dmeta['created_at'] = to_text(issuewrapper.created_at.isoformat())\n        dmeta['updated_at'] = to_text(issuewrapper.updated_at.isoformat())\n        dmeta['template_data'] = issuewrapper.template_data\n        if isinstance(actions, dict):\n            dmeta['actions'] = actions.copy()\n        else:\n            if actions:\n                dmeta['actions'] = vars(actions)\n            else:\n                dmeta['actions'] = {}\n        dmeta['labels'] = issuewrapper.labels\n        dmeta['assignees'] = issuewrapper.assignees\n        if issuewrapper.history:\n            dmeta['history'] = deepcopy(issuewrapper.history.history)\n            for idx, x in enumerate(dmeta['history']):\n                dmeta['history'][idx]['created_at'] = \\\n                    to_text(x['created_at'].isoformat())\n        else:\n            dmeta['history'] = []\n        if issuewrapper.is_pullrequest():\n            dmeta['pullrequest_reviews'] = issuewrapper.reviews\n        else:\n            dmeta['pullrequest_reviews'] = []\n\n        self.dump_meta(issuewrapper, dmeta)\n        namespace, reponame = issuewrapper.repo_full_name.split('/', 1)\n\n        # https://github.com/ansible/ansibullbot/issues/1355\n        dmeta_copy = dmeta.copy()\n        # These two might have dictionaries with keys that are considered\n        # invalid in mongodb (like having '.') which would crash the receiver\n        # and result in memory leaks.\n        # FIXME figure out a way how to store these without keys being invalid\n        dmeta_copy['collection_filemap'] = None\n        dmeta_copy['collection_file_matches'] = None\n        dmeta_copy['renamed_filenames'] = None\n        dmeta_copy['test_support_plugins'] = None\n\n        post_to_receiver(\n            'metadata',\n            {'user': namespace, 'repo': reponame, 'number': issuewrapper.number},\n            dmeta_copy\n        )\n        self.processed_meta = dmeta_copy.copy()\n\n    def dump_meta(self, issuewrapper, meta):\n        mfile = os.path.join(\n            issuewrapper.full_cachedir,\n            'meta.json'\n        )\n        meta['time'] = to_text(datetime.datetime.now().isoformat())\n        logging.info('dump meta to %s' % mfile)\n\n        with open(mfile, 'w', encoding='utf-8') as f:\n            json.dump(meta, f)\n\n    def create_actions(self, iw, actions, valid_labels):\n        '''Parse facts and make actions from them'''\n        # bot_broken + bot_skip bypass all actions\n        if not self.args.ignore_bot_broken:\n            bot_broken_commands = iw.history.get_commands(\n                None,\n                ['bot_broken', '!bot_broken'],\n                timestamps=True\n            )\n\n            bot_broken_label = iw.history.label_last_applied('bot_broken')\n            if bot_broken_label:\n                bot_broken_commands.append((bot_broken_label, 'bot_broken'))\n\n            bot_broken_unlabel = iw.history.label_last_removed('bot_broken')\n            if bot_broken_unlabel:\n                bot_broken_commands.append((bot_broken_label, '!bot_broken'))\n\n            last_bot_broken = sorted(bot_broken_commands, key=lambda x: x[0])[-1:]\n            if last_bot_broken and last_bot_broken[0][-1] == 'bot_broken':\n                logging.warning('bot broken!')\n                if 'bot_broken' not in iw.labels:\n                    actions.newlabel.append('bot_broken')\n                return\n            else:\n                if 'bot_broken' in iw.labels:\n                    actions.unlabel.append('bot_broken')\n\n            if 'bot_skip' in self.meta['maintainer_commands'] or \\\n                    'bot_skip' in self.meta['submitter_commands'] or \\\n                    '!bot_skip' in self.meta['maintainer_commands'] or \\\n                    '!bot_skip' in self.meta['submitter_commands']:\n                bot_skip_users = [x.login for x in iw.repo.assignees]\n                bot_skip_users.append(iw.submitter)\n                bot_skip_commands = iw.history.get_commands(\n                        bot_skip_users,\n                        ['bot_skip', '!bot_skip'],\n                        timestamps=True\n                )\n                last_bot_skip = sorted(bot_skip_commands, key=lambda x: x[0])[-1:]\n                if last_bot_skip and last_bot_skip[0][-1] == 'bot_skip':\n                    logging.warning('bot skip!')\n                    return\n\n        if iw.is_pullrequest():\n            if not iw.incoming_repo_exists and C.features.is_enabled('close_missing_ref_prs'):\n                type_to_branch_prefix = {\n                    'bugfix pull request': 'bugfix',\n                    'feature pull request': 'feature',\n                    'documenation pull request': 'docs',\n                    'test pull request': 'testing',\n                    None: 'misc',\n                }\n                pr_number = iw.number\n                pr_topic = iw.title.strip().replace(' ', '-').lower()\n                pr_type = type_to_branch_prefix[\n                    iw.template_data.get('issue type')\n                ]\n                pr_recovered_branch = (\n                    'recovered-{pr_type}/{pr_number:d}-{pr_topic}'.\n                    format(\n                        pr_type=pr_type,\n                        pr_number=pr_number,\n                        pr_topic=pr_topic,\n                    )\n                )\n                tvars = {\n                    'pr_number': pr_number,\n                    'pr_recovered_branch': pr_recovered_branch,\n                    'pr_topic': pr_topic,\n                    'pr_title_urlencoded': iw.title.replace(' ', '%20'),\n                    'pr_type': pr_type,\n                    'pr_submitter': iw.submitter,\n                }\n                comment = render_boilerplate(\n                    tvars, boilerplate='incoming_ref_missing',\n                )\n                actions.comments.append(comment)\n                if C.features.is_enabled('close_missing_ref_prs'):\n                    actions.close = True\n                actions.cancel_ci = True\n                actions.cancel_ci_branch = True\n                return\n\n            if not iw.from_fork:\n                tvars = {'submitter': iw.submitter}\n                comment = render_boilerplate(tvars, boilerplate='fork')\n                actions.comments.append(comment)\n                actions.close = True\n                actions.cancel_ci = True\n                actions.cancel_ci_branch = True\n                return\n\n        # indicate what components were matched\n        if not self.meta['is_bad_pr']:\n            if iw.is_issue() and self.meta.get('needs_component_message'):\n                tvars = {\n                    'meta': self.meta\n                }\n                comment = render_boilerplate(\n                    tvars, boilerplate='components_banner'\n                )\n                if comment not in actions.comments:\n                    actions.comments.append(comment)\n\n        # UNKNOWN!!! ... sigh.\n        if iw.is_pullrequest():\n            if self.meta['mergeable_state'] == 'unknown' and iw.state != 'closed':\n                msg = 'skipping %s because it has a' % iw.number\n                msg += ' mergeable_state of unknown'\n                logging.warning(msg)\n                return\n\n        # TRIAGE!!!\n        if 'needs_triage' not in iw.labels and not iw.history.was_unlabeled('needs_triage') and not iw.history.was_unlabeled('triage'):\n            actions.newlabel.append('needs_triage')\n\n        # owner PRs\n        if iw.is_pullrequest():\n            if self.meta['owner_pr']:\n                if 'owner_pr' not in iw.labels:\n                    actions.newlabel.append('owner_pr')\n            else:\n                if 'owner_pr' in iw.labels:\n                    actions.unlabel.append('owner_pr')\n\n        # WIPs\n        if iw.is_pullrequest():\n            if iw.wip:\n                if 'WIP' not in iw.labels:\n                    actions.newlabel.append('WIP')\n                if 'shipit' in iw.labels:\n                    actions.unlabel.append('shipit')\n            else:\n                if 'WIP' in iw.labels:\n                    actions.unlabel.append('WIP')\n\n        # MERGE COMMITS\n        if iw.is_pullrequest():\n            if self.meta['merge_commits']:\n                if not self.meta['has_merge_commit_notification']:\n                    comment = render_boilerplate(\n                        self.meta,\n                        boilerplate='merge_commit_notify'\n                    )\n                    actions.comments.append(comment)\n                    if 'merge_commit' not in iw.labels:\n                        actions.newlabel.append('merge_commit')\n                if self.meta.get('has_ci'):\n                    actions.cancel_ci = True\n            else:\n                if 'merge_commit' in iw.labels:\n                    actions.unlabel.append('merge_commit')\n\n        # @YOU IN COMMIT MSGS\n        if iw.is_pullrequest():\n            if self.meta['has_commit_mention']:\n                if not self.meta['has_commit_mention_notification']:\n\n                    comment = render_boilerplate(\n                        self.meta,\n                        boilerplate='commit_msg_mentions'\n                    )\n                    actions.comments.append(comment)\n\n        # SHIPIT+AUTOMERGE\n        if iw.is_pullrequest() and not self.meta['is_bad_pr']:\n            if self.meta['shipit']:\n\n                if 'shipit' not in iw.labels:\n                    actions.newlabel.append('shipit')\n\n                if self.meta['automerge']:\n                    logging.info(self.meta['automerge_status'])\n                    if 'automerge' not in iw.labels:\n                        actions.newlabel.append('automerge')\n                    if self.botmeta.get('automerge') in ['Yes', 'yes', 'y', True, 1]:\n                        actions.merge = True\n                else:\n                    logging.debug(self.meta['automerge_status'])\n                    if 'automerge' in iw.labels:\n                        actions.unlabel.append('automerge')\n\n            else:\n\n                # not shipit and not automerge ...\n                if 'shipit' in iw.labels:\n                    actions.unlabel.append('shipit')\n                if 'automerge' in iw.labels:\n                    actions.unlabel.append('automerge')\n\n        if iw.is_pullrequest() and self.meta['is_bad_pr']:\n            if self.meta['is_bad_pr_reason']:\n                last_comment_date = iw.history.last_date_for_boilerplate('bad_pr')\n\n                if not last_comment_date:\n                    comment = render_boilerplate(\n                        tvars={'submitter': iw.submitter, 'is_bad_pr_reason': self.meta['is_bad_pr_reason']},\n                        boilerplate='bad_pr'\n                    )\n\n                    if comment and comment not in actions.comments:\n                        actions.comments.append(comment)\n\n        # NEEDS REVISION\n        if iw.is_pullrequest():\n            if not iw.wip:\n                if self.meta['is_needs_revision'] or self.meta['is_bad_pr']:\n                    if 'needs_revision' not in iw.labels:\n                        actions.newlabel.append('needs_revision')\n                else:\n                    if 'needs_revision' in iw.labels:\n                        actions.unlabel.append('needs_revision')\n\n        # NEEDS REBASE\n        if iw.is_pullrequest():\n            if self.meta['is_needs_rebase'] or self.meta['is_bad_pr']:\n                if 'needs_rebase' not in iw.labels:\n                    actions.newlabel.append('needs_rebase')\n            else:\n                if 'needs_rebase' in iw.labels:\n                    actions.unlabel.append('needs_rebase')\n\n        # comments with CI failures\n        if iw.is_pullrequest() and not self.meta['is_bad_pr']:\n            if self.meta['ci_state'] == 'failure' and \\\n                    self.meta['needs_testresult_notification']:\n                tvars = {\n                    'submitter': iw.submitter,\n                    'data': self.meta['ci_test_results']\n                }\n\n                try:\n                    comment = render_boilerplate(\n                        tvars,\n                        boilerplate='shippable_test_result'\n                    )\n                except Exception as e:\n                    logging.debug(e)\n                    raise\n\n                # https://github.com/ansible/ansibullbot/issues/423\n                if len(comment) < 65536:\n                    if comment not in actions.comments:\n                        actions.comments.append(comment)\n\n        # https://github.com/ansible/ansibullbot/issues/293\n        if iw.is_pullrequest():\n            label = 'needs_ci'\n            if not self.meta['has_ci']:\n                if 'pre_azp' not in iw.labels:\n                    if label not in iw.labels:\n                        actions.newlabel.append(label)\n            else:\n                if label in iw.labels:\n                    actions.unlabel.append(label)\n                if 'pre_azp' in iw.labels:\n                    actions.unlabel.append('pre_azp')\n\n        # MODULE CATEGORY LABELS\n        if not self.meta['is_bad_pr']:\n            if self.meta['is_new_module'] or self.meta['is_module']:\n                # add topic labels\n                for t in ['topic', 'subtopic']:\n\n                    mmatches = self.meta['module_match']\n                    if not isinstance(mmatches, list):\n                        mmatches = [mmatches]\n\n                    for mmatch in mmatches:\n                        label = mmatch.get(t)\n                        if label in self.MODULE_NAMESPACE_LABELS:\n                            label = self.MODULE_NAMESPACE_LABELS[label]\n\n                        if label and label in valid_labels and \\\n                                label not in iw.labels and \\\n                                not iw.history.was_unlabeled(label):\n                            actions.newlabel.append(label)\n\n                        # add namespace labels\n                        namespace = mmatch.get('namespace')\n                        if namespace in self.MODULE_NAMESPACE_LABELS:\n                            label = self.MODULE_NAMESPACE_LABELS[namespace]\n                            if label not in iw.labels and \\\n                                    not iw.history.was_unlabeled(label):\n                                actions.newlabel.append(label)\n\n        # NEW MODULE\n        if not self.meta['is_bad_pr']:\n            if self.meta['is_new_module']:\n                if 'new_module' not in iw.labels:\n                    actions.newlabel.append('new_module')\n            else:\n                if 'new_module' in iw.labels:\n                    actions.unlabel.append('new_module')\n\n            if self.meta['is_module']:\n                if 'module' not in iw.labels:\n                    # don't add manually removed label\n                    if not iw.history.was_unlabeled(\n                        'module',\n                        bots=C.DEFAULT_BOT_NAMES,\n                    ):\n                        actions.newlabel.append('module')\n            else:\n                if 'module' in iw.labels:\n                    # don't remove manually added label\n                    if not iw.history.was_labeled(\n                        'module',\n                        bots=C.DEFAULT_BOT_NAMES,\n                    ):\n                        actions.unlabel.append('module')\n\n        # NEW PLUGIN\n        if not self.meta['is_bad_pr']:\n            label = 'new_plugin'\n            if self.meta['is_new_plugin']:\n                if label not in iw.labels and not iw.history.was_unlabeled(label):\n                    actions.newlabel.append(label)\n            else:\n                if label in iw.labels and not iw.history.was_labeled(label):\n                    actions.unlabel.append(label)\n\n        # component labels\n        if not self.meta['is_bad_pr']:\n            if self.meta.get('component_labels') and not self.meta.get('merge_commits'):\n\n                # only add these labels to pullrequest or un-triaged issues\n                if iw.is_pullrequest() or \\\n                        (iw.is_issue() and\n                        (not iw.labels or\n                        'needs_triage' in iw.labels)):\n\n                    # only add these if no c: labels have ever been changed by human\n                    clabels = iw.history.get_changed_labels(\n                        prefix='c:',\n                        bots=C.DEFAULT_BOT_NAMES,\n                    )\n\n                    if not clabels:\n                        for cl in self.meta['component_labels']:\n                            ul = iw.history.was_unlabeled(\n                                cl,\n                                bots=C.DEFAULT_BOT_NAMES,\n                            )\n                            if not ul and \\\n                                    cl not in iw.labels and \\\n                                    cl not in actions.newlabel:\n                                actions.newlabel.append(cl)\n\n        if self.meta['is_pullrequest'] and self.meta['is_backport']:\n            version = self.version_indexer.strip_ansible_version(self.meta['base_ref'])\n            if version:\n                for label in valid_labels:\n                    if label.startswith('affects_'):\n                        if label.endswith(version):\n                            if label not in iw.labels:\n                                actions.newlabel.append(label)\n                        elif label in iw.labels:\n                            actions.unlabel.append(label)\n        elif self.meta['ansible_label_version']:\n            vlabels = [x for x in iw.labels if x.startswith('affects_')]\n            if not vlabels:\n                label = 'affects_%s' % self.meta['ansible_label_version']\n                if label not in iw.labels:\n                    # do not re-add version labels\n                    if not iw.history.was_unlabeled(label):\n                        actions.newlabel.append(label)\n\n        if self.meta['issue_type']:\n            label = self.ISSUE_TYPES.get(self.meta['issue_type'])\n            if label and label not in iw.labels:\n                # do not re-add issue type labels\n                if not iw.history.was_unlabeled(label):\n                    actions.newlabel.append(label)\n\n        # use the filemap to add labels\n        if not self.meta['is_bad_pr']:\n            if iw.is_pullrequest() and not self.meta.get('merge_commits'):\n                fmap_labels = self.component_matcher.get_labels_for_files(iw.files)\n                for label in fmap_labels:\n                    if label in valid_labels and label not in iw.labels:\n                        # do not re-add these labels\n                        if not iw.history.was_unlabeled(label):\n                            actions.newlabel.append(label)\n\n        # needs info?\n        if self.meta['is_needs_info']:\n            if 'needs_info' not in iw.labels:\n                actions.newlabel.append('needs_info')\n\n            # template data warning\n            if self.meta['template_warning_required']:\n                tvars = {\n                    'submitter': iw.submitter,\n                    'itype': iw.github_type,\n                    'missing_sections': self.meta['template_missing_sections']\n                }\n\n                comment = render_boilerplate(\n                    tvars,\n                    boilerplate='issue_missing_data'\n                )\n\n                actions.comments.append(comment)\n\n            if self.meta['template_missing_sections'] and iw.submitter not in self.maintainer_team:\n                if 'needs_template' not in iw.labels:\n                    actions.newlabel.append('needs_template')\n\n        elif 'needs_info' in iw.labels:\n            actions.unlabel.append('needs_info')\n\n        # clear the needs_template label\n        if not self.meta['is_needs_info'] or \\\n                not self.meta['template_missing_sections']:\n            if 'needs_template' in iw.labels:\n                actions.unlabel.append('needs_template')\n\n        # needs_info warn/close?\n        if self.meta['is_needs_info'] and self.meta['needs_info_action']:\n            # FIXME the condition should be probably moved\n            if not (self.meta['component_match_strategy'] == ['component_command'] and self.meta['template_missing_sections'] == ['component name']):\n                if self.meta['needs_info_action'] == 'close':\n                    actions.close = True\n\n                tvars = {\n                    'submitter': iw.submitter,\n                    'action': self.meta['needs_info_action'],\n                    'itype': iw.github_type\n                }\n                tvars.update(self.meta)\n\n                comment = render_boilerplate(\n                    tvars,\n                    boilerplate='needs_info_base'\n                )\n\n                actions.comments.append(comment)\n\n        # notify?\n        if not self.meta['is_bad_pr']:\n            if self.meta['to_notify']:\n                tvars = {\n                    'notify': self.meta['to_notify'],\n                }\n                comment = render_boilerplate(tvars, boilerplate='notify')\n                if comment not in actions.comments:\n                    actions.comments.append(comment)\n\n        # needs_contributor\n        if self.meta['is_needs_contributor']:\n            if 'waiting_on_contributor' not in iw.labels:\n                actions.newlabel.append('waiting_on_contributor')\n        elif 'waiting_on_contributor' in iw.labels:\n            actions.unlabel.append('waiting_on_contributor')\n\n        # wontfix / notabug / bug_resolved / resolved_by_pr / duplicate_of\n        if 'wontfix' in self.meta['maintainer_commands']:\n            actions.close = True\n        if 'notabug' in self.meta['maintainer_commands']:\n            actions.close = True\n        if 'bug_resolved' in self.meta['maintainer_commands']:\n            actions.close = True\n        if 'duplicate_of' in self.meta['maintainer_commands']:\n            actions.close = True\n        if 'close_me' in self.meta['maintainer_commands']:\n            actions.close = True\n        if 'resolved_by_pr' in self.meta['maintainer_commands']:\n            # 'resolved_by_pr': {'merged': True, 'number': 19141},\n            if self.meta['resolved_by_pr']['merged']:\n                actions.close = True\n\n        # bot_status\n        if self.meta['needs_bot_status']:\n            comment = render_boilerplate(\n                self.meta,\n                boilerplate='bot_status'\n            )\n            if comment not in actions.comments:\n                actions.comments.append(comment)\n\n        # traceback\n        if self.meta['has_traceback']:\n            if 'traceback' not in iw.labels:\n                actions.newlabel.append('traceback')\n\n        # label commands\n        if self.meta['label_cmds']:\n            if self.meta['label_cmds']['add']:\n                for label in self.meta['label_cmds']['add']:\n                    if label not in iw.labels:\n                        actions.newlabel.append(label)\n                    if label in actions.unlabel:\n                        actions.unlabel.remove(label)\n            if self.meta['label_cmds']['del']:\n                for label in self.meta['label_cmds']['del']:\n                    if label in iw.labels:\n                        actions.unlabel.append(label)\n                    if label in actions.newlabel:\n                        actions.newlabel.remove(label)\n\n        # small patch?\n        if iw.is_pullrequest():\n            label_name = 'small_patch'\n            if self.meta['is_small_patch']:\n                if label_name not in iw.labels:\n                    actions.newlabel.append(label_name)\n            else:\n                if label_name in iw.labels:\n                    actions.unlabel.append(label_name)\n\n        # docs_only?\n        # https://github.com/ansible/ansibullbot/issues/1047\n        if iw.is_pullrequest():\n            label_name = 'docs_only'\n            if self.meta['is_docs_only']:\n                if label_name not in iw.labels:\n                    actions.newlabel.append(label_name)\n\n                if not iw.history.last_date_for_boilerplate('docs_team_info'):\n                    comment = render_boilerplate(\n                        self.meta,\n                        boilerplate='docs_team_info'\n                    )\n                    actions.comments.append(comment)\n            else:\n                if label_name in iw.labels:\n                    actions.unlabel.append(label_name)\n\n        if iw.is_pullrequest():\n\n            # https://github.com/ansible/ansibullbot/issues/312\n            # https://github.com/ansible/ansibullbot/issues/418\n            if self.meta['ci_verified']:\n                if 'ci_verified' not in iw.labels:\n                    actions.newlabel.append('ci_verified')\n            else:\n                if 'ci_verified' in iw.labels:\n                    actions.unlabel.append('ci_verified')\n\n        # https://github.com/ansible/ansibullbot/issues/367\n        if self.meta['is_backport']:\n            if 'backport' not in iw.labels:\n                actions.newlabel.append('backport')\n        else:\n            if 'backport' in iw.labels:\n                actions.unlabel.append('backport')\n\n        # https://github.com/ansible/ansibullbot/issues/29\n        if self.meta['deprecated']:\n            if 'deprecated' not in iw.labels:\n                actions.newlabel.append('deprecated')\n        else:\n            if 'deprecated' in iw.labels:\n                actions.unlabel.append('deprecated')\n\n        # label PRs with missing repos\n        if iw.is_pullrequest():\n            if not self.meta['has_remote_repo']:\n                if 'needs_repo' not in iw.labels:\n                    actions.newlabel.append('needs_repo')\n            else:\n                if 'needs_repo' in iw.labels:\n                    actions.unlabel.append('needs_repo')\n\n        # https://github.com/ansible/ansibullbot/issues/458\n        if not self.meta['is_bad_pr']:\n            if iw.is_pullrequest():\n                if self.meta['ci_stale']:\n                    if 'stale_ci' not in iw.labels:\n                        actions.newlabel.append('stale_ci')\n                else:\n                    if 'stale_ci' in iw.labels:\n                        actions.unlabel.append('stale_ci')\n\n        # https://github.com/ansible/ansibullbot/issues/589\n        if not self.meta['is_bad_pr']:\n            if self.meta['module_match'] and not self.meta['is_new_module']:\n                mmatches = self.meta['module_match']\n                if not isinstance(mmatches, list):\n                    mmatches = [mmatches]\n                needs_maintainer = False\n                for mmatch in mmatches:\n                    needs_maintainer = False\n                    if not mmatch['maintainers'] and mmatch['support'] != 'core':\n                        needs_maintainer = True\n                        break\n                if needs_maintainer:\n                    if 'needs_maintainer' not in iw.labels:\n                        actions.newlabel.append('needs_maintainer')\n                else:\n                    if 'needs_maintainer' in iw.labels:\n                        actions.unlabel.append('needs_maintainer')\n\n        if not self.meta['stale_reviews']:\n            if 'stale_review' in iw.labels:\n                actions.unlabel.append('stale_review')\n        else:\n            if 'stale_review' not in iw.labels:\n                actions.newlabel.append('stale_review')\n\n        # https://github.com/ansible/ansibullbot/issues/302\n        if not self.meta['is_bad_pr']:\n            if iw.is_pullrequest():\n                if self.meta['needs_multiple_new_modules_notification']:\n                    tvars = {\n                        'submitter': iw.submitter\n                    }\n                    comment = render_boilerplate(\n                        tvars, boilerplate='multiple_module_notify'\n                    )\n                    if comment not in actions.comments:\n                        actions.comments.append(comment)\n\n        # https://github.com/ansible/ansible/pull/26921\n        if self.meta['is_filament']:\n\n            # no notifications on these\n            if actions.comments:\n                remove = []\n                for comment in actions.comments:\n                    if '@' in comment:\n                        remove.append(comment)\n                if remove:\n                    for comment in remove:\n                        actions.comments.remove(comment)\n\n            if 'filament' not in iw.labels:\n                actions.newlabel.append('filament')\n            if iw.age.days >= 5:\n                actions.close = True\n\n        # https://github.com/ansible/ansible/pull/68449\n        if self.meta['test_support_plugins']:\n            # should be fine to post just once, hopefully nobody will continue\n            # with the PR after this comment...\n            if not iw.history.last_date_for_boilerplate('test_support_plugins'):\n                comment = render_boilerplate(\n                    self.meta,\n                    boilerplate='test_support_plugins'\n                )\n                if comment not in actions.comments:\n                    actions.comments.append(comment)\n\n        # https://github.com/ansible/ansibullbot/pull/664\n        if self.meta['needs_rebuild_all']:\n            actions.rebuild = True\n            if 'stale_ci' in actions.newlabel:\n                actions.newlabel.remove('stale_ci')\n            if 'stale_ci' in iw.labels:\n                actions.unlabel.append('stale_ci')\n        elif self.meta['needs_rebuild_failed']:\n            actions.rebuild_failed = True\n            if 'stale_ci' in actions.newlabel:\n                actions.newlabel.remove('stale_ci')\n            if 'stale_ci' in iw.labels:\n                actions.unlabel.append('stale_ci')\n\n        # https://github.com/ansible/ansibullbot/issues/640\n        if not self.meta['is_bad_pr']:\n            if not self.meta['needs_rebuild'] and self.meta['admin_merge']:\n                actions.merge = True\n\n        # https://github.com/ansible/ansibullbot/issues/785\n        if iw.is_pullrequest():\n            if self.meta.get('new_contributor'):\n                if 'new_contributor' not in iw.labels:\n                    actions.newlabel.append('new_contributor')\n            else:\n                if 'new_contributor' in iw.labels:\n                    actions.unlabel.append('new_contributor')\n\n        # https://github.com/ansible/ansibullbot/issues/535\n        if not self.meta['is_bad_pr']:\n            for cm in self.meta['component_matches']:\n                if cm.get('labels'):\n                    for label in cm['labels']:\n                        exists = label in iw.labels\n                        unlabeled = iw.history.was_unlabeled(label)\n                        valid = label in iw.repo.labels\n\n                        # add it if a human did not remove it and is valid\n                        if not exists and not unlabeled and valid:\n                            actions.newlabel.append(label)\n\n        # https://github.com/ansible/ansibullbot/issues/534\n        if iw.is_pullrequest() and self.meta['is_empty_pr'] and not iw.wip:\n            actions = AnsibleActions()\n            actions.close = True\n\n        # https://github.com/ansible/ansibullbot/issues/820\n        if self.meta.get('wg', {}).get('needs_notification'):\n            comment = render_boilerplate(\n                self.meta,\n                boilerplate='community_workgroups'\n            )\n            if comment not in actions.comments:\n                actions.comments.append(comment)\n\n        # https://github.com/ansible/ansibullbot/issues/924\n        for key in ['has_pr', 'has_issue']:\n            if self.meta['needs_' + key]:\n                if key not in iw.labels:\n                    actions.newlabel.append(key)\n\n        # collections!!!\n        if self.meta.get('is_collection'):\n            clabels = ['collection']\n            for fqcn in self.meta['collection_fqcns']:\n                clabel = 'collection:%s' % fqcn\n                clabels.append(clabel)\n            for clabel in clabels:\n                exists = clabel in iw.labels\n                unlabeled = iw.history.was_unlabeled(clabel)\n\n                # add it if a human did not remove it\n                if not exists and not unlabeled:\n                    actions.newlabel.append(clabel)\n\n        # collections!!!\n        if not self.meta.get('needs_collection_redirect') is True:\n            if 'needs_collection_redirect' in iw.labels:\n                actions.unlabel.append('needs_collection_redirect')\n        else:\n            if 'needs_collection_redirect' not in iw.labels:\n                actions.newlabel.append('needs_collection_redirect')\n            if self.botmeta['collection_redirect'] is True:\n                actions.close = True\n                actions.newlabel.append('bot_closed')\n                if self.meta.get('needs_collection_redirect'):\n                    comment = render_boilerplate(\n                        self.meta,\n                        boilerplate='collection_migration'\n                    )\n                    actions.comments.append(comment)\n\n        # collections!!!\n        if self.meta.get('collection_fqcn_label_remove'):\n            for fqcn in self.meta['collection_fqcn_label_remove']:\n                actions.unlabel.append('collection:%s'% fqcn)\n\n        # spam!!!\n        if self.meta.get('spam_comment_ids'):\n            for commentid in self.meta['spam_comment_ids']:\n                actions.uncomment.append(commentid)\n\n        # auto close waiting_on_contributor issues/PRs\n        # that have been labeled for WAITING_ON_CONTRIBUTOR_EXPIRE days\n        if 'waiting_on_contributor' in iw.labels:\n            label_applied_at = iw.history.label_last_applied('waiting_on_contributor')\n            now = datetime.datetime.now(datetime.timezone.utc).replace(tzinfo=datetime.timezone.utc)\n            if (now - label_applied_at).days > C.DEFAULT_WAITING_ON_CONTRIBUTOR_EXPIRE:\n                # Waiting for Godot!\n                actions.close = True\n                actions.newlabel.append('bot_closed')\n                actions.unlabel.append('waiting_on_contributor')\n                actions.comments.append(\n                    render_boilerplate(\n                        self.meta,\n                        boilerplate='waiting_on_contributor_close'\n                    )\n                )\n\n        actions.newlabel = sorted({to_text(to_bytes(x, 'ascii'), 'ascii') for x in actions.newlabel})\n        actions.unlabel = sorted({to_text(to_bytes(x, 'ascii'), 'ascii') for x in actions.unlabel})\n\n        # check for waffling\n        labels = sorted(set(actions.newlabel + actions.unlabel))\n        for label in labels:\n            if label in self.meta['label_waffling_overrides']:\n                continue\n            if iw.history.label_is_waffling(label):\n                if label in actions.newlabel or label in actions.unlabel:\n                    msg = f'\"{label}\" label is waffling on {iw.html_url}'\n                    logging.error(msg)\n                    raise LabelWafflingError(msg)\n            elif label in actions.newlabel and label in actions.unlabel:\n                msg = f'\"{label}\" label is waffling on {iw.html_url}'\n                logging.error(msg)\n                raise LabelWafflingError(msg)\n\n    def post_actions_to_receiver(self, iw, actions, processed_meta):\n        namespace, reponame = iw.repo_full_name.split('/', 1)\n        processed_actions = {name: value for (name, value) in vars(actions).items() if value}\n        data = processed_actions\n        data['meta'] = processed_meta\n        post_to_receiver(\n            'actions',\n            {'user': namespace, 'repo': reponame, 'number': iw.number},\n            data,\n        )\n\n    def process(self, iw, valid_labels):\n        '''Do initial processing of the issue'''\n\n        # clear the actions+meta\n        self.meta = {}\n\n        self.meta['state'] = iw.state\n        self.meta['submitter'] = iw.submitter\n\n        # set the issue type\n        issue_type = iw.template_data.get('issue type')\n        if issue_type in self.ISSUE_TYPES:\n            self.meta['issue_type'] = issue_type\n        else:\n            # look for best match?\n            for key in self.ISSUE_TYPES.keys():\n                if iw.body and key in iw.body.lower():\n                    self.meta['issue_type'] = key\n                    break\n            else:\n                self.meta['issue_type'] = None\n\n        # needed for bot status\n        self.meta['is_issue'] = iw.is_issue()\n        self.meta['is_pullrequest'] = iw.is_pullrequest()\n\n        # get ansible version\n        if iw.is_issue():\n            try:\n                self.meta['ansible_version'] = self.version_indexer.version_by_issue(iw)\n            except ValueError:\n                self.meta['ansible_version'] = self.version_indexer.version_by_date(iw.created_at)\n        else:\n            self.meta['ansible_version'] = self.version_indexer.version_by_commit(iw.pullrequest.base.sha)\n\n        self.meta['ansible_label_version'] = get_version_major_minor(self.meta['ansible_version'])\n        logging.info('ansible version: %s' % self.meta['ansible_version'])\n\n        # what component(s) is this about?\n        self.meta.update(\n            get_component_match_facts(\n                iw,\n                self.component_matcher,\n                valid_labels\n            )\n        )\n\n        # collections?\n        self.meta.update(\n            get_collection_facts(\n                iw,\n                self.component_matcher,\n                self.meta,\n            )\n        )\n\n        # backports\n        self.meta.update(get_backport_facts(iw))\n\n        # traceback\n        self.meta.update(get_traceback_facts(iw))\n\n        # small_patch\n        self.meta.update(get_small_patch_facts(iw))\n\n        # docs_only\n        self.meta.update(get_docs_facts(iw))\n\n        # shipit?\n        self.meta.update(\n            get_needs_revision_facts(\n                iw,\n                self.meta,\n                self.ci,\n                self.maintainer_team,\n                C.DEFAULT_BOT_NAMES,\n            )\n        )\n\n        # needs_contributor?\n        self.meta.update(get_needs_contributor_facts(iw.history.history, C.DEFAULT_BOT_NAMES))\n\n        # who needs to be notified or assigned?\n        self.meta.update(get_notification_facts(iw, self.meta, botmeta=self.botmeta))\n\n        # ci_verified and test results\n        self.meta.update(\n            get_ci_run_facts(iw, self.meta, self.ci)\n        )\n\n        # needsinfo?\n        self.meta['is_needs_info'] = is_needsinfo(iw, C.DEFAULT_BOT_NAMES)\n        self.meta.update(self.process_comment_commands(iw, self.meta))\n        self.meta.update(needs_info_template_facts(iw, self.meta))\n        self.meta.update(needs_info_timeout_facts(iw.history, self.meta))\n\n        # shipit?\n        self.meta.update(\n            get_shipit_facts(\n                iw, self.meta, self.botmeta['files'],\n                maintainer_team=self.maintainer_team, botnames=C.DEFAULT_BOT_NAMES,\n            )\n        )\n\n        # bot_status needed?\n        self.meta.update(get_bot_status_facts(iw, self.module_indexer.all_maintainers, maintainer_team=self.maintainer_team, bot_names=C.DEFAULT_BOT_NAMES))\n\n        # who is this waiting on?\n        wo = 'maintainer'\n        if self.meta['is_needs_info']:\n            wo = iw.submitter\n        if iw.is_issue():\n            if self.meta['is_needs_contributor']:\n                wo = 'contributor'\n        else:\n            if self.meta['is_needs_revision'] or self.meta['is_needs_rebase']:\n                wo = iw.submitter\n            else:\n                wo = 'ansible'\n        self.meta.update({'waiting_on': wo})\n\n        # community label manipulation\n        self.meta.update(\n            get_label_command_facts(\n                iw,\n                self.module_indexer.all_maintainers,\n                maintainer_team=self.maintainer_team,\n                valid_labels=valid_labels\n            )\n        )\n\n        # waffling overrides [label_waffling_overrides]\n        self.meta.update(\n            get_waffling_overrides(\n                iw,\n                self.module_indexer.all_maintainers,\n                maintainer_team=self.maintainer_team,\n            )\n        )\n\n        # filament\n        self.meta.update(get_filament_facts(iw, self.meta))\n\n        # test_support_plugins\n        self.meta.update(\n            get_test_support_plugins_facts(iw, self.component_matcher)\n        )\n\n        # ci\n        self.meta.update(get_ci_facts(iw, self.ci))\n\n        # ci rebuilds\n        self.meta.update(get_rebuild_facts(iw, self.meta))\n\n        # ci rebuild + merge\n        self.meta.update(\n            get_rebuild_merge_facts(\n                iw,\n                self.meta,\n                self.maintainer_team,\n                self.ci,\n            )\n        )\n\n        # ci rebuild requested?\n        self.meta.update(\n            get_rebuild_command_facts(\n                iw,\n                self.meta,\n                self.ci,\n            )\n        )\n\n        # first time contributor?\n        self.meta.update(get_contributor_facts(iw))\n\n        # is it deprecated?\n        self.meta.update(get_deprecation_facts(self.meta))\n\n        # does it have a pr or does it have an issue?\n        self.meta.update(get_cross_reference_facts(iw))\n\n        # need these keys to always exist\n        if 'merge_commits' not in self.meta:\n            self.meta['merge_commits'] = []\n        if 'is_bad_pr' not in self.meta:\n            self.meta['is_bad_pr'] = False\n\n        # spam!\n        self.meta.update(get_spam_facts(iw))\n\n        # automerge\n        self.meta.update(get_automerge_facts(iw, self.meta))\n\n        # community working groups\n        self.meta.update(get_community_workgroup_facts(iw, self.meta))\n\n    def process_comment_commands(self, issuewrapper, meta):\n\n        vcommands = [x for x in self.VALID_COMMANDS]\n        # these are handled by other fact gathering functions\n        vcommands.remove('bot_status')\n        vcommands.remove('needs_info')\n        vcommands.remove('!needs_info')\n        vcommands.remove('shipit')\n        vcommands.remove('needs_rebase')\n        vcommands.remove('!needs_rebase')\n        vcommands.remove('needs_revision')\n        vcommands.remove('!needs_revision')\n        vcommands.remove('needs_contributor')\n        vcommands.remove('!needs_contributor')\n        vcommands.remove('waiting_on_contributor')\n        vcommands.remove('!waiting_on_contributor')\n\n        iw = issuewrapper\n\n        maintainers = []\n\n        maintainers += meta.get('component_authors', [])\n        maintainers += meta.get('component_maintainers', [])\n        maintainers += meta.get('component_notifiers', [])\n\n        maintainers += [x.login for x in iw.repo.assignees]\n        maintainers = sorted(set(maintainers))\n\n        meta['maintainer_commands'] = iw.history.get_commands(\n            maintainers,\n            vcommands,\n            uselabels=False,\n        )\n        meta['submitter_commands'] = iw.history.get_commands(\n            iw.submitter,\n            vcommands,\n            uselabels=False,\n        )\n\n        # JIMI_SKIP!!!\n        if issuewrapper.submitter in ['jimi-c']:\n            if 'bot_skip' not in meta['maintainer_commands']:\n                meta['maintainer_commands'].append('bot_skip')\n            if '!bot_skip' in meta['maintainer_commands']:\n                meta['maintainer_commands'].remove('!bot_skip')\n            if '!bot_skip' in meta['submitter_commands']:\n                meta['submitter_commands'].remove('!bot_skip')\n\n        negative_commands = \\\n            [x for x in self.VALID_COMMANDS if x.startswith('!')]\n        negative_commands = [x.replace('!', '') for x in negative_commands]\n        for x in negative_commands:\n            meta['maintainer_commands'] = self.negate_command(\n                x,\n                meta['maintainer_commands']\n            )\n            meta['submitter_commands'] = self.negate_command(\n                x,\n                meta['submitter_commands']\n            )\n\n        # resolved_by_pr is special\n        if 'resolved_by_pr' in meta['maintainer_commands']:\n            mc = iw.history.get_user_comments(maintainers)\n            mc = [x for x in mc if 'resolved_by_pr' in x]\n\n            pr_number = extract_pr_number_from_comment(mc[-1])\n            if pr_number is None:\n                logging.warning(\"Invalid resolved_by_pr command in '%s'\", mc[-1])\n            else:\n                merged = iw.repo.is_pr_merged(pr_number)\n                meta['resolved_by_pr'] = {\n                    'number': pr_number,\n                    'merged': merged\n                }\n\n        return meta\n\n    def negate_command(self, command, commands):\n        # negate bot_broken  ... bot_broken vs. !bot_broken\n        positive = command\n        negative = '!' + command\n\n        bb = [x for x in commands if positive in x]\n        if bb:\n            for x in bb:\n                if x == negative:\n                    if positive in commands:\n                        commands.remove(positive)\n                    if negative in commands:\n                        commands.remove(negative)\n\n        return commands\n\n    def execute_actions(self, iw, actions):\n        \"\"\"Turns the actions into API calls\"\"\"\n\n        self.post_actions_to_receiver(iw, actions, self.processed_meta)\n\n        super().execute_actions(iw, actions)\n\n        if actions.rebuild:\n            runid = self.meta.get('ci_run_number')\n            if runid:\n                logging.info('Rebuilding CI %s for #%s' % (runid, iw.number))\n                self.ci.rebuild(runid)\n            else:\n                logging.error(\n                    f'rebuild: no CI runid for {iw.number}'\n                )\n        elif actions.rebuild_failed:\n            runid = self.meta.get('ci_run_number')\n            if runid:\n                logging.info('Rebuilding CI %s for #%s' % (runid, iw.number))\n                self.ci.rebuild_failed(runid)\n            else:\n                logging.error(\n                    f'rebuild: no CI runid for {iw.number}'\n                )\n\n        if actions.cancel_ci:\n            runid = self.meta.get('ci_run_number')\n            if runid:\n                logging.info('Cancelling CI %s for #%s' % (runid, iw.number))\n                self.ci.cancel(runid)\n            else:\n                logging.error(\n                    f'cancel: no CI runid for {iw.number}'\n                )\n\n        if actions.cancel_ci_branch:\n            branch = iw.pullrequest.head.repo\n            self.ci.cancel_on_branch(branch)\n\n    @classmethod\n    def create_parser(cls):\n        parser = DefaultTriager.create_parser()\n        parser.description = \"Triage issue and pullrequest queues for Ansible.\\n\" \\\n                             \" (NOTE: only useful if you have commit access to\" \\\n                             \" the repo in question.)\"\n        parser.add_argument(\"--skip_no_update\", action=\"store_true\",\n                            help=\"skip processing if updated_at hasn't changed\")\n        parser.add_argument(\"--collect_only\", action=\"store_true\",\n                            help=\"stop after caching issues\")\n        parser.add_argument(\"--ignore_bot_broken\", action=\"store_true\",\n                            help=\"Do not skip processing bot_broken|bot_skip issues\")\n        parser.add_argument(\"--ignore_module_commits\", action=\"store_true\",\n                            help=\"Do not enumerate module commit logs\")\n        parser.add_argument('--commit', dest='ansible_commit',\n                            help=\"Use a specific commit for the indexers\")\n        parser.add_argument('--ignore_galaxy', action='store_true',\n                            help='do not index or search for components in galaxy')\n        parser.add_argument(\"--ci\", type=str, choices=VALID_CI_PROVIDERS,\n                            default=C.DEFAULT_CI_PROVIDER,\n                            help=\"Specify a CI provider that repo uses\")\n        return parser\n"
  },
  {
    "path": "ansibullbot/ci/__init__.py",
    "content": ""
  },
  {
    "path": "ansibullbot/ci/azp.py",
    "content": "import hashlib\nimport logging\nimport json\nimport os.path\nimport pickle\nimport re\n\nfrom datetime import timezone\nfrom io import BytesIO\nfrom zipfile import ZipFile\n\nimport ansibullbot.constants as C\nfrom ansibullbot._text_compat import to_bytes\nfrom ansibullbot.ci.base import BaseCI\nfrom ansibullbot.exceptions import NoCIError\nfrom ansibullbot.utils.net_tools import fetch\nfrom ansibullbot.utils.timetools import strip_time_safely\n\n\nDETAILS_URL_RE = \\\n    re.compile(\n        r'https://dev\\.azure\\.com/(?P<organization>[^/]+)/(?P<project>[^/]+)/_build/results\\?buildId=(?P<buildId>[0-9]+)'\n    )\nTIMELINE_URL_FMT = \\\n    'https://dev.azure.com/' + C.DEFAULT_AZP_ORG + '/' + C.DEFAULT_AZP_PROJECT + '/_apis/build/builds/%s/timeline/?api-version=6.0'\nARTIFACTS_URL_FMT = \\\n    'https://dev.azure.com/' + C.DEFAULT_AZP_ORG + '/' + C.DEFAULT_AZP_PROJECT + '/_apis/build/builds/%s/artifacts?api-version=6.0'\nSTAGE_URL_FMT = \\\n    'https://dev.azure.com/' + C.DEFAULT_AZP_ORG + '/' + C.DEFAULT_AZP_PROJECT + '/_apis/build/builds/%s/stages/%s?api-version=6.0-preview.1'\nNEW_BUILD = 'https://dev.azure.com/' + C.DEFAULT_AZP_ORG + '/' + C.DEFAULT_AZP_PROJECT + '/_apis/build/builds?api-version=6.0'\nTIMEOUT = 5  # seconds\nHEADERS = {\n    'Content-Type': 'application/json',\n}\n\n\nclass AzurePipelinesCI(BaseCI):\n\n    name = 'azp'\n\n    def __init__(self, cachedir, iw):\n        self._cachedir = os.path.join(cachedir, 'azp.runs')\n        self._iw = iw\n\n        self._build_id = None\n        self._jobs = None\n        self._state = None\n        self._updated_at = None\n        self._stages = None\n        self._artifacts = None\n        self.last_run = None\n        self.created_at = None\n\n        try:\n            self.created_at = min(\n                (strip_time_safely(j['startTime']) for j in self.jobs if j['startTime'] is not None)\n            )\n        except ValueError:\n            self.created_at = self.updated_at\n\n        if self.state and self.build_id and self.jobs:\n            self.last_run = {\n                'state': self.state,\n                'created_at': self.created_at.replace(tzinfo=timezone.utc),\n                'updated_at': self.updated_at.replace(tzinfo=timezone.utc),\n                'run_id': self.build_id,\n            }\n\n    @property\n    def build_id(self):\n        if self._build_id is None:\n            build_ids = set()\n            for check_run in self._iw.pullrequest_check_runs:\n                match = re.match(DETAILS_URL_RE, check_run.details_url)\n                if not match:\n                    continue\n                org, project, buildid = match.groups()\n                if org == C.DEFAULT_AZP_ORG and project == C.DEFAULT_AZP_PROJECT:\n                    build_ids.add(int(buildid))\n            # FIXME more than one Pipeline\n            logging.debug('Azure Pipelines build IDs found: %s' % build_ids)\n            try:\n                self._build_id = max(build_ids)\n            except ValueError:\n                self._build_id = None\n\n        return self._build_id\n\n    @property\n    def jobs(self):\n        if not self.build_id:\n            return []\n\n        if self._jobs is None:\n            self._jobs = []\n            self._updated_at = strip_time_safely('1970-01-01')\n            self._stages = []\n\n            if not os.path.isdir(self._cachedir):\n                os.makedirs(self._cachedir)\n            cache_file = os.path.join(self._cachedir, u'timeline_%s.pickle' % self.build_id)\n\n            url = TIMELINE_URL_FMT % self.build_id\n            resp = fetch(url, timeout=TIMEOUT)\n            if resp is None:\n                raise Exception('Unable to GET %s' % url)\n\n            if resp.status_code == 404:\n                data = None\n                if os.path.isfile(cache_file):\n                    logging.info(u'timeline was probably removed, load it from cache')\n                    with open(cache_file, 'rb') as f:\n                        data = pickle.load(f)\n            else:\n                data = resp.json()\n                data = (strip_time_safely(data['lastChangedOn']), data)\n                logging.info(u'writing %s' % cache_file)\n                with open(cache_file, 'wb') as f:\n                    pickle.dump(data, f)\n\n            if data is not None:\n                data = data[1]\n                self._jobs = [r for r in data['records'] if r['type'] == 'Job']\n                self._updated_at = strip_time_safely(data['lastChangedOn'])\n                self._stages = [r for r in data['records'] if r['type'] == 'Stage']\n\n                state = list({j['state'] for j in self.jobs})  # pending, completed, inProgress\n                result = list({j['result'] for j in self.jobs})  # succeeded, failed, None\n                if 'canceled' in result or 'cancelled' in result:\n                    self._state = 'failure'\n                elif len(state) == 1 and 'completed' in state:\n                    if len(result) == 1 and 'succeeded' in result:\n                        self._state = 'success'\n                    elif 'failed' in result:\n                        self._state = 'failure'\n                elif 'pending' in state or 'inProgress' in state:\n                    self._state = 'pending'\n                else:\n                    raise ValueError(\n                        'Unknown state for buildId: %s, state: %s' % (self.build_id, state)\n                    )\n        return self._jobs\n\n    @property\n    def state(self):\n        return self._state\n\n    @property\n    def updated_at(self):\n        return self._updated_at\n\n    @property\n    def stages(self):\n        return self._stages\n\n    def get_last_full_run_date(self):\n        # FIXME fix the method name, it makes sense for shippable but not for azp\n        if (self.state is None and self.build_id is None) or self.created_at is None:\n            raise NoCIError\n        return self.created_at\n\n    @property\n    def artifacts(self):\n        if self._artifacts is None and self._jobs:\n            if not os.path.isdir(self._cachedir):\n                os.makedirs(self._cachedir)\n\n            data = None\n            cache_file = os.path.join(self._cachedir, 'artifacts_%s.pickle' % self.build_id)\n            if os.path.isfile(cache_file):\n                logging.info('load artifacts cache')\n                with open(cache_file, 'rb') as f:\n                    data = pickle.load(f)\n\n            if data is None or (data and data[0] < self.updated_at) or not data[1]:\n                if data:\n                    logging.info('fetching artifacts: stale, previous from %s' % data[0])\n                else:\n                    logging.info('fetching artifacts: stale, no previous data')\n\n                url = ARTIFACTS_URL_FMT % self.build_id\n                resp = fetch(url, timeout=TIMEOUT)\n                if resp is None:\n                    raise Exception('Unable to GET %s' % url)\n\n                if resp.status_code != 404:\n                    data = [a for a in resp.json()['value'] if a['name'].startswith('Bot')]\n                    data = (self.updated_at, data)\n\n                    logging.info('writing %s' % cache_file)\n                    with open(cache_file, 'wb') as f:\n                        pickle.dump(data, f)\n            if data:\n                self._artifacts = data[1]\n\n        return self._artifacts\n\n    def _get_artifact(self, name, url):\n        if not os.path.isdir(self._cachedir):\n            os.makedirs(self._cachedir)\n\n        data = None\n        cache_file = os.path.join(self._cachedir, '%s_%s.pickle' % (name.replace(' ', '-'), self.build_id))\n        if os.path.isfile(cache_file):\n            logging.info('loading %s' % cache_file)\n            with open(cache_file, 'rb') as f:\n                data = pickle.load(f)\n\n        if data is None or (data and data[0] < self.updated_at) or not data[1]:\n            if data:\n                logging.info('fetching artifacts: stale, previous from %s' % data[0])\n            else:\n                logging.info('fetching artifacts: stale, no previous data')\n\n            resp = fetch(url, timeout=TIMEOUT, stream=True)\n            if resp is None:\n                raise Exception('Unable to GET %s' % url)\n\n            if resp.status_code != 404:\n                with BytesIO() as data:\n                    for chunk in resp.iter_content(chunk_size=128):\n                        data.write(chunk)\n                    artifact_zip = ZipFile(data)\n\n                    artifact_data = []\n                    for fn in artifact_zip.namelist():\n                        if 'ansible-test-' not in fn:\n                            continue\n                        with artifact_zip.open(fn) as f:\n                            artifact_data.append(json.load(f))\n\n                    data = (self.updated_at, artifact_data)\n                    logging.info('writing %s' % cache_file)\n                    with open(cache_file, 'wb') as f:\n                        pickle.dump(data, f)\n        if data:\n            return data[1]\n\n    def get_test_results(self):\n        if self.state in ('pending', 'inProgress', None):\n            return [], False\n\n        failed_jobs = [j for j in self.jobs if j['result'] == 'failed']\n        if not failed_jobs:\n            return [], False\n\n        results = []\n        ci_verified = True\n        failed_jobs_with_artifact = 0\n        for job in failed_jobs:\n            for artifact in self.artifacts:\n                if job['id'] != artifact['source']:\n                    continue\n                failed_jobs_with_artifact += 1\n                for artifact_json in self._get_artifact(artifact['name'], artifact['resource']['downloadUrl']):\n                    if not artifact_json['verified']:\n                        ci_verified = False\n\n                    result_data = ''.join(\n                        (result['message'] + result['output'] for result in artifact_json['results'])\n                    )\n\n                    results.append({\n                        'contents': {\n                            'results': artifact_json['results'],\n                        },\n                        'run_id': self.build_id,\n                        'job_id': hashlib.md5(to_bytes(result_data)).hexdigest(),\n                        'path': None,\n                    })\n\n        if ci_verified and len(failed_jobs) != failed_jobs_with_artifact:\n            ci_verified = False\n\n        return results, ci_verified\n\n    def rebuild(self, run_id, failed_only=False):\n        data = {'state': 'retry'}\n        if failed_only:\n            api_version = '6.0-preview.1'\n            stages = [s['identifier'] for s in self.stages if s['result'] != 'succeeded']\n        else:\n            api_version = '6.1-preview.1'\n            data['forceRetryAllJobs'] = True\n            stages = [s['identifier'] for s in self.stages]\n\n        for stage in stages:\n            url = 'https://dev.azure.com/' + C.DEFAULT_AZP_ORG + '/' + C.DEFAULT_AZP_PROJECT + '/_apis/build/builds/%s/stages/%s?api-version=%s' % (run_id, stage, api_version)\n\n            resp = fetch(\n                url,\n                verb='patch',\n                headers=HEADERS,\n                data=json.dumps(data),\n                timeout=TIMEOUT,\n                auth=(C.DEFAULT_AZP_USER, C.DEFAULT_AZP_TOKEN),\n            )\n            if resp is not None and resp.status_code == 404:\n                self._rebuild_old()\n                break\n\n    def _rebuild_old(self):\n        data = json.dumps({\n            'definition': {\n                'id': C.DEFAULT_AZP_DEFINITION,\n            },\n            'reason': 'pullRequest',\n            'sourceBranch': 'refs/pull/%s/merge' % self._iw.number,\n            'repository': {'type': 'github'},\n            'triggerInfo': {\n                'pr.sourceBranch': self._iw._pr.head.ref,\n                'pr.sourceSha': self._iw._pr.head.sha,\n                'pr.id': self._iw._pr.id,\n                'pr.title': self._iw._pr.title,\n                'pr.number': self._iw._pr.number,\n                'pr.isFork': self._iw.from_fork,\n                'pr.draft': self._iw._pr.draft,\n                'pr.sender.name': self._iw._pr.user.login,\n                'pr.sender.avatarUrl': self._iw._pr.user.avatar_url,\n                'pr.providerId': 'github',\n                'pr.autoCancel': 'true',\n            },\n            'parameters': json.dumps({\n                'system.pullRequest.pullRequestId': self._iw._pr.id,\n                'system.pullRequest.pullRequestNumber': self._iw._pr.number,\n                'system.pullRequest.mergedAt': '',\n                'system.pullRequest.sourceBranch': self._iw._pr.head.ref,\n                'system.pullRequest.targetBranch': self._iw._pr.base.ref,\n                'system.pullRequest.sourceRepositoryUri': 'https://github.com/' + self._iw.repo.repo.full_name ,\n                'system.pullRequest.sourceCommitId': self._iw._pr.head.sha,\n            }),\n        })\n\n        resp = fetch(\n            NEW_BUILD,\n            verb='post',\n            headers=HEADERS,\n            data=data,\n            timeout=30,\n            auth=(C.DEFAULT_AZP_USER, C.DEFAULT_AZP_TOKEN),\n        )\n        if not resp:\n            raise Exception('Unable to POST %r to %r' % (data, NEW_BUILD))\n\n    def rebuild_failed(self, run_id):\n        self.rebuild(run_id, failed_only=True)\n\n    def cancel(self, run_id):\n        if self.state != 'pending':\n            logging.info('Could not cancel CI as it is not running')\n            return\n\n        stages_in_progress = (\n            s['identifier'] for s in self.stages if s['state'] != 'completed'\n        )\n        for stage in stages_in_progress:\n            if stage == 'Summary':\n                continue\n\n            url = STAGE_URL_FMT % (run_id, stage)\n            data = json.dumps({'state': 'cancel'})\n            resp = fetch(\n                url,\n                verb='patch',\n                headers=HEADERS,\n                data=data,\n                timeout=TIMEOUT,\n                auth=(C.DEFAULT_AZP_USER, C.DEFAULT_AZP_TOKEN),\n            )\n\n            if not resp:\n                raise Exception('Unable to PATCH %r to %r' % (data, url))\n\n    def cancel_on_branch(self, branch):\n        # FIXME cancel() should be enough?\n        pass\n"
  },
  {
    "path": "ansibullbot/ci/base.py",
    "content": "from abc import ABCMeta, abstractmethod\n\n\nclass BaseCI(metaclass=ABCMeta):\n    \"\"\"An interface that each CI provider that bot could use must implement.\n    \"\"\"\n\n    name = None\n\n    @property\n    @abstractmethod\n    def state(self):\n        \"\"\"\n\n        :rtype: str or None\n        \"\"\"\n        raise NotImplementedError\n\n    @property\n    @abstractmethod\n    def updated_at(self):\n        \"\"\"Timestamp of last job completion for given PR number.\n\n        :rtype: datetime.datetime\n        \"\"\"\n        raise NotImplementedError\n\n    @abstractmethod\n    def get_last_full_run_date(self):\n        \"\"\"Timestamp of last full run. Maps partial re-runs back to their full\n        run.\n\n        :rtype: datetime.datetime\n        \"\"\"\n        raise NotImplementedError\n\n    @abstractmethod\n    def get_test_results(self):\n        \"\"\"Get test results of given run_id and figure out a ci_verified out\n        of it.\n\n        :rtype: tuple(bool, list)\n        \"\"\"\n        raise NotImplementedError\n\n    @abstractmethod\n    def rebuild(self, run_id, failed_only=False):\n        \"\"\"Rebuild jobs. All by default, optionally failed jobs only.\n\n        :type run_id: str\n        :type failed_only: bool\n        \"\"\"\n        raise NotImplementedError\n\n    def rebuild_failed(self, run_id):\n        self.rebuild(run_id, failed_only=True)\n\n    @abstractmethod\n    def cancel(self, run_id):\n        \"\"\"Cancel jobs.\n\n        :type run_id: str\n        \"\"\"\n        raise NotImplementedError\n\n    @abstractmethod\n    def cancel_on_branch(self, branch):\n        \"\"\"Cancel all jobs on a given branch.\n\n        :type branch: str\n        \"\"\"\n        raise NotImplementedError\n"
  },
  {
    "path": "ansibullbot/constants.py",
    "content": "# This file is part of Ansible\n#\n# Ansible is free software: you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# Ansible is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with Ansible. If not, see <http://www.gnu.org/licenses/>.\n#\n# The following code is a derivative work of the code from the Ansible project,\n# which is licensed GPLv3. This code therefore is also licensed under the terms\n# of the GNU Public License, version 3.\n\n\nimport configparser\nimport sys\nimport tempfile\nimport os\nimport subprocess\n\n\nfrom ._text_compat import to_text\nfrom .utils.feature_flags import FeatureFlags\n\n\nPROG_NAME = 'ansibullbot'\nBOOL_TRUE = frozenset([\"true\", \"t\", \"y\", \"1\", \"yes\", \"on\"])\n\n\ndef mk_boolean(value):\n    ret = value\n    if not isinstance(value, bool):\n        ret = (to_text(value).lower() in BOOL_TRUE)\n    return ret\n\n\ndef unquote(value):\n    return value.replace('\"', '').replace(\"'\", '')\n\n\ndef shell_expand(path, expand_relative_paths=False):\n    '''\n    shell_expand is needed as os.path.expanduser does not work\n    when path is None, which is the default for ANSIBLE_PRIVATE_KEY_FILE\n    '''\n    if path:\n        path = os.path.expanduser(os.path.expandvars(path))\n        if expand_relative_paths and not path.startswith('/'):\n            # paths are always 'relative' to the config?\n            if 'CONFIG_FILE' in globals():\n                CFGDIR = os.path.dirname(CONFIG_FILE)\n                path = os.path.join(CFGDIR, path)\n            path = os.path.abspath(path)\n    return path\n\n\ndef get_config(p, section, key, env_var, default,\n               value_type=None, expand_relative_paths=False):\n    ''' return a configuration variable with casting\n\n    :arg p: A ConfigParser object to look for the configuration in\n    :arg section: A section of the ini config to examine.\n    :arg key: The config key to get this config from\n    :arg env_var: An Environment variable to check for the config var.  If\n        this is set to None then no environment variable will be used.\n    :arg default: A default value to assign to the config var.\n    :kwarg value_type: The type of the value.  This can be any of:\n        :boolean: sets the value to a True or False value\n        :integer: Sets the value to an integer or raises a ValueType error\n        :float: Sets the value to a float or raises a ValueType error\n        :list: Treats the value as a comma separated list.  Split the value\n            and return it as a python list.\n        :none: Sets the value to None\n        :path: Expands any environment variables and tilde's in the value.\n        :tmp_path: Create a unique temporary directory inside of the directory\n            specified by value and return its path.\n        :pathlist: Treat the value as a typical PATH string.  (On POSIX, this\n            means colon separated strings.)  Split the value and then expand\n            each part for environment variables and tildes.\n    :kwarg expand_relative_paths: for pathlist and path types, if this is set\n        to True then also change any relative paths into absolute paths.  The\n        default is False.\n    '''\n    value = _get_config(p, section, key, env_var, default)\n    if value_type == 'boolean':\n        value = mk_boolean(value)\n\n    elif value:\n        if value_type == 'integer' or value_type == 'int':\n            if value != 'None':\n                value = int(value)\n            else:\n                value = None\n\n        elif value_type == 'float':\n            value = float(value)\n\n        elif value_type == 'list':\n            if isinstance(value, str):\n                value = [x.strip() for x in value.split(',')]\n\n        elif value_type == 'none':\n            if value == \"None\":\n                value = None\n\n        elif value_type == 'path':\n            value = shell_expand(\n                value,\n                expand_relative_paths=expand_relative_paths\n            )\n\n        elif value_type == 'tmppath':\n            value = shell_expand(value)\n            if not os.path.exists(value):\n                os.makedirs(value)\n            prefix = '%s-local-%s' % (PROG_NAME, os.getpid())\n            value = tempfile.mkdtemp(prefix=prefix, dir=value)\n\n        elif value_type == 'pathlist':\n            if isinstance(value, str):\n                value = [\n                    shell_expand(\n                        x,\n                        expand_relative_paths=expand_relative_paths\n                    ) for x in value.split(os.pathsep)]\n\n        elif isinstance(value, str):\n            value = unquote(value)\n\n    if value_type in ['integer', 'int', 'float', 'boolean']:\n        return value\n    else:\n        return to_text(value, errors='surrogate_or_strict', nonstring='passthru')\n\n\ndef _get_config(p, section, key, env_var, default):\n    ''' helper function for get_config '''\n    value = default\n\n    if p is not None:\n        try:\n            value = p.get(section, key, raw=True)\n        except:\n            pass\n\n    if env_var is not None:\n        env_value = os.environ.get(env_var, None)\n        if env_value is not None:\n            value = env_value\n\n    return to_text(value, errors='surrogate_or_strict', nonstring='passthru')\n\n\ndef load_config_file():\n    ''' Load Config File order(first found is used):\n        ENV,CWD,HOME, /etc/ansible '''\n\n    p = configparser.ConfigParser()\n\n    path0 = os.getenv(\"%s_CONFIG\" % PROG_NAME.upper(), None)\n    if path0 is not None:\n        path0 = os.path.expanduser(path0)\n        if os.path.isdir(path0):\n            path0 += \"/%s.cfg\" % PROG_NAME\n    try:\n        path1 = os.getcwd() + \"/%s.cfg\" % PROG_NAME\n    except OSError:\n        path1 = None\n    path2 = os.path.expanduser(\"~/.%s.cfg\" % PROG_NAME)\n    path3 = \"/etc/%s/%s.cfg\" % (PROG_NAME, PROG_NAME)\n\n    for path in [path0, path1, path2, path3]:\n        if path is not None and os.path.exists(path):\n            try:\n                p.read(path)\n            except configparser.Error as e:\n                print(f\"Error reading config file: \\n{e}\")\n                sys.exit(1)\n            return p, path\n    return None, ''\n\n\np, CONFIG_FILE = load_config_file()\n\n# sections in config file\nDEFAULTS = 'defaults'\nAZP = 'azp'\n\n\n# who dat?\nDEFAULT_BOT_NAMES = get_config(\n    p,\n    DEFAULTS,\n    'bot_names',\n    '%s_DEBUG' % PROG_NAME.upper(),\n    ['ansibot', 'ansibotdev', 'ansibullbot'],\n    value_type='list'\n)\n\n# the sqlite database unc\nDEFAULT_DATABASE_UNC = get_config(\n    p,\n    DEFAULTS,\n    'database_unc',\n    '%s_DEBUG' % PROG_NAME.upper(),\n    'sqlite:///~/.ansibullbot/ansibullbot.db',\n    value_type='string'\n)\n\n# Use or don't use the ratelimiting decorator\nDEFAULT_RATELIMIT = get_config(\n    p,\n    DEFAULTS,\n    'ratelimit',\n    '%s_RATELIMIT' % PROG_NAME.upper(),\n    True,\n    value_type='boolean'\n)\n\nDEFAULT_GITHUB_URL = get_config(\n    p,\n    DEFAULTS,\n    'github_url',\n    '%s_GITHUB_URL' % PROG_NAME.upper(),\n    'https://api.github.com',\n    value_type='string'\n)\n\nDEFAULT_GITHUB_USERNAME = get_config(\n    p,\n    DEFAULTS,\n    'github_username',\n    '%s_GITHUB_USERNAME' % PROG_NAME.upper(),\n    '',\n    value_type='string'\n)\n\nDEFAULT_GITHUB_PASSWORD = get_config(\n    p,\n    DEFAULTS,\n    'github_password',\n    '%s_GITHUB_PASSWORD' % PROG_NAME.upper(),\n    '',\n    value_type='string'\n)\n\nDEFAULT_GITHUB_TOKEN = get_config(\n    p,\n    DEFAULTS,\n    'github_token',\n    '%s_GITHUB_TOKEN' % PROG_NAME.upper(),\n    '',\n    value_type='string'\n)\n\nDEFAULT_GITHUB_REPOS = get_config(\n    p,\n    DEFAULTS,\n    'github_repos',\n    '%s_GITHUB_REPOS' % PROG_NAME.upper(),\n    ['ansible/ansible'],\n    value_type='list'\n)\n\n# The maintainer teams including the organization where the team is located\nDEFAULT_GITHUB_MAINTAINERS = get_config(\n    p,\n    DEFAULTS,\n    'github_maintainers',\n    '%s_GITHUB_MAINTAINERS' % PROG_NAME.upper(),\n    ['ansible/ansible-commit'],\n    value_type='list'\n)\n\nDEFAULT_CI_PROVIDER = get_config(\n    p,\n    DEFAULTS,\n    'ci_provider',\n    '%s_CI_PROVIDER' % PROG_NAME.upper(),\n    'azp',\n    value_type='string'\n)\n\nDEFAULT_WAITING_ON_CONTRIBUTOR_EXPIRE = get_config(\n    p,\n    DEFAULTS,\n    'waiting_on_contributor_expire',\n    '%s_WAITING_ON_CONTRIBUTOR_EXPIRE' % PROG_NAME.upper(),\n    365,\n    value_type='int'\n)\n\nDEFAULT_NEEDS_INFO_WARN = get_config(\n    p,\n    'needs_info',\n    'warn',\n    '%s_NEEDS_INFO_WARN' % PROG_NAME.upper(),\n    30,\n    value_type='int'\n)\n\nDEFAULT_NEEDS_INFO_EXPIRE = get_config(\n    p,\n    'needs_info',\n    'expire',\n    '%s_NEEDS_INFO_EXPIRE' % PROG_NAME.upper(),\n    60,\n    value_type='int'\n)\n\n# How many days till a re-triage is forced\nDEFAULT_STALE_WINDOW = get_config(\n    p,\n    DEFAULTS,\n    'stale_window',\n    '%s_STALE_WINDOW' % PROG_NAME.upper(),\n    7,\n    value_type='int'\n)\n\n\n# Pickle the issue objects?\nDEFAULT_PICKLE_ISSUES = get_config(\n    p,\n    DEFAULTS,\n    'requests_cache',\n    '%s_PICKLE_ISSUES' % PROG_NAME.upper(),\n    True,\n    value_type='boolean'\n)\n\n###########################################\n#   AZURE PIPELINES\n###########################################\n\nDEFAULT_AZP_ORG = get_config(\n    p,\n    AZP,\n    'org',\n    '%s_AZP_ORG' % PROG_NAME.upper(),\n    '',\n    value_type='string'\n)\n\nDEFAULT_AZP_PROJECT = get_config(\n    p,\n    AZP,\n    'project',\n    '%s_AZP_PROJECT' % PROG_NAME.upper(),\n    '',\n    value_type='string'\n)\n\nDEFAULT_AZP_USER = get_config(\n    p,\n    AZP,\n    'user',\n    '%s_AZP_USER' % PROG_NAME.upper(),\n    '',\n    value_type='string'\n)\n\nDEFAULT_AZP_TOKEN = get_config(\n    p,\n    AZP,\n    'token',\n    '%s_AZP_TOKEN' % PROG_NAME.upper(),\n    '',\n    value_type='string'\n)\n\nDEFAULT_AZP_DEFINITION = get_config(\n    p,\n    AZP,\n    'definition',\n    '%s_AZP_DEFINITION' % PROG_NAME.upper(),\n    None,\n    value_type='int'\n)\n\n###########################################\n#   METADATA RECEIVER\n###########################################\n\nDEFAULT_RECEIVER_HOST = get_config(\n    p,\n    'receiver',\n    'host',\n    '%s_RECEIVER_HOST' % PROG_NAME.upper(),\n    None,\n    value_type='str'\n)\n\nDEFAULT_RECEIVER_PORT = get_config(\n    p,\n    'receiver',\n    'port',\n    '%s_RECEIVER_PORT' % PROG_NAME.upper(),\n    None,\n    value_type='int'\n)\n\n###########################################\n#   SENTRY ERROR REPORTING\n###########################################\n# Ref:\n# https://docs.sentry.io/error-reporting/configuration/?platform=python\n###########################################\n\nSENTRY_SECTION = 'sentry'\nSENTRY_ENV_VAR_TMPL = 'SENTRY_{var_name}'\n\nDEFAULT_SENTRY_DSN = get_config(\n    p,\n    SENTRY_SECTION,\n    'dsn',\n    SENTRY_ENV_VAR_TMPL.format(var_name='DSN'),\n    None,\n    value_type='string'\n)\n\nDEFAULT_SENTRY_ENV = get_config(\n    p,\n    SENTRY_SECTION,\n    'env',\n    SENTRY_ENV_VAR_TMPL.format(var_name='ENV'),\n    'prod',\n    value_type='string'\n)\n\nDEFAULT_SENTRY_TRACE = get_config(\n    p,\n    SENTRY_SECTION,\n    'trace',\n    SENTRY_ENV_VAR_TMPL.format(var_name='TRACE'),\n    False,\n    value_type='boolean'\n)\n\nDEFAULT_SENTRY_SERVER_NAME = get_config(\n    p,\n    SENTRY_SECTION,\n    'server_name',\n    SENTRY_ENV_VAR_TMPL.format(var_name='SERVER_NAME'),\n    'ansibullbot',\n    value_type='string'\n)\n\n\ndef get_ansibullbot_version():\n    \"\"\"Return currently checked out Git revision.\"\"\"\n    try:\n        return to_text(subprocess.check_output(('git', 'rev-parse', 'HEAD')).strip())\n    except subprocess.CalledProcessError:\n        return 'unknown'\n\n\nANSIBULLBOT_VERSION = get_ansibullbot_version()\n\n\nfeatures = FeatureFlags.from_config('features.yaml')\n"
  },
  {
    "path": "ansibullbot/defaulttriager.py",
    "content": "# This file is part of Ansible\n#\n# Ansible is free software: you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# Ansible is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with Ansible. If not, see <http://www.gnu.org/licenses/>.\n\n\nimport abc\nimport argparse\nimport datetime\nimport json\nimport logging\nimport os\nimport sys\nimport time\nimport typing as t\n\nimport requests\nfrom jinja2 import Environment, FileSystemLoader\n\nfrom ansibullbot import constants as C\nfrom ansibullbot.utils.github import RateLimited\nfrom ansibullbot.utils.gh_gql_client import GithubGraphQLClient\nfrom ansibullbot.utils.git_tools import GitRepoWrapper\nfrom ansibullbot.utils.logs import set_logger\nfrom ansibullbot.utils.systemtools import run_command\nfrom ansibullbot.utils.timetools import strip_time_safely\nfrom ansibullbot.ghapiwrapper import GithubWrapper, RepoWrapper\n\n\nbasepath = os.path.dirname(__file__).split('/')\nlibindex = basepath[::-1].index('ansibullbot')\nlibindex = (len(basepath) - 1) - libindex\nbasepath = '/'.join(basepath[0:libindex])\n\n_environment = Environment(\n    loader=FileSystemLoader(os.path.join(basepath, 'templates')),\n    trim_blocks=True\n)\n\n\nclass DefaultActions:\n    def __init__(self):\n        self.newlabel = []\n        self.unlabel = []\n        self.comments = []\n        self.uncomment = []\n        self.close = False\n        self.open = False\n        self.merge = False\n\n    def count(self):\n        \"\"\" Return the number of actions that are to be performed \"\"\"\n        count = 0\n        for value in vars(self).values():\n            if value:\n                if isinstance(value, bool):\n                    count += 1\n                else:\n                    count += len(value)\n\n        return count\n\n\ndef render_boilerplate(tvars: t.Dict[str, t.Any], boilerplate: str) -> str:\n    return _environment.get_template(f'{boilerplate}.j2').render(**tvars)\n\n\nclass DefaultTriager:\n    \"\"\"\n    How to use:\n    1. Create a new class which inherits from DefaultTriager\n    2. Implement 'Triager.run(self)' method:\n        - iterate over issues/pull requests\n        - for each issue\n        1. create 'actions = DefaultActions()'\n        2. define which action(s) should be done updating 'actions' instance\n        3. call parent 'apply_actions' methods: 'DefaultTriager.apply_actions(iw, actions)'\n    3. Run:\n    def main():\n        Triager().start()\n    \"\"\"\n    CLOSING_LABELS = []\n\n    def __init__(self, args=None):\n        parser = self.create_parser()\n        self.args = parser.parse_args(args)\n\n        set_logger(debug=self.args.debug, logfile=self.args.logfile)\n        logging.info('starting bot')\n\n        self.cachedir_base = os.path.expanduser(self.args.cachedir_base)\n        self.repos = {}\n\n        # resume is just an overload for the start-at argument\n        resume = self.get_resume()\n        if resume:\n            if self.args.sort == 'desc':\n                self.args.start_at = resume['number'] - 1\n            else:\n                self.args.start_at = resume['number'] + 1\n\n        logging.info('creating api wrapper')\n        self.ghw = GithubWrapper(\n            url=C.DEFAULT_GITHUB_URL,\n            user=C.DEFAULT_GITHUB_USERNAME,\n            passw=C.DEFAULT_GITHUB_PASSWORD,\n            token=C.DEFAULT_GITHUB_TOKEN,\n            cachedir=self.cachedir_base\n        )\n\n        logging.info('creating graphql client')\n        self.gqlc = GithubGraphQLClient(\n            C.DEFAULT_GITHUB_TOKEN,\n            server=C.DEFAULT_GITHUB_URL\n        )\n\n        self._maintainer_team = None\n\n    @property\n    def maintainer_team(self):\n        # Note: this assumes that the token used by the bot has access to check\n        # team privileges across potentially more than one organization\n        if self._maintainer_team is None:\n            self._maintainer_team = []\n            teams = C.DEFAULT_GITHUB_MAINTAINERS\n            for team in teams:\n                _org, _team = team.split('/')\n                self._maintainer_team.extend(self.gqlc.get_members(_org, _team))\n        return sorted(set(self._maintainer_team).difference(C.DEFAULT_BOT_NAMES))\n\n    @classmethod\n    def create_parser(cls):\n        parser = argparse.ArgumentParser()\n        parser.add_argument(\"--botmetafile\", type=str, default=None, help=\"Use this filepath for botmeta instead of from the repo\")\n        parser.add_argument(\"--cachedir\", type=str, dest='cachedir_base', default='~/.ansibullbot/cache')\n        parser.add_argument(\"--daemonize\", action=\"store_true\", help=\"run in a continuos loop\")\n        parser.add_argument(\"--daemonize_interval\", type=int, default=(30 * 60), help=\"seconds to sleep between loop iterations\")\n        parser.add_argument(\"--debug\", \"-d\", action=\"store_true\", help=\"Debug output\")\n        parser.add_argument(\"--dry-run\", \"-n\", action=\"store_true\", help=\"Don't make any changes\")\n        parser.add_argument(\"--dump_actions\", action=\"store_true\", help=\"serialize the actions to disk [/tmp/actions]\")\n        parser.add_argument(\"--force\", \"-f\", action=\"store_true\", help=\"Do not ask questions\")\n        parser.add_argument(\"--logfile\", type=str, help=\"Send logging to this file\")\n        parser.add_argument(\"--ignore_state\", action=\"store_true\", help=\"Do not skip processing closed issues\")\n        parser.add_argument(\"--last\", type=int, help=\"triage the last N issues or PRs\")\n        parser.add_argument(\"--only_closed\", action=\"store_true\", help=\"Triage closed issues|prs only\")\n        parser.add_argument(\"--only_issues\", action=\"store_true\", help=\"Triage issues only\")\n        parser.add_argument(\"--only_prs\", action=\"store_true\", help=\"Triage pullrequests only\")\n        parser.add_argument(\"--pause\", \"-p\", action=\"store_true\", dest=\"always_pause\", help=\"Always pause between prs|issues\")\n        parser.add_argument(\"--pr\", \"--id\", type=str, help=\"Triage only the specified pr|issue (separated by commas)\")\n        parser.add_argument(\"--resume\", action=\"store_true\", dest=\"resume_enabled\", help=\"pickup right after where the bot last stopped\")\n        parser.add_argument(\"--repo\", \"-r\", type=str, help=\"Github repo to triage (defaults to all)\")\n        parser.add_argument(\"--skiprepo\", action='append', help=\"Github repo to skip triaging\")\n        parser.add_argument(\"--start-at\", type=int, help=\"Start triage at the specified pr|issue\")\n        parser.add_argument(\"--sort\", default='desc', choices=['asc', 'desc'], help=\"Direction to sort issues [desc=9-0 asc=0-9]\")\n        return parser\n\n    def start(self):\n        if self.args.daemonize:\n            logging.info('starting daemonize loop')\n            while True:\n                self.run()\n                interval = self.args.daemonize_interval\n                logging.info('sleep %ss (%sm)' % (interval, interval / 60))\n                time.sleep(interval)\n        else:\n            logging.info('starting single run')\n            self.run()\n        logging.info('stopping bot')\n\n    @abc.abstractmethod\n    def run(self):\n        pass\n\n    def apply_actions(self, iw, actions):\n        action_meta = {'REDO': False}\n\n        if actions.count() > 0:\n            if self.args.dump_actions:\n                self.dump_action_dict(iw, actions.__dict__)\n\n            if self.args.dry_run:\n                print(\"Dry-run specified, skipping execution of actions\")\n            else:\n                if self.args.force:\n                    print(\"Running actions non-interactive as you forced.\")\n                    self.execute_actions(iw, actions)\n                    return action_meta\n                cont = input(\"Take recommended actions (y/N/a/R/DEBUG)? \")\n                if cont in ('a', 'A'):\n                    sys.exit(0)\n                if cont in ('Y', 'y'):\n                    self.execute_actions(iw, actions)\n                if cont in ('r', 'R'):\n                    action_meta['REDO'] = True\n                if cont == 'DEBUG':\n                    # put the user into a breakpoint to do live debug\n                    action_meta['REDO'] = True\n                    import epdb; epdb.st()\n        elif self.args.always_pause:\n            print(\"Skipping, but pause.\")\n            cont = input(\"Continue (Y/n/a/R/DEBUG)? \")\n            if cont in ('a', 'A', 'n', 'N'):\n                sys.exit(0)\n            elif cont in ('r', 'R'):\n                action_meta['REDO'] = True\n            elif cont == 'DEBUG':\n                # put the user into a breakpoint to do live debug\n                import epdb; epdb.st()\n                action_meta['REDO'] = True\n        else:\n            print(\"Skipping.\")\n\n        # let the upper level code redo this issue\n        return action_meta\n\n    def execute_actions(self, iw, actions):\n        \"\"\"Turns the actions into API calls\"\"\"\n        for commentid in actions.uncomment:\n            iw.remove_comment_by_id(commentid)\n\n        for comment in actions.comments:\n            logging.info(\"acton: comment - \" + comment)\n            iw.add_comment(comment=comment)\n\n        if actions.close:\n            for newlabel in actions.newlabel:\n                if newlabel in self.CLOSING_LABELS:\n                    logging.info('action: label - ' + newlabel)\n                    iw.add_label(label=newlabel)\n\n            for unlabel in actions.unlabel:\n                logging.info('action: unlabel - ' + unlabel)\n                iw.remove_label(label=unlabel)\n\n            logging.info('action: close')\n            iw.instance.edit(state='closed')\n\n        else:\n            for unlabel in actions.unlabel:\n                logging.info('action: unlabel - ' + unlabel)\n                iw.remove_label(label=unlabel)\n            for newlabel in actions.newlabel:\n                logging.info('action: label - ' + newlabel)\n                iw.add_label(label=newlabel)\n\n            if actions.merge:\n                iw.merge()\n\n    def dump_action_dict(self, issue, actions):\n        \"\"\"Serialize the action dict to disk for quick(er) debugging\"\"\"\n        fn = os.path.join('/tmp', 'actions', issue.repo_full_name, str(issue.number) + '.json')\n        dn = os.path.dirname(fn)\n        if not os.path.isdir(dn):\n            os.makedirs(dn)\n\n        logging.info(f'dumping {fn}')\n        with open(fn, 'w') as f:\n            f.write(json.dumps(actions, indent=2, sort_keys=True))\n\n    def get_resume(self):\n        \"\"\"Returns a dict with the last issue repo+number processed\"\"\"\n        if self.args.pr or not self.args.resume_enabled:\n            return\n\n        resume_file = os.path.join(self.cachedir_base, 'resume.json')\n        if not os.path.isfile(resume_file):\n            logging.error('Resume: %r not found', resume_file)\n            return None\n\n        logging.debug('Resume: read %r', resume_file)\n        with open(resume_file, 'r', encoding='utf-8') as f:\n            data = json.loads(f.read())\n        return data\n\n    def set_resume(self, repo, number):\n        if self.args.pr or not self.args.resume_enabled:\n            return\n\n        data = {\n            'repo': repo,\n            'number': number\n        }\n        resume_file = os.path.join(self.cachedir_base, 'resume.json')\n        with open(resume_file, 'w', encoding='utf-8') as f:\n            json.dump(data, f)\n\n    def eval_pr_param(self, pr):\n        \"\"\"PR/ID can be a number, numberlist, script, jsonfile, or url\"\"\"\n        if isinstance(pr, list):\n            pass\n\n        elif pr.isdigit():\n            pr = int(pr)\n\n        elif pr.startswith('http'):\n            rr = requests.get(pr)\n            numbers = rr.json()\n            pr = numbers[:]\n\n        elif os.path.isfile(pr) and not os.access(pr, os.X_OK):\n            with open(pr) as f:\n                numbers = json.loads(f.read())\n            pr = numbers[:]\n\n        elif os.path.isfile(pr) and os.access(pr, os.X_OK):\n            # allow for scripts when trying to target spec issues\n            logging.info('executing %s' % pr)\n            (rc, so, se) = run_command(pr)\n            numbers = json.loads(str(so))\n            if numbers:\n                if isinstance(numbers[0], dict) and 'number' in numbers[0]:\n                    numbers = [x['number'] for x in numbers]\n                else:\n                    numbers = [int(x) for x in numbers]\n            logging.info(\n                '%s numbers after running script' % len(numbers)\n            )\n            pr = numbers[:]\n\n        elif ',' in pr:\n            numbers = [int(x) for x in pr.split(',')]\n            pr = numbers[:]\n\n        if not isinstance(pr, list):\n            pr = [pr]\n\n        return pr\n\n    def load_meta(self, reponame: str, number: str) -> t.Dict[str, t.Any]:\n        mfile = os.path.join(\n            self.cachedir_base,\n            reponame,\n            'issues',\n            number,\n            'meta.json'\n        )\n        meta = {}\n        try:\n            with open(mfile, 'rb') as f:\n                meta = json.load(f)\n        except ValueError as e:\n            logging.error(\"Could not load json from '%s' because: '%s'. Removing the file...\", mfile, e)\n            os.remove(mfile)\n        except OSError:\n            pass\n        return meta\n\n    def get_stale_numbers(self, reponame: str, issue_summaries: t.Dict[str, t.Dict[str, t.Any]]) -> t.List[int]:\n        stale = []\n        for summary in issue_summaries.values():\n            number = summary['number']\n            if number in stale:\n                continue\n            if summary['state'] == 'closed':\n                continue\n\n            if not (meta := self.load_meta(reponame, str(number))):\n                stale.append(number)\n                continue\n\n            days_stale = (datetime.datetime.now() - strip_time_safely(meta['time'])).days\n            if days_stale > C.DEFAULT_STALE_WINDOW:\n                stale.append(number)\n\n        stale = sorted(stale)\n        if 10 >= len(stale) > 0:\n            logging.info('stale: %s' % stale)\n\n        return stale\n\n    @RateLimited\n    def _collect_repo(self, repo, issuenums=None):\n        \"\"\"Collect issues for an individual repo\"\"\"\n        logging.info('getting repo obj for %s' % repo)\n        repo_obj = RepoWrapper(self.ghw.gh, repo, cachedir=self.cachedir_base)\n\n        if repo not in self.repos:\n            gitrepo = GitRepoWrapper(\n                cachedir=self.cachedir_base,\n                repo=f'https://github.com/{repo}',\n                commit=self.args.ansible_commit,\n            )\n            self.repos[repo] = {\n                'repo': repo_obj,\n                'issues': [],\n                'since': None,\n                'stale': [],\n                'loopcount': 0,\n                'labels': [l.name for l in repo_obj.labels],\n                'gitrepo': gitrepo,\n            }\n        else:\n            # force a clean repo object to limit caching problems\n            logging.info('updating repo')\n            self.repos[repo]['repo'] = repo_obj\n\n            logging.info('updating checkout')\n            self.repos[repo]['gitrepo'].update()\n\n            # clear the issues\n            self.repos[repo]['issues'] = {}\n            # increment the loopcount\n            self.repos[repo]['loopcount'] += 1\n\n        logging.info('getting issue objs for %s' % repo)\n        issue_summaries = {}\n        if issuenums and len(issuenums) <= 10:\n            for num in issuenums:\n                for object_type in ('pullRequest', 'issue'):\n                    node = self.gqlc.get_summary(repo, object_type, num)\n                    if node is not None:\n                        issue_summaries[str(num)] = node\n                        break\n        else:\n            issue_summaries = self.gqlc.get_issue_summaries(repo)\n\n        issuecache = {}\n        numbers = [int(x) for x in issue_summaries.keys()]\n        if issuenums:\n            numbers = set(numbers)\n            numbers.intersection_update(issuenums)\n            numbers = list(numbers)\n        logging.info('%s known numbers' % len(numbers))\n\n        if self.args.daemonize:\n            if not self.repos[repo]['since']:\n                ts = [\n                    x[1]['updated_at'] for x in\n                    issue_summaries.items()\n                    if x[1]['updated_at']\n                ]\n                ts += [\n                    x[1]['created_at'] for x in\n                    issue_summaries.items()\n                    if x[1]['created_at']\n                ]\n                ts = sorted(set(ts))\n                if ts:\n                    self.repos[repo]['since'] = ts[-1]\n            else:\n                since = strip_time_safely(self.repos[repo]['since'])\n                api_since = self.repos[repo]['repo'].get_issues(since=since)\n\n                numbers = []\n                for x in api_since:\n                    numbers.append(x.number)\n                    issuecache[x.number] = x\n\n                numbers = sorted({int(n) for n in numbers})\n                logging.info(\n                    '%s numbers after [api] since == %s' %\n                    (len(numbers), since)\n                )\n\n                for k, v in issue_summaries.items():\n                    if v['updated_at'] is None:\n                        # issue is closed and was never processed\n                        continue\n\n                    if v['updated_at'] > self.repos[repo]['since']:\n                        numbers.append(k)\n\n                numbers = sorted({int(n) for n in numbers})\n                logging.info(\n                    '%s numbers after [www] since == %s' %\n                    (len(numbers), since)\n                )\n\n        if self.args.start_at and self.repos[repo]['loopcount'] == 0:\n            numbers = [x for x in numbers if x <= self.args.start_at]\n            logging.info('%s numbers after start-at' % len(numbers))\n\n        # Get stale numbers if not targeting\n        if self.args.daemonize and self.repos[repo]['loopcount'] > 0:\n            logging.info('checking for stale numbers')\n            self.repos[repo]['stale'] = self.get_stale_numbers(repo, issue_summaries)\n            numbers.extend(self.repos[repo]['stale'])\n            numbers = sorted(set(numbers))\n            logging.info('%s numbers after stale check' % len(numbers))\n\n        ################################################################\n        # PRE-FILTERING TO PREVENT EXCESSIVE API CALLS\n        ################################################################\n\n        if not self.args.ignore_state:\n            issues_state = 'closed' if self.args.only_closed else 'open'\n            numbers = [\n                x for x in numbers\n                if issue_summaries.get(str(x), {}).get('state') == issues_state\n            ]\n            logging.info('%s numbers after checking state' % len(numbers))\n\n        if self.args.only_issues:\n            numbers = [\n                x for x in numbers\n                if issue_summaries[str(x)]['type'] == 'issue'\n            ]\n            logging.info('%s numbers after checking type' % len(numbers))\n        elif self.args.only_prs:\n            numbers = [\n                x for x in numbers\n                if issue_summaries[str(x)]['type'] == 'pullrequest'\n            ]\n            logging.info('%s numbers after checking type' % len(numbers))\n\n        numbers = sorted({int(x) for x in numbers})\n        if self.args.sort == 'desc':\n            numbers = [x for x in reversed(numbers)]\n\n        if self.args.last and len(numbers) > self.args.last:\n            numbers = numbers[0 - self.args.last:]\n\n        self.repos[repo]['numbers'] = numbers\n        self.repos[repo]['issuecache'] = issuecache\n        self.repos[repo]['summaries'] = issue_summaries\n\n        logging.info('getting repo objs for %s complete' % repo)\n\n    def collect_repos(self):\n        \"\"\"Populate the local cache of repos\"\"\"\n        logging.info('start collecting repos')\n        for repo in C.DEFAULT_GITHUB_REPOS:\n            # skip repos based on args\n            if self.args.repo and self.args.repo != repo:\n                continue\n            if self.args.skiprepo:\n                if repo in self.args.skiprepo:\n                    continue\n\n            if self.args.pr:\n                numbers = self.eval_pr_param(self.args.pr)\n                self._collect_repo(repo, issuenums=numbers)\n            else:\n                self._collect_repo(repo)\n        logging.info('finished collecting issues')\n"
  },
  {
    "path": "ansibullbot/exceptions.py",
    "content": "class LabelWafflingError(Exception):\n    \"\"\"Label has been added/removed too many times\"\"\"\n\n\nclass RateLimitError(Exception):\n    \"\"\"Used to trigger the ratelimiting decorator\"\"\"\n\n\nclass NoCIError(Exception):\n    \"\"\"No CI results found\"\"\""
  },
  {
    "path": "ansibullbot/ghapiwrapper.py",
    "content": "import logging\nimport os\nimport pickle\nimport shutil\nfrom datetime import datetime\n\nimport requests\nfrom github import Github\n\nimport ansibullbot.constants as C\n\nfrom ansibullbot.utils.github import RateLimited\nfrom ansibullbot.exceptions import RateLimitError\n\n\nHEADERS = [\n    'application/json',\n    'application/vnd.github.mockingbird-preview',\n    'application/vnd.github.sailor-v-preview+json',\n    'application/vnd.github.starfox-preview+json',\n    'application/vnd.github.squirrel-girl-preview',\n    'application/vnd.github.v3+json',\n]\n\n\nclass GithubWrapper:\n    def __init__(self, url=None, user=None, passw=None, token=None, cachedir='~/.ansibullbot/cache'):\n        self.gh = self._connect(url, user, passw, token)\n        self.token = token\n        self.cachedir = os.path.expanduser(cachedir)\n        self.cached_requests_dir = os.path.join(self.cachedir, 'cached_requests')\n\n    @RateLimited\n    def _connect(self, url, user, passw, token):\n        \"\"\"Connects to GitHub's API\"\"\"\n        if token:\n            return Github(base_url=url, login_or_token=token)\n        else:\n            return Github(\n                base_url=url,\n                login_or_token=user,\n                password=passw\n            )\n\n    @RateLimited\n    def get_request(self, url):\n        '''Get an arbitrary API endpoint'''\n\n        headers = {\n            'Accept': ','.join(HEADERS),\n            'Authorization': 'Bearer %s' % self.token,\n        }\n\n        rr = requests.get(url, headers=headers)\n        data = rr.json()\n\n        # handle ratelimits ...\n        if isinstance(data, dict) and data.get('message'):\n            if data['message'].lower().startswith('api rate limit exceeded'):\n                raise RateLimitError()\n\n        # pagination\n        if hasattr(rr, 'links') and rr.links and rr.links.get('next'):\n            _data = self.get_request(rr.links['next']['url'])\n            if isinstance(data, list):\n                data += _data\n            elif isinstance(data, dict):\n                data.update(_data)\n\n        return data\n\n\nclass RepoWrapper:\n    def __init__(self, gh, repo_path, cachedir='~/.ansibullbot/cache'):\n        self.gh = gh\n        self.cachedir = os.path.join(os.path.expanduser(cachedir), repo_path)\n\n        self._assignees = False\n        self._labels = False\n        self.repo = self.get_repo(repo_path)\n\n    def has_in_assignees(self, login):\n        logins = [x.login for x in self.assignees]\n        return login in logins\n\n    @RateLimited\n    def get_repo(self, repo_path):\n        logging.getLogger('github.Requester').setLevel(logging.INFO)\n        repo = self.gh.get_repo(repo_path)\n        return repo\n\n    @RateLimited\n    def get_issue(self, number):\n        while True:\n            try:\n                issue = self.load_issue(number)\n                if issue and C.DEFAULT_GITHUB_TOKEN in issue._requester._Requester__authorizationHeader:\n                    if issue.update():\n                        self.save_issue(issue)\n                else:\n                    issue = self.repo.get_issue(number)\n                    self.save_issue(issue)\n                break\n            except UnicodeDecodeError:\n                # https://github.com/ansible/ansibullbot/issues/610\n                logging.warning('cleaning cache for %s' % number)\n                shutil.rmtree(os.path.join(self.cachedir, 'issues', str(number)))\n\n        return issue\n\n    @RateLimited\n    def get_pullrequest(self, number):\n        pr = self.repo.get_pull(number)\n        return pr\n\n    def is_pr_merged(self, number):\n        try:\n            return self.get_pullrequest(number).merged\n        except Exception as e:\n            logging.debug(e)\n            return False\n\n    @property\n    def labels(self):\n        if self._labels is False:\n            self._labels = self.load_update_fetch('labels')\n        return self._labels\n\n    @property\n    def assignees(self):\n        if self._assignees is False:\n            self._assignees = self.load_update_fetch('assignees')\n        return self._assignees\n\n    def get_issues(self, since=None):\n        if since:\n            return self.repo.get_issues(since=since)\n        else:\n            return self.repo.get_issues()\n\n    def load_issue(self, number):\n        if not C.DEFAULT_PICKLE_ISSUES:\n            return False\n\n        pfile = os.path.join(\n            self.cachedir,\n            'issues',\n            str(number),\n            'issue.pickle'\n        )\n        if os.path.isfile(pfile):\n            with open(pfile, 'rb') as f:\n                try:\n                    issue = pickle.load(f)\n                except TypeError:\n                    return False\n            return issue\n        else:\n            return False\n\n    def save_issue(self, issue):\n        if not C.DEFAULT_PICKLE_ISSUES:\n            return\n\n        cfile = os.path.join(\n            self.cachedir,\n            'issues',\n            str(issue.number),\n            'issue.pickle'\n        )\n        cdir = os.path.dirname(cfile)\n        if not os.path.isdir(cdir):\n            os.makedirs(cdir)\n        logging.debug('dump %s' % cfile)\n        with open(cfile, 'wb') as f:\n            pickle.dump(issue, f)\n\n    @RateLimited\n    def load_update_fetch(self, property_name):\n        '''Fetch a get() property for an object'''\n        edata = None\n        events = []\n        updated = None\n        update = False\n        write_cache = False\n\n        self.repo.update()\n\n        pfile = os.path.join(self.cachedir, '%s.pickle' % property_name)\n        pdir = os.path.dirname(pfile)\n\n        if not os.path.isdir(pdir):\n            os.makedirs(pdir)\n\n        if os.path.isfile(pfile):\n            try:\n                with open(pfile, 'rb') as f:\n                    edata = pickle.load(f)\n            except Exception:\n                update = True\n                write_cache = True\n\n            # check the timestamp on the cache\n            if edata:\n                updated = edata[0]\n                events = edata[1]\n                if updated < self.repo.updated_at:\n                    update = True\n                    write_cache = True\n\n        # pull all events if timestamp is behind or no events cached\n        if update or not events:\n            write_cache = True\n            updated = datetime.utcnow()\n            methodToCall = getattr(self.repo, 'get_' + property_name)\n            events = [x for x in methodToCall()]\n\n        if C.DEFAULT_PICKLE_ISSUES:\n            if write_cache or not os.path.isfile(pfile):\n                # need to dump the pickle back to disk\n                edata = [updated, events]\n                with open(pfile, 'wb') as f:\n                    pickle.dump(edata, f)\n\n        return events\n\n    @RateLimited\n    def get_file_contents(self, filepath):\n        try:\n            return self.repo.get_file_contents(filepath)\n        except Exception:\n            pass\n"
  },
  {
    "path": "ansibullbot/historywrapper.py",
    "content": "import datetime\nimport logging\nimport os\nimport pickle\nfrom collections.abc import Sequence\nfrom operator import itemgetter\n\nimport ansibullbot.constants as C\nfrom ansibullbot.utils.timetools import strip_time_safely\n\n\nclass HistoryWrapper:\n    \"\"\"A tool to ask questions about an issue's history.\n\n    This class will join the events and comments of an issue into\n    an object that allows the user to make basic queries without\n    having to iterate through events manually.\n    \"\"\"\n\n    SCHEMA_VERSION = 1.2\n\n    def __init__(self, events, labels, last_updated, usecache=True, cachedir=None):\n        self.labels = labels\n        self.last_updated = last_updated\n        self.cachedir = cachedir\n\n        self._waffled_labels = None\n        self.cachefile = os.path.join(cachedir, 'history.pickle')\n\n        if usecache:\n            cache = self._load_cache()\n\n            if not self.validate_cache(cache):\n                logging.info('history cache invalidated, rebuilding')\n                self.history = events\n                self._dump_cache()\n            else:\n                logging.info('use cached history')\n                self.history = cache['history']\n        else:\n            self.history = events\n\n        self.history = sorted(self.history, key=itemgetter('created_at'))\n\n    def validate_cache(self, cache):\n        if cache is None:\n            return False\n\n        if not isinstance(cache, dict):\n            return False\n\n        if 'history' not in cache:\n            return False\n\n        if 'updated_at' not in cache:\n            return False\n\n        # use a versioned schema to track changes\n        if not cache.get('version') or cache['version'] < self.SCHEMA_VERSION:\n            logging.info('history cache schema version behind')\n            return False\n\n        if cache['updated_at'] < self.last_updated:\n            logging.info('history cache behind issue')\n            return False\n\n        # FIXME the cache is getting wiped out by cross-refences,\n        #       so keeping this around as a failsafe\n        if len(cache['history']) < (len([x for x in cache['history'] if x['event'] == 'commented']) + len(self.labels)):\n            return False\n\n        # FIXME label events seem to go missing, so force a rebuild\n        if 'needs_info' in self.labels:\n            le = [x for x in cache['history'] if x['event'] == 'labeled' and x['label'] == 'needs_info']\n            if not le:\n                return False\n\n        return True\n\n    def _load_cache(self):\n        if not os.path.isdir(self.cachedir):\n            os.makedirs(self.cachedir)\n        if not os.path.isfile(self.cachefile):\n            logging.info('!%s' % self.cachefile)\n            return\n        try:\n            with open(self.cachefile, 'rb') as f:\n                cachedata = pickle.load(f)\n        except Exception as e:\n            logging.debug(e)\n            logging.info('%s failed to load' % self.cachefile)\n            return\n\n        return cachedata\n\n    def _dump_cache(self):\n        if any(x for x in self.history if not isinstance(x['created_at'], datetime.datetime)):\n            logging.error(self.history)\n            raise AssertionError('found a non-datetime created_at in events data')\n\n        if not os.path.isdir(self.cachedir):\n            os.makedirs(self.cachedir)\n\n        cachedata = {\n            'version': self.SCHEMA_VERSION,\n            'updated_at': self.last_updated,\n            'history': self.history\n        }\n\n        try:\n            with open(self.cachefile, 'wb') as f:\n                pickle.dump(cachedata, f)\n        except Exception as e:\n            logging.error(e)\n            raise\n\n    def merge_commits(self, commits):\n        for xc in commits:\n            event = {'id': xc.sha}\n            try:\n                event['actor'] = getattr(xc.committer, 'login', str(xc.committer))\n            except Exception:\n                # IncompletableObject: 400 \"Returned object contains no URL\"\n                event['actor'] = str(xc.committer)\n            event['created_at'] = xc.commit.committer.date.replace(tzinfo=datetime.timezone.utc)\n            event['event'] = 'committed'\n            event['message'] = xc.commit.message\n            self.history.append(event)\n        self.history = sorted(self.history, key=itemgetter('created_at'))\n\n    def merge_reviews(self, reviews):\n        for review in reviews:\n            event = {}\n\n            # https://github.com/ansible/ansibullbot/issues/1207\n            # \"ghost\" users are deleted users and show up as NoneType\n            if review.get('user') is None:\n                continue\n\n            if review['state'] == 'COMMENTED':\n                event['event'] = 'review_comment'\n            elif review['state'] == 'CHANGES_REQUESTED':\n                event['event'] = 'review_changes_requested'\n            elif review['state'] == 'APPROVED':\n                event['event'] = 'review_approved'\n            elif review['state'] == 'DISMISSED':\n                event['event'] = 'review_dismissed'\n            elif review['state'] == 'PENDING':\n                # ignore pending review\n                continue\n            else:\n                logging.error('unknown review state %s', review['state'])\n                continue\n\n            event['id'] = review['id']\n            event['actor'] = review['user']['login']\n            event['created_at'] = strip_time_safely(review['submitted_at']).replace(tzinfo=datetime.timezone.utc)\n            if 'commit_id' in review:\n                event['commit_id'] = review['commit_id']\n            else:\n                event['commit_id'] = None\n            event['body'] = review.get('body')\n\n            self.history.append(event)\n        self.history = sorted(self.history, key=itemgetter('created_at'))\n\n    def _find_events_by_actor(self, eventname, actor=None, maxcount=1):\n        if actor is not None and not isinstance(actor, Sequence):\n            actor = [actor]\n\n        matching_events = []\n        for event in self.history:\n            if event['event'] == eventname or not eventname:\n                if actor is None:\n                    matching_events.append(event)\n                elif event['actor'] in actor:\n                    matching_events.append(event)\n                if len(matching_events) == maxcount:\n                    break\n\n        return matching_events\n\n    def get_user_comments(self, username):\n        \"\"\"Get all the comments from a user\"\"\"\n        matching_events = self._find_events_by_actor(\n            'commented',\n            username,\n            maxcount=999\n        )\n        comments = [x['body'] for x in matching_events]\n        return comments\n\n    def search_user_comments(self, username, searchterm):\n        \"\"\"Get all the comments from a user\"\"\"\n        matching_events = self._find_events_by_actor(\n            'commented',\n            username,\n            maxcount=999\n        )\n        comments = [x['body'] for x in matching_events if searchterm in x['body'].lower()]\n        return comments\n\n    def get_commands(self, username, command_keys, timestamps=False, uselabels=True):\n        \"\"\"Given a list of phrase keys, return a list of phrases used\"\"\"\n        commands = []\n\n        comments = self._find_events_by_actor(\n            'commented',\n            username,\n            maxcount=999\n        )\n        labels = self._find_events_by_actor(\n            'labeled',\n            username,\n            maxcount=999\n        )\n        unlabels = self._find_events_by_actor(\n            'unlabeled',\n            username,\n            maxcount=999\n        )\n        events = comments + labels + unlabels\n        events = sorted(events, key=itemgetter('created_at'))\n        for event in events:\n            if event['actor'] in C.DEFAULT_BOT_NAMES:\n                continue\n            if event['event'] == 'commented':\n                for y in command_keys:\n                    if event['body'].startswith('_From @'):\n                        continue\n                    l_body = event['body'].split()\n                    if y in l_body and not '!' + y in l_body:\n                        if timestamps:\n                            commands.append((event['created_at'], y))\n                        else:\n                            commands.append(y)\n            elif event['event'] == 'labeled' and uselabels:\n                if event['label'] in command_keys:\n                    if timestamps:\n                        commands.append((event['created_at'], event['label']))\n                    else:\n                        commands.append(event['label'])\n            elif event['event'] == 'unlabeled' and uselabels:\n                if event['label'] in command_keys:\n                    if timestamps:\n                        commands.append((event['created_at'], '!' + event['label']))\n                    else:\n                        commands.append('!' + event['label'])\n\n        return commands\n\n    def get_component_commands(self, command_key='!component'):\n        \"\"\"Given a list of phrase keys, return a list of phrases used\"\"\"\n        commands = []\n        events = self._find_events_by_actor('commented', None, maxcount=999)\n        events = [x for x in events if x['actor'] not in C.DEFAULT_BOT_NAMES]\n\n        for event in events:\n            if event.get('body'):\n                matched = False\n                lines = event['body'].split('\\n')\n                for line in lines:\n                    if line.strip().startswith(command_key):\n                        matched = True\n                        break\n                if matched:\n                    commands.append(event)\n\n        return commands\n\n    def was_assigned(self, username):\n        \"\"\"Has person X ever been assigned to this issue?\"\"\"\n        matching_events = self._find_events_by_actor('assigned', username)\n        return len(matching_events) > 0\n\n    def was_subscribed(self, username):\n        \"\"\"Has person X ever been subscribed to this issue?\"\"\"\n        matching_events = self._find_events_by_actor('subscribed', username)\n        return len(matching_events) > 0\n\n    def last_notified(self, username):\n        \"\"\"When was this person pinged last in a comment?\"\"\"\n        if not isinstance(username, list):\n            username = [username]\n        username = ['@' + x for x in username]\n        last_notification = None\n        comments = [x for x in self.history if x['event'] == 'commented']\n        for comment in comments:\n            if not comment.get('body'):\n                continue\n            for un in username:\n                if un in comment['body']:\n                    if not last_notification:\n                        last_notification = comment['created_at']\n                    else:\n                        if comment['created_at'] > last_notification:\n                            last_notification = comment['created_at']\n        return last_notification\n\n    def last_comment(self, username):\n        last_comment = None\n        for event in reversed(self.history):\n            if event['event'] == 'commented':\n                if type(username) == list:\n                    if event['actor'] in username:\n                        last_comment = event['body']\n                elif event['actor'] == username:\n                    last_comment = event['body']\n            if last_comment:\n                break\n        return last_comment\n\n    def label_last_applied(self, label):\n        \"\"\"What date was a label last applied?\"\"\"\n        last_date = None\n        for event in reversed(self.history):\n            if event['event'] == 'labeled':\n                if event['label'] == label:\n                    last_date = event['created_at']\n                    break\n        return last_date\n\n    def label_last_removed(self, label):\n        \"\"\"What date was a label last removed?\"\"\"\n        last_date = None\n        for event in reversed(self.history):\n            if event['event'] == 'unlabeled':\n                if event['label'] == label:\n                    last_date = event['created_at']\n                    break\n        return last_date\n\n    def was_labeled(self, label, bots=None):\n        \"\"\"Were labels -ever- applied to this issue?\"\"\"\n        labeled = False\n        for event in self.history:\n            if bots:\n                if event['actor'] in bots:\n                    continue\n            if event['event'] == 'labeled':\n                if label and event['label'] == label:\n                    labeled = True\n                    break\n                elif not label:\n                    labeled = True\n                    break\n        return labeled\n\n    def was_unlabeled(self, label, bots=None):\n        \"\"\"Were labels -ever- unapplied from this issue?\"\"\"\n        labeled = False\n        for event in self.history:\n            if bots:\n                if event['actor'] in bots:\n                    continue\n            if event['event'] == 'unlabeled':\n                if label and event['label'] == label:\n                    labeled = True\n                    break\n                elif not label:\n                    labeled = True\n                    break\n        return labeled\n\n    def get_boilerplate_comments(self, dates=False, content=True):\n        boilerplates = []\n        comments = self._find_events_by_actor('commented', C.DEFAULT_BOT_NAMES, maxcount=999)\n\n        for comment in comments:\n            if not comment.get('body'):\n                continue\n            if 'boilerplate:' in comment['body']:\n                lines = [x for x in comment['body'].split('\\n')\n                         if x.strip() and 'boilerplate:' in x]\n                bp = lines[0].split()[2]\n\n                if dates or content:\n                    bpc = []\n                    if dates:\n                        bpc.append(comment['created_at'])\n                    bpc.append(bp)\n                    if content:\n                        bpc.append(comment['body'])\n                    boilerplates.append(bpc)\n                else:\n                    boilerplates.append(bp)\n\n        return boilerplates\n\n    def get_boilerplate_comments_content(self):\n        bpcs = self.get_boilerplate_comments()\n        bpcs = [x[-1] for x in bpcs]\n        return bpcs\n\n    def last_date_for_boilerplate(self, boiler):\n        last_date = None\n        bps = self.get_boilerplate_comments(dates=True)\n        for bp in bps:\n            if bp[1] == boiler:\n                last_date = bp[0]\n        return last_date\n\n    @property\n    def last_commit_date(self):\n        events = [x for x in self.history if x['event'] == 'committed']\n        if events:\n            return events[-1]['created_at']\n        else:\n            return None\n\n    def get_changed_labels(self, prefix=None, bots=None):\n        \"\"\"make a list of labels that have been set/unset\"\"\"\n        if bots is None:\n            bots = []\n        labeled = []\n        for event in self.history:\n            if event['actor'] in bots:\n                continue\n            if event['event'] in ['labeled', 'unlabeled']:\n                if prefix:\n                    if event['label'].startswith(prefix):\n                        labeled.append(event['label'])\n                else:\n                    labeled.append(event['label'])\n        return sorted(set(labeled))\n\n    def label_is_waffling(self, label, limit=20):\n        \"\"\" detect waffling on labels \"\"\"\n        # https://github.com/ansible/ansibullbot/issues/672\n        if self._waffled_labels is None:\n            self._waffled_labels = {}\n            history = [x['label'] for x in self.history if 'label' in x]\n            labels = sorted(set(history))\n            for hl in labels:\n                self._waffled_labels[hl] = len([x for x in history if x == hl])\n\n        if self._waffled_labels.get(label, 0) >= limit:\n            return True\n        else:\n            return False\n\n    def command_status(self, command):\n        status = None\n        for event in self.history:\n            if 'body' not in event:\n                continue\n            if event['body'].strip() == command:\n                status = True\n            elif event['body'].strip() == '!' + command:\n                status = False\n        return status\n"
  },
  {
    "path": "ansibullbot/issuewrapper.py",
    "content": "# This file is part of Ansible\n#\n# Ansible is free software: you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# Ansible is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with Ansible. If not, see <http://www.gnu.org/licenses/>.\n\n\nimport datetime\nimport json\nimport logging\nimport os\nimport pickle\nimport re\nimport time\n\nimport requests\n\nimport ansibullbot.constants as C\nfrom ansibullbot.utils.github import RateLimited\nfrom ansibullbot.utils.extractors import get_template_data\nfrom ansibullbot.utils.timetools import strip_time_safely\nfrom ansibullbot.historywrapper import HistoryWrapper\n\n\nclass UnsetValue:\n    def __str__(self):\n        return \"AnsibullbotUnsetValue()\"\n\n\nclass IssueWrapper:\n    def __init__(self, github=None, repo=None, issue=None, cachedir=None, gitrepo=None):\n        self.github = github\n        self.repo = repo\n        self.instance = issue\n        self.cachedir = cachedir\n        self.gitrepo = gitrepo\n\n        self._assignees = UnsetValue\n        self._committer_emails = UnsetValue\n        self._committer_logins = UnsetValue\n        self._commits = UnsetValue\n        self._events = UnsetValue\n        self._history = UnsetValue\n        self._labels = UnsetValue\n        self._merge_commits = UnsetValue\n        self._pr = UnsetValue\n        self._pr_reviews = UnsetValue\n        self._repo_full_name = UnsetValue\n        self._template_data = UnsetValue\n        self._pull_raw = UnsetValue\n        self._pr_files = UnsetValue\n        self.full_cachedir = os.path.join(self.cachedir, 'issues', str(self.number))\n        self._renamed_files = UnsetValue\n        self._pullrequest_check_runs = UnsetValue\n        self._updated_at = UnsetValue\n\n    @property\n    def url(self):\n        return self.instance.url\n\n    @property\n    def comments(self):\n        return [x for x in self.history.history if x['event'] == 'commented']\n\n    @property\n    def events(self):\n        if self._events is UnsetValue:\n            self._events = self._parse_events(self._get_timeline())\n\n        return self._events\n\n    def _parse_events(self, events):\n        processed_events = []\n        for event_no, dd in enumerate(events):\n            if dd is None:\n                continue\n\n            if dd['event'] == 'committed':\n                # FIXME\n                # commits are added through HistoryWrapper.merge_commits()\n                continue\n\n            # reviews do not have created_at keys\n            if not dd.get('created_at') and dd.get('submitted_at'):\n                dd['created_at'] = dd['submitted_at']\n\n            # commits do not have created_at keys\n            if not dd.get('created_at') and dd.get('author'):\n                dd['created_at'] = dd['author']['date']\n\n            # commit comments do not have created_at keys\n            if not dd.get('created_at') and dd.get('comments'):\n                dd['created_at'] = dd['comments'][0]['created_at']\n\n            if not dd.get('created_at'):\n                raise AssertionError(dd)\n\n            # commits do not have actors\n            if not dd.get('actor'):\n                dd['actor'] = {'login': None}\n\n            # fix commits with no message\n            if dd['event'] == 'committed' and 'message' not in dd:\n                dd['message'] = ''\n\n            if not dd.get('id'):\n                # set id as graphql node_id OR make one up\n                if 'node_id' in dd:\n                    dd['id'] = dd['node_id']\n                else:\n                    dd['id'] = '%s/%s/%s/%s' % (self.repo_full_name, self.number, 'timeline', event_no)\n\n            event = {\n                'id': dd['id'],\n                'actor': dd['actor']['login'],\n                'event': dd['event'],\n            }\n            if isinstance(dd['created_at'], str):\n                dd['created_at'] = strip_time_safely(dd['created_at'])\n\n            event['created_at'] = dd['created_at'].replace(tzinfo=datetime.timezone.utc)\n\n            if dd['event'] in ['labeled', 'unlabeled']:\n                event['label'] = dd.get('label', {}).get('name', None)\n            elif dd['event'] == 'referenced':\n                event['commit_id'] = dd['commit_id']\n            elif dd['event'] == 'assigned':\n                event['assignee'] = dd['assignee']['login']\n                event['assigner'] = event['actor']\n            elif dd['event'] == 'commented':\n                event['body'] = dd['body']\n            elif dd['event'] == 'cross-referenced':\n                event['source'] = dd['source']\n\n            processed_events.append(event)\n\n        return sorted(processed_events, key=lambda x: x['created_at'])\n\n    def _get_timeline(self):\n        '''Use python-requests instead of pygithub'''\n        data = None\n\n        cache_data = os.path.join(self.full_cachedir, 'timeline_data.json')\n        cache_meta = os.path.join(self.full_cachedir, 'timeline_meta.json')\n        logging.debug(cache_data)\n\n        if not os.path.exists(self.full_cachedir):\n            os.makedirs(self.full_cachedir)\n\n        meta = {}\n        fetch = False\n        if not os.path.exists(cache_data):\n            fetch = True\n        else:\n            with open(cache_meta) as f:\n                meta = json.loads(f.read())\n\n        if not fetch and (not meta or meta.get('updated_at', 0) < self.updated_at.isoformat()):\n            fetch = True\n\n        # validate the data is not infected by ratelimit errors\n        if not fetch:\n            with open(cache_data) as f:\n                data = json.loads(f.read())\n\n            if isinstance(data, list):\n                bad_events = [x for x in data if not isinstance(x, dict)]\n                if bad_events:\n                    fetch = True\n            else:\n                fetch = True\n\n        if data is None:\n            fetch = True\n\n        if fetch:\n            url = self.url + '/timeline'\n            data = self.github.get_request(url)\n\n            with open(cache_meta, 'w') as f:\n                f.write(json.dumps({\n                    'updated_at': self.updated_at.isoformat(),\n                    'url': url\n                }))\n            with open(cache_data, 'w') as f:\n                f.write(json.dumps(data))\n\n        return data\n\n    @RateLimited\n    def load_update_fetch_files(self):\n        edata = None\n        events = []\n        updated = None\n        update = False\n        write_cache = False\n\n        pfile = os.path.join(self.full_cachedir, 'files.pickle')\n        pdir = os.path.dirname(pfile)\n        logging.debug(pfile)\n\n        if not os.path.isdir(pdir):\n            os.makedirs(pdir)\n\n        if os.path.isfile(pfile):\n            try:\n                with open(pfile, 'rb') as f:\n                    edata = pickle.load(f)\n            except Exception:\n                update = True\n                write_cache = True\n\n        # check the timestamp on the cache\n        if edata:\n            updated = edata[0]\n            events = edata[1]\n            if updated < self.updated_at:\n                update = True\n                write_cache = True\n\n        # pull all events if timestamp is behind or no events cached\n        if update or not events:\n            write_cache = True\n            updated = datetime.datetime.utcnow()\n            events = [x for x in self.pullrequest.get_files()]\n\n        if C.DEFAULT_PICKLE_ISSUES:\n            if write_cache or not os.path.isfile(pfile):\n                # need to dump the pickle back to disk\n                edata = [updated, events]\n                with open(pfile, 'wb') as f:\n                    pickle.dump(edata, f)\n\n        return events\n\n    @RateLimited\n    def get_labels(self):\n        \"\"\"Pull the list of labels on this Issue\"\"\"\n        labels = []\n        for label in self.instance.labels:\n            labels.append(label.name)\n        return labels\n\n    @property\n    def template_data(self):\n        if self._template_data is UnsetValue:\n            self._template_data = get_template_data(self)\n        return self._template_data\n\n    @RateLimited\n    def add_label(self, label=None):\n        \"\"\"Adds a label to the Issue using the GitHub API\"\"\"\n        self.instance.add_to_labels(label)\n\n    @RateLimited\n    def remove_label(self, label=None):\n        \"\"\"Removes a label from the Issue using the GitHub API\"\"\"\n        self.instance.remove_from_labels(label)\n\n    @RateLimited\n    def add_comment(self, comment=None):\n        \"\"\"Adds a comment to the Issue using the GitHub API\"\"\"\n        self.instance.create_comment(comment)\n\n    @RateLimited\n    def remove_comment_by_id(self, commentid):\n        if not isinstance(commentid, int):\n            raise Exception(\"commentIds must be integers!\")\n        if not any(x for x in (x for x in self.history.history if x['event'] == 'commented') if x['id'] == commentid):\n            raise Exception(\"Invalid comment ID\")\n\n        comment_url = os.path.join(\n            C.DEFAULT_GITHUB_URL,\n            'repos',\n            self.repo_full_name,\n            'issues',\n            'comments',\n            str(commentid)\n        )\n\n        resp = requests.delete(\n            comment_url,\n            headers={\n                'Accept': 'application/json',\n                'Authorization': 'Bearer %s' % C.DEFAULT_GITHUB_TOKEN\n            }\n        )\n\n        if not resp.ok:\n            raise Exception(\"failed to delete commentid %s for %s\" % (commentid, self.html_url))\n\n    @property\n    def assignees(self):\n        if self._assignees is UnsetValue:\n            self._assignees = [x.login for x in self.instance.assignees]\n        return self._assignees\n\n    def is_pullrequest(self):\n        return self.github_type == 'pullrequest'\n\n    def is_issue(self):\n        return self.github_type == 'issue'\n\n    @property\n    def age(self):\n        created = self.created_at\n        now = datetime.datetime.utcnow()\n        age = now - created\n        return age\n\n    @property\n    def title(self):\n        return self.instance.title\n\n    @property\n    def repo_full_name(self):\n        '''return the <org>/<repo> string'''\n        # prefer regex over making GET calls\n        if self._repo_full_name is UnsetValue:\n            try:\n                url = self.url\n                full_name = re.search(r'repos\\/\\w+\\/\\w+\\/', url).group()\n                full_name = full_name.replace('repos/', '')\n                full_name = full_name.strip('/')\n            except Exception:\n                full_name = self.repo.repo.full_name\n\n            self._repo_full_name = full_name\n\n        return self._repo_full_name\n\n    @property\n    def html_url(self):\n        return self.instance.html_url\n\n    @property\n    def created_at(self):\n        return self.instance.created_at\n\n    @property\n    def updated_at(self):\n        if self._updated_at is not UnsetValue:\n            return self._updated_at\n\n        # this is a hack to fix unit tests\n        if self.instance is not None:\n            if self.instance.updated_at is not None:\n                self._updated_at = self.instance.updated_at\n                return self._updated_at\n\n        return datetime.datetime.utcnow()\n\n    @updated_at.setter\n    def updated_at(self, value):\n        self._updated_at = value\n\n    @property\n    def closed_at(self):\n        return self.instance.closed_at\n\n    @property\n    def merged_at(self):\n        return self.instance.merged_at\n\n    @property\n    def state(self):\n        return self.instance.state\n\n    @property\n    def github_type(self):\n        if '/pull/' in self.html_url:\n            return 'pullrequest'\n        else:\n            return 'issue'\n\n    @property\n    def number(self):\n        return self.instance.number\n\n    @property\n    def submitter(self):\n        # auto-migrated issue by ansibot{-dev}\n        # figure out the original submitter\n        if self.instance.user.login in C.DEFAULT_BOT_NAMES:\n            m = re.match('From @(.*) on', self.instance.body)\n            if m:\n                return m.group(1)\n\n        return self.instance.user.login\n\n    @property\n    def pullrequest(self):\n        if self._pr is UnsetValue:\n            logging.debug('@pullrequest.get_pullrequest #%s' % self.number)\n            self._pr = self.repo.get_pullrequest(self.number)\n        return self._pr\n\n    def update_pullrequest(self):\n        if self.is_pullrequest():\n            # the underlying call is wrapper with ratelimited ...\n            self._pr = self.repo.get_pullrequest(self.number)\n            self._pr_reviews = UnsetValue\n            self._merge_commits = UnsetValue\n            self._committer_emails = UnsetValue\n\n    @property\n    @RateLimited\n    def pullrequest_check_runs(self):\n        if self._pullrequest_check_runs is UnsetValue:\n            logging.info('fetching pull request check runs')\n            self._pullrequest_check_runs = self.commits[-1].get_check_runs()\n        return self._pullrequest_check_runs\n\n    @property\n    @RateLimited\n    def pullrequest_raw_data(self):\n        if self._pull_raw is UnsetValue:\n            logging.info('@pullrequest_raw_data')\n            self._pull_raw = self.pullrequest.raw_data\n        return self._pull_raw\n\n    @property\n    def pr_files(self):\n        if self._pr_files is UnsetValue:\n            self._pr_files = self.load_update_fetch_files()\n        return self._pr_files\n\n    @property\n    def files(self):\n        if self.is_issue():\n            return None\n        return [x.filename for x in self.pr_files]\n\n    @property\n    def new_files(self):\n        new_files = [x for x in self.files if x not in self.gitrepo.files]\n        new_files = [x for x in new_files if not self.gitrepo.existed(x)]\n        return new_files\n\n    @property\n    def new_modules(self):\n        new_modules = self.new_files\n        new_modules = [\n            x for x in new_modules if x.startswith('lib/ansible/modules')\n        ]\n        new_modules = [\n            x for x in new_modules if not os.path.basename(x) == '__init__.py'\n        ]\n        new_modules = [\n            x for x in new_modules if not os.path.basename(x).startswith('_')\n        ]\n        new_modules = [\n            x for x in new_modules if not os.path.basename(x).endswith('.ps1')\n        ]\n        return new_modules\n\n    @property\n    def body(self):\n        return self.instance.body\n\n    @property\n    def labels(self):\n        if self._labels is UnsetValue:\n            self._labels = [x for x in self.get_labels()]\n        return self._labels\n\n    @property\n    def reviews(self):\n        if self._pr_reviews is UnsetValue:\n            self._pr_reviews = [r.raw_data for r in self.pullrequest.get_reviews()]\n\n        # https://github.com/ansible/ansibullbot/issues/881\n        # https://github.com/ansible/ansibullbot/issues/883\n        for idx, x in enumerate(self._pr_reviews):\n            if 'commit_id' not in x:\n                self._pr_reviews[idx]['commit_id'] = None\n\n        return self._pr_reviews\n\n    @property\n    def history(self):\n        if self._history is UnsetValue:\n            self._history = HistoryWrapper(self.events, self.labels, self.updated_at, cachedir=self.full_cachedir)\n\n            if self.is_pullrequest():\n                self._history.merge_reviews(self.reviews)\n                self._history.merge_commits(self.commits)\n        return self._history\n\n    @property\n    @RateLimited\n    def commits(self):\n        if not self.is_pullrequest():\n            return []\n        if self._commits is UnsetValue:\n            self._commits = [x for x in self.pullrequest.get_commits()]\n        return self._commits\n\n    @property\n    def mergeable(self):\n        return self.pullrequest.mergeable\n\n    @property\n    def mergeable_state(self):\n        if not self.is_pullrequest() or self.pullrequest.state == 'closed':\n            return None\n\n        # http://stackoverflow.com/a/30620973\n        fetchcount = 0\n        while self.pullrequest.mergeable_state == 'unknown':\n            fetchcount += 1\n            if fetchcount >= 10:\n                logging.warning('exceeded fetch threshold for mstate')\n                return False\n\n            logging.warning(\n                're-fetch[%s] PR#%s because mergeable state is unknown' % (\n                    fetchcount,\n                    self.number\n                 )\n            )\n\n            self.update_pullrequest()\n            time.sleep(1)\n\n        return self.pullrequest.mergeable_state\n\n    @property\n    def wip(self):\n        return (\n            self.title.startswith('WIP') or\n            '[WIP]' in self.title or\n            (self.is_pullrequest() and self.pullrequest.draft)\n        )\n\n    @property\n    def incoming_repo_exists(self):\n        return self.pullrequest.head.repo is not None\n\n    @property\n    def incoming_repo_slug(self):\n        try:\n            return self.pullrequest.head.repo.full_name\n        except TypeError:\n            return None\n\n    @property\n    def from_fork(self):\n        if not self.incoming_repo_exists:\n            return True\n\n        return self.incoming_repo_slug != self.repo.repo.full_name\n\n    def get_commit_login(self, commit):\n        # https://github.com/ansible/ansibullbot/issues/1265\n        # some commits are created from outside github and have no assocatied login\n        if (author := getattr(commit, 'author')) is not None:\n            return getattr(author, 'login', '')\n        return ''\n\n    @property\n    def merge_commits(self):\n        if self._merge_commits is UnsetValue:\n            self._merge_commits = [\n                c for c in self.commits\n                if len(c.parents) > 1 or c.commit.message.startswith('Merge branch')\n            ]\n        return self._merge_commits\n\n    @property\n    def committer_emails(self):\n        if self._committer_emails is UnsetValue:\n            self._committer_emails = []\n            for commit in self.commits:\n                self.committer_emails.append(commit.commit.author.email)\n        return self._committer_emails\n\n    @property\n    def committer_logins(self):\n        if self._committer_logins is UnsetValue:\n            self._committer_logins = []\n            for commit in self.commits:\n                self._committer_logins.append(self.get_commit_login(commit))\n        return self._committer_logins\n\n    def merge(self):\n        if self.merge_commits:\n            return None\n\n        # unique the lists so that we can tell how many people\n        # have worked on this particular pullrequest\n        emails = sorted(set(self.committer_emails))\n        logins = sorted(set(self.committer_logins))\n\n        if len(self.commits) == 1 or len(emails) == 1 or len(logins) == 1:\n            # squash single committer PRs\n            merge_method = 'squash'\n        elif (len(self.commits) == len(emails)) and len(self.commits) <= 10:\n            # rebase multi-committer PRs\n            merge_method = 'rebase'\n        else:\n            logging.error('merge skipped for %s' % self.number)\n            return\n\n        merge_status = self.pullrequest.merge(merge_method=merge_method)\n\n        if merge_status.merged:\n            logging.info('merge successful for %s' % self.number)\n        else:\n            logging.error('merge failed on %s - %s' % (self.number, merge_status.messsage))\n            raise Exception('merge failed on %s - %s' % (self.number, merge_status.messsage))\n\n    @property\n    def renamed_files(self):\n        ''' A map of renamed files to prevent other code from thinking these are new files '''\n        if self._renamed_files is not UnsetValue:\n            return self._renamed_files\n\n        self._renamed_files = {}\n        if self.is_issue():\n            return self._renamed_files\n\n        for x in self.commits:\n            rd = x.raw_data\n            for filed in rd.get('files', []):\n                if filed.get('previous_filename'):\n                    src = filed['previous_filename']\n                    dst = filed['filename']\n                    self._renamed_files[dst] = src\n\n        return self._renamed_files\n"
  },
  {
    "path": "ansibullbot/plugins/__init__.py",
    "content": ""
  },
  {
    "path": "ansibullbot/plugins/backports.py",
    "content": "def get_backport_facts(issuewrapper):\n    # https://github.com/ansible/ansibullbot/issues/367\n    iw = issuewrapper\n\n    bfacts = {\n        'is_backport': False\n    }\n\n    if not iw.is_pullrequest():\n        return bfacts\n\n    if iw.pullrequest.base.ref not in ['devel', 'main', 'master']:\n        bfacts['is_backport'] = True\n        bfacts['base_ref'] = iw.pullrequest.base.ref\n\n    return bfacts\n"
  },
  {
    "path": "ansibullbot/plugins/botstatus.py",
    "content": "def get_bot_status_facts(issuewrapper, all_maintainers, maintainer_team=None, bot_names=None):\n    if bot_names is None:\n        bot_names = []\n    if maintainer_team is None:\n        maintainer_team = []\n    iw = issuewrapper\n    bs = False\n    for ev in iw.history.history:\n        if ev['event'] != 'commented':\n            continue\n        if 'bot_status' in ev['body']:\n            if ev['actor'] not in bot_names:\n                if ev['actor'] in maintainer_team or \\\n                        ev['actor'] == iw.submitter or \\\n                        ev['actor'] in all_maintainers:\n                    bs = True\n                    continue\n        # <!--- boilerplate: bot_status --->\n        if bs:\n            if ev['actor'] in bot_names:\n                if 'boilerplate: bot_status' in ev['body']:\n                    bs = False\n                    continue\n    return {'needs_bot_status': bs}\n"
  },
  {
    "path": "ansibullbot/plugins/ci_rebuild.py",
    "content": "import datetime\n\n\ndef get_ci_facts(iw, ci):\n    cifacts = {\n        'ci_run_number': None\n    }\n\n    if not iw.is_pullrequest():\n        return cifacts\n\n    if ci.last_run is None:\n        return cifacts\n\n    return {'ci_run_number': ci.last_run['run_id']}\n\n\ndef get_rebuild_facts(iw, meta, force=False):\n    rbmeta = {\n        'needs_rebuild': False,\n        'needs_rebuild_all': False,\n    }\n\n    if not iw.is_pullrequest():\n        return rbmeta\n\n    if not force:\n        if not meta['ci_stale']:\n            return rbmeta\n\n        if meta['is_needs_revision']:\n            return rbmeta\n\n        if meta['is_needs_rebase']:\n            return rbmeta\n\n        if not meta['has_ci']:\n            return rbmeta\n\n        if not meta['shipit']:\n            return rbmeta\n\n        if meta['ci_state'] == 'pending':\n            return rbmeta\n\n    rbmeta['needs_rebuild'] = True\n    rbmeta['needs_rebuild_all'] = True\n\n    return rbmeta\n\n\ndef _get_last_command(iw, command, username):\n    # FIXME move this into historywrapper\n    commands = iw.history.get_commands(username, [command], timestamps=True)\n\n    if not commands:\n        return\n\n    # set timestamp for last time command was used\n    commands.sort(key=lambda x: x[0])\n    last_command = commands[-1][0]\n\n    return last_command\n\n\n# https://github.com/ansible/ansibullbot/issues/640\ndef get_rebuild_merge_facts(iw, meta, maintainer_team, ci):\n    rbmerge_meta = {\n        'needs_rebuild': meta.get('needs_rebuild', False),\n        'needs_rebuild_all': meta.get('needs_rebuild_all', False),\n        'admin_merge': False\n    }\n\n    if not iw.is_pullrequest():\n        return rbmerge_meta\n\n    if rbmerge_meta['needs_rebuild'] and rbmerge_meta['needs_rebuild_all']:\n        return rbmerge_meta\n\n    if meta['is_needs_revision']:\n        return rbmerge_meta\n\n    if meta['is_needs_rebase']:\n        return rbmerge_meta\n\n    epoch = datetime.datetime(1970, 1 ,1, tzinfo=datetime.timezone.utc)\n    last_command = _get_last_command(iw, 'rebuild_merge', maintainer_team) or epoch\n    alias = _get_last_command(iw, '/rebuild_merge', maintainer_team) or epoch\n    last_command = max(last_command, alias)\n\n    if last_command == epoch:\n        return rbmerge_meta\n\n    # new commits should reset everything\n    lc = iw.history.last_commit_date\n    if lc and lc > last_command:\n        return rbmerge_meta\n\n    if ci.last_run is None:\n        return rbmerge_meta\n\n    ci_updated_at = ci.last_run.get('updated_at', ci.last_run.get('created_at'))\n\n    if ci.last_run['state'] != 'pending' and ci_updated_at < last_command:\n        rbmerge_meta['needs_rebuild'] = True\n        rbmerge_meta['needs_rebuild_all'] = True\n\n    if ci.last_run['state'] == 'success' and ci_updated_at > last_command:\n        rbmerge_meta['admin_merge'] = True\n\n    return rbmerge_meta\n\n\n# https://github.com/ansible/ansibullbot/issues/1161\ndef get_rebuild_command_facts(iw, meta, ci):\n    rbmerge_meta = {\n        'needs_rebuild': meta.get('needs_rebuild', False),\n        'needs_rebuild_all': meta.get('needs_rebuild_all', False),\n        'needs_rebuild_failed': meta.get('needs_rebuild_failed', False),\n    }\n\n    if not iw.is_pullrequest():\n        return rbmerge_meta\n\n    if rbmerge_meta['needs_rebuild'] and (rbmerge_meta['needs_rebuild_all'] or rbmerge_meta['needs_rebuild_failed']):\n        return rbmerge_meta\n\n    last_rebuild_failed_command = _get_last_command(iw, '/rebuild_failed', None)\n    last_rebuild_command = _get_last_command(iw, '/rebuild', None)\n\n    if last_rebuild_command is None and last_rebuild_failed_command is None:\n        return rbmerge_meta\n    elif last_rebuild_command is None and last_rebuild_failed_command is not None:\n        last_command = last_rebuild_failed_command\n        meta_key = 'needs_rebuild_failed'\n    elif last_rebuild_command is not None and last_rebuild_failed_command is None:\n        last_command = last_rebuild_command\n        meta_key = 'needs_rebuild_all'\n    else:\n        if last_rebuild_command >= last_rebuild_failed_command:\n            last_command = last_rebuild_command\n            meta_key = 'needs_rebuild_all'\n        else:\n            last_command = last_rebuild_failed_command\n            meta_key = 'needs_rebuild_failed'\n\n    # new commits should reset everything\n    lc = iw.history.last_commit_date\n    if lc and lc > last_command:\n        return rbmerge_meta\n\n    if ci.last_run is None:\n        return rbmerge_meta\n\n    ci_updated_at = ci.last_run.get('updated_at', ci.last_run.get('created_at'))\n\n    if ci.last_run['state'] != 'pending' and ci_updated_at < last_command:\n        rbmerge_meta['needs_rebuild'] = True\n        rbmerge_meta[meta_key] = True\n\n    return rbmerge_meta\n"
  },
  {
    "path": "ansibullbot/plugins/collection_facts.py",
    "content": "import copy\n\n\ndef get_collection_facts(iw, component_matcher, meta):\n    # Skip redirection of backports or <2.10 issues ...\n    is_backport = False\n    if isinstance(meta.get('is_backport'), bool):\n        is_backport = meta['is_backport']\n    elif not iw.is_issue():\n        is_backport = iw.pullrequest.base.ref != 'devel'\n\n    cfacts = {\n        'is_collection': False,\n        'needs_collection_boilerplate': False,\n        'needs_collection_redirect': False,\n        'collection_redirects': [],\n        'collection_filemap': {},\n        'collection_filemap_full': {},\n        'collection_file_matches': {},\n        'collection_fqcn_label_remove': set(),\n    }\n\n    cmap = {}\n    for cm in meta.get('component_matches', []):\n        if cm.get('repo_filename'):\n            cmap[cm['repo_filename']] = None\n\n    fqcns = set()\n    for key in cmap.keys():\n        if key in iw.renamed_files.values():\n            continue\n        if key in iw.renamed_files:\n            continue\n        if component_matcher.gitrepo.exists(key):\n            continue\n        cmap[key] = component_matcher.search_ecosystem(key)\n        if cmap[key]:\n            for match in cmap[key]:\n                if match.startswith('collection:'):\n                    fqcns.add(match.split(':')[1])\n\n    # do not redirect things that still exist\n    has_core_files = False\n    for key in cmap.keys():\n        if component_matcher.gitrepo.exists(key):\n            has_core_files = True\n            break\n\n    cfacts['collection_filemap'] = copy.deepcopy(cmap)\n    cfacts['collection_redirects'] = list(fqcns)\n    cfacts['collection_fqcns'] = list(fqcns)\n    if fqcns:\n        cfacts['is_collection'] = True\n\n    # make urls for the bot comment\n    for k,v in cmap.items():\n        if v is None:\n            continue\n        for idi, item in enumerate(v):\n            parts = item.split(':', 3)\n            cmap[k][idi] = '%s -> %s (%s)' % (\n                k,\n                parts[3],\n                'https://galaxy.ansible.com/' + parts[1].replace('.', '/')\n            )\n\n    cfacts['collection_file_matches'] = copy.deepcopy(cmap)\n\n    # should this be forwarded off to a collection repo?\n    if fqcns and not has_core_files and (not list([x for x in cmap.values() if not x])) and not is_backport:\n\n        cfacts['needs_collection_redirect'] = True\n\n        if not iw.history.last_date_for_boilerplate('collection_migration'):\n            cfacts['needs_collection_boilerplate'] = True\n\n    # loose matching for misc files ...\n    if not is_backport and fqcns and 'changelog' in ''.join(cmap.keys()):\n        missing = set()\n        for k,v in cmap.items():\n            if not k.startswith('changelogs/') and not k.startswith('test/units/') and not v:\n                missing.add(k)\n        if not missing:\n            cfacts['needs_collection_redirect'] = True\n\n            if not iw.history.last_date_for_boilerplate('collection_migration'):\n                cfacts['needs_collection_boilerplate'] = True\n\n    # allow users to override the redirect\n    cstatus = iw.history.command_status('needs_collection_redirect')\n    if cstatus is False:\n        cfacts['needs_collection_redirect'] = False\n        cfacts['needs_collection_boilerplate'] = False\n\n    # clean up incorrect labels ...\n    for label in iw.labels:\n        if label.startswith('collection:'):\n            fqcn = label.split(':')[1]\n            if fqcn not in fqcns:\n                cfacts['collection_fqcn_label_remove'].add(fqcn)\n\n    cfacts['collection_fqcn_label_remove'] = list(cfacts['collection_fqcn_label_remove'])\n\n    return cfacts\n"
  },
  {
    "path": "ansibullbot/plugins/community_workgroups.py",
    "content": "def get_community_workgroup_facts(issuewrapper, meta):\n    # https://github.com/ansible/ansibullbot/issues/820\n    # https://github.com/ansible/community#groups-we-help\n    WORKING_GROUPS = {\n        'cloud/amazon': 'aws',\n        'cloud/azure': 'azure',\n        'cloud/linode/': 'linode',\n        'cloud/vmware': 'vmware',\n        'network/': 'network',\n        'windows/': 'windows'\n\n    }\n\n    iw = issuewrapper\n    facts = {\n        'workgroup': None,\n        'is_maintainer': False,\n        'has_notification': False,\n        'needs_notification': False\n    }\n\n    wgroups = set()\n    for cm in meta.get('component_matches', []):\n        ns = cm.get('namespace')\n        if ns:\n            for k,v in WORKING_GROUPS.items():\n                if ns.startswith(k):\n                    wgroups.add(v)\n                    break\n    wgroups = list(wgroups)\n    if len(wgroups) == 1:\n        facts['workgroup'] = wgroups[0]\n\n    maintainer = iw.submitter in meta['component_maintainers']\n    if maintainer:\n        facts['is_maintainer'] = True\n\n    bpc = iw.history.last_date_for_boilerplate('community_workgroups')\n    if bpc:\n        facts['has_notification'] = True\n\n    if not bpc and len(wgroups) == 1 and not maintainer and len(iw.comments) == 0:\n        facts['needs_notification'] = True\n\n    return {'wg': facts}\n"
  },
  {
    "path": "ansibullbot/plugins/component_matching.py",
    "content": "import logging\nimport re\n\n\ndef get_component_match_facts(iw, component_matcher, valid_labels):\n    '''High level abstraction for matching components to repo files'''\n\n    # These should never return a match\n    BLACKLIST_COMPONENTS = [\n        'core', 'ansible'\n    ]\n\n    cmeta = {\n        'is_collection': False,\n        'is_module': False,\n        'is_action_plugin': False,\n        'is_new_module': False,\n        'is_new_directory': False,\n        'is_module_util': False,\n        'is_plugin': False,\n        'is_new_plugin': False,\n        'is_multi_module': False,\n        'module_match': None,\n        'component': None,\n        'component_name': [],\n        'component_match_strategy': None,\n        'component_matches': [],\n        'component_filenames': [],\n        'component_labels': [],\n        'component_maintainers': [],\n        'component_namespace_maintainers': [],\n        'component_notifiers': [],\n        'component_scm': None,\n        'component_collection': None,\n        'needs_component_message': False,\n    }\n\n    skip_matching = False\n    if iw.is_issue():\n        t_component = iw.template_data.get('component name')\n        cmeta['component_name'] = t_component\n\n        if not t_component or t_component.lower() in BLACKLIST_COMPONENTS:\n            if t_component is None:\n                logging.debug('component is None')\n            elif t_component.lower() in BLACKLIST_COMPONENTS:\n                logging.debug(f'{t_component} is a blacklisted component')\n            skip_matching = True\n\n    # Check if this PR is screwed up in some way\n    cmeta.update(get_pr_quality_facts(iw))\n    if cmeta['is_bad_pr']:\n        return cmeta\n\n    if skip_matching:\n        # we still need to proceed to process the component commands\n        CM_MATCHES = []\n    else:\n        # Try to match against something known ...\n        CM_MATCHES = component_matcher.match(iw)\n        cmeta['component_match_strategy'] = component_matcher.strategies\n\n    # Reconcile with component commands ...\n    if iw.is_issue():\n        _CM_MATCHES = CM_MATCHES[:]\n        CM_MATCHES = reconcile_component_commands(iw, component_matcher, CM_MATCHES)\n        if _CM_MATCHES != CM_MATCHES:\n            cmeta['component_match_strategy'] = ['component_command']\n\n    # sort so that the filenames show up in the alphabetical/consisten order\n    CM_MATCHES = sorted(CM_MATCHES, key=lambda k: k['repo_filename'])\n\n    cmeta['component_matches'] = CM_MATCHES[:]\n    cmeta['component_filenames'] = [x['repo_filename'] for x in CM_MATCHES]\n\n    # Reduce the set of labels\n    for x in CM_MATCHES:\n        for y in x['labels']:\n            if y in valid_labels and y not in cmeta['component_labels']:\n                cmeta['component_labels'].append(y)\n\n    # Reduce the set of maintainers\n    for x in CM_MATCHES:\n        for y in x['maintainers']:\n            if y not in cmeta['component_maintainers']:\n                cmeta['component_maintainers'].append(y)\n\n    # Reduce the set of namespace maintainers\n    for x in CM_MATCHES:\n        for y in x.get('namespace_maintainers', []):\n            if y not in cmeta['component_namespace_maintainers']:\n                cmeta['component_namespace_maintainers'].append(y)\n\n    # Reduce the set of notifiers\n    for x in CM_MATCHES:\n        for y in x['notify']:\n            if y not in cmeta['component_notifiers']:\n                cmeta['component_notifiers'].append(y)\n\n    # Get rid of those who wish to be ignored\n    for x in CM_MATCHES:\n        for y in x['ignore']:\n            if y in cmeta['component_maintainers']:\n                cmeta['component_maintainers'].remove(y)\n            if y in cmeta['component_notifiers']:\n                cmeta['component_notifiers'].remove(y)\n\n    # is it a module ... or two?\n    if [x for x in CM_MATCHES if 'lib/ansible/modules' in x['repo_filename']]:\n        cmeta['is_module'] = True\n        if len([x for x in CM_MATCHES if 'lib/ansible/modules' in x['repo_filename']]) > 1:\n            cmeta['is_multi_module'] = True\n        cmeta['is_plugin'] = True\n        cmeta['module_match'] = [x for x in CM_MATCHES if 'lib/ansible/modules' in x['repo_filename']]\n\n    # is it a plugin?\n    if [x for x in CM_MATCHES if 'lib/ansible/plugins' in x['repo_filename']]:\n        cmeta['is_plugin'] = True\n\n    # is it a plugin?\n    if [x for x in CM_MATCHES if 'lib/ansible/plugins/action' in x['repo_filename']]:\n        cmeta['is_action_plugin'] = True\n\n    # is it a module util?\n    if [x for x in CM_MATCHES if 'lib/ansible/module_utils' in x['repo_filename']]:\n        cmeta['is_module_util'] = True\n\n    if iw.is_pullrequest():\n        if iw.new_modules:\n            cmeta['is_new_module'] = True\n            cmeta['is_new_plugin'] = True\n\n        # https://github.com/ansible/ansibullbot/issues/684\n        if iw.new_files:\n            for x in iw.new_files:\n                if '/plugins/' in x:\n                    cmeta['is_new_plugin'] = True\n\n    # is it a collection?\n    if [x for x in CM_MATCHES if x['repo_filename'].startswith('collection:')]:\n        cmeta['is_collection'] = True\n        cmeta['component_collection'] = []\n        for comp in [x for x in CM_MATCHES if x['repo_filename'].startswith('collection:')]:\n            fqcn = comp['repo_filename'].split(':')[1]\n            cmeta['component_collection'].append(fqcn)\n\n    # welcome message to indicate which files the bot matched\n    if iw.is_issue():\n\n        # We only want to add this comment in two scenarios:\n        #   * no other comments have been made yet\n        #   * the last comment had different files\n\n        if len(iw.comments) == 0:\n            cmeta['needs_component_message'] = True\n\n        else:\n            bpcs = iw.history.get_boilerplate_comments(dates=True, content=True)\n            bpcs = [x for x in bpcs if x[1] == 'components_banner']\n\n            # was the last list of files correct?\n            if bpcs:\n                lbpc = bpcs[-1]\n                lbpc = lbpc[-1]\n                _filenames = []\n                for line in lbpc.split('\\n'):\n                    if line.startswith('*'):\n                        # escaped lines screw up the regex here\n                        line = line.replace('`', '')\n                        parts = line.split()\n                        try:\n                            m = re.match(r'\\[(\\S+)\\].*', parts[1])\n                        except IndexError:\n                            continue\n                        if m:\n                            _filenames.append(m.group(1))\n                        else:\n                            # https://github.com/ansible/ansibullbot/pull/1425/\n                            if 'None' not in parts[1]:\n                                _filenames.append(parts[1])\n                _filenames = sorted(set(_filenames))\n                expected = sorted({x['repo_filename'] for x in CM_MATCHES})\n                if _filenames != expected:\n                    cmeta['needs_component_message'] = True\n\n    return cmeta\n\n\ndef reconcile_component_commands(iw, component_matcher, CM_MATCHES):\n    \"\"\"Allow components to be set by bot commands\"\"\"\n    component_commands = iw.history.get_component_commands()\n    component_filenames = [x['repo_filename'] for x in CM_MATCHES]\n\n    for ccx in component_commands:\n\n        if '\\n' in ccx['body']:\n            lines = ccx['body'].split('\\n')\n            lines = [x.strip() for x in lines if x.strip()]\n        else:\n            lines = [ccx['body'].strip()]\n\n        # keep track if files are reset in the same comment\n        cleared = False\n\n        for line in lines:\n\n            if not line.strip().startswith('!component'):\n                continue\n\n            # !component [action][filename]\n            try:\n                filen = line.split()[1]\n            except IndexError:\n                filen = line.replace('!component', '')\n\n            # https://github.com/ansible/ansible/issues/37494#issuecomment-373548008\n            if not filen:\n                continue\n\n            action = filen[0]\n            filen = filen[1:].strip()\n\n            if action == '+' and filen not in component_filenames:\n                component_filenames.append(filen)\n            elif action == '-' and filen in component_filenames:\n                component_filenames.remove(filen)\n            elif action == '=':\n                # possibly unintuitive but multiple ='s in the same comment\n                # should initially clear the set and then become additive.\n                if not cleared:\n                    component_filenames = [filen]\n                else:\n                    component_filenames.append(filen)\n                cleared = True\n\n    CM_MATCHES = component_matcher.match_components('', '', '', files=component_filenames)\n\n    return CM_MATCHES\n\n\ndef get_pr_quality_facts(issuewrapper):\n\n    '''Use arbitrary counts to prevent notification+label storms'''\n\n    iw = issuewrapper\n\n    qmeta = {\n        'is_bad_pr': False,\n        'is_bad_pr_reason': list(),\n        'is_empty_pr': False\n    }\n\n    if not iw.is_pullrequest():\n        return qmeta\n\n    for f in iw.files:\n        if f.startswith('lib/ansible/modules/core') or \\\n                f.startswith('lib/ansible/modules/extras'):\n            qmeta['is_bad_pr'] = True\n\n    # https://github.com/ansible/ansibullbot/issues/534\n    try:\n        if len(iw.files) == 0:\n            qmeta['is_bad_pr'] = True\n            qmeta['is_empty_pr'] = True\n    except:\n        pass\n\n    try:\n        if len(iw.files) > 50:\n            qmeta['is_bad_pr'] = True\n            qmeta['is_bad_pr_reason'].append('More than 50 changed files.')\n\n        if len(iw.commits) > 50:\n            qmeta['is_bad_pr'] = True\n            qmeta['is_bad_pr_reason'].append('More than 50 commits.')\n    except:\n        # bypass exceptions for unit tests\n        pass\n\n    return qmeta\n"
  },
  {
    "path": "ansibullbot/plugins/contributors.py",
    "content": "import logging\n\n\ndef get_contributor_facts(issuewrapper):\n\n    # https://github.com/blog/2397-making-it-easier-to-grow-communities-on-github\n    # NONE - new contributor\n    # MEMBER - member of a team\n    # CONTRIBUTOR - made previous commits\n\n    cfacts = {\n        'new_contributor': False\n    }\n\n    iw = issuewrapper\n\n    # ignore issues\n    if iw.is_issue():\n        return cfacts\n\n    association = iw.pullrequest_raw_data.get('author_association').upper()\n    logging.info(f'{iw.html_url} {iw.submitter} association: {association}')\n\n    if association in ['NONE', 'FIRST_TIME_CONTRIBUTOR']:\n        cfacts['new_contributor'] = True\n\n    return cfacts\n"
  },
  {
    "path": "ansibullbot/plugins/cross_references.py",
    "content": "def get_cross_reference_facts(issuewrapper):\n\n    iw = issuewrapper\n\n    crfacts = {\n        'has_pr': False,\n        'has_issue': False,\n        'needs_has_pr': False,\n        'needs_has_issue': False,\n    }\n\n    cross_refs = [x for x in iw.events if x['event'] == 'cross-referenced']\n\n    urls = set()\n    for cr in cross_refs:\n        urls.add(cr['source']['issue']['html_url'])\n\n    pulls = [x for x in urls if '/pull/' in x]\n    issues = [x for x in urls if '/pull/' not in x]\n\n    if iw.is_issue() and pulls:\n        crfacts['has_pr'] = True\n    elif iw.is_pullrequest() and issues:\n        crfacts['has_issue'] = True\n\n    if crfacts['has_pr']:\n        if not iw.history.was_unlabeled('has_pr'):\n            crfacts['needs_has_pr'] = True\n\n    if crfacts['has_issue']:\n        if not iw.history.was_unlabeled('has_issue'):\n            crfacts['needs_has_issue'] = True\n\n    return crfacts\n"
  },
  {
    "path": "ansibullbot/plugins/deprecation.py",
    "content": "import os\n\n\ndef get_deprecation_facts(meta):\n    # https://github.com/ansible/ansibullbot/issues/29\n\n    deprecated = False\n\n    # this only handles modules for now\n    if meta['is_module']:\n        mmatches = meta['module_match']\n        if not isinstance(mmatches, list):\n            mmatches = [mmatches]\n        for mmatch in mmatches:\n            if mmatch.get('deprecated'):\n                deprecated = True\n                break\n\n            # modules with an _ prefix are deprecated\n            bn = os.path.basename(mmatch['repo_filename'])\n            if bn.startswith('_') and not bn.startswith('__'):\n                deprecated = True\n                break\n\n    return {'deprecated': deprecated}\n"
  },
  {
    "path": "ansibullbot/plugins/docs_info.py",
    "content": "import ast\nimport dataclasses\nimport logging\nimport re\n\nimport requests\n\nDOCS_PATH_PATTERNS = [\n    \"docs/\",\n    \"examples/\",\n]\n\nRE_DIFF_PATTERNS = {\n    \"header\": r\"^\\@+\\s+(?P<del_start>[\\-]\\d+),\\d+\\s(?P<add_start>[\\+]\\d+),\\d+\",\n}\n\n@dataclasses.dataclass(eq=False, order=False)\nclass ParsedFunc:\n    name: str\n    line_start: int\n    line_end: int\n    doc_string: str = \"\"\n    ds_line_start: int = 0\n    ds_line_end: int = 0\n\n@dataclasses.dataclass(eq=False, order=False)\nclass ParsedClass:\n    name: str\n    line_start: int\n    line_end: int\n    doc_string: str = \"\"\n    ds_line_start: int = 0\n    ds_line_end: int = 0\n    funcs: list = dataclasses.field(default_factory=list)\n\n    def find_function(self, lineno):\n        \"\"\" Returns a function that contains the given line number ``lineno``. \"\"\"\n        for item in self.funcs:\n            if item.line_start <= lineno <= item.line_end:\n                return item\n\n@dataclasses.dataclass(eq=False, order=False)\nclass ParsedModule:\n    doc_string: str = \"\"\n    ds_line_start: int = 0\n    ds_line_end: int = 0\n    example_string: str = \"\"\n    ex_line_start: int = 0\n    ex_line_end: int = 0\n    classes: list = dataclasses.field(default_factory=list)\n\n    def find_class(self, lineno):\n        \"\"\" Returns a class that contains the given line number ``lineno``. \"\"\"\n        for item in self.classes:\n            if item.line_start <= lineno <= item.line_end:\n                return item\n\nclass CommitFile:\n    def __init__(self, raw_data):\n        self.raw_data = raw_data\n\n    @property\n    def filename(self):\n        return self.raw_data.get(\"filename\")\n\n    @property\n    def status(self):\n        return self.raw_data.get(\"status\")\n\n    @property\n    def patch(self):\n        return self.raw_data.get(\"patch\")\n\n    @property\n    def raw_url(self):\n        return self.raw_data.get(\"raw_url\")\n\n    @property\n    def file_content(self):\n        if self.raw_url:\n            result = requests.get(self.raw_url)\n            if result.ok:\n                return result.text\n\ndef _is_docs_path(filename):\n    \"\"\" Determine if affected file is only applicable to documentation directories \"\"\"\n    for pattern in DOCS_PATH_PATTERNS:\n        if filename.startswith(pattern):\n            return True\n    return False\n\ndef _get_diff_info(diff_text):\n    \"\"\" Gather info from the diff to make searching the file's AST easier. \"\"\"\n    diff_lines = diff_text.splitlines()\n    a_lines = [line for line in diff_lines if not line.startswith(\"+\")]\n    b_lines = [line for line in diff_lines if not line.startswith(\"-\")]\n\n    diff_info = []\n    last_line_changed = False\n\n    is_header = re.compile(RE_DIFF_PATTERNS[\"header\"])\n\n    for lines in (a_lines, b_lines):\n        del_start_pos = 0\n        add_start_pos = 0\n        offset = 0\n        for idx, line in enumerate(lines):\n            action = \"\"\n            header = is_header.search(line)\n            if header is not None:\n                del_start_pos = int(header.group(\"del_start\").strip(\" -\"))\n                add_start_pos = int(header.group(\"add_start\").strip(\" +\"))\n                offset = idx + 1\n            else:\n                if line.startswith(\"-\"):\n                    last_line_changed = True\n                    action = \"deletion\"\n                    lineno = del_start_pos + idx - offset\n                elif line.startswith(\"+\"):\n                    last_line_changed = True\n                    action = \"addition\"\n                    lineno = add_start_pos + idx - offset\n                else:\n                    last_line_changed = False\n\n            if last_line_changed:\n                # only use additions for now; would need the base\n                # file to compare deletions\n                if action == \"addition\":\n                    diff_info.append(\n                        {\n                            \"action\": action,\n                            \"lineno\": lineno,\n                            \"text\": line.lstrip(\" -+\"),\n                        }\n                    )\n\n    return diff_info\n\ndef _get_ast_info(content):\n    \"\"\" Parse the Python module into an AST, extract the docstrings, and then\n        get their line number positions for comparison to the diff.\n    \"\"\"\n    try:\n        source = ast.parse(content)\n    except Exception as err:\n        logging.info(\"Error parsing module: %s\", err)\n        return None\n\n    mod_map = ParsedModule()\n\n    for node in source.body:\n        if isinstance(node, (ast.Assign, ast.AnnAssign, ast.AugAssign)):\n            try:\n                targets = node.targets\n            except AttributeError:\n                targets = [node.target]\n            for target in targets:\n                if not isinstance(target, ast.Name):\n                    # ignore unpacked assignments\n                    continue\n                if target.id == \"DOCUMENTATION\":\n                    mod_map.doc_string = node.value.value\n                    mod_map.ds_line_start = node.lineno\n                    mod_map.ds_line_end = node.end_lineno\n                    break\n                elif target.id == \"EXAMPLES\":\n                    mod_map.example_string = node.value.value\n                    mod_map.ex_line_start = node.lineno\n                    mod_map.ex_line_end = node.end_lineno\n                    break\n        elif isinstance(node, ast.ClassDef):\n            class_map = ParsedClass(\n                name=node.name,\n                line_start=node.lineno,\n                line_end=node.end_lineno,\n            )\n            class_doc = ast.get_docstring(node, clean=False)\n            if class_doc is not None:\n                class_map.doc_string = class_doc\n                ds_span = re.search(re.escape(class_doc), content)\n                if ds_span is not None:\n                    class_map.ds_line_start = len(\n                        content[:ds_span.start()].splitlines()\n                    )\n                    class_map.ds_line_end = (\n                        class_map.ds_line_start + len(class_doc.splitlines())\n                    )\n\n            for child_node in ast.iter_child_nodes(node):\n                if isinstance(child_node, (ast.FunctionDef, ast.AsyncFunctionDef)):\n                    func_map = ParsedFunc(\n                        name=child_node.name,\n                        line_start=child_node.lineno,\n                        line_end=child_node.end_lineno,\n                    )\n                    func_doc = ast.get_docstring(child_node)\n                    if func_doc is not None:\n                        func_map.doc_string = func_doc\n                        ds_span = re.search(re.escape(func_doc), content)\n                        if ds_span is not None:\n                            func_map.ds_line_start = len(\n                                content[:ds_span.start()].splitlines()\n                            )\n                            func_map.ds_line_end = (\n                                func_map.ds_line_start + len(func_doc.splitlines())\n                        )\n                    class_map.funcs.append(func_map)\n\n            mod_map.classes.append(class_map)\n\n    return mod_map\n\ndef _is_diff_docs_only(file_content, diff):\n    \"\"\" Check a python file's changes to see if they're only docstring\n        changes.\n    \"\"\"\n    diff = _get_diff_info(diff)\n    if not diff:\n        # likely only deletions which is not supported at the moment\n        # see _get_diff_info\n        return False\n\n    source = None\n\n    if file_content is not None:\n        source = _get_ast_info(file_content)\n\n    if source is None:\n        return False\n\n    for line in diff:\n        # Check if change applies to module DOCUMENTATION (if exists)\n        if source.doc_string:\n            if source.ds_line_start <= line[\"lineno\"] <= source.ds_line_end:\n                continue\n\n        # Check if change applies to module EXAMPLES (if exists)\n        if source.example_string:\n            if source.ex_line_start <= line[\"lineno\"] <= source.ex_line_end:\n                continue\n\n        # Find appropriate class if it exists\n        source_class = source.find_class(line[\"lineno\"])\n        if source_class is not None:\n            if source_class.doc_string:\n                if source_class.ds_line_start <= line[\"lineno\"] <= source_class.ds_line_end:\n                    continue\n\n            source_func = source_class.find_function(line[\"lineno\"])\n            if source_func is not None and source_func.doc_string:\n                if source_func.ds_line_start <= line[\"lineno\"] <= source_func.ds_line_end:\n                    continue\n\n        # If we made it this far, this change is outside docs/examples\n        return False\n\n    return True\n\ndef _is_docs_only(changed_file):\n    \"\"\" Check if the changes made to ``changed_file`` affect only documentation. \"\"\"\n\n    if isinstance(changed_file, dict):\n        changed_file = CommitFile(changed_file)\n\n    if _is_docs_path(changed_file.filename):\n        return True\n\n    # Additions or deletions of complete files outside of\n    # docsite/examples will likely be more than documentation\n    # changes\n    if changed_file.status != \"modified\":\n        return False\n\n    # Non-Python files that are outside of the docsite\n    # folder will not be documentation related\n    if not changed_file.filename.endswith(\".py\"):\n        return False\n\n    # If a python file, check if the changes are only to\n    # docstrings\n    if _is_diff_docs_only(changed_file.file_content, changed_file.patch):\n        return True\n\n    return False\n\ndef get_docs_facts(iw):\n    \"\"\" Cycle through the files and gather facts about documentation changes. \"\"\"\n    dfacts = {\n        \"is_docs_only\": False\n    }\n\n    if not iw.is_pullrequest():\n        return dfacts\n\n    docs_only = False not in [_is_docs_only(f.raw_data) for f in iw.pr_files]\n\n    dfacts[\"is_docs_only\"] = docs_only\n    return dfacts\n"
  },
  {
    "path": "ansibullbot/plugins/filament.py",
    "content": "def get_filament_facts(issuewrapper, meta):\n    # https://github.com/ansible/ansible/pull/26921\n\n    iw = issuewrapper\n    isfilament = False\n\n    if iw.is_pullrequest():\n        if iw.files:\n            for fn in iw.files:\n                if fn.endswith('filament.py') or fn.endswith('lightbulb.py'):\n                    isfilament = True\n                    break\n\n    meta['is_filament'] = isfilament\n    return meta\n"
  },
  {
    "path": "ansibullbot/plugins/label_commands.py",
    "content": "def get_label_command_facts(iw, all_maintainers, maintainer_team=None, valid_labels=None):\n    if valid_labels is None:\n        valid_labels = []\n    if maintainer_team is None:\n        maintainer_team = []\n\n    whitelist = [\n        'docsite_pr',\n        'easyfix',\n        'module',\n        'needs_triage',\n        'needs_verified',\n        'test',\n        'networking',\n        'windows',\n    ]\n    whitelist.extend([x for x in valid_labels if x.startswith(('affects_', 'c:', 'm:'))])\n\n    maintainers = set(maintainer_team).union(all_maintainers)\n\n    add_labels = []\n    del_labels = []\n    # iterate through the description and comments and look for label commands\n    for ev in iw.history.history:\n        if ev['actor'] in maintainers and ev['event'] == 'commented':\n            if '+label' in ev['body'] or '-label' in ev['body']:\n                for line in ev['body'].split('\\n'):\n                    if 'label' not in line:\n                        continue\n                    words = line.split()\n\n                    # https://github.com/ansible/ansibullbot/issues/1284\n                    if len(words) < 2:\n                        continue\n\n                    label = words[1]\n                    if label not in whitelist:\n                        continue\n                    action = words[0]\n                    if action == '+label':\n                        add_labels.append(label)\n                        if label in del_labels:\n                            del_labels.remove(label)\n                    elif action == '-label':\n                        del_labels.append(label)\n                        if label in add_labels:\n                            add_labels.remove(label)\n\n    # prevent waffling on label actions\n    #   https://github.com/ansible/ansibullbot/issues/672\n    for ml in sorted(set(add_labels + del_labels)):\n        if iw.history.label_is_waffling(ml, limit=5):\n            if ml in add_labels:\n                add_labels.remove(ml)\n            if ml in del_labels:\n                del_labels.remove(ml)\n\n    return {\n        'label_cmds': {\n            'add': add_labels,\n            'del': del_labels\n        }\n    }\n\n\ndef get_waffling_overrides(iw, all_maintainers, maintainer_team=None):\n    if maintainer_team is None:\n        maintainer_team = []\n\n    maintainers = set(maintainer_team).union(all_maintainers)\n    overrides = []\n    for ev in iw.history.history:\n        if ev['actor'] in maintainers and ev['event'] == 'commented':\n            if '!waffling' in ev.get('body', ''):\n                lines = ev['body'].split('\\n')\n                for line in lines:\n                    if line.strip().startswith('!waffling'):\n                        line = line.strip()\n                        parts = line.strip().split()\n                        thislabel = parts[1].strip()\n                        if thislabel not in overrides:\n                            overrides.append(thislabel)\n\n    return {\n        'label_waffling_overrides': overrides\n    }\n"
  },
  {
    "path": "ansibullbot/plugins/needs_contributor.py",
    "content": "def get_needs_contributor_facts(events, botnames=None):\n    if botnames is None:\n        botnames = []\n    needs_contributor = False\n\n    for event in events:\n        if event['actor'] in botnames:\n            continue\n\n        if event['event'] == 'labeled':\n            if event['label'] in ['needs_contributor', 'waiting_on_contributor']:\n                needs_contributor = True\n                continue\n\n        if event['event'] == 'unlabeled':\n            if event['label'] == ['needs_contributor', 'waiting_on_contributor']:\n                needs_contributor = False\n                continue\n\n        if event['event'] == 'commented':\n            if '!needs_contributor' in event['body'] or '!waiting_on_contributor' in event['body']:\n                needs_contributor = False\n                continue\n\n            if 'needs_contributor' in event['body'] or 'waiting_on_contributor' in event['body']:\n                needs_contributor = True\n                continue\n\n    return {'is_needs_contributor': needs_contributor}\n"
  },
  {
    "path": "ansibullbot/plugins/needs_info.py",
    "content": "import datetime\nimport logging\n\nimport ansibullbot.constants as C\n\n\ndef is_needsinfo(iw, botnames=None):\n    if botnames is None:\n        botnames = []\n    needs_info = False\n\n    for event in iw.history.history:\n        if needs_info and \\\n                event['actor'] == iw.submitter and \\\n                event['event'] == 'commented':\n\n            needs_info = False\n            continue\n\n        # allow anyone to trigger needs_info\n        if event['actor'] in botnames:\n            continue\n\n        if event['event'] == 'labeled':\n            if event['label'] == 'needs_info':\n                needs_info = True\n                continue\n        if event['event'] == 'unlabeled':\n            if event['label'] == 'needs_info':\n                needs_info = False\n                continue\n        if event['event'] == 'commented':\n            if '!needs_info' in event['body']:\n                needs_info = False\n                continue\n            if 'needs_info' in event['body']:\n                needs_info = True\n                continue\n\n    return needs_info\n\n\ndef needs_info_template_facts(iw, meta):\n    nifacts = {\n        'template_missing': False,\n        'template_missing_sections': [],\n        'template_warning_required': False,\n        'is_needs_info': meta.get('is_needs_info')\n    }\n\n    if not iw.template_data:\n        nifacts['template_missing'] = True\n\n    itype = iw.template_data.get('issue type', '')\n    missing = []\n\n    # theoretically we only need to know the issue type for a PR\n    expected = ['issue type']\n    if not iw.is_pullrequest():\n        expected.append('component name')\n        if itype.lower() not in ('feature idea', 'documentation report'):\n            expected.append('ansible version')\n\n    component_match_strategy = meta.get('component_match_strategy', []) or []\n    for exp in expected:\n        if exp not in iw.template_data or not iw.template_data[exp]:\n            if exp == 'component name' and 'component_command' in component_match_strategy:\n                continue\n            missing.append(exp)\n\n    if missing:\n        nifacts['template_missing_sections'] = missing\n\n    if nifacts['template_missing'] or nifacts['template_missing_sections']:\n\n        # force needs_info\n        if iw.is_issue:\n            nifacts['is_needs_info'] = True\n\n        # trigger the warning comment\n        bpcs = iw.history.get_boilerplate_comments()\n        bpcs = [x[0] for x in bpcs]\n        if 'issue_missing_data' not in bpcs:\n            nifacts['template_warning_required'] = True\n\n    return nifacts\n\n\ndef needs_info_timeout_facts(history, meta):\n    NI_WARN = int(C.DEFAULT_NEEDS_INFO_WARN)\n    NI_EXPIRE = int(C.DEFAULT_NEEDS_INFO_EXPIRE - C.DEFAULT_NEEDS_INFO_WARN)\n\n    nif = {\n        'needs_info_action': None\n    }\n\n    if not meta['is_needs_info']:\n        return nif\n\n    if 'needs_info' not in history.labels:\n        return nif\n\n    lr = history.label_last_removed('needs_info')\n    ni_bpd = history.last_date_for_boilerplate('needs_info_base')\n    md_bpd = history.last_date_for_boilerplate('issue_missing_data')\n\n    now = datetime.datetime.now(datetime.timezone.utc).replace(tzinfo=datetime.timezone.utc)\n\n    # use the most recent date among the two templates\n    bpd = None\n    if not ni_bpd and md_bpd:\n        bpd = md_bpd\n    elif ni_bpd and not md_bpd:\n        bpd = ni_bpd\n    elif ni_bpd and md_bpd:\n        if ni_bpd > md_bpd:\n            bpd = ni_bpd\n        else:\n            bpd = md_bpd\n\n    # last boilerplate was sent and after that needs_info was unlabeled, starting over...\n    if lr and bpd and bpd < lr:\n        bpd = None\n\n    if bpd:\n        # fix multiple warnings\n        bp_comments = history.get_boilerplate_comments()\n        bp_comments_found = [c for c in bp_comments if c[0] == 'needs_info_base']\n\n        delta = (now - bpd).days\n\n        if delta >= NI_EXPIRE:\n            if len(bp_comments_found) >= 1:\n                nif['needs_info_action'] = 'close'\n            else:\n                # NOTE even though NI_EXPIRE time passed, we should not close\n                # because no warning has been posted so just warn.\n                # This is to remedy https://github.com/ansible/ansibullbot/issues/1329.\n                nif['needs_info_action'] = 'warn'\n        elif delta > NI_WARN:\n            if len(bp_comments_found) == 0:\n                nif['needs_info_action'] = 'warn'\n    else:\n        la = history.label_last_applied('needs_info')\n        # https://github.com/ansible/ansibullbot/issues/1254\n        if la is None:\n            # iterate and log event event in history so we can debug this problem\n            for ide, event in enumerate(history.history):\n                logging.debug('history (%s): %s' % (ide,  event))\n        else:\n            delta = (now - la).days\n            if delta > NI_WARN:\n                nif['needs_info_action'] = 'warn'\n\n    return nif\n"
  },
  {
    "path": "ansibullbot/plugins/needs_revision.py",
    "content": "import datetime\nimport logging\n\nfrom ansibullbot.exceptions import NoCIError\nfrom ansibullbot.plugins.shipit import is_approval\nfrom ansibullbot.utils.timetools import strip_time_safely\n\n\nCI_STALE_DAYS = 7\n\n\ndef get_needs_revision_facts(iw, meta, ci, maintainer_team=None, botnames=None):\n    # Thanks @adityacs for this PR. This PR requires revisions, either\n    # because it fails to build or by reviewer request. Please make the\n    # suggested revisions. When you are done, please comment with text\n    # 'ready_for_review' and we will put this PR back into review.\n\n    # a \"dirty\" mergeable_state can exist with \"successfull\" ci_state.\n\n    if maintainer_team is None:\n        maintainer_team = []\n    if botnames is None:\n        botnames = []\n\n    committer_count = None\n    needs_revision = False\n    needs_revision_msgs = []\n    merge_commits = []\n    has_merge_commit_notification = False\n    needs_rebase = False\n    needs_rebase_msgs = []\n    ci_state = None\n    ci_stale = False\n    mstate = None\n    change_requested = None\n    ready_for_review = None\n    has_commit_mention = False\n    has_commit_mention_notification = False\n\n    has_ci = False\n\n    has_remote_repo = None\n\n    user_reviews = None\n    stale_reviews = {}\n\n    # https://github.com/ansible/ansibullbot/issues/302\n    has_multiple_modules = False\n    needs_multiple_new_modules_notification = False\n\n    rmeta = {\n        'committer_count': committer_count,\n        'is_needs_revision': needs_revision,\n        'is_needs_revision_msgs': needs_revision_msgs,\n        'is_needs_rebase': needs_rebase,\n        'is_needs_rebase_msgs': needs_rebase_msgs,\n        'has_commit_mention': has_commit_mention,\n        'has_commit_mention_notification': has_commit_mention_notification,\n        'has_ci': has_ci,\n        'merge_commits': merge_commits,\n        'has_merge_commit_notification': has_merge_commit_notification,\n        'mergeable': None,\n        'mergeable_state': mstate,\n        'change_requested': change_requested,\n        'ci_state': ci_state,\n        'ci_stale': ci_stale,\n        'reviews': None,\n        'ready_for_review': ready_for_review,\n        'has_remote_repo': has_remote_repo,\n        'stale_reviews': stale_reviews,\n        'has_multiple_modules': has_multiple_modules,\n        'needs_multiple_new_modules_notification': needs_multiple_new_modules_notification\n    }\n\n    if not iw.is_pullrequest():\n        return rmeta\n\n    bpcs = iw.history.get_boilerplate_comments()\n    bpcs = [x[0] for x in bpcs]\n\n    maintainers = [x for x in maintainer_team if x not in botnames]\n\n    maintainers += meta.get('component_maintainers', [])\n\n    try:\n        ci_date = ci.get_last_full_run_date()\n    except NoCIError:\n        pass\n    else:\n        has_ci = True\n        if ci_date:\n            ci_stale = (datetime.datetime.now() - ci_date).days > CI_STALE_DAYS\n        ci_state = ci.state\n\n    logging.info('ci_state == %s' % ci_state)\n\n    # clean/unstable/dirty/unknown\n    mstate = iw.mergeable_state\n    if not mstate:\n        mstate = 'unknown'\n    logging.info('mergeable_state == %s' % mstate)\n\n    # clean/unstable/dirty/unknown\n    if mstate != 'clean':\n        if ci_state == 'failure':\n            needs_revision = True\n            needs_revision_msgs.append('ci failure')\n\n        if mstate == 'dirty':\n            needs_revision = True\n            needs_rebase = True\n            needs_revision_msgs.append('mergeable state is dirty')\n            needs_rebase_msgs.append('mergeable state is dirty')\n        elif mstate == 'unknown':\n            # if tests are still running, this needs to be ignored.\n            if ci_state not in ['pending']:\n                needs_revision = True\n                needs_revision_msgs.append('mergeable state is unknown')\n                needs_rebase = True\n                needs_rebase_msgs.append('mergeable state is unknown')\n        elif mstate == 'unstable':\n            # reduce the label churn\n            if ci_state == 'pending' and 'needs_revision' in iw.labels:\n                needs_revision = True\n                needs_rebase_msgs.append('keep label till test finished')\n        if ci_state is None:\n            needs_revision = True\n\n        # FIXME mstate == 'draft'\n    else:\n        shipits = {}  # key: actor, value: created_at\n\n        has_set_needs_revision = set()\n\n        for event in iw.history.history:\n\n            if event['actor'] in botnames:\n                continue\n\n            if event['actor'] in maintainers and \\\n                    event['actor'] != iw.submitter:\n\n                if event['event'] == 'labeled':\n                    if event['label'] == 'needs_revision':\n                        needs_revision = True\n                        needs_revision_msgs.append(\n                            '[%s] labeled' % event['actor']\n                        )\n                        has_set_needs_revision.add(event['actor'])\n                        continue\n\n                if event['event'] == 'unlabeled':\n                    if event['label'] == 'needs_revision':\n                        needs_revision = False\n                        needs_revision_msgs.append(\n                            '[%s] unlabeled' % event['actor']\n                        )\n                        continue\n\n                if event['event'] == 'commented':\n                    if is_approval(event['body']):\n                        shipits[event['actor']] = event['created_at']\n                    if '!needs_revision' in event['body']:\n                        needs_revision = False\n                        needs_revision_msgs.append(\n                            '[%s] !needs_revision' % event['actor']\n                        )\n                        continue\n                    if any(line.startswith('needs_revision') for line in event['body'].splitlines()) and \\\n                            '!needs_revision' not in event['body']:\n                        needs_revision = True\n                        needs_revision_msgs.append(\n                            '[%s] needs_revision' % event['actor']\n                        )\n                        has_set_needs_revision.add(event['actor'])\n                        continue\n\n                    if 'shipit' in event['body'].lower():\n                        if event['actor'] in has_set_needs_revision:\n                            has_set_needs_revision.remove(event['actor'])\n                            if not has_set_needs_revision:\n                                needs_revision = False\n                                continue\n\n            if event['actor'] == iw.submitter:\n                if event['event'] == 'commented':\n                    if 'ready_for_review' in event['body']:\n                        if ready_for_review is None or event['created_at'] > ready_for_review:\n                            ready_for_review = event['created_at']\n                        needs_revision = False\n                        needs_revision_msgs.append(\n                            '[%s] ready_for_review' % event['actor']\n                        )\n                        continue\n                    if 'shipit' in event['body'].lower():\n                        if ready_for_review is None or event['created_at'] > ready_for_review:\n                            ready_for_review = event['created_at']\n                        needs_revision = False\n                        needs_revision_msgs.append(\n                            '[%s] shipit' % event['actor']\n                        )\n                        continue\n\n        # This is a complicated algo ... sigh\n        user_reviews = _get_review_state(\n            iw.reviews,\n            iw.submitter,\n        )\n\n        if user_reviews:\n            last_commit = iw.commits[-1].sha\n            change_requested = _changes_requested_by(user_reviews, shipits, last_commit, ready_for_review)\n            if change_requested:\n                needs_revision = True\n                needs_revision_msgs.append(\n                    'outstanding reviews: %s' % ','.join(change_requested)\n                )\n\n    # Merge commits are bad, force a rebase\n    if iw.merge_commits:\n        needs_rebase = True\n\n        for mc in iw.merge_commits:\n            merge_commits.append(mc.html_url)\n            needs_rebase_msgs.append('merge commit %s' % mc.commit.sha)\n\n        if 'merge_commit_notify' not in bpcs:\n            has_merge_commit_notification = False\n        else:\n            mc_comments = iw.history.search_user_comments(\n                botnames,\n                'boilerplate: merge_commit_notify'\n            )\n            last_mc_comment = mc_comments[-1]\n            mc_missing = []\n            for mc in iw.merge_commits:\n                if mc.html_url not in last_mc_comment:\n                    mc_missing.append(mc)\n            if mc_missing:\n                has_merge_commit_notification = False\n            else:\n                has_merge_commit_notification = True\n\n    # Count committers\n    committer_count = len(sorted(set(iw.committer_emails)))\n\n    # we don't like @you in the commit messages\n    # https://github.com/ansible/ansibullbot/issues/375\n    for x in iw.commits:\n        words = x.commit.message.split()\n        if not words:\n            continue\n        if [x for x in words if x.startswith('@') and not x.endswith('@')]:\n            has_commit_mention = True\n            needs_revision = True\n            needs_revision_msgs.append('@ in commit message')\n            break\n\n    # make sure they're notified about the problem\n    if has_commit_mention:\n        if 'commit_msg_mentions' in bpcs:\n            has_commit_mention_notification = True\n\n    # keep track of who deleted their repo/branch\n    has_remote_repo = bool(iw.pullrequest.head.repo)\n\n    # stale reviews\n    if user_reviews:\n\n        now = datetime.datetime.now(datetime.timezone.utc)\n        commits = [x for x in iw.history.history if x['event'] == 'committed']\n        lc_date = commits[-1]['created_at']\n\n        stale_reviews = {}\n        for actor, review in user_reviews.items():\n            if review['state'] != 'CHANGES_REQUESTED':\n                continue\n            lrd = None\n            for x in iw.history.history:\n                if x['actor'] != actor:\n                    continue\n                if x['event'] == 'review_changes_requested':\n                    if not lrd or lrd < x['created_at']:\n                        lrd = x['created_at']\n                elif x['event'] == 'commented' and is_approval(x['body']):\n                    if lrd and lrd < x['created_at']:\n                        lrd = None\n\n            if lrd:\n\n                age = (now - lc_date).days\n                delta = (lc_date - lrd).days\n                if (lc_date > lrd) and (age > 7):\n                    stale_reviews[actor] = {\n                        'age': age,\n                        'delta': delta,\n                        'review_date': lrd.isoformat(),\n                        'commit_date': lc_date.isoformat()\n                    }\n\n    # https://github.com/ansible/ansibullbot/issues/302\n    if len(iw.new_modules) > 1:\n        has_multiple_modules = True\n        if 'multiple_module_notify' not in bpcs:\n            needs_multiple_new_modules_notification = True\n        needs_revision = True\n        needs_revision_msgs.append('multiple new modules')\n\n    logging.info('mergeable_state is %s' % mstate)\n    logging.info('needs_rebase is %s' % needs_rebase)\n    logging.info('needs_revision is %s' % needs_revision)\n    logging.info('ready_for_review is %s' % ready_for_review)\n\n    rmeta = {\n        'committer_count': committer_count,\n        'is_needs_revision': needs_revision,\n        'is_needs_revision_msgs': needs_revision_msgs,\n        'is_needs_rebase': needs_rebase,\n        'is_needs_rebase_msgs': needs_rebase_msgs,\n        'has_ci': has_ci,\n        'has_commit_mention': has_commit_mention,\n        'has_commit_mention_notification': has_commit_mention_notification,\n        'merge_commits': merge_commits,\n        'has_merge_commit_notification': has_merge_commit_notification,\n        'mergeable': iw.mergeable,\n        'mergeable_state': mstate,\n        'change_requested': change_requested,\n        'ci_state': ci_state,\n        'ci_stale': ci_stale,\n        'reviews': iw.reviews,\n        'ready_for_review_date': ready_for_review,\n        'ready_for_review': bool(ready_for_review),\n        'has_remote_repo': has_remote_repo,\n        'stale_reviews': stale_reviews,\n        'has_multiple_modules': has_multiple_modules,\n        'needs_multiple_new_modules_notification': needs_multiple_new_modules_notification\n    }\n    if rmeta['ready_for_review_date']:\n        rmeta['ready_for_review_date'] = rmeta['ready_for_review_date'].isoformat()\n\n    return rmeta\n\n\ndef _changes_requested_by(user_reviews, shipits, last_commit, ready_for_review):\n    outstanding = set()\n    for actor, review in user_reviews.items():\n        if review['state'] == 'CHANGES_REQUESTED':\n            if actor in shipits:\n                review_time = strip_time_safely(review['submitted_at'])\n                review_time = review_time.replace(tzinfo=datetime.timezone.utc)\n                shipit_time = shipits[actor]\n                if review_time < shipit_time:\n                    # ignore review older than shipit\n                    # https://github.com/ansible/ansibullbot/issues/671\n                    continue\n\n            if ready_for_review:\n                review_time = strip_time_safely(review['submitted_at'])\n                review_time = review_time.replace(tzinfo=datetime.timezone.utc)\n                if review['commit_id'] != last_commit and review_time < ready_for_review:\n                    # ignore review older than ready_for_review comment wrote by submitter\n                    # but only if the pull request has been updated (meaning the\n                    # last commit isn't the reviewed commit).\n                    continue\n\n            outstanding.add(actor)\n        elif review['state'] not in ['APPROVED', 'COMMENTED']:\n            logging.error('%s unhandled' % review['state'])\n\n    return list(outstanding)\n\n\ndef _get_review_state(reviews, submitter):\n    '''Calculate the final review state for each reviewer'''\n\n    # final review state for each reviewer\n    user_reviews = {}\n\n    for review in reviews:\n        actor = review['user']['login']\n\n        if actor != submitter:\n\n            if actor not in user_reviews:\n                user_reviews[actor] = {}\n\n            state = review['state']\n            submitted_at = review['submitted_at']\n            if 'commit_id' in review:\n                commit_id = review['commit_id']\n            else:\n                commit_id = None\n\n            if state in ['CHANGES_REQUESTED', 'APPROVED']:\n                user_reviews[actor]['state'] = state\n                user_reviews[actor]['submitted_at'] = submitted_at\n                user_reviews[actor]['commit_id'] = commit_id\n\n            elif state == 'COMMENTED':\n                # comments do not override change requests\n                if user_reviews[actor].get('state') != 'CHANGES_REQUESTED':\n                    user_reviews[actor]['state'] = state\n                    user_reviews[actor]['submitted_at'] = submitted_at\n                    user_reviews[actor]['commit_id'] = commit_id\n\n            elif state == 'DISMISSED':\n                # a dismissed review 'magically' turns into a comment\n                user_reviews[actor]['state'] = 'COMMENTED'\n                user_reviews[actor]['submitted_at'] = submitted_at\n                user_reviews[actor]['commit_id'] = commit_id\n\n            elif state == 'PENDING':\n                pass\n\n            else:\n                logging.error('%s not handled yet' % state)\n\n    return user_reviews\n\n\ndef get_ci_run_facts(iw, meta, ci):\n    '''Does an issue need the test result comment?'''\n    # https://github.com/ansible/ansibullbot/issues/312\n    # https://github.com/ansible/ansibullbot/issues/404\n    # https://github.com/ansible/ansibullbot/issues/418\n\n    ci_facts = {\n        'ci_test_results': None,\n        'ci_verified': None,\n        'needs_testresult_notification': None\n    }\n\n    # should only be here if the run state is failed ...\n    if not meta['has_ci'] or meta['ci_state'] != 'failure':\n        return ci_facts\n\n    if ci.last_run is None:\n        return ci_facts\n\n    # filter by the last run id\n    ci_test_results, ci_verified = ci.get_test_results()\n\n    # do validation so that we're not stepping on toes\n    if 'ci_verified' in iw.labels and not ci_verified:\n        ci_verified_last_applied = iw.history.label_last_applied('ci_verified')\n        if ci_verified_last_applied >= ci.last_run['updated_at']:\n            ci_verified = True\n\n    # no results means no notification required\n    if len(ci_test_results) < 1:\n        needs_testresult_notification = False\n    else:\n        s_bpcs = iw.history.get_boilerplate_comments_content()\n        if s_bpcs:\n            # was this specific result shown?\n            job_ids = [x['job_id'] for x in ci_test_results]\n            job_ids = sorted(set(job_ids))\n            found = []\n            for bp in s_bpcs:\n                for job_id in [x for x in job_ids if x not in found]:\n                    if job_id in bp and job_id not in found:\n                        found.append(job_id)\n            if len(found) == len(job_ids):\n                needs_testresult_notification = False\n            else:\n                needs_testresult_notification = True\n        else:\n            needs_testresult_notification = True\n\n    return {\n        'ci_test_results': ci_test_results,\n        'ci_verified': ci_verified,\n        'needs_testresult_notification': needs_testresult_notification\n    }\n"
  },
  {
    "path": "ansibullbot/plugins/notifications.py",
    "content": "import logging\n\n\ndef get_notification_facts(issuewrapper, meta, botmeta=None):\n    '''Build facts about mentions/pings'''\n    iw = issuewrapper\n\n    nfacts = {\n        'to_notify': [],\n        'to_assign': []\n    }\n\n    if botmeta and not botmeta.get('notifications', False):\n        return nfacts\n\n    if iw.is_pullrequest() and iw.merge_commits:\n        return nfacts\n\n    # who is assigned?\n    current_assignees = iw.assignees\n\n    # add people from files and from matches\n    if iw.is_pullrequest() or meta.get('guessed_components') or meta.get('component_matches') or meta.get('module_match'):\n\n        fassign = sorted(set(meta['component_maintainers'][:]))\n        fnotify = sorted(set(meta['component_notifiers'][:]))\n\n        if 'ansible' in fassign:\n            fassign.remove('ansible')\n        if 'ansible' in fnotify:\n            fnotify.remove('ansible')\n\n        for user in fnotify:\n            if user == iw.submitter:\n                continue\n            if not iw.history.last_notified(user) and \\\n                    not iw.history.was_assigned(user) and \\\n                    not iw.history.was_subscribed(user) and \\\n                    not iw.history.last_comment(user):\n\n                nfacts['to_notify'].append(user)\n\n            else:\n                logging.info(f'{user} already notified')\n\n        for user in fassign:\n            if user == iw.submitter:\n                continue\n            if user in nfacts['to_assign']:\n                continue\n            #if user not in current_assignees and iw.repo.repo.has_in_assignees(user):\n            if user not in current_assignees and iw.repo.has_in_assignees(user):\n                nfacts['to_assign'].append(user)\n\n    # prevent duplication\n    nfacts['to_assign'] = sorted(set(nfacts['to_assign']))\n    nfacts['to_notify'] = sorted(\n        set(nfacts['to_notify'])  # + nfacts[u'to_assign'])\n    )\n\n    return nfacts\n"
  },
  {
    "path": "ansibullbot/plugins/shipit.py",
    "content": "import itertools\nimport logging\nfrom fnmatch import fnmatch\n\n\ndef replace_ansible(maintainers, ansible_members, bots=None):\n    '''Replace -ansible- with the -humans- in the org'''\n    if bots is None:\n        bots = []\n    newlist = []\n    for m in maintainers:\n        if m != 'ansible':\n            newlist.append(m)\n        else:\n            newlist += ansible_members\n    newlist = sorted(set(newlist))\n    newlist = [x for x in newlist if x not in bots]\n    return newlist\n\n\ndef is_approval(body):\n    if not body:\n        return False\n    lines = [x.strip() for x in body.split()]\n    return 'shipit' in lines or '+1' in lines or 'LGTM' in lines or 'rebuild_merge' in lines\n\n\ndef is_rebuild_merge(body):\n    if not body:\n        return False\n    lines = [x.strip() for x in body.split()]\n    return 'rebuild_merge' in lines\n\n\ndef get_automerge_facts(issuewrapper, meta):\n    '''Can this be automerged? If not, why?'''\n\n    # AUTOMERGE\n    # * New module, existing namespace: require a \"shipit\" from some\n    #   other maintainer in the namespace. (Ideally, identify a maintainer\n    #   for the entire namespace.)\n    # * New module, new namespace: require discussion with the creator\n    #   of the namespace, which will likely be a vendor.\n    # * And all new modules, of course, go in as \"preview\" mode.\n\n    def create_ameta(automerge, automerge_status):\n        return {'automerge': automerge, 'automerge_status': automerge_status}\n\n    issue = issuewrapper\n    is_supershipit = meta['supershipit']\n\n    if not meta['shipit']:\n        return create_ameta(False, 'automerge shipit test failed')\n\n    # https://github.com/ansible/ansibullbot/issues/430\n    if meta['is_backport']:\n        return create_ameta(False, 'automerge backport test failed')\n\n    if issue.wip:\n        return create_ameta(False, 'automerge WIP test failed')\n\n    if not issue.is_pullrequest():\n        return create_ameta(False, 'automerge is_pullrequest test failed')\n\n    if meta['merge_commits']:\n        return create_ameta(False, 'automerge merge_commits test failed')\n\n    if meta['has_commit_mention']:\n        return create_ameta(False, 'automerge commit @mention test failed')\n\n    if meta['is_needs_revision']:\n        return create_ameta(False, 'automerge needs_revision test failed')\n\n    if meta['is_needs_rebase']:\n        return create_ameta(False, 'automerge needs_rebase test failed')\n\n    if meta['is_needs_info']:\n        return create_ameta(False, 'automerge needs_info test failed')\n\n    if not meta['has_ci']:\n        return create_ameta(False, 'automerge has_ci test failed')\n\n    if not meta['mergeable']:\n        return create_ameta(False, 'automerge mergeable test failed')\n\n    if meta['ci_stale']:\n        return create_ameta(False, 'automerge ci_stale test failed')\n\n    # https://github.com/ansible/ansibullbot/issues/904\n    if meta['ci_state'] != 'success':\n        return create_ameta(False, 'automerge ci_state test failed')\n\n    # component support is a list of the support levels for each file\n    cs = [x['support'] for x in meta.get('component_matches', []) if not x['repo_filename'].endswith('/ignore.txt')]\n    cs = sorted(set(cs))\n    if cs not in [['community'], []]:\n        return create_ameta(False, 'automerge community support test failed')\n\n    # extra checks for anything not covered by a supershipit\n    if not is_supershipit:\n\n        if meta['is_new_module']:\n            return create_ameta(False, 'automerge new_module test failed')\n\n        if meta['is_new_directory']:\n            return create_ameta(False, 'automerge is_new_directory test failed')\n\n        if not meta['is_module']:\n            return create_ameta(False, 'automerge is_module test failed')\n\n        if not meta['module_match']:\n            return create_ameta(False, 'automerge module_match test failed')\n\n        for pr_file in issue.pr_files:\n\n            thisfn = pr_file.filename\n            if thisfn.startswith('lib/ansible/modules'):\n                continue\n\n            elif fnmatch(thisfn, 'test/sanity/*/*.txt'):\n                if pr_file.additions or pr_file.status == 'added':\n                    # new exception added, addition must be checked by an human\n                    return create_ameta(False, 'automerge new file(s) test failed')\n                if pr_file.deletions:\n                    # new exception delete\n                    continue\n            elif thisfn.startswith('changelogs/fragments/') and thisfn.endswith(('.yml', '.yaml')):\n                continue\n            else:\n                # other file modified, pull-request must be checked by an human\n                return create_ameta(False, 'automerge !module file(s) test failed')\n\n    return create_ameta(True, 'automerge tests passed')\n\n\ndef needs_community_review(meta):\n    '''Notify community for more shipits?'''\n\n    if not meta['is_new_module']:\n        return False\n\n    if meta['shipit']:\n        return False\n\n    if meta['is_needs_revision']:\n        return False\n\n    if meta['is_needs_rebase']:\n        return False\n\n    if meta['is_needs_info']:\n        return False\n\n    if meta['ci_state'] == 'pending':\n        return False\n\n    if not meta['has_ci']:\n        return False\n\n    if not meta['mergeable']:\n        return False\n\n    mm = meta.get('module_match', {})\n    if not mm:\n        return False\n\n    # expensive call done earlier in processing\n    if not meta['notify_community_shipit']:\n        return False\n\n    return True\n\n\ndef get_shipit_facts(issuewrapper, inmeta, botmeta_files, maintainer_team=None, botnames=None):\n    \"\"\" Count shipits by maintainers/community/other \"\"\"\n\n    # supershipit - maintainers with isolated commit access\n    # maintainers - people who maintain this file/module\n    # community - people who maintain file(s) in the same directory\n    # other - anyone else who comments with shipit/+1/LGTM\n\n    if botnames is None:\n        botnames = []\n    if maintainer_team is None:\n        maintainer_team = []\n    meta = inmeta.copy()\n    iw = issuewrapper\n    nmeta = {\n        'shipit': False,\n        'supershipit': False,\n        'owner_pr': False,\n        'shipit_ansible': False,\n        'shipit_community': False,\n        'shipit_count_other': False,\n        'shipit_count_community': False,\n        'shipit_count_maintainer': False,\n        'shipit_count_ansible': False,\n        'shipit_count_vtotal': False,\n        'shipit_count_historical': False,\n        'shipit_actors': None,\n        'supershipit_actors': None,\n        'community_usernames': [],\n        'notify_community_shipit': False,\n        'is_rebuild_merge': False,\n    }\n\n    if not iw.is_pullrequest():\n        return nmeta\n\n    # https://github.com/ansible/ansibullbot/issues/1147\n    meta['component_matches'] = [\n        x for x in meta.get('component_matches', [])\n        if not x['repo_filename'].startswith('changelogs/fragments/')\n    ]\n\n    files = [f for f in iw.files if not f.startswith('changelogs/fragments/')]\n\n    # https://github.com/ansible/ansibullbot/issues/1238\n    meta['component_matches'] = [\n        x for x in meta.get('component_matches', [])\n        if not x['repo_filename'].startswith('test/sanity')\n    ]\n    files = [f for f in files if not (f.startswith('test/sanity') and f.endswith('ignore.txt'))]\n\n    # make sure only deletions from ignore.txt are allowed\n    for pr_file in iw.pr_files:\n        if pr_file.filename.startswith('test/sanity') and pr_file.filename.endswith('ignore.txt'):\n            if pr_file.additions > 0:\n                logging.debug('failed shipit test for additions on %s' % pr_file.filename)\n                return nmeta\n\n    module_utils_files_owned = 0  # module_utils files for which submitter is maintainer\n    if meta['is_module_util']:\n        for f in files:\n            if f.startswith('lib/ansible/module_utils') and f in botmeta_files:\n                maintainers = botmeta_files[f].get('maintainers', [])\n                if maintainers and (iw.submitter in maintainers):\n                    module_utils_files_owned += 1\n\n    modules_files_owned = 0\n    if not meta['is_new_module']:\n        for f in files:\n            if f.startswith('lib/ansible/modules') and iw.submitter in meta['component_maintainers']:\n                modules_files_owned += 1\n    nmeta['owner_pr'] = modules_files_owned + module_utils_files_owned == len(files)\n\n    # https://github.com/ansible/ansibullbot/issues/722\n    if iw.wip:\n        logging.debug('WIP PRs do not get shipits')\n        return nmeta\n\n    if meta['is_needs_revision'] or meta['is_needs_rebase']:\n        logging.debug('PRs with needs_revision or needs_rebase label do not get shipits')\n        return nmeta\n\n    supershipiteers_byfile = {}\n    supershipiteers_byuser = {}\n    for cm in meta.get('component_matches', []):\n        _ss = cm.get('supershipit', [])\n        supershipiteers_byfile[cm['repo_filename']] = _ss[:]\n        for ss in _ss:\n            if ss not in supershipiteers_byuser:\n                supershipiteers_byuser[ss] = []\n            supershipiteers_byuser[ss].append(cm['repo_filename'])\n\n    maintainers = meta.get('component_maintainers', [])\n    maintainers = replace_ansible(maintainers, maintainer_team, bots=botnames)\n\n    # community is the other maintainers in the same namespace\n    community = meta.get('component_namespace_maintainers', [])\n    community = [x for x in community if x != 'ansible' and\n                 x not in maintainer_team and\n                 x != 'DEPRECATED']\n\n    # shipit tallies\n    ansible_shipits = 0\n    maintainer_shipits = 0\n    community_shipits = 0\n    other_shipits = 0\n    shipit_actors = []\n    shipit_actors_other = []\n    supershipiteers_voted = set()\n    rebuild_merge = False\n    shipits_historical = set()\n\n    for event in iw.history.history:\n        if event['event'] not in ['commented', 'committed', 'review_approved', 'review_comment']:\n            continue\n        if event['actor'] in botnames:\n            continue\n\n        logging.info('check %s \"%s\" for shipit' % (event['actor'], event.get('body')))\n\n        # commits reset the counters\n        if event['event'] == 'committed':\n            logging.info(event)\n            ansible_shipits = 0\n            maintainer_shipits = 0\n            community_shipits = 0\n            other_shipits = 0\n            shipit_actors = []\n            shipit_actors_other = []\n            supershipiteers_voted = set()\n            rebuild_merge = False\n            logging.info('commit detected, resetting shipit tallies')\n            continue\n\n        actor = event['actor']\n        body = event.get('body', '')\n        body = body.strip()\n\n        if not is_approval(body):\n            continue\n\n        # historical shipits (keep track of all of them, even if reset)\n        shipits_historical.add(actor)\n\n        if actor in maintainer_team and is_rebuild_merge(body):\n            rebuild_merge = True\n            logging.info('%s shipit [rebuild_merge]' % actor)\n        else:\n            logging.info('%s shipit' % actor)\n\n        # super shipits\n        if actor in supershipiteers_byuser:\n            supershipiteers_voted.add(actor)\n\n        # ansible shipits\n        if actor in maintainer_team:\n            if actor not in shipit_actors:\n                ansible_shipits += 1\n                shipit_actors.append(actor)\n            continue\n\n        # maintainer shipits\n        if actor in maintainers:\n            if actor not in shipit_actors:\n                maintainer_shipits += 1\n                shipit_actors.append(actor)\n            continue\n\n        # community shipits\n        if actor in community:\n            if actor not in shipit_actors:\n                community_shipits += 1\n                shipit_actors.append(actor)\n            continue\n\n        # other shipits\n        if actor not in shipit_actors_other:\n            other_shipits += 1\n            shipit_actors_other.append(actor)\n\n        continue\n\n    # submitters should count if they are core team/maintainers/community\n    if iw.submitter in maintainer_team:\n        if iw.submitter not in shipit_actors:\n            ansible_shipits += 1\n            shipit_actors.append(iw.submitter)\n        shipits_historical.add(iw.submitter)\n    elif iw.submitter in maintainers:\n        if iw.submitter not in shipit_actors:\n            maintainer_shipits += 1\n            shipit_actors.append(iw.submitter)\n        shipits_historical.add(iw.submitter)\n    elif iw.submitter in community:\n        if iw.submitter not in shipit_actors:\n            community_shipits += 1\n            shipit_actors.append(iw.submitter)\n        shipits_historical.add(iw.submitter)\n\n    nmeta['shipit_count_other'] = other_shipits\n    nmeta['shipit_count_community'] = community_shipits\n    nmeta['shipit_count_maintainer'] = maintainer_shipits\n    nmeta['shipit_count_ansible'] = ansible_shipits\n    nmeta['shipit_actors'] = shipit_actors\n    nmeta['shipit_actors_other'] = shipit_actors_other\n    nmeta['community_usernames'] = sorted(community)\n    nmeta['shipit_count_historical'] = list(shipits_historical)\n    nmeta['shipit_count_htotal'] = len(list(shipits_historical))\n\n    total = community_shipits + maintainer_shipits + ansible_shipits\n    nmeta['shipit_count_vtotal'] = total + other_shipits\n\n    if rebuild_merge:\n        nmeta['is_rebuild_merge'] = True\n\n    # include shipits from other people to push over the edge\n    if total == 1 and other_shipits > 2:\n        total += other_shipits\n\n    if total > 1 or rebuild_merge:\n        nmeta['shipit'] = True\n    elif meta['is_new_module'] or \\\n            (len(maintainers) == 1 and maintainer_shipits == 1):\n        # don't notify if there is no maintainer or if submitter is the only namespace maintainer\n        if set(community) - {iw.submitter}:\n            bpc = iw.history.get_boilerplate_comments()\n            bpc = [x[0] for x in bpc]\n            if 'community_shipit_notify' not in bpc:\n                nmeta['notify_community_shipit'] = True\n\n    logging.info('total shipits: %s' % total)\n\n    # supershipit ...\n    #   if a supershipiteer for each file exists and has blessed the PR\n    #   on the current commit, then override all shipit tallies and get this PR merged\n    if supershipiteers_voted:\n        nmeta['supershipit_actors'] = list(supershipiteers_voted)\n        cm_files = [x['repo_filename'] for x in meta['component_matches']]\n        ss_files = set()\n        for ssv in supershipiteers_voted:\n            for fn in supershipiteers_byuser[ssv]:\n                ss_files.add(fn)\n\n        if sorted(set(cm_files)) == sorted(set(ss_files)):\n            logging.info('supershipit enabled on %s' % iw.html_url)\n            nmeta['supershipit'] = True\n            nmeta['shipit'] = True\n        else:\n            for cm_file in sorted(cm_files):\n                if cm_file not in ss_files:\n                    logging.info('%s is not governed by supershipit' % cm_file)\n\n    return nmeta\n\n\n# NOTE this function is too expensive for submitters with many commits and\n# therefore is not currently used some form of caching needs to be introduced\n# in order to not waste resources on re-counting the commits per each issue\n# processing.\n# Currently this function is not used due to the above. The facts themselves\n# were not used directly by the bot prior to removing a call to this function.\ndef get_submitter_facts(issuewrapper, meta, emails_cache, component_matcher):\n    '''Summary stats of submitter's commit history'''\n    sfacts = {\n        'submitter_previous_commits': 0,\n        'submitter_previous_commits_for_pr_files': 0,\n    }\n\n    login = issuewrapper.submitter\n    all_emails = itertools.chain(\n        component_matcher.email_cache.items(),\n        emails_cache.items(),\n    )\n\n    emails = {k for k, v in all_emails if v == login}\n\n    email_map = \\\n        component_matcher.gitrepo.get_commits_by_email(emails)\n\n    for value in list(email_map.values()):\n        sfacts['submitter_previous_commits'] += value['commit_count']\n\n    for filen in meta.get('component_filenames', ()):\n        for email_v in list(email_map.values()):\n            sfacts['submitter_previous_commits_for_pr_files'] += email_v['commit_count_byfile'].get(filen, 0)\n\n    return sfacts\n"
  },
  {
    "path": "ansibullbot/plugins/small_patch.py",
    "content": "import re\n\n\nFILE_MAX_CHANGED_LINES = 6\nSMALL_CHUNKS_MAX_COUNT = 2\n\nRE_CHUNK = r'@@ -\\d+,\\d+ \\+\\d+,\\d+ @@'\n\n\nclass CommitFile:\n    def __init__(self, raw_data):\n        self.raw_data = raw_data\n\n    @property\n    def filename(self):\n        return self.raw_data.get('filename')\n\n    @property\n    def changes(self):\n        return self.raw_data.get('changes')\n\n\ndef get_small_patch_facts(iw):\n    sfacts = {\n        'is_small_patch': False\n    }\n\n    if not iw.is_pullrequest():\n        return sfacts\n\n    small_chunks_changed = 0\n\n    for commit in iw.commits:\n        files = getattr(commit, 'files')\n        if files is None:\n            # \"Sorry, this diff is temporarily unavailable due to heavy server load.\"\n            # Preserve small_patch label to prevent potential waffling\n            sfacts['is_small_patch'] = 'small_patch' in iw.labels\n            return sfacts\n\n        for changed_file in files:\n\n            if isinstance(changed_file, dict):\n                changed_file = CommitFile(changed_file)\n\n            if changed_file.filename.startswith('test/'):\n                continue\n\n            if not changed_file.raw_data['status'] == 'modified':\n                return sfacts\n\n            try:\n                chunks_in_file_count = len(re.findall(RE_CHUNK, changed_file.raw_data['patch']))\n            except KeyError:\n                continue\n\n            if changed_file.changes > FILE_MAX_CHANGED_LINES:\n                return sfacts\n            elif changed_file.changes:\n                small_chunks_changed += chunks_in_file_count\n\n        if small_chunks_changed > SMALL_CHUNKS_MAX_COUNT:\n            return sfacts\n\n\n    if small_chunks_changed:\n        sfacts['is_small_patch'] = True\n\n    return sfacts\n"
  },
  {
    "path": "ansibullbot/plugins/spam.py",
    "content": "import ansibullbot.constants as C\n\n\ndef get_spam_facts(issuewrapper):\n\n    iw = issuewrapper\n\n    sfacts = {\n        'spam_comment_ids': set()\n    }\n\n    whitelist = [\n        'boilerplate: components_banner',\n        'boilerplate: notify'\n    ]\n\n    comments = iw.comments[:]\n    comments = [x for x in comments if x['actor'] in C.DEFAULT_BOT_NAMES]\n\n    cdates = {}\n    cmap = {}\n    for comment in comments:\n        cdates[comment['id']] = comment['created_at']\n        if comment['body'] not in cmap:\n            cmap[comment['body']] = set()\n        cmap[comment['body']].add(comment['id'])\n\n    spamkeys = set()\n    for k,v in cmap.items():\n        whitelisted = False\n        for wl in whitelist:\n            if wl in k:\n                whitelisted = True\n                break\n        if whitelisted:\n            if len(list(v)) > 1:\n                spamkeys.add(k)\n\n    for spamkey in spamkeys:\n        commentids = list(cmap[spamkey])\n        commentids = sorted(commentids, key=lambda x: cdates[x])\n        for cid in commentids[:-1]:\n            sfacts['spam_comment_ids'].add(cid)\n\n    sfacts['spam_comment_ids'] = list(sfacts['spam_comment_ids'])\n\n    return sfacts\n"
  },
  {
    "path": "ansibullbot/plugins/test_support_plugins.py",
    "content": "import os.path\n\n\n# https://github.com/ansible/ansible/pull/46028\n# https://github.com/ansible/ansible/pull/68449\n# https://github.com/ansible/ansible/pull/69299\n# https://github.com/ansible/ansible/pull/69280\n# https://github.com/ansible/ansible/pull/69326\n\n\ndef get_test_support_plugins_facts(iw, component_matcher):\n    tmeta = {\n        'test_support_plugins': {}\n    }\n\n    if not (iw.is_pullrequest() and iw.files):\n        return tmeta\n\n    for fn in iw.files:\n        if not fn.startswith('test/support/'):\n            continue\n\n        tmeta['test_support_plugins'][fn] = []\n\n        try:\n            plugin_path = fn.split('plugins/')[1]\n        except IndexError:\n            # not a plugin\n            continue\n\n        plugin_path_parts = plugin_path.split('/')\n        flatten_plugin_path = os.path.join(plugin_path_parts[0], plugin_path_parts[-1])\n\n        for pattern in (plugin_path, flatten_plugin_path):\n            collections = component_matcher.search_ecosystem(pattern)\n            for collection_data in collections:\n                collection_name = collection_data.split(':')[1]\n                if collection_name not in tmeta['test_support_plugins'][fn]:\n                    tmeta['test_support_plugins'][fn].append(collection_name)\n\n    return tmeta\n"
  },
  {
    "path": "ansibullbot/plugins/traceback.py",
    "content": "import re\n\n\nRE_FILE_LINE = r'file \"(.*)\", line \\d+, in'\n\n\ndef get_traceback_facts(iw):\n    tfacts = {\n        'has_traceback': False\n    }\n\n    try:\n        body = iw.body.lower()\n    except AttributeError:\n        return tfacts\n\n    tb_cond = [\n        'traceback (most recent call last):' in body,\n        'to see the full traceback' in body,\n        re.search(RE_FILE_LINE, body),\n    ]\n\n    if any(tb_cond):\n        tfacts['has_traceback'] = True\n\n    return tfacts\n"
  },
  {
    "path": "ansibullbot/utils/__init__.py",
    "content": ""
  },
  {
    "path": "ansibullbot/utils/botmetadata.py",
    "content": "import logging\nimport os\n\nfrom string import Template\n\nimport yaml\n\nfrom ansibullbot._text_compat import to_text\n\n\n\n# https://github.com/ansible/ansibullbot/issues/1155#issuecomment-457731630\nclass NoAliasDumper(yaml.Dumper):\n    def ignore_aliases(self, data):\n        return True\n\n\ndef compute_file_children(filenames):\n    '''Optimized version of itertools.combinations for parent+children combos'''\n\n    filenames = sorted(filenames)\n\n    iterfiles = {}\n    for idp,parent in enumerate(filenames):\n\n        if parent not in iterfiles:\n            iterfiles[parent] = []\n\n        started = False\n        for fn in filenames[idp:]:\n            if parent == fn:\n                continue\n            if fn.startswith(parent):\n                started = True\n                iterfiles[parent].append(fn)\n            elif started:\n                break\n\n    return iterfiles\n\n\nclass BotMetadataParser:\n\n    @staticmethod\n    def parse_yaml(data):\n\n        def clean_list_items(inlist):\n            if isinstance(inlist, list):\n                inlist = to_text(inlist)\n\n            inlist = inlist.replace(\"[\", '')\n            inlist = inlist.replace(\"]\", '')\n            inlist = inlist.replace(\"'\", '')\n            inlist = inlist.replace(\",\", '')\n            inlist = inlist.split()\n            return inlist\n\n        def join_if_list(list_or_str):\n            if not isinstance(list_or_str, list):\n                return list_or_str\n\n            return ' '.join(list_or_str)\n\n        def fix_lists(data):\n            string_macros = {\n                k: join_if_list(v)\n                for k, v in data['macros'].items()\n            }\n            for k, v in data['files'].items():\n                if v is None:\n                    continue\n\n                for k2, v2 in v.items():\n                    if isinstance(v2, str) and '$' in v2:\n                        tmpl = Template(v2)\n                        newv2 = tmpl.substitute(**string_macros)\n                        newv2 = clean_list_items(newv2)\n                        data['files'][k][k2] = newv2\n                        v2 = newv2\n\n                    if isinstance(v2, str):\n                        data['files'][k][k2] = v2.split()\n\n            return data\n\n        def fix_keys(data):\n            replace = []\n            for k in data['files'].keys():\n                if '$' in k:\n                    replace.append(k)\n            for x in replace:\n                tmpl = Template(x)\n                newkey = tmpl.substitute(**data['macros'])\n                data['files'][newkey] = data['files'][x]\n                data['files'].pop(x, None)\n\n            paths = list(data['files'].keys())\n            for p in paths:\n                normpath = os.path.normpath(p)\n                if p != normpath:\n                    metadata = data['files'].pop(p)\n                    data['files'][normpath] = metadata\n            return data\n\n        def extend_labels(data):\n            for k, v in data['files'].items():\n                # labels from path(s)\n                if v is None:\n                    continue\n                labels = v.get('labels', [])\n                if isinstance(labels, str):\n                    labels = labels.split()\n                    labels = [x.strip() for x in labels if x.strip()]\n                path_labels = [x.strip() for x in k.split('/') if x.strip()]\n                for x in path_labels:\n                    x = x.replace('.py', '')\n                    x = x.replace('.ps1', '')\n                    if x not in labels:\n                        labels.append(x)\n                data['files'][k]['labels'] = sorted(set(labels))\n\n            return data\n\n        def fix_teams(data):\n            for k, v in data['macros'].items():\n                if v is None:\n                    continue\n                if not k.startswith('team_') or isinstance(v, list):\n                    continue\n                names = v.split()\n                data['macros'][k] = names\n            return data\n\n        def _propagate(files, top, child, field, multivalued=True):\n            '''Copy key named 'field' from top to child\n            - with multivalued, child inherits from all ancestors\n            - else child inherits from the nearest ancestor and only if field is\n              not already set at child level\n            '''\n            top_entries = files[top].get(field, [])\n            if top_entries:\n                if field not in files[child]:\n                    files[child][field] = []\n\n                # track the origin of the data\n                field_keys = '%s_keys' % field\n                if field_keys not in files[child]:\n                    files[child][field_keys] = []\n\n                if multivalued:\n                    files[child][field_keys].append(top)\n                    for entry in top_entries:\n                        if entry not in files[child][field]:\n                            files[child][field].append(entry)\n                elif not files[child][field] or (files[child][field_keys] and len(files[child][field_keys][0]) < len(top)):\n                    # use parent keyword only if:\n                    # 1. either keyword is not set\n                    # 2. or keyword has been already inherited from a less specific path\n                    files[child][field_keys] = [top]\n                    files[child][field] = top_entries[:]\n\n        def propagate_keys(data):\n            '''maintainers and ignored keys defined at a directory level are copied to subpath'''\n\n            files = data['files']\n            iterfiles = compute_file_children(files.keys())\n\n            for file1, files2 in iterfiles.items():\n                for file2 in files2:\n                    top = min(file1, file2)\n                    child = max(file1, file2)\n\n                    _propagate(files, top, child, 'maintainers')\n                    _propagate(files, top, child, 'ignored')\n                    _propagate(files, top, child, 'labels')\n                    _propagate(files, top, child, 'support', multivalued=False)\n                    _propagate(files, top, child, 'supported_by', multivalued=False)\n\n        #################################\n        #   PARSE\n        #################################\n\n        # https://github.com/ansible/ansibullbot/issues/1155#issuecomment-457731630\n        logging.info('botmeta: load yaml')\n        ydata_orig = yaml.safe_load(data)\n        ydata = yaml.safe_load(yaml.dump(ydata_orig, Dumper=NoAliasDumper))\n\n        # fix the team macros\n        logging.info('botmeta: fix teams')\n        ydata = fix_teams(ydata)\n\n        # fix the macro'ized file keys\n        logging.info('botmeta: fix keys')\n        ydata = fix_keys(ydata)\n\n        logging.info('botmeta: iterate files')\n        for k, v in ydata['files'].items():\n            if v is None:\n                # convert empty val in dict\n                ydata['files'][k] = {}\n                continue\n\n            if isinstance(v, bytes):\n                v = to_text(v)\n\n            if isinstance(v, str):\n                # convert string vals to a maintainers key in a dict\n                ydata['files'][k] = {\n                    'maintainers': v\n                }\n\n            ydata['files'][k]['maintainers_keys'] = [k]\n\n        # replace macros in files section\n        logging.info('botmeta: fix lists')\n        ydata = fix_lists(ydata)\n\n        # extend labels by filepath\n        logging.info('botmeta: extend labels')\n        ydata = extend_labels(ydata)\n\n        # key inheritance\n        logging.info('botmeta: propogate keys')\n        propagate_keys(ydata)\n\n        return ydata\n"
  },
  {
    "path": "ansibullbot/utils/component_tools.py",
    "content": "import copy\nimport difflib\nimport json\nimport logging\nimport os\nimport re\n\nfrom collections import OrderedDict\n\nfrom ansibullbot._text_compat import to_bytes, to_text\nfrom ansibullbot.utils.extractors import ModuleExtractor\nfrom ansibullbot.utils.galaxy import GalaxyQueryTool\n\n\nMODULES_FLATTEN_MAP = {\n    'lib/ansible/modules/inventory/add_host.py': 'lib/ansible/modules/add_host.py',\n    'lib/ansible/modules/packaging/os/apt.py': 'lib/ansible/modules/apt.py',\n    'lib/ansible/modules/packaging/os/apt_key.py': 'lib/ansible/modules/apt_key.py',\n    'lib/ansible/modules/packaging/os/apt_repository.py': 'lib/ansible/modules/apt_repository.py',\n    'lib/ansible/modules/files/assemble.py': 'lib/ansible/modules/assemble.py',\n    'lib/ansible/modules/utilities/logic/assert.py': 'lib/ansible/modules/assert.py',\n    'lib/ansible/modules/utilities/logic/async_status.py': 'lib/ansible/modules/async_status.py',\n    'lib/ansible/modules/utilities/logic/async_wrapper.py': 'lib/ansible/modules/async_wrapper.py',\n    'lib/ansible/modules/files/blockinfile.py': 'lib/ansible/modules/blockinfile.py',\n    'lib/ansible/modules/commands/command.py': 'lib/ansible/modules/command.py',\n    'lib/ansible/modules/files/copy.py': 'lib/ansible/modules/copy.py',\n    'lib/ansible/modules/system/cron.py': 'lib/ansible/modules/cron.py',\n    'lib/ansible/modules/system/debconf.py': 'lib/ansible/modules/debconf.py',\n    'lib/ansible/modules/utilities/logic/debug.py': 'lib/ansible/modules/debug.py',\n    'lib/ansible/modules/packaging/os/dnf.py': 'lib/ansible/modules/dnf.py',\n    'lib/ansible/modules/packaging/os/dpkg_selections.py': 'lib/ansible/modules/dpkg_selections.py',\n    'lib/ansible/modules/commands/expect.py': 'lib/ansible/modules/expect.py',\n    'lib/ansible/modules/utilities/logic/fail.py': 'lib/ansible/modules/fail.py',\n    'lib/ansible/modules/files/fetch.py': 'lib/ansible/modules/fetch.py',\n    'lib/ansible/modules/files/file.py': 'lib/ansible/modules/file.py',\n    'lib/ansible/modules/files/find.py': 'lib/ansible/modules/find.py',\n    'lib/ansible/modules/system/gather_facts.py': 'lib/ansible/modules/gather_facts.py',\n    'lib/ansible/modules/net_tools/basics/get_url.py': 'lib/ansible/modules/get_url.py',\n    'lib/ansible/modules/system/getent.py': 'lib/ansible/modules/getent.py',\n    'lib/ansible/modules/source_control/git.py': 'lib/ansible/modules/git.py',\n    'lib/ansible/modules/system/group.py': 'lib/ansible/modules/group.py',\n    'lib/ansible/modules/inventory/group_by.py': 'lib/ansible/modules/group_by.py',\n    'lib/ansible/modules/system/hostname.py': 'lib/ansible/modules/hostname.py',\n    'lib/ansible/modules/utilities/logic/import_playbook.py': 'lib/ansible/modules/import_playbook.py',\n    'lib/ansible/modules/utilities/logic/import_role.py': 'lib/ansible/modules/import_role.py',\n    'lib/ansible/modules/utilities/logic/import_tasks.py': 'lib/ansible/modules/import_tasks.py',\n    'lib/ansible/modules/utilities/logic/include.py': 'lib/ansible/modules/include.py',\n    'lib/ansible/modules/utilities/logic/include_role.py': 'lib/ansible/modules/include_role.py',\n    'lib/ansible/modules/utilities/logic/include_tasks.py': 'lib/ansible/modules/include_tasks.py',\n    'lib/ansible/modules/utilities/logic/include_vars.py': 'lib/ansible/modules/include_vars.py',\n    'lib/ansible/modules/system/iptables.py': 'lib/ansible/modules/iptables.py',\n    'lib/ansible/modules/system/known_hosts.py': 'lib/ansible/modules/known_hosts.py',\n    'lib/ansible/modules/files/lineinfile.py': 'lib/ansible/modules/lineinfile.py',\n    'lib/ansible/modules/utilities/helper/meta.py': 'lib/ansible/modules/meta.py',\n    'lib/ansible/modules/packaging/os/package.py': 'lib/ansible/modules/package.py',\n    'lib/ansible/modules/packaging/os/package_facts.py': 'lib/ansible/modules/package_facts.py',\n    'lib/ansible/modules/utilities/logic/pause.py': 'lib/ansible/modules/pause.py',\n    'lib/ansible/modules/system/ping.py': 'lib/ansible/modules/ping.py',\n    'lib/ansible/modules/packaging/language/pip.py': 'lib/ansible/modules/pip.py',\n    'lib/ansible/modules/commands/raw.py': 'lib/ansible/modules/raw.py',\n    'lib/ansible/modules/system/reboot.py': 'lib/ansible/modules/reboot.py',\n    'lib/ansible/modules/files/replace.py': 'lib/ansible/modules/replace.py',\n    'lib/ansible/modules/packaging/os/rpm_key.py': 'lib/ansible/modules/rpm_key.py',\n    'lib/ansible/modules/commands/script.py': 'lib/ansible/modules/script.py',\n    'lib/ansible/modules/system/service.py': 'lib/ansible/modules/service.py',\n    'lib/ansible/modules/system/service_facts.py': 'lib/ansible/modules/service_facts.py',\n    'lib/ansible/modules/utilities/logic/set_fact.py': 'lib/ansible/modules/set_fact.py',\n    'lib/ansible/modules/utilities/logic/set_stats.py': 'lib/ansible/modules/set_stats.py',\n    'lib/ansible/modules/system/setup.py': 'lib/ansible/modules/setup.py',\n    'lib/ansible/modules/commands/shell.py': 'lib/ansible/modules/shell.py',\n    'lib/ansible/modules/net_tools/basics/slurp.py': 'lib/ansible/modules/slurp.py',\n    'lib/ansible/modules/files/stat.py': 'lib/ansible/modules/stat.py',\n    'lib/ansible/modules/source_control/subversion.py': 'lib/ansible/modules/subversion.py',\n    'lib/ansible/modules/system/systemd.py': 'lib/ansible/modules/systemd.py',\n    'lib/ansible/modules/system/sysvinit.py': 'lib/ansible/modules/sysvinit.py',\n    'lib/ansible/modules/files/tempfile.py': 'lib/ansible/modules/tempfile.py',\n    'lib/ansible/modules/files/template.py': 'lib/ansible/modules/template.py',\n    'lib/ansible/modules/files/unarchive.py': 'lib/ansible/modules/unarchive.py',\n    'lib/ansible/modules/net_tools/basics/uri.py': 'lib/ansible/modules/uri.py',\n    'lib/ansible/modules/system/user.py': 'lib/ansible/modules/user.py',\n    'lib/ansible/modules/utilities/logic/wait_for.py': 'lib/ansible/modules/wait_for.py',\n    'lib/ansible/modules/utilities/logic/wait_for_connection.py': 'lib/ansible/modules/wait_for_connection.py',\n    'lib/ansible/modules/packaging/os/yum.py': 'lib/ansible/modules/yum.py',\n    'lib/ansible/modules/packaging/os/yum_repository.py': 'lib/ansible/modules/yum_repository.py',\n}\n\n\ndef make_prefixes(filename):\n    # make a byte by byte list of prefixes for this fp\n    indexes = range(0, len(filename) + 1)\n    indexes = [1-x for x in indexes]\n    indexes = [x for x in indexes if x < 0]\n    indexes = [None] + indexes\n    prefixes = [filename[:x] for x in indexes]\n    return prefixes\n\n\nclass AnsibleComponentMatcher:\n\n    GALAXY_MANIFESTS = {}\n    STOPWORDS = ['ansible', 'core', 'plugin']\n    STOPCHARS = ['\"', \"'\", '(', ')', '?', '*', '`', ',', ':', '?', '-']\n    BLACKLIST = ['new module', 'new modules']\n    MODULES = OrderedDict()\n    MODULE_NAMES = []\n    MODULE_NAMESPACE_DIRECTORIES = []\n\n    # FIXME: THESE NEED TO GO INTO botmeta\n    # ALSO SEE search_by_regex_generic ...\n    KEYWORDS = {\n        'no component': 'lib/ansible/cli/__init__.py',\n        'none': 'lib/ansible/cli/__init__.py',\n        'N/A': 'lib/ansible/cli/__init__.py',\n        'n/a': 'lib/ansible/cli/__init__.py',\n        'all': 'lib/ansible/cli/__init__.py',\n        'ansiballz': 'lib/ansible/executor/module_common.py',\n        'ansible-console': 'lib/ansible/cli/console.py',\n        'ansible-galaxy': 'lib/ansible/galaxy',\n        'ansible-inventory': 'lib/ansible/cli/inventory.py',\n        'ansible logging': 'lib/ansible/plugins/callback/default.py',\n        'ansible-playbook': 'lib/ansible/playbook',\n        'ansible playbook': 'lib/ansible/playbook',\n        'ansible playbooks': 'lib/ansible/playbook',\n        'ansible-pull': 'lib/ansible/cli/pull.py',\n        'ansible-vault': 'lib/ansible/parsing/vault',\n        'ansible-vault edit': 'lib/ansible/parsing/vault',\n        'ansible-vault show': 'lib/ansible/parsing/vault',\n        'ansible-vault decrypt': 'lib/ansible/parsing/vault',\n        'ansible-vault encrypt': 'lib/ansible/parsing/vault',\n        'async': 'lib/ansible/modules/utilities/logic/async_wrapper.py',\n        'become': 'lib/ansible/playbook/become.py',\n        'block': 'lib/ansible/playbook/block.py',\n        'blocks': 'lib/ansible/playbook/block.py',\n        'bot': 'docs/docsite/rst/community/development_process.rst',\n        'callback plugin': 'lib/ansible/plugins/callback',\n        'callback plugins': 'lib/ansible/plugins/callback',\n        'callbacks': 'lib/ansible/plugins/callback/__init__.py',\n        'cli': 'lib/ansible/cli/__init__.py',\n        'conditional': 'lib/ansible/playbook/conditional.py',\n        'core': 'lib/ansible/cli/__init__.py',\n        'docs': 'docs/docsite/README.md',\n        'docs.ansible.com': 'docs/docsite/README.md',\n        'delegate_to': 'lib/ansible/playbook/task.py',\n        'ec2.py dynamic inventory script': 'contrib/inventory/ec2.py',\n        'ec2 dynamic inventory script': 'contrib/inventory/ec2.py',\n        'ec2 inventory script': 'contrib/inventory/ec2.py',\n        'facts': 'lib/ansible/module_utils/facts',\n        'galaxy': 'lib/ansible/galaxy',\n        'groupvars': 'lib/ansible/vars/hostvars.py',\n        'group vars': 'lib/ansible/vars/hostvars.py',\n        'handlers': 'lib/ansible/playbook/handler.py',\n        'hostvars': 'lib/ansible/vars/hostvars.py',\n        'host vars': 'lib/ansible/vars/hostvars.py',\n        'integration tests': 'test/integration',\n        'inventory script': 'contrib/inventory',\n        'jinja2 template system': 'lib/ansible/template',\n        'logging': 'lib/ansible/plugins/callback/default.py',\n        'module_utils': 'lib/ansible/module_utils',\n        'multiple modules': None,\n        'new module(s) request': None,\n        'new modules request': None,\n        'new module request': None,\n        'new module': None,\n        'network_cli': 'lib/ansible/plugins/connection/network_cli.py',\n        'network_cli.py': 'lib/ansible/plugins/connection/network_cli.py',\n        'network modules': 'lib/ansible/modules/network',\n        'nxos': 'lib/ansible/modules/network/nxos/__init__.py',\n        'paramiko': 'lib/ansible/plugins/connection/paramiko_ssh.py',\n        'redis fact caching': 'lib/ansible/plugins/cache/redis.py',\n        'role': 'lib/ansible/playbook/role',\n        'roles': 'lib/ansible/playbook/role',\n        'ssh': 'lib/ansible/plugins/connection/ssh.py',\n        'ssh authentication': 'lib/ansible/plugins/connection/ssh.py',\n        'setup / facts': 'lib/ansible/modules/system/setup.py',\n        'setup': 'lib/ansible/modules/system/setup.py',\n        'task executor': 'lib/ansible/executor/task_executor.py',\n        'testing': 'test/',\n        'validate-modules': 'test/sanity/code-smell',\n        'vault': 'lib/ansible/parsing/vault',\n        'vault edit': 'lib/ansible/parsing/vault',\n        'vault documentation': 'lib/ansible/parsing/vault',\n        'with_items': 'lib/ansible/playbook/loop_control.py',\n        'windows modules': 'lib/ansible/modules/windows',\n        'winrm': 'lib/ansible/plugins/connection/winrm.py'\n    }\n\n    def __init__(self, gitrepo=None, botmeta=None, usecache=False, cachedir=None, email_cache=None, use_galaxy=False):\n        self.gitrepo = gitrepo\n        self.usecache = usecache\n        self.cachedir = cachedir\n        self.use_galaxy = use_galaxy\n        self.botmeta = botmeta if botmeta else {'files': {}}\n        self.email_cache = email_cache\n\n        if not use_galaxy:\n            self.GQT = None\n        else:\n            self.GQT = GalaxyQueryTool(cachedir=self.cachedir)\n\n        self.strategy = None\n        self.strategies = []\n\n        self.update()\n\n    def update(self, email_cache=None, botmeta=None):\n        if botmeta is not None:\n            self.botmeta = botmeta\n        if email_cache:\n            self.email_cache = email_cache\n        self.index_files()\n        self.cache_keywords()\n\n    def get_module_meta(self, checkoutdir, filename):\n\n        if self.cachedir:\n            cdir = os.path.join(self.cachedir, 'module_extractor_cache')\n        else:\n            cdir = '/tmp/ansibot_module_extractor_cache'\n        if not os.path.exists(cdir) and self.usecache:\n            os.makedirs(cdir)\n        cfile = os.path.join(cdir, '%s.json' % os.path.basename(filename))\n\n        bmeta = None\n        if not os.path.exists(cfile) or not self.usecache:\n            efile = os.path.join(checkoutdir, filename)\n            if not os.path.exists(efile):\n                fdata = self.gitrepo.get_file_content(filename, follow=True)\n                ME = ModuleExtractor(None, filedata=fdata, email_cache=self.email_cache)\n            else:\n                ME = ModuleExtractor(os.path.join(checkoutdir, filename), email_cache=self.email_cache)\n            if filename not in self.botmeta['files']:\n                bmeta = {\n                    'deprecated': os.path.basename(filename).startswith('_'),\n                    'labels': os.path.dirname(filename).split('/'),\n                    'authors': ME.authors,\n                    'maintainers': ME.authors,\n                    'maintainers_keys': [],\n                    'notified': ME.authors,\n                    'ignored': [],\n                    'support': 'core' if os.path.exists(efile) else 'community',\n                }\n            else:\n                bmeta = self.botmeta['files'][filename].copy()\n                if 'notified' not in bmeta:\n                    bmeta['notified'] = []\n                if 'maintainers' not in bmeta:\n                    bmeta['maintainers'] = []\n                if not bmeta.get('supported_by'):\n                    bmeta['supported_by'] = 'community'\n                if 'authors' not in bmeta:\n                    bmeta['authors'] = []\n                for x in ME.authors:\n                    if x not in bmeta['authors']:\n                        bmeta['authors'].append(x)\n                    if x not in bmeta['maintainers']:\n                        bmeta['maintainers'].append(x)\n                    if x not in bmeta['notified']:\n                        bmeta['notified'].append(x)\n                if not bmeta.get('labels'):\n                    bmeta['labels'] = os.path.dirname(filename).split('/')\n                bmeta['deprecated'] = os.path.basename(filename).startswith('_')\n\n            # clean out the ignorees\n            if 'ignored' in bmeta:\n                for ignoree in bmeta['ignored']:\n                    for thiskey in ['maintainers', 'notified']:\n                        while ignoree in bmeta[thiskey]:\n                            bmeta[thiskey].remove(ignoree)\n\n            if self.usecache:\n                with open(cfile, 'w') as f:\n                    f.write(json.dumps(bmeta))\n\n        if bmeta is None and self.usecache:\n            with open(cfile) as f:\n                bmeta = json.loads(f.read())\n\n        return bmeta\n\n    def index_files(self):\n        self.MODULES = OrderedDict()\n        self.MODULE_NAMES = []\n        self.MODULE_NAMESPACE_DIRECTORIES = []\n\n        for fn in self.gitrepo.module_files:\n            if self.gitrepo.isdir(fn):\n                continue\n            if not self.gitrepo.exists(fn):\n                continue\n            mname = os.path.basename(fn)\n            mname = mname.replace('.py', '').replace('.ps1', '')\n            if mname.startswith('__'):\n                continue\n            mdata = {\n                'name': mname,\n                'repo_filename': fn,\n                'filename': fn\n            }\n            if fn not in self.MODULES:\n                self.MODULES[fn] = mdata.copy()\n            else:\n                self.MODULES[fn].update(mdata)\n\n        self.MODULE_NAMESPACE_DIRECTORIES = (os.path.dirname(x) for x in self.gitrepo.module_files)\n        self.MODULE_NAMESPACE_DIRECTORIES = sorted(set(self.MODULE_NAMESPACE_DIRECTORIES))\n\n        # make a list of names by enumerating the files\n        self.MODULE_NAMES = (os.path.basename(x) for x in self.gitrepo.module_files)\n        self.MODULE_NAMES = (x for x in self.MODULE_NAMES if x.endswith(('.py', '.ps1')))\n        self.MODULE_NAMES = (x.replace('.ps1', '').replace('.py', '') for x in self.MODULE_NAMES)\n        self.MODULE_NAMES = (x for x in self.MODULE_NAMES if not x.startswith('__'))\n        self.MODULE_NAMES = sorted(set(self.MODULE_NAMES))\n\n        # append module names from botmeta\n        bmodules = [x for x in self.botmeta['files'] if x.startswith('lib/ansible/modules')]\n        bmodules = [x for x in bmodules if x.endswith('.py') or x.endswith('.ps1')]\n        bmodules = [x for x in bmodules if '__init__' not in x]\n        for bmodule in bmodules:\n            mn = os.path.basename(bmodule).replace('.py', '').replace('.ps1', '')\n            mn = mn.lstrip('_')\n            if mn not in self.MODULE_NAMES:\n                self.MODULE_NAMES.append(mn)\n            if bmodule not in self.MODULES:\n                self.MODULES[bmodule] = {\n                    'filename': bmodule,\n                    'repo_filename': bmodule,\n                    'name': mn\n                }\n\n        # pre collections modules\n        pre_coll_modules = [\n            x for x in self.gitrepo.list_files_by_branch('origin/stable-2.9')\n            if x.startswith('lib/ansible/modules') and '__init__' not in x and\n                (x.endswith('.py') or x.endswith('.ps1'))\n        ]\n        for module in pre_coll_modules:\n            mn = os.path.basename(module).replace('.py', '').replace('.ps1', '')\n            mn = mn.lstrip('_')\n            if mn not in self.MODULE_NAMES:\n                self.MODULE_NAMES.append(mn)\n            if module not in self.MODULES:\n                self.MODULES[module] = {\n                    'filename': module,\n                    'repo_filename': module,\n                    'name': mn\n                }\n\n        checkoutdir = os.path.abspath(self.gitrepo.checkoutdir)\n\n        _modules = self.MODULES.copy()\n        for k, v in _modules.items():\n            kparts = os.path.splitext(k)\n            if kparts[-1] == '.ps1':\n                _k = kparts[0] + '.py'\n                checkpath = os.path.join(checkoutdir, _k)\n                if not os.path.isfile(checkpath):\n                    _k = k\n            else:\n                _k = k\n            logging.debug('extract %s' % k)\n            # FIXME fmeta = self.get_module_meta(checkoutdir, k, _k)\n            fmeta = self.get_module_meta(checkoutdir, k)\n            if k in self.botmeta['files']:\n                self.botmeta['files'][k].update(fmeta)\n            else:\n                self.botmeta['files'][k] = copy.deepcopy(fmeta)\n            self.MODULES[k].update(fmeta)\n\n    def cache_keywords(self):\n        for k, v in self.botmeta['files'].items():\n            if not v.get('keywords'):\n                continue\n            for kw in v['keywords']:\n                if kw not in self.KEYWORDS:\n                    self.KEYWORDS[kw] = k\n\n    def clean_body(self, body, internal=False):\n        body = body.lower()\n        body = body.strip()\n        for SC in self.STOPCHARS:\n            if body.startswith(SC):\n                body = body.lstrip(SC)\n                body = body.strip()\n            if body.endswith(SC):\n                body = body.rstrip(SC)\n                body = body.strip()\n            if internal and SC in body:\n                body = body.replace(SC, '')\n                body = body.strip()\n        body = body.strip()\n        return body\n\n    def match(self, issuewrapper):\n        iw = issuewrapper\n        matchdata = self.match_components(\n            iw.title,\n            iw.body,\n            iw.template_data.get('component_raw'),\n            files=iw.files\n        )\n        return matchdata\n\n    def match_components(self, title, body, component, files=None):\n        \"\"\"Make a list of matching files with metadata\"\"\"\n\n        self.strategy = None\n        self.strategies = []\n\n        # No matching necessary for PRs, but should provide consistent api\n        if files:\n            matched_filenames = files[:]\n        elif not component or component is None:\n            return []\n        elif ' ' not in component and '\\n' not in component and component.startswith('lib/') and self.gitrepo.existed(component):\n            matched_filenames = [component]\n        else:\n            matched_filenames = []\n            if component is None:\n                return matched_filenames\n\n            logging.debug(f'match \"{component}\"')\n\n            delimiters = ['\\n', ',', ' + ', ' & ']\n            delimited = False\n            for delimiter in delimiters:\n                if delimiter in component:\n                    delimited = True\n                    components = component.split(delimiter)\n                    for _component in components:\n                        if len(_component.split('.')) == 3:\n                            # fqcn\n                            matched_filenames += self._match_component(title, _component.split('.')[-1])\n                        _matches = self._match_component(title, _component)\n                        self.strategies.append(self.strategy)\n\n                        # bypass for blacklist\n                        if None in _matches:\n                            _matches = []\n\n                        matched_filenames += _matches\n\n                    # do not process any more delimiters\n                    break\n\n            if not delimited:\n                if len(component.split('.')) == 3:\n                    # fqcn\n                    matched_filenames += self._match_component(title, component.split('.')[-1])\n                matched_filenames += self._match_component(title, component)\n                self.strategies.append(self.strategy)\n\n                # bypass for blacklist\n                if None in matched_filenames:\n                    return []\n\n            # reduce subpaths\n            if matched_filenames:\n                matched_filenames = self.reduce_filepaths(matched_filenames)\n\n        # mitigate flattening of the modules directory\n        if matched_filenames:\n            matched_filenames = [MODULES_FLATTEN_MAP.get(fn, fn) for fn in matched_filenames]\n\n        # create metadata for each matched file\n        component_matches = []\n        matched_filenames = sorted(set(matched_filenames))\n        for fn in matched_filenames:\n            component_matches.append(self.get_meta_for_file(fn))\n            if self.gitrepo.exists(fn):\n                component_matches[-1]['exists'] = True\n                component_matches[-1]['existed'] = True\n            elif self.gitrepo.existed(fn):\n                component_matches[-1]['exists'] = False\n                component_matches[-1]['existed'] = True\n            else:\n                component_matches[-1]['exists'] = False\n                component_matches[-1]['existed'] = False\n\n        return component_matches\n\n    def search_ecosystem(self, component):\n\n        # never search collections for files that still exist\n        if self.gitrepo.exists(component):\n            return []\n\n        if component.endswith('/') and self.gitrepo.exists(component.rstrip('/')):\n            return []\n\n        matched_filenames = []\n\n        if self.GQT is not None:\n            # see what is actually in galaxy ...\n            matched_filenames += self.GQT.search_galaxy(component)\n\n            # fallback to searching for migrated directories ...\n            if not matched_filenames and component.startswith('lib/ansible/modules'):\n                matched_filenames += self.GQT.fuzzy_search_galaxy(component)\n\n        return matched_filenames\n\n    def _match_component(self, title, component):\n        \"\"\"Find matches for a single line\"\"\"\n\n        if not component:\n            return []\n\n        matched_filenames = []\n\n        # sometimes we get urls ...\n        #   https://github.com/ansible/ansible/issues/68553\n        #   https//github.com/ansible/ansible/blob/devel/docs/docsite/rst/user_guide...\n        if component.startswith('http'):\n            if '/blob/' in component:\n                # chop off the branch+path\n                component = component.split('/blob/')[-1]\n                # chop off the path\n                component = component.split('/', 1)[-1]\n\n        # don't neeed to match if it's a known file ...\n        if self.gitrepo.exists(component.strip()):\n            return [component.strip()]\n\n        # context sets the path prefix to narrow the search window\n        if 'module_util' in title.lower() or 'module_util' in component.lower():\n            context = 'lib/ansible/module_utils'\n        elif 'module util' in title.lower() or 'module util' in component.lower():\n            context = 'lib/ansible/module_utils'\n        elif 'module' in title.lower() or 'module' in component.lower():\n            context = 'lib/ansible/modules'\n        elif 'dynamic inventory' in title.lower() or 'dynamic inventory' in component.lower():\n            context = 'contrib/inventory'\n        elif 'inventory script' in title.lower() or 'inventory script' in component.lower():\n            context = 'contrib/inventory'\n        elif 'inventory plugin' in title.lower() or 'inventory plugin' in component.lower():\n            context = 'lib/ansible/plugins/inventory'\n        elif 'integration test' in title.lower() or 'integration test' in component.lower():\n            context = 'test/integration/targets'\n            component = component.replace('integration test', '').strip()\n        else:\n            context = None\n\n        if component not in self.STOPWORDS and component not in self.STOPCHARS:\n            if not matched_filenames:\n                matched_filenames += self.search_by_keywords(component, exact=True)\n                if matched_filenames:\n                    self.strategy = 'search_by_keywords'\n\n            if not matched_filenames:\n                matched_filenames += self.search_by_module_name(component)\n                if matched_filenames:\n                    self.strategy = 'search_by_module_name'\n\n            if not matched_filenames:\n                matched_filenames += self.search_by_regex_module_globs(component)\n                if matched_filenames:\n                    self.strategy = 'search_by_regex_module_globs'\n\n            if not matched_filenames:\n                matched_filenames += self.search_by_regex_modules(component)\n                if matched_filenames:\n                    self.strategy = 'search_by_regex_modules'\n\n            if not matched_filenames:\n                matched_filenames += self.search_by_regex_generic(component)\n                if matched_filenames:\n                    self.strategy = 'search_by_regex_generic'\n\n            if not matched_filenames:\n                matched_filenames += self.search_by_regex_urls(component)\n                if matched_filenames:\n                    self.strategy = 'search_by_regex_urls'\n\n            if not matched_filenames:\n                matched_filenames += self.search_by_filepath(component, context=context)\n                if matched_filenames:\n                    self.strategy = 'search_by_filepath'\n                if not matched_filenames:\n                    matched_filenames += self.search_by_filepath(component, partial=True)\n                    if matched_filenames:\n                        self.strategy = 'search_by_filepath[partial]'\n\n            if not matched_filenames:\n                matched_filenames += self.search_by_keywords(component, exact=False)\n                if matched_filenames:\n                    self.strategy = 'search_by_keywords!exact'\n\n            if matched_filenames:\n                matched_filenames += self.include_modules_from_test_targets(matched_filenames)\n\n        return matched_filenames\n\n    def search_by_module_name(self, component):\n        matches = []\n\n        component = self.clean_body(component)\n\n        # docker-container vs. docker_container\n        if component not in self.MODULE_NAMES:\n            component = component.replace('-', '_')\n\n        if component in self.MODULE_NAMES:\n            mmatch = self.find_module_match(component)\n            if mmatch:\n                if isinstance(mmatch, list):\n                    for x in mmatch:\n                        matches.append(x['repo_filename'])\n                else:\n                    matches.append(mmatch['repo_filename'])\n\n        return matches\n\n    def search_by_keywords(self, component, exact=True):\n        \"\"\"Simple keyword search\"\"\"\n\n        component = component.lower()\n        matches = []\n        if component in self.STOPWORDS:\n            matches = [None]\n        elif component in self.KEYWORDS:\n            matches = [self.KEYWORDS[component]]\n        elif not exact:\n            for k, v in self.KEYWORDS.items():\n                if ' ' + k + ' ' in component or ' ' + k + ' ' in component.lower():\n                    logging.debug(f'keyword match: {k}')\n                    matches.append(v)\n                elif ' ' + k + ':' in component or ' ' + k + ':' in component:\n                    logging.debug(f'keyword match: {k}')\n                    matches.append(v)\n                elif component.endswith(' ' + k) or component.lower().endswith(' ' + k):\n                    logging.debug(f'keyword match: {k}')\n                    matches.append(v)\n\n                elif (k in component or k in component.lower()) and k in self.BLACKLIST:\n                    logging.debug(f'blacklist  match: {k}')\n                    matches.append(None)\n\n        return matches\n\n    def search_by_regex_urls(self, body):\n        # http://docs.ansible.com/ansible/latest/copy_module.html\n        # http://docs.ansible.com/ansible/latest/dev_guide/developing_modules.html\n        # http://docs.ansible.com/ansible/latest/postgresql_db_module.html\n        # [helm module](https//docs.ansible.com/ansible/2.4/helm_module.html)\n        # Windows module: win_robocopy\\nhttp://docs.ansible.com/ansible/latest/win_robocopy_module.html\n        # Examples:\\n* archive (https://docs.ansible.com/ansible/archive_module.html)\\n* s3_sync (https://docs.ansible.com/ansible/s3_sync_module.html)\n        # https//github.com/ansible/ansible/blob/devel/lib/ansible/modules/windows/win_dsc.ps1L228\n\n        matches = []\n\n        urls = re.findall(\n            r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+',\n            body\n        )\n        if urls:\n            for url in urls:\n                url = url.rstrip(')')\n                if '/blob' in url and url.endswith('.py'):\n                    parts = url.split('/')\n                    bindex = parts.index('blob')\n                    fn = '/'.join(parts[bindex+2:])\n                    matches.append(fn)\n                elif '_module.html' in url:\n                    parts = url.split('/')\n                    fn = parts[-1].replace('_module.html', '')\n                    choices = [x for x in self.gitrepo.files if '/' + fn in x or '/_' + fn in x]\n                    choices = [x for x in choices if 'lib/ansible/modules' in x]\n\n                    if len(choices) > 1:\n                        choices = [x for x in choices if '/' + fn + '.py' in x or '/' + fn + '.ps1' in x or '/_' + fn + '.py' in x]\n\n                    if not choices:\n                        pass\n                    elif len(choices) == 1:\n                        matches.append(choices[0])\n                    else:\n                        pass\n                else:\n                    pass\n\n        return matches\n\n    def search_by_regex_modules(self, body):\n        # foo module\n        # foo and bar modules\n        # foo* modules\n        # foo* module\n\n        body = body.lower()\n        logging.debug(f'attempt regex match on: {body}')\n\n        # https://www.tutorialspoint.com/python/python_reg_expressions.htm\n        patterns = [\n            r'\\:\\n(\\S+)\\.py',\n            r'(\\S+)\\.py',\n            r'\\-(\\s+)(\\S+)(\\s+)module',\n            r'\\`ansible_module_(\\S+)\\.py\\`',\n            r'module(\\s+)\\-(\\s+)(\\S+)',\n            r'module(\\s+)(\\S+)',\n            r'\\`(\\S+)\\`(\\s+)module',\n            r'(\\S+)(\\s+)module',\n            r'the (\\S+) command',\n            r'(\\S+) \\(.*\\)',\n            r'(\\S+)\\-module',\n            r'modules/(\\S+)',\n            r'module\\:(\\s+)\\`(\\S+)\\`',\n            r'module\\: (\\S+)',\n            r'module (\\S+)',\n            r'module `(\\S+)`',\n            r'module: (\\S+)',\n            r'new (\\S+) module',\n            r'the (\\S+) module',\n            r'the \\\"(\\S+)\\\" module',\n            r':\\n(\\S+) module',\n            r'(\\S+) module',\n            r'(\\S+) core module',\n            r'(\\S+) extras module',\n            r':\\n\\`(\\S+)\\` module',\n            r'\\`(\\S+)\\` module',\n            r'`(\\S+)` module',\n            r'(\\S+)\\* modules',\n            r'(\\S+) and (\\S+)',\n            r'(\\S+) or (\\S+)',\n            r'(\\S+) \\+ (\\S+)',\n            r'(\\S+) \\& (\\S)',\n            r'(\\S+) and (\\S+) modules',\n            r'(\\S+) or (\\S+) module',\n            r'(\\S+)_module',\n            r'action: (\\S+)',\n            r'action (\\S+)',\n            r'ansible_module_(\\S+)\\.py',\n            r'ansible_module_(\\S+)',\n            r'ansible_modules_(\\S+)\\.py',\n            r'ansible_modules_(\\S+)',\n            r'(\\S+) task',\n            r'(\\s+)\\((\\S+)\\)',\n            r'(\\S+)(\\s+)(\\S+)(\\s+)modules',\n            r'(\\S+)(\\s+)module\\:(\\s+)(\\S+)',\n            r'\\-(\\s+)(\\S+)(\\s+)module',\n            r'\\:(\\s+)(\\S+)(\\s+)module',\n            r'\\-(\\s+)ansible(\\s+)(\\S+)(\\s+)(\\S+)(\\s+)module',\n            r'.*(\\s+)(\\S+)(\\s+)module.*'\n        ]\n\n        matches = []\n\n        logging.debug(f'check patterns against: {body}')\n\n        for pattern in patterns:\n            mobj = re.match(pattern, body, re.M | re.I)\n\n            if mobj:\n                logging.debug(f'pattern {pattern} matched on \"{body}\"')\n\n                for x in range(0, mobj.lastindex+1):\n                    try:\n                        mname = mobj.group(x)\n                        logging.debug(f'mname: {mname}')\n                        if mname == body:\n                            continue\n                        mname = self.clean_body(mname)\n                        if not mname.strip():\n                            continue\n                        mname = mname.strip().lower()\n                        if ' ' in mname:\n                            continue\n                        if '/' in mname:\n                            continue\n\n                        mname = mname.replace('.py', '').replace('.ps1', '')\n                        logging.debug(f'--> {mname}')\n\n                        # attempt to match a module\n                        module_match = self.find_module_match(mname)\n\n                        if not module_match:\n                            pass\n                        elif isinstance(module_match, list):\n                            for m in module_match:\n                                matches.append(m['repo_filename'])\n                        elif isinstance(module_match, dict):\n                            matches.append(module_match['repo_filename'])\n                    except Exception as e:\n                        logging.error(e)\n\n                if matches:\n                    break\n\n        return matches\n\n    def search_by_regex_module_globs(self, body):\n        # All AWS modules\n        # BigIP modules\n        # NXOS modules\n        # azurerm modules\n\n        matches = []\n        body = self.clean_body(body)\n        logging.debug(f'try globs on: {body}')\n\n        keymap = {\n            'all': None,\n            'ec2': 'lib/ansible/modules/cloud/amazon',\n            'ec2_*': 'lib/ansible/modules/cloud/amazon',\n            'aws': 'lib/ansible/modules/cloud/amazon',\n            'amazon': 'lib/ansible/modules/cloud/amazon',\n            'google': 'lib/ansible/modules/cloud/google',\n            'gce': 'lib/ansible/modules/cloud/google',\n            'gcp': 'lib/ansible/modules/cloud/google',\n            'bigip': 'lib/ansible/modules/network/f5',\n            'nxos': 'lib/ansible/modules/network/nxos',\n            'azure': 'lib/ansible/modules/cloud/azure',\n            'azurerm': 'lib/ansible/modules/cloud/azure',\n            'openstack': 'lib/ansible/modules/cloud/openstack',\n            'ios': 'lib/ansible/modules/network/ios',\n        }\n\n        regexes = [\n            r'(\\S+) ansible modules',\n            r'all (\\S+) based modules',\n            r'all (\\S+) modules',\n            r'.* all (\\S+) modules.*',\n            r'(\\S+) modules',\n            r'(\\S+\\*) modules',\n            r'all cisco (\\S+\\*) modules',\n        ]\n\n        mobj = None\n        for x in regexes:\n            mobj = re.match(x, body)\n            if mobj:\n                logging.debug(f'matched glob: {x}')\n                break\n\n        if not mobj:\n            logging.debug('no glob matches')\n\n        if mobj:\n            keyword = mobj.group(1)\n            if not keyword.strip():\n                pass\n            elif keyword in keymap:\n                if keymap[keyword]:\n                    matches.append(keymap[keyword])\n            else:\n\n                if '*' in keyword:\n                    keyword = keyword.replace('*', '')\n\n                # check for directories first\n                fns = [x for x in self.MODULE_NAMESPACE_DIRECTORIES if keyword in x]\n\n                # check for files second\n                if not fns:\n                    fns = [x for x in self.gitrepo.module_files\n                           if 'lib/ansible/modules' in x\n                           and keyword in x]\n\n                if fns:\n                    matches += fns\n\n        if matches:\n            matches = sorted(set(matches))\n\n        return matches\n\n    def search_by_regex_generic(self, body):\n        # foo dynamic inventory script\n        # foo filter\n\n        # https://www.tutorialspoint.com/python/python_reg_expressions.htm\n        patterns = [\n            [r'(.*) action plugin', 'lib/ansible/plugins/action'],\n            [r'(.*) inventory plugin', 'lib/ansible/plugins/inventory'],\n            [r'(.*) dynamic inventory', 'contrib/inventory'],\n            [r'(.*) dynamic inventory (script|file)', 'contrib/inventory'],\n            [r'(.*) inventory script', 'contrib/inventory'],\n            [r'(.*) filter', 'lib/ansible/plugins/filter'],\n            [r'(.*) jinja filter', 'lib/ansible/plugins/filter'],\n            [r'(.*) jinja2 filter', 'lib/ansible/plugins/filter'],\n            [r'(.*) template filter', 'lib/ansible/plugins/filter'],\n            [r'(.*) fact caching plugin', 'lib/ansible/plugins/cache'],\n            [r'(.*) fact caching module', 'lib/ansible/plugins/cache'],\n            [r'(.*) lookup plugin', 'lib/ansible/plugins/lookup'],\n            [r'(.*) lookup', 'lib/ansible/plugins/lookup'],\n            [r'(.*) callback plugin', 'lib/ansible/plugins/callback'],\n            [r'(.*)\\.py callback', 'lib/ansible/plugins/callback'],\n            [r'callback plugin (.*)', 'lib/ansible/plugins/callback'],\n            [r'(.*) stdout callback', 'lib/ansible/plugins/callback'],\n            [r'stdout callback (.*)', 'lib/ansible/plugins/callback'],\n            [r'stdout_callback (.*)', 'lib/ansible/plugins/callback'],\n            [r'(.*) callback plugin', 'lib/ansible/plugins/callback'],\n            [r'(.*) connection plugin', 'lib/ansible/plugins/connection'],\n            [r'(.*) connection type', 'lib/ansible/plugins/connection'],\n            [r'(.*) connection', 'lib/ansible/plugins/connection'],\n            [r'(.*) transport', 'lib/ansible/plugins/connection'],\n            [r'connection=(.*)', 'lib/ansible/plugins/connection'],\n            [r'connection: (.*)', 'lib/ansible/plugins/connection'],\n            [r'connection (.*)', 'lib/ansible/plugins/connection'],\n            [r'strategy (.*)', 'lib/ansible/plugins/strategy'],\n            [r'(.*) strategy plugin', 'lib/ansible/plugins/strategy'],\n            [r'(.*) module util', 'lib/ansible/module_utils'],\n            [r'ansible-galaxy (.*)', 'lib/ansible/galaxy'],\n            [r'ansible-playbook (.*)', 'lib/ansible/playbook'],\n            [r'ansible/module_utils/(.*)', 'lib/ansible/module_utils'],\n            [r'module_utils/(.*)', 'lib/ansible/module_utils'],\n            [r'lib/ansible/module_utils/(.*)', 'lib/ansible/module_utils'],\n            [r'(\\S+) documentation fragment', 'lib/ansible/utils/module_docs_fragments'],\n        ]\n\n        body = self.clean_body(body)\n\n        matches = []\n\n        for pattern in patterns:\n            mobj = re.match(pattern[0], body, re.M | re.I)\n\n            if mobj:\n                logging.debug(f'pattern hit: {pattern}')\n                fname = mobj.group(1)\n                fname = fname.lower()\n\n                fpath = os.path.join(pattern[1], fname)\n\n                if fpath in self.gitrepo.files:\n                    matches.append(fpath)\n                elif os.path.join(pattern[1], fname + '.py') in self.gitrepo.files:\n                    fname = os.path.join(pattern[1], fname + '.py')\n                    matches.append(fname)\n                else:\n                    # fallback to the directory\n                    matches.append(pattern[1])\n\n        return matches\n\n    def search_by_filepath(self, body, partial=False, context=None):\n        \"\"\"Find known filepaths in body\"\"\"\n\n        matches = []\n        body = self.clean_body(body)\n\n        if not body:\n            return []\n        if body.lower() in self.STOPCHARS:\n            return []\n        if body.lower() in self.STOPWORDS:\n            return []\n\n        # 'inventory manager' vs. 'inventory/manager'\n        if partial and ' ' in body:\n            body = body.replace(' ', '/')\n\n        if 'site-packages' in body:\n            res = re.match('(.*)/site-packages/(.*)', body)\n            if res:\n                body = res.group(2)\n        if 'modules/core/' in body:\n            body = body.replace('modules/core/', 'modules/')\n        if 'modules/extras/' in body:\n            body = body.replace('modules/extras/', 'modules/')\n        if 'ansible-modules-core/' in body:\n            body = body.replace('ansible-modules-core/', '/')\n        if 'ansible-modules-extras/' in body:\n            body = body.replace('ansible-modules-extras/', '/')\n        if body.startswith('ansible/lib/ansible'):\n            body = body.replace('ansible/lib', 'lib')\n        if body.startswith('ansible/') and not body.startswith('ansible/modules'):\n            body = body.replace('ansible/', '', 1)\n        if 'module/' in body:\n            body = body.replace('module/', 'modules/')\n\n        logging.debug(f'search filepath [{context}] [{partial}]: {body}')\n\n        if len(body) < 2:\n            return []\n\n        if '/' in body:\n            body_paths = body.split('/')\n        elif ' ' in body:\n            body_paths = body.split()\n            body_paths = [x.strip() for x in body_paths if x.strip()]\n        else:\n            body_paths = [body]\n\n        if 'networking' in body_paths:\n            ix = body_paths.index('networking')\n            body_paths[ix] = 'network'\n        if 'plugin' in body_paths:\n            ix = body_paths.index('plugin')\n            body_paths[ix] = 'plugins'\n\n        if not context or 'lib/ansible/modules' in context:\n            mmatch = self.find_module_match(body)\n            if mmatch:\n                if isinstance(mmatch, list) and len(mmatch) > 1:\n                    # another modules dir flattening mitigation\n                    if len(mmatch) == 2:\n                        if MODULES_FLATTEN_MAP.get(mmatch[1]['repo_filename'], '') == mmatch[0]['repo_filename']:\n                            return [mmatch[0]['repo_filename']]\n\n                    # only allow for exact prefix globbing here ...\n                    if [x for x in mmatch if x['repo_filename'].startswith(body)]:\n                        return [x['repo_filename'] for x in mmatch]\n\n                elif isinstance(mmatch, list):\n                    return [x['repo_filename'] for x in mmatch]\n                else:\n                    return [mmatch['repo_filename']]\n\n        if body in self.gitrepo.files:\n            matches = [body]\n        else:\n            for fn in self.gitrepo.files:\n\n                # limit the search set if a context is given\n                if context is not None and not fn.startswith(context):\n                    continue\n\n                if fn.endswith((body, body + '.py', body + '.ps1')):\n                    # ios_config.py -> test_ios_config.py vs. ios_config.py\n                    bn1 = os.path.basename(body)\n                    bn2 = os.path.basename(fn)\n                    if bn2.startswith(bn1):\n                        matches = [fn]\n                        break\n\n                if partial:\n\n                    # netapp_e_storagepool storage module\n                    # lib/ansible/modules/storage/netapp/netapp_e_storagepool.py\n\n                    # if all subpaths are in this filepath, it is a match\n                    bp_total = 0\n                    fn_paths = fn.split('/')\n                    fn_paths.append(fn_paths[-1].replace('.py', '').replace('.ps1', ''))\n\n                    for bp in body_paths:\n                        if bp in fn_paths:\n                            bp_total += 1\n\n                    if bp_total == len(body_paths):\n                        matches = [fn]\n                        break\n\n                    elif bp_total > 1:\n\n                        if (float(bp_total) / float(len(body_paths))) >= (2.0 / 3.0):\n                            if fn not in matches:\n                                matches.append(fn)\n\n        if matches:\n            tr = []\n            for match in matches[:]:\n                # reduce to longest path\n                for m in matches:\n                    if match == m:\n                        continue\n                    if len(m) < len(match) and match.startswith(m):\n                        tr.append(m)\n\n            for r in tr:\n                if r in matches:\n                    logging.debug(f'trimming {r}')\n                    matches.remove(r)\n\n        matches = sorted(set(matches))\n        logging.debug(f'return: {matches}')\n\n        return matches\n\n    def reduce_filepaths(self, matches):\n\n        # unique\n        _matches = []\n        for _match in matches:\n            if _match not in _matches:\n                _matches.append(_match)\n        matches = _matches[:]\n\n        # squash to longest path\n        if matches:\n            tr = []\n            for match in matches[:]:\n                # reduce to longest path\n                for m in matches:\n                    if match == m:\n                        continue\n                    if m is None or match is None:\n                        continue\n                    if len(m) < len(match) and match.startswith(m) or match.endswith(m):\n                        tr.append(m)\n\n            for r in tr:\n                if r in matches:\n                    matches.remove(r)\n        return matches\n\n    def include_modules_from_test_targets(self, matches):\n        \"\"\"Map test targets to the module files\"\"\"\n        new_matches = []\n        for match in matches:\n            if not match:\n                continue\n            # include modules from test targets\n            if 'test/integration/targets' in match:\n                paths = match.split('/')\n                tindex = paths.index('targets')\n                mname = paths[tindex+1]\n                mrs = self.find_module_match(mname, exact=True)\n                if mrs:\n                    if not isinstance(mrs, list):\n                        mrs = [mrs]\n                    for mr in mrs:\n                        new_matches.append(mr['repo_filename'])\n        return new_matches\n\n    def _filenames_to_keys(self, filenames):\n        '''Match filenames to the keys in botmeta'''\n        ckeys = set()\n        for filen in filenames:\n            if filen in self.botmeta['files']:\n                ckeys.add(filen)\n            for key in self.botmeta['files'].keys():\n                if filen.startswith(key):\n                    ckeys.add(key)\n        return list(ckeys)\n\n    def get_labels_for_files(self, files):\n        labels = []\n        for fn in files:\n            for label in self.get_meta_for_file(fn).get('labels', []):\n                if label not in ['ansible', 'lib'] and label not in labels:\n                    labels.append(label)\n        return labels\n\n    def get_meta_for_file(self, filename):\n        meta = {\n            'collection': None,\n            'collection_scm': None,\n            'repo_filename': filename,\n            'repo_link': None,\n            'name': os.path.basename(filename).split('.')[0],\n            'notify': [],\n            'assign': [],\n            'authors': [],\n            'committers': [],\n            'maintainers': [],\n            'labels': [],\n            'ignore': [],\n            'support': None,\n            'supported_by': None,\n            'deprecated': False,\n            'topic': None,\n            'subtopic': None,\n            'supershipit': [],\n            'namespace': None,\n            'namespace_maintainers': [],\n            'metadata': {},\n            'migrated_to': None,\n            'keywords': [],\n        }\n\n        if self.gitrepo.exists(filename):\n            meta['repo_link'] = '%s/blob/devel/%s' % (self.gitrepo.repo, filename)\n\n        if filename.startswith('collection:'):\n            fqcn = filename.split(':')[1]\n            meta['collection'] = fqcn\n            meta['migrated_to'] = fqcn\n            meta['support'] = 'community'\n            manifest = self.GALAXY_MANIFESTS.get(fqcn)\n            if manifest:\n                manifest = manifest['manifest']['collection_info']\n                if manifest.get('repository'):\n                    meta['collection_scm'] = manifest['repository']\n                elif manifest.get('issues'):\n                    meta['collection_scm'] = manifest['issues']\n            return meta\n\n        filenames = [filename, os.path.splitext(filename)[0]]\n\n        # powershell meta is in the python file\n        if filename.endswith('.ps1'):\n            pyfile = filename.replace('.ps1', '.py')\n            if pyfile in self.botmeta['files']:\n                filenames.append(pyfile)\n\n        botmeta_entries = self._filenames_to_keys(filenames)\n        for bme in botmeta_entries:\n            logging.debug('matched botmeta entry: %s' % bme)\n\n        # Modules contain metadata in docstrings and that should\n        # be factored in ...\n        #   https://github.com/ansible/ansibullbot/issues/1042\n        #   https://github.com/ansible/ansibullbot/issues/1053\n        if 'lib/ansible/modules' in filename:\n            mmatch = self.find_module_match(filename)\n            if mmatch and len(mmatch) == 1 and mmatch[0]['filename'] == filename:\n                for k in 'authors', 'maintainers':\n                    meta[k] += mmatch[0][k]\n                meta['notify'] += mmatch[0]['notified']\n\n        # reconcile the delta between a child and it's parents\n        support_levels = {}\n\n        for entry in botmeta_entries:\n            fdata = self.botmeta['files'][entry].copy()\n\n            if 'authors' in fdata:\n                meta['notify'] += fdata['authors']\n                meta['authors'] += fdata['authors']\n            if 'maintainers' in fdata:\n                meta['notify'] += fdata['maintainers']\n                meta['assign'] += fdata['maintainers']\n                meta['maintainers'] += fdata['maintainers']\n            if 'notified' in fdata:\n                meta['notify'] += fdata['notified']\n            if 'labels' in fdata:\n                meta['labels'] += fdata['labels']\n            if 'ignore' in fdata:\n                meta['ignore'] += fdata['ignore']\n            if 'ignored' in fdata:\n                meta['ignore'] += fdata['ignored']\n            if 'migrated_to' in fdata and meta['migrated_to'] is None:\n                meta['migrated_to'] = fdata['migrated_to']\n            if 'keywords' in fdata:\n                meta['keywords'] += fdata['keywords']\n\n            if 'support' in fdata:\n                if isinstance(fdata['support'], list):\n                    support_levels[entry] = fdata['support'][0]\n                else:\n                    support_levels[entry] = fdata['support']\n            elif 'supported_by' in fdata:\n                if isinstance(fdata['supported_by'], list):\n                    support_levels[entry] = fdata['supported_by'][0]\n                else:\n                    support_levels[entry] = fdata['supported_by']\n\n            # only \"deprecate\" exact matches\n            if 'deprecated' in fdata and entry == filename:\n                meta['deprecated'] = fdata['deprecated']\n\n        # walk up the tree for more meta\n        paths = filename.split('/')\n        for idx, x in enumerate(paths):\n            thispath = '/'.join(paths[:(0-idx)])\n            if thispath in self.botmeta['files']:\n                fdata = self.botmeta['files'][thispath].copy()\n                if 'support' in fdata:\n                    if isinstance(fdata['support'], list):\n                        support_levels[thispath] = fdata['support'][0]\n                    else:\n                        support_levels[thispath] = fdata['support']\n                elif 'supported_by' in fdata:\n                    if isinstance(fdata['supported_by'], list):\n                        support_levels[thispath] = fdata['supported_by'][0]\n                    else:\n                        support_levels[thispath] = fdata['supported_by']\n                if 'labels' in fdata:\n                    meta['labels'] += fdata['labels']\n                if 'maintainers' in fdata:\n                    meta['notify'] += fdata['maintainers']\n                    meta['assign'] += fdata['maintainers']\n                    meta['maintainers'] += fdata['maintainers']\n                if 'ignore' in fdata:\n                    meta['ignore'] += fdata['ignore']\n                if 'notified' in fdata:\n                    meta['notify'] += fdata['notified']\n\n        if 'lib/ansible/modules' in filename:\n            topics = [x for x in paths if x not in ['lib', 'ansible', 'modules']]\n            topics = [x for x in topics if x != os.path.basename(filename)]\n            if len(topics) == 2:\n                meta['topic'] = topics[0]\n                meta['subtopic'] = topics[1]\n            elif len(topics) == 1:\n                meta['topic'] = topics[0]\n\n            meta['namespace'] = '/'.join(topics)\n\n        # set namespace maintainers (skip !modules for now)\n        if filename.startswith('lib/ansible/modules'):\n            ns = meta.get('namespace')\n            keys = self.botmeta['files'].keys()\n            keys = [x for x in keys if x.startswith(os.path.join('lib/ansible/modules', ns))]\n            ignored = []\n\n            for key in keys:\n                meta['namespace_maintainers'] += self.botmeta['files'][key].get('maintainers', [])\n                ignored += self.botmeta['files'][key].get('ignored', [])\n\n            for ignoree in ignored:\n                while ignoree in meta['namespace_maintainers']:\n                    meta['namespace_maintainers'].remove(ignoree)\n\n        # reconcile support levels\n        if filename in support_levels:\n            # exact match\n            meta['support'] = support_levels[filename]\n            meta['supported_by'] = support_levels[filename]\n            logging.debug('%s support == %s' % (filename, meta['supported_by']))\n        else:\n            # pick the closest match\n            keys = support_levels.keys()\n            keys = sorted(keys, key=len, reverse=True)\n            if keys:\n                meta['support'] = support_levels[keys[0]]\n                meta['supported_by'] = support_levels[keys[0]]\n                logging.debug('%s support == %s' % (keys[0], meta['supported_by']))\n\n        # test targets for modules should inherit from their modules\n        if filename.startswith('test/integration/targets') and filename not in self.botmeta['files']:\n            whitelist = [\n                'labels',\n                'ignore',\n                'deprecated',\n                'authors',\n                'assign',\n                'maintainers',\n                'notify',\n                'topic',\n                'subtopic',\n                'support'\n            ]\n\n            paths = filename.split('/')\n            tindex = paths.index('targets')\n            mname = paths[tindex+1]\n            mmatch = self._find_module_match(mname, exact=True)\n            if mmatch:\n                mmeta = self.get_meta_for_file(mmatch[0]['repo_filename'])\n                for k, v in mmeta.items():\n                    if k in whitelist and v:\n                        if isinstance(meta[k], list):\n                            meta[k] = sorted(set(meta[k] + v))\n                        elif not meta[k]:\n                            meta[k] = v\n\n            # make new test targets community by default\n            if not meta['support'] and not meta['supported_by']:\n                meta['support'] = 'community'\n\n        # it's okay to remove things from legacy-files.txt\n        if filename == 'test/sanity/pep8/legacy-files.txt' and not meta['support']:\n            meta['support'] = 'community'\n\n        # fallback to core support\n        if not meta['support']:\n            meta['support'] = 'core'\n\n        # align support and supported_by\n        if meta['support'] != meta['supported_by']:\n            if meta['support'] and not meta['supported_by']:\n                meta['supported_by'] = meta['support']\n            elif not meta['support'] and meta['supported_by']:\n                meta['support'] = meta['supported_by']\n\n        # clean up the result\n        _meta = meta.copy()\n        for k, v in _meta.items():\n            if isinstance(v, list):\n                meta[k] = sorted(set(v))\n\n        def get_prefix_paths(repo_filename, files):\n            \"\"\"Emit all prefix paths matching the given file list.\"\"\"\n            if not repo_filename:\n                return\n\n            prefix_paths = make_prefixes(repo_filename)\n\n            for prefix_path in prefix_paths:\n                if prefix_path in files:\n                    logging.debug(f'found botmeta prefix: {prefix_path}')\n                    yield prefix_path\n\n        # walk up the botmeta tree looking for meta to include\n        for this_prefix in get_prefix_paths(\n            meta.get('repo_filename'), self.botmeta['files'],\n        ):\n\n            this_ignore = (\n                self.botmeta['files'][this_prefix].get('ignore') or\n                self.botmeta['files'][this_prefix].get('ignored') or\n                self.botmeta['files'][this_prefix].get('ignores') or\n                []\n            )\n\n            for username in this_ignore:\n                if username not in meta['ignore']:\n                    logging.info(f'ignored: {this_ignore}')\n                    meta['ignore'].append(username)\n                if username in meta['notify']:\n                    logging.info('remove %s notify by %s rule' % \\\n                        (username, this_prefix))\n                    meta['notify'].remove(username)\n                if username in meta['assign']:\n                    logging.info('remove %s assignment by %s rule' % \\\n                        (username, this_prefix))\n                    meta['assign'].remove(username)\n                if username in meta['maintainers']:\n                    logging.info('remove %s maintainer by %s rule' % \\\n                        (username, this_prefix))\n                    meta['maintainers'].remove(username)\n\n            this_supershipit = self.botmeta['files'][this_prefix].get(\n                'supershipit', [],\n            )\n\n            for username in this_supershipit:\n                if username not in meta['supershipit']:\n                    logging.info(f'supershipiteer: {this_prefix}')\n                    meta['supershipit'].append(username)\n\n        return meta\n\n    def find_module_match(self, pattern, exact=False):\n        '''Exact module name matching'''\n\n        logging.debug(f'find_module_match for \"{pattern}\"')\n\n        BLACKLIST = [\n            'module_utils',\n            'callback',\n            'network modules',\n            'networking modules'\n            'windows modules'\n        ]\n\n        if not pattern or pattern is None:\n            return None\n\n        # https://github.com/ansible/ansible/issues/19755\n        if pattern == 'setup':\n            pattern = 'lib/ansible/modules/system/setup.py'\n\n        if '/facts.py' in pattern or ' facts.py' in pattern:\n            pattern = 'lib/ansible/modules/system/setup.py'\n\n        # https://github.com/ansible/ansible/issues/18527\n        #   docker-container -> docker_container\n        if '-' in pattern:\n            pattern = pattern.replace('-', '_')\n\n        if 'module_utils' in pattern:\n            # https://github.com/ansible/ansible/issues/20368\n            return None\n        elif 'callback' in pattern:\n            return None\n        elif 'lookup' in pattern:\n            return None\n        elif 'contrib' in pattern and 'inventory' in pattern:\n            return None\n        elif pattern.lower() in BLACKLIST:\n            return None\n\n        candidate = self._find_module_match(pattern, exact=exact)\n\n        if not candidate:\n            candidate = self._find_module_match(os.path.basename(pattern))\n\n        if not candidate and '/' in pattern and not pattern.startswith('lib/'):\n            ppy = None\n            ps1 = None\n            if not pattern.endswith('.py') and not pattern.endswith('.ps1'):\n                ppy = pattern + '.py'\n            if not pattern.endswith('.py') and not pattern.endswith('.ps1'):\n                ps1 = pattern + '.ps1'\n            for mf in self.gitrepo.module_files:\n                if pattern in mf:\n                    if mf.endswith((pattern, ppy, ps1)):\n                        candidate = mf\n                        break\n\n        return candidate\n\n    def _find_module_match(self, pattern, exact=False):\n\n        logging.debug(f'matching on {pattern}')\n\n        matches = []\n\n        if isinstance(pattern, str):\n            pattern = to_text(to_bytes(pattern, 'ascii', 'ignore'), 'ascii')\n\n        logging.debug(f'_find_module_match: {pattern}')\n\n        noext = pattern.replace('.py', '').replace('.ps1', '')\n\n        # exact is looking for a very precise name such as \"vmware_guest\"\n        if exact:\n            candidates = [pattern]\n        else:\n            candidates = [pattern, '_' + pattern, noext, '_' + noext]\n\n        for k, v in self.MODULES.items():\n            if v['name'] in candidates:\n                logging.debug('match {} on name: {}'.format(k, v['name']))\n                matches = [v]\n                break\n\n        if not matches:\n            # search by key ... aka the filepath\n            for k, v in self.MODULES.items():\n                if k == pattern:\n                    logging.debug(f'match {k} on key: {k}')\n                    matches = [v]\n                    break\n\n        # spellcheck\n        if not exact and not matches and '/' not in pattern:\n            _pattern = pattern\n            if not isinstance(_pattern, str):\n                _pattern = to_text(_pattern)\n            for k, v in self.MODULES.items():\n                vname = v['name']\n                if not isinstance(vname, str):\n                    vname = to_text(vname)\n                close_ratio = difflib.SequenceMatcher(None, vname, _pattern).quick_ratio()\n                if close_ratio > .9:\n                    matches.append(self.MODULES[k])\n\n        return matches\n"
  },
  {
    "path": "ansibullbot/utils/extractors.py",
    "content": "import logging\nimport operator\nimport re\nfrom string import Template\n\nimport yaml\n\nimport ansibullbot.constants as C\nfrom ansibullbot._text_compat import to_bytes, to_text\n\n\nSECTIONS = ['ISSUE TYPE', 'COMPONENT NAME', 'PLUGIN NAME',\n            'ANSIBLE VERSION', 'ANSIBLE CONFIGURATION', 'CONFIGURATION',\n            'OS / ENVIRONMENT', 'SUMMARY', 'ENVIRONMENT',\n            'STEPS TO REPRODUCE', 'EXPECTED RESULTS',\n            'ACTUAL RESULTS', 'ADDITIONAL INFORMATION']\n\nTEMPLATE_HEADER = '#####'\n\n\ndef extract_template_sections(body, header=TEMPLATE_HEADER):\n    ''' Get the section names from a .github/*.md file in a repo'''\n\n    sections = {}\n    lines = body.split('\\n')\n    current_section = None\n    index = 0\n    for line in lines:\n        if line.startswith(header):\n            section = line.replace(header, '', 1)\n            section = section.strip()\n            sections[section] = {'required': False, 'index': index}\n            index += 1\n            current_section = section\n\n        elif line.startswith('<!--') and current_section:\n            if 'required: True' in line:\n                sections[current_section]['required'] = True\n\n    return sections\n\n\ndef fuzzy_find_sections(body, sections):\n    upper_body = body.upper()\n\n    # make a map of locations where each section starts\n    match_map = {}\n    for section in sections:\n        # http://www.tutorialspoint.com/python/string_find.htm\n        # str.find(str, beg=0 end=len(string))\n        match = upper_body.find(section)\n        if match != -1:\n            match_map[section] = match\n\n    if not match_map:\n        return {}\n\n    # what are the header(s) being used?\n    headers = []\n    for k, v in match_map.items():\n        try:\n            before = upper_body[v-1]\n            after = upper_body[v + len(k)]\n            header = before + '${section}' + after\n            headers.append(header)\n        except Exception:\n            pass\n\n    # pick the most common header and re-search with it\n    if len(sorted(set(headers))) > 1:\n        choices = sorted(set(headers))\n        choice_totals = []\n        for choice in choices:\n            ctotal = len([x for x in headers if x == choice])\n            choice_totals.append((ctotal, choice))\n        choice_totals.sort(key=lambda tup: tup[0])\n        sheader = choice_totals[-1][1]\n\n        match_map = {}\n        t = Template(sheader)\n        for section in sections:\n            try:\n                tofind = t.substitute(section=section)\n            except Exception as e:\n                raise Exception('substitution failed: %s' % to_text(e))\n            match = upper_body.find(tofind)\n            if match != -1:\n                match_map[section] = match + 1\n\n        # re-do for missing sections with less common header(s)\n        for section in sections:\n            if section in match_map:\n                continue\n            for choice in choices:\n                t = Template(choice)\n                tofind = t.substitute(section=section)\n                match = upper_body.find(tofind)\n                if match != -1:\n                    match_map[section] = match + 1\n                    break\n\n    elif len(headers) <= 1:\n        if headers and \\\n                ('#' not in headers[0] and\n                 ':' not in headers[0] and\n                 '*' not in headers[0]):\n            return {}\n\n    # sort mapping by element id and inject itype if needed\n    match_map = sorted(match_map.items(), key=operator.itemgetter(1))\n    if match_map and 'ISSUE TYPE' not in [x[0] for x in match_map]:\n        if match_map[0][1] > 10:\n            match_map.insert(0, ('ISSUE TYPE', 0))\n\n    # extract the sections based on their indexes\n    tdict = {}\n    total_indexes = len(match_map) - 1\n    for idx, x in enumerate(match_map):\n\n        if x[1] > 0:\n            start_index = x[1] + (len(x[0]))\n        else:\n            start_index = 0\n\n        # if last index, slice to the end\n        if idx >= total_indexes:\n            tdict[x[0]] = body[start_index:]\n        else:\n            # slice to the next section\n            stop_index = match_map[idx+1][1]\n            tdict[x[0]] = body[start_index:stop_index]\n\n    return tdict\n\n\ndef find_sections(body):\n    # find possible sections by the default pattern\n    tofind = sorted(set(re.findall(r'##### [\\/A-Z\\s]+\\r\\n', body)))\n\n    if len(tofind) <= 1:\n        return None\n\n    # map out the starting index for each section\n    match_map = {}\n    for tf in tofind:\n        match_map[tf] = body.index(tf)\n\n    # sort by index so we can read from one section to the next\n    match_map = sorted(match_map.items(), key=lambda x: x[1])\n\n    # extract each section from the body up to the next section\n    tdict = {}\n    for idm, mm in enumerate(match_map):\n        try:\n            tail = match_map[idm+1][1]\n        except IndexError:\n            tail = len(body)\n        content = body[mm[1]:tail]\n        content = content.replace(mm[0], '')\n        key = mm[0].replace('#', '').strip()\n        tdict[key] = content\n\n    return tdict\n\n\ndef extract_template_data(body, issue_class='issue', sections=None):\n    if sections is None:\n        sections = SECTIONS\n\n    # pointless to parse a null body\n    if not body:\n        return {}\n\n    # simple find or fuzzy find the sections within the body\n    tdict = find_sections(body) or fuzzy_find_sections(body, sections)\n    if not tdict:\n        return {}\n\n    # lowercase the keys\n    ndict = {}\n    for k, v in tdict.items():\n        ku = k.lower()\n        if ku == 'plugin name':\n            ku = 'component name'\n        ndict[ku] = v\n    if ndict != tdict:\n        tdict = ndict.copy()\n\n    # make a raw component section for later processing\n    component_raw = tdict.get('component name', '')\n\n    # https://github.com/ansible/ansibullbot/issues/359\n    if ',' in tdict.get('component name', ''):\n        tdict['component name'] = tdict['component name'].replace(',', '\\n')\n\n    # https://github.com/ansible/ansibullbot/issues/385\n    if ' and ' in tdict.get('component name', ''):\n        tdict['component name'] = tdict['component name'].replace(' and ', '\\n')\n\n    # cleanup the sections\n    for k, v in tdict.items():\n        # remove markdown comments from the sections\n        v = remove_markdown_comments(v)\n\n        # remove non-ascii chars\n        v = to_text(to_bytes(v, 'ascii', errors='ignore'), 'ascii')\n\n        # normalize newlines and return chars\n        v = v.replace('\\r', '\\n')\n\n        # remove pre-ceding and trailing newlines\n        v = v.strip()\n\n        # remove trailing hashes\n        while v.endswith('#'):\n            v = v[:-1]\n\n        # remove pre-ceding and trailing newlines (AGAIN)\n        v = v.strip()\n\n        # clean more on critical sections\n        if 'step' not in k and 'result' not in k:\n\n            # https://github.com/ansible/ansible-modules-extras/issues/2262\n            if k == 'component name':\n                v = v.lower()\n\n            if k == 'component name' and 'module' in v:\n                if '/modules/' in v or \\\n                        'module_util' in v or \\\n                        'module_utils/' in v or \\\n                        'validate-modules' in v or\\\n                        'module_common' in v:\n                    # https://github.com/ansible/ansible/issues/20563\n                    # https://github.com/ansible/ansible/issues/18179\n                    pass\n                else:\n                    # some modules have the word \"_module\" in their name\n                    # https://github.com/ansible/ansibullbot/issues/198\n                    # https://github.com/ansible/ansible-modules-core/issues/4159\n                    # https://github.com/ansible/ansible-modules-core/issues/5328\n                    reg = re.compile(r'\\S+_module')\n                    match = reg.match(v)\n                    if match:\n                        v = v[match.pos:match.end()]\n                    else:\n                        # https://github.com/ansible/ansibullbot/issues/385\n                        if 'modules' in v:\n                            v = v.replace('modules', ' ')\n                        else:\n                            v = v.replace('module', ' ')\n\n            # remove useless chars\n            exclude = None\n            if k == 'component name':\n                exclude = ['__']\n            v = clean_bad_characters(v, exclude=exclude)\n\n            # clean up empty lines\n            vlines = v.split('\\n')\n            vlines = [x for x in vlines if x.strip()]\n            vlines = [x.strip() for x in vlines if x.strip()]\n            v = '\\n'.join(vlines)\n\n            # remove pre-ceding special chars\n            for bc in ['-', '*']:\n                if v:\n                    if v[0] == bc:\n                        v = v[1:]\n                    v = v.strip()\n\n            # keep just the first line for types and components\n            if k in ['issue type', 'component name']:\n                if v:\n                    vlines = v.split('\\n')\n                    # https://github.com/ansible/ansible-modules-core/issues/3085\n                    vlines = [x for x in vlines if 'pick one' not in x]\n                    v = vlines[0]\n\n            # https://github.com/ansible/ansible-modules-core/issues/4060\n            if k in ['issue type']:\n                if '/' in v:\n                    v = v.split('/')\n                    if k == ['issue type']:\n                        v = v[0]\n                    else:\n                        v = v[-1]\n                    v = v.strip()\n\n            if issue_class == 'issue':\n                if k == 'issue type' and v != 'bug report' and 'bug' in v.lower():\n                    v = 'bug report'\n                elif k == 'issue type' and v != 'feature idea' and 'feature' in v.lower():\n                    v = 'feature idea'\n            elif issue_class == 'pullrequest':\n                if k == 'issue type' and v != 'bugfix pull request' and 'bug' in v.lower():\n                    v = 'bugfix pull request'\n                elif k == 'issue type' and v != 'feature pull request' and 'feature' in v.lower():\n                    v = 'feature pull request'\n                elif k == 'issue type' and v != 'new module pull request' and 'new module' in v.lower():\n                    v = 'new module pull request'\n                elif k == 'issue type' and v != 'docs pull request' and 'docs' in v.lower():\n                    v = 'docs pull request'\n                elif k == 'issue type' and v != 'test pull request' and 'test' in v.lower():\n                    v = 'test pull request'\n\n        if v == 'paste below':\n            v = ''\n\n        # save\n        tdict[k] = v\n\n    # quick clean and add raw component to the dict\n    component_raw = remove_markdown_comments(component_raw)\n    component_raw = clean_bad_characters(component_raw, exclude=['__'])\n    component_raw = '\\n'.join([x.strip() for x in component_raw.split('\\n') if x.strip()])\n    component_raw = '\\n'.join([x for x in component_raw.split('\\n') if not x.startswith('#')])\n    tdict['component_raw'] = component_raw\n\n    return tdict\n\n\ndef clean_bad_characters(raw_text, exclude=None):\n    badchars = ['#', ':', ';', ',', '*', '\"', \"'\", '`', '---', '__']\n\n    if exclude is None:\n        exclude = []\n\n    # Exclude patterns of word, word,word\n    if re.search(r'(\\w+,\\s?)+\\w+', raw_text):\n        exclude.extend(',')\n\n    # Exclude contractions like It's\n    if re.search(r\"\\w+'\\w\", raw_text):\n        exclude.extend(\"'\")\n\n    # Don't remove characters passed in as an exclusion\n    if exclude:\n        if isinstance(exclude, list):\n            badchars = [x for x in badchars if x not in exclude]\n        elif exclude:\n            badchars = [x for x in badchars if x != exclude]\n\n    for bc in badchars:\n        raw_text = raw_text.replace(bc, '')\n\n    return raw_text\n\n\ndef remove_markdown_comments(rawtext):\n    # Get rid of the comment blocks from the markdown template\n    # <!--- ---> OR <!-- -->\n    cleaned = rawtext\n    loopcount = 0\n    while cleaned.find('<!-') > -1 and loopcount <= 20:\n        loopcount += 1\n        start = cleaned.find('<!-')\n        if start > -1:\n            end = cleaned.find('->', start)\n            if end == -1:\n                cleaned = cleaned[:start-1]\n            else:\n                end += 2\n                cleaned = cleaned[0:start] + cleaned[end:]\n        else:\n            break\n    return cleaned\n\n\ndef extract_pr_number_from_comment(rawtext):\n    # \"resolved_by_pr 5136\" --> 5136\n    # \"resolved_by_pr #5136\" --> 5136\n    # \"resolved_by_pr https://github.com/ansible/ansible/issues/5136\" --> 5136\n    # \"resolved_by_pr #5319.\" --> 5319\n    # \"resolved_by_pr: 61430\" --> 61430\n\n    matches = re.findall(r'\\d+', rawtext)\n    matches = [int(x) for x in matches]\n    if matches:\n        return matches[0]\n    return None\n\n\nclass ModuleExtractor:\n\n    _AUTHORS = None\n    _DOCUMENTATION_RAW = None\n    _FILEDATA = None\n    _DOCSTRING = None\n\n    def __init__(self, filepath, filedata=None, email_cache=None):\n        self.filepath = filepath\n        self._FILEDATA = filedata\n        self.email_cache = email_cache or {}\n\n    @property\n    def filedata(self):\n        if self._FILEDATA is None:\n            try:\n                with open(self.filepath, 'rb') as f:\n                    self._FILEDATA = f.read()\n            except OSError:\n                return b''\n        return self._FILEDATA\n\n    @property\n    def authors(self):\n        if self._AUTHORS is None:\n            self._AUTHORS = self.get_module_authors()\n        return self._AUTHORS\n\n    @property\n    def docs(self):\n        if self._DOCSTRING is not None:\n            return self._DOCSTRING\n\n        documentation = ''\n        inphase = False\n        lines = to_text(self.filedata).split('\\n')\n        for line in lines:\n            if 'DOCUMENTATION' in line:\n                inphase = True\n                continue\n            if inphase and (line.strip().endswith((\"'''\", '\"\"\"'))):\n                break\n            if inphase:\n                documentation += line + '\\n'\n\n        self._DOCUMENTATION_RAW = documentation\n\n        # some docstrings don't pass yaml validation with PyYAML >= 4.2\n        try:\n            self._DOCSTRING = yaml.safe_load(self._DOCUMENTATION_RAW)\n        except yaml.parser.ParserError:\n            logging.warning('%s has non-yaml formatted docstrings' % self.filepath)\n        except yaml.scanner.ScannerError:\n            logging.warning('%s has non-yaml formatted docstrings' % self.filepath)\n\n        # always cast to a dict for easier handling later\n        if self._DOCSTRING is None:\n            self._DOCSTRING = {}\n\n        return self._DOCSTRING\n\n    def get_module_authors(self):\n        \"\"\"Grep the authors out of the module docstrings\"\"\"\n\n        # 2019-02-15\n        if 'author' in self.docs or 'authors' in self.docs:\n            _authors = self.docs.get('author') or self.docs.get('authors')\n            if _authors is None:\n                return []\n            if not isinstance(_authors, list):\n                _authors = [_authors]\n            logins = set()\n            for author in _authors:\n                _logins = self.extract_github_id(author)\n                if _logins:\n                    logins = logins.union(_logins)\n            return list(logins)\n\n        else:\n            return []\n\n    def extract_github_id(self, author):\n        \"\"\"Extract a set of github login(s) from a string.\"\"\"\n\n        # safegaurd against exceptions\n        if author is None:\n            return []\n\n        authors = set()\n\n        if author is None:\n            return authors\n\n        if 'ansible core team' in author.lower():\n            authors.add('ansible')\n        elif '@' in author:\n            # match github ids but not emails\n            authors.update(re.findall(r'(?<!\\w)@([\\w-]+)(?![\\w.])', author))\n        elif 'github.com/' in author:\n            # {'author': 'Henrique Rodrigues (github.com/Sodki)'}\n            idx = author.find('github.com/')\n            author = author[idx+11:]\n            authors.add(author.replace(')', ''))\n        elif '(' in author and len(author.split()) == 3:\n            # Mathieu Bultel (matbu)\n            idx = author.find('(')\n            author = author[idx+1:]\n            authors.add(author.replace(')', ''))\n\n        # search for emails\n        for email in re.findall(r'[<(]([^@]+@[^)>]+)[)>]', author):\n            github_id = self.email_cache.get(email)\n            if github_id:\n                authors.add(github_id)\n\n        return list(authors)\n\n\ndef get_template_data(iw):\n    \"\"\"Extract templated data from an issue body\"\"\"\n\n    # if iw.is_issue():\n    #     tfile = '.github/ISSUE_TEMPLATE/bug_report.md'\n    # else:\n    #     tfile = '.github/PULL_REQUEST_TEMPLATE.md'\n\n    # # use the fileindexer whenever possible to conserve ratelimits\n    # if iw.gitrepo:\n    #     tf_content = iw.gitrepo.get_file_content(tfile)\n    # else:\n    #     try:\n    #         tf = iw.repo.get_file_contents(tfile)\n    #         tf_content = tf.decoded_content\n    #     except Exception:\n    #         logging.warning(f'repo does not have {tfile}')\n    #         tf_content = ''\n\n    # # pull out the section names from the tempalte\n    # tf_sections = extract_template_sections(tf_content, header=TEMPLATE_HEADER)\n    tf_sections = SECTIONS\n\n    # extract ...\n    template_data = \\\n        extract_template_data(\n            iw.instance.body,\n            issue_class=iw.github_type,\n            sections=tf_sections\n        )\n\n    # try comments if the description was insufficient\n    if len(template_data.keys()) <= 2:\n        s_comments = iw.history.get_user_comments(iw.submitter)\n        for s_comment in s_comments:\n\n            _template_data = extract_template_data(\n                s_comment,\n                issue_class=iw.github_type,\n                sections=tf_sections\n            )\n\n            if _template_data:\n                for k, v in _template_data.items():\n                    if not v:\n                        continue\n                    if v and (k not in template_data or not template_data.get(k)):\n                        template_data[k] = v\n\n    if 'ANSIBLE VERSION' in tf_sections and 'ansible version' not in template_data:\n\n        # FIXME - abstract this into a historywrapper method\n        vlabels = [x for x in iw.history.history if x['event'] == 'labeled']\n        vlabels = [x for x in vlabels if x['actor'] not in C.DEFAULT_BOT_NAMES]\n        vlabels = [x['label'] for x in vlabels if x['label'].startswith('affects_')]\n        vlabels = [x for x in vlabels if x.startswith('affects_')]\n\n        versions = [x.split('_')[1] for x in vlabels]\n        versions = [float(x) for x in versions]\n        if versions:\n            version = versions[-1]\n            template_data['ansible version'] = to_text(version)\n\n    if 'COMPONENT NAME' in tf_sections and 'component name' not in template_data:\n        if iw.is_pullrequest():\n            fns = iw.files\n            if fns:\n                template_data['component name'] = '\\n'.join(fns)\n                template_data['component_raw'] = '\\n'.join(fns)\n        else:\n            clabels = [x for x in iw.labels if x.startswith('c:')]\n            if clabels:\n                fns = []\n                for clabel in clabels:\n                    clabel = clabel.replace('c:', '')\n                    fns.append('lib/ansible/' + clabel)\n                template_data['component name'] = '\\n'.join(fns)\n                template_data['component_raw'] = '\\n'.join(fns)\n\n            elif 'documentation' in template_data.get('issue type', '').lower():\n                template_data['component name'] = 'docs'\n                template_data['component_raw'] = 'docs'\n\n    if 'ISSUE TYPE' in tf_sections and 'issue type' not in template_data:\n\n        # FIXME - turn this into a real classifier based on work done in\n        # jctanner/pr-triage repo.\n\n        itype = None\n\n        while not itype:\n\n            for label in iw.labels:\n                if label.startswith('bug'):\n                    itype = 'bug'\n                    break\n                if label.startswith('feature'):\n                    itype = 'feature'\n                    break\n                if label.startswith('doc'):\n                    itype = 'docs'\n                    break\n            if itype:\n                break\n\n            if iw.is_pullrequest():\n                fns = iw.files\n                for fn in fns:\n                    if fn.startswith('doc'):\n                        itype = 'docs'\n                        break\n            if itype:\n                break\n\n            msgs = [iw.title, iw.body]\n            if iw.is_pullrequest():\n                msgs += [x['message'] for x in iw.history.history if x['event'] == 'committed']\n\n            msgs = [x for x in msgs if x]\n            msgs = [x.lower() for x in msgs]\n\n            for msg in msgs:\n                if 'fix' in msg:\n                    itype = 'bug'\n                    break\n                if 'addresses' in msg:\n                    itype = 'bug'\n                    break\n                if 'broke' in msg:\n                    itype = 'bug'\n                    break\n                if 'add' in msg:\n                    itype = 'feature'\n                    break\n                if 'should' in msg:\n                    itype = 'feature'\n                    break\n                if 'please' in msg:\n                    itype = 'feature'\n                    break\n                if 'feature' in msg:\n                    itype = 'feature'\n                    break\n\n            # quit now\n            break\n\n        if itype and itype == 'bug' and iw.is_issue():\n            template_data['issue type'] = 'bug report'\n        elif itype and itype == 'bug' and not iw.is_issue():\n            template_data['issue type'] = 'bugfix pullrequest'\n        elif itype and itype == 'feature' and iw.is_issue():\n            template_data['issue type'] = 'feature idea'\n        elif itype and itype == 'feature' and not iw.is_issue():\n            template_data['issue type'] = 'feature pullrequest'\n        elif itype and itype == 'docs' and iw.is_issue():\n            template_data['issue type'] = 'documentation report'\n        elif itype and itype == 'docs' and not iw.is_issue():\n            template_data['issue type'] = 'documenation pullrequest'\n\n    return template_data\n"
  },
  {
    "path": "ansibullbot/utils/feature_flags.py",
    "content": "import yaml\n\n\n__metadata__ = type\n\n\nclass FeatureFlags:\n    def __init__(self, config_obj):\n        self._flags = config_obj if config_obj is not None else {}\n\n    def is_enabled(self, feature):\n        return self._flags.get(feature, False)\n\n    def is_disabled(self, feature):\n        return not self.is_enabled(feature)\n\n    @property\n    def flags(self):\n        return self._flags\n\n    @classmethod\n    def from_config(cls, config_path):\n        with open(config_path) as f:\n            return cls(yaml.safe_load(f))\n"
  },
  {
    "path": "ansibullbot/utils/galaxy.py",
    "content": "import datetime\nimport json\nimport logging\nimport os\n\nimport requests\n\nfrom ansibullbot.utils.timetools import strip_time_safely\n\n\nBLACKLIST_PATHS = [\n    '.github',\n    '.github/FUNDING.yml',\n    '.github/lock.yml',\n    'CHANGELOG.md',\n    'docs',\n    'lib/ansible/module_utils/basic.py',\n    'lib/ansible/module_utils/facts'\n]\n\nBLACKLIST_FQCNS = [\n    #'frankshen01.testfortios', # not till they are allocated to fortinet.fortios\n    'alancoding.awx',\n    'alancoding.cloud',\n    'alancoding.vmware',\n    'alikins.collection_inspect',\n    'arillso.test_do_not_use',\n    'chrismeyersfsu.tower_modules',\n    'felixfontein.tools',\n    'fragmentedpacket.netbox_modules',\n    'gavinfish.azuretest',\n    'launchdarkly_labs.collection',\n    'lukasjuhrich.ceph_ansible',\n    'mattclay.aws',\n    'mnecas.ovirt',\n    'ovirt.ovirt_collection',\n    'schmots1.ontap',\n    'sh4d1.scaleway',\n    'shanemcd.kubernetes',\n    'sivel.jinja2',\n    'sshnaidm.cloud',\n    'sshnaidm.podman',\n    'tawr1024.netbox_modules',\n]\n\nDIRMAP = {\n    'contrib/inventory': 'scripts/inventory',\n    'lib/ansible/plugins/action': 'plugins/action',\n    'lib/ansible/plugins/callback': 'plugins/callback',\n    'lib/ansible/plugins/connection': 'plugins/connection',\n    'lib/ansible/plugins/filter': 'plugins/filter',\n    'lib/ansible/plugins/inventory': 'plugins/inventory',\n    'lib/ansible/plugins/lookup': 'plugins/lookup',\n    'lib/ansible/modules': 'plugins/modules',\n    'lib/ansible/module_utils': 'plugins/module_utils',\n    'lib/ansible/plugins': 'plugins',\n    'test/integration': 'tests/integration',\n    'test/units/modules': 'tests/units/modules',\n    'test/units/module_utils': 'tests/units/module_utils',\n    'test': 'tests',\n}\n\n\nclass GalaxyQueryTool:\n\n    def __init__(self, cachedir=None):\n        if cachedir:\n            self.cachedir = os.path.join(cachedir, 'galaxy')\n        else:\n            self.cachedir = '.cache/galaxy'\n        if not os.path.exists(self.cachedir):\n            os.makedirs(self.cachedir)\n\n        self._galaxy_files = self._get_cached_url('https://sivel.eng.ansible.com/api/v1/collections/file_map')\n        self._collections_meta = self._get_cached_url('https://sivel.eng.ansible.com/api/v1/collections/list')\n\n    def _get_cached_url(self, url, days=0):\n        cachedir = os.path.join(self.cachedir, 'urls')\n        if not os.path.exists(cachedir):\n            os.makedirs(cachedir)\n        cachefile = os.path.join(cachedir, url.replace('/', '__'))\n        if os.path.exists(cachefile):\n            with open(cachefile) as f:\n                fdata = json.loads(f.read())\n            jdata = fdata['result']\n            ts = fdata['timestamp']\n            now = datetime.datetime.now()\n            ts = strip_time_safely(ts)\n            if (now - ts).days <= days:\n                return jdata\n\n        rr = requests.get(url)\n        jdata = rr.json()\n\n        with open(cachefile, 'w') as f:\n            f.write(json.dumps({\n                'timestamp': datetime.datetime.now().isoformat(),\n                'result': jdata\n            }))\n\n        return jdata\n\n    def search_galaxy(self, component):\n        '''Is this a file belonging to a collection?'''\n        matches = []\n\n        if component.rstrip('/') in BLACKLIST_PATHS:\n            return []\n\n        if os.path.basename(component) == '__init__.py':\n            return matches\n\n        candidates = []\n        patterns = [component]\n\n        # we're not redirecting parent directories\n        if component.rstrip('/') in DIRMAP:\n            return []\n\n        for k, v in DIRMAP.items():\n            if component.startswith(k):\n                # look for the full path including subdirs ...\n                _component = component.replace(k + '/', v + '/')\n                if _component not in DIRMAP and _component not in DIRMAP.values():\n                    patterns.append(_component)\n\n                # add the short path in case the collection does not have subdirs ...\n                segments = _component.split('/')\n                if len(segments) > 3:\n                    basename = os.path.basename(_component)\n                    if not basename == 'common.py':  # too many false positives\n                        thispath = os.path.join(v, basename)\n                        if thispath not in DIRMAP and thispath not in DIRMAP.values():\n                            patterns.append(thispath)\n\n                # find parent folder for new modules ...\n                if v != 'plugins':\n                    if os.path.dirname(_component) not in DIRMAP and os.path.dirname(_component) not in DIRMAP.values():\n                        patterns.append(os.path.dirname(_component))\n\n                break\n\n        # hack in patterns for deprecated files\n        for x in patterns[:]:\n            if x.endswith('.py'):\n                bn = os.path.basename(x)\n                bd = os.path.dirname(x)\n                if bn.startswith('_'):\n                    bn = bn.replace('_', '', 1)\n                    patterns.append(os.path.join(bd, bn))\n\n        for pattern in patterns:\n            if candidates:\n                break\n\n            for key in self._galaxy_files.keys():\n                if not (pattern in key or key == pattern):\n                    continue\n                if pattern == 'plugins/modules/':  # false positives\n                    continue\n                logging.info('matched %s to %s:%s' % (component, key, self._galaxy_files[key]))\n                candidates.append(key)\n                break\n\n        if candidates:\n            for cn in candidates:\n                for fqcn in self._galaxy_files[cn]:\n                    if fqcn in BLACKLIST_FQCNS:\n                        continue\n                    repo = self._collections_meta[fqcn]['manifest']['collection_info']['repository']\n                    matches.append('collection:%s:%s:%s' % (fqcn, cn, repo))\n            matches = sorted(set(matches))\n\n        return matches\n\n    def fuzzy_search_galaxy(self, component):\n        matched_filenames = []\n\n        if component.rstrip('/') in BLACKLIST_PATHS:\n            return []\n\n        if component.endswith('__init__.py'):\n            return matched_filenames\n\n        if component.startswith('lib/ansible/modules'):\n            bn = os.path.basename(component)\n            bn = bn.replace('.py', '')\n            if '_' in bn:\n                bparts = bn.split('_')\n                for x in reversed(range(0, len(bparts))):\n                    prefix = '_'.join(bparts[:x])\n                    if not prefix:\n                        continue\n                    for key in self._galaxy_files.keys():\n                        if key.startswith('roles/'):\n                            continue\n                        keybn = os.path.basename(key)\n                        if keybn.startswith(prefix + '_'):\n                            logging.info('galaxy fuzzy match %s startswith %s_' % (keybn, prefix))\n                            logging.info('galaxy fuzzy match %s == %s' % (keybn, prefix))\n                            logging.info('galaxy fuzzy match %s == %s' % (key, component))\n\n                            for fqcn in self._galaxy_files[key]:\n                                if fqcn in BLACKLIST_FQCNS:\n                                    continue\n                                repo = self._collections_meta[fqcn]['manifest']['collection_info']['repository']\n                                matched_filenames.append('collection:%s:%s:%s' % (fqcn, key, repo))\n                            break\n\n        return matched_filenames\n"
  },
  {
    "path": "ansibullbot/utils/gh_gql_client.py",
    "content": "import json\nimport logging\nimport time\n\nfrom collections import defaultdict\nfrom operator import itemgetter\nfrom string import Template\n\nimport requests\n\nfrom ansibullbot._text_compat import to_bytes, to_text\nfrom ansibullbot.utils.receiver_client import post_to_receiver\nfrom ansibullbot.utils.timetools import strip_time_safely\n\n\nQUERY_TEAM_MEMBERS_TEMPLATE = \"\"\"\n{\n    organization(login: \"$login\") {\n      team(slug: \"$slug\") {\n        members {\n          edges {\n            node {\n              login\n            }\n          }\n        }\n      }\n    }\n}\n\"\"\"\n\n\nQUERY_TEMPLATE = \"\"\"\n{\n    repository(owner:\"$owner\", name:\"$repo\") {\n        $object_type($object_params) {\n            pageInfo {\n                endCursor\n                hasNextPage\n            }\n            edges {\n                node {\n                    id\n                    url\n                    number\n                    state\n                    createdAt\n                    updatedAt\n                    repository {\n                        nameWithOwner\n                    }\n                    timelineItems(last:1, itemTypes: [CROSS_REFERENCED_EVENT]) {\n                        updatedAt\n                    }\n                    $subquery\n                }\n            }\n        }\n    }\n}\n\"\"\"\n\nQUERY_TEMPLATE_SINGLE_NODE = \"\"\"\n{\n    repository(owner:\"$owner\", name:\"$repo\") {\n          $object_type($object_params){\n              id\n              url\n              number\n              state\n              createdAt\n              updatedAt\n              repository {\n                  nameWithOwner\n              }\n              timelineItems(last:1, itemTypes: [CROSS_REFERENCED_EVENT]) {\n                  updatedAt\n              }\n              $subquery\n        }\n    }\n}\n\"\"\"\n\nSUBQUERY_CI_UPDATED_AT = \"\"\"\n      commits(last:1) {\n        nodes {\n          commit {\n            checkSuites(last:1) {\n              nodes {\n                status\n                conclusion\n                createdAt\n                updatedAt\n                id\n                app {\n                  slug\n                  id\n                }\n              }\n            }\n          }\n        }\n      }\n\"\"\"\n\nQUERY_TEMPLATE_BLAME = \"\"\"\nquery {\n  repository(owner: \"$owner\", name: \"$repo\") {\n    ... on Repository {\n      ref(qualifiedName: \"$branch\") {\n        target {\n          ... on Commit {\n            blame(path: \"$path\") {\n              ranges {\n                commit {\n                  oid\n                  author {\n                    email\n                    user {\n                      login\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}\n\"\"\"\n\n\nclass GithubGraphQLClient:\n    baseurl = 'https://api.github.com/graphql'\n\n    def __init__(self, token, server=None):\n        if server:\n            # this is for testing\n            self.baseurl = server.rstrip('/') + '/graphql'\n        self.token = token\n        self.headers = {\n            'Accept': 'application/json',\n            'Authorization': 'Bearer %s' % self.token,\n        }\n\n    def get_members(self, org, team):\n        query = Template(QUERY_TEAM_MEMBERS_TEMPLATE).substitute(login=org, slug=team)\n        resp = self.post_request({'query': query})\n        if not resp.ok:\n            raise Exception\n        data = resp.json()\n        if not data:\n            raise Exception\n        edges = data.get('data', {}).get('organization', {}).get('team', {}).get('members', {}).get('edges', [])\n        return sorted(set((e.get('node', {}).get('login') for e in edges)))\n\n    def get_issue_summaries(self, repo_url):\n        \"\"\"Return a dict of all issue summaries with numbers as keys\n\n        Adds a compatibility method for the webscraper\n\n        Args:\n            repo_url  (str): username/repository\n        \"\"\"\n        owner = repo_url.split('/', 1)[0]\n        repo = repo_url.split('/', 1)[1]\n        summaries = self.get_all_summaries(owner, repo)\n\n        issues = {}\n        for x in summaries:\n            issues[to_text(x['number'])] = x\n\n        # keep the summaries for out of band analysis\n        repodata = {\n            'user': repo_url.split('/', 1)[0],\n            'repo': repo_url.split('/', 1)[1],\n        }\n        post_to_receiver('summaries', repodata, issues)\n\n        return issues\n\n    def get_all_summaries(self, owner, repo):\n        \"\"\"Collect all the summary data for issues and pullreuests\n\n        Args:\n            owner (str): the github namespace\n            repo  (str): the github repository\n        \"\"\"\n        isummaries = self.get_summaries(owner, repo, otype='issues')\n        psummaries = self.get_summaries(owner, repo, otype='pullRequests')\n        summaries = []\n        for iis in isummaries:\n            summaries.append(iis)\n        for prs in psummaries:\n            summaries.append(prs)\n\n        if not summaries:\n            return []\n\n        numbers = [x['number'] for x in summaries]\n        if numbers:\n            missing = (x for x in range(1, numbers[-1]) if x not in numbers)\n        else:\n            missing = []\n        for x in missing:\n            data = {\n                'created_at': None,\n                'updated_at': None,\n                'id': None,\n                'number': x,\n                'state': 'closed',\n                'repository': {\n                    'nameWithOwner': '%s/%s' % (owner, repo)\n                },\n                'type': None\n            }\n            summaries.append(data)\n\n        return sorted(summaries, key=itemgetter('number'))\n\n    def get_summaries(self, owner, repo, otype='issues', last=None, first='first: 100', states='states: OPEN', paginate=True):\n        \"\"\"Collect all the summary data for issues or pullreuests\n\n        Args:\n            owner     (str): the github namespace\n            repo      (str): the github repository\n            otype     (str): issues or pullRequests\n            first     (str): number of nodes per page, oldest to newest\n            last      (str): number of nodes per page, newest to oldest\n            states    (str): open or closed issues\n            paginate (bool): recurse through page results\n\n        \"\"\"\n\n        templ = Template(QUERY_TEMPLATE)\n        after = None\n        nodes = []\n        pagecount = 0\n        while True:\n            logging.debug('%s/%s %s pagecount:%s nodecount: %s' %\n                          (owner, repo, otype, pagecount, len(nodes)))\n\n            issueparams = ', '.join([x for x in [states, first, last, after] if x])\n            if otype == 'pullRequests':\n                subquery = SUBQUERY_CI_UPDATED_AT\n            else:\n                subquery = ''\n            query = templ.substitute(owner=owner, repo=repo, object_type=otype, object_params=issueparams, subquery=subquery)\n\n            payload = {\n                'query': to_text(query, 'ascii', 'ignore').strip(),\n                'variables': '{}',\n                'operationName': None\n            }\n            rr = self.post_request(payload)\n            if not rr.ok:\n                break\n            data = rr.json()\n            if not data:\n                break\n\n            # keep each edge/node/issue\n            for edge in data.get('data', {}).get('repository', {}).get(otype, {}).get('edges', []):\n                node = edge['node']\n                self.update_node(node, otype.lower()[:-1], owner, repo)\n                nodes.append(node)\n\n            if not paginate:\n                break\n\n            pageinfo = data.get('data', {}).get('repository', {}).get(otype, {}).get('pageInfo')\n            if not pageinfo:\n                break\n            if not pageinfo.get('hasNextPage'):\n                break\n\n            after = 'after: \"%s\"' % pageinfo['endCursor']\n            pagecount += 1\n\n        return nodes\n\n    def get_summary(self, repo_url, otype, number):\n        \"\"\"Collect all the summary data for issues or pull requests ids\n\n        Args:\n            repo_url  (str): repository URL\n            otype     (str): issue or pullRequest\n            number    (str): Identifies the pull-request or issue, for example: 12345\n        \"\"\"\n        owner = repo_url.split('/', 1)[0]\n        repo = repo_url.split('/', 1)[1]\n\n        template = Template(QUERY_TEMPLATE_SINGLE_NODE)\n        if otype == 'pullRequest':\n            subquery = SUBQUERY_CI_UPDATED_AT\n        else:\n            subquery = ''\n\n        query = template.substitute(owner=owner, repo=repo, object_type=otype, object_params='number: %s' % number, subquery=subquery)\n\n        payload = {\n            'query': to_bytes(query, 'ascii', 'ignore').strip(),\n            'variables': '{}',\n            'operationName': None\n        }\n        payload['query'] = to_text(payload['query'], 'ascii')\n\n        rr = self.post_request(payload)\n        data = rr.json()\n\n        node = data['data']['repository'][otype]\n        if node is None:\n            return\n\n        self.update_node(node, otype, owner, repo)\n\n        return node\n\n    def update_node(self, node, node_type, owner, repo):\n        updated_ats = [node['updatedAt'], node['timelineItems']['updatedAt']]\n        if node_type == 'pullrequest':\n            ci = node.get('commits', {}).get('nodes', [{}])[0].get('commit', {}).get('checkSuites', {}).get('nodes', {})\n            if ci:\n                updated_ats.append(ci[0]['updatedAt'])\n\n        node['updatedAt'] = str(\n            max((strip_time_safely(u) for u in updated_ats)).isoformat()+'Z'\n        )\n        node['state'] = node['state'].lower()\n        node['created_at'] = node.get('createdAt')\n        node['updated_at'] = node.get('updatedAt')\n\n        if 'repository' not in node:\n            node['repository'] = {}\n\n        if 'nameWithOwner' not in node['repository']:\n            node['repository']['nameWithOwner'] = '%s/%s' % (owner, repo)\n\n        node['type'] = node_type\n\n    def get_usernames_from_filename_blame(self, owner, repo, branch, filepath):\n        template = Template(QUERY_TEMPLATE_BLAME)\n        committers = defaultdict(set)\n        emailmap = {}\n\n        query = template.substitute(owner=owner, repo=repo, branch=branch, path=filepath)\n\n        payload = {\n            'query': to_text(\n                to_bytes(query, 'ascii', 'ignore'),\n                'ascii',\n            ).strip(),\n            'variables': '{}',\n            'operationName': None\n        }\n        response = self.post_request(payload)\n        data = response.json()\n\n        nodes = data['data']['repository']['ref']['target']['blame']['ranges']\n        \"\"\"\n        [\n            'commit':\n            {\n                'oid': 'a3132e5dd6acc526ce575f6db134169c7090f72d',\n                'author':\n                {\n                    'email': 'user@mail.example',\n                    'user': {'login': 'user'}\n                }\n            }\n        ]\n        \"\"\"\n        for node in nodes:\n            node = node['commit']\n            if not node['author']['user']:\n                continue\n            github_id = node['author']['user']['login']\n            committers[github_id].add(node['oid'])\n            # emails come from 'git log --follow' but all github id aren't fetch:\n            # - GraphQL/git 'blame' don't list all commits\n            # - GraphQL 'history' neither because 'history' is like 'git log' but without '--follow'\n            email = node['author'].get('email')\n            if email and email not in emailmap:\n                emailmap[email] = github_id\n\n        for github_id, commits in committers.items():\n            committers[github_id] = list(commits)\n        return committers, emailmap\n\n    def post_request(self, payload):\n        exc = None\n        for i in range(3):\n            response = requests.post(self.baseurl, headers=self.headers, data=json.dumps(payload))\n            try:\n                response.raise_for_status()\n            except requests.exceptions.HTTPError as e:\n                exc = e\n                time.sleep(2)\n                continue\n\n            # GitHub GraphQL will happily return a 200 result with errors. One\n            # must dig through the data to see if there were errors.\n            errors = response.json().get('errors')\n            if errors:\n                msgs = ', '.join([e['message'] for e in errors])\n                exc = requests.exceptions.InvalidSchema('Error(s) from graphql: %s' % msgs)\n                time.sleep(2)\n                continue\n\n            return response\n\n        raise exc\n"
  },
  {
    "path": "ansibullbot/utils/git_tools.py",
    "content": "import logging\nimport os\nimport shutil\nimport tarfile\nimport tempfile\n\nimport requests\n\nfrom ansibullbot._text_compat import to_text\nfrom ansibullbot.utils.systemtools import run_command\n\n\nclass GitRepoWrapper:\n    def __init__(self, cachedir, repo, commit=None, rebase=True, context=None):\n        self._needs_rebase = rebase\n        self.repo = repo\n        self.commit = commit\n        self.context = context\n        self._lrev_map = {}\n        self._is_git = True\n        self.checkoutdir = None\n        self._files = []\n\n        # allow for null repos\n        if self.repo:\n            urlparts = self.repo.split('/')\n            urlparts = [x for x in urlparts if x and 'http' not in x]\n            path_parts = list([cachedir] + urlparts)\n            self.checkoutdir = os.path.join(*path_parts)\n            parent = os.path.dirname(self.checkoutdir)\n            if not os.path.exists(parent):\n                os.makedirs(parent)\n\n        self.commits_by_email = None\n        self.files_by_commit = {}\n\n        if repo:\n            self.update(force=True)\n\n    def exists(self, filename):\n        return filename in self.files\n\n    @property\n    def isgit(self):\n        return not self.repo.endswith('.tar.gz')\n\n    def isdir(self, filename):\n        if self.context:\n            checkfile = os.path.join(self.checkoutdir, self.context, filename)\n        else:\n            checkfile = os.path.join(self.checkoutdir, filename)\n        return os.path.isdir(checkfile)\n\n    @property\n    def files(self):\n        self.get_files()\n        if self.context:\n            _files = self._files[:]\n            _files = [x for x in _files if x.startswith(self.context)]\n            _files = [x.replace(self.context.rstrip('/') + '/', '') for x in _files]\n            return _files\n        return self._files\n\n    @property\n    def module_files(self):\n        return [x for x in self._files if x.startswith('lib/ansible/modules')]\n\n    def create_checkout(self):\n        \"\"\"checkout ansible\"\"\"\n        # cleanup\n        if os.path.isdir(self.checkoutdir):\n            shutil.rmtree(self.checkoutdir)\n        if self.repo.endswith('.tar.gz'):\n            self._is_git = False\n\n            tfh,tfn = tempfile.mkstemp(suffix='.tar.gz')\n\n            rr = requests.get(self.repo, stream=True)\n            with open(tfn, 'wb') as f:\n                f.write(rr.raw.read())\n\n            os.makedirs(self.checkoutdir)\n            tar = tarfile.open(tfn, \"r:gz\")\n            tar.extractall(path=self.checkoutdir)\n\n        else:\n            cmd = \"git clone %s %s\" \\\n                % (self.repo, self.checkoutdir)\n            logging.debug(cmd)\n            (rc, so, se) = run_command(cmd, env={'GIT_TERMINAL_PROMPT': 0, 'GIT_ASKPASS': '/bin/echo'})\n            logging.debug('rc: %s' % rc)\n            logging.debug(to_text(so) + to_text(se))\n\n            if rc != 0:\n                os.makedirs(self.checkoutdir)\n\n    def update(self, force=False):\n        '''Reload everything if there are new commits'''\n        changed = self.manage_checkout()\n        if changed or force or not self._is_git:\n            self.get_files(force=True)\n        self.commits_by_email = None\n        self._lrev_map = {}\n\n    def update_checkout(self):\n        \"\"\"rebase + pull + update the checkout\"\"\"\n        changed = False\n\n        # get a specific commit or do a rebase\n        if self.commit:\n            cmd = \"cd %s; git log -1  | head -n1 | awk '{print $2}'\" % self.checkoutdir\n            (rc, so, se) = run_command(cmd)\n            so = to_text(so).strip()\n\n            if so != self.commit:\n                cmd = \"cd %s; git checkout %s\" % (self.checkoutdir, self.commit)\n                logging.debug(cmd)\n                (rc, so, se) = run_command(cmd, env={'GIT_TERMINAL_PROMPT': 0, 'GIT_ASKPASS': '/bin/echo'})\n                changed = True\n\n            if rc != 0:\n                self.create_checkout()\n                changed = True\n\n        else:\n            changed = False\n\n            cmd = \"cd %s ; git pull --rebase\" % self.checkoutdir\n            logging.debug(cmd)\n            (rc, so, se) = run_command(cmd, env={'GIT_TERMINAL_PROMPT': 0, 'GIT_ASKPASS': '/bin/echo'})\n            so = to_text(so)\n            logging.debug(so + to_text(se))\n\n            # If rebase failed, recreate the checkout\n            if rc != 0:\n                self.create_checkout()\n                return True\n            else:\n                if 'current branch devel is up to date.' not in so.lower():\n                    changed = True\n\n        self.commits_by_email = None\n\n        return changed\n\n    def manage_checkout(self):\n        '''Check if there are any changes to the repo'''\n        if not self._is_git:\n            return False\n        changed = False\n        if not os.path.isdir(self.checkoutdir):\n            self.create_checkout()\n            changed = True\n        elif self._needs_rebase:\n            changed = self.update_checkout()\n        return changed\n\n    def get_files(self, force=False):\n        '''Cache a list of filenames in the checkout'''\n        if self.isgit:\n            if not self._files or force:\n                cmd = f'cd {self.checkoutdir}; git ls-files'\n                logging.debug(cmd)\n                (rc, so, se) = run_command(cmd)\n                files = to_text(so).split('\\n')\n                files = [x.strip() for x in files if x.strip()]\n                if self.context:\n                    self._files = [x for x in files if self.context in files]\n                self._files = files\n        else:\n            self._files = []\n            cmd = f'cd {self.checkoutdir}; find .'\n            logging.debug(cmd)\n            (rc, so, se) = run_command(cmd)\n            filepaths = to_text(so).split('\\n')\n            for fp in filepaths:\n                if not fp.startswith('./'):\n                    continue\n                fp = fp.replace('./', '', 1)\n                self._files.append(fp)\n\n    # NOTE not used, see the get_submitter_facts function in plugins/shipit.py\n    def get_files_by_commit(self, commit):\n        if commit not in self.files_by_commit:\n            cmd = f'cd {self.checkoutdir}; git show --pretty=\"\" --name-only {commit}'\n            (rc, so, se) = run_command(cmd)\n            filenames = [x.strip() for x in to_text(so).split('\\n') if x.strip()]\n            self.files_by_commit[commit] = filenames[:]\n        else:\n            filenames = self.files_by_commit[commit]\n\n        return filenames\n\n    # NOTE not used, see the get_submitter_facts function in plugins/shipit.py\n    def get_commits_by_email(self, email):\n        '''Map an email(s) to a total num of commits and total by file'''\n        if self.commits_by_email is None:\n            commits = {}\n            cmd = f'cd {self.checkoutdir}; git log --format=\"%h;%ae\"'\n            (rc, so, se) = run_command(cmd)\n            lines = [x.strip() for x in to_text(so).split('\\n') if x.strip()]\n            for line in lines:\n                parts = line.split(';')\n                this_hash = parts[0]\n                this_email = parts[1]\n                if this_email not in commits:\n                    commits[this_email] = set()\n                commits[this_email].add(this_hash)\n            self.commits_by_email = commits\n\n        if not isinstance(email, (set, list)):\n            emails = [email]\n        else:\n            emails = [x for x in email]\n\n        email_map = {}\n\n        for _email in emails:\n            if _email not in email_map:\n                email_map[_email] = {\n                    'commit_count': 0,\n                    'commit_count_byfile': {}\n                }\n\n            if _email in self.commits_by_email:\n\n                email_map[_email]['commit_count'] = \\\n                    len(self.commits_by_email[_email])\n\n                for _commit in self.commits_by_email[_email]:\n                    filenames = self.get_files_by_commit(_commit)\n                    for fn in filenames:\n                        if fn not in email_map[_email]['commit_count_byfile']:\n                            email_map[_email]['commit_count_byfile'][fn] = 0\n                        email_map[_email]['commit_count_byfile'][fn] += 1\n\n        return email_map\n\n    def get_last_rev_for_file(self, filepath):\n        ''' Retrive last hash for a file if it ever existed '''\n        # https://stackoverflow.com/a/19727752\n        # https://stackoverflow.com/a/1395463\n\n        if filepath not in self._lrev_map:\n            cmd = 'cd %s; git rev-list --max-count=1 --all -- %s' % (self.checkoutdir, filepath)\n            logging.info(cmd)\n            (rc, so, se) = run_command(cmd)\n            lrev = so.strip().decode('utf-8')\n            self._lrev_map[filepath] = lrev\n\n        return self._lrev_map[filepath]\n\n    def existed(self, filepath):\n        '''Did a file ever exist in this repo?'''\n        if self.context:\n            filepath = os.path.join(self.context, filepath)\n\n        lrev = self.get_last_rev_for_file(filepath)\n        if lrev:\n            return True\n\n        return False\n\n    def get_file_content(self, filepath, follow=False):\n        fp = os.path.join(self.checkoutdir, filepath)\n        if os.path.exists(fp):\n            with open(fp, 'r', encoding='utf-8') as f:\n                data = f.read()\n            return data\n\n        if not follow:\n            return None\n\n        lrev = self.get_last_rev_for_file(filepath)\n\n        # https://stackoverflow.com/a/1395463\n        cmd = 'cd %s; git show %s^:%s' % (self.checkoutdir, lrev, filepath)\n        (rc, so, se) = run_command(cmd)\n        logging.info(cmd)\n        so = so.strip()\n        if so.decode('utf-8').endswith('.py'):\n            newpath = os.path.dirname(filepath)\n            newpath = os.path.join(newpath, so.decode('utf-8'))\n            lrev = self.get_last_rev_for_file(filepath)\n\n            cmd = 'cd %s; git show %s^:%s' % (self.checkoutdir, lrev, newpath)\n            logging.info(cmd)\n            (rc, so, se) = run_command(cmd)\n            so = so.strip()\n\n        return so\n\n    def find(self, pattern):\n        if pattern in self._files:\n            return pattern\n        matches = set()\n        for fn in self._files:\n            if self.context and self.context not in fn:\n                continue\n            if fn.endswith(pattern):\n                matches.add(fn)\n        return matches\n\n    def list_files_by_branch(self, branch):\n        cmd = \"cd %s; git ls-tree -r --name-only %s\" % (self.checkoutdir, branch)\n        logging.info(cmd)\n        (rc, so, se) = run_command(cmd)\n        res = so.strip().decode('utf-8')\n        return res.splitlines()\n"
  },
  {
    "path": "ansibullbot/utils/github.py",
    "content": "# https://github.com/octokit/octokit.net/issues/638#issuecomment-67795998\n\n# FIXME\n#   - [Errno -5] No address associated with hostname\n\nimport http.client\nimport logging\nimport requests\nimport socket\nimport sys\nimport time\nimport traceback\n\nfrom requests.exceptions import ReadTimeout\n\nfrom ansibullbot._text_compat import to_text\nfrom ansibullbot.exceptions import RateLimitError\nfrom ansibullbot.utils.sqlite_utils import AnsibullbotDatabase\n\nimport ansibullbot.constants as C\n\n\nADB = AnsibullbotDatabase()\n\n\ndef get_rate_limit():\n    url = C.DEFAULT_GITHUB_URL\n    if not url:\n        url = 'https://api.github.com/rate_limit'\n    else:\n        url += '/rate_limit'\n    username = C.DEFAULT_GITHUB_USERNAME\n    password = C.DEFAULT_GITHUB_PASSWORD\n    token = C.DEFAULT_GITHUB_TOKEN\n\n    if token:\n        while True:\n            logging.debug(url)\n            try:\n                rr = requests.get(\n                    url,\n                    headers={'Authorization': 'token %s' % token}\n                )\n                response = rr.json()\n                break\n            except Exception as e:\n                logging.error(e)\n                time.sleep(60)\n\n    else:\n        while True:\n            logging.debug(url)\n            try:\n                rr = requests.get(\n                    url,\n                    auth=(username, password)\n                )\n                response = rr.json()\n                break\n            except Exception:\n                time.sleep(60)\n\n    if 'resources' not in response or 'core' not in response.get('resources', {}):\n        logging.warning('Unable to fetch rate limit %r', response.get('message'))\n        return False\n\n    ADB.set_rate_limit(username=username, token=token, rawjson=response)\n\n    return response\n\n\ndef get_reset_time():\n    '''Return the number of seconds until the rate limit resets'''\n\n    # default to 62 minutes\n    reset_time = 60 * 62\n\n    rl = get_rate_limit()\n\n    if rl:\n        # The time at which the current rate limit window resets\n        # in UTC epoch seconds. [ex. 1483405983]\n        logging.debug('rate_limit: %s' % to_text(rl))\n        reset_time = rl['resources']['core']['reset'] - time.time()\n        reset_time = int(reset_time)\n        if reset_time < 1:\n            reset_time = 0\n\n        # always pad by 5s\n        reset_time += 5\n\n    logging.debug('get_reset_time [return]: %s(s)' % reset_time)\n    return reset_time\n\n\ndef RateLimited(fn):\n\n    def inner(*args, **kwargs):\n\n        # bypass this decorator for testing purposes\n        if not C.DEFAULT_RATELIMIT:\n            return fn(*args, **kwargs)\n\n        success = False\n        count = 0\n        while not success:\n            count += 1\n\n            # use cached ratelimit data and a query counter to reduce api calls for rate_limit\n            rl = ADB.get_rate_limit_rawjson(token=C.DEFAULT_GITHUB_TOKEN)\n            qcounter = ADB.get_rate_limit_query_counter(token=C.DEFAULT_GITHUB_TOKEN)\n            if rl is None or qcounter is None or qcounter > 100 or (rl and rl['resources']['core']['remaining'] < 100):\n                rl = get_rate_limit()\n                ADB.set_rate_limit(token=C.DEFAULT_GITHUB_TOKEN, rawjson=rl)\n                qcounter = ADB.get_rate_limit_query_counter(token=C.DEFAULT_GITHUB_TOKEN)\n\n            logging.debug('qcounter: %s' % qcounter)\n            rl['resources']['core']['remaining'] -= qcounter\n\n            if rl:\n                logging.debug('ratelimited call #%s [%s] [%s] [%s]' %\n                              (count,\n                               type(args[0]),\n                               fn.__name__,\n                               rl['resources']['core']['remaining']))\n\n            if count > 10:\n                logging.error('HIT 10 loop iteration on call, giving up')\n                sys.exit(1)\n\n            # default to 5 minute sleep\n            stime = 5*60\n            try:\n                x = fn(*args, **kwargs)\n                success = True\n            except RateLimitError:\n                stime = get_reset_time()\n            except OSError as e:\n                logging.warning('socket error: sleeping 2 minutes %s' % e)\n                time.sleep(2*60)\n            except ReadTimeout as e:\n                logging.warning('read timeout: sleeping 2 minutes %s' % e)\n                time.sleep(2*60)\n            except AttributeError as e:\n                if \"object has no attribute 'decoded_content'\" in e.message:\n                    stime = get_reset_time()\n                    msg = 'decoded_content error: sleeping %s minutes %s' \\\n                        % (stime / 60, e)\n                    logging.warning(msg)\n                    time.sleep(stime)\n                else:\n                    raise Exception('unhandled message type')\n            except TypeError as e:\n                if \"unsupported operand type(s) for -=\" in e.message:\n                    stime = get_reset_time()\n                    msg = 'retry type error: sleeping %s minutes %s' \\\n                        % (stime / 60, e)\n                    logging.warning(msg)\n                    time.sleep(stime)\n                else:\n                    logging.error(e)\n                    raise Exception('unhandled message type')\n            except Exception as e:\n                logging.error(e)\n                if hasattr(e, 'data') and e.data is not None and e.data.get('message'):\n                    msg = e.data.get('message')\n                    if 'blocked from content creation' in msg:\n                        logging.warning('content creation rate limit exceeded')\n                        stime = 2*60\n                    elif 'Label does not exist' in msg:\n                        return None\n                    elif 'rate limit exceeded' in msg:\n                        logging.warning('general rate limit exceeded')\n                        stime = get_reset_time()\n                    elif isinstance(e, socket.error):\n                        logging.warning('socket error')\n                        stime = 5*60\n                    elif 'Server Error' in msg:\n                        logging.warning('server error')\n                        stime = 2*60\n                    elif 'Not Found' in msg:\n                        logging.info('object not found')\n                        return None\n                    elif \"object has no attribute 'decoded_content'\" in msg:\n                        # occurs most often when fetching file contents from\n                        # the api such as the issue template\n                        stime = get_reset_time()\n                    elif 'No handler found for uri' in msg:\n                        # Not sure what is happening here ...\n                        # No handler found for uri\n                        # [/repos/ansible/ansible/issues/14171] and method [GET]\n                        stime = 2*60\n                    elif msg.lower() == 'issues are disabled for this repo':\n                        return None\n                    elif 'The request could not be processed because too many files changed' in msg:\n                        stime = 2*60\n                    else:\n                        raise Exception('unhandled message type')\n                elif isinstance(e, http.client.IncompleteRead):\n                    # https://github.com/ansible/ansibullbot/issues/593\n                    stime = 2*60\n                elif isinstance(e, http.client.BadStatusLine):\n                    # https://github.com/ansible/ansibullbot/issues/602\n                    stime = 2*60\n                elif getattr(e, 'status', 0) >= 500:\n                    # https://github.com/ansible/ansibullbot/issues/1025\n                    # https://sentry.io/red-hat-ansibullbot/ansibullbot/issues/804854465\n                    stime = 2*60\n                else:\n                    ex_type, ex, tb = sys.exc_info()\n                    traceback.print_tb(tb)\n                    raise\n\n                logging.warning('sleeping %s minutes' % (stime/60))\n                time.sleep(stime)\n\n        return x\n\n    return inner\n"
  },
  {
    "path": "ansibullbot/utils/logs.py",
    "content": "import logging\nimport logging.handlers\n\n\ndef set_logger(debug=False, logfile=None):\n    root_logger = logging.getLogger()\n    root_logger.setLevel(logging.DEBUG if debug else logging.INFO)\n\n    formatter = logging.Formatter(\n        \"%(asctime)s %(levelname)s %(process)d %(filename)s:%(funcName)s:%(lineno)d %(message)s\"\n    )\n\n    console_handler = logging.StreamHandler()\n    console_handler.setFormatter(formatter)\n    root_logger.addHandler(console_handler)\n\n    if logfile:\n        file_handler = logging.handlers.WatchedFileHandler(logfile)\n        file_handler.setFormatter(formatter)\n        root_logger.addHandler(file_handler)\n"
  },
  {
    "path": "ansibullbot/utils/moduletools.py",
    "content": "import copy\nimport logging\nimport os\nimport pickle\n\nfrom sqlalchemy import create_engine\nfrom sqlalchemy import Column\nfrom sqlalchemy import Integer\nfrom sqlalchemy import String\nfrom sqlalchemy.ext.declarative import declarative_base\nfrom sqlalchemy.orm import sessionmaker\n\nfrom ansibullbot._text_compat import to_text\nfrom ansibullbot.utils.extractors import ModuleExtractor\nfrom ansibullbot.utils.systemtools import run_command\nfrom ansibullbot.utils.timetools import strip_time_safely\n\n\nBase = declarative_base()\n\n\nclass Blame(Base):\n    __tablename__ = 'blames'\n    id = Column(Integer(), primary_key=True)\n    file_name = Column(String())\n    file_commit = Column(String())\n    author_commit = Column(String())\n    author_login = Column(String())\n\n\nclass Email(Base):\n    __tablename__ = 'email'\n    id = Column(Integer())\n    login = Column(String())\n    email = Column(String(), primary_key=True)\n\n\nclass ModuleIndexer:\n\n    EMPTY_MODULE = {\n        'authors': [],\n        'name': None,\n        'namespaced_module': None,\n        'namespace_maintainers': [],\n        'deprecated': False,\n        'deprecated_filename': None,\n        'dirpath': None,\n        'filename': None,\n        'filepath': None,\n        'fulltopic': None,\n        'maintainers': [],\n        '_maintainers': [],\n        'maintainers_keys': None,\n        'metadata': {},\n        'repo_filename': None,\n        'repository': 'ansible',\n        'subtopic': None,\n        'topic': None,\n        'imports': []\n    }\n\n    def __init__(self, commits=True, blames=True, botmeta=None, gh_client=None, cachedir='~/.ansibullbot/cache', gitrepo=None):\n        self.get_commits = commits\n        self.get_blames = blames\n        botmeta = botmeta if botmeta else {}\n        self.gqlc = gh_client\n        self.scraper_cache = os.path.expanduser(os.path.join(cachedir, 'ansible.modules.scraper'))\n        self.gitrepo = gitrepo\n\n        self.modules = {}  # keys: paths of files belonging to the repository\n\n        # sqlalchemy\n        unc = os.path.join(cachedir, 'ansible_module_indexer.db')\n        unc = os.path.expanduser(unc)\n        unc = 'sqlite:///' + unc\n\n        self.engine = create_engine(unc)\n        self.Session = sessionmaker(bind=self.engine)\n        self.session = self.Session()\n\n        Email.metadata.create_all(self.engine)\n        Blame.metadata.create_all(self.engine)\n\n        # committers by module\n        self.committers = {}\n        # commits by module\n        self.commits = {}\n        # map of email to github login\n        self.emails_cache = {}\n\n        self.update(botmeta)\n\n    def update(self, botmeta=None):\n        if botmeta is not None:\n            self.botmeta = botmeta\n        self.get_ansible_modules()\n\n    def get_ansible_modules(self):\n        \"\"\"Make a list of known modules\"\"\"\n\n        matches = []\n        module_dir = os.path.join(self.gitrepo.checkoutdir, 'lib/ansible/modules')\n        module_dir = os.path.expanduser(module_dir)\n        for root, _, filenames in os.walk(module_dir):\n            for filename in filenames:\n                if 'lib/ansible/modules' in root and not filename == '__init__.py':\n                    matches.append(os.path.join(root, filename))\n\n        matches = sorted(set(matches))\n\n        self.populate_modules(matches)\n\n        # custom fixes\n        newitems = []\n        for k, v in self.modules.items():\n\n            # include* is almost always an ansible/ansible issue\n            # https://github.com/ansible/ansibullbot/issues/214\n            if k.endswith('/include.py'):\n                self.modules[k]['repository'] = 'ansible'\n            # https://github.com/ansible/ansibullbot/issues/214\n            if k.endswith('/include_vars.py'):\n                self.modules[k]['repository'] = 'ansible'\n            if k.endswith('/include_role.py'):\n                self.modules[k]['repository'] = 'ansible'\n\n            # ansible maintains these\n            if 'include' in k:\n                self.modules[k]['maintainers'] = ['ansible']\n\n            # deprecated modules are annoying\n            if v['name'].startswith('_'):\n\n                dkey = os.path.dirname(v['filepath'])\n                dkey = os.path.join(dkey, v['filename'].replace('_', '', 1))\n                if dkey not in self.modules:\n                    nd = v.copy()\n                    nd['name'] = nd['name'].replace('_', '', 1)\n                    newitems.append((dkey, nd))\n\n        for ni in newitems:\n            self.modules[ni[0]] = ni[1]\n\n        # parse imports\n        logging.debug('set module imports')\n        self.set_module_imports()\n\n        # last modified\n        if self.get_commits:\n            logging.debug('set module commits')\n            self.get_module_commits()\n\n        # parse blame\n        if self.get_blames and self.get_commits:\n            logging.debug('set module blames')\n            self.get_module_blames()\n\n        # depends on metadata now ...\n        logging.debug('set module maintainers')\n        self.set_maintainers()\n\n        return self.modules\n\n    def populate_modules(self, matches):\n        # figure out the names\n        for match in matches:\n            mdict = copy.deepcopy(self.EMPTY_MODULE)\n\n            mdict['filename'] = os.path.basename(match)\n\n            dirpath = os.path.dirname(match)\n            dirpath = dirpath.replace(self.gitrepo.checkoutdir + '/', '')\n            mdict['dirpath'] = dirpath\n\n            filepath = match.replace(self.gitrepo.checkoutdir + '/', '')\n            mdict['filepath'] = filepath\n\n            mdict.update(\n                self.split_topics_from_path(filepath)\n            )\n\n            mdict['repo_filename'] = mdict['filepath']\\\n                .replace('lib/ansible/modules/%s/' % mdict['repository'], '')\n\n            # clustering/consul\n            mdict['namespaced_module'] = mdict['repo_filename']\n            mdict['namespaced_module'] = \\\n                mdict['namespaced_module'].replace('.py', '')\n            mdict['namespaced_module'] = \\\n                mdict['namespaced_module'].replace('.ps1', '')\n\n            mname = os.path.basename(match)\n            mname = mname.replace('.py', '')\n            mname = mname.replace('.ps1', '')\n            mdict['name'] = mname\n\n            # deprecated modules\n            if mname.startswith('_'):\n                mdict['deprecated'] = True\n                deprecated_filename = \\\n                    os.path.dirname(mdict['namespaced_module'])\n                deprecated_filename = \\\n                    os.path.join(deprecated_filename, mname[1:] + '.py')\n                mdict['deprecated_filename'] = deprecated_filename\n            else:\n                mdict['deprecated_filename'] = mdict['repo_filename']\n\n            self.modules[filepath] = mdict\n\n        # meta is a special module\n        self.modules['meta'] = copy.deepcopy(self.EMPTY_MODULE)\n        self.modules['meta']['name'] = 'meta'\n        self.modules['meta']['repo_filename'] = 'meta'\n\n    def get_module_commits(self):\n        keys = self.modules.keys()\n        keys = sorted(keys)\n        for k in keys:\n            self.commits[k] = []\n            cpath = os.path.join(self.gitrepo.checkoutdir, k)\n            if not os.path.isfile(cpath):\n                continue\n\n            mtime = os.path.getmtime(cpath)\n            refresh = False\n            pfile = os.path.join(\n                self.scraper_cache,\n                k.replace('/', '_') + '.commits.pickle'\n            )\n\n            if not os.path.isfile(pfile):\n                refresh = True\n            else:\n                logging.debug(pfile)\n                with open(pfile, 'rb') as f:\n                    pdata = pickle.load(f)\n                if pdata[0] == mtime:\n                    self.commits[k] = pdata[1]\n                else:\n                    refresh = True\n\n            if refresh:\n                logging.info('refresh commit cache for %s' % k)\n                cmd = 'cd %s; git log --follow %s' % (self.gitrepo.checkoutdir, k)\n                (rc, so, se) = run_command(cmd)\n                for line in to_text(so).split('\\n'):\n                    if line.startswith('commit '):\n                        commit = {\n                            'name': None,\n                            'email': None,\n                            'login': None,\n                            'hash': line.split()[-1],\n                            'date': None\n                        }\n\n                    # Author: Matt Clay <matt@mystile.com>\n                    if line.startswith('Author: '):\n                        line = line.replace('Author: ', '')\n                        line = line.replace('<', '')\n                        line = line.replace('>', '')\n                        lparts = line.split()\n\n                        if '@' in lparts[-1]:\n                            commit['email'] = lparts[-1]\n                            commit['name'] = ' '.join(lparts[:-1])\n                        else:\n                            pass\n\n                        if commit['email'] and \\\n                                'noreply.github.com' in commit['email']:\n                            commit['login'] = commit['email'].split('@')[0]\n\n                    # Date:   Sat Jan 28 23:28:53 2017 -0800\n                    if line.startswith('Date:'):\n                        dstr = line.split(':', 1)[1].strip()\n                        dstr = ' '.join(dstr.split(' ')[:-1])\n                        commit['date'] = strip_time_safely(to_text(dstr))\n                        self.commits[k].append(commit)\n\n                with open(pfile, 'wb') as f:\n                    pickle.dump((mtime, self.commits[k]), f)\n\n    def last_commit_for_file(self, filepath):\n        if filepath in self.commits and 'hash' in self.commits[filepath][0]:\n            return self.commits[filepath][0]['hash']\n\n        # git log --pretty=format:'%H' -1\n        # lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py\n        cmd = 'cd %s; git log --pretty=format:\\'%%H\\' -1 %s' % \\\n            (self.gitrepo.checkoutdir, filepath)\n        (rc, so, se) = run_command(cmd)\n        return to_text(so).strip()\n\n    def get_module_blames(self):\n\n        logging.debug('build email cache')\n        emails_cache = self.session.query(Email)\n        emails_cache = [(x.email, x.login) for x in emails_cache]\n        self.emails_cache = dict(emails_cache)\n\n        logging.debug('build blame cache')\n        blame_cache = self.session.query(Blame).all()\n        blame_cache = [x.file_commit for x in blame_cache]\n        blame_cache = sorted(set(blame_cache))\n\n        logging.debug('eval module hashes')\n        changed = False\n        keys = sorted(self.modules.keys())\n        for k in keys:\n            if k not in self.gitrepo.files:\n                self.committers[k] = {}\n                continue\n\n            ghash = self.last_commit_for_file(k)\n\n            if ghash in blame_cache:\n                continue\n\n            logging.debug(f'checking hash for {k}')\n            res = self.session.query(Blame).filter_by(file_name=k, file_commit=ghash).all()\n            hashes = [x.file_commit for x in res]\n\n            if ghash not in hashes:\n\n                logging.debug(f'hash {ghash} not found for {k}, updating blames')\n\n                scraper_args = ['ansible', 'ansible', 'devel', k]\n                uns, emailmap = self.gqlc.get_usernames_from_filename_blame(*scraper_args)\n\n                # check the emails\n                for email, login in emailmap.items():\n                    if email in self.emails_cache:\n                        continue\n                    exists = self.session.query(Email).filter_by(email=email).first()\n                    if not exists:\n                        logging.debug(f'insert {login}:{email}')\n                        _email = Email(email=email, login=login)\n                        self.session.add(_email)\n                        changed = True\n\n                # check the blames\n                for login, commits in uns.items():\n                    for commit in commits:\n                        kwargs = {\n                            'file_name': k,\n                            'file_commit': ghash,\n                            'author_commit': commit,\n                            'author_login': login\n                        }\n                        exists = self.session.query(Blame).filter_by(**kwargs).first()\n                        if not exists:\n                            logging.debug(f'insert {k}:{commit}:{login}')\n                            _blame = Blame(**kwargs)\n                            self.session.add(_blame)\n                            changed = True\n\n        if changed:\n            self.session.commit()\n            logging.debug('re-build email cache')\n            emails_cache = self.session.query(Email)\n            emails_cache = [(x.email, x.login) for x in emails_cache]\n            self.emails_cache = dict(emails_cache)\n\n        # fill in what we can ...\n        logging.debug('fill in commit logins')\n        for k in keys:\n            for idc, commit in enumerate(self.commits[k][:]):\n                if not commit.get('login'):\n                    continue\n                login = self.emails_cache.get(commit['email'])\n                if not login and '@users.noreply.github.com' in commit['email']:\n                    login = commit['email'].split('@')[0]\n                    self.emails_cache[commit['email']] = login\n                if not login:\n                    logging.debug('unknown: {}'.format(commit['email']))\n                self.commits[k][idc]['login'] = self.emails_cache.get(login)\n\n    def set_maintainers(self):\n        '''Define the maintainers for each module'''\n\n        # grep the authors:\n        for k, v in self.modules.items():\n            if v['filepath'] is None:\n                continue\n            mfile = os.path.join(self.gitrepo.checkoutdir, v['filepath'])\n            authors = ModuleExtractor(mfile, email_cache=self.emails_cache).get_module_authors()\n            self.modules[k]['authors'] = authors\n\n            # authors are maintainers by -default-\n            self.modules[k]['maintainers'] += authors\n            self.modules[k]['maintainers'] = \\\n                sorted(set(self.modules[k]['maintainers']))\n\n        metadata = self.botmeta['files'].keys()\n        for k, v in self.modules.items():\n            if k == 'meta':\n                continue\n\n            if k in self.botmeta['files']:\n                # There are metadata in .github/BOTMETA.yml for this file\n                # copy maintainers_keys\n                self.modules[k]['maintainers_keys'] = self.botmeta['files'][k]['maintainers_keys'][:]\n\n                if self.botmeta['files'][k]:\n                    maintainers = self.botmeta['files'][k].get('maintainers', [])\n\n                    for maintainer in maintainers:\n                        if maintainer not in self.modules[k]['maintainers']:\n                            self.modules[k]['maintainers'].append(maintainer)\n\n                    # remove the people who want to be ignored\n                    if 'ignored' in self.botmeta['files'][k]:\n                        ignored = self.botmeta['files'][k]['ignored']\n                        for x in ignored:\n                            if x in self.modules[k]['maintainers']:\n                                self.modules[k]['maintainers'].remove(x)\n\n            else:\n                # There isn't metadata in .github/BOTMETA.yml for this file\n                best_match = None\n                for mkey in metadata:\n                    if v['filepath'].startswith(mkey):\n                        if not best_match:\n                            best_match = mkey\n                            continue\n                        if len(mkey) > len(best_match):\n                            best_match = mkey\n                if best_match:\n                    self.modules[k]['maintainers_keys'] = [best_match]\n                    for maintainer in self.botmeta['files'][best_match].get('maintainers', []):\n                        if maintainer not in self.modules[k]['maintainers']:\n                            self.modules[k]['maintainers'].append(maintainer)\n\n                    # remove the people who want to be ignored\n                    for ignored in self.botmeta['files'][best_match].get('ignored', []):\n                        if ignored in self.modules[k]['maintainers']:\n                            self.modules[k]['maintainers'].remove(ignored)\n\n            # save a pristine copy so that higher level code can still use it\n            self.modules[k]['maintainers'] = sorted(set(self.modules[k]['maintainers']))\n            self.modules[k]['_maintainers'] = \\\n                [x for x in self.modules[k]['maintainers']]\n\n        # set the namespace maintainers ...\n        for k, v in self.modules.items():\n            if 'namespace_maintainers' not in self.modules[k]:\n                self.modules[k]['namespace_maintainers'] = []\n            if v.get('namespace'):\n                ns = v.get('namespace')\n                nms = self.get_maintainers_for_namespace(ns)\n                self.modules[k]['namespace_maintainers'] = nms\n\n    def split_topics_from_path(self, module_file):\n        subpath = module_file.replace('lib/ansible/modules/', '')\n        path_parts = subpath.split('/')\n        topic = path_parts[0]\n\n        if len(path_parts) > 2:\n            subtopic = path_parts[1]\n            fulltopic = '/'.join(path_parts[0:2])\n        else:\n            subtopic = None\n            fulltopic = path_parts[0]\n\n        tdata = {\n            'fulltopic': fulltopic,\n            'namespace': fulltopic,\n            'topic': topic,\n            'subtopic': subtopic\n        }\n\n        return tdata\n\n    def set_module_imports(self):\n        for k, v in self.modules.items():\n            if not v['filepath']:\n                continue\n            mfile = os.path.join(self.gitrepo.checkoutdir, v['filepath'])\n            self.modules[k]['imports'] = self.get_module_imports(mfile)\n\n    def get_module_imports(self, module_file):\n        mimports = []\n\n        if not os.path.isfile(module_file):\n            return mimports\n\n        else:\n            with open(module_file, 'rb') as f:\n                for line in f:\n                    line = line.strip()\n                    line = line.replace(b',', b'')\n                    if line.startswith(b'import') or \\\n                            (b'import' in line and b'from' in line):\n                        lparts = line.split()\n                        if line.startswith(b'import '):\n                            mimports.append(lparts[1])\n                        elif line.startswith(b'from '):\n                            mpath = lparts[1] + b'.'\n                            for spath in lparts[3:]:\n                                mimports.append(mpath + spath)\n\n            return [to_text(m) for m in mimports]\n\n    @property\n    def all_maintainers(self):\n        maintainers = set()\n        for path, metadata in self.botmeta['files'].items():\n            maintainers.update(metadata.get('maintainers', []))\n        return maintainers\n\n    def get_maintainers_for_namespace(self, namespace):\n        maintainers = []\n        for k, v in self.modules.items():\n            if 'namespace' not in v or 'maintainers' not in v:\n                continue\n            if v['namespace'] == namespace:\n                for m in v['maintainers']:\n                    if m not in maintainers:\n                        maintainers.append(m)\n        maintainers = [x for x in maintainers if x.strip()]\n        return maintainers\n"
  },
  {
    "path": "ansibullbot/utils/net_tools.py",
    "content": "import logging\nimport time\n\nimport requests\n\n\n# FIXME should we only retry 5xx?\n_DONT_RETRY_STATUSES = [\n    200,  # OK\n    204,  # No Content\n    302,  # Found (Moved temporarily)\n    400,  # Bad request\n    404,  # Not Found\n    409,  # Conflict\n]\n\n\ndef fetch(url, verb='get', **kwargs):\n    \"\"\"return response or None in case of failure, try twice\"\"\"\n    for i in range(2):\n        logging.info('%s %s' % (verb, url))\n        http_method = getattr(requests, verb)\n        resp = http_method(url, **kwargs)\n        logging.info('status code: %s' % resp.status_code)\n        logging.info('reason: %s' % resp.reason)\n\n        if resp.status_code not in _DONT_RETRY_STATUSES:\n            logging.error('status code: %s' % resp.status_code)\n            time.sleep(2)\n            continue\n\n        return resp\n"
  },
  {
    "path": "ansibullbot/utils/receiver_client.py",
    "content": "import logging\n\nimport requests\n\nimport ansibullbot.constants as C\n\n\ndef post_to_receiver(path, params, data):\n    if not data:\n        return\n\n    if not C.DEFAULT_RECEIVER_HOST or 'none' in C.DEFAULT_RECEIVER_HOST.lower():\n        return\n\n    rr = None\n    if C.DEFAULT_RECEIVER_HOST and data:\n        receiverurl = 'http://'\n        receiverurl += C.DEFAULT_RECEIVER_HOST\n        receiverurl += ':'\n        receiverurl += str(C.DEFAULT_RECEIVER_PORT)\n        receiverurl += '/'\n        receiverurl += path\n        logging.info('RECEIVER: POST to %s' % receiverurl)\n        try:\n            rr = requests.post(receiverurl, params=params, json=data)\n        except Exception as e:\n            logging.error(e)\n\n    try:\n        if rr is not None:\n            for k, v in rr.json().items():\n                logging.info('RECEIVER: %s %s' % (v, k))\n    except ValueError as e:\n        logging.debug('RECEIVER: status_code = %s' % rr.status_code)\n        logging.error(e)\n\n\ndef get_receiver_summaries(username, reponame, state=None, number=None):\n    '''\n    @app.route('/summaries', methods=['GET', 'POST'])\n    def summaries():\n        username = request.args.get('user')\n        reponame = request.args.get('repo')\n        number = request.args.get('number')\n    '''\n\n    if not username or not reponame:\n        return\n\n    if not C.DEFAULT_RECEIVER_HOST or 'none' in C.DEFAULT_RECEIVER_HOST.lower():\n        return\n\n    if C.DEFAULT_RECEIVER_HOST:\n        receiverurl = 'http://'\n        receiverurl += C.DEFAULT_RECEIVER_HOST\n        receiverurl += ':'\n        receiverurl += str(C.DEFAULT_RECEIVER_PORT)\n        receiverurl += '/'\n        receiverurl += 'summaries'\n        logging.info('RECEIVER: GET %s' % receiverurl)\n\n        params = {'user': username, 'repo': reponame}\n        if state:\n            params['state'] = state\n\n        rr = None\n        try:\n            rr = requests.get(\n                receiverurl,\n                params=params\n            )\n        except Exception as e:\n            logging.error(e)\n\n        if rr:\n            return rr.json()\n\n    return None\n\n\ndef get_receiver_metadata(username, reponame, number=None, keys=None):\n    '''\n    @app.route('/metadata', methods=['GET', 'POST'])\n    def metadata():\n        username = request.args.get('user')\n        reponame = request.args.get('repo')\n        number = request.args.get('number')\n    '''\n\n    if not username or not reponame:\n        return\n\n    if not C.DEFAULT_RECEIVER_HOST or 'none' in C.DEFAULT_RECEIVER_HOST.lower():\n        return\n\n    if C.DEFAULT_RECEIVER_HOST:\n        receiverurl = 'http://'\n        receiverurl += C.DEFAULT_RECEIVER_HOST\n        receiverurl += ':'\n        receiverurl += str(C.DEFAULT_RECEIVER_PORT)\n        receiverurl += '/'\n        receiverurl += 'metadata'\n        logging.info('RECEIVER: GET %s' % receiverurl)\n\n        params = {'user': username, 'repo': reponame}\n        if number:\n            params['number'] = number\n        if keys:\n            params['key'] = keys\n\n        rr = None\n        try:\n            rr = requests.get(\n                receiverurl,\n                params=params\n            )\n        except Exception as e:\n            logging.error(e)\n\n        if rr:\n            return rr.json()\n\n    return None\n"
  },
  {
    "path": "ansibullbot/utils/sentry.py",
    "content": "from .. import constants\nimport sentry_sdk\n\n\ndef initialize_sentry():\n    sentry_sdk.init(\n        dsn=constants.DEFAULT_SENTRY_DSN,\n        environment=constants.DEFAULT_SENTRY_ENV,\n        server_name=constants.DEFAULT_SENTRY_SERVER_NAME,\n        attach_stacktrace=constants.DEFAULT_SENTRY_TRACE,\n        release=constants.ANSIBULLBOT_VERSION,\n    )\n"
  },
  {
    "path": "ansibullbot/utils/sqlite_utils.py",
    "content": "import json\nimport logging\nimport os\n\nfrom sqlalchemy import create_engine\nfrom sqlalchemy import Column\nfrom sqlalchemy import Integer\nfrom sqlalchemy import String\nfrom sqlalchemy.ext.declarative import declarative_base\nfrom sqlalchemy.orm import sessionmaker\n\nimport ansibullbot.constants as C\n\n\nBase = declarative_base()\n\n\nclass Blame(Base):\n    __tablename__ = 'blames'\n    id = Column(Integer(), primary_key=True)\n    file_name = Column(String())\n    file_commit = Column(String())\n    author_commit = Column(String())\n    author_login = Column(String())\n\n\nclass Email(Base):\n    __tablename__ = 'email'\n    id = Column(Integer())\n    login = Column(String())\n    email = Column(String(), primary_key=True)\n\n\nclass RateLimit(Base):\n    __tablename__ = 'rate_limit'\n    id = Column(Integer(), primary_key=True)\n    username = Column(String)\n    token = Column(String)\n    rawjson = Column(String)\n    core_rate_limit = Column(Integer)\n    core_rate_limit_remaining = Column(Integer)\n    query_counter = Column(Integer)\n\n\nclass GithubApiRequest(Base):\n    __tablename__ = 'github_api_request'\n    id = Column(Integer(), primary_key=True)\n    url = Column(String)\n    headers = Column(String)\n    datafile = Column(String)\n    etag = Column(String)\n    date = Column(String)\n    last_modified = Column(String)\n    token = Column(String)\n\n\nclass AnsibullbotDatabase:\n\n    '''A sqlite backed database to help with data caching [NOT CONFIG]'''\n\n\n    # Use this to set the filename and avoid having to deal with migration\n    VERSION = '0.2'\n\n    def __init__(self, cachedir='/tmp'):\n\n        self.dbfile = None\n        unc = C.DEFAULT_DATABASE_UNC\n        if unc.startswith('sqlite:'):\n            self.dbfile = unc.replace('sqlite:///', '')\n            self.dbfile = os.path.expanduser(self.dbfile)\n            self.dbfile = os.path.abspath(self.dbfile)\n            dbfiledir = os.path.dirname(self.dbfile)\n            if not os.path.exists(dbfiledir):\n                os.makedirs(dbfiledir)\n            self.dbfile += '_' + self.VERSION\n            unc = 'sqlite:///' + self.dbfile\n\n        self.unc = unc\n\n        self.engine = create_engine(self.unc)\n        self.session_maker = sessionmaker(bind=self.engine)\n        self.session = self.session_maker()\n\n        self.create_tables()\n\n    def delete_db_file(self):\n        os.remove(self.dbfile)\n\n    def create_tables(self):\n\n        retries = 0\n        while True and retries < 2:\n            try:\n                Email.metadata.create_all(self.engine)\n                Blame.metadata.create_all(self.engine)\n                RateLimit.metadata.create_all(self.engine)\n                GithubApiRequest.metadata.create_all(self.engine)\n                break\n            except Exception as e:\n                retries += 1\n                if self.dbfile and os.path.exists(self.dbfile):\n                    self.delete_db_file()\n\n    def get_github_api_request_meta(self, url, token=None):\n        try:\n            if token is None:\n                rl = self.session.query(GithubApiRequest).filter(GithubApiRequest.url == url).first()\n            else:\n                rl = self.session.query(GithubApiRequest).filter(GithubApiRequest.url == url).filter(GithubApiRequest.token == token).first()\n        except Exception as e:\n            logging.error(e)\n            return {}\n\n        meta = {}\n        if rl is not None:\n            meta = {\n                'url': rl.url,\n                'date': rl.date,\n                'etag': rl.etag,\n                'last_modified': rl.last_modified,\n                'datafile': rl.datafile,\n                'token': rl.token,\n                'headers': json.loads(rl.headers)\n            }\n\n        return meta\n\n    def set_github_api_request_meta(self, url, headers, datafile, token=None):\n        kwargs = {\n            'url': url,\n            'date': headers['Date'],\n            'etag': headers['ETag'],\n            'last_modified': headers.get('Last-Modified'),\n            'datafile': datafile,\n            'token': token,\n            'headers': json.dumps(dict(headers))\n        }\n\n        try:\n            if token is None:\n                current = self.session.query(GithubApiRequest).filter(GithubApiRequest.url == url).first()\n            else:\n                current = self.session.query(GithubApiRequest).filter(GithubApiRequest.url == url).filter(GithubApiRequest.token == token).first()\n        except Exception as e:\n            logging.error(e)\n            return None\n\n        meta = GithubApiRequest(**kwargs)\n        self.session.merge(meta)\n        try:\n            self.session.flush()\n            self.session.commit()\n        except Exception as e:\n            logging.error(e)\n\n    def set_rate_limit(self, username=None, token=None, rawjson=None):\n\n        '''Store the ratelimit json data by user/token'''\n\n        kwargs = {\n            'username': username,\n            'token': token,\n            'core_rate_limit': rawjson['resources']['core']['limit'],\n            'core_rate_limit_remaining': rawjson['resources']['core']['remaining'],\n            'rawjson': json.dumps(rawjson),\n            'query_counter': 0\n        }\n        try:\n            rl = RateLimit(**kwargs)\n            self.session.merge(rl)\n            self.session.flush()\n            self.session.commit()\n\n            self.reset_rate_limit_query_counter(username=username, token=token)\n        except Exception as e:\n            logging.error(e)\n            return None\n\n    def get_rate_limit_remaining(self, username=None, token=None):\n\n        '''Get the core limit remaining by user/token'''\n\n        try:\n            rl = None\n            rl = self.session.query(RateLimit).filter(RateLimit.token == token).first()\n            if rl is None or not hasattr(rl, 'core_rate_limit_remaining'):\n                return None\n            remaining = rl.core_rate_limit_remaining\n\n            if rl.query_counter is None:\n                rl.query_counter = 0\n            rl.query_counter += 1\n            self.session.merge(rl)\n            self.session.flush()\n            self.session.commit()\n\n            return remaining\n        except Exception as e:\n            logging.error(e)\n            return None\n\n    def get_rate_limit_rawjson(self, username=None, token=None):\n\n        '''Get the ratelimit json by user/token'''\n\n        try:\n            rl = None\n            rl = self.session.query(RateLimit).filter(RateLimit.token == token).first()\n            if rl is None or not hasattr(rl, 'core_rate_limit_remaining'):\n                return None\n\n            data = None\n            try:\n                data = rl.rawjson\n                data = json.loads(data)\n            except Exception as e:\n                pass\n\n            # increment the counter to keep track of calls\n            if rl.query_counter is None:\n                rl.query_counter = 0\n            rl.query_counter += 1\n            self.session.merge(rl)\n            self.session.flush()\n            self.session.commit()\n\n            return data\n        except Exception as e:\n            logging.error(e)\n            return None\n\n    def get_rate_limit_query_counter(self, username=None, token=None):\n        counter = None\n        try:\n            counter = self.session.query(RateLimit).filter(RateLimit.token == token).first().query_counter\n        except Exception as e:\n            pass\n        return counter\n\n    def reset_rate_limit_query_counter(self, username=None, token=None):\n        rl = None\n        rl = self.session.query(RateLimit).filter(RateLimit.token == token).first()\n        rl.query_counter = 0\n        self.session.merge(rl)\n        self.session.flush()\n        self.session.commit()\n"
  },
  {
    "path": "ansibullbot/utils/systemtools.py",
    "content": "import copy\nimport os\nimport subprocess\n\n\ndef run_command(cmd, cwd=None, env=None):\n    if env:\n        _env = copy.deepcopy(dict(os.environ))\n        _env.update(env)\n        env = copy.deepcopy(_env)\n        for k, v in env.items():\n            env[k] = str(v)\n    p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=cwd, env=env)\n    (so, se) = p.communicate()\n    return p.returncode, so, se\n"
  },
  {
    "path": "ansibullbot/utils/timetools.py",
    "content": "import datetime\nimport logging\n\nfrom ansibullbot._text_compat import to_text\n\n\ndef strip_time_safely(tstring):\n    \"\"\"Try various formats to strip the time from a string\"\"\"\n    tsformats = (\n        '%Y-%m-%dT%H:%M:%SZ',\n        '%Y-%m-%dT%H:%M:%S.%f',\n        '%Y-%m-%dT%H:%M:%S',\n        '%Y-%m-%dT%H:%M:%S.%fZ',\n        '%a %b %d %H:%M:%S %Y',\n        '%Y-%m-%d',\n    )\n\n    for tsformat in tsformats:\n        try:\n            return datetime.datetime.strptime(tstring, tsformat)\n        except ValueError as e:\n            text_e = to_text(e)\n            if 'unconverted data remains' in text_e and tstring.endswith('Z'):\n                # '2020-11-10T07:39:58.6833333Z'\n                new_tstring = tstring[:-len(text_e.split(':')[-1].strip())]+'Z'\n                try:\n                    return datetime.datetime.strptime(new_tstring, '%Y-%m-%dT%H:%M:%S.%fZ')\n                except ValueError:\n                    pass\n\n    logging.error(f'{tstring} could not be stripped')\n    raise Exception(f'{tstring} could not be stripped')\n"
  },
  {
    "path": "ansibullbot/utils/version_tools.py",
    "content": "import os\nimport re\nimport typing as t\n\nfrom ansibullbot._text_compat import to_text\nfrom ansibullbot.utils.systemtools import run_command\nfrom ansibullbot.utils.timetools import strip_time_safely\n\n\n# from distutils.version.StrictVersion\n_version_re = re.compile(r'^(\\d+) \\. (\\d+) (\\. (\\d+))? ([ab](\\d+))?$',\n                        re.VERBOSE | re.ASCII)\n\n\ndef _is_valid_version(vstring):\n    match = _version_re.match(vstring)\n    if not match:\n        return False\n    return True\n\n\ndef get_version_major_minor(vstring: str) -> str:\n    # assumes already validated version\n    if '.' not in vstring:\n        raise AssertionError(f'version == {vstring}')\n    return '.'.join(vstring.split('.')[0:2])\n\n\nclass AnsibleVersionIndexer:\n    def __init__(self, checkoutdir):\n        self.checkoutdir = checkoutdir\n        self.valid_versions = self._get_valid_versions()\n        self.commit_versions_cache = {}\n        self._commits_by_date = None\n\n    @property\n    def commits_by_date(self) -> None:\n        if self._commits_by_date is not None:\n            return self._commits_by_date\n\n        _, stdout, _ = run_command('cd {};git log --date=short --pretty=format:\"%ad;%H\"'.format(self.checkoutdir))\n        self._commits_by_date = [x.strip().split(';') for x in to_text(stdout).splitlines() if x.strip()]\n        return self._commits_by_date\n\n    def _get_devel_version(self) -> str:\n        # __version__ = '2.13.0dev0'\n        with open(os.path.join(self.checkoutdir, 'lib/ansible/release.py')) as f:\n            lines = f.readlines()\n        for line in lines:\n            if line.strip().startswith('__version__'):\n                return line.split('=')[-1].strip().replace(\"'\", '').replace('\"', '')\n\n        raise ValueError('devel version not found in lib/ansible/release.py')\n\n    def _get_valid_versions(self) -> t.Dict[str, str]:\n        valid_versions = {}\n        _, stdout, _ = run_command('cd %s;git branch -a' % self.checkoutdir)\n        lines = [\n            x.strip().split('/')[-1].replace('release', '').replace('stable-', '')\n            for x in to_text(stdout).splitlines()\n            if x.strip().startswith(('remotes/origin/release', 'remotes/origin/stable'))\n        ]\n        for line in lines:\n            if line not in valid_versions:\n                valid_versions[line] = 'branch'\n\n        _, stdout, _ = run_command('cd %s;git tag -l' % self.checkoutdir)\n        lines = [x.strip().replace('v', '', 1) for x in to_text(stdout).splitlines() if x.strip()]\n        for line in lines:\n            if line not in valid_versions:\n                valid_versions[line] = 'tag'\n\n        return valid_versions\n\n    def is_valid_version(self, version: str) -> bool:\n        if version in self.valid_versions:\n            return True\n\n        for valid_version in self.valid_versions.keys():\n            if valid_version.startswith(version) or version.startswith(valid_version):\n                return True\n\n        return False\n\n    def strip_ansible_version(self, rawtext):\n        # any\n        # all\n        # all?\n        # all ?\n        # all recent releases\n        # a55c6625d4771c44017fce1d487b38749b12b381 (latest dev)\n        # ansible devel\n        # devel\n        # latest\n        # latest devel branch\n        # v2.0.0-0.9.rc4\n        # N/A\n        # NA\n        # current head\n        # master\n        # not applicable\n        # >2.0\n        # - 1.8.2\n        # - devel head f9c203feb68e224cd3d445568b39293f8a3d32ad\n        # ansible@devel\n        # 1.x\n        # 2.x\n        if rawtext is None:\n            return 'devel'\n\n        devel = ['devel', 'master', 'head', 'latest', 'all', 'all?', 'all ?', 'any',\n                 'n/a', 'na', 'not applicable', 'latest devel',\n                 'latest devel branch', 'ansible devel', '', 'future',\n                 'git version', 'ansible@devel', 'all recent releases']\n\n        if rawtext in devel:\n            return 'devel'\n\n        rawtext = rawtext.replace('`', '').strip().lower()\n        rawlines = [x.strip() for x in rawtext.split('\\n')]\n\n        # handle 1.x/2.x globs\n        xver = re.compile('^-?[1-9].x')\n        if len(rawlines) == 1:\n            if xver.match(rawlines[0]):\n                major_ver = rawlines[0].split('.')[0]\n\n                # Get the highest minor version for this major\n                for cver in reversed(sorted(self.valid_versions.keys())):\n                    if cver[0] == major_ver:\n                        return cver\n\n        xver = re.compile('^-?[1-9].[1-9].x')\n        if len(rawlines) == 1:\n            if xver.match(rawlines[0]):\n                major_ver = rawlines[0].split('.')[0]\n                minor_ver = rawlines[0].split('.')[1]\n\n                # Get the highest minor version for this major\n                for cver in reversed(sorted(self.valid_versions.keys())):\n                    if cver[0:3] == (major_ver + '.' + minor_ver):\n                        return cver\n\n        # check for copy/paste from --version output\n        for idx, x in enumerate(rawlines):\n            if len(rawlines) < (idx+2):\n                continue\n            if x.startswith('ansible') and \\\n                    (rawlines[idx+1].startswith(('config file', 'configured module search path'))):\n                parts = x.replace(')', '').replace('[', '').replace(']', '').split()\n                aversion = parts[1]\n\n                if len(parts) > 2:\n                    if aversion == 'core':\n                        aversion = parts[2]\n                return aversion\n\n        # try to find a vstring ...\n        pidx = rawtext.find('.')\n        if pidx > -1:\n            fver = ''\n            # get chars to the end of the vstring ...\n            for char in rawtext[pidx:]:\n                if char == ' ' or char == '\\n' or char == '\\r' \\\n                        or (not char.isalnum() and char != '.'):\n                    break\n                else:\n                    fver += char\n            head = rawtext[:pidx]\n            head = head[::-1]\n            # get chars to the beginning of the vstring ...\n            for char in head:\n                if char == ' ' or char == '\\n' or char == '\\r' \\\n                        or (not char.isalnum() and char != '.'):\n                    break\n                else:\n                    fver = char + fver\n            if fver[0] == 'v':\n                fver = fver[1:]\n            if fver:\n                if fver[0].isdigit():\n                    return fver\n                valid = False\n                try:\n                    valid = _is_valid_version(fver)\n                except ValueError:\n                    pass\n                if valid:\n                    return fver\n\n        lines = [x.strip() for x in rawtext.split('\\n') if x.strip()]\n        lines = [x for x in lines if not x.startswith(('config', '<', '-', 'lib'))]\n        for idx, x in enumerate(lines):\n            lines[idx] = x.translate(str.maketrans({\"'\": '', '\"': '', '`': '', ',': '', '*': '', ')': ''}))\n        lines = [x.strip() for x in lines if x.strip()]\n        lines = [x for x in lines if x.startswith('ansible') or x[0].isdigit() or x[0] == 'v']\n\n        # try to narrow down to a single line\n        if len(lines) > 1:\n            candidate = None\n            for x in lines:\n                pidx = x.find('.')\n                if pidx == -1:\n                    continue\n                if (len(x) - 1) < (pidx+1):\n                    continue\n                if not x[pidx+1].isdigit():\n                    continue\n                if (x.startswith('ansible') or x[0].isdigit()) and '.' in x:\n                    candidate = x\n                    break\n            if candidate:\n                lines = [candidate]\n\n        if len(lines) > 0:\n            if _is_valid_version(lines[0]):\n                return lines[0]\n            else:\n                words = [x.strip() for x in lines[0].split() if x.strip()]\n                words = [x for x in words if x not in ('stable', 'ansible', 'ansible-doc', 'ansible-playbook')]\n                if words:\n                    if words[0].startswith('ansible-'):\n                        words[0] = words[0].replace('ansible-', '')\n                    if words[0][0] == 'v':\n                        words[0] = words[0][1:]\n                    characters = words[0].split('.')\n                    digits = sorted(set((x.isdigit() for x in characters)))\n                    aversion = None\n                    if digits == [True] or characters[0].isdigit():\n                        aversion = words[0]\n                    return aversion\n\n    def version_by_commit(self, commithash: str) -> str:\n        \"\"\"\n        $ git branch --contains e620fed755a9c7e07df846b7deb32bbbf3164ac7\n        * devel\n        $ git branch -r --contains 6d9949698bd6a5693ef64cfde845c029f0e02b91 | egrep -e 'release' -e 'stable' | head\n         origin/release1.5.0\n         origin/release1.5.1\n         ...\n        \"\"\"\n        if commithash in self.commit_versions_cache:\n            return self.commit_versions_cache[commithash]\n\n        rc, stdout, cmd = run_command('cd %s;git branch -r --contains %s' % (self.checkoutdir, commithash))\n        if rc != 0:\n            raise Exception(\"rc == %d from cmd = '%s'\" % (rc, cmd))\n\n        branches = [x.strip() for x in to_text(stdout).splitlines()]\n\n        for branch in branches:\n            if branch.startswith(('origin/release', 'origin/stable')):\n                version = branch.split('/')[-1].replace('release', '').replace('stable-', '')\n                break\n        else:\n            for branch in branches:\n                if 'HEAD' in branch or branch.endswith('/devel'):\n                    version = self._get_devel_version()\n                    break\n            else:\n                raise ValueError('HEAD not found')\n\n        self.commit_versions_cache[commithash] = version\n\n        return version\n\n    def version_by_date(self, dateobj) -> str:\n        last_commit_date = strip_time_safely(self.commits_by_date[0][0])\n\n        if dateobj >= last_commit_date:\n            commit = self.commits_by_date[0][1]\n        else:\n            commit = None\n            datestr = str(dateobj).split()[0]\n            for dv in reversed(self.commits_by_date):\n                if dv[0] == datestr:\n                    commit = dv[1]\n                    break\n            else:\n                datestr = '-'.join(datestr.split('-')[0:2])\n                for dv in self.commits_by_date:\n                    dvs = '-'.join(dv[0].split('-')[0:2])\n                    if dvs == datestr:\n                        commit = dv[1]\n                        break\n\n        if commit:\n            return self.version_by_commit(commit)\n\n    def version_by_issue(self, iw) -> str:\n        version = self.strip_ansible_version(iw.template_data.get('ansible version', ''))\n\n        if not version or version == 'devel':\n            version = self.version_by_date(iw.instance.created_at)\n\n        if version and version.endswith('.'):\n            version += '0'\n\n        if version and version.endswith('.x'):\n            version = self.strip_ansible_version(version)\n\n        if self.is_valid_version(version):\n            return version\n\n        for comment in iw.history.get_user_comments(iw.submitter):\n            found_version = self.strip_ansible_version(comment)\n            if found_version and self.is_valid_version(found_version):\n                return found_version\n\n        raise ValueError('version by issue %d not found' % iw.number)\n"
  },
  {
    "path": "azure-pipelines.yml",
    "content": "trigger:\n  - devel\n\npr:\n  - devel\n\npool:\n  vmImage: 'ubuntu-20.04'\n\njobs:\n  - job: python\n    displayName: Python\n    variables:\n      TOXENV: python\n    strategy:\n      matrix:\n        3.8:\n          python_version: 3.8\n        3.9:\n          python_version: 3.9\n        3.10:\n          python_version: 3.10\n        3.11:\n          python_version: 3.11\n    steps:\n      - task: UsePythonVersion@0\n        inputs:\n          versionSpec: $(python_version)\n        displayName: Install Python $(python_version)\n      - script: PATH=\"$HOME/.local/bin:$PATH\" pip install --disable-pip-version-check --user tox\n        displayName: Install tox\n      - script: PATH=\"$HOME/.local/bin:$PATH\" tox --notest\n        displayName: Run tox --notest\n      - script: PATH=\"$HOME/.local/bin:$PATH\" tox\n        displayName: Run tox\n      - script: PATH=\"$HOME/.local/bin:$PATH\" tox -e report-coverage\n        condition: succeededOrFailed()\n        displayName: Report Coverage\n      - task: PublishTestResults@2\n        condition: succeededOrFailed()\n        inputs:\n          testResultsFiles: 'ci_output/testresults/pytest.xml'\n          pathToSources: '$(System.DefaultWorkingDirectory)'\n        displayName: Publish Test Results\n      - task: PublishCodeCoverageResults@1\n        condition: succeededOrFailed()\n        inputs:\n          codeCoverageTool: Cobertura\n          summaryFileLocation: 'ci_output/codecoverage/pytest-cov.xml'\n          pathToSources: '$(System.DefaultWorkingDirectory)'\n        displayName: Publish Coverage Results\n"
  },
  {
    "path": "ci_output/codecoverage/.gitdir",
    "content": ""
  },
  {
    "path": "ci_output/testresults/.gitdir",
    "content": ""
  },
  {
    "path": "constraints.txt",
    "content": "#\n# This file is autogenerated by pip-compile with python 3.11\n# To update, run:\n#\n#    pip-compile --output-file=constraints.txt --strip-extras requirements.txt test-requirements.txt\n#\nattrs==22.1.0\n    # via pytest\ncertifi==2022.9.24\n    # via\n    #   requests\n    #   sentry-sdk\ncffi==1.15.1\n    # via pynacl\ncharset-normalizer==2.1.1\n    # via requests\ncoverage==6.5.0\n    # via pytest-cov\ndeprecated==1.2.13\n    # via pygithub\ngreenlet==1.1.3.post0\n    # via sqlalchemy\nidna==3.4\n    # via requests\niniconfig==1.1.1\n    # via pytest\njinja2==3.1.2\n    # via -r requirements.txt\nmarkupsafe==2.1.1\n    # via jinja2\npackaging==21.3\n    # via\n    #   pytest\n    #   pytest-sugar\npluggy==1.0.0\n    # via pytest\npycparser==2.21\n    # via cffi\npygithub==1.56\n    # via -r requirements.txt\npyjwt==2.6.0\n    # via pygithub\npynacl==1.5.0\n    # via pygithub\npyparsing==3.0.9\n    # via packaging\npytest==7.2.0\n    # via\n    #   -r test-requirements.txt\n    #   pytest-cov\n    #   pytest-sugar\npytest-cov==4.0.0\n    # via -r test-requirements.txt\npytest-sugar==0.9.5\n    # via -r test-requirements.txt\npyyaml==6.0\n    # via -r requirements.txt\nrequests==2.28.1\n    # via\n    #   -r requirements.txt\n    #   pygithub\nsentry-sdk==1.10.1\n    # via -r requirements.txt\nsqlalchemy==1.4.42\n    # via -r requirements.txt\ntermcolor==2.0.1\n    # via pytest-sugar\nurllib3==1.26.12\n    # via\n    #   requests\n    #   sentry-sdk\nwrapt==1.14.1\n    # via deprecated\n"
  },
  {
    "path": "docs/collection_migration.md",
    "content": "# COLLECTIONS\n\n## What is this all about?\n\nHere are some links to read through and familiarize yourself with ...\n\n* [Blog post about collections](https://www.ansible.com/blog/getting-started-with-ansible-collections)\n* [Docs on using collections](https://docs.ansible.com/ansible/devel/user_guide/collections_using.html)\n* [Docs on developing collections](https://docs.ansible.com/ansible/devel/dev_guide/developing_collections.html)\n* [Docs on contributing to collections](https://docs.ansible.com/ansible/devel/community/contributing_maintained_collections.html)\n* [Main ansible-collections org README](https://github.com/ansible-collections/overview/blob/devel/README.rst)\n\n## Why is ansibot directing me here?\n\nA. You made a change or filed an issue for a plugin|module file that no longer exists in github.com:ansible/ansible.\n\nor\n\nB. You created a new module.\n\n## What if ansibot made a mistake in deciding my issue or PR was for a file in a collection?\n\nComment \"!needs_collection_redirect\" in the issue and the bot will override the redirect.\n\n## How to manually find out which collection something was moved to?\n\nThe main reference is the YAML file [lib/ansible/config/ansible_builtin_runtime.yml](https://github.com/ansible/ansible/blob/devel/lib/ansible/config/ansible_builtin_runtime.yml) - it is ansible-base's internal reference and used for backwards compatibility.\n\nIf you want to manually find out where some content was moved, simply search that file for the name of the module, plugin, or module_utils (without the file extension). For example, search for `openssl_certificate` if you want to know where `lib/ansible/modules/crypto/openssl_certificate.py` was moved to. You should find an entry looking like this:\n```.yaml\n\n    openssl_certificate:\n      redirect: community.crypto.x509_certificate\n```\nThis means that the `openssl_certificate` module is now in the `community.crypto` collection, and is called `x509_certificate` in it.\n\nTo find where the collection is hosted, you can find it on [Ansible Galaxy](https://galaxy.ansible.com/). The easiest way is to go to `https://galaxy.ansible.com/community/crypto`, with `community` and `crypto` replaced by the namespace and name of the collection, respectively. The collections should have a \"Repo\" and/or \"Issue Tracker\" link, which should guide you to the home of the collection.\n\n## What should I do now?\n\n1. Determine which collection+repo the file should live in now.\n2. Migrate your PR or issue to the new repo\n\n## How do I migrate my issue to another repo?\n\nGithub only allows issue migration between repos in the same organization. Most collections are in the ansible-collections org so we are unable\nto migrate them automatically from ansible/ansible. The simplest approach is to just open a new issue in the new repo.\n\n## How do I migrate my PR to another repo?\n\nA tool exists to assist with migrating ansible/ansible PRs, but is waiting on the community team to deploy. In the meantime, you\ncan either recreate your PR in the new repo, or try to setup the tool on your own.\n\nhttps://github.com/ansible/prmove\n\n### Moving PRs manually\n\nWhen moving PRs, you need to know that some things have changed. This affects paths where content has to be placed, and Python imports that have to be changed.\n\nThe following list mentions the most important path changes, in the format \"ansible/ansible path -> collection repo path\". It assumes that a collection is in the root of its repository; if that's not the case (i.e. there is no directory `plugins`), you need to add more directories.\n\n- `lib/ansible/module_utils/` → `plugins/module_utils/`\n- `lib/ansible/modules/` → `plugins/modules/`\n- `lib/ansible/plugins/` → `plugins/`\n- `test/units/module_utils/` → `tests/unit/plugins/module_utils/`\n- `test/units/modules/` → `tests/unit/plugins/modules/`\n- `test/units/plugins/` → `tests/unit/plugins/`\n- `test/integration/targets/` → `tests/integration/targets/`\n- `test/sanity/ignore.txt` → `tests/sanity/ignore-2.*.txt`\n\nThe next list contains a mapping of Python imports. This mapping needs to be used if the file that is imported was moved from ansible/ansible to a collection. You can see what has been left in ansible/ansible by looking at https://github.com/ansible/ansible/tree/devel/lib/ansible/module_utils/. The `foo.bar` below has to be replaced with the collection name the content that you need to import has been moved to. Usually this is the collection where you create the PR, but it could also be another collection. For example, network modules/plugins often import shared code from `ansible.netcommon` (see what it contains [here](https://github.com/ansible-collections/ansible.netcommon/tree/main/plugins/module_utils)).\n\n- `import ansible.module_utils.` → `import ansible_collections.foo.bar.plugins.module_utils.`\n- `import ansible.modules.` → `import ansible_collections.foo.bar.plugins.modules.` (should only happen in unit tests)\n- `import ansible.plugins.` → `import ansible_collections.foo.bar.plugins.` (should only happen in unit tests)\n\nImports of content still in ansible/ansible stay as before. Only content moved to collections needs to be imported this way.\n\nFinally, if your PR does deprecate an option, a feature, a module, or a plugin, there have been slight changes (in that you need to specify the collection name in some cases) as well. The syntax for all kinds of deprecations is mentioned [here](https://github.com/ansible-collections/overview/issues/45#issuecomment-645619042). For modules, and in-code deprecations, `ansible-test sanity` will also tell you if you missed something.\n\n## Why did the bot close my issue or PR?\n\nFor the reasons stated above, we will not be auto-migrating all the issues and PRs and need to take action to make sure they are being\nfiled in the appropriate repositories.\n\nPull requests do not need to be open when migrating, and there is no other reason to keep them open in the ansible/ansible repo.\n\n## What if none of this makes sense to me?\n\nPlease reach out via the typical communication channels: https://docs.ansible.com/ansible/latest/community/communication.html\n"
  },
  {
    "path": "docs/contribution_tips.md",
    "content": "# Contribution Tips\n\n## Who is this document for?\n\nAnyone who wants to write a patch for the bot\n\n## Development Setup\n\n### Config files\n\n1. `~/.ansibullbot.cfg` The bot needs this file primarily to get it's gitub api tokens. An example is located in https://github.com/ansible/ansibullbot/blob/devel/examples/ansibullbot.cfg\n2. `~/.ansibullbot` This directory is where the bot writes all the pickle and json and checkouts it uses.\n\n### Caching and RateLimiting\n\nA repo as large as https://github.com/ansible/ansible has so many tickets that it is literally impossible to simply fetch them all, compute a state and then apply changes. The remedy is to cache everything possible and use [conditional requests](https://developer.github.com/v3/#conditional-requests) wherever possible. Even with caching and conditional requests, you will still find undocument rate limits such as IP throttling and random 500 ISEs. To remedy that, we have a [RateLimited decorator](https://github.com/ansible/ansibullbot/blob/devel/ansibullbot/decorators/github.py#L109). The decorator is the result of years of trial and error and constant hacking around.\n\n#### Test Proxy\n\nA [proxy](https://github.com/jctanner/github-test-proxy) was created to assist with testing new ansibot changes across a large set of tickets. Typically, the way it's used is to invoke the bot with environment vars to override the github url used by all the underlying requestors...\n\n\n```\n# starting the proxy ...\ngit clone https://github.com/jctanner/github-test-proxy\ncd github-test-proxy\nvirtualenv venv\nsource venv/bin/activate\npip install -r requirements.txt\nPYTHONPATH=. bin/github-test-proxy --help\nPYTHONPATH=. bin/github-test-proxy proxy --debug --token=<GITHUBAPITOKEN> --fixtures=/tmp/gproxy/fixtures --deltas=/tmp/gproxy/deltas\n```\n\n\n```\n# starting the bot ...\nANSIBULLBOT_GITHUB_URL=http://localhost:5000 \\\nANSIBULLBOT_SHIPPABLE_URL=http://localhost:5000 \\\n./triage_ansible.py <args>`\n```\n\nWith that setup, every request will cache to disk and subsequent runs will be much faster.\n\n\n## Testing Philosophy\n\nA lot of painstaking work has gone into the unit, component and integration tests in this project. We continue to strive for good test coverage. However, there are so many edgecases when dealing with the github api and the \"fuzzy\" nature of text analysis. To be absolutely sure your change has the desired effect, you should run the bot against LOTs of issues, if not ALL the issues. On top of that, you need to run it multiple times against some test issues to ensure the behavior is idempotent. A component test exists to check for idempotency, but it is fairly complex and can't be considered a gaurantee even if it passes.\n"
  },
  {
    "path": "features.yaml",
    "content": "close_missing_ref_prs: false\n"
  },
  {
    "path": "playbooks/bot-on-dev.yml",
    "content": "- name: Stop prod bot\n  hosts: ansibullbot.eng.ansible.com\n  become: yes\n\n  tasks:\n    - name: PROD | Stop ansibullbot service\n      service:\n        name: \"{{ item }}\"\n        state: stopped\n      loop:\n        - ansibullbot\n        - ansibullbot-receiver\n\n- name: Start dev bot\n  hosts: ansibullbot-dev\n  become: yes\n\n  tasks:\n    - name: DEV | Start ansibullbot services\n      service:\n        name: \"{{ item }}\"\n        state: started\n      loop:\n        - ansibullbot-receiver\n        - ansibullbot\n"
  },
  {
    "path": "playbooks/bot-on-prod.yml",
    "content": "- name: Stop dev bot\n  hosts: ansibullbot-dev\n  become: yes\n\n  tasks:\n    - name: DEV | Stop ansibullbot services\n      service:\n        name: \"{{ item }}\"\n        state: stopped\n      loop:\n        - ansibullbot\n        - ansibullbot-receiver\n\n- name: Start prod bot\n  hosts: ansibullbot.eng.ansible.com\n  become: yes\n\n  tasks:\n    - name: PROD | Start ansibullbot services\n      service:\n        name: \"{{ item }}\"\n        state: started\n      loop:\n        - ansibullbot-receiver\n        - ansibullbot\n"
  },
  {
    "path": "playbooks/files/centos7.vimrc",
    "content": "if v:lang =~ \"utf8$\" || v:lang =~ \"UTF-8$\"\n   set fileencodings=ucs-bom,utf-8,latin1\nendif\n\nset nocompatible\t\" Use Vim defaults (much better!)\nset bs=indent,eol,start\t\t\" allow backspacing over everything in insert mode\n\"set ai\t\t\t\" always set autoindenting on\n\"set backup\t\t\" keep a backup file\nset viminfo='20,\\\"50\t\" read/write a .viminfo file, don't store more\n\t\t\t\" than 50 lines of registers\nset history=50\t\t\" keep 50 lines of command line history\nset ruler\t\t\" show the cursor position all the time\n\n\" Only do this part when compiled with support for autocommands\nif has(\"autocmd\")\n  augroup redhat\n  autocmd!\n  \" In text files, always limit the width of text to 78 characters\n  \" autocmd BufRead *.txt set tw=78\n  \" When editing a file, always jump to the last cursor position\n  autocmd BufReadPost *\n  \\ if line(\"'\\\"\") > 0 && line (\"'\\\"\") <= line(\"$\") |\n  \\   exe \"normal! g'\\\"\" |\n  \\ endif\n  \" don't write swapfile on most commonly used directories for NFS mounts or USB sticks\n  autocmd BufNewFile,BufReadPre /media/*,/run/media/*,/mnt/* set directory=~/tmp,/var/tmp,/tmp\n  \" start with spec file template\n  autocmd BufNewFile *.spec 0r /usr/share/vim/vimfiles/template.spec\n  augroup END\nendif\n\nif has(\"cscope\") && filereadable(\"/usr/bin/cscope\")\n   set csprg=/usr/bin/cscope\n   set csto=0\n   set cst\n   set nocsverb\n   \" add any database in current directory\n   if filereadable(\"cscope.out\")\n      cs add $PWD/cscope.out\n   \" else add database pointed to by environment\n   elseif $CSCOPE_DB != \"\"\n      cs add $CSCOPE_DB\n   endif\n   set csverb\nendif\n\n\" Switch syntax highlighting on, when the terminal has colors\n\" Also switch on highlighting the last used search pattern.\nif &t_Co > 2 || has(\"gui_running\")\n  syntax on\n  set hlsearch\nendif\n\nfiletype plugin on\n\nif &term==\"xterm\"\n     set t_Co=8\n     set t_Sb=\u001b[4%dm\n     set t_Sf=\u001b[3%dm\nendif\n\n\" Don't wake up system with blinking cursor:\n\" http://www.linuxpowertop.org/known.php\nlet &guicursor = &guicursor . \",a:blinkon0\"\n\nset bg=dark\nset tabstop=4\nset ts=4\nset shiftwidth=4\nset expandtab\nset cursorline\nset number\nset showmatch\nlet python_highlight_all = 1\n"
  },
  {
    "path": "playbooks/group_vars/all.yml",
    "content": "yumcron_download_updates: 'yes'\nyumcron_apply_updates:\n  hourly: 'no'\n  daily: 'yes'\n\n# Settings for EC2 instance\nbotinstance_volume_size: 200\nbotinstance_type: t3.xlarge\nbotinstance_ssh_keys:\n  - name: sdoran@aws_work\n    state: absent\n    key_material:\n      \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCfJ88NuTDKSpYq+wrDCd+AKg2l1jqg0qgXxjiNXwaEUOUllb5II0uin7xh/6jl9hLRbwVO\\\n      e/CjD+tjbb7IAuno6B/Nx4CqybArYv7w+GHH0fSrpLpojGzuO9IJ/p1Rxw7vum5INAQ9tPHScF2CwoANsYpmU1sgC+lzd3frobTOsQ9Gj/jE\\\n      h6I2Ugvm3N0Xjd4IA2788zsmOD/viHQt47AVOqFGhkyt/QlFdxw2MqUevkQiEmIv46aZkSLMtcsoLa/q63tCVaEl8vRRWhUVei8fvs5mVcPu\\\n      Jzq8jV92mtU+JUzh+SRpKynUsQKME4OB3OgUpTtpZvAJONWY4NS8P9t5\"\n\n  - name: tower2_deploy\n    key_material:\n      \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCk3j+kA6cfWin+Gq7RWZ1JQdpTbwEwpDPMN2GZy3uksDKnG8c+lXvfXhrtJ1XtQQmta06J8o\\\n      Ep4pmf8QlFflftxoq/LRJ/YlmviSzvWbyqBYGtFo/Ndv0QU1UokY3jjLGiktvmmU7hH/xGDOBZLX9I2L/A0WiJ9HoAkKUGPfQwokTpbwPlZ0U7\\\n      zZ6ivqyRjnKmkzt6SkPExZ3JGIo5EfQoZMLRxyHmSvuTP+3dgNhTKGCbtQErPfU4tmL3u/1nz/7HoX1G0z8fee/QxgVCvWKmgbVXW28Vsyio8e\\\n      kFqVmViZae4m8SgE4viR10fj2Gultmp17bwnG8RWPqJ0liY+4hplEfZ+p4awcR3n1f4vyPW0somE5TTzU2v0ze+mhj0DusIyblfqsBHOX55w2S\\\n      VFW+rDB3rZ8MdN//JeYndFbLH69Sjggys+Yl9nUQ81sIo7LY4mdFzOOnn5wtBTzNf8NjwVn51jPh2XOg1AA2/QCnM7VweUfb3AqlrOCinTtySB\\\n      z0eX75fbttyyGTYKGc4v8ZFDjFAxEl1ZxFmMP30LbCnAyc4Q2CQYp8BS1xxww9BXDQe+v91Z9NwYQNYTFDP0nMPh+yQOJdlSA1ZBZIAtH/Z92U\\\n      z0CwgFZLeAaWXBxwKO3IezLGLTboojr9m1Fm3/sCPSSHK9SURB4iAopdOXNW7Q==\"\n\n  - name: mkrizek@x240\n    key_material:\n      \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCdIcSGGFCk4VLylSLCKHYoLK1vOEU9ebxJn5dtBY1MRAdEL7dDWzwfoovXzxkHWXOWYDWL2a\\\n      yZJHUmFfN9JVAg20FYNitU+PZlZs/H8xuWNjL4SbgOq6oBbZAHQnQ5EO0N2rfOMJXC5XEqAEDZVfOvJJt9qcPoBizMFIiTRT/yU47QFo7z3SGC\\\n      buMOEE9wZU+VFX8KKwHp1jP37dvLNBh/bdUwvo6RTpk7aUN8zv3BvAjUeT/hC6bbqMw4ibvWp/HbzKHFPBWp5mimIr/j2AbFLnY+c9T2/MJ1Fe\\\n      JIDeNC+uNR/J12XD2WQyUp4QowCsZMCKEkhNDVtm05yM5n+OV9\"\n"
  },
  {
    "path": "playbooks/group_vars/ansibullbot.yml",
    "content": "ansible_user: centos\nansibullbot_receiver_enabled: true\n\nansibullbot_github_password: !vault |\n          $ANSIBLE_VAULT;1.1;AES256\n          64336339633164353330346262343334326164346165313463653535333938626361366564326265\n          6430333936663764663335616261373534343664306236360a633833373365306334376363303364\n          61383631303035323862666365613639373139626665323131613937363765386534306363363038\n          3466613564626639300a323465323739646538613965306564343835663230366339306138626239\n          6565\n\nansibullbot_github_token: !vault |\n          $ANSIBLE_VAULT;1.1;AES256\n          38363831393064643534623265313261646366663836343166396664323861376163343161346639\n          3937353035396630393364336139363162666231386537660a616666613165663462336163303835\n          35316237353864383566373735396331343836363462613734646539386336323935353064346134\n          6533636361313461330a656535303537393032393663356230343231306635383238383362303462\n          30653032383436666265353537323363343237643465646338656265623962383131333235626232\n          6330653334373131613063306331633663356361316433643963\n\nansibullbot_slack_url: !vault |\n          $ANSIBLE_VAULT;1.1;AES256\n          39643533336666333962333735393236313030323961623337396433373638636530306437633737\n          3936653465366639666239393834663930663731373065650a616666373636663063663534323739\n          62333864316436396366383634343035373733363436656536663339303732343063393633353039\n          3835646464613330300a333733663562386564323963326639353932626463623365363237656561\n          35653434356535663030666465336363313765366430356536386331643833313234653862306137\n          36333939646436373534393164303066666632393562653639373466643330636264396133376266\n          39656134663361663237326234653436373333326534373363656134663865383730396364623663\n          36393033656631613663\n\n# Caddy settings\nansibullbot_caddy_log_path: /var/log/caddy\ncaddy_config_path: /etc/caddy\ncaddy_user: caddy\ncaddy_group: caddy\ncaddy_root: /usr/share/caddy\ncaddy_default_port: 443\ncaddy_global_config_options:\n  - order cgi last\ncaddy_plugins:\n  - github.com/aksdb/caddy-cgi/v2\n\n# Firewall settings\nfirewall_allowed_tcp_ports:\n  - 22\n  - 80\n  - 443\n\nfirewall_firewalld_rules:\n  - zone: public\n    masquerade: yes\n\nauthorized_keys:\n  - user: centos\n    comment: mkrizek@x240\n    key:\n      \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCdIcSGGFCk4VLylSLCKHYoLK1vOEU9ebxJn5dtBY1MRAdEL7dDWzwfoovXzxkHWXOWYDWL2a\\\n      yZJHUmFfN9JVAg20FYNitU+PZlZs/H8xuWNjL4SbgOq6oBbZAHQnQ5EO0N2rfOMJXC5XEqAEDZVfOvJJt9qcPoBizMFIiTRT/yU47QFo7z3SGC\\\n      buMOEE9wZU+VFX8KKwHp1jP37dvLNBh/bdUwvo6RTpk7aUN8zv3BvAjUeT/hC6bbqMw4ibvWp/HbzKHFPBWp5mimIr/j2AbFLnY+c9T2/MJ1Fe\\\n      JIDeNC+uNR/J12XD2WQyUp4QowCsZMCKEkhNDVtm05yM5n+OV9\"\n\n  - user: centos\n    comment: sdoran@aws_work\n    state: absent\n    key:\n      \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCfJ88NuTDKSpYq+wrDCd+AKg2l1jqg0qgXxjiNXwaEUOUllb5II0uin7xh/6jl9hLRbwVO\\\n      e/CjD+tjbb7IAuno6B/Nx4CqybArYv7w+GHH0fSrpLpojGzuO9IJ/p1Rxw7vum5INAQ9tPHScF2CwoANsYpmU1sgC+lzd3frobTOsQ9Gj/jE\\\n      h6I2Ugvm3N0Xjd4IA2788zsmOD/viHQt47AVOqFGhkyt/QlFdxw2MqUevkQiEmIv46aZkSLMtcsoLa/q63tCVaEl8vRRWhUVei8fvs5mVcPu\\\n      Jzq8jV92mtU+JUzh+SRpKynUsQKME4OB3OgUpTtpZvAJONWY4NS8P9t5\"\n\n  - user: centos\n    comment: tower2_deploy\n    key:\n      \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCk3j+kA6cfWin+Gq7RWZ1JQdpTbwEwpDPMN2GZy3uksDKnG8c+lXvfXhrtJ1XtQQmta06\\\n      J8oEp4pmf8QlFflftxoq/LRJ/YlmviSzvWbyqBYGtFo/Ndv0QU1UokY3jjLGiktvmmU7hH/xGDOBZLX9I2L/A0WiJ9HoAkKUGPfQwokTpbwP\\\n      lZ0U7zZ6ivqyRjnKmkzt6SkPExZ3JGIo5EfQoZMLRxyHmSvuTP+3dgNhTKGCbtQErPfU4tmL3u/1nz/7HoX1G0z8fee/QxgVCvWKmgbVXW28\\\n      Vsyio8ekFqVmViZae4m8SgE4viR10fj2Gultmp17bwnG8RWPqJ0liY+4hplEfZ+p4awcR3n1f4vyPW0somE5TTzU2v0ze+mhj0DusIyblfqs\\\n      BHOX55w2SVFW+rDB3rZ8MdN//JeYndFbLH69Sjggys+Yl9nUQ81sIo7LY4mdFzOOnn5wtBTzNf8NjwVn51jPh2XOg1AA2/QCnM7VweUfb3Aq\\\n      lrOCinTtySBz0eX75fbttyyGTYKGc4v8ZFDjFAxEl1ZxFmMP30LbCnAyc4Q2CQYp8BS1xxww9BXDQe+v91Z9NwYQNYTFDP0nMPh+yQOJdlSA\\\n      1ZBZIAtH/Z92Uz0CwgFZLeAaWXBxwKO3IezLGLTboojr9m1Fm3/sCPSSHK9SURB4iAopdOXNW7Q==\"\n\n  - user: centos\n    comment: sivel@redhat.com\n    key:\n      \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGsiS4JuBQPN6YlP03nlJcRhItrw/E3+7URQZdoEdcm/15/aSo9kilDF9M+zFRPui8uOo\\\n      FHZ3Lw9Inuozmj1z1iIIFf5UVCT/AOuU/mtupLf4b5+qhNVUkyGrjTM3ASEJT1d4fEjyLBuuki829sGHMgYecxTF1A/fWGleyn0TVoxW2ZFS\\\n      kVMckNe7ik3YvKCF1iaGn2oybc5nDTScApMuUyUc4ADl4+AN70/ipJl7FpTmVbVdSI4Kanq8vP2nREzhGVK/RsUhdKrJyy44KZJLl+Z2GSG7\\\n      8hQOanfrVWctz0TusJjySqcysAxVaJAjYLrKubSs1oXpEpFAOEhWoSHjd\"\n\n  - user: \"{{ ansibullbot_user }}\"\n    comment: mkrizek@x240\n    key:\n      \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCdIcSGGFCk4VLylSLCKHYoLK1vOEU9ebxJn5dtBY1MRAdEL7dDWzwfoovXzxkHWXOWYDWL2a\\\n      yZJHUmFfN9JVAg20FYNitU+PZlZs/H8xuWNjL4SbgOq6oBbZAHQnQ5EO0N2rfOMJXC5XEqAEDZVfOvJJt9qcPoBizMFIiTRT/yU47QFo7z3SGC\\\n      buMOEE9wZU+VFX8KKwHp1jP37dvLNBh/bdUwvo6RTpk7aUN8zv3BvAjUeT/hC6bbqMw4ibvWp/HbzKHFPBWp5mimIr/j2AbFLnY+c9T2/MJ1Fe\\\n      JIDeNC+uNR/J12XD2WQyUp4QowCsZMCKEkhNDVtm05yM5n+OV9\"\n\n  - user: \"{{ ansibullbot_user }}\"\n    comment: sdoran@aws_work\n    state: absent\n    key:\n      \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCfJ88NuTDKSpYq+wrDCd+AKg2l1jqg0qgXxjiNXwaEUOUllb5II0uin7xh/6jl9hLRbwVO\\\n      e/CjD+tjbb7IAuno6B/Nx4CqybArYv7w+GHH0fSrpLpojGzuO9IJ/p1Rxw7vum5INAQ9tPHScF2CwoANsYpmU1sgC+lzd3frobTOsQ9Gj/jE\\\n      h6I2Ugvm3N0Xjd4IA2788zsmOD/viHQt47AVOqFGhkyt/QlFdxw2MqUevkQiEmIv46aZkSLMtcsoLa/q63tCVaEl8vRRWhUVei8fvs5mVcPu\\\n      Jzq8jV92mtU+JUzh+SRpKynUsQKME4OB3OgUpTtpZvAJONWY4NS8P9t5\"\n\n  - user: \"{{ ansibullbot_user }}\"\n    comment: sivel@redhat.com\n    key:\n      \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGsiS4JuBQPN6YlP03nlJcRhItrw/E3+7URQZdoEdcm/15/aSo9kilDF9M+zFRPui8uOo\\\n      FHZ3Lw9Inuozmj1z1iIIFf5UVCT/AOuU/mtupLf4b5+qhNVUkyGrjTM3ASEJT1d4fEjyLBuuki829sGHMgYecxTF1A/fWGleyn0TVoxW2ZFS\\\n      kVMckNe7ik3YvKCF1iaGn2oybc5nDTScApMuUyUc4ADl4+AN70/ipJl7FpTmVbVdSI4Kanq8vP2nREzhGVK/RsUhdKrJyy44KZJLl+Z2GSG7\\\n      8hQOanfrVWctz0TusJjySqcysAxVaJAjYLrKubSs1oXpEpFAOEhWoSHjd\"\n"
  },
  {
    "path": "playbooks/group_vars/tower.yml",
    "content": "firewall_allowed_tcp_ports:\n  - 22\n  - 443\n  - 80\n\nauthorized_keys:\n  - user: centos\n    comment: mkrizek@x240\n    key:\n      \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCdIcSGGFCk4VLylSLCKHYoLK1vOEU9ebxJn5dtBY1MRAdEL7dDWzwfoovXzxkHWXOWYDWL2a\\\n      yZJHUmFfN9JVAg20FYNitU+PZlZs/H8xuWNjL4SbgOq6oBbZAHQnQ5EO0N2rfOMJXC5XEqAEDZVfOvJJt9qcPoBizMFIiTRT/yU47QFo7z3SGC\\\n      buMOEE9wZU+VFX8KKwHp1jP37dvLNBh/bdUwvo6RTpk7aUN8zv3BvAjUeT/hC6bbqMw4ibvWp/HbzKHFPBWp5mimIr/j2AbFLnY+c9T2/MJ1Fe\\\n      JIDeNC+uNR/J12XD2WQyUp4QowCsZMCKEkhNDVtm05yM5n+OV9\"\n\n  - user: centos\n    comment: sdoran@aws_work\n    state: absent\n    key:\n      \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCfJ88NuTDKSpYq+wrDCd+AKg2l1jqg0qgXxjiNXwaEUOUllb5II0uin7xh/6jl9hLRbwVO\\\n      e/CjD+tjbb7IAuno6B/Nx4CqybArYv7w+GHH0fSrpLpojGzuO9IJ/p1Rxw7vum5INAQ9tPHScF2CwoANsYpmU1sgC+lzd3frobTOsQ9Gj/jE\\\n      h6I2Ugvm3N0Xjd4IA2788zsmOD/viHQt47AVOqFGhkyt/QlFdxw2MqUevkQiEmIv46aZkSLMtcsoLa/q63tCVaEl8vRRWhUVei8fvs5mVcPu\\\n      Jzq8jV92mtU+JUzh+SRpKynUsQKME4OB3OgUpTtpZvAJONWY4NS8P9t5\"\n"
  },
  {
    "path": "playbooks/host_vars/ansibullbot-dev.eng.ansible.com.yml",
    "content": "ansibullbot_fqdn: ansibullbot-dev.eng.ansible.com\nansibullbot_sentry_server_name: ansibullbot-dev\nansibullbot_sentry_env: dev\nansibullbot_start_message: DEV just started\nansibullbot_stop_message: DEV just stopped\nansibullbot_repo_url: https://github.com/mkrizek/ansibullbot\nansibullbot_branch: drop-py2\nansibullbot_ci_provider: azp\nansibullbot_azp:\n  org: ansible\n  project: fc938e26-c865-4d62-b731-a77bbe8bf5c4\n  definition: 20\n  user: !vault |\n    $ANSIBLE_VAULT;1.1;AES256\n    39363938636134663933656164306261663630386439663239616439346365646562346430623538\n    3733646161393636363730376636393337336132623636340a373839616462393664353137666238\n    66656366616135356563346465383731353936653533343033346137326362663238333963626334\n    3735353963393636610a613632613465313930356539303565316332363136383135373163393061\n    64326435646432303466336532653039643938633964613636636662373837306336\n  token: !vault |\n    $ANSIBLE_VAULT;1.1;AES256\n    33306338343664353230303165633665656436313832633962303063356539616566383438383430\n    3439313231643334393539613534303864643661373163610a356439306333333065353634393237\n    31323666656633326437363264643261326536613064373165633534626364323663323430656332\n    6638643362366239300a313834303132343435643465393864623535666532356530303239316464\n    35643964633464663966363538336266333836623963663463393835356531353336646238663733\n    63633138613233393432613165356235643761313662383737326364346334353137326132383865\n    633365666235323533643162363331326538\n\nansibullbot_options:\n  - daemonize\n  - daemonize_interval={{ ansibullbot_daemonize_interval }}\n  - debug\n  - dry-run\n  - force\n  - logfile {{ ansibullbot_log_path }}\n  - resume\n  - skip_no_update\n\nansibullbot_slack_url: !vault |\n    $ANSIBLE_VAULT;1.1;AES256\n    30346236383237626664646364363361656330626431643164303466313531396639306332613961\n    6464636637613066636533653734303064396661396334380a613930656233383863616432656432\n    34353261333330653535343436613862646236633565623935363066396637633262313730303134\n    6134633164373734370a396539646265396530663034306333326434386131323434393330616239\n    65393836343035396265323162323966623335313964303834366530376132396661333039303635\n    33326437623932663461336633303237303333663064656239646533616233643238303830303535\n    37353334663937656461373832636562646331313766646535346539383139623030336235636132\n    39306633326139626635\n\nansibullbot_slack_token: !vault |\n    $ANSIBLE_VAULT;1.1;AES256\n    66336138333239666230336231363332326566386130363362663337646436613637336261366239\n    3333636562333564356636623465366365646236336563380a356465396330656436376138653464\n    66303839306361383436346262653362353734383839623132306539323661396235663862303761\n    3737616666313739660a653363343064636130356335323965306632383631333339306461613762\n    35393833353964396461616434636438376139376335613035616333393833363234653830663335\n    3864343735323130623965343734386638613964623737376365\n"
  },
  {
    "path": "playbooks/host_vars/ansibullbot.eng.ansible.com.yml",
    "content": "ansibullbot_sentry_server_name: ansibullbot\nansibullbot_fqdn: ansibullbot.eng.ansible.com\nansibullbot_ci_provider: azp\nansibullbot_azp:\n  org: ansible\n  project: fc938e26-c865-4d62-b731-a77bbe8bf5c4\n  definition: 20\n  user: !vault |\n    $ANSIBLE_VAULT;1.1;AES256\n    39363938636134663933656164306261663630386439663239616439346365646562346430623538\n    3733646161393636363730376636393337336132623636340a373839616462393664353137666238\n    66656366616135356563346465383731353936653533343033346137326362663238333963626334\n    3735353963393636610a613632613465313930356539303565316332363136383135373163393061\n    64326435646432303466336532653039643938633964613636636662373837306336\n  token: !vault |\n    $ANSIBLE_VAULT;1.1;AES256\n    33306338343664353230303165633665656436313832633962303063356539616566383438383430\n    3439313231643334393539613534303864643661373163610a356439306333333065353634393237\n    31323666656633326437363264643261326536613064373165633534626364323663323430656332\n    6638643362366239300a313834303132343435643465393864623535666532356530303239316464\n    35643964633464663966363538336266333836623963663463393835356531353336646238663733\n    63633138613233393432613165356235643761313662383737326364346334353137326132383865\n    633365666235323533643162363331326538\n\nansibullbot_options:\n  - daemonize\n  - daemonize_interval={{ ansibullbot_daemonize_interval }}\n  - debug\n  - force\n  - logfile {{ ansibullbot_log_path }}\n  - resume\n  - repo ansible/ansible\n  - skip_no_update\n\nansibullbot_slack_token: !vault |\n  $ANSIBLE_VAULT;1.1;AES256\n  32633462303864326364643938613834383261623661363131646662346232343262666239396562\n  3263613661653638363634323239353966633837636335360a633562373962623836623763376238\n  39663636383663373565373563633531396164613063343734326661366336383165336665323136\n  6561633562353530620a303566613330393665383839336536386130393266663530313863623133\n  31326538336532306438386431353539666634386333653136383631653533623463393264316434\n  3334303162313232323832363634643530353130323764386162\n\nansibullbot_sentry_url: !vault |\n  $ANSIBLE_VAULT;1.1;AES256\n  63323033383535323038326635396566643832393334376239356435353766656531363765323164\n  3431313663353637616332613361356534323866363165610a313465316435356465333830663637\n  33343336366137666437613031393164336164303462373831383461313437353038626436366230\n  3031623739666230380a323530363137333533663164303830373730373162613864656661343561\n  39336661386633373538373633336262373939386165643162646137376532656233396433353434\n  38336265326137343963363333323434353230626665666663346637333430333064333436343037\n  373238326163396130616162616363643832\n"
  },
  {
    "path": "playbooks/hosts.yml",
    "content": "ansibullbot:\n  hosts:\n    ansibullbot.eng.ansible.com:\n    ansibullbot-dev.eng.ansible.com:\n\ntower:\n  hosts:\n    tower2.testing.ansible.com:\n      ansible_user: centos\n"
  },
  {
    "path": "playbooks/requirements.yml",
    "content": "collections:\n  - name: amazon.aws\n    version: 1.5.0\n\n  - name: ansible.posix\n    version: 1.3.0\n\n  - name: community.aws\n    version: 1.5.0\n\n  - name: community.general\n    version: 3.6.0\n"
  },
  {
    "path": "playbooks/setup-ansibullbot-dev.yml",
    "content": "- name: Create dev ansibullbot instance\n  hosts: localhost\n  connection: local\n  gather_facts: no\n  become: no\n\n  vars:\n    botinstance_name: ansibullbot-dev\n    botinstance_dns_entries:\n      - type: A\n        record: ansibullbot-dev.eng.ansible.com\n        value: \"{{ elastic_ip.public_ip }}\"\n\n  roles:\n    - ansibullbot_instance\n\n- name: Install dev ansibullbot\n  hosts: ansibullbot-dev.eng.ansible.com\n  become: yes\n\n  roles:\n    - repo_epel\n    - yum_cron\n    - firewall\n    - fail2ban\n    - mongodb\n    - caddy\n    - ansibullbot\n    - authorized_keys\n"
  },
  {
    "path": "playbooks/setup-ansibullbot.yml",
    "content": "- name: Create ansibullbot instance\n  hosts: localhost\n  connection: local\n  gather_facts: no\n  become: no\n\n  roles:\n    - ansibullbot_instance\n\n- name: Install ansibullbot\n  hosts: ansibullbot.eng.ansible.com\n  become: yes\n\n  roles:\n    - repo_epel\n    - yum_cron\n    - firewall\n    - fail2ban\n    - mongodb\n    - caddy\n    - ansibullbot\n    - authorized_keys\n"
  },
  {
    "path": "playbooks/teardown-ansibullbot-dev.yml",
    "content": "- name: Teardown dev ansibullbot instance\n  hosts: localhost\n  connection: local\n  gather_facts: no\n  become: no\n\n  vars:\n    botinstance_name: ansibullbot-dev\n    botinstance_dns_entries:\n      - type: A\n        record: ansibullbot-dev.eng.ansible.com\n\n  tasks:\n    - name: Delete dev bot instance and DNS entries\n      import_role:\n        name: ansibullbot_instance\n      vars:\n        botinstance_action: destroy-dev\n"
  },
  {
    "path": "playbooks/tower.yml",
    "content": "- hosts: tower\n  become: yes\n\n  tasks:\n    - name: Set hostname\n      hostname:\n        name: \"{{ inventory_hostname }}\"\n      tags: tower\n\n  roles:\n    - firewall\n    - fail2ban\n    - certbot\n    - yum_cron\n    - authorized_keys\n"
  },
  {
    "path": "playbooks/update-ansibullbot.yml",
    "content": "- name: Update Ansibullbot\n  hosts: ansibullbot\n  become: yes\n\n  roles:\n    - role: ansibullbot\n      ansibullbot_action: update\n"
  },
  {
    "path": "playbooks/vagrant.yml",
    "content": "- name: Install ansibullbot\n  hosts: ansibullbot.eng.ansible.com\n  become: yes\n\n  roles:\n    - repo_epel\n    - yum_cron\n    - firewall\n    - fail2ban\n    - docker\n    - mongodb\n    - caddy\n    - ansibullbot\n"
  },
  {
    "path": "pytest.ini",
    "content": "[pytest]\naddopts =\n    # `pytest-xdist` == -n auto:\n    #--numprocesses=auto  # FIXME: uncomment once available\n\n    # show 10 slowest invocations:\n    --durations=10\n\n    # a bit of verbosity doesn't hurt:\n    -v\n\n    # report all the things == -rxXs:\n    -ra\n\n    # show values of the local vars in errors:\n    --showlocals\n\n    # autocollect and invoke the doctests from all modules:\n    --doctest-modules\n\n    # dump the test results in junit format:\n    --junitxml=ci_output/testresults/pytest.xml\n\n    # Fail on non-existing markers:\n    # * Deprecated since v6.2.0 but may be reintroduced later covering a\n    #   broader scope:\n    # --strict\n    # * Exists since v4.5.0 (advised to be used instead of `--strict`):\n    --strict-markers\n\n    # `pytest-cov`, \"-p\" preloads the module early:\n    -p pytest_cov\n    --no-cov-on-fail\n    --cov=ansibullbot\n    --cov=tests\n    --cov-report=term-missing:skip-covered\n    --cov-report=xml:ci_output/codecoverage/pytest-cov.xml\n    --cov-context=test\n    --cov-config=.coveragerc\n\n    # Skip these paths during the test collection stage:\n    --ignore=tests/utils\n    --ignore=tests/manual\n\ndoctest_optionflags = ALLOW_UNICODE ELLIPSIS\n\n# Marks tests with an empty parameterset as xfail(run=False)\nempty_parameter_set_mark = xfail\n# The timeout is 10m because `test_idempotence` takes 6-10min to complete:\nfaulthandler_timeout = 600\nfilterwarnings = error\njunit_duration_report = call\n# xunit1 contains more metadata than xunit2 so it's better for CI UIs:\njunit_family = xunit1\njunit_logging = all\njunit_log_passing_tests = true\njunit_suite_name = ansibullbot_test_suite\n\n# A mapping of markers to their descriptions allowed in strict mode:\nmarkers =\n\nminversion = 6.1.0\n\n# Optimize pytest's lookup by restricting potentially deep dir tree scan:\nnorecursedirs =\n    ansibullbot.egg-info\n    build\n    ci_output\n    dist\n    docs\n    examples\n    playbooks\n    pylint_plugins\n    scratch\n    scripts\n    templates\n    .cache\n    .eggs\n    .git\n    .github\n    .tox\n    *.egg\n\ntestpaths = tests/\nxfail_strict = true\n"
  },
  {
    "path": "requirements.txt",
    "content": "-c constraints.txt\n\njinja2\npygithub\nPyYAML\nrequests\nsentry-sdk\nsqlalchemy\n"
  },
  {
    "path": "scripts/ansibot_actions.py",
    "content": "#!/usr/bin/env python\n\nimport datetime\nimport pprint\n\nimport requests\n\nfrom bson.json_util import loads\n\n\nVALID_ACTIONS = frozenset((\n    \"assign\",\n    \"cancel_ci\",\n    \"cancel_ci_branch\",\n    \"close\",\n    \"close_migrated\",\n    \"comments\",\n    \"merge\",\n    \"newlabel\",\n    \"open\",\n    \"rebuild\",\n    \"rebuild_failed\",\n    \"unassign\",\n    \"uncomment\",\n    \"unlabel\"\n))\n\n\nHTML_HEAD = \\\n\"\"\"\n<!DOCTYPE html>\n<html>\n<head>\n<style>\n.div_heading {\n    background-color: #CFC;\n    padding: 10px;\n    border: 1px solid green;\n    margin: 5px;\n}\n.div_meta {\n    background-color: #F0FFF0;\n    padding: 2px;\n    border: 1px solid green;\n    margin: 5px;\n    overflow: auto;\n    max-height: 500px;\n}\n</style>\n<script>\nfunction showMeta(id) {\n  var x = document.getElementById(\"meta\"+id);\n  if (x.style.display === \"none\") {\n    x.style.display = \"block\";\n  } else {\n    x.style.display = \"none\";\n  }\n}\n</script>\n</head>\n<body>\n<h1>Ansibot actions</h1>\n\"\"\"\n\n\ndef main():\n    params = {\n        \"user\": \"ansible\",\n        \"repo\": \"ansible\",\n        \"start\": (datetime.datetime.utcnow() - datetime.timedelta(days=2)).isoformat()\n    }\n\n    resp = requests.get(\"http://127.0.0.1:5001/actions\", params=params)\n    if resp.status_code != 200:\n        raise RuntimeError(resp.status_code)\n\n    actions = loads(resp.content)\n\n    page = HTML_HEAD.splitlines()\n    for action_data in actions:\n        gh_number = action_data.get(\"github_number\")\n        action_datetime = action_data.get(\"datetime\")\n        gh_title = action_data.get(\"meta\", {}).get(\"title\")\n        gh_submitter = action_data.get(\"meta\", {}).get(\"submitter\")\n        if action_datetime is not None:\n            action_datetime = action_datetime.strftime(\"%a %d. %b %Y, %H:%M:%S.%f UTC\")\n\n        page.append(\n            \"<div class=\\\"div_heading\\\">\"\n            f\"<a href=\\\"https://github.com/ansible/ansible/issues/{gh_number}\\\">#{gh_number}</a>\"\n            f\" | {gh_title} by {gh_submitter} | {action_datetime}\"\n            \"</div>\"\n        )\n\n        valid_actions  = {action: value for action, value in sorted(action_data.items()) if action in VALID_ACTIONS}\n        page.append(\"<pre>\")\n        page.append(pprint.pformat(valid_actions, indent=2, width=100, sort_dicts=True))\n        page.append(\"</pre>\")\n\n        action_id = str(action_data.get(\"_id\"))\n        action_meta = action_data.get(\"meta\", {\"meta\": \"N/A\"})\n        action_meta.pop('actions', None)\n        page.append(f\"<button onclick=\\\"showMeta('{action_id}')\\\">Show meta</button>\")\n        page.append(f\"<div class=\\\"div_meta\\\" id=\\\"meta{action_id}\\\" style=\\\"display: none;\\\"><pre>\")\n        page.append(pprint.pformat(action_meta, indent=2, width=100, sort_dicts=True))\n        page.append(\"</pre>\")\n        page.append(\"</div>\")\n\n    page.append(\"</body>\")\n    page.append(\"</html>\")\n\n    return \"\\n\".join(page)\n\n\nif __name__ == \"__main__\":\n    page = \"Content-type: text/html\\n\\n\"\n    page += main()\n    print(page)\n"
  },
  {
    "path": "scripts/ansibot_receiver.py",
    "content": "#!/usr/bin/env python\n\n# $ curl -v -X POST --header \"Content-Type: application/json\" -d@summaries.json 'http://localhost:5001/summaries?user=ansible&repo=ansible'\n\nimport datetime\nimport glob\nimport gzip\nimport json\n\nimport pymongo\n\nfrom bson.json_util import dumps\nfrom flask import Flask\nfrom flask import jsonify\nfrom flask import request\nfrom flask_pymongo import PyMongo\nfrom werkzeug.exceptions import BadRequest\n\napp = Flask(__name__)\napp.config['MONGO_DBNAME'] = 'ansibot_reciever'\napp.config['MONGO_URI'] = 'mongodb://localhost:27017/ansibot_reciever'\nmongo = PyMongo(app)\n\n\ndef get_summary_numbers_for_repo(org, repo, collection_name=None):\n    pipeline = [\n        {'$match': {'github_org': org, 'github_repo': repo}},\n        {'$project': {'_id': 0, 'number': 1}}\n    ]\n\n    if collection_name:\n        collection = getattr(mongo.db, collection_name)\n        cursor = collection.aggregate(pipeline)\n    else:\n        cursor = mongo.db.summaries.aggregate(pipeline)\n\n    res = list(cursor)\n    res = [x['number'] for x in res]\n    return res\n\n\ndef get_summary_numbers_with_state_for_repo(org, repo, collection_name=None):\n    pipeline = [\n        {'$match': {'github_org': org, 'github_repo': repo}},\n        {'$project': {'_id': 0, 'state': 1, 'number': 1}}\n    ]\n\n    if collection_name:\n        collection = getattr(mongo.db, collection_name)\n        cursor = collection.aggregate(pipeline)\n    else:\n        cursor = mongo.db.summaries.aggregate(pipeline)\n\n    res = list(cursor)\n    return res\n\n\n@app.route('/actions', methods=['POST'])\ndef store_action():\n    username = request.args.get('user')\n    reponame = request.args.get('repo')\n    number = request.args.get('number')\n\n    if not username or not reponame or not number:\n        raise BadRequest('user and repo and number must be supplied as parameters')\n\n    content = request.get_json()\n    data = content.copy()\n    data['github_org'] = username\n    data['github_repo'] = reponame\n    data['github_number'] = int(number)\n    data['datetime'] = datetime.datetime.utcnow()\n\n    mongo.db.actions.insert_one(data)\n\n    return jsonify({'result': 'ok'})\n\n\n@app.route('/actions', methods=['GET'])\ndef list_actions():\n    username = request.args.get('user')\n    reponame = request.args.get('repo')\n\n    if not username or not reponame:\n        raise BadRequest('user and repo must be supplied as parameters')\n\n    query = {'github_org': username, 'github_repo': reponame}\n\n    number = request.args.get('number')\n    if number:\n        query['github_number'] = int(number)\n\n    start = request.args.get('start')\n    end = request.args.get('end')\n    if start or end:\n        query['datetime'] = {}\n    if start:\n        query['datetime']['$gte'] = datetime.datetime.fromisoformat(start)\n    if end:\n        query['datetime']['$lte'] = datetime.datetime.fromisoformat(end)\n\n    res = mongo.db.actions.find(query).sort(\"_id\", pymongo.DESCENDING)\n\n    return dumps(res)\n\n\n@app.route('/dedupe', methods=['GET'])\ndef dedupe_summaries():\n    # summaries\n    cursor = mongo.db.summaries.find()\n    results = list(cursor)\n    summaries = {}\n    for res in results:\n        gn = res.get('github_number') or res.get('number')\n        key = '%s-%s-%s' % (res['github_org'], res['github_repo'], gn)\n        if key not in summaries:\n            summaries[key] = res\n        else:\n            mongo.db.summaries.remove(res)\n\n    # metadata\n    cursor = mongo.db.metadata.find()\n    results = list(cursor)\n    metadata = {}\n    for res in results:\n        gn = res.get('github_number') or res.get('number')\n        key = '%s-%s-%s' % (res['github_org'], res['github_repo'], gn)\n        if key not in metadata:\n            metadata[key] = res\n        else:\n            mongo.db.metadata.remove(res)\n\n    return jsonify({'result': 'ok'})\n\n\n@app.route('/metadata', methods=['GET', 'POST'])\ndef metadata():\n    print('metadata!')\n    print(request)\n    username = request.args.get('user')\n    reponame = request.args.get('repo')\n    number = request.args.get('number')\n    keys = request.args.getlist('key')\n    if number:\n        number = int(number)\n\n    if not username or not reponame or not number:\n        raise BadRequest('user and repo and number must be supplied as parameters')\n\n    if request.method == 'POST':\n\n        res = {'result': None}\n\n        content = request.get_json()\n        data = content.copy()\n        data['github_org'] = username\n        data['github_repo'] = reponame\n        data['github_number'] = number\n        data['number'] = number\n\n        # get the existing document\n        doc = mongo.db.metadata.find_one(\n            {'github_org': username, 'github_repo': reponame, 'github_number': number}\n        )\n\n        if not doc:\n            mongo.db.metadata.insert_one(data)\n            res['result'] = 'inserted'\n        else:\n            mongo.db.metadata.replace_one({'html_url': data['html_url']}, data)\n            res['result'] = 'replaced'\n\n        return jsonify(res)\n\n    elif request.method == 'GET':\n\n        if not keys:\n            # get the existing document\n            cursor = mongo.db.metadata.find(\n                {'github_org': username, 'github_repo': reponame, 'github_number': number}\n            )\n        else:\n            pipeline = [\n                {'$match': {'github_org': username, 'github_repo': reponame, 'github_number': number}},\n            ]\n            project = {'_id': 0, 'number': 1}\n            for keyname in keys:\n                project[keyname] = 1\n            pipeline.append({'$project': project})\n            cursor = mongo.db.metadata.aggregate(pipeline)\n\n        docs = list(cursor)\n        docs = [dict(x) for x in docs]\n        for idx, x in enumerate(docs):\n            x.pop('_id', None)\n            docs[idx] = x\n        return jsonify(docs)\n\n    return \"\"\n\n\n@app.route('/summaries', methods=['GET', 'POST'])\n@app.route('/html_summaries', methods=['GET', 'POST'])\ndef summaries():\n\n    rule = request.url_rule\n    if rule.rule.endswith('html_summaries'):\n        collection_name = 'html_summaries'\n    else:\n        collection_name = 'summaries'\n\n    print('{}!'.format(collection_name))\n    print(request)\n\n    username = request.args.get('user')\n    reponame = request.args.get('repo')\n    state = request.args.get('state')\n    number = request.args.get('number')\n    if number:\n        number = int(number)\n    print(request.args)\n    print(username)\n    print(reponame)\n    print(number)\n\n    if not username or not reponame:\n        raise BadRequest('user and repo must be supplied as parameters')\n\n    if request.method == 'POST':\n        content = request.get_json()\n        res = {\n            'inserted': 0,\n            'replaced': 0,\n            'skipped': 0\n        }\n\n        # make list of known numbers for namespace/repo\n        known = get_summary_numbers_for_repo(username, reponame, collection_name=collection_name)\n        print('total known: %s' % len(known))\n\n        # group by missing or needs evaluation\n        to_insert = []\n        to_inspect = []\n        for k, v in content.items():\n\n            if v['number'] not in known:\n                to_insert.append(k)\n            else:\n                to_inspect.append(k)\n\n        # uniqify\n        to_insert = sorted(set(to_insert))\n        to_inspect = sorted(set(to_inspect))\n\n        # bulk insert\n        if to_insert:\n            documents = []\n            for x in to_insert:\n                data = content[x].copy()\n                data['github_org'] = username\n                data['github_repo'] = reponame\n                data['github_number'] = data['number']\n                documents.append(data)\n\n            print('insert {} summaries'.format(len(documents)))\n            mongo.db.summaries.insert_many(documents)\n            res['inserted'] += len(documents)\n\n        # incremental inspect and replace\n        if to_inspect:\n\n            known_list = get_summary_numbers_with_state_for_repo(username, reponame, collection_name=collection_name)\n            known_states = {}\n            for x in known_list:\n                known_states[str(x['number'])] = x['state']\n\n            print('inspecting {} summaries'.format(len(to_inspect)))\n            for x in to_inspect:\n                data = content[x].copy()\n                data['github_org'] = username\n                data['github_repo'] = reponame\n                data['github_number'] = data['number']\n\n\n                if data['state'] != known_states[str(data['number'])]:\n                    print('replacing {}'.format(data['number']))\n                    filterdict = {'github_org': username, 'github_repo': reponame, 'github_number': data['number']}\n                    collection = getattr(mongo.db, collection_name)\n                    collection.replace_one(filterdict, data)\n\n        return jsonify(res)\n\n    elif request.method == 'GET':\n        # get the existing document\n        qdict = {'github_org': username, 'github_repo': reponame}\n        if number:\n            qdict['number'] = number\n        if state:\n            qdict['state'] = state\n        collection = getattr(mongo.db, collection_name)\n        cursor = collection.find(qdict)\n        docs = list(cursor)\n        docs = [dict(x) for x in docs]\n        for idx, x in enumerate(docs):\n            x.pop('_id', None)\n            docs[idx] = x\n        print(len(docs))\n        return jsonify(docs)\n\n    return 'summaries\\n'\n\n\n#####################################################\n#   LOGGING PAGE\n#####################################################\n\ndef strip_line_json(line):\n    # 2018-06-07 15:52:51,831 DEBUG GET https://api.github.com/repos/ansible/ansible/issues/28061/events {'Authorization'\n    # null ==> 200 {DATA}\n\n    parts = line.split()\n\n    data = {\n        'date': parts[0],\n        'time': parts[1],\n        'loglevel': parts[2],\n        'action': parts[3],\n        'url': parts[4],\n    }\n\n    for k, v in data.items():\n        line = line.replace(v, '', 1)\n    line = line.lstrip()\n\n    header_index = line.index('}') + 1\n    header = line[:header_index]\n    line = line.replace(header, '', 1)\n    header = eval(header)\n    data['request_header'] = header\n\n    jdata_index = line.index('{')\n    jdata = line[jdata_index:]\n    header2 = jdata[:jdata.index('}')+1]\n    line = line.replace(header2, '', 1)\n    line = line.lstrip()\n    header2 = eval(header2)\n    data['response_header'] = header2\n\n    dict_index = line.index('{')\n    list_index = line.index('[')\n    if dict_index < list_index:\n        jdata = line[dict_index:]\n    else:\n        jdata = line[list_index:]\n\n    data['data'] = json.loads(jdata)\n\n    return data\n\n\n@app.route('/logs', methods=['GET', 'POST'])\n@app.route('/logs/<path:issue>', methods=['GET', 'POST'])\ndef logs(issue=None):\n    LOGDIR = '/var/log'\n    logfiles = sorted(glob.glob('%s/ansibullbot*' % LOGDIR))\n    log_lines = []\n\n    for lf in logfiles:\n        if lf.endswith('.log'):\n            with open(lf, 'r') as f:\n                log_lines = log_lines + f.readlines()\n        # consume the compressed logs too if looking for a specific issue\n        elif issue and lf.endswith('.gz'):\n            with gzip.open(lf, 'rb') as zf:\n                file_data = zf.readlines()\n            log_lines.extend(file_data)\n\n    # if the caller doesn't want a specific issue, get the tail of the log and all tracebacks\n    if not issue:\n        # trim out and DEBUG lines\n        log_info = [x.rstrip() for x in log_lines if ' INFO ' in x]\n\n        # each time the bot starts, it's possibly because of a traceback\n        bot_starts = []\n        for idx, x in enumerate(log_lines):\n            if 'starting bot' in x:\n                bot_starts.append(idx)\n\n        tracebacks = []\n        for bs in bot_starts:\n            this_issue = None\n            this_traceback = None\n            for idx, x in enumerate(log_lines):\n                if 'starting triage' in x:\n                    this_issue = x\n                    continue\n                if this_issue and x.endswith('Traceback (most recent call last):'):\n                    this_traceback = [x]\n                    continue\n                if this_traceback:\n                    this_traceback.append(x)\n                if idx == bs:\n                    break\n\n            # only keep things that were actually tracebacks\n            if this_traceback is not None:\n                if 'Exception' in this_traceback[-2]:\n                    tracebacks.append((this_issue, this_traceback))\n\n        return jsonify((log_info[-100:], tracebacks))\n\n    # filter out lines relevant to the issue\n    number = issue.split('/')[-1]\n    issue_log = []\n    inphase = False\n    for ll in log_lines:\n        ll = ll.rstrip()\n        if not inphase and 'starting triage' in ll and ll.endswith('/' + number):\n            inphase = True\n            issue_log.append(ll)\n            continue\n        if inphase and 'finished triage' in ll and ll.endswith('/' + number):\n            inphase = False\n            continue\n\n        if inphase:\n            issue_log.append(ll)\n\n    # grep out each time the issue was triaged\n    sessions = [x for x in issue_log if 'starting triage' in x]\n\n    # assemble the datastructure for return\n    issue_data = {\n        'number': number,\n        'triage_count': len(sessions),\n        'triage_times': [' '.join(x.split()[0:2]) for x in sessions],\n        'log': issue_log,\n        'api': {}\n    }\n\n    # parse out any api data requested for this issue\n    for ll in issue_log:\n        if 'DEBUG GET' in ll:\n            data = strip_line_json(ll)\n            issue_data['api'][data['url']] = data\n\n    return jsonify(issue_data)\n\n\nif __name__ == \"__main__\":\n    app.run(debug=False, host='0.0.0.0', port=5001)\n"
  },
  {
    "path": "scripts/ansibot_status.cgi",
    "content": "#!/usr/bin/env python3\n# Ansible managed. Any local changes will be overwritten.\n\nimport glob\nimport pwd\nimport subprocess\n\n\ndef run_command(args):\n    p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)\n    (so, se) = p.communicate()\n    return (p.returncode, so, se)\n\n\ndef get_process_data():\n    # USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND\n    # [root@centos-1gb-nyc3-01 cgi-bin]# ps aux | fgrep -i triage.py | egrep ^ansibot\n    # ansibot   1092 18.2 37.4 600984 380548 pts/2   S+   13:53   3:46\n    #   python ./triage.py --debug --verbose --force --skip_no_update --daemonize --daemonize_interval=360\n    pdata = {\n        'pid': None,\n        'cpu': None,\n        'mem': None,\n        'disk': '0',\n    }\n    cmd = 'ps aux | fgrep -i triage_ansible.py | egrep ^ansibot'\n    (rc, b_so, se) = run_command(cmd)\n    if rc != 0:\n        return pdata\n\n    so = b_so.decode('utf-8')\n    parts = so.split()\n    pdata['pid'] = parts[1]\n    pdata['cpu'] = parts[2]\n    pdata['mem'] = parts[3]\n\n    # disk used\n    cmd = \"df -h / | tail -n1 | awk '{print $5}'\"\n    (rc, b_so, se) = run_command(cmd)\n    so = b_so.decode('utf-8')\n    pdata['disk'] = so.strip()\n\n    return pdata\n\n\ndef _get_log_data():\n\n    LOGDIR = '/var/log'\n    logfiles = sorted(glob.glob('%s/ansibullbot*' % LOGDIR))\n    log_lines = []\n\n    for lf in logfiles:\n        if lf.endswith('.log'):\n            with open(lf, 'r') as f:\n                log_lines = log_lines + f.readlines()\n\n    # trim out and DEBUG lines\n    log_info = [x.rstrip() for x in log_lines if ' INFO ' in x]\n\n    # each time the bot starts, it's possibly because of a traceback\n    bot_starts = []\n    for idx, x in enumerate(log_lines):\n        if 'starting bot' in x:\n            bot_starts.append(idx)\n\n    # pull out the entire traceback(s) and the relevant issues(s)\n    tracebacks = []\n    for bs in bot_starts:\n        this_issue = None\n        this_traceback = []\n        if len(log_lines) > 1000:\n            lines = log_lines[bs - 1000:bs]\n        else:\n            lines = log_lines[:bs]\n\n        for line in lines:\n            if 'DEBUG GET' in line:\n                continue\n            if 'starting triage' in line:\n                this_issue = line.rstrip()\n            if 'Traceback (most recent call last)' in line:\n                this_traceback.append(line.rstrip())\n                continue\n            if this_traceback:\n                this_traceback.append(line.rstrip())\n        if this_traceback:\n            tracebacks.append([this_issue] + this_traceback)\n\n    return (log_info[-500:], tracebacks)\n\n\ndef get_log_data():\n\n    ratelimit = {\n        'total': None,\n        'remaining': None,\n        'msg': None\n    }\n\n    cmd = 'tail -n 1000 \"/var/log/ansibullbot.log\" | fgrep \"x-ratelimit-limit\" | tail -n1'\n    (rc, so, se) = run_command(cmd)\n    if so:\n        parts = so.split()\n\n        if \"'x-ratelimit-limit':\" not in parts:\n            # ratelimit['msg'] = '<br>\\n'.join(parts)\n            pass\n        else:\n            lidx = parts.index(\"'x-ratelimit-limit':\")\n            if lidx:\n                ratelimit['total'] = parts[lidx + 1].replace(\"'\", '').replace(',', '')\n            ridx = parts.index(\"'x-ratelimit-remaining':\")\n            if ridx:\n                ratelimit['remaining'] = parts[ridx + 1].replace(\"'\", '').replace(',', '')\n\n    lines, tracebacks = _get_log_data()\n\n    return (ratelimit, lines, tracebacks)\n\n\ndef get_version_data():\n    ansibot_home = pwd.getpwnam('ansibot').pw_dir\n    cmd = f'git -C {ansibot_home}/ansibullbot log --format=\"%H\" -1'\n\n    (rc, b_so, b_se) = run_command(cmd)\n    so = b_so.decode('utf-8')\n    se = b_se.decode('utf-8')\n    if rc == 0 and so:\n        commit_hash = so.strip()\n        return commit_hash\n\n    return \"unknown: %s\" % se\n\n\npdata = get_process_data()\n(ratelimit, loglines, tracebacks) = get_log_data()\nversion = get_version_data()\n\nrdata = \"Content-type: text/html\\n\"\nrdata += \"\\n\"\nrdata += \"pid: %s<br>\\n\" % (pdata['pid'] or 'not running')\nrdata += \"cpu: %s<br>\\n\" % (pdata['cpu'] or 'not running')\nrdata += \"mem: %s<br>\\n\" % (pdata['mem'] or 'not running')\nrdata += \"disk: %s<br>\\n\" % (pdata['disk'] or 'N/A')\nrdata += \"<br>\\n\"\nrdata += \"ratelimit total: %s<br>\\n\" % ratelimit['total']\nrdata += \"ratelimit remaining: %s<br>\\n\" % ratelimit['remaining']\nrdata += \"<br>\\n\"\nrdata += \"current version: %s\\n\" % version\nrdata += \"<br>\\n\"\nrdata += \"################################ INFO LOG ###########################<br>\\n\"\nrdata += '<pre>'\nrdata += '\\n'.join(loglines[:200])\nrdata += \"\\n\"\nrdata += '</pre>'\nrdata += '<br>'\nrdata += \"################################ TRACEBACKS #########################<br>\\n\"\nfor tb in tracebacks:\n    rdata += '<pre>'\n    rdata += '\\n'.join([x for x in tb if x is not None])\n    rdata += '</pre>'\nrdata += \"<br>\\n\"\n\n# force error on full disk\nif int(pdata['disk'].replace('%', '')) > 98:\n    print('Status: 500 No disk space left\\n')\nelse:\n    print(rdata)\n"
  },
  {
    "path": "scripts/generate_issues_by_file.py",
    "content": "#!/usr/bin/env python\n\nimport json\nimport os\nimport sys\n\nfrom ansibullbot._text_compat import to_bytes\nfrom ansibullbot.utils.receiver_client import get_receiver_metadata\nfrom ansibullbot.utils.receiver_client import get_receiver_summaries\nfrom ansibullbot.utils.sentry import initialize_sentry\n\n\ndef main():\n    initialize_sentry()\n\n    # define where to dump the resulting files\n    if len(sys.argv) > 1:\n        destdir = sys.argv[1]\n    else:\n        destdir = '/tmp'\n\n    if not os.path.isdir(destdir):\n        os.makedirs(destdir)\n\n    ISSUES = {}\n    BYFILE = {}\n    BYISSUE = {}\n    BYMAINTAINER = {}\n\n    summaries = get_receiver_summaries('ansible', 'ansible', state='open')\n    for summary in summaries:\n        number = summary['github_number']\n        this_meta = get_receiver_metadata('ansible', 'ansible', number=number)\n\n        if not this_meta:\n            continue\n\n        this_meta = this_meta[0]\n        url = this_meta['html_url']\n        ISSUES[url] = this_meta\n        BYISSUE[url] = []\n\n        try:\n            this_meta.get('component_matches', [])\n        except Exception as e:\n            print(e)\n            continue\n\n        for component in this_meta.get('component_matches', []):\n            # we seem to have some variation in the keys ...\n            filename = None\n            try:\n                filename = component['repo_filename']\n            except KeyError:\n                filename = component['filename']\n\n            if not filename:\n                continue\n\n            if 'maintainers' in component:\n                for maintainer in component['maintainers']:\n                    if maintainer not in BYMAINTAINER:\n                        BYMAINTAINER[maintainer] = []\n                    if url not in BYMAINTAINER[maintainer]:\n                        BYMAINTAINER[maintainer].append(url)\n\n            BYISSUE[url].append(filename)\n\n            if filename not in BYFILE:\n                BYFILE[filename] = []\n            if url not in BYFILE[filename]:\n                BYFILE[filename].append(url)\n\n    destfile = os.path.join(destdir, 'byissue.json')\n    with open(destfile, 'w') as f:\n        f.write(json.dumps(BYISSUE, indent=2, sort_keys=True))\n\n    destfile = os.path.join(destdir, 'byfile.json')\n    with open(destfile, 'w') as f:\n        f.write(json.dumps(BYFILE, indent=2, sort_keys=True))\n\n    tuples = list(BYFILE.items())\n    for idx, x in enumerate(tuples):\n        x = [x[0]] + x[1]\n        tuples[idx] = x\n    tuples.sort(key=len)\n    tuples.reverse()\n\n    destfile = os.path.join(destdir, 'byfile_sorted.txt')\n    with open(destfile, 'wb') as f:\n        for tup in tuples:\n            f.write(b'%s\\n' % to_bytes(tup[0]))\n            for issue in tup[1:]:\n                title = to_bytes(ISSUES[issue]['title'])\n                f.write(b'\\t%s\\t%s\\n' % (to_bytes(issue), title))\n\n    destfile = os.path.join(destdir, 'byfile_sorted.html')\n    with open(destfile, 'wb') as f:\n        for idp, tup in enumerate(tuples):\n            f.write(b'<div style=\"background-color: #cfc ; padding: 10px; border: 1px solid green;\">\\n')\n            file_ref = b'%d. <a href=\"https://github.com/ansible/ansible/blob/devel/%s\">https://github.com/ansible/ansible/blob/devel/%s</a> %d total' % (\n                (idp + 1), to_bytes(tup[0]), to_bytes(tup[0]), len(tup[1:])\n            )\n            f.write(b'%s\\n' % (file_ref))\n            f.write(b'</div>')\n            f.write(b'<br>\\n')\n            for issue in tup[1:]:\n                title = to_bytes(ISSUES[issue]['title'])\n                issue = to_bytes(issue)\n                issue_ref = b'<a href=\"%s\">%s</a>' % (issue, issue)\n                f.write(b'\\t%s\\t%s<br>\\n' % (issue_ref, title))\n            f.write(b'<br>\\n')\n\n    tuples = list(BYMAINTAINER.items())\n    for idx, x in enumerate(tuples):\n        x = [x[0]] + x[1]\n        tuples[idx] = x\n    tuples.sort(key=len)\n    tuples.reverse()\n\n    destfile = os.path.join(destdir, 'bymaintainer.json')\n    with open(destfile, 'w') as f:\n        f.write(json.dumps(BYMAINTAINER, indent=2, sort_keys=True))\n\n    destfile = os.path.join(destdir, 'bymaintainer_sorted.txt')\n    with open(destfile, 'wb') as f:\n        for tup in tuples:\n            f.write(b'%s\\n' % to_bytes(tup[0]))\n            for issue in tup[1:]:\n                f.write(b'\\t%s\\n' % to_bytes(issue))\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "scripts/slack-notice.py",
    "content": "#!/usr/bin/env python\n# Post message to Slack\n\nimport argparse\nimport os\nimport requests\n\ntry:\n    import configparser\nexcept ImportError:\n    import ConfigParser as configparser\n\n\ndef get_config(args):\n\n    ansibullbot_user = 'ansibot'\n    if args.user:\n        ansibullbot_user = args.user\n\n    config_file_path = os.path.join(os.path.expanduser('~' + ansibullbot_user), '.ansibullbot.cfg')\n    if args.config_file:\n        config_file_path = args.config_file\n\n    ini_file = configparser.ConfigParser()\n    ini_file.read(config_file_path)\n    return ini_file\n\n\ndef parse_args():\n    description = 'Post a status message to #monitoring channel in Ansible Slack.\\n'\n    parser = argparse.ArgumentParser(description=description)\n\n    parser.add_argument('--message', '-m', type=str, help='Message to post')\n    parser.add_argument('--config-file', '-f', type=str, help='Path to config file')\n    parser.add_argument('--user', '-u', type=str, help='User account that runs Ansibullbot')\n\n    args = parser.parse_args()\n    return args\n\n\ndef main():\n    args = parse_args()\n    ini_file = get_config(args)\n    url = ini_file.get('defaults', 'slack_url')\n\n    message = 'Ansibullbot restarted'\n    if args.message:\n        message = args.message\n\n    requests.post(url, json={'text': message})\n\n\nif __name__ == '__main__':\n    main()\n"
  },
  {
    "path": "setup.py",
    "content": "# -*- coding: utf-8 -*-\n\nfrom setuptools import setup, find_packages\n\n\nwith open('README.md') as f:\n    readme = f.read()\n\nwith open('LICENSE') as f:\n    license = f.read()\n\nsetup(\n    name='ansibullbot',\n    version='0.1.0',\n    description='github triage bot',\n    long_description=readme,\n    author='James Tanner',\n    author_email='tanner.jc@gmail.com',\n    url='https://github.com/ansible/ansibullbot',\n    license=license,\n    packages=find_packages(exclude=('test')),\n)\n"
  },
  {
    "path": "templates/bad_pr.j2",
    "content": "@{{ submitter }} This PR was evaluated as a potentially problematic PR for the following reasons:\n{% for reason in is_bad_pr_reason %}\n* {{ reason }}\n{% endfor %}\n\nSuch PR can only be merged by human. Contact a Core team member to review this PR on IRC: `#ansible-devel` on Libera.chat IRC\n\n[click here for bot help](https://github.com/ansible/ansibullbot/blob/devel/ISSUE_HELP.md)\n<!--- boilerplate: bad_pr --->\n"
  },
  {
    "path": "templates/bot_status.j2",
    "content": "<details><summary><b>Components</b></summary>\n\n{% for component in component_matches %}\n{{ '[' + component['repo_filename'] + '](' + 'https://github.com/ansible/ansible/blob/devel/' + component['repo_filename'] + ')'}}\nmaintainers: {{ component['maintainers']|join(' ') }}\n\n{% endfor %}\n</details>\n\n<details><summary><b>Metadata</b></summary>\n\n**waiting_on**: {{ waiting_on }}\n{% if is_issue %}\n[needs_info](https://github.com/ansible/ansibullbot/blob/devel/ISSUE_HELP.md#label-needs_info): {{ is_needs_info }}\n{% else %}\n{% if change_requested %}\nchanges_requested_by: {{ change_requested|join(' ') }}\n{% else %}\nchanges_requested_by: null\n{% endif %}\n[needs_info](https://github.com/ansible/ansibullbot/blob/devel/ISSUE_HELP.md#label-needs_info): {{ is_needs_info }}\n[needs_revision](https://github.com/ansible/ansibullbot/blob/devel/ISSUE_HELP.md#label-needs_revision): {{ is_needs_revision }}\n[needs_rebase](https://github.com/ansible/ansibullbot/blob/devel/ISSUE_HELP.md#label-needs_rebase): {{ is_needs_rebase }}\n[merge_commits](https://github.com/ansible/ansibullbot/blob/devel/ISSUE_HELP.md#label-merge_commit): {{ merge_commits }}\ntoo many files or commits: {{ is_bad_pr }}\nmergeable_state: {{ mergeable_state }}\nci_status: {{ ci_state }}\nmaintainer_shipits (module maintainers): {{ shipit_count_maintainer }}\ncommunity_shipits (namespace maintainers): {{ shipit_count_community }}\nansible_shipits (core team members): {{ shipit_count_ansible }}\n{% if shipit_actors %}\nshipit_actors (maintainers or core team members): {{ shipit_actors|join(' ') }}\n{% else %}\nshipit_actors (maintainer or core team member): {{ shipit_actors }}\n{% endif %}\n{% if shipit_actors_other %}\nshipit_actors_other: {{ shipit_actors_other|join(' ') }}\n{% else %}\nshipit_actors_other: {{ shipit_actors_other }}\n{% endif %}\nautomerge: {{ automerge_status }}\n{% endif %}\n</details>\n\n[click here for bot help](https://github.com/ansible/ansibullbot/blob/devel/ISSUE_HELP.md)\n<!--- boilerplate: bot_status --->\n"
  },
  {
    "path": "templates/collection_migration.j2",
    "content": "Thank you very much for your interest in Ansible. Ansible has migrated much of the content into separate repositories to allow for more rapid, independent development. We are closing this issue/PR because this content has been moved to one or more collection repositories.\n\n{% for fn,fqcns in collection_file_matches.items() %}\n* {{ fqcns[0] }}\n{% endfor %}\n\nFor further information, please see:\nhttps://github.com/ansible/ansibullbot/blob/devel/docs/collection_migration.md\n\n<!--- boilerplate: collection_migration --->\n"
  },
  {
    "path": "templates/commit_msg_mentions.j2",
    "content": "@{{ submitter }} This PR contains `@` mentions in at least one commit message. Those mentions can cause cascading notifications through GitHub and need to be removed. Please squash or amend your commits to remove the mentions.\n\n[click here for bot help](https://github.com/ansible/ansibullbot/blob/devel/ISSUE_HELP.md)\n<!--- boilerplate: commit_msg_mentions --->\n"
  },
  {
    "path": "templates/community_shipit_notify.j2",
    "content": "{{ '@' + (community_usernames | reject(\"equalto\", submitter) | join(' @')) }}\n\n\n{% if is_new_module %}\nAs a maintainer of a module in the same namespace this new module has been submitted to, your vote counts for shipits. Please review this module and add `shipit` if you would like to see it merged.\n{% else %}\nThe `{{ module_match['name'] }}` module has only one maintainer and this request needs 2 shipits. As a maintainer of a module in the same namespace, you can add a `shipit` to help move this request along.\n{% endif %}\n\n[click here for bot help](https://github.com/ansible/ansibullbot/blob/devel/ISSUE_HELP.md)\n<!--- boilerplate: community_shipit_notify --->\n"
  },
  {
    "path": "templates/community_workgroups.j2",
    "content": "@{{ submitter }}, just so you are aware we have a dedicated Working Group for {{ wg['workgroup'] }}.\nYou can find other people interested in this in `#ansible-{{ wg['workgroup'] }}` on Libera.chat IRC\nFor more information about communities, meetings and agendas see https://github.com/ansible/community\n\n[click here for bot help](https://github.com/ansible/ansibullbot/blob/devel/ISSUE_HELP.md)\n<!--- boilerplate: community_workgroups --->\n"
  },
  {
    "path": "templates/components_banner.j2",
    "content": "Files identified in the description:\n{% if meta['component_matches'] %}\n{% for x in meta['component_matches'] %}\n{% if x['is_collection'] or x['repo_filename'].startswith('collection:') %}\n* {{ '[`' + x['repo_filename']|string + '`](' + x['collection_scm']|string + ')'}}\n{% else %}\n{% if x['repo_link'] %}\n* {{ '[`' + x['repo_filename']|string + '`](' + x['repo_link']|string + ')'}}\n{% else %}\n* {{ '`' + x['repo_filename']|string + '`'}}\n{% endif %}\n{% endif %}\n{% endfor %}\n{% else %}\nNone\n{% endif %}\n\nIf these files are incorrect, please update the `component name` section of the description or use the `!component` bot command.\n\n[click here for bot help](https://github.com/ansible/ansibullbot/blob/devel/ISSUE_HELP.md)\n<!--- boilerplate: components_banner --->\n"
  },
  {
    "path": "templates/docs_team_info.j2",
    "content": "Thanks for your Ansible docs contribution! We talk about Ansible documentation on matrix at [#docs:ansible.im](https://matrix.to/#/#docs:ansible.im) and on libera IRC at #ansible-docs if you ever want to join us and chat about the docs! We meet there on Tuesdays (see [the Ansible calendar](https://github.com/ansible/community/blob/main/meetings/README.md)) and welcome additions to our [weekly agenda items](https://github.com/ansible/community/issues/678) - scroll down to find the upcoming agenda and add a comment to put something new on that agenda.\n\n[click here for bot help](https://github.com/ansible/ansibullbot/blob/devel/ISSUE_HELP.md)\n<!--- boilerplate: docs_team_info --->\n"
  },
  {
    "path": "templates/fork.j2",
    "content": "@{{ submitter }} Please create a new PR using a branch in your fork.\n<!--- boilerplate: fork --->\n"
  },
  {
    "path": "templates/incoming_ref_missing.j2",
    "content": "Hello,\nwe're closing this pull request because the original PR-bound branch\nwent missing. (This PR's fork repository or branch has been deleted by\nthe owner).\n\n@{{ pr_submitter }}, if you wish to restore the PR, please, re-create\na branch in the same fork repo and with the exactly same name and reopen\nthis pull request. Or submit a new PR.\n\n##### To whom it may concern,\nIf you're an individual wishing to pick up the work done by the original\nsubmitter (@{{ pr_submitter }}), [here's how you can do this](\nhttps://help.github.com/articles/checking-out-pull-requests-locally/#modifying-an-inactive-pull-request-locally)\n(given you followed the instructions at [Ansible Dev Guide](\nhttps://docs.ansible.com/ansible/devel/dev_guide/developing_rebasing.html#configuring-your-remotes)\nand have `origin` pointing to your fork and `upstream` pointing to\n`ansible/ansible`):\n\n1. :ambulance: Pull the branch locally from read-only copy held by GitHub:\n   ```console\n   git fetch upstream pull/{{ pr_number }}/head:{{ pr_recovered_branch }}\n   ```\n   Now you have it locally!\n2. :construction: Switch to your local branch containing PR changes:\n   ```console\n   git checkout {{ pr_recovered_branch }}\n   ```\n3. :sparkles: Do your magic. :pencil: Change stuff. :lock: Commit. :hammer:\n4. :package: Push it to your fork:\n   ```console\n   git push -u origin {{ pr_recovered_branch }}:{{ pr_recovered_branch }}\n   ```\n5. :rocket: Now, [create a PR with your renovated work](\n   https://github.com/ansible/ansible/compare/devel...:{{ pr_recovered_branch }}?quick_pull=1&labels={{ pr_type }}&title={{ pr_title_urlencoded }}&body=This%20is%20a%20resubmission%20of%20PR%20%23{{ pr_number }}).\n   _(Of course, don't forget to fill in the PR template properly)._\n\n\n<!--- boilerplate: incoming_ref_missing --->\n"
  },
  {
    "path": "templates/issue_missing_data.j2",
    "content": "@{{ submitter }}: Greetings! Thanks for taking the time to open this {{ itype }}. In order for the community to handle your {{ itype }} effectively, we need a bit more information.\n\nHere are the items we could not find in your description:\n{% for item in missing_sections %}\n{{ '- ' + item }}\n{% endfor %}\n\n{% if itype == 'issue' %}\nPlease set the description of this {{ itype }} with an appropriate template from:\nhttps://github.com/ansible/ansible/tree/devel/.github/ISSUE_TEMPLATE\n{% else %}\nPlease set the description of this {{ itype }} with this template:\nhttps://raw.githubusercontent.com/ansible/ansible/devel/.github/PULL_REQUEST_TEMPLATE.md\n{% endif %}\n\n[click here for bot help](https://github.com/ansible/ansibullbot/blob/devel/ISSUE_HELP.md)\n<!--- boilerplate: issue_missing_data --->\n"
  },
  {
    "path": "templates/merge_commit_notify.j2",
    "content": "@{{ submitter }} this PR contains the following merge commits:\n\n{% for commit in merge_commits %}\n* {{ commit }}\n{% endfor %}\n\nPlease [rebase your branch](http://docs.ansible.com/ansible/devel/dev_guide/developing_rebasing.html) to remove these commits.\n\n[click here for bot help](https://github.com/ansible/ansibullbot/blob/devel/ISSUE_HELP.md)\n<!--- boilerplate: merge_commit_notify --->\n"
  },
  {
    "path": "templates/multiple_module_notify.j2",
    "content": "@{{ submitter }} this PR contains more than one new module.\n\nPlease submit only one new module per pull request. For a detailed explanation, please read [the grouped modules documentation](https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_in_groups.html)\n\n[click here for bot help](https://github.com/ansible/ansibullbot/blob/devel/ISSUE_HELP.md)\n<!--- boilerplate: multiple_module_notify --->\n"
  },
  {
    "path": "templates/needs_info_base.j2",
    "content": "{% if action == 'warn' %}\n{% if template_missing or template_missing_sections %}\n@{{ submitter }} This {{ itype }} is waiting for you to provide the requested data in the description. Please edit the description or the {{ itype }} will be closed.\n{% else %}\n@{{ submitter }} This {{ itype }} is waiting for your response. Please respond or the {{ itype }} will be closed.\n{% endif %}\n{% elif action  == 'close' %}\n@{{ submitter }} You have not responded to information requests in this {{ itype }} so we will assume it no longer affects you. If you are still interested in this, please create a new {{ itype }} with the requested information.\n{% endif %}\n\n[click here for bot help](https://github.com/ansible/ansibullbot/blob/devel/ISSUE_HELP.md)\n<!--- boilerplate: needs_info_base --->\n"
  },
  {
    "path": "templates/notify.j2",
    "content": "{% if notify|length > 1 %}\ncc @{{ notify|join(' @') }}\n{% else %}\ncc @{{ notify[0] }}\n{% endif %}\n[click here for bot help](https://github.com/ansible/ansibullbot/blob/devel/ISSUE_HELP.md)\n<!--- boilerplate: notify --->\n"
  },
  {
    "path": "templates/shippable_test_result.j2",
    "content": "{% for x in data %}\n{% for fd in x['contents']['failureDetails'] %}\n{{ fd['message'] }}\n```\n{{ fd['full'] }}\n```\n{% endfor %}\n{% for res in x['contents']['results'] %}\n{{ res['message'] }}\n```\n{{ res['output'] }}\n```\n{% endfor %}\n<!-- job_id: {{ x['run_id'] }} -->\n<!-- job_id: {{ x['job_id'] }} -->\n<!-- job_id: {{ x['path'] }} -->\n{% endfor %}\n\n[click here for bot help](https://github.com/ansible/ansibullbot/blob/devel/ISSUE_HELP.md)\n<!--- boilerplate: shippable_test_result --->\n"
  },
  {
    "path": "templates/test_support_plugins.j2",
    "content": "@{{ submitter }} The following file(s) in this pull request are bundled copies of modules used to support incidental tests and should not be updated:\n\n{% for fn, collections in test_support_plugins|dictsort %}\n* `{{ fn }}`\n    * {% if collections %}Possible match in the following collections: `{{ collections|join(', ') }}`{% else %}Could not find a match in collections.{% endif %}\n\n{% endfor %}\n\nBecause the original module(s) have been migrated to collections, please re-submit this pull request in relevant collection repositories, typically under [https://github.com/ansible-collections](https://github.com/ansible-collections).\n\nIf you need further assistence with identifying the correct repository, please stop by IRC or the mailing list:\n\n* IRC: #ansible on Libera.chat IRC\n* mailing list: https://groups.google.com/forum/#!forum/ansible-project\n\n[click here for bot help](https://github.com/ansible/ansibullbot/blob/devel/ISSUE_HELP.md)\n<!--- boilerplate: test_support_plugins --->\n"
  },
  {
    "path": "templates/waiting_on_contributor_close.j2",
    "content": "Thank you very much for your submission to Ansible. It means a lot to us that you've taken time to contribute.\n\nUnfortunately, this issue has been open for some time while waiting for a contributor to take it up but there does not seem to have been anyone that did so. So we are going to close this issue to clear up the queues and make it easier for contributors to browse possible implementation targets.\n\nHowever, we're absolutely always up for discussion. Because this project is very active, we're unlikely to see comments made on closed tickets and we lock them after some time. If you or anyone else has any further questions, please let us know by using any of the communication methods listed in the page below:\n\n   * https://docs.ansible.com/ansible/latest/community/communication.html\n\nIn the future, sometimes starting a discussion on the development list prior to proposing or implementing a feature can make getting things included a little easier, but it's not always necessary.\n\nThank you once again for this and your interest in Ansible!\n\n[click here for bot help](https://github.com/ansible/ansibullbot/blob/devel/ISSUE_HELP.md)\n<!--- boilerplate: waiting_on_contributor_close --->\n"
  },
  {
    "path": "test-requirements.txt",
    "content": "-r requirements.txt\n\npytest\npytest-cov\npytest-sugar\n"
  },
  {
    "path": "tests/__init__.py",
    "content": ""
  },
  {
    "path": "tests/bin/ansibot-test",
    "content": "#!/usr/bin/env python\n\n# docker build -t jctanner/githubsim -f github_sim_container/Dockerfile .\n# docker run -v $(pwd):/test -it jctanner/githubsim:latest /bin/bash\n\nimport argparse\nimport docker\nimport glob\nimport json\nimport os\nimport requests\nimport sh\nimport shutil\nimport subprocess\nimport sys\nimport threading\nimport tempfile\nimport time\nimport yaml\n\nfrom logzero import logger\nfrom sh import docker as dockersh\n\n\ndocker_client = client = docker.from_env()\n\n\nclass LocalSimRunner(object):\n\n    ip = 'localhost'\n\n    def logs(self):\n        return []\n\n\nclass SimRunner(object):\n\n    NAME = 'github_sim'\n    IMAGE = 'ansibot/githubsim:latest'\n    DOCKERFILE = 'github_sim_container/Dockerfile'\n\n\n    def __init__(self, meta=None, number=None):\n\n        self.build_kwargs = {\n            'path': '.',\n            'dockerfile': self.DOCKERFILE,\n            'tag': self.IMAGE,\n        }\n        self.run_kwargs = {\n            'detach': True,\n            'working_dir': '/src',\n            'entrypoint': ['python', 'tests/bin/github_sim.py', '--generate'],\n            'volumes': ['%s:%s' % (os.path.abspath('.'), '/src')]\n        }\n        self.container = None\n        self.containerid = None\n\n    def run(self):\n        self.build_image()\n        self.kill_container()\n        self.run_container()\n        self.ip = self.get_container_ip(self.NAME)\n\n    def build_image(self):\n        if hasattr(docker_client, 'build'):\n            # docker-py v1.x.x\n            for entry in docker_client.build(**self.build_kwargs):\n                logger.info(entry.strip())\n        else:\n            raise Exception('the docker_client does not have a .build attribute. please reinstall')\n\n    def kill(self):\n        self.kill_container()\n\n    def kill_container(self):\n        try:\n            info = dockersh('inspect', self.NAME)\n        except sh.ErrorReturnCode_1:\n            info = None\n        if info is not None:\n            info = json.loads(info.stdout)\n            running = info[0]['State']['Running']\n            if running:\n                res = dockersh('kill', self.NAME)\n            dockersh('rm', self.NAME)\n\n    def run_container(self):\n        # docker run -v $(pwd):/test -it jctanner/githubsim:latest /bin/bash\n        #self.container = docker_client.create_container(self.IMAGE, **self.run_kwargs)\n        res = dockersh(\n            'run',\n            '--name=%s' % self.NAME,\n            '--detach',\n            '--volume',\n            '%s:%s' % (os.path.abspath('.'), '/src'),\n            self.IMAGE,\n            'python',\n            'tests/bin/github_sim.py',\n            'load',\n            '--fixtures=\"tests/fixtures/issues/2018-12-18\"',\n        )            \n        logger.info('new container id [%s] %s' % (self.NAME, res.strip()))\n        self.containerid = res.strip()\n        time.sleep(2)\n        log = dockersh('logs', self.containerid)\n        for line in log.stdout.split('\\n'):\n            logger.info(line)\n        for line in log.stderr.split('\\n'):\n            logger.info(line)\n        logger.info('container started')\n\n    def get_container_ip(self, containerid):\n        try:\n            info = dockersh('inspect', containerid)\n        except sh.ErrorReturnCode_1:\n            return None\n        info = json.loads(info.stdout)\n        ip = info[0]['NetworkSettings']['Networks']['bridge']['IPAddress']\n        logger.info('container ip found: %s' % ip)\n        return ip\n\n    def logs(self):\n        logs = dockersh('logs', self.containerid)\n        logs = logs.stdout + logs.stderr\n        return logs\n\n\nclass IntegrationTest(object):\n\n    def __init__(self, target=None, local=False, checkoutsrc=None):\n        self.target = target\n        self.target_info = None\n        self.simpid = None\n        self.sim = None\n        self.target_path = os.path.join('tests', 'integration', 'targets', self.target)\n        self.target_meta = self.read_target_meta(self.target)\n        self.tmpdir = tempfile.mkdtemp(prefix='/tmp/ansibot.test')\n        self.checkoutsrc = checkoutsrc\n\n        if self.checkoutsrc:\n            self.copy_checkout()\n\n        if local:\n            self.sim = LocalSimRunner()\n        else:\n            #self.run_simulator(self.target_meta, number=47375)\n            self.run_simulator(self.target_meta)\n\n        (rc, so, se) = self.run_bot()\n        if rc != 0:\n            for line in so:\n                logger.error(line)\n            for line in self.sim.logs():\n                logger.error(line)\n\n        if not local:\n            self.kill_simulator()\n        self.check_results()\n\n    def copy_checkout(self):\n        # /tmp/ansibot.test5fxYR8/cache/ansible.checkout\n        src = self.checkoutsrc\n        dst = os.path.join(self.tmpdir, 'cache', 'ansible.checkout')\n        dstparent = os.path.dirname(dst)\n        if not os.path.exists(dstparent):\n            os.makedirs(dstparent)\n        logger.info('copy %s to %s' % (src, dst))\n        shutil.copytree(src, dst)\n\n    def write_bot_config(self, directory=None):\n        '''Make an isolated config for testing'''\n        cfg = [\n            '[defaults]',\n            'debug=True',\n            'breakpoints=False',\n            'ratelimit=False',\n            'shippable_token=XXXX-XXXX-XXXX',\n            'shippable_url=http://%s:5000' % self.sim.ip,\n            'github_url=http://%s:5000' % self.sim.ip,\n            'github_username=ansibot',\n            'github_password=foobar',\n            'github_token=AAA'\n        ]\n        cfg = '\\n'.join(cfg) + '\\n'\n        cfile = os.path.join(directory, 'ansibullbot.cfg')\n        with open(cfile, 'w') as f:\n            f.write(cfg)\n\n    def read_target_meta(self, target):\n        '''Targets have meta to inform how tests should run'''\n        mpath = os.path.join(self.target_path, 'meta.yml')\n        with open(mpath, 'r') as f:\n            ydata = yaml.safe_load(f.read())\n        if not isinstance(ydata, dict):\n            raise Exception('target meta should be a dict-like structure')\n        if 'ansible_commit' not in ydata:\n            raise Exception('target meta needs to have an ansible_commit hash')\n        #import epdb; epdb.st()\n        return ydata\n\n    def run_bot(self):\n        '''Fork the bot and let it triage the issue(s)'''\n        logger.info('starting bot')\n        if not os.path.exists(self.tmpdir):\n            os.makedirs(self.tmpdir)\n        self.write_bot_config(directory=self.tmpdir)\n        logfile = os.path.join(self.tmpdir, 'bot.log')\n        cmd = [\n            'ANSIBULLBOT_CONFIG=%s/ansibullbot.cfg' % self.tmpdir,\n            './triage_ansible.py',\n            '--logfile=%s' % logfile,\n            '--commit=%s' % self.target_meta['ansible_commit'],\n            '--debug',\n            '--verbose',\n            '--ignore_module_commits',\n            '--cachedir=%s' % os.path.join(self.tmpdir, 'cache'),\n            '--force',\n        ]\n\n        if 'numbers' in self.target_meta:\n            for number in self.target_meta['numbers']:\n                cmd.append('--id=%s' % number)\n\n        cmd = ' '.join(cmd)\n        logger.info(cmd)\n\n        runfile = os.path.join(self.tmpdir, 'run.sh')\n        with open(runfile, 'w') as f:\n            f.write('#!/bin/bash\\n')\n            f.write(cmd + '\\n')\n\n        p = subprocess.Popen(\n            cmd,\n            shell=True,\n            stdout=subprocess.PIPE,\n            stderr=subprocess.PIPE\n        )\n\n        output = []\n\n        while True:\n            line = p.stdout.readline().rstrip()\n            logger.info(line)\n            output.append(line)\n            if line == '' and p.poll() != None:\n                break\n\n        if p.returncode != 0:\n            with open(logfile, 'r') as f:\n                for line in f.readlines():\n                    logger.error(line.rstrip())\n            import epdb; epdb.st()\n\n        logger.info('bot returncode: %s' % p.returncode)\n        return (p.returncode, output, None)\n\n    def kill_simulator(self):\n        self.sim.kill()\n\n    def run_simulator(self, meta, number=None):\n        '''Spawn the simulator'''\n        self.sim = SimRunner(meta=meta, number=number)\n        self.sim.run()\n\n        # wait for sim to load ...\n        simurl = 'http://%s:5000' % self.sim.ip\n        retries = 0\n        while True:\n            retries += 1\n            try:\n                rr = requests.get(simurl)\n            except requests.exceptions.ConnectionError:\n                if retries >= 10:\n                    raise Exception('simulator was unreachable')\n                continue\n            logger.info('test connection to simulator succeeded')\n            break\n\n    def check_results(self):\n        '''Compare saved meta vs expected meta'''\n\n        # /tmp/tmpstCSTB/cache/ansible/ansible/issues/47375/meta.json\n        cachedir = os.path.join(self.tmpdir, 'cache')\n        metafiles = glob.glob('%s/*/*/*/*/meta.json' % cachedir)\n\n        for mf in metafiles:\n            logger.info(mf)\n\n            paths = mf.split('/')\n            number = paths[-2]\n            repo = paths[-4]\n            org = paths[-5]\n\n            with open(mf, 'r') as f:\n                meta = json.loads(f.read())\n\n            check_file = os.path.join(self.target_path, 'data', org, repo, number, 'meta.json')\n            logger.info(check_file)\n            with open(check_file, 'r') as f:\n                expected = json.loads(f.read())\n\n            assert meta['actions'] == expected['actions']\n\n\ndef main():\n    parser = argparse.ArgumentParser()\n    subparsers = parser.add_subparsers(help='family of tests to run')\n    parser.add_argument(\"-v\")\n\n    u_parser = subparsers.add_parser(\"units\", help='run unit tests')\n    c_parser = subparsers.add_parser(\"components\", help='run component tests')\n    i_parser = subparsers.add_parser(\"integration\", help='run integration tests')\n    i_parser.add_argument('--nobuild', action='store_true', help='do not rebuild the container')\n    i_parser.add_argument('--local', action='store_true', help='use http://localhost:5000 for the sim')\n    i_parser.add_argument('--checkoutsrc', help=\"use this path to copy the ansible checkout from\")\n    i_parser.add_argument('target', default=None)\n\n    args = parser.parse_args()\n\n    IT = IntegrationTest(target=args.target, local=args.local, checkoutsrc=args.checkoutsrc)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "tests/component/__init__.py",
    "content": ""
  },
  {
    "path": "tests/component/module_matching.py",
    "content": "import json\nimport unittest\n\nfrom ansibullbot._text_compat import to_text\nfrom ansibullbot.ansibletriager import AnsibleTriager\nfrom ansibullbot.utils.extractors import extract_template_data\n\nclass TestModuleMatching(unittest.TestCase):\n\n\n    def test_module_matching(self):\n\n        print('')\n\n        AT = AnsibleTriager(args={})\n\n        jfile = 'tests/fixtures/issue_template_meta.json'\n        with open(jfile, 'rb') as f:\n            jdata = json.load(f)\n\n        keys = sorted([int(x) for x in jdata.keys()])\n\n        for key in keys:\n\n            k = to_text(key)\n            v = jdata[k]\n\n            if '/pull/' in v['html_url']:\n                continue\n\n            print(v['html_url'])\n\n            # extract fields from the body\n            td = extract_template_data(\n                v['body'],\n                issue_class=None\n            )\n\n            # schema tests\n            assert isinstance(td, dict)\n            assert 'component_raw' in td\n            assert 'component name' in td\n\n            # confirm the raw converted to the component name\n            assert td['component_raw'] == v['component_raw']\n            assert td['component name'] == v['component_name']\n\n            # confirm module matching works.\n            mm = AT.find_module_match(v['title'], td)\n            if v['module_match']:\n                if mm is None:\n                    import epdb; epdb.st()\n                elif mm['filepath'] != v['module_match'] and \\\n                        mm['name'] != v['module_match']:\n                    import epdb; epdb.st()\n            elif mm is not None:\n                import epdb; epdb.st()\n\n            #assert mm == v['module_match']['filepath']\n            #import epdb; epdb.st()\n\n"
  },
  {
    "path": "tests/component/test_idempotence.py",
    "content": "import glob\nimport json\nimport logging\nimport os\n\nimport pytest\n\nfrom tests.utils.componentmocks import BotMockManager\n\nfrom ansibullbot.ansibletriager import AnsibleTriager\n\n\nclass TestIdempotence:\n\n    @pytest.mark.skip(reason=\"With shippable support removed, ci/azp.py needs a mock. This is also more of a functional/integration test.\")\n    def test_no_actions_on_second_run(self, *args, **kwargs):\n\n        '''Verify no actions were taken on a subsequent run'''\n\n        with BotMockManager() as mm:\n\n            print(type(mm))\n            print(dir(mm))\n            print(hasattr(mm, 'issuedb'))\n            mm.issuedb.debug = True\n\n            bot_args = [\n                #'--debug',\n                '--verbose',\n                #'--only_issues',\n                '--ignore_module_commits',\n                '--cachedir=%s' % mm.cachedir,\n                '--no_since',\n                #'--id=2',\n                #'--id=1',\n                '--force',\n                '--ignore_galaxy',\n            ]\n\n            # create a bug report\n            body = [\n                '#### ISSUE TYPE',\n                'bug report',\n                '#### SUMMARY',\n                'does not work.',\n                '#### COMPONENT NAME',\n                'vmware_guest',\n                '#### ANSIBLE VERSION',\n                '2.9.0'\n            ]\n            mm.issuedb.add_issue(body='\\n'.join(body), login='profleonard')\n\n            # create a PR that fixes #1\n            pbody = body[:]\n            pbody[3] = 'fixes #1'\n            mm.issuedb.add_issue(body='\\n'.join(pbody), itype='pull', login='jeb')\n            mm.issuedb.add_cross_reference(number=1, reference=2)\n            mm.issuedb.add_reaction('+1', login='lovethis', number=2)\n\n            # add more random issues\n            for x in range(0, 5):\n                mm.issuedb.add_issue(body='\\n'.join(body), login='clouddev')\n\n            # add needs info issue\n            mm.issuedb.add_issue(body=\"I don't like issue templates!\", login='clouddev')\n\n            AT = AnsibleTriager(args=bot_args)\n            for x in range(0, 2):\n                print('################################################################')\n                print('                     START RUN')\n                print('################################################################')\n                AT.run()\n                print('################################################################')\n                print('                     STOP RUN')\n                print('################################################################')\n\n            print('# issuedb %s' % id(mm.issuedb))\n\n            # /tmp/ansibot.test.isxYlS/ansible/ansible/issues/1/meta.json                \n            metafiles = glob.glob('%s/*/meta.json' % os.path.join(mm.cachedir, 'ansible', 'ansible', 'issues'))\n            metafiles = sorted(metafiles)\n            for mf in metafiles:\n\n                with open(mf) as f:\n                    meta = json.loads(f.read())\n\n                print('checking %s' % mf)\n\n                # ensure no actions were created on the last run\n                for k,v in meta['actions'].items():\n                    #if v:\n                    #    import epdb; epdb.st()\n                    assert not v\n\n            logging.basicConfig()\n"
  },
  {
    "path": "tests/component/test_supershipit.py",
    "content": "import glob\nimport json\nimport os\n\nimport pytest\nimport yaml\n\nfrom tests.utils.componentmocks import BotMockManager\nfrom tests.utils.componentmocks import get_custom_timestamp\n\nfrom ansibullbot.ansibletriager import AnsibleTriager\n\n\nclass TestSuperShipit:\n    # FIXME a hack to create the log file which **several** of other tests rely on\n    def test_presupershipit(self):\n        with BotMockManager() as mm:\n            os.system('touch %s' % os.path.join(mm.cachedir, 'bot.log'))\n\n    @pytest.mark.skip(reason=\"automerge is disabled now and this is not really an unit test.\")\n    def test_supershipit(self, *args, **kwargs):\n        with BotMockManager() as mm:\n            botmeta = {\n                'automerge': True,\n                'files': {\n                    'lib/ansible/modules/foo/bar.py': {\n                        'support': 'community',\n                        'maintainers': 'zippy',\n                        'supershipit': 'jiffy'\n                    }\n                },\n                'macros': {\n                }\n            }\n\n            bmfile = os.path.join(mm.cachedir, 'BOTMETA.yml')\n            with open(bmfile, 'w') as f:\n                f.write(yaml.dump(botmeta))\n\n            bot_args = [\n                '--debug',\n                '--verbose',\n                '--ignore_module_commits',\n                '--cachedir=%s' % mm.cachedir,\n                '--no_since',\n                '--force',\n                '--botmetafile=%s' % bmfile,\n                '--ignore_galaxy',\n                '--ci=azp',\n            ]\n\n            # create a bug report\n            body = [\n                '#### ISSUE TYPE',\n                'bugfix pullrequest',\n                '',\n                '#### SUMMARY',\n                'removing some files from ignore.txt',\n                '',\n                '#### COMPONENT NAME',\n                'vmware_guest',\n                '',\n                '#### ANSIBLE VERSION',\n                '2.9.0'\n            ]\n\n            ts = get_custom_timestamp()\n\n            # this one should get automerged because it only DELETEs from ignore.txt\n            mm.issuedb.add_issue(body='\\n'.join(body), number=1, itype='pull', login='profleonard', created_at=ts)\n            mm.issuedb.add_issue_file('test/sanity/ignore.txt', number=1, deletions=1, created_at=ts)\n            mm.issuedb.add_issue_comment('shipit', login='jiffy', number=1)\n\n            # this one should NOT get automerged because it ADDs to ignore.txt\n            mm.issuedb.add_issue(body='\\n'.join(body), number=2, itype='pull', login='profleonard', created_at=ts)\n            mm.issuedb.add_issue_file('test/sanity/ignore.txt', number=2, additions=1, created_at=ts)\n            mm.issuedb.add_issue_comment('shipit', login='jiffy', number=2)\n\n            AT = AnsibleTriager(args=bot_args)\n            AT.run()\n\n            # /tmp/ansibot.test.isxYlS/ansible/ansible/issues/1/meta.json                \n            metafiles = glob.glob('%s/*/meta.json' % os.path.join(mm.cachedir, 'ansible', 'ansible', 'issues'))\n            metafiles = sorted(metafiles)\n            for mf in metafiles:\n\n                number = int(mf.split('/')[-2])\n\n                with open(mf) as f:\n                    meta = json.loads(f.read())\n\n                print(mf)\n                print('shipit: %s' % ('shipit' in meta['actions']['newlabel']))\n                print('automerge: %s' % ('automerge' in meta['actions']['newlabel']))\n                print('merge: %s' % meta['actions']['merge'])\n                print('mergeable: %s' % meta['mergeable'])\n                print('mergeable_state: %s' % meta['mergeable_state'])\n                print('automege: %s' % meta['automerge'])\n                print('automerge_status: %s' % meta['automerge_status'])\n\n                if number == 1:\n                    assert meta['actions']['merge']\n                if number == 2:\n                    assert not meta['actions']['merge']\n"
  },
  {
    "path": "tests/fixtures/component_data/component_errors.json",
    "content": "[\n  {\n    \"component\": \"dellos*_* network modules\", \n    \"component_raw\": \"dellos*_* network modules\", \n    \"expected\": [\n      \"lib/ansible/modules/network\"\n    ], \n    \"result\": [\n      \"lib/ansible/modules/network/__init__.py\", \n      \"lib/ansible/modules/network/a10/__init__.py\", \n      \"lib/ansible/modules/network/a10/a10_server.py\", \n      \"lib/ansible/modules/network/a10/a10_server_axapi3.py\", \n      \"lib/ansible/modules/network/a10/a10_service_group.py\", \n      \"lib/ansible/modules/network/a10/a10_virtual_server.py\", \n      \"lib/ansible/modules/network/aci/__init__.py\", \n      \"lib/ansible/modules/network/aci/aci_aep.py\", \n      \"lib/ansible/modules/network/aci/aci_ap.py\", \n      \"lib/ansible/modules/network/aci/aci_bd.py\", \n      \"lib/ansible/modules/network/aci/aci_bd_subnet.py\", \n      \"lib/ansible/modules/network/aci/aci_bd_to_l3out.py\", \n      \"lib/ansible/modules/network/aci/aci_config_rollback.py\", \n      \"lib/ansible/modules/network/aci/aci_config_snapshot.py\", \n      \"lib/ansible/modules/network/aci/aci_contract.py\", \n      \"lib/ansible/modules/network/aci/aci_contract_subject.py\", \n      \"lib/ansible/modules/network/aci/aci_contract_subject_to_filter.py\", \n      \"lib/ansible/modules/network/aci/aci_epg.py\", \n      \"lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py\", \n      \"lib/ansible/modules/network/aci/aci_epg_to_contract.py\", \n      \"lib/ansible/modules/network/aci/aci_epg_to_domain.py\", \n      \"lib/ansible/modules/network/aci/aci_filter.py\", \n      \"lib/ansible/modules/network/aci/aci_filter_entry.py\", \n      \"lib/ansible/modules/network/aci/aci_intf_policy_fc.py\", \n      \"lib/ansible/modules/network/aci/aci_intf_policy_l2.py\", \n      \"lib/ansible/modules/network/aci/aci_intf_policy_lldp.py\", \n      \"lib/ansible/modules/network/aci/aci_intf_policy_mcp.py\", \n      \"lib/ansible/modules/network/aci/aci_intf_policy_port_channel.py\", \n      \"lib/ansible/modules/network/aci/aci_intf_policy_port_security.py\", \n      \"lib/ansible/modules/network/aci/aci_l3out_route_tag_policy.py\", \n      \"lib/ansible/modules/network/aci/aci_rest.py\", \n      \"lib/ansible/modules/network/aci/aci_taboo_contract.py\", \n      \"lib/ansible/modules/network/aci/aci_tenant.py\", \n      \"lib/ansible/modules/network/aci/aci_tenant_action_rule_profile.py\", \n      \"lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py\", \n      \"lib/ansible/modules/network/aci/aci_tenant_span_dst_group.py\", \n      \"lib/ansible/modules/network/aci/aci_tenant_span_src_group.py\", \n      \"lib/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py\", \n      \"lib/ansible/modules/network/aci/aci_vrf.py\", \n      \"lib/ansible/modules/network/aireos/__init__.py\", \n      \"lib/ansible/modules/network/aireos/aireos_command.py\", \n      \"lib/ansible/modules/network/aireos/aireos_config.py\", \n      \"lib/ansible/modules/network/aos/__init__.py\", \n      \"lib/ansible/modules/network/aos/aos_asn_pool.py\", \n      \"lib/ansible/modules/network/aos/aos_blueprint.py\", \n      \"lib/ansible/modules/network/aos/aos_blueprint_param.py\", \n      \"lib/ansible/modules/network/aos/aos_blueprint_virtnet.py\", \n      \"lib/ansible/modules/network/aos/aos_device.py\", \n      \"lib/ansible/modules/network/aos/aos_external_router.py\", \n      \"lib/ansible/modules/network/aos/aos_ip_pool.py\", \n      \"lib/ansible/modules/network/aos/aos_logical_device.py\", \n      \"lib/ansible/modules/network/aos/aos_logical_device_map.py\", \n      \"lib/ansible/modules/network/aos/aos_login.py\", \n      \"lib/ansible/modules/network/aos/aos_rack_type.py\", \n      \"lib/ansible/modules/network/aos/aos_template.py\", \n      \"lib/ansible/modules/network/aruba/__init__.py\", \n      \"lib/ansible/modules/network/aruba/aruba_command.py\", \n      \"lib/ansible/modules/network/aruba/aruba_config.py\", \n      \"lib/ansible/modules/network/asa/__init__.py\", \n      \"lib/ansible/modules/network/asa/asa_acl.py\", \n      \"lib/ansible/modules/network/asa/asa_command.py\", \n      \"lib/ansible/modules/network/asa/asa_config.py\", \n      \"lib/ansible/modules/network/avi/__init__.py\", \n      \"lib/ansible/modules/network/avi/avi_actiongroupconfig.py\", \n      \"lib/ansible/modules/network/avi/avi_alertconfig.py\", \n      \"lib/ansible/modules/network/avi/avi_alertemailconfig.py\", \n      \"lib/ansible/modules/network/avi/avi_alertscriptconfig.py\", \n      \"lib/ansible/modules/network/avi/avi_alertsyslogconfig.py\", \n      \"lib/ansible/modules/network/avi/avi_analyticsprofile.py\", \n      \"lib/ansible/modules/network/avi/avi_api_session.py\", \n      \"lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py\", \n      \"lib/ansible/modules/network/avi/avi_applicationprofile.py\", \n      \"lib/ansible/modules/network/avi/avi_authprofile.py\", \n      \"lib/ansible/modules/network/avi/avi_backup.py\", \n      \"lib/ansible/modules/network/avi/avi_backupconfiguration.py\", \n      \"lib/ansible/modules/network/avi/avi_certificatemanagementprofile.py\", \n      \"lib/ansible/modules/network/avi/avi_cloud.py\", \n      \"lib/ansible/modules/network/avi/avi_cloudconnectoruser.py\", \n      \"lib/ansible/modules/network/avi/avi_cloudproperties.py\", \n      \"lib/ansible/modules/network/avi/avi_cluster.py\", \n      \"lib/ansible/modules/network/avi/avi_controllerproperties.py\", \n      \"lib/ansible/modules/network/avi/avi_dnspolicy.py\", \n      \"lib/ansible/modules/network/avi/avi_gslb.py\", \n      \"lib/ansible/modules/network/avi/avi_gslbapplicationpersistenceprofile.py\", \n      \"lib/ansible/modules/network/avi/avi_gslbgeodbprofile.py\", \n      \"lib/ansible/modules/network/avi/avi_gslbhealthmonitor.py\", \n      \"lib/ansible/modules/network/avi/avi_gslbservice.py\", \n      \"lib/ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py\", \n      \"lib/ansible/modules/network/avi/avi_healthmonitor.py\", \n      \"lib/ansible/modules/network/avi/avi_httppolicyset.py\", \n      \"lib/ansible/modules/network/avi/avi_ipaddrgroup.py\", \n      \"lib/ansible/modules/network/avi/avi_ipamdnsproviderprofile.py\", \n      \"lib/ansible/modules/network/avi/avi_microservicegroup.py\", \n      \"lib/ansible/modules/network/avi/avi_network.py\", \n      \"lib/ansible/modules/network/avi/avi_networkprofile.py\", \n      \"lib/ansible/modules/network/avi/avi_networksecuritypolicy.py\", \n      \"lib/ansible/modules/network/avi/avi_pkiprofile.py\", \n      \"lib/ansible/modules/network/avi/avi_pool.py\", \n      \"lib/ansible/modules/network/avi/avi_poolgroup.py\", \n      \"lib/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py\", \n      \"lib/ansible/modules/network/avi/avi_prioritylabels.py\", \n      \"lib/ansible/modules/network/avi/avi_role.py\", \n      \"lib/ansible/modules/network/avi/avi_scheduler.py\", \n      \"lib/ansible/modules/network/avi/avi_seproperties.py\", \n      \"lib/ansible/modules/network/avi/avi_serverautoscalepolicy.py\", \n      \"lib/ansible/modules/network/avi/avi_serviceengine.py\", \n      \"lib/ansible/modules/network/avi/avi_serviceenginegroup.py\", \n      \"lib/ansible/modules/network/avi/avi_snmptrapprofile.py\", \n      \"lib/ansible/modules/network/avi/avi_sslkeyandcertificate.py\", \n      \"lib/ansible/modules/network/avi/avi_sslprofile.py\", \n      \"lib/ansible/modules/network/avi/avi_stringgroup.py\", \n      \"lib/ansible/modules/network/avi/avi_systemconfiguration.py\", \n      \"lib/ansible/modules/network/avi/avi_tenant.py\", \n      \"lib/ansible/modules/network/avi/avi_trafficcloneprofile.py\", \n      \"lib/ansible/modules/network/avi/avi_useraccountprofile.py\", \n      \"lib/ansible/modules/network/avi/avi_virtualservice.py\", \n      \"lib/ansible/modules/network/avi/avi_vrfcontext.py\", \n      \"lib/ansible/modules/network/avi/avi_vsdatascriptset.py\", \n      \"lib/ansible/modules/network/avi/avi_vsvip.py\", \n      \"lib/ansible/modules/network/avi/avi_webhook.py\", \n      \"lib/ansible/modules/network/bigswitch/__init__.py\", \n      \"lib/ansible/modules/network/bigswitch/bcf_switch.py\", \n      \"lib/ansible/modules/network/bigswitch/bigmon_chain.py\", \n      \"lib/ansible/modules/network/bigswitch/bigmon_policy.py\", \n      \"lib/ansible/modules/network/citrix/__init__.py\", \n      \"lib/ansible/modules/network/citrix/_netscaler.py\", \n      \"lib/ansible/modules/network/cloudengine/__init__.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_aaa_server.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_aaa_server_host.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_acl.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_acl_advance.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_acl_interface.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_bfd_global.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_bfd_session.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_bfd_view.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_bgp.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_bgp_af.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor_af.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_command.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_config.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_dldp.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_dldp_interface.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_eth_trunk.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_evpn_bd_vni.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp_rr.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_evpn_global.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_facts.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_file_copy.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_info_center_debug.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_info_center_global.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_info_center_log.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_info_center_trap.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_interface.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_interface_ospf.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_ip_interface.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_link_status.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_mlag_config.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_mlag_interface.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_mtu.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_netconf.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_netstream_aging.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_netstream_export.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_netstream_global.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_netstream_template.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_ntp.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_ntp_auth.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_ospf.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_ospf_vrf.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_reboot.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_rollback.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_sflow.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_snmp_community.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_snmp_contact.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_snmp_location.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_snmp_target_host.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_snmp_traps.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_snmp_user.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_startup.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_static_route.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_stp.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_switchport.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_vlan.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_vrf.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_vrf_af.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_vrf_interface.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_vrrp.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_vxlan_arp.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_vxlan_gateway.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_vxlan_global.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_vxlan_tunnel.py\", \n      \"lib/ansible/modules/network/cloudengine/ce_vxlan_vap.py\", \n      \"lib/ansible/modules/network/cloudvision/__init__.py\", \n      \"lib/ansible/modules/network/cloudvision/cv_server_provision.py\", \n      \"lib/ansible/modules/network/cumulus/__init__.py\", \n      \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n      \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n      \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n      \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n      \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n      \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n      \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n      \"lib/ansible/modules/network/cumulus/nclu.py\", \n      \"lib/ansible/modules/network/dellos10/__init__.py\", \n      \"lib/ansible/modules/network/dellos10/dellos10_command.py\", \n      \"lib/ansible/modules/network/dellos10/dellos10_config.py\", \n      \"lib/ansible/modules/network/dellos10/dellos10_facts.py\", \n      \"lib/ansible/modules/network/dellos6/__init__.py\", \n      \"lib/ansible/modules/network/dellos6/dellos6_command.py\", \n      \"lib/ansible/modules/network/dellos6/dellos6_config.py\", \n      \"lib/ansible/modules/network/dellos6/dellos6_facts.py\", \n      \"lib/ansible/modules/network/dellos9/__init__.py\", \n      \"lib/ansible/modules/network/dellos9/dellos9_command.py\", \n      \"lib/ansible/modules/network/dellos9/dellos9_config.py\", \n      \"lib/ansible/modules/network/dellos9/dellos9_facts.py\", \n      \"lib/ansible/modules/network/enos/__init__.py\", \n      \"lib/ansible/modules/network/eos/__init__.py\", \n      \"lib/ansible/modules/network/eos/eos_banner.py\", \n      \"lib/ansible/modules/network/eos/eos_command.py\", \n      \"lib/ansible/modules/network/eos/eos_config.py\", \n      \"lib/ansible/modules/network/eos/eos_eapi.py\", \n      \"lib/ansible/modules/network/eos/eos_facts.py\", \n      \"lib/ansible/modules/network/eos/eos_logging.py\", \n      \"lib/ansible/modules/network/eos/eos_system.py\", \n      \"lib/ansible/modules/network/eos/eos_user.py\", \n      \"lib/ansible/modules/network/eos/eos_vlan.py\", \n      \"lib/ansible/modules/network/eos/eos_vrf.py\", \n      \"lib/ansible/modules/network/f5/__init__.py\", \n      \"lib/ansible/modules/network/f5/bigip_asm_policy.py\", \n      \"lib/ansible/modules/network/f5/bigip_command.py\", \n      \"lib/ansible/modules/network/f5/bigip_config.py\", \n      \"lib/ansible/modules/network/f5/bigip_configsync_action.py\", \n      \"lib/ansible/modules/network/f5/bigip_configsync_actions.py\", \n      \"lib/ansible/modules/network/f5/bigip_device_dns.py\", \n      \"lib/ansible/modules/network/f5/bigip_device_ntp.py\", \n      \"lib/ansible/modules/network/f5/bigip_device_sshd.py\", \n      \"lib/ansible/modules/network/f5/bigip_facts.py\", \n      \"lib/ansible/modules/network/f5/bigip_gtm_datacenter.py\", \n      \"lib/ansible/modules/network/f5/bigip_gtm_facts.py\", \n      \"lib/ansible/modules/network/f5/bigip_gtm_pool.py\", \n      \"lib/ansible/modules/network/f5/bigip_gtm_virtual_server.py\", \n      \"lib/ansible/modules/network/f5/bigip_gtm_wide_ip.py\", \n      \"lib/ansible/modules/network/f5/bigip_hostname.py\", \n      \"lib/ansible/modules/network/f5/bigip_iapp_service.py\", \n      \"lib/ansible/modules/network/f5/bigip_iapp_template.py\", \n      \"lib/ansible/modules/network/f5/bigip_iapplx_package.py\", \n      \"lib/ansible/modules/network/f5/bigip_irule.py\", \n      \"lib/ansible/modules/network/f5/bigip_monitor_http.py\", \n      \"lib/ansible/modules/network/f5/bigip_monitor_https.py\", \n      \"lib/ansible/modules/network/f5/bigip_monitor_tcp.py\", \n      \"lib/ansible/modules/network/f5/bigip_monitor_tcp_echo.py\", \n      \"lib/ansible/modules/network/f5/bigip_monitor_tcp_half_open.py\", \n      \"lib/ansible/modules/network/f5/bigip_node.py\", \n      \"lib/ansible/modules/network/f5/bigip_partition.py\", \n      \"lib/ansible/modules/network/f5/bigip_policy.py\", \n      \"lib/ansible/modules/network/f5/bigip_pool.py\", \n      \"lib/ansible/modules/network/f5/bigip_pool_member.py\", \n      \"lib/ansible/modules/network/f5/bigip_provision.py\", \n      \"lib/ansible/modules/network/f5/bigip_qkview.py\", \n      \"lib/ansible/modules/network/f5/bigip_remote_syslog.py\", \n      \"lib/ansible/modules/network/f5/bigip_routedomain.py\", \n      \"lib/ansible/modules/network/f5/bigip_selfip.py\", \n      \"lib/ansible/modules/network/f5/bigip_snat_pool.py\", \n      \"lib/ansible/modules/network/f5/bigip_snmp.py\", \n      \"lib/ansible/modules/network/f5/bigip_snmp_trap.py\", \n      \"lib/ansible/modules/network/f5/bigip_ssl_certificate.py\", \n      \"lib/ansible/modules/network/f5/bigip_ssl_key.py\", \n      \"lib/ansible/modules/network/f5/bigip_sys_db.py\", \n      \"lib/ansible/modules/network/f5/bigip_sys_global.py\", \n      \"lib/ansible/modules/network/f5/bigip_ucs.py\", \n      \"lib/ansible/modules/network/f5/bigip_user.py\", \n      \"lib/ansible/modules/network/f5/bigip_virtual_address.py\", \n      \"lib/ansible/modules/network/f5/bigip_virtual_server.py\", \n      \"lib/ansible/modules/network/f5/bigip_vlan.py\", \n      \"lib/ansible/modules/network/f5/bigip_wait.py\", \n      \"lib/ansible/modules/network/fortios/__init__.py\", \n      \"lib/ansible/modules/network/fortios/fortios_address.py\", \n      \"lib/ansible/modules/network/fortios/fortios_config.py\", \n      \"lib/ansible/modules/network/fortios/fortios_ipv4_policy.py\", \n      \"lib/ansible/modules/network/illumos/__init__.py\", \n      \"lib/ansible/modules/network/illumos/dladm_etherstub.py\", \n      \"lib/ansible/modules/network/illumos/dladm_iptun.py\", \n      \"lib/ansible/modules/network/illumos/dladm_linkprop.py\", \n      \"lib/ansible/modules/network/illumos/dladm_vlan.py\", \n      \"lib/ansible/modules/network/illumos/dladm_vnic.py\", \n      \"lib/ansible/modules/network/illumos/flowadm.py\", \n      \"lib/ansible/modules/network/illumos/ipadm_addr.py\", \n      \"lib/ansible/modules/network/illumos/ipadm_addrprop.py\", \n      \"lib/ansible/modules/network/illumos/ipadm_if.py\", \n      \"lib/ansible/modules/network/illumos/ipadm_ifprop.py\", \n      \"lib/ansible/modules/network/illumos/ipadm_prop.py\", \n      \"lib/ansible/modules/network/interface/__init__.py\", \n      \"lib/ansible/modules/network/interface/net_interface.py\", \n      \"lib/ansible/modules/network/interface/net_linkagg.py\", \n      \"lib/ansible/modules/network/interface/net_lldp_interface.py\", \n      \"lib/ansible/modules/network/ios/__init__.py\", \n      \"lib/ansible/modules/network/ios/ios_banner.py\", \n      \"lib/ansible/modules/network/ios/ios_command.py\", \n      \"lib/ansible/modules/network/ios/ios_config.py\", \n      \"lib/ansible/modules/network/ios/ios_facts.py\", \n      \"lib/ansible/modules/network/ios/ios_interface.py\", \n      \"lib/ansible/modules/network/ios/ios_logging.py\", \n      \"lib/ansible/modules/network/ios/ios_ping.py\", \n      \"lib/ansible/modules/network/ios/ios_static_route.py\", \n      \"lib/ansible/modules/network/ios/ios_system.py\", \n      \"lib/ansible/modules/network/ios/ios_user.py\", \n      \"lib/ansible/modules/network/ios/ios_vrf.py\", \n      \"lib/ansible/modules/network/iosxr/__init__.py\", \n      \"lib/ansible/modules/network/iosxr/iosxr_banner.py\", \n      \"lib/ansible/modules/network/iosxr/iosxr_command.py\", \n      \"lib/ansible/modules/network/iosxr/iosxr_config.py\", \n      \"lib/ansible/modules/network/iosxr/iosxr_facts.py\", \n      \"lib/ansible/modules/network/iosxr/iosxr_interface.py\", \n      \"lib/ansible/modules/network/iosxr/iosxr_logging.py\", \n      \"lib/ansible/modules/network/iosxr/iosxr_netconf.py\", \n      \"lib/ansible/modules/network/iosxr/iosxr_system.py\", \n      \"lib/ansible/modules/network/iosxr/iosxr_user.py\", \n      \"lib/ansible/modules/network/ironware/__init__.py\", \n      \"lib/ansible/modules/network/ironware/ironware_command.py\", \n      \"lib/ansible/modules/network/junos/__init__.py\", \n      \"lib/ansible/modules/network/junos/junos_banner.py\", \n      \"lib/ansible/modules/network/junos/junos_command.py\", \n      \"lib/ansible/modules/network/junos/junos_config.py\", \n      \"lib/ansible/modules/network/junos/junos_facts.py\", \n      \"lib/ansible/modules/network/junos/junos_interface.py\", \n      \"lib/ansible/modules/network/junos/junos_l3_interface.py\", \n      \"lib/ansible/modules/network/junos/junos_linkagg.py\", \n      \"lib/ansible/modules/network/junos/junos_lldp.py\", \n      \"lib/ansible/modules/network/junos/junos_lldp_interface.py\", \n      \"lib/ansible/modules/network/junos/junos_logging.py\", \n      \"lib/ansible/modules/network/junos/junos_netconf.py\", \n      \"lib/ansible/modules/network/junos/junos_package.py\", \n      \"lib/ansible/modules/network/junos/junos_rpc.py\", \n      \"lib/ansible/modules/network/junos/junos_static_route.py\", \n      \"lib/ansible/modules/network/junos/junos_system.py\", \n      \"lib/ansible/modules/network/junos/junos_user.py\", \n      \"lib/ansible/modules/network/junos/junos_vlan.py\", \n      \"lib/ansible/modules/network/junos/junos_vrf.py\", \n      \"lib/ansible/modules/network/layer2/__init__.py\", \n      \"lib/ansible/modules/network/layer2/net_l2_interface.py\", \n      \"lib/ansible/modules/network/layer2/net_vlan.py\", \n      \"lib/ansible/modules/network/layer3/__init__.py\", \n      \"lib/ansible/modules/network/layer3/net_l3_interface.py\", \n      \"lib/ansible/modules/network/layer3/net_vrf.py\", \n      \"lib/ansible/modules/network/lenovo/__init__.py\", \n      \"lib/ansible/modules/network/lenovo/cnos_backup.py\", \n      \"lib/ansible/modules/network/lenovo/cnos_bgp.py\", \n      \"lib/ansible/modules/network/lenovo/cnos_command.py\", \n      \"lib/ansible/modules/network/lenovo/cnos_conditional_command.py\", \n      \"lib/ansible/modules/network/lenovo/cnos_conditional_template.py\", \n      \"lib/ansible/modules/network/lenovo/cnos_factory.py\", \n      \"lib/ansible/modules/network/lenovo/cnos_facts.py\", \n      \"lib/ansible/modules/network/lenovo/cnos_image.py\", \n      \"lib/ansible/modules/network/lenovo/cnos_interface.py\", \n      \"lib/ansible/modules/network/lenovo/cnos_portchannel.py\", \n      \"lib/ansible/modules/network/lenovo/cnos_reload.py\", \n      \"lib/ansible/modules/network/lenovo/cnos_rollback.py\", \n      \"lib/ansible/modules/network/lenovo/cnos_save.py\", \n      \"lib/ansible/modules/network/lenovo/cnos_showrun.py\", \n      \"lib/ansible/modules/network/lenovo/cnos_template.py\", \n      \"lib/ansible/modules/network/lenovo/cnos_vlag.py\", \n      \"lib/ansible/modules/network/lenovo/cnos_vlan.py\", \n      \"lib/ansible/modules/network/netconf/__init__.py\", \n      \"lib/ansible/modules/network/netconf/netconf_config.py\", \n      \"lib/ansible/modules/network/netscaler/__init__.py\", \n      \"lib/ansible/modules/network/netscaler/netscaler_cs_action.py\", \n      \"lib/ansible/modules/network/netscaler/netscaler_cs_policy.py\", \n      \"lib/ansible/modules/network/netscaler/netscaler_cs_vserver.py\", \n      \"lib/ansible/modules/network/netscaler/netscaler_gslb_service.py\", \n      \"lib/ansible/modules/network/netscaler/netscaler_gslb_site.py\", \n      \"lib/ansible/modules/network/netscaler/netscaler_gslb_vserver.py\", \n      \"lib/ansible/modules/network/netscaler/netscaler_lb_monitor.py\", \n      \"lib/ansible/modules/network/netscaler/netscaler_lb_vserver.py\", \n      \"lib/ansible/modules/network/netscaler/netscaler_save_config.py\", \n      \"lib/ansible/modules/network/netscaler/netscaler_server.py\", \n      \"lib/ansible/modules/network/netscaler/netscaler_service.py\", \n      \"lib/ansible/modules/network/netscaler/netscaler_servicegroup.py\", \n      \"lib/ansible/modules/network/netscaler/netscaler_ssl_certkey.py\", \n      \"lib/ansible/modules/network/netvisor/__init__.py\", \n      \"lib/ansible/modules/network/netvisor/pn_cluster.py\", \n      \"lib/ansible/modules/network/netvisor/pn_ospf.py\", \n      \"lib/ansible/modules/network/netvisor/pn_ospfarea.py\", \n      \"lib/ansible/modules/network/netvisor/pn_show.py\", \n      \"lib/ansible/modules/network/netvisor/pn_trunk.py\", \n      \"lib/ansible/modules/network/netvisor/pn_vlag.py\", \n      \"lib/ansible/modules/network/netvisor/pn_vlan.py\", \n      \"lib/ansible/modules/network/netvisor/pn_vrouter.py\", \n      \"lib/ansible/modules/network/netvisor/pn_vrouterbgp.py\", \n      \"lib/ansible/modules/network/netvisor/pn_vrouterif.py\", \n      \"lib/ansible/modules/network/netvisor/pn_vrouterlbif.py\", \n      \"lib/ansible/modules/network/nuage/__init__.py\", \n      \"lib/ansible/modules/network/nuage/nuage_vspk.py\", \n      \"lib/ansible/modules/network/nxos/__init__.py\", \n      \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n      \"lib/ansible/modules/network/nxos/nxos_aaa_server.py\", \n      \"lib/ansible/modules/network/nxos/nxos_aaa_server_host.py\", \n      \"lib/ansible/modules/network/nxos/nxos_acl.py\", \n      \"lib/ansible/modules/network/nxos/nxos_acl_interface.py\", \n      \"lib/ansible/modules/network/nxos/nxos_banner.py\", \n      \"lib/ansible/modules/network/nxos/nxos_bgp.py\", \n      \"lib/ansible/modules/network/nxos/nxos_bgp_af.py\", \n      \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor.py\", \n      \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor_af.py\", \n      \"lib/ansible/modules/network/nxos/nxos_command.py\", \n      \"lib/ansible/modules/network/nxos/nxos_config.py\", \n      \"lib/ansible/modules/network/nxos/nxos_evpn_global.py\", \n      \"lib/ansible/modules/network/nxos/nxos_evpn_vni.py\", \n      \"lib/ansible/modules/network/nxos/nxos_facts.py\", \n      \"lib/ansible/modules/network/nxos/nxos_feature.py\", \n      \"lib/ansible/modules/network/nxos/nxos_file_copy.py\", \n      \"lib/ansible/modules/network/nxos/nxos_gir.py\", \n      \"lib/ansible/modules/network/nxos/nxos_gir_profile_management.py\", \n      \"lib/ansible/modules/network/nxos/nxos_hsrp.py\", \n      \"lib/ansible/modules/network/nxos/nxos_igmp.py\", \n      \"lib/ansible/modules/network/nxos/nxos_igmp_interface.py\", \n      \"lib/ansible/modules/network/nxos/nxos_igmp_snooping.py\", \n      \"lib/ansible/modules/network/nxos/nxos_install_os.py\", \n      \"lib/ansible/modules/network/nxos/nxos_interface.py\", \n      \"lib/ansible/modules/network/nxos/nxos_interface_ospf.py\", \n      \"lib/ansible/modules/network/nxos/nxos_ip_interface.py\", \n      \"lib/ansible/modules/network/nxos/nxos_logging.py\", \n      \"lib/ansible/modules/network/nxos/nxos_ntp.py\", \n      \"lib/ansible/modules/network/nxos/nxos_ntp_auth.py\", \n      \"lib/ansible/modules/network/nxos/nxos_ntp_options.py\", \n      \"lib/ansible/modules/network/nxos/nxos_nxapi.py\", \n      \"lib/ansible/modules/network/nxos/nxos_ospf.py\", \n      \"lib/ansible/modules/network/nxos/nxos_ospf_vrf.py\", \n      \"lib/ansible/modules/network/nxos/nxos_overlay_global.py\", \n      \"lib/ansible/modules/network/nxos/nxos_pim.py\", \n      \"lib/ansible/modules/network/nxos/nxos_pim_interface.py\", \n      \"lib/ansible/modules/network/nxos/nxos_pim_rp_address.py\", \n      \"lib/ansible/modules/network/nxos/nxos_ping.py\", \n      \"lib/ansible/modules/network/nxos/nxos_portchannel.py\", \n      \"lib/ansible/modules/network/nxos/nxos_reboot.py\", \n      \"lib/ansible/modules/network/nxos/nxos_rollback.py\", \n      \"lib/ansible/modules/network/nxos/nxos_smu.py\", \n      \"lib/ansible/modules/network/nxos/nxos_snapshot.py\", \n      \"lib/ansible/modules/network/nxos/nxos_snmp_community.py\", \n      \"lib/ansible/modules/network/nxos/nxos_snmp_contact.py\", \n      \"lib/ansible/modules/network/nxos/nxos_snmp_host.py\", \n      \"lib/ansible/modules/network/nxos/nxos_snmp_location.py\", \n      \"lib/ansible/modules/network/nxos/nxos_snmp_traps.py\", \n      \"lib/ansible/modules/network/nxos/nxos_snmp_user.py\", \n      \"lib/ansible/modules/network/nxos/nxos_static_route.py\", \n      \"lib/ansible/modules/network/nxos/nxos_switchport.py\", \n      \"lib/ansible/modules/network/nxos/nxos_system.py\", \n      \"lib/ansible/modules/network/nxos/nxos_udld.py\", \n      \"lib/ansible/modules/network/nxos/nxos_udld_interface.py\", \n      \"lib/ansible/modules/network/nxos/nxos_user.py\", \n      \"lib/ansible/modules/network/nxos/nxos_vlan.py\", \n      \"lib/ansible/modules/network/nxos/nxos_vpc.py\", \n      \"lib/ansible/modules/network/nxos/nxos_vpc_interface.py\", \n      \"lib/ansible/modules/network/nxos/nxos_vrf.py\", \n      \"lib/ansible/modules/network/nxos/nxos_vrf_af.py\", \n      \"lib/ansible/modules/network/nxos/nxos_vrf_interface.py\", \n      \"lib/ansible/modules/network/nxos/nxos_vrrp.py\", \n      \"lib/ansible/modules/network/nxos/nxos_vtp_domain.py\", \n      \"lib/ansible/modules/network/nxos/nxos_vtp_password.py\", \n      \"lib/ansible/modules/network/nxos/nxos_vtp_version.py\", \n      \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep.py\", \n      \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\", \n      \"lib/ansible/modules/network/ordnance/__init__.py\", \n      \"lib/ansible/modules/network/ordnance/ordnance_config.py\", \n      \"lib/ansible/modules/network/ordnance/ordnance_facts.py\", \n      \"lib/ansible/modules/network/ovs/__init__.py\", \n      \"lib/ansible/modules/network/ovs/openvswitch_bridge.py\", \n      \"lib/ansible/modules/network/ovs/openvswitch_db.py\", \n      \"lib/ansible/modules/network/ovs/openvswitch_port.py\", \n      \"lib/ansible/modules/network/panos/__init__.py\", \n      \"lib/ansible/modules/network/panos/panos_admin.py\", \n      \"lib/ansible/modules/network/panos/panos_admpwd.py\", \n      \"lib/ansible/modules/network/panos/panos_cert_gen_ssh.py\", \n      \"lib/ansible/modules/network/panos/panos_check.py\", \n      \"lib/ansible/modules/network/panos/panos_commit.py\", \n      \"lib/ansible/modules/network/panos/panos_dag.py\", \n      \"lib/ansible/modules/network/panos/panos_import.py\", \n      \"lib/ansible/modules/network/panos/panos_interface.py\", \n      \"lib/ansible/modules/network/panos/panos_lic.py\", \n      \"lib/ansible/modules/network/panos/panos_loadcfg.py\", \n      \"lib/ansible/modules/network/panos/panos_mgtconfig.py\", \n      \"lib/ansible/modules/network/panos/panos_nat_policy.py\", \n      \"lib/ansible/modules/network/panos/panos_nat_rule.py\", \n      \"lib/ansible/modules/network/panos/panos_object.py\", \n      \"lib/ansible/modules/network/panos/panos_pg.py\", \n      \"lib/ansible/modules/network/panos/panos_restart.py\", \n      \"lib/ansible/modules/network/panos/panos_sag.py\", \n      \"lib/ansible/modules/network/panos/panos_security_policy.py\", \n      \"lib/ansible/modules/network/panos/panos_security_rule.py\", \n      \"lib/ansible/modules/network/protocol/__init__.py\", \n      \"lib/ansible/modules/network/protocol/net_lldp.py\", \n      \"lib/ansible/modules/network/radware/__init__.py\", \n      \"lib/ansible/modules/network/radware/vdirect_file.py\", \n      \"lib/ansible/modules/network/routing/__init__.py\", \n      \"lib/ansible/modules/network/routing/net_static_route.py\", \n      \"lib/ansible/modules/network/sros/__init__.py\", \n      \"lib/ansible/modules/network/sros/sros_command.py\", \n      \"lib/ansible/modules/network/sros/sros_config.py\", \n      \"lib/ansible/modules/network/sros/sros_rollback.py\", \n      \"lib/ansible/modules/network/system/__init__.py\", \n      \"lib/ansible/modules/network/system/net_banner.py\", \n      \"lib/ansible/modules/network/system/net_logging.py\", \n      \"lib/ansible/modules/network/system/net_ping.py\", \n      \"lib/ansible/modules/network/system/net_system.py\", \n      \"lib/ansible/modules/network/system/net_user.py\", \n      \"lib/ansible/modules/network/vyos/__init__.py\", \n      \"lib/ansible/modules/network/vyos/vyos_banner.py\", \n      \"lib/ansible/modules/network/vyos/vyos_command.py\", \n      \"lib/ansible/modules/network/vyos/vyos_config.py\", \n      \"lib/ansible/modules/network/vyos/vyos_facts.py\", \n      \"lib/ansible/modules/network/vyos/vyos_interface.py\", \n      \"lib/ansible/modules/network/vyos/vyos_l3_interface.py\", \n      \"lib/ansible/modules/network/vyos/vyos_linkagg.py\", \n      \"lib/ansible/modules/network/vyos/vyos_lldp.py\", \n      \"lib/ansible/modules/network/vyos/vyos_lldp_interface.py\", \n      \"lib/ansible/modules/network/vyos/vyos_logging.py\", \n      \"lib/ansible/modules/network/vyos/vyos_static_route.py\", \n      \"lib/ansible/modules/network/vyos/vyos_system.py\", \n      \"lib/ansible/modules/network/vyos/vyos_user.py\", \n      \"lib/ansible/modules/network/vyos/vyos_vlan.py\", \n      \"test/units/modules/network/__init__.py\", \n      \"test/units/modules/network/aireos/__init__.py\", \n      \"test/units/modules/network/aireos/aireos_module.py\", \n      \"test/units/modules/network/aireos/fixtures/aireos_config_config.cfg\", \n      \"test/units/modules/network/aireos/fixtures/aireos_config_src.cfg\", \n      \"test/units/modules/network/aireos/fixtures/show_sysinfo\", \n      \"test/units/modules/network/aireos/test_aireos_command.py\", \n      \"test/units/modules/network/aireos/test_aireos_config.py\", \n      \"test/units/modules/network/aruba/__init__.py\", \n      \"test/units/modules/network/aruba/aruba_module.py\", \n      \"test/units/modules/network/aruba/fixtures/aruba_config_config.cfg\", \n      \"test/units/modules/network/aruba/fixtures/aruba_config_defaults.cfg\", \n      \"test/units/modules/network/aruba/fixtures/aruba_config_src.cfg\", \n      \"test/units/modules/network/aruba/fixtures/show_version\", \n      \"test/units/modules/network/aruba/test_aruba_command.py\", \n      \"test/units/modules/network/aruba/test_aruba_config.py\", \n      \"test/units/modules/network/basics/__init__.py\", \n      \"test/units/modules/network/cloudvision/__init__.py\", \n      \"test/units/modules/network/cloudvision/test_cv_server_provision.py\", \n      \"test/units/modules/network/cumulus/__init__.py\", \n      \"test/units/modules/network/cumulus/test_nclu.py\", \n      \"test/units/modules/network/eos/__init__.py\", \n      \"test/units/modules/network/eos/eos_module.py\", \n      \"test/units/modules/network/eos/fixtures/eos_banner_show_banner.txt\", \n      \"test/units/modules/network/eos/fixtures/eos_command_show_version.txt\", \n      \"test/units/modules/network/eos/fixtures/eos_config_candidate.cfg\", \n      \"test/units/modules/network/eos/fixtures/eos_config_config.cfg\", \n      \"test/units/modules/network/eos/fixtures/eos_config_config_updated.cfg\", \n      \"test/units/modules/network/eos/fixtures/eos_eapi_show_mgmt.json\", \n      \"test/units/modules/network/eos/fixtures/eos_eapi_show_mgmt_unconfigured.json\", \n      \"test/units/modules/network/eos/fixtures/eos_eapi_show_vrf.text\", \n      \"test/units/modules/network/eos/fixtures/eos_system_config.cfg\", \n      \"test/units/modules/network/eos/fixtures/eos_user_config.cfg\", \n      \"test/units/modules/network/eos/test_eos_banner.py\", \n      \"test/units/modules/network/eos/test_eos_command.py\", \n      \"test/units/modules/network/eos/test_eos_config.py\", \n      \"test/units/modules/network/eos/test_eos_eapi.py\", \n      \"test/units/modules/network/eos/test_eos_system.py\", \n      \"test/units/modules/network/eos/test_eos_user.py\", \n      \"test/units/modules/network/f5/__init__.py\", \n      \"test/units/modules/network/f5/fixtures/MyApp-0.1.0-0001.noarch.rpm\", \n      \"test/units/modules/network/f5/fixtures/basic-iapp.tmpl\", \n      \"test/units/modules/network/f5/fixtures/cert1.crt\", \n      \"test/units/modules/network/f5/fixtures/cert1.key\", \n      \"test/units/modules/network/f5/fixtures/cert2.crt\", \n      \"test/units/modules/network/f5/fixtures/cert2.key\", \n      \"test/units/modules/network/f5/fixtures/chain1.crt\", \n      \"test/units/modules/network/f5/fixtures/create_gtm_irule.tcl\", \n      \"test/units/modules/network/f5/fixtures/create_iapp_service_parameters_f5_http.json\", \n      \"test/units/modules/network/f5/fixtures/create_iapp_template.iapp\", \n      \"test/units/modules/network/f5/fixtures/create_insecure_cert1.crt\", \n      \"test/units/modules/network/f5/fixtures/create_insecure_key1.key\", \n      \"test/units/modules/network/f5/fixtures/create_ltm_irule.tcl\", \n      \"test/units/modules/network/f5/fixtures/load_asm_policy_active.json\", \n      \"test/units/modules/network/f5/fixtures/load_asm_policy_inactive.json\", \n      \"test/units/modules/network/f5/fixtures/load_auth_user_no_pass.json\", \n      \"test/units/modules/network/f5/fixtures/load_auth_user_with_pass.json\", \n      \"test/units/modules/network/f5/fixtures/load_gtm_irules.json\", \n      \"test/units/modules/network/f5/fixtures/load_gtm_pool_a_collection.json\", \n      \"test/units/modules/network/f5/fixtures/load_gtm_pool_a_default.json\", \n      \"test/units/modules/network/f5/fixtures/load_gtm_pool_a_example_stats.json\", \n      \"test/units/modules/network/f5/fixtures/load_gtm_pool_untyped_default.json\", \n      \"test/units/modules/network/f5/fixtures/load_ltm_irules.json\", \n      \"test/units/modules/network/f5/fixtures/load_ltm_monitor_http.json\", \n      \"test/units/modules/network/f5/fixtures/load_ltm_monitor_https.json\", \n      \"test/units/modules/network/f5/fixtures/load_ltm_monitor_tcp.json\", \n      \"test/units/modules/network/f5/fixtures/load_ltm_monitor_tcp_echo.json\", \n      \"test/units/modules/network/f5/fixtures/load_ltm_monitor_tcp_half_open.json\", \n      \"test/units/modules/network/f5/fixtures/load_ltm_pool.json\", \n      \"test/units/modules/network/f5/fixtures/load_ltm_virtual_address_default.json\", \n      \"test/units/modules/network/f5/fixtures/load_sys_application_template_w_new_checksum.json\", \n      \"test/units/modules/network/f5/fixtures/load_sys_application_template_w_old_checksum.json\", \n      \"test/units/modules/network/f5/fixtures/load_tm_auth_partition.json\", \n      \"test/units/modules/network/f5/fixtures/load_tm_net_self.json\", \n      \"test/units/modules/network/f5/fixtures/load_tm_sys_syslog.json\", \n      \"test/units/modules/network/f5/fixtures/pool_members_subcollection.json\", \n      \"test/units/modules/network/f5/fixtures/update_iapp_service_parameters_f5_http.json\", \n      \"test/units/modules/network/f5/test_bigip_asm_policy.py\", \n      \"test/units/modules/network/f5/test_bigip_command.py\", \n      \"test/units/modules/network/f5/test_bigip_config.py\", \n      \"test/units/modules/network/f5/test_bigip_configsync_action.py\", \n      \"test/units/modules/network/f5/test_bigip_configsync_actions.py\", \n      \"test/units/modules/network/f5/test_bigip_device_dns.py\", \n      \"test/units/modules/network/f5/test_bigip_gtm_facts.py\", \n      \"test/units/modules/network/f5/test_bigip_gtm_pool.py\", \n      \"test/units/modules/network/f5/test_bigip_gtm_wide_ip.py\", \n      \"test/units/modules/network/f5/test_bigip_hostname.py\", \n      \"test/units/modules/network/f5/test_bigip_iapp_service.py\", \n      \"test/units/modules/network/f5/test_bigip_iapp_template.py\", \n      \"test/units/modules/network/f5/test_bigip_iapplx_package.py\", \n      \"test/units/modules/network/f5/test_bigip_irule.py\", \n      \"test/units/modules/network/f5/test_bigip_monitor_http.py\", \n      \"test/units/modules/network/f5/test_bigip_monitor_https.py\", \n      \"test/units/modules/network/f5/test_bigip_monitor_tcp.py\", \n      \"test/units/modules/network/f5/test_bigip_monitor_tcp_echo.py\", \n      \"test/units/modules/network/f5/test_bigip_monitor_tcp_half_open.py\", \n      \"test/units/modules/network/f5/test_bigip_partition.py\", \n      \"test/units/modules/network/f5/test_bigip_policy.py\", \n      \"test/units/modules/network/f5/test_bigip_pool.py\", \n      \"test/units/modules/network/f5/test_bigip_provision.py\", \n      \"test/units/modules/network/f5/test_bigip_qkview.py\", \n      \"test/units/modules/network/f5/test_bigip_remote_syslog.py\", \n      \"test/units/modules/network/f5/test_bigip_selfip.py\", \n      \"test/units/modules/network/f5/test_bigip_snmp.py\", \n      \"test/units/modules/network/f5/test_bigip_snmp_trap.py\", \n      \"test/units/modules/network/f5/test_bigip_ssl_certificate.py\", \n      \"test/units/modules/network/f5/test_bigip_ssl_key.py\", \n      \"test/units/modules/network/f5/test_bigip_ucs.py\", \n      \"test/units/modules/network/f5/test_bigip_user.py\", \n      \"test/units/modules/network/f5/test_bigip_virtual_address.py\", \n      \"test/units/modules/network/f5/test_bigip_wait.py\", \n      \"test/units/modules/network/ios/__init__.py\", \n      \"test/units/modules/network/ios/fixtures/ios_banner_show_banner.txt\", \n      \"test/units/modules/network/ios/fixtures/ios_config_config.cfg\", \n      \"test/units/modules/network/ios/fixtures/ios_config_defaults.cfg\", \n      \"test/units/modules/network/ios/fixtures/ios_config_src.cfg\", \n      \"test/units/modules/network/ios/fixtures/ios_logging_config.cfg\", \n      \"test/units/modules/network/ios/fixtures/ios_ping_ping_10.255.255.250_repeat_2\", \n      \"test/units/modules/network/ios/fixtures/ios_ping_ping_8.8.8.8_repeat_2\", \n      \"test/units/modules/network/ios/fixtures/ios_system_config.cfg\", \n      \"test/units/modules/network/ios/fixtures/ios_user_config.cfg\", \n      \"test/units/modules/network/ios/fixtures/ios_vrf_config.cfg\", \n      \"test/units/modules/network/ios/fixtures/show_version\", \n      \"test/units/modules/network/ios/ios_module.py\", \n      \"test/units/modules/network/ios/test_ios_banner.py\", \n      \"test/units/modules/network/ios/test_ios_command.py\", \n      \"test/units/modules/network/ios/test_ios_config.py\", \n      \"test/units/modules/network/ios/test_ios_logging.py\", \n      \"test/units/modules/network/ios/test_ios_ping.py\", \n      \"test/units/modules/network/ios/test_ios_system.py\", \n      \"test/units/modules/network/ios/test_ios_user.py\", \n      \"test/units/modules/network/ios/test_ios_vrf.py\", \n      \"test/units/modules/network/iosxr/__init__.py\", \n      \"test/units/modules/network/iosxr/fixtures/dir_7all\", \n      \"test/units/modules/network/iosxr/fixtures/iosxr_config_config.cfg\", \n      \"test/units/modules/network/iosxr/fixtures/iosxr_config_src.cfg\", \n      \"test/units/modules/network/iosxr/fixtures/iosxr_system_config.cfg\", \n      \"test/units/modules/network/iosxr/fixtures/iosxr_user_config.cfg\", \n      \"test/units/modules/network/iosxr/fixtures/show_interfaces\", \n      \"test/units/modules/network/iosxr/fixtures/show_ipv6_interface\", \n      \"test/units/modules/network/iosxr/fixtures/show_lldp_neighbors_detail\", \n      \"test/units/modules/network/iosxr/fixtures/show_memory_summary\", \n      \"test/units/modules/network/iosxr/fixtures/show_running-config\", \n      \"test/units/modules/network/iosxr/fixtures/show_version_brief\", \n      \"test/units/modules/network/iosxr/iosxr_module.py\", \n      \"test/units/modules/network/iosxr/test_iosxr_command.py\", \n      \"test/units/modules/network/iosxr/test_iosxr_config.py\", \n      \"test/units/modules/network/iosxr/test_iosxr_facts.py\", \n      \"test/units/modules/network/iosxr/test_iosxr_netconf.py\", \n      \"test/units/modules/network/iosxr/test_iosxr_system.py\", \n      \"test/units/modules/network/iosxr/test_iosxr_user.py\", \n      \"test/units/modules/network/ironware/__init__.py\", \n      \"test/units/modules/network/ironware/fixtures/show_version\", \n      \"test/units/modules/network/ironware/ironware_module.py\", \n      \"test/units/modules/network/ironware/test_ironware_command.py\", \n      \"test/units/modules/network/junos/__init__.py\", \n      \"test/units/modules/network/junos/fixtures/get_configuration_rpc_reply.txt\", \n      \"test/units/modules/network/junos/fixtures/get_configuration_rpc_reply_diff.txt\", \n      \"test/units/modules/network/junos/fixtures/get_configuration_rpc_reply_json.txt\", \n      \"test/units/modules/network/junos/fixtures/junos_config.json\", \n      \"test/units/modules/network/junos/fixtures/junos_config.set\", \n      \"test/units/modules/network/junos/fixtures/junos_config.text\", \n      \"test/units/modules/network/junos/fixtures/junos_config.xml\", \n      \"test/units/modules/network/junos/fixtures/show_chassis_hardware_xml.txt\", \n      \"test/units/modules/network/junos/fixtures/show_chassis_routing-engine_xml.txt\", \n      \"test/units/modules/network/junos/fixtures/show_interfaces_details_xml.txt\", \n      \"test/units/modules/network/junos/fixtures/show_system_memory_xml.txt\", \n      \"test/units/modules/network/junos/fixtures/show_system_storage_xml.txt\", \n      \"test/units/modules/network/junos/fixtures/show_version_json.txt\", \n      \"test/units/modules/network/junos/fixtures/show_version_text.txt\", \n      \"test/units/modules/network/junos/fixtures/show_version_xml.txt\", \n      \"test/units/modules/network/junos/junos_module.py\", \n      \"test/units/modules/network/junos/test_junos_command.py\", \n      \"test/units/modules/network/junos/test_junos_config.py\", \n      \"test/units/modules/network/junos/test_junos_facts.py\", \n      \"test/units/modules/network/junos/test_junos_netconf.py\", \n      \"test/units/modules/network/junos/test_junos_package.py\", \n      \"test/units/modules/network/junos/test_junos_rpc.py\", \n      \"test/units/modules/network/netscaler/__init__.py\", \n      \"test/units/modules/network/netscaler/netscaler_module.py\", \n      \"test/units/modules/network/netscaler/test_netscaler_cs_action.py\", \n      \"test/units/modules/network/netscaler/test_netscaler_cs_policy.py\", \n      \"test/units/modules/network/netscaler/test_netscaler_cs_vserver.py\", \n      \"test/units/modules/network/netscaler/test_netscaler_gslb_service.py\", \n      \"test/units/modules/network/netscaler/test_netscaler_gslb_site.py\", \n      \"test/units/modules/network/netscaler/test_netscaler_gslb_vserver.py\", \n      \"test/units/modules/network/netscaler/test_netscaler_lb_monitor.py\", \n      \"test/units/modules/network/netscaler/test_netscaler_lb_vserver.py\", \n      \"test/units/modules/network/netscaler/test_netscaler_module_utils.py\", \n      \"test/units/modules/network/netscaler/test_netscaler_save_config.py\", \n      \"test/units/modules/network/netscaler/test_netscaler_server.py\", \n      \"test/units/modules/network/netscaler/test_netscaler_service.py\", \n      \"test/units/modules/network/netscaler/test_netscaler_servicegroup.py\", \n      \"test/units/modules/network/netscaler/test_netscaler_ssl_certkey.py\", \n      \"test/units/modules/network/nuage/__init__.py\", \n      \"test/units/modules/network/nuage/nuage_module.py\", \n      \"test/units/modules/network/nuage/test_nuage_vspk.py\", \n      \"test/units/modules/network/nxos/__init__.py\", \n      \"test/units/modules/network/nxos/fixtures/nxos_acl/show_ip_access-list.txt\", \n      \"test/units/modules/network/nxos/fixtures/nxos_acl_interface/show_running-config_aclmgr.txt\", \n      \"test/units/modules/network/nxos/fixtures/nxos_bgp/config.cfg\", \n      \"test/units/modules/network/nxos/fixtures/nxos_command/show_version.txt\", \n      \"test/units/modules/network/nxos/fixtures/nxos_config/candidate.cfg\", \n      \"test/units/modules/network/nxos/fixtures/nxos_config/config.cfg\", \n      \"test/units/modules/network/nxos/fixtures/nxos_evpn_global/configured.cfg\", \n      \"test/units/modules/network/nxos/fixtures/nxos_evpn_global/unconfigured.cfg\", \n      \"test/units/modules/network/nxos/fixtures/nxos_evpn_vni_config.cfg\", \n      \"test/units/modules/network/nxos/fixtures/nxos_feature/show_feature.txt\", \n      \"test/units/modules/network/nxos/fixtures/nxos_interface_ospf/config.cfg\", \n      \"test/units/modules/network/nxos/fixtures/nxos_ip_interface.cfg\", \n      \"test/units/modules/network/nxos/fixtures/nxos_nxapi/n3k/show_run_all\", \n      \"test/units/modules/network/nxos/fixtures/nxos_nxapi/n7k/show_run_all\", \n      \"test/units/modules/network/nxos/fixtures/nxos_overlay_global_config.cfg\", \n      \"test/units/modules/network/nxos/fixtures/nxos_pim/config.cfg\", \n      \"test/units/modules/network/nxos/fixtures/nxos_pim_interface/config.cfg\", \n      \"test/units/modules/network/nxos/fixtures/nxos_pim_interface/sh_run_interface_eth2_1_all\", \n      \"test/units/modules/network/nxos/fixtures/nxos_pim_interface/show_interface_eth2_1\", \n      \"test/units/modules/network/nxos/fixtures/nxos_pim_interface/show_ip_pim_interface_eth2_1\", \n      \"test/units/modules/network/nxos/fixtures/nxos_pim_rp_address/config.cfg\", \n      \"test/units/modules/network/nxos/fixtures/nxos_static_route.cfg\", \n      \"test/units/modules/network/nxos/fixtures/nxos_switchport/show_interface_ethernet_switchport\", \n      \"test/units/modules/network/nxos/fixtures/nxos_switchport/show_vlan\", \n      \"test/units/modules/network/nxos/fixtures/nxos_system_config.cfg\", \n      \"test/units/modules/network/nxos/fixtures/nxos_vlan/show_vlan.txt\", \n      \"test/units/modules/network/nxos/fixtures/nxos_vlan/show_vlan_id_1.txt\", \n      \"test/units/modules/network/nxos/fixtures/nxos_vlan/show_vlan_id_15.txt\", \n      \"test/units/modules/network/nxos/fixtures/nxos_vpc/show_vpc\", \n      \"test/units/modules/network/nxos/fixtures/nxos_vpc/show_vrf_all\", \n      \"test/units/modules/network/nxos/fixtures/nxos_vpc_interface/show_port-channel_summary\", \n      \"test/units/modules/network/nxos/fixtures/nxos_vpc_interface/show_vpc_brief\", \n      \"test/units/modules/network/nxos/fixtures/nxos_vrf/show_run_all\", \n      \"test/units/modules/network/nxos/fixtures/nxos_vrf/show_vrf_management\", \n      \"test/units/modules/network/nxos/fixtures/nxos_vrf/show_vrf_ntc\", \n      \"test/units/modules/network/nxos/fixtures/nxos_vxlan_vtep/config.cfg\", \n      \"test/units/modules/network/nxos/fixtures/nxos_vxlan_vtep_vni/config.cfg\", \n      \"test/units/modules/network/nxos/nxos_module.py\", \n      \"test/units/modules/network/nxos/test_nxos_acl.py\", \n      \"test/units/modules/network/nxos/test_nxos_acl_interface.py\", \n      \"test/units/modules/network/nxos/test_nxos_banner.py\", \n      \"test/units/modules/network/nxos/test_nxos_bgp.py\", \n      \"test/units/modules/network/nxos/test_nxos_bgp_af.py\", \n      \"test/units/modules/network/nxos/test_nxos_bgp_neighbor.py\", \n      \"test/units/modules/network/nxos/test_nxos_bgp_neighbor_af.py\", \n      \"test/units/modules/network/nxos/test_nxos_command.py\", \n      \"test/units/modules/network/nxos/test_nxos_config.py\", \n      \"test/units/modules/network/nxos/test_nxos_evpn_global.py\", \n      \"test/units/modules/network/nxos/test_nxos_evpn_vni.py\", \n      \"test/units/modules/network/nxos/test_nxos_feature.py\", \n      \"test/units/modules/network/nxos/test_nxos_hsrp.py\", \n      \"test/units/modules/network/nxos/test_nxos_interface.py\", \n      \"test/units/modules/network/nxos/test_nxos_interface_ospf.py\", \n      \"test/units/modules/network/nxos/test_nxos_ip_interface.py\", \n      \"test/units/modules/network/nxos/test_nxos_nxapi.py\", \n      \"test/units/modules/network/nxos/test_nxos_ospf.py\", \n      \"test/units/modules/network/nxos/test_nxos_ospf_vrf.py\", \n      \"test/units/modules/network/nxos/test_nxos_overlay_global.py\", \n      \"test/units/modules/network/nxos/test_nxos_pim.py\", \n      \"test/units/modules/network/nxos/test_nxos_pim_interface.py\", \n      \"test/units/modules/network/nxos/test_nxos_pim_rp_address.py\", \n      \"test/units/modules/network/nxos/test_nxos_portchannel.py\", \n      \"test/units/modules/network/nxos/test_nxos_static_route.py\", \n      \"test/units/modules/network/nxos/test_nxos_switchport.py\", \n      \"test/units/modules/network/nxos/test_nxos_system.py\", \n      \"test/units/modules/network/nxos/test_nxos_vlan.py\", \n      \"test/units/modules/network/nxos/test_nxos_vpc.py\", \n      \"test/units/modules/network/nxos/test_nxos_vpc_interface.py\", \n      \"test/units/modules/network/nxos/test_nxos_vrf.py\", \n      \"test/units/modules/network/nxos/test_nxos_vrf_af.py\", \n      \"test/units/modules/network/nxos/test_nxos_vxlan_vtep.py\", \n      \"test/units/modules/network/nxos/test_nxos_vxlan_vtep_vni.py\", \n      \"test/units/modules/network/ovs/__init__.py\", \n      \"test/units/modules/network/ovs/fixtures/br_get_external_id_foo_bar.cfg\", \n      \"test/units/modules/network/ovs/fixtures/br_to_parent_test_br.cfg\", \n      \"test/units/modules/network/ovs/fixtures/br_to_vlan_zero.cfg\", \n      \"test/units/modules/network/ovs/fixtures/get_fail_mode_secure.cfg\", \n      \"test/units/modules/network/ovs/fixtures/get_port_eth2_external_ids.cfg\", \n      \"test/units/modules/network/ovs/fixtures/get_port_eth2_tag.cfg\", \n      \"test/units/modules/network/ovs/fixtures/list_br_test_br.cfg\", \n      \"test/units/modules/network/ovs/fixtures/list_ports_test_br.cfg\", \n      \"test/units/modules/network/ovs/fixtures/openvswitch_db_disable_in_band_missing.cfg\", \n      \"test/units/modules/network/ovs/fixtures/openvswitch_db_disable_in_band_true.cfg\", \n      \"test/units/modules/network/ovs/ovs_module.py\", \n      \"test/units/modules/network/ovs/test_openvswitch_bridge.py\", \n      \"test/units/modules/network/ovs/test_openvswitch_db.py\", \n      \"test/units/modules/network/ovs/test_openvswitch_port.py\", \n      \"test/units/modules/network/radware/__init__.py\", \n      \"test/units/modules/network/radware/ct.vm\", \n      \"test/units/modules/network/radware/test_vdirect_file.py\", \n      \"test/units/modules/network/radware/wt.zip\", \n      \"test/units/modules/network/vyos/__init__.py\", \n      \"test/units/modules/network/vyos/fixtures/show_host_name\", \n      \"test/units/modules/network/vyos/fixtures/show_version\", \n      \"test/units/modules/network/vyos/fixtures/vyos_config_config.cfg\", \n      \"test/units/modules/network/vyos/fixtures/vyos_config_src.cfg\", \n      \"test/units/modules/network/vyos/fixtures/vyos_config_src_brackets.cfg\", \n      \"test/units/modules/network/vyos/fixtures/vyos_user_config.cfg\", \n      \"test/units/modules/network/vyos/test_vyos_banner.py\", \n      \"test/units/modules/network/vyos/test_vyos_command.py\", \n      \"test/units/modules/network/vyos/test_vyos_config.py\", \n      \"test/units/modules/network/vyos/test_vyos_facts.py\", \n      \"test/units/modules/network/vyos/test_vyos_static_route.py\", \n      \"test/units/modules/network/vyos/test_vyos_system.py\", \n      \"test/units/modules/network/vyos/test_vyos_user.py\", \n      \"test/units/modules/network/vyos/vyos_module.py\"\n    ], \n    \"strategies\": [\n      \"search_by_filepath[partial]\"\n    ], \n    \"strategy\": \"search_by_filepath[partial]\", \n    \"url\": \"https://github.com/ansible/ansible/issues/30350\"\n  }, \n  {\n    \"component\": \"lib/ansible/modules/cloud/amazon\", \n    \"component_raw\": \"lib/ansible/modules/cloud/amazon\", \n    \"expected\": [\n      \"lib/ansible/modules/cloud/amazon\"\n    ], \n    \"result\": [\n      \"lib/ansible/modules/cloud/amazon/GUIDELINES.md\"\n    ], \n    \"strategies\": [\n      \"search_by_filepath[partial]\"\n    ], \n    \"strategy\": \"search_by_filepath[partial]\", \n    \"url\": \"https://github.com/ansible/ansible/issues/31216\"\n  }, \n  {\n    \"component\": \"modules/network/f5\", \n    \"component_raw\": \"modules/network/f5\", \n    \"expected\": [\n      \"lib/ansible/modules/network/f5\"\n    ], \n    \"result\": [\n      \"lib/ansible/modules/network/f5/__init__.py\"\n    ], \n    \"strategies\": [\n      \"search_by_filepath[partial]\"\n    ], \n    \"strategy\": \"search_by_filepath[partial]\", \n    \"url\": \"https://github.com/ansible/ansible/issues/31416\"\n  }, \n  {\n    \"component\": \"modules/network/iosxr\", \n    \"component_raw\": \"modules/network/iosxr\", \n    \"expected\": [\n      \"lib/ansible/modules/network/iosxr\"\n    ], \n    \"result\": [\n      \"lib/ansible/modules/network/iosxr/__init__.py\"\n    ], \n    \"strategies\": [\n      \"search_by_filepath[partial]\"\n    ], \n    \"strategy\": \"search_by_filepath[partial]\", \n    \"url\": \"https://github.com/ansible/ansible/issues/31714\"\n  }\n]"
  },
  {
    "path": "tests/fixtures/component_data/component_expected_results.json",
    "content": "{\n  \"https://github.com/ansible/ansible/issues/10282\": [\n    \"contrib/inventory\", \n    \"lib/ansible/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/10480\": [\n    \"contrib/inventory/openstack.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/10499\": [], \n  \"https://github.com/ansible/ansible/issues/10834\": [], \n  \"https://github.com/ansible/ansible/issues/10849\": [], \n  \"https://github.com/ansible/ansible/issues/10941\": [], \n  \"https://github.com/ansible/ansible/issues/11024\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/11118\": [], \n  \"https://github.com/ansible/ansible/issues/11159\": [], \n  \"https://github.com/ansible/ansible/issues/11175\": [], \n  \"https://github.com/ansible/ansible/issues/11263\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/11340\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"https://github.com/ansible/ansible/issues/11444\": [], \n  \"https://github.com/ansible/ansible/issues/11498\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/11517\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/11525\": [\n    \"lib/ansible/cli/inventory.py\", \n    \"lib/ansible/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/11568\": [\n    \"lib/ansible/modules/files/assemble.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/11639\": [], \n  \"https://github.com/ansible/ansible/issues/11775\": [], \n  \"https://github.com/ansible/ansible/issues/11817\": [], \n  \"https://github.com/ansible/ansible/issues/11837\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/11862\": [], \n  \"https://github.com/ansible/ansible/issues/11906\": [], \n  \"https://github.com/ansible/ansible/issues/11913\": [], \n  \"https://github.com/ansible/ansible/issues/11942\": [], \n  \"https://github.com/ansible/ansible/issues/11948\": [], \n  \"https://github.com/ansible/ansible/issues/11957\": [\n    \"lib/ansible/modules/inventory/add_host.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/12003\": [], \n  \"https://github.com/ansible/ansible/issues/12013\": [\n    \"lib/ansible/modules/net_tools/basics/uri.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/12034\": [], \n  \"https://github.com/ansible/ansible/issues/12038\": [], \n  \"https://github.com/ansible/ansible/issues/12091\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/12121\": [\n    \"lib/ansible/parsing/vault\"\n  ], \n  \"https://github.com/ansible/ansible/issues/12239\": [], \n  \"https://github.com/ansible/ansible/issues/12240\": [], \n  \"https://github.com/ansible/ansible/issues/12246\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vol.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/12247\": [], \n  \"https://github.com/ansible/ansible/issues/12263\": [], \n  \"https://github.com/ansible/ansible/issues/12264\": [], \n  \"https://github.com/ansible/ansible/issues/12320\": [], \n  \"https://github.com/ansible/ansible/issues/12421\": [], \n  \"https://github.com/ansible/ansible/issues/12445\": [], \n  \"https://github.com/ansible/ansible/issues/12619\": [], \n  \"https://github.com/ansible/ansible/issues/12620\": [], \n  \"https://github.com/ansible/ansible/issues/12630\": [], \n  \"https://github.com/ansible/ansible/issues/12675\": [], \n  \"https://github.com/ansible/ansible/issues/12728\": [], \n  \"https://github.com/ansible/ansible/issues/12745\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/12903\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/12946\": [], \n  \"https://github.com/ansible/ansible/issues/12959\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/12964\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/12986\": [\n    \"lib/ansible/modules/packaging/os/package.py\", \n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/13047\": [\n    \"Makefile\"\n  ], \n  \"https://github.com/ansible/ansible/issues/13086\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/13095\": [\n    \"lib/ansible/modules/windows/setup.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/13099\": [], \n  \"https://github.com/ansible/ansible/issues/13160\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/13165\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"https://github.com/ansible/ansible/issues/13175\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"https://github.com/ansible/ansible/issues/13235\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/13259\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/13366\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/13478\": [\n    \"lib/ansible/modules/net_tools/basics/get_url.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/13484\": [], \n  \"https://github.com/ansible/ansible/issues/13496\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"https://github.com/ansible/ansible/issues/13561\": [], \n  \"https://github.com/ansible/ansible/issues/13596\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/13665\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/13742\": [], \n  \"https://github.com/ansible/ansible/issues/13870\": [\n    \"lib/ansible/playbook/block.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/14107\": [], \n  \"https://github.com/ansible/ansible/issues/14127\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/14130\": [], \n  \"https://github.com/ansible/ansible/issues/14150\": [], \n  \"https://github.com/ansible/ansible/issues/14181\": [], \n  \"https://github.com/ansible/ansible/issues/14413\": [\n    \"lib/ansible/modules/utilities/logic/wait_for.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/14468\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/14539\": [\n    \"lib/ansible/parsing/vault\"\n  ], \n  \"https://github.com/ansible/ansible/issues/14549\": [], \n  \"https://github.com/ansible/ansible/issues/14641\": [], \n  \"https://github.com/ansible/ansible/issues/14643\": [\n    \"lib/ansible/modules/windows/setup.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/14681\": [\n    \"lib/ansible/plugins/callback\"\n  ], \n  \"https://github.com/ansible/ansible/issues/14708\": [], \n  \"https://github.com/ansible/ansible/issues/14736\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"https://github.com/ansible/ansible/issues/14791\": [], \n  \"https://github.com/ansible/ansible/issues/14860\": [], \n  \"https://github.com/ansible/ansible/issues/14907\": [\n    \"lib/ansible/modules/utilities/logic/include_vars.py\", \n    \"lib/ansible/plugins/action/include_vars.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15030\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15135\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15143\": [], \n  \"https://github.com/ansible/ansible/issues/15148\": [\n    \"contrib/inventory/openstack.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15185\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15187\": [], \n  \"https://github.com/ansible/ansible/issues/15190\": [], \n  \"https://github.com/ansible/ansible/issues/15206\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15216\": [], \n  \"https://github.com/ansible/ansible/issues/15259\": [], \n  \"https://github.com/ansible/ansible/issues/15265\": [], \n  \"https://github.com/ansible/ansible/issues/15288\": [], \n  \"https://github.com/ansible/ansible/issues/15302\": [], \n  \"https://github.com/ansible/ansible/issues/15323\": [], \n  \"https://github.com/ansible/ansible/issues/15336\": [], \n  \"https://github.com/ansible/ansible/issues/15352\": [\n    \"lib/ansible/modules/cloud/lxc/lxc_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15381\": [], \n  \"https://github.com/ansible/ansible/issues/15388\": [], \n  \"https://github.com/ansible/ansible/issues/15402\": [], \n  \"https://github.com/ansible/ansible/issues/15403\": [], \n  \"https://github.com/ansible/ansible/issues/15405\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15408\": [], \n  \"https://github.com/ansible/ansible/issues/15412\": [], \n  \"https://github.com/ansible/ansible/issues/15416\": [], \n  \"https://github.com/ansible/ansible/issues/15429\": [], \n  \"https://github.com/ansible/ansible/issues/15430\": [], \n  \"https://github.com/ansible/ansible/issues/15458\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15459\": [], \n  \"https://github.com/ansible/ansible/issues/15484\": [], \n  \"https://github.com/ansible/ansible/issues/15491\": [\n    \"lib/ansible/modules/source_control/git.py\", \n    \"test/integration/targets/git\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15505\": [\n    \"lib/ansible/cli/playbook.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15512\": [], \n  \"https://github.com/ansible/ansible/issues/15538\": [\n    \"lib/ansible/plugins/callback\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15549\": [], \n  \"https://github.com/ansible/ansible/issues/15565\": [], \n  \"https://github.com/ansible/ansible/issues/15590\": [], \n  \"https://github.com/ansible/ansible/issues/15622\": [], \n  \"https://github.com/ansible/ansible/issues/15642\": [], \n  \"https://github.com/ansible/ansible/issues/15664\": [], \n  \"https://github.com/ansible/ansible/issues/15680\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15695\": [\n    \"lib/ansible/module_utils/facts\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15709\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15722\": [], \n  \"https://github.com/ansible/ansible/issues/15725\": [\n    \"lib/ansible/modules/windows/win_updates.ps1\", \n    \"lib/ansible/modules/windows/win_updates.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15729\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15732\": [], \n  \"https://github.com/ansible/ansible/issues/15737\": [], \n  \"https://github.com/ansible/ansible/issues/15741\": [], \n  \"https://github.com/ansible/ansible/issues/15746\": [], \n  \"https://github.com/ansible/ansible/issues/15753\": [], \n  \"https://github.com/ansible/ansible/issues/15766\": [\n    \"lib/ansible/cli/pull.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15767\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15786\": [], \n  \"https://github.com/ansible/ansible/issues/15790\": [], \n  \"https://github.com/ansible/ansible/issues/15794\": [], \n  \"https://github.com/ansible/ansible/issues/15801\": [], \n  \"https://github.com/ansible/ansible/issues/15802\": [\n    \"lib/ansible/playbook/role\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15813\": [], \n  \"https://github.com/ansible/ansible/issues/15815\": [], \n  \"https://github.com/ansible/ansible/issues/15816\": [\n    \"lib/ansible/plugins/connection/docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15828\": [], \n  \"https://github.com/ansible/ansible/issues/15853\": [], \n  \"https://github.com/ansible/ansible/issues/15855\": [], \n  \"https://github.com/ansible/ansible/issues/15856\": [], \n  \"https://github.com/ansible/ansible/issues/15861\": [], \n  \"https://github.com/ansible/ansible/issues/15862\": [], \n  \"https://github.com/ansible/ansible/issues/15889\": [], \n  \"https://github.com/ansible/ansible/issues/15907\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15916\": [], \n  \"https://github.com/ansible/ansible/issues/15920\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15923\": [], \n  \"https://github.com/ansible/ansible/issues/15948\": [], \n  \"https://github.com/ansible/ansible/issues/15956\": [\n    \"lib/ansible/plugins/connection/docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15959\": [], \n  \"https://github.com/ansible/ansible/issues/15968\": [\n    \"lib/ansible/cli/pull.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/15988\": [], \n  \"https://github.com/ansible/ansible/issues/16025\": [], \n  \"https://github.com/ansible/ansible/issues/16046\": [], \n  \"https://github.com/ansible/ansible/issues/16052\": [], \n  \"https://github.com/ansible/ansible/issues/16057\": [], \n  \"https://github.com/ansible/ansible/issues/16111\": [], \n  \"https://github.com/ansible/ansible/issues/16116\": [\n    \"lib/ansible/cli/inventory.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16130\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16136\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16140\": [], \n  \"https://github.com/ansible/ansible/issues/16178\": [\n    \"docs\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16186\": [], \n  \"https://github.com/ansible/ansible/issues/16213\": [\n    \"lib/ansible/parsing/vault\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16215\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16217\": [], \n  \"https://github.com/ansible/ansible/issues/16235\": [], \n  \"https://github.com/ansible/ansible/issues/16248\": [\n    \"lib/ansible/modules/system/seboolean.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16254\": [], \n  \"https://github.com/ansible/ansible/issues/16256\": [\n    \"lib/ansible/module_utils\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16258\": [], \n  \"https://github.com/ansible/ansible/issues/16259\": [], \n  \"https://github.com/ansible/ansible/issues/16307\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16318\": [], \n  \"https://github.com/ansible/ansible/issues/16351\": [\n    \"lib/ansible/vars/hostvars.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16352\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16357\": [], \n  \"https://github.com/ansible/ansible/issues/16379\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16383\": [], \n  \"https://github.com/ansible/ansible/issues/16396\": [], \n  \"https://github.com/ansible/ansible/issues/16402\": [], \n  \"https://github.com/ansible/ansible/issues/16403\": [], \n  \"https://github.com/ansible/ansible/issues/16414\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16437\": [], \n  \"https://github.com/ansible/ansible/issues/16443\": [], \n  \"https://github.com/ansible/ansible/issues/16444\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16445\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16456\": [], \n  \"https://github.com/ansible/ansible/issues/16508\": [], \n  \"https://github.com/ansible/ansible/issues/16526\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16536\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16561\": [], \n  \"https://github.com/ansible/ansible/issues/16571\": [], \n  \"https://github.com/ansible/ansible/issues/16582\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16586\": [], \n  \"https://github.com/ansible/ansible/issues/16590\": [], \n  \"https://github.com/ansible/ansible/issues/16591\": [\n    \"lib/ansible/plugins/cache/redis.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16598\": [], \n  \"https://github.com/ansible/ansible/issues/16602\": [], \n  \"https://github.com/ansible/ansible/issues/16605\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16612\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16615\": [], \n  \"https://github.com/ansible/ansible/issues/16616\": [], \n  \"https://github.com/ansible/ansible/issues/16625\": [], \n  \"https://github.com/ansible/ansible/issues/16627\": [\n    \"lib/ansible/playbook/role\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16637\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16641\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16665\": [\n    \"lib/ansible/modules/system/timezone.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16666\": [], \n  \"https://github.com/ansible/ansible/issues/16675\": [], \n  \"https://github.com/ansible/ansible/issues/16708\": [], \n  \"https://github.com/ansible/ansible/issues/16714\": [], \n  \"https://github.com/ansible/ansible/issues/16750\": [], \n  \"https://github.com/ansible/ansible/issues/16751\": [], \n  \"https://github.com/ansible/ansible/issues/16767\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16775\": [\n    \"lib/ansible/playbook/role\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16776\": [], \n  \"https://github.com/ansible/ansible/issues/16788\": [], \n  \"https://github.com/ansible/ansible/issues/16789\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16790\": [], \n  \"https://github.com/ansible/ansible/issues/16792\": [], \n  \"https://github.com/ansible/ansible/issues/16796\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16810\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16816\": [], \n  \"https://github.com/ansible/ansible/issues/16823\": [], \n  \"https://github.com/ansible/ansible/issues/16826\": [\n    \"lib/ansible/modules/windows/win_reboot.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16827\": [\n    \"contrib/inventory/digital_ocean.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16842\": [], \n  \"https://github.com/ansible/ansible/issues/16850\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16861\": [], \n  \"https://github.com/ansible/ansible/issues/16862\": [], \n  \"https://github.com/ansible/ansible/issues/16863\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16869\": [], \n  \"https://github.com/ansible/ansible/issues/16888\": [], \n  \"https://github.com/ansible/ansible/issues/16894\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16902\": [], \n  \"https://github.com/ansible/ansible/issues/16903\": [], \n  \"https://github.com/ansible/ansible/issues/16909\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16929\": [], \n  \"https://github.com/ansible/ansible/issues/16945\": [], \n  \"https://github.com/ansible/ansible/issues/16968\": [], \n  \"https://github.com/ansible/ansible/issues/16972\": [], \n  \"https://github.com/ansible/ansible/issues/16973\": [], \n  \"https://github.com/ansible/ansible/issues/16977\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/16993\": [], \n  \"https://github.com/ansible/ansible/issues/17002\": [], \n  \"https://github.com/ansible/ansible/issues/17012\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17014\": [\n    \"lib/ansible/modules/windows/setup.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17042\": [\n    \"lib/ansible/modules/commands/command.py\", \n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17059\": [], \n  \"https://github.com/ansible/ansible/issues/17075\": [\n    \"lib/ansible/modules/cloud/google/gce.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17078\": [], \n  \"https://github.com/ansible/ansible/issues/17083\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17086\": [], \n  \"https://github.com/ansible/ansible/issues/17098\": [], \n  \"https://github.com/ansible/ansible/issues/17100\": [], \n  \"https://github.com/ansible/ansible/issues/17136\": [], \n  \"https://github.com/ansible/ansible/issues/17151\": [], \n  \"https://github.com/ansible/ansible/issues/17159\": [], \n  \"https://github.com/ansible/ansible/issues/17179\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17187\": [\n    \"lib/ansible/plugins/action/win_reboot.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17266\": [], \n  \"https://github.com/ansible/ansible/issues/17273\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17300\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17322\": [\n    \"lib/ansible/vars/hostvars.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17329\": [], \n  \"https://github.com/ansible/ansible/issues/17346\": [\n    \"lib/ansible/parsing/vault\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17349\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17358\": [\n    \"lib/ansible/plugins/lookup/dict.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17363\": [], \n  \"https://github.com/ansible/ansible/issues/17393\": [], \n  \"https://github.com/ansible/ansible/issues/17428\": [\n    \"lib/ansible/modules/utilities/logic/_include.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17434\": [], \n  \"https://github.com/ansible/ansible/issues/17454\": [\n    \"lib/ansible/cli/pull.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17469\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17492\": [\n    \"lib/ansible/plugins/action/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17518\": [\n    \"lib/ansible/plugins/callback/profile_tasks.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17583\": [\n    \"lib/ansible/playbook/become.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17587\": [\n    \"lib/ansible/module_utils\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17594\": [\n    \"lib/ansible/parsing/quoting.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17665\": [], \n  \"https://github.com/ansible/ansible/issues/17672\": [], \n  \"https://github.com/ansible/ansible/issues/17678\": [], \n  \"https://github.com/ansible/ansible/issues/17685\": [\n    \"lib/ansible/module_utils/urls.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17692\": [], \n  \"https://github.com/ansible/ansible/issues/17695\": [\n    \"lib/ansible/playbook/task.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17700\": [], \n  \"https://github.com/ansible/ansible/issues/17704\": [\n    \"lib/ansible/template\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17714\": [], \n  \"https://github.com/ansible/ansible/issues/17727\": [\n    \"contrib/inventory/azure_rm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17746\": [], \n  \"https://github.com/ansible/ansible/issues/17755\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17757\": [\n    \"docs\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17807\": [], \n  \"https://github.com/ansible/ansible/issues/17843\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17852\": [], \n  \"https://github.com/ansible/ansible/issues/17871\": [\n    \"lib/ansible/plugins/filter/ipaddr.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17872\": [\n    \"lib/ansible/plugins/filter/ipaddr.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17876\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17908\": [\n    \"lib/ansible/playbook/become.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17911\": [], \n  \"https://github.com/ansible/ansible/issues/17920\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17922\": [\n    \"lib/ansible/playbook/handler.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17925\": [\n    \"lib/ansible/module_utils/azure_rm_common.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17930\": [\n    \"lib/ansible/modules/cloud/openstack/os_subnet.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17934\": [\n    \"contrib/inventory/azure_rm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17935\": [\n    \"lib/ansible/playbook\", \n    \"lib/ansible/plugins/connection\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17937\": [\n    \"lib/ansible/module_utils\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17939\": [], \n  \"https://github.com/ansible/ansible/issues/17953\": [], \n  \"https://github.com/ansible/ansible/issues/17960\": [\n    \"lib/ansible/playbook/role\"\n  ], \n  \"https://github.com/ansible/ansible/issues/17963\": [], \n  \"https://github.com/ansible/ansible/issues/17998\": [], \n  \"https://github.com/ansible/ansible/issues/18067\": [\n    \"lib/ansible/playbook/role\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18079\": [\n    \"lib/ansible/playbook/role\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18090\": [\n    \"lib/ansible/playbook/role\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18124\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18131\": [], \n  \"https://github.com/ansible/ansible/issues/18140\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18142\": [], \n  \"https://github.com/ansible/ansible/issues/18161\": [\n    \"lib/ansible/plugins/callback\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18179\": [\n    \"test/sanity/validate-modules\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18180\": [\n    \"test/sanity/validate-modules\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18181\": [\n    \"test/sanity/validate-modules\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18183\": [\n    \"test/sanity/validate-modules\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18186\": [\n    \"test/sanity/validate-modules\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18188\": [], \n  \"https://github.com/ansible/ansible/issues/18189\": [\n    \"lib/ansible/parsing/vault\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18193\": [], \n  \"https://github.com/ansible/ansible/issues/18197\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18201\": [\n    \"lib/ansible/cli/pull.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18217\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18232\": [], \n  \"https://github.com/ansible/ansible/issues/18259\": [], \n  \"https://github.com/ansible/ansible/issues/18305\": [], \n  \"https://github.com/ansible/ansible/issues/18323\": [], \n  \"https://github.com/ansible/ansible/issues/18338\": [], \n  \"https://github.com/ansible/ansible/issues/18341\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18359\": [], \n  \"https://github.com/ansible/ansible/issues/18360\": [], \n  \"https://github.com/ansible/ansible/issues/18375\": [\n    \"lib/ansible/playbook/role\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18391\": [], \n  \"https://github.com/ansible/ansible/issues/18396\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18417\": [], \n  \"https://github.com/ansible/ansible/issues/18430\": [\n    \"lib/ansible/plugins/lookup/first_found.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18438\": [\n    \"lib/ansible/plugins/connection\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18459\": [], \n  \"https://github.com/ansible/ansible/issues/18475\": [], \n  \"https://github.com/ansible/ansible/issues/18482\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18486\": [], \n  \"https://github.com/ansible/ansible/issues/18489\": [], \n  \"https://github.com/ansible/ansible/issues/18499\": [\n    \"lib/ansible/modules/utilities/logic/_include.py\", \n    \"lib/ansible/playbook/role\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18513\": [\n    \"lib/ansible/module_utils\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18527\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18537\": [\n    \"lib/ansible/parsing/vault\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18549\": [], \n  \"https://github.com/ansible/ansible/issues/18555\": [], \n  \"https://github.com/ansible/ansible/issues/18559\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18568\": [], \n  \"https://github.com/ansible/ansible/issues/18579\": [\n    \"contrib/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18650\": [\n    \"lib/ansible/module_utils/ovirt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18665\": [\n    \"lib/ansible/executor/module_common.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18688\": [\n    \"lib/ansible/module_utils\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18692\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18719\": [], \n  \"https://github.com/ansible/ansible/issues/18721\": [], \n  \"https://github.com/ansible/ansible/issues/18722\": [\n    \"lib/ansible/template\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18772\": [\n    \"lib/ansible/module_utils/basic.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18775\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18782\": [], \n  \"https://github.com/ansible/ansible/issues/18795\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18818\": [\n    \"lib/ansible/modules/system/sysctl.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18819\": [\n    \"lib/ansible/modules/windows/win_regmerge.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18835\": [], \n  \"https://github.com/ansible/ansible/issues/18844\": [\n    \"lib/ansible/modules/monitoring/zabbix/zabbix_host.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18860\": [\n    \"lib/ansible/modules/packaging/os/homebrew.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18861\": [\n    \"lib/ansible/modules/windows/win_firewall_rule.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18871\": [\n    \"lib/ansible/modules/monitoring/logentries.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18879\": [], \n  \"https://github.com/ansible/ansible/issues/18880\": [\n    \"lib/ansible/modules/windows/win_regedit.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18882\": [\n    \"lib/ansible/modules/cloud/lxd/lxd_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18883\": [\n    \"lib/ansible/modules/windows/win_regedit.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18889\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18893\": [\n    \"lib/ansible/modules/system/filesystem.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18894\": [\n    \"lib/ansible/modules/net_tools/basics/get_url.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18897\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18901\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18904\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18907\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18910\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18911\": [\n    \"lib/ansible/modules/system/capabilities.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18917\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18918\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18923\": [], \n  \"https://github.com/ansible/ansible/issues/18927\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18932\": [\n    \"lib/ansible/template\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18933\": [], \n  \"https://github.com/ansible/ansible/issues/18934\": [\n    \"lib/ansible/modules/windows/win_updates.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18935\": [\n    \"lib/ansible/modules/net_tools/basics/uri.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18937\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18943\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18945\": [\n    \"lib/ansible/modules/system/sysctl.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18948\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18950\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18952\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18954\": [], \n  \"https://github.com/ansible/ansible/issues/18955\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_privs.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18960\": [], \n  \"https://github.com/ansible/ansible/issues/18961\": [], \n  \"https://github.com/ansible/ansible/issues/18966\": [], \n  \"https://github.com/ansible/ansible/issues/18972\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18973\": [\n    \"lib/ansible/modules/files/find.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18974\": [\n    \"lib/ansible/modules/network/nxos/nxos_command.py\", \n    \"lib/ansible/modules/network/nxos/nxos_nxapi.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18975\": [\n    \"lib/ansible/modules/packaging/os/apt_repository.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18976\": [\n    \"lib/ansible/modules/system/authorized_key.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18978\": [\n    \"lib/ansible/modules/net_tools/snmp_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18979\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18980\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_portgroup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18983\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18987\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18988\": [\n    \"lib/ansible/modules/system/iptables.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18989\": [\n    \"lib/ansible/modules/system/iptables.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18992\": [\n    \"lib/ansible/modules/cloud/openstack/os_object.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18993\": [\n    \"lib/ansible/modules/packaging/language/gem.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18996\": [\n    \"lib/ansible/modules/web_infrastructure/letsencrypt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/18997\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19004\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19028\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19030\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19050\": [], \n  \"https://github.com/ansible/ansible/issues/19052\": [], \n  \"https://github.com/ansible/ansible/issues/19067\": [\n    \"lib/ansible/module_utils/facts\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19081\": [\n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19084\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\", \n    \"lib/ansible/playbook/block.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19086\": [\n    \"lib/ansible/modules/packaging/os/apt.py\", \n    \"lib/ansible/modules/packaging/os/dnf.py\", \n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19101\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19103\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19106\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19108\": [\n    \"lib/ansible/modules/network/junos/junos_netconf.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19112\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19114\": [\n    \"lib/ansible/modules/cloud/amazon/route53_zone.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19115\": [\n    \"lib/ansible/modules/utilities/logic/_include.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19121\": [\n    \"lib/ansible/modules/cloud/amazon/elasticache.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19124\": [\n    \"lib/ansible/modules/cloud/openstack/os_security_group_rule.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19125\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19176\": [\n    \"lib/ansible/modules/system/hostname.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19177\": [], \n  \"https://github.com/ansible/ansible/issues/19179\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19183\": [\n    \"lib/ansible/modules/network/asa/asa_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19193\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19203\": [\n    \"lib/ansible/modules/net_tools/basics/uri.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19213\": [\n    \"lib/ansible/modules/windows/win_regedit.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19214\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19218\": [\n    \"lib/ansible/modules/windows/win_owner.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19220\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19243\": [\n    \"lib/ansible/modules/files/copy.py\", \n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19249\": [\n    \"lib/ansible/modules/cloud/amazon/iam_policy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19271\": [\n    \"lib/ansible/modules/cloud/docker/docker_network.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19274\": [\n    \"lib/ansible/vars/hostvars.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19278\": [], \n  \"https://github.com/ansible/ansible/issues/19279\": [], \n  \"https://github.com/ansible/ansible/issues/19284\": [\n    \"lib/ansible/modules/cloud/misc/virt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19287\": [\n    \"lib/ansible/modules/files/fetch.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19290\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19294\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19305\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19311\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19314\": [\n    \"lib/ansible/modules/notification/sendgrid.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19321\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19326\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19335\": [\n    \"lib/ansible/modules/clustering/consul.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19341\": [\n    \"lib/ansible/modules/clustering/consul_acl.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19352\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19359\": [], \n  \"https://github.com/ansible/ansible/issues/19371\": [\n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19376\": [], \n  \"https://github.com/ansible/ansible/issues/19378\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19387\": [\n    \"lib/ansible/modules/cloud/docker/docker_login.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19392\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19420\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19422\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19431\": [\n    \"lib/ansible/plugins/connection\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19438\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19451\": [\n    \"contrib/inventory/azure_rm.py\", \n    \"lib/ansible/module_utils/azure_rm_common.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19463\": [\n    \"lib/ansible/modules/packaging/os/macports.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19470\": [], \n  \"https://github.com/ansible/ansible/issues/19472\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19478\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19488\": [\n    \"lib/ansible/modules/cloud/misc/proxmox.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19495\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19508\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19520\": [], \n  \"https://github.com/ansible/ansible/issues/19521\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19524\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19538\": [\n    \"lib/ansible/modules/cloud/vmware/vca_vapp.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19553\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_portgroup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19573\": [\n    \"lib/ansible/modules/windows/win_get_url.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19583\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19586\": [\n    \"lib/ansible/modules/network/eos/eos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19587\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19593\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19609\": [\n    \"lib/ansible/modules/utilities/logic/_include.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19610\": [\n    \"lib/ansible/modules/cloud/openstack/os_security_group_rule.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19611\": [\n    \"lib/ansible/modules/cloud/openstack/os_server.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19612\": [\n    \"lib/ansible/modules/cloud/openstack/os_router.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19614\": [\n    \"lib/ansible/modules/cloud/openstack/os_security_group_rule.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19615\": [\n    \"lib/ansible/modules/network/ios/ios_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19617\": [\n    \"lib/ansible/modules/cloud/openstack/os_keystone_service.py\", \n    \"lib/ansible/modules/cloud/openstack/os_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19618\": [\n    \"lib/ansible/modules/cloud/openstack/os_network.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19620\": [\n    \"lib/ansible/modules/cloud/openstack/os_floating_ip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19621\": [\n    \"lib/ansible/modules/cloud/openstack/os_server.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19622\": [\n    \"lib/ansible/modules/cloud/openstack/os_network.py\", \n    \"lib/ansible/modules/cloud/openstack/os_subnet.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19630\": [\n    \"lib/ansible/modules/commands/command.py\", \n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19649\": [\n    \"lib/ansible/modules/utilities/logic/include_vars.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19665\": [], \n  \"https://github.com/ansible/ansible/issues/19666\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_ami.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19670\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19672\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19681\": [\n    \"lib/ansible/modules/system/hostname.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19689\": [], \n  \"https://github.com/ansible/ansible/issues/19711\": [\n    \"lib/ansible/modules/system/hostname.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19719\": [], \n  \"https://github.com/ansible/ansible/issues/19721\": [\n    \"lib/ansible/modules/net_tools/basics/get_url.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19725\": [\n    \"lib/ansible/modules/windows/win_chocolatey.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19731\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19735\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"lib/ansible/modules/cloud/vmware/vmware_vm_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19746\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19750\": [\n    \"lib/ansible/modules/cloud/openstack/os_floating_ip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19751\": [], \n  \"https://github.com/ansible/ansible/issues/19755\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19757\": [], \n  \"https://github.com/ansible/ansible/issues/19759\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19760\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19763\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19766\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19771\": [\n    \"lib/ansible/vars/hostvars.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19801\": [\n    \"lib/ansible/modules/cloud/ovirt/ovirt_vms.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19802\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19810\": [\n    \"lib/ansible/modules/monitoring/zabbix/zabbix_host.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19813\": [\n    \"lib/ansible/modules/packaging/os/macports.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19814\": [\n    \"lib/ansible/modules/system/hostname.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19815\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19817\": [\n    \"lib/ansible/modules/windows/win_get_url.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19819\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19820\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19825\": [\n    \"lib/ansible/modules/windows/win_reboot.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19831\": [\n    \"lib/ansible/modules/cloud/amazon/efs_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19833\": [\n    \"lib/ansible/modules/network/nxos/nxos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19851\": [], \n  \"https://github.com/ansible/ansible/issues/19858\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19863\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19880\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"lib/ansible/modules/cloud/docker/docker_image.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19884\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19889\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19890\": [\n    \"lib/ansible/modules/cloud/lxc/lxc_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19893\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19894\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19895\": [\n    \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19898\": [\n    \"lib/ansible/playbook/handler.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19939\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19956\": [\n    \"lib/ansible/template\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19968\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19970\": [\n    \"lib/ansible/modules/cloud/amazon/kinesis_stream.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19973\": [\n    \"lib/ansible/modules/net_tools/basics/uri.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19987\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19993\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/19996\": [\n    \"lib/ansible/modules/windows/win_package.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20003\": [\n    \"lib/ansible/modules/packaging/language/maven_artifact.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20032\": [\n    \"lib/ansible/modules/windows/win_nssm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20033\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20056\": [], \n  \"https://github.com/ansible/ansible/issues/20062\": [\n    \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20077\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20081\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20096\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20106\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20109\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20111\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20135\": [\n    \"lib/ansible/vars/hostvars.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20160\": [\n    \"lib/ansible/modules/windows/win_get_url.ps1\", \n    \"lib/ansible/modules/windows/win_package.ps1\", \n    \"lib/ansible/modules/windows/win_reboot.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20168\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20169\": [\n    \"lib/ansible/playbook/role/requirement.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20174\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_eip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20178\": [\n    \"contrib/inventory/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20196\": [], \n  \"https://github.com/ansible/ansible/issues/20231\": [\n    \"lib/ansible/modules/utilities/logic/_include.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20263\": [], \n  \"https://github.com/ansible/ansible/issues/20286\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20311\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20319\": [\n    \"lib/ansible/modules/windows/win_package.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20346\": [], \n  \"https://github.com/ansible/ansible/issues/20347\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20360\": [\n    \"lib/ansible/modules/inventory/group_by.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20395\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20406\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20438\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20443\": [\n    \"lib/ansible/modules/network/ios/ios_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20444\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20456\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20458\": [\n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20470\": [\n    \"lib/ansible/plugins/lookup/dig.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20488\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20493\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20494\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20496\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20497\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20505\": [\n    \"lib/ansible/modules/windows/win_environment.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20520\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20530\": [\n    \"lib/ansible/parsing/vault\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20545\": [], \n  \"https://github.com/ansible/ansible/issues/20546\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20549\": [], \n  \"https://github.com/ansible/ansible/issues/20551\": [\n    \"lib/ansible/modules/system/filesystem.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20563\": [\n    \"lib/ansible/modules/utilities/helper/_accelerate.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20580\": [\n    \"lib/ansible/modules/cloud/docker/docker_image.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20582\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20589\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20596\": [], \n  \"https://github.com/ansible/ansible/issues/20621\": [\n    \"lib/ansible/modules/system/systemd.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20623\": [], \n  \"https://github.com/ansible/ansible/issues/20625\": [\n    \"lib/ansible/modules/windows/win_nssm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20638\": [\n    \"lib/ansible/modules/web_infrastructure/letsencrypt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20648\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20663\": [], \n  \"https://github.com/ansible/ansible/issues/20711\": [\n    \"lib/ansible/modules/packaging/os/rpm_key.py\", \n    \"lib/ansible/modules/packaging/os/yum_repository.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20744\": [], \n  \"https://github.com/ansible/ansible/issues/20747\": [], \n  \"https://github.com/ansible/ansible/issues/20752\": [], \n  \"https://github.com/ansible/ansible/issues/20769\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20776\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20802\": [], \n  \"https://github.com/ansible/ansible/issues/20808\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20810\": [\n    \"lib/ansible/modules/files/patch.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20819\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_host.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20837\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20842\": [\n    \"lib/ansible/modules/cloud/amazon/elasticache.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20864\": [\n    \"lib/ansible/modules/cloud/openstack/os_server.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20870\": [\n    \"lib/ansible/modules/utilities/logic/wait_for.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20886\": [], \n  \"https://github.com/ansible/ansible/issues/20925\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20929\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20933\": [\n    \"lib/ansible/parsing/vault\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20954\": [\n    \"lib/ansible/modules/source_control/git_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20958\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20972\": [\n    \"lib/ansible/playbook/handler.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20977\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20978\": [], \n  \"https://github.com/ansible/ansible/issues/20980\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/20986\": [\n    \"lib/ansible/modules/files/blockinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21003\": [\n    \"lib/ansible/modules/net_tools/basics/uri.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21005\": [\n    \"lib/ansible/modules/packaging/language/maven_artifact.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21006\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21012\": [], \n  \"https://github.com/ansible/ansible/issues/21048\": [\n    \"lib/ansible/modules/windows/win_stat.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21077\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21079\": [], \n  \"https://github.com/ansible/ansible/issues/21090\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21091\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21093\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21094\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21112\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21122\": [\n    \"lib/ansible/modules/cloud/google/gce.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21125\": [\n    \"lib/ansible/modules/cloud/openstack/os_security_group_rule.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21131\": [], \n  \"https://github.com/ansible/ansible/issues/21140\": [\n    \"lib/ansible/modules/system/lvol.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21143\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21145\": [\n    \"lib/ansible/modules/packaging/os/zypper.py\", \n    \"lib/ansible/playbook/become.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21152\": [\n    \"lib/ansible/modules/identity/ipa/ipa_sudorule.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21156\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21161\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21185\": [], \n  \"https://github.com/ansible/ansible/issues/21188\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21200\": [], \n  \"https://github.com/ansible/ansible/issues/21208\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21239\": [], \n  \"https://github.com/ansible/ansible/issues/21244\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21259\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21279\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21298\": [], \n  \"https://github.com/ansible/ansible/issues/21304\": [\n    \"lib/ansible/modules/commands/raw.py\", \n    \"lib/ansible/modules/commands/shell.py\", \n    \"lib/ansible/template\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21328\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21348\": [\n    \"lib/ansible/modules/cloud/docker/docker_login.py\", \n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21350\": [\n    \"lib/ansible/modules/network/eos/eos_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21368\": [\n    \"lib/ansible/modules/source_control/subversion.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21389\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21397\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21401\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21426\": [\n    \"lib/ansible/modules/system/firewalld.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21439\": [\n    \"lib/ansible/modules/system/firewalld.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21453\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21507\": [\n    \"lib/ansible/modules/network/nxos/nxos_acl.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21522\": [\n    \"lib/ansible/modules/cloud/openstack/os_port.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21528\": [], \n  \"https://github.com/ansible/ansible/issues/21530\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21536\": [\n    \"lib/ansible/plugins/lookup/credstash.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21537\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21538\": [\n    \"lib/ansible/modules/windows/win_chocolatey.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21547\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21556\": [], \n  \"https://github.com/ansible/ansible/issues/21562\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21563\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21573\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21577\": [], \n  \"https://github.com/ansible/ansible/issues/21578\": [\n    \"lib/ansible/modules/files/ini_file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21588\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vol.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21591\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21594\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21595\": [\n    \"lib/ansible/parsing/mod_args.py\", \n    \"lib/ansible/plugins\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21619\": [\n    \"lib/ansible/modules/packaging/os/yum.py\", \n    \"test/units/modules/packaging/os/test_yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21662\": [\n    \"contrib/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21683\": [\n    \"lib/ansible/modules/network/asa/asa_acl.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21690\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21704\": [\n    \"lib/ansible/modules/cloud/docker/docker_image.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21705\": [], \n  \"https://github.com/ansible/ansible/issues/21766\": [\n    \"lib/ansible/modules/packaging/os/apt_repository.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21769\": [\n    \"lib/ansible/modules/cloud/amazon/cloudformation.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21773\": [\n    \"lib/ansible/executor/task_executor.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21774\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21797\": [\n    \"lib/ansible/modules/windows/win_command.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21825\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21842\": [\n    \"docs\", \n    \"lib/ansible/modules/utilities/logic/fail.py\", \n    \"lib/ansible/playbook/block.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21852\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21860\": [\n    \"contrib/inventory/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21871\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21872\": [], \n  \"https://github.com/ansible/ansible/issues/21885\": [\n    \"lib/ansible/playbook/role\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21886\": [\n    \"lib/ansible/modules/windows/win_chocolatey.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21890\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21897\": [\n    \"lib/ansible/modules/network/eos/eos_config.py\", \n    \"lib/ansible/modules/network/ios/ios_config.py\", \n    \"lib/ansible/modules/network/nxos/nxos_config.py\", \n    \"lib/ansible/modules/network/vyos/vyos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21899\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21910\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21914\": [\n    \"lib/ansible/plugins/filter/core.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21928\": [\n    \"lib/ansible/modules/packaging/os/portage.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/21989\": [\n    \"lib/ansible/modules/database/misc/elasticsearch_plugin.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22004\": [\n    \"lib/ansible/modules/cloud/amazon/s3_sync.py\", \n    \"lib/ansible/modules/files/archive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22009\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22025\": [\n    \"lib/ansible/modules/utilities/logic/set_fact.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22034\": [\n    \"lib/ansible/modules/notification/mqtt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22114\": [\n    \"lib/ansible/modules/cloud/amazon/cloudwatchevent_rule.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22116\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22135\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22140\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22147\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22152\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22169\": [], \n  \"https://github.com/ansible/ansible/issues/22171\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22192\": [\n    \"lib/ansible/modules/network/netconf/netconf_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22197\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22203\": [], \n  \"https://github.com/ansible/ansible/issues/22204\": [\n    \"lib/ansible/modules/cloud/google/gce.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22240\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest_snapshot.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22241\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22244\": [\n    \"lib/ansible/modules/cloud/openstack/os_server.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22245\": [\n    \"lib/ansible/modules/packaging/language/easy_install.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22248\": [], \n  \"https://github.com/ansible/ansible/issues/22249\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22254\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22255\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22257\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22258\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22265\": [\n    \"lib/ansible/modules/packaging/os/redhat_subscription.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22267\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22272\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22279\": [\n    \"lib/ansible/modules/system/systemd.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22287\": [\n    \"lib/ansible/modules/net_tools/ldap/ldap_attr.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22288\": [], \n  \"https://github.com/ansible/ansible/issues/22298\": [\n    \"lib/ansible/modules/monitoring/nagios.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22303\": [\n    \"lib/ansible/modules/system/systemd.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22314\": [\n    \"lib/ansible/modules/web_infrastructure/jira.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22320\": [\n    \"lib/ansible/modules/packaging/os/dnf.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22335\": [\n    \"lib/ansible/parsing/vault\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22337\": [\n    \"lib/ansible/modules/packaging/language/maven_artifact.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22338\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22349\": [], \n  \"https://github.com/ansible/ansible/issues/22352\": [\n    \"lib/ansible/modules/system/hostname.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22356\": [], \n  \"https://github.com/ansible/ansible/issues/22358\": [\n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22362\": [], \n  \"https://github.com/ansible/ansible/issues/22366\": [\n    \"lib/ansible/modules/utilities/logic/wait_for.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22371\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22374\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22382\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22396\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22399\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22402\": [\n    \"lib/ansible/modules/system/gluster_volume.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22404\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22407\": [\n    \"lib/ansible/modules/packaging/os/dnf.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22409\": [\n    \"lib/ansible/modules/network/dellos6/dellos6_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22411\": [\n    \"lib/ansible/modules/web_infrastructure/letsencrypt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22426\": [], \n  \"https://github.com/ansible/ansible/issues/22427\": [\n    \"lib/ansible/modules/windows/win_domain_membership.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22430\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22437\": [\n    \"lib/ansible/modules/cloud/openstack/os_image.py\", \n    \"lib/ansible/modules/cloud/openstack/os_subnet.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22458\": [\n    \"lib/ansible/modules/cloud/amazon/cloudformation.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22468\": [\n    \"lib/ansible/cli\", \n    \"lib/ansible/constants.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22469\": [\n    \"lib/ansible/cli\", \n    \"lib/ansible/playbook/play_context.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22470\": [\n    \"lib/ansible/cli\", \n    \"lib/ansible/constants.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22498\": [\n    \"test/integration\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22509\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22531\": [\n    \"lib/ansible/template\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22532\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22534\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vol.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22537\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22542\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22547\": [], \n  \"https://github.com/ansible/ansible/issues/22556\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22561\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22562\": [], \n  \"https://github.com/ansible/ansible/issues/22568\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22571\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22577\": [], \n  \"https://github.com/ansible/ansible/issues/22591\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22596\": [\n    \"lib/ansible/modules/cloud/docker/docker_image.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22599\": [\n    \"lib/ansible/modules/source_control/subversion.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22602\": [], \n  \"https://github.com/ansible/ansible/issues/22612\": [\n    \"lib/ansible/modules/system/systemd.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22617\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22622\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22644\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest_snapshot.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22647\": [\n    \"lib/ansible/modules/packaging/os/apt_key.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22663\": [], \n  \"https://github.com/ansible/ansible/issues/22673\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22690\": [], \n  \"https://github.com/ansible/ansible/issues/22691\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22699\": [\n    \"lib/ansible/modules/system/cron.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22713\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22733\": [], \n  \"https://github.com/ansible/ansible/issues/22738\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22773\": [\n    \"lib/ansible/modules/files/copy.py\", \n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22781\": [\n    \"lib/ansible/modules/packaging/os/pkg5.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22789\": \"lib/ansible/modules/windows/win_package.ps1\", \n  \"https://github.com/ansible/ansible/issues/22808\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22810\": [], \n  \"https://github.com/ansible/ansible/issues/22825\": [\n    \"lib/ansible/modules/network/sros/sros_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22826\": [\n    \"lib/ansible/modules/network/sros/sros_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22828\": [\n    \"lib/ansible/modules/network/sros/sros_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22834\": [\n    \"lib/ansible/modules/web_infrastructure/django_manage.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22835\": [], \n  \"https://github.com/ansible/ansible/issues/22863\": [\n    \"lib/ansible/modules/network/ios/ios_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22864\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22870\": [], \n  \"https://github.com/ansible/ansible/issues/22881\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22892\": [\n    \"lib/ansible/modules/windows/win_chocolatey.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22905\": [\n    \"contrib/inventory/azure_rm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22922\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22928\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22930\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22944\": [], \n  \"https://github.com/ansible/ansible/issues/22945\": [\n    \"lib/ansible/modules/messaging/rabbitmq_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22946\": [\n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22947\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22953\": [\n    \"lib/ansible/modules/messaging/rabbitmq_queue.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22967\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22977\": [\n    \"lib/ansible/modules/windows/win_firewall_rule.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22992\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"https://github.com/ansible/ansible/issues/22993\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"lib/ansible/modules/cloud/docker/docker_image.py\", \n    \"lib/ansible/modules/cloud/docker/docker_image_facts.py\", \n    \"lib/ansible/modules/cloud/docker/docker_login.py\", \n    \"lib/ansible/modules/cloud/docker/docker_network.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23013\": [\n    \"lib/ansible/modules/packaging/os/redhat_subscription.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23014\": [\n    \"lib/ansible/modules/packaging/os/redhat_subscription.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23017\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23023\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23039\": [\n    \"lib/ansible/modules/source_control/gitlab_project.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23066\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23073\": [\n    \"lib/ansible/modules/system/iptables.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23078\": [\n    \"lib/ansible/parsing/yaml/dumper.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23090\": [\n    \"lib/ansible/modules/storage/zfs/zfs.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23095\": [\n    \"contrib/inventory/docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23103\": [], \n  \"https://github.com/ansible/ansible/issues/23118\": [], \n  \"https://github.com/ansible/ansible/issues/23142\": [\n    \"lib/ansible/modules/network/sros/sros_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23144\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23155\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23159\": [\n    \"lib/ansible/modules/utilities/logic/set_fact.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23169\": [\n    \"lib/ansible/plugins/callback/json.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23170\": [\n    \"contrib/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23174\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23182\": [\n    \"lib/ansible/modules/net_tools/basics/get_url.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23183\": [\n    \"lib/ansible/modules/windows/win_robocopy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23198\": [\n    \"lib/ansible/modules/files/blockinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23203\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23204\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23215\": [\n    \"lib/ansible/modules/windows/win_acl.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23216\": [], \n  \"https://github.com/ansible/ansible/issues/23220\": [\n    \"lib/ansible/modules/packaging/os/apt.py\", \n    \"lib/ansible/modules/packaging/os/package.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23229\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23243\": [\n    \"lib/ansible/modules/network/sros/sros_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23247\": [], \n  \"https://github.com/ansible/ansible/issues/23248\": [], \n  \"https://github.com/ansible/ansible/issues/23257\": [\n    \"lib/ansible/modules/packaging/os/zypper_repository.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23263\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23269\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23287\": [\n    \"lib/ansible/modules/cloud/openstack/os_server.py\", \n    \"lib/ansible/modules/inventory/add_host.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23291\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23296\": [], \n  \"https://github.com/ansible/ansible/issues/23301\": [\n    \"lib/ansible/modules/windows/win_shell.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23320\": [], \n  \"https://github.com/ansible/ansible/issues/23324\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23327\": [\n    \"lib/ansible/playbook/role/requirement.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23340\": [], \n  \"https://github.com/ansible/ansible/issues/23351\": [\n    \"lib/ansible/modules/utilities/logic/_include.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23354\": [\n    \"lib/ansible/modules/cloud/openstack/os_server.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23377\": [\n    \"lib/ansible/modules/utilities/logic/debug.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23379\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23390\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23395\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23401\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23419\": [\n    \"lib/ansible/modules/cloud/amazon/cloudformation_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23421\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23435\": [\n    \"lib/ansible/modules/cloud/amazon/route53.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23437\": [\n    \"lib/ansible/modules/network/f5/bigip_gtm_wide_ip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23439\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23446\": [\n    \"lib/ansible/modules/packaging/os/pkgng.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23457\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23458\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23459\": [], \n  \"https://github.com/ansible/ansible/issues/23468\": [\n    \"lib/ansible/modules/packaging/language/gem.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23470\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23475\": [\n    \"lib/ansible/modules/packaging/os/urpmi.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23493\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23522\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_vswitch.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23534\": [\n    \"lib/ansible/modules/packaging/language/easy_install.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23539\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23545\": [], \n  \"https://github.com/ansible/ansible/issues/23546\": [\n    \"lib/ansible/modules/system/authorized_key.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23547\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23549\": [\n    \"lib/ansible/modules/packaging/language/gem.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23558\": [\n    \"lib/ansible/modules/packaging/os/rpm_key.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23563\": [], \n  \"https://github.com/ansible/ansible/issues/23564\": [\n    \"lib/ansible/modules/remote_management/foreman/katello.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23570\": [\n    \"lib/ansible/modules/cloud/openstack/os_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23575\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23578\": [], \n  \"https://github.com/ansible/ansible/issues/23580\": [], \n  \"https://github.com/ansible/ansible/issues/23590\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23594\": [], \n  \"https://github.com/ansible/ansible/issues/23601\": [], \n  \"https://github.com/ansible/ansible/issues/23602\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23606\": [\n    \"lib/ansible/modules/net_tools/haproxy.py\", \n    \"lib/ansible/modules/utilities/logic/debug.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23607\": [\n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23609\": [\n    \"lib/ansible/playbook/role/include.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23618\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23624\": [\n    \"lib/ansible/modules/utilities/logic/set_fact.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23649\": [\n    \"lib/ansible/modules/windows/win_scheduled_task.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23657\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_privs.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23660\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23675\": [], \n  \"https://github.com/ansible/ansible/issues/23676\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23690\": [\n    \"lib/ansible/modules/packaging/os/apt_repository.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23693\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23695\": [\n    \"lib/ansible/modules/system/facter.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23706\": [], \n  \"https://github.com/ansible/ansible/issues/23711\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23723\": [\n    \"lib/ansible/modules/network/asa/asa_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23724\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23727\": [], \n  \"https://github.com/ansible/ansible/issues/23730\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23733\": [\n    \"lib/ansible/playbook/role/requirement.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23751\": [], \n  \"https://github.com/ansible/ansible/issues/23759\": [], \n  \"https://github.com/ansible/ansible/issues/23765\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23766\": [\n    \"lib/ansible/modules/utilities/logic/wait_for_connection.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23772\": [\n    \"contrib/inventory/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23774\": [\n    \"lib/ansible/modules/utilities/logic/wait_for_connection.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23784\": [\n    \"examples/scripts/ConfigureRemotingForAnsible.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23785\": [\n    \"lib/ansible/modules/commands/raw.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23799\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23813\": [\n    \"lib/ansible/modules/system/puppet.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23816\": [\n    \"lib/ansible/plugins/lookup/passwordstore.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23828\": [\n    \"lib/ansible/modules/network/nxos/nxos_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23836\": [], \n  \"https://github.com/ansible/ansible/issues/23841\": [\n    \"lib/ansible/modules/system/sefcontext.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23843\": [], \n  \"https://github.com/ansible/ansible/issues/23851\": [\n    \"lib/ansible/modules/commands/expect.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23863\": [], \n  \"https://github.com/ansible/ansible/issues/23880\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23895\": [\n    \"lib/ansible/modules/system/firewalld.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23902\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23905\": [\n    \"lib/ansible/modules/system/sysctl.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23909\": [\n    \"lib/ansible/modules/cloud/openstack/os_keystone_endpoint.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23912\": [], \n  \"https://github.com/ansible/ansible/issues/23914\": [\n    \"lib/ansible/modules/system/parted.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23922\": [\n    \"lib/ansible/modules/network/asa/asa_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23951\": [\n    \"lib/ansible/modules/windows/win_iis_webapppool.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23957\": [], \n  \"https://github.com/ansible/ansible/issues/23958\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23970\": [], \n  \"https://github.com/ansible/ansible/issues/23976\": [\n    \"lib/ansible/modules/database/mysql/mysql_replication.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/23980\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_ami_find.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24004\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24015\": [\n    \"lib/ansible/modules/monitoring/zabbix/zabbix_maintenance.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24036\": [], \n  \"https://github.com/ansible/ansible/issues/24045\": [\n    \"lib/ansible/modules/cloud/google/gce.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24057\": [\n    \"lib/ansible/modules/commands/script.py\", \n    \"lib/ansible/modules/windows\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24084\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24098\": [\n    \"lib/ansible/modules/windows/win_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24113\": [], \n  \"https://github.com/ansible/ansible/issues/24115\": [\n    \"lib/ansible/modules/system/ping.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24124\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24125\": [\n    \"lib/ansible/modules/files/archive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24130\": [\n    \"lib/ansible/modules/network/ios/ios_command.py\", \n    \"lib/ansible/modules/network/nxos/nxos_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24136\": [], \n  \"https://github.com/ansible/ansible/issues/24137\": [], \n  \"https://github.com/ansible/ansible/issues/24139\": [\n    \"contrib/inventory/proxmox.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24148\": [\n    \"lib/ansible/modules/system/sysctl.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24152\": [\n    \"lib/ansible/module_utils\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24161\": [\n    \"lib/ansible/modules/packaging/os/dnf.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24169\": [], \n  \"https://github.com/ansible/ansible/issues/24181\": [], \n  \"https://github.com/ansible/ansible/issues/24192\": [\n    \"lib/ansible/modules/network/sros/sros_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24193\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24195\": [], \n  \"https://github.com/ansible/ansible/issues/24197\": [], \n  \"https://github.com/ansible/ansible/issues/24203\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest_snapshot.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24207\": [], \n  \"https://github.com/ansible/ansible/issues/24213\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest_snapshot.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24214\": [\n    \"lib/ansible/modules/cloud/amazon/elasticache.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24215\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24225\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24236\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"lib/ansible/modules/cloud/docker/docker_image.py\", \n    \"lib/ansible/modules/cloud/docker/docker_network.py\", \n    \"lib/ansible/modules/cloud/docker/docker_volume.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24241\": [\n    \"lib/ansible/modules/web_infrastructure/jenkins_plugin.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24243\": [\n    \"lib/ansible/modules/identity/ipa/ipa_hbacrule.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24253\": [\n    \"lib/ansible/plugins/lookup/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24273\": [\n    \"contrib/inventory/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24278\": [\n    \"lib/ansible/modules/system/alternatives.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24285\": [], \n  \"https://github.com/ansible/ansible/issues/24289\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24294\": [\n    \"lib/ansible/modules/files/ini_file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24295\": [\n    \"lib/ansible/modules/system/setup.py\", \n    \"lib/ansible/modules/utilities/helper/meta.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24298\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24302\": \"lib/ansible/modules/files/stat.py\", \n  \"https://github.com/ansible/ansible/issues/24319\": [\n    \"lib/ansible/plugins/filter/json_query.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24326\": [], \n  \"https://github.com/ansible/ansible/issues/24327\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24333\": [\n    \"lib/ansible/modules/windows/win_chocolatey.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24340\": [\n    \"lib/ansible/modules/cloud/amazon/rds_param_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24348\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24351\": [\n    \"lib/ansible/modules/system/alternatives.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24356\": [\n    \"lib/ansible/modules/system/filesystem.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24365\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24373\": [], \n  \"https://github.com/ansible/ansible/issues/24389\": [\n    \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24394\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24407\": [\n    \"lib/ansible/modules/monitoring/zabbix/zabbix_host.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24411\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24415\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24418\": [\n    \"lib/ansible/modules/database/mysql/mysql_db.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24447\": [\n    \"lib/ansible/modules/network/iosxr/iosxr_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24450\": [\n    \"lib/ansible/modules/system/systemd.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24453\": [\n    \"lib/ansible/modules/system/sysctl.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24458\": [], \n  \"https://github.com/ansible/ansible/issues/24464\": [\n    \"lib/ansible/modules/commands/raw.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24466\": [\n    \"lib/ansible/modules/network/asa/asa_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24473\": [], \n  \"https://github.com/ansible/ansible/issues/24475\": [\n    \"lib/ansible/modules/cloud/amazon/elasticache_parameter_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24481\": [\n    \"lib/ansible/modules/utilities/logic/_include.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24482\": [\n    \"lib/ansible/executor/module_common.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24492\": [\n    \"docs\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24498\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24502\": [], \n  \"https://github.com/ansible/ansible/issues/24506\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24508\": [\n    \"lib/ansible/modules/monitoring/zabbix/zabbix_host.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24529\": [\n    \"lib/ansible/modules/system/firewalld.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24530\": [\n    \"lib/ansible/modules/system/puppet.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24537\": [], \n  \"https://github.com/ansible/ansible/issues/24538\": [], \n  \"https://github.com/ansible/ansible/issues/24541\": [], \n  \"https://github.com/ansible/ansible/issues/24543\": [\n    \"lib/ansible/playbook/block.py\", \n    \"lib/ansible/playbook/task.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24545\": [\n    \"lib/ansible/plugins/inventory/script.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24546\": [\n    \"contrib/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24548\": [], \n  \"https://github.com/ansible/ansible/issues/24551\": [], \n  \"https://github.com/ansible/ansible/issues/24569\": [\n    \"lib/ansible/modules/windows/win_chocolatey.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24572\": \"lib/ansible/modules/windows/setup.ps1\", \n  \"https://github.com/ansible/ansible/issues/24574\": \"lib/ansible/modules/windows/setup.ps1\", \n  \"https://github.com/ansible/ansible/issues/24629'\": \"lib/ansible/module_utils/facts\", \n  \"https://github.com/ansible/ansible/issues/24630\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24633\": [\n    \"lib/ansible/modules/files/copy.py\", \n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24644\": [], \n  \"https://github.com/ansible/ansible/issues/24647\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_vswitch.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24648\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24651\": [\n    \"lib/ansible/modules/system/known_hosts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24672\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24674\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24684\": [\n    \"lib/ansible/playbook/base.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24694\": [\n    \"lib/ansible/modules/cloud/openstack/os_port.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24705\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24719\": [\n    \"lib/ansible/modules/utilities/logic/pause.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24724\": [\n    \"lib/ansible/modules/packaging/language/maven_artifact.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24726\": [], \n  \"https://github.com/ansible/ansible/issues/24728\": [\n    \"lib/ansible/modules/database/mysql/mysql_db.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24729\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24735\": [\n    \"lib/ansible/modules/monitoring/zabbix/zabbix_host.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24743\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24746\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24757\": [\n    \"lib/ansible/modules/cloud/amazon/lambda.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24786\": [\n    \"lib/ansible/modules/cloud/openstack/os_server.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24788\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24833\": [], \n  \"https://github.com/ansible/ansible/issues/24834\": [\n    \"lib/ansible/modules/cloud/amazon/route53.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24836\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24837\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24862\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24864\": [\n    \"lib/ansible/modules/web_infrastructure/jenkins_plugin.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24874\": [\n    \"lib/ansible/modules/network/sros/sros_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24879\": [], \n  \"https://github.com/ansible/ansible/issues/24884\": [\n    \"lib/ansible/modules/windows/win_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24886\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_ami_find.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24887\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24907\": [\n    \"lib/ansible/modules/cloud/amazon/s3_logging.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24921\": [\n    \"lib/ansible/playbook/role\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24927\": [\n    \"contrib/inventory/azure_rm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24928\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24942\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24964\": [\n    \"lib/ansible/modules/monitoring/zabbix/zabbix_host.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24979\": [], \n  \"https://github.com/ansible/ansible/issues/24983\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24989\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24997\": [\n    \"lib/ansible/modules/packaging/os/rhn_register.py\", \n    \"test/units/modules/packaging/os/test_rhn_register.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/24998\": [\n    \"lib/ansible/modules/network/junos/junos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25000\": [], \n  \"https://github.com/ansible/ansible/issues/25001\": [\n    \"lib/ansible/modules/utilities/helper/meta.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25005\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25017\": [\n    \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_launch.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25020\": [\n    \"lib/ansible/modules/utilities/logic/wait_for.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25022\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_privs.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25026\": [\n    \"lib/ansible/modules/files/ini_file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25032\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25033\": [\n    \"lib/ansible/modules/system/parted.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25036\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25040\": [\n    \"lib/ansible/modules/cloud/docker/docker_image.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25057\": [], \n  \"https://github.com/ansible/ansible/issues/25065\": [\n    \"lib/ansible/modules/windows/win_nssm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25068\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25070\": [], \n  \"https://github.com/ansible/ansible/issues/25072\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25076\": [\n    \"lib/ansible/modules/web_infrastructure/jenkins_job.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25077\": [\n    \"lib/ansible/modules/windows/win_lineinfile.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25086\": [\n    \"contrib/inventory/vmware_inventory.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25091\": [], \n  \"https://github.com/ansible/ansible/issues/25097\": [\n    \"lib/ansible/module_utils/basic.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25099\": [\n    \"lib/ansible/modules/system/iptables.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25100\": [\n    \"lib/ansible/modules/system/iptables.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25109\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25112\": [\n    \"lib/ansible/modules/system/selinux.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25113\": [\n    \"contrib/inventory/proxmox.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25122\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25133\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_vmotion.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25142\": [\n    \"lib/ansible/modules/packaging/language/gem.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25149\": [\n    \"lib/ansible/modules/system/iptables.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25153\": [\n    \"lib/ansible/modules/system/iptables.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25157\": [\n    \"lib/ansible/modules/windows/win_firewall_rule.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25160\": [], \n  \"https://github.com/ansible/ansible/issues/25161\": [\n    \"lib/ansible/modules/cloud/amazon/redshift.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25168\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25179\": [\n    \"lib/ansible/plugins/lookup\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25182\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25201\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25216\": [\n    \"lib/ansible/modules/windows/win_dns_client.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25233\": [\n    \"bin/ansible-pull\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25242\": [], \n  \"https://github.com/ansible/ansible/issues/25244\": [], \n  \"https://github.com/ansible/ansible/issues/25263\": [\n    \"lib/ansible/modules/net_tools/basics/get_url.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25268\": [\n    \"examples/ansible.cfg\", \n    \"lib/ansible/galaxy/data/container_enabled/tests/ansible.cfg\", \n    \"test/integration/targets/pull/pull-integration-test/ansible.cfg\", \n    \"test/sanity/ansible.cfg\", \n    \"test/units/ansible.cfg\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25271\": [\n    \"lib/ansible/modules/utilities/logic/set_fact.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25281\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25282\": [\n    \"lib/ansible/modules/windows/win_updates.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25291\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25298\": [\n    \"lib/ansible/modules/windows/win_updates.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25299\": [\n    \"lib/ansible/modules/remote_management/foreman/foreman.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25302\": [\n    \"lib/ansible/modules/windows/win_template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25303\": [], \n  \"https://github.com/ansible/ansible/issues/25311\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25314\": [\n    \"lib/ansible/modules/files/find.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25319\": [\n    \"lib/ansible/modules/network/asa/asa_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25329\": [\n    \"bin\", \n    \"docs/bin/plugin_formatter.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25333\": \"lib/ansible/modules/files/tempfile.py\", \n  \"https://github.com/ansible/ansible/issues/25337\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25344\": [\n    \"lib/ansible/plugins/connection\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25346\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25353\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25360\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25366\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25377\": [\n    \"lib/ansible/modules/windows/win_scheduled_task.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25378\": [\n    \"lib/ansible/modules/cloud/vmware/vca_vapp.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25384\": null, \n  \"https://github.com/ansible/ansible/issues/25389\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25400\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25402\": [\n    \"lib/ansible/modules/net_tools/basics/get_url.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25403\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25412\": [], \n  \"https://github.com/ansible/ansible/issues/25414\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25420\": [\n    \"lib/ansible/modules/windows/win_uri.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25421\": [\n    \"lib/ansible/galaxy\", \n    \"lib/ansible/module_utils/urls.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25429\": [\n    \"lib/ansible/modules/database/mongodb/mongodb_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25431\": [\n    \"lib/ansible/modules/files/copy.py\", \n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25436\": [], \n  \"https://github.com/ansible/ansible/issues/25465\": [\n    \"lib/ansible/modules/windows/win_iis_website.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25466\": [\n    \"lib/ansible/modules/windows/win_iis_webbinding.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25467\": [\n    \"lib/ansible/modules/windows/win_iis_webapppool.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25469\": [], \n  \"https://github.com/ansible/ansible/issues/25470\": [\n    \"lib/ansible/modules/windows/win_iis_webbinding.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25471\": [\n    \"lib/ansible/modules/windows/win_iis_webapplication.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25472\": [\n    \"lib/ansible/modules/windows/win_iis_webbinding.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25473\": [\n    \"lib/ansible/modules/windows/win_iis_webbinding.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25474\": [\n    \"lib/ansible/modules/windows/win_acl.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25475\": [\n    \"lib/ansible/modules/windows/win_acl.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25476\": [\n    \"lib/ansible/modules/windows/win_iis_webapplication.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25478\": [\n    \"lib/ansible/modules/windows/win_scheduled_task.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25480\": [], \n  \"https://github.com/ansible/ansible/issues/25481\": [\n    \"lib/ansible/modules/system/debconf.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25489\": [\n    \"lib/ansible/modules/cloud/lxd/lxd_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25491\": [\n    \"lib/ansible/playbook/handler.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25492\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25528\": [\n    \"lib/ansible/modules/clustering/pacemaker_cluster.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25532\": [], \n  \"https://github.com/ansible/ansible/issues/25542\": [], \n  \"https://github.com/ansible/ansible/issues/25543\": [\n    \"lib/ansible/modules/system/hostname.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25554\": [\n    \"lib/ansible/modules/net_tools/nsupdate.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25555\": [], \n  \"https://github.com/ansible/ansible/issues/25563\": [], \n  \"https://github.com/ansible/ansible/issues/25579\": [\n    \"lib/ansible/modules/net_tools/dnsimple.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25581\": [\n    \"lib/ansible/modules/packaging/os/redhat_subscription.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25584\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25608\": [], \n  \"https://github.com/ansible/ansible/issues/25626\": [\n    \"lib/ansible/modules/monitoring/sensu_check.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25629\": [\n    \"lib/ansible/modules/windows/win_scheduled_task.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25639\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25643\": [\n    \"lib/ansible/modules/files/find.py\", \n    \"lib/ansible/modules/files/stat.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25653\": [\n    \"lib/ansible/modules/clustering/kubernetes.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25655\": [\n    \"lib/ansible/modules/network/fortios/__init__.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25656\": [\n    \"lib/ansible/modules/clustering/kubernetes.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25659\": [\n    \"lib/ansible/modules/network/nxos/nxos_vlan.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25660\": [], \n  \"https://github.com/ansible/ansible/issues/25662\": null, \n  \"https://github.com/ansible/ansible/issues/25663\": [\n    \"lib/ansible/modules/network/eos/eos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25664\": [\n    \"lib/ansible/modules/packaging/os/redhat_subscription.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25665\": [], \n  \"https://github.com/ansible/ansible/issues/25667\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25678\": [], \n  \"https://github.com/ansible/ansible/issues/25679\": [\n    \"lib/ansible/modules/messaging/rabbitmq_exchange.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25681\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25683\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25684\": [\n    \"lib/ansible/modules/system/iptables.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25688\": [\n    \"lib/ansible/modules/cloud/google/gce.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25693\": [\n    \"lib/ansible/modules/system/alternatives.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25694\": [\n    \"lib/ansible/modules/system/alternatives.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25705\": [\n    \"lib/ansible/modules/windows/win_iis_webapppool.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25710\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25715\": [\n    \"test/sanity/validate-modules\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25717\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25725\": [\n    \"lib/ansible/module_utils/facts\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25729\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25732\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25739\": [\n    \"bin/ansible-vault\", \n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25743\": [], \n  \"https://github.com/ansible/ansible/issues/25746\": [\n    \"lib/ansible/modules/cloud/ovirt/ovirt_tags.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25757\": [\n    \"lib/ansible/utils/display.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25758\": [\n    \"lib/ansible/utils/display.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25759\": [\n    \"lib/ansible/utils/display.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25761\": [\n    \"lib/ansible/utils/display.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25763\": [\n    \"lib/ansible/utils/display.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25775\": [\n    \"lib/ansible/modules/cloud/openstack/README.md\", \n    \"lib/ansible/modules/cloud/openstack/__init__.py\", \n    \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n    \"lib/ansible/modules/cloud/openstack/os_auth.py\", \n    \"lib/ansible/modules/cloud/openstack/os_client_config.py\", \n    \"lib/ansible/modules/cloud/openstack/os_flavor_facts.py\", \n    \"lib/ansible/modules/cloud/openstack/os_floating_ip.py\", \n    \"lib/ansible/modules/cloud/openstack/os_group.py\", \n    \"lib/ansible/modules/cloud/openstack/os_image.py\", \n    \"lib/ansible/modules/cloud/openstack/os_image_facts.py\", \n    \"lib/ansible/modules/cloud/openstack/os_ironic.py\", \n    \"lib/ansible/modules/cloud/openstack/os_ironic_inspect.py\", \n    \"lib/ansible/modules/cloud/openstack/os_ironic_node.py\", \n    \"lib/ansible/modules/cloud/openstack/os_keypair.py\", \n    \"lib/ansible/modules/cloud/openstack/os_keystone_domain.py\", \n    \"lib/ansible/modules/cloud/openstack/os_keystone_domain_facts.py\", \n    \"lib/ansible/modules/cloud/openstack/os_keystone_endpoint.py\", \n    \"lib/ansible/modules/cloud/openstack/os_keystone_role.py\", \n    \"lib/ansible/modules/cloud/openstack/os_keystone_service.py\", \n    \"lib/ansible/modules/cloud/openstack/os_network.py\", \n    \"lib/ansible/modules/cloud/openstack/os_networks_facts.py\", \n    \"lib/ansible/modules/cloud/openstack/os_nova_flavor.py\", \n    \"lib/ansible/modules/cloud/openstack/os_nova_host_aggregate.py\", \n    \"lib/ansible/modules/cloud/openstack/os_object.py\", \n    \"lib/ansible/modules/cloud/openstack/os_port.py\", \n    \"lib/ansible/modules/cloud/openstack/os_port_facts.py\", \n    \"lib/ansible/modules/cloud/openstack/os_project.py\", \n    \"lib/ansible/modules/cloud/openstack/os_project_facts.py\", \n    \"lib/ansible/modules/cloud/openstack/os_quota.py\", \n    \"lib/ansible/modules/cloud/openstack/os_recordset.py\", \n    \"lib/ansible/modules/cloud/openstack/os_router.py\", \n    \"lib/ansible/modules/cloud/openstack/os_security_group.py\", \n    \"lib/ansible/modules/cloud/openstack/os_security_group_rule.py\", \n    \"lib/ansible/modules/cloud/openstack/os_server.py\", \n    \"lib/ansible/modules/cloud/openstack/os_server_action.py\", \n    \"lib/ansible/modules/cloud/openstack/os_server_facts.py\", \n    \"lib/ansible/modules/cloud/openstack/os_server_group.py\", \n    \"lib/ansible/modules/cloud/openstack/os_server_volume.py\", \n    \"lib/ansible/modules/cloud/openstack/os_stack.py\", \n    \"lib/ansible/modules/cloud/openstack/os_subnet.py\", \n    \"lib/ansible/modules/cloud/openstack/os_subnets_facts.py\", \n    \"lib/ansible/modules/cloud/openstack/os_user.py\", \n    \"lib/ansible/modules/cloud/openstack/os_user_facts.py\", \n    \"lib/ansible/modules/cloud/openstack/os_user_group.py\", \n    \"lib/ansible/modules/cloud/openstack/os_user_role.py\", \n    \"lib/ansible/modules/cloud/openstack/os_volume.py\", \n    \"lib/ansible/modules/cloud/openstack/os_zone.py\", \n    \"test/units/modules/cloud/openstack/__init__.py\", \n    \"test/units/modules/cloud/openstack/test_os_server.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25781\": [\n    \"lib/ansible/plugins/callback/logstash.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25783\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25792\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25793\": [\n    \"lib/ansible/plugins/callback/logstash.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25801\": [\n    \"lib/ansible/modules/clustering/consul.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25802\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25807\": [\n    \"lib/ansible/plugins/strategy/free.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25815\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25819\": [\n    \"lib/ansible/modules/system/timezone.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25820\": [], \n  \"https://github.com/ansible/ansible/issues/25823\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25831\": [], \n  \"https://github.com/ansible/ansible/issues/25842\": [\n    \"lib/ansible/modules/cloud/linode/linode.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25858\": [\n    \"lib/ansible/modules/network/eos/eos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25863\": [\n    \"lib/ansible/modules/identity/ipa/ipa_host.py\", \n    \"lib/ansible/modules/identity/ipa/ipa_user.py\", \n    \"lib/ansible/modules/identity/ipa/ipa_sudorule.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25878\": [\n    \"lib/ansible/modules/cloud/amazon/lambda.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25884\": [\n    \"lib/ansible/modules/cloud/amazon/s3_sync.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25892\": [\n    \"lib/ansible/modules/network/junos/junos_rpc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25897\": \"lib/ansible/modules/system/setup.py\", \n  \"https://github.com/ansible/ansible/issues/25916\": [\n    \"lib/ansible/modules/network/nxos/nxos_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25931\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25932\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25938\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25941\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25943\": [\n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25946\": \"lib/ansible/modules/network/nxos/nxos_hsrp.py\", \n  \"https://github.com/ansible/ansible/issues/25957\": [\n    \"contrib/inventory/gce.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25960\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25967\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25974\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25981\": [\n    \"lib/ansible/modules/cloud/amazon/efs.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25982\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25984\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest_find.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25988\": [\n    \"lib/ansible/modules/cloud/lxc/lxc_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25989\": [\n    \"lib/ansible/modules/network/junos/junos_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25991\": [\n    \"lib/ansible/modules/commands/shell.py\", \n    \"lib/ansible/modules/system/ping.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25993\": [\n    \"lib/ansible/modules/windows/setup.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25998\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/25999\": [\n    \"lib/ansible/modules/cloud/openstack/os_server.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26003\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\", \n  \"https://github.com/ansible/ansible/issues/26008\": [], \n  \"https://github.com/ansible/ansible/issues/26009\": [], \n  \"https://github.com/ansible/ansible/issues/26014\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26021\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26023\": [\n    \"lib/ansible/modules/cloud/amazon/iam_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26035\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26036\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26037\": [], \n  \"https://github.com/ansible/ansible/issues/26038\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26039\": [\n    \"lib/ansible/plugins/cache/redis.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26050\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26064\": [\n    \"lib/ansible/modules/packaging/os/homebrew.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26085\": [\n    \"test/units/cli/test_galaxy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26091\": [\n    \"lib/ansible/parsing/vault\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26093\": [], \n  \"https://github.com/ansible/ansible/issues/26095\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n  \"https://github.com/ansible/ansible/issues/26108\": [\n    \"lib/ansible/modules/cloud/openstack/os_server.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26117\": [], \n  \"https://github.com/ansible/ansible/issues/26120\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26130\": [\n    \"lib/ansible/modules/network/nxos/nxos_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26137\": [\n    \"lib/ansible/playbook/role\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26140\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26146\": [\n    \"lib/ansible/modules/network/ios/ios_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26148\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26154\": [\n    \"lib/ansible/constants.py\", \n    \"test/units/test_constants.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26162\": \"lib/ansible/modules/network/nxos/nxos_system.py\", \n  \"https://github.com/ansible/ansible/issues/26171\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26172\": [\n    \"lib/ansible/modules/system/filesystem.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26173\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26187\": [\n    \"lib/ansible/modules/system/make.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26190\": [\n    \"lib/ansible/parsing/vault\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26199\": [\n    \"lib/ansible/modules/web_infrastructure/jenkins_plugin.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26224\": [\n    \"lib/ansible/modules/network/ios/ios_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26240\": [\n    \"lib/ansible/modules/cloud/vmware/vca_fw.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26243\": [\n    \"lib/ansible/module_utils/gcp.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26247\": [\n    \"contrib/inventory/cloudforms.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26265\": [\n    \"lib/ansible/modules/system/filesystem.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26269\": [\n    \"lib/ansible/modules/system/alternatives.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26279\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26280\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26292\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26294\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26311\": [], \n  \"https://github.com/ansible/ansible/issues/26317\": [\n    \"contrib/inventory/openstack.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26322\": [], \n  \"https://github.com/ansible/ansible/issues/26346\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26347\": [\n    \"lib/ansible/plugins/connection\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26359\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26364\": [], \n  \"https://github.com/ansible/ansible/issues/26369\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26371\": [\n    \"lib/ansible/modules/network/nxos/nxos_nxapi.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26374\": [\n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26384\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26385\": [], \n  \"https://github.com/ansible/ansible/issues/26386\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_vm_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26419\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26420\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26424'\": \"lib/ansible/module_utils/facts\", \n  \"https://github.com/ansible/ansible/issues/26428\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26432\": [\n    \"lib/ansible/modules/network/ios/ios_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26433\": [\n    \"lib/ansible/modules/network/junos/junos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26467\": [\n    \"test/runner/ansible-test\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26480\": [\n    \"lib/ansible/inventory/manager.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26494\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26503\": [], \n  \"https://github.com/ansible/ansible/issues/26514\": [], \n  \"https://github.com/ansible/ansible/issues/26518\": [\n    \"lib/ansible/modules/clustering/consul_kv.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26521\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26537\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26543\": [], \n  \"https://github.com/ansible/ansible/issues/26563\": [\n    \"hacking/test-module\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26581\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26583\": [], \n  \"https://github.com/ansible/ansible/issues/26585\": [], \n  \"https://github.com/ansible/ansible/issues/26586\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26589\": [\n    \"lib/ansible/modules/cloud/google/gce_mig.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26592\": [\n    \"lib/ansible/modules/cloud/amazon/sqs_queue.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26603\": [\n    \"lib/ansible/modules/cloud/amazon/cloudformation.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26608\": [\n    \"bin/ansible-connection\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26623\": [], \n  \"https://github.com/ansible/ansible/issues/26628\": [\n    \"lib/ansible/modules/network/ios/ios_command.py\", \n    \"lib/ansible/modules/network/ios/ios_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26631\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26636\": [], \n  \"https://github.com/ansible/ansible/issues/26639\": [\n    \"lib/ansible/plugins/filter/core.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26647\": [\n    \"bin/ansible-playbook\", \n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26685\": [\n    \"lib/ansible/modules/cloud/openstack/os_server.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26696\": [\n    \"lib/ansible/modules/cloud/amazon/s3_bucket.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26702\": [\n    \"lib/ansible/modules/identity/ipa/ipa_dnsrecord.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26708\": [\n    \"lib/ansible/modules/cloud/docker/docker_network.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26717\": [\n    \"lib/ansible/modules/network/nxos/nxos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26725\": [\n    \"lib/ansible/modules/network/ios/ios_vrf.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26751\": [], \n  \"https://github.com/ansible/ansible/issues/26755\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26756\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26759\": [\n    \"lib/ansible/modules/cloud/amazon/route53_zone.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26760\": [\n    \"lib/ansible/modules/cloud/openstack/os_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26762\": [\n    \"lib/ansible/modules/cloud/amazon/rds_subnet_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26763\": \"lib/ansible/modules/cloud/openstack/os_user_role.py\", \n  \"https://github.com/ansible/ansible/issues/26778\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26791\": [\n    \"lib/ansible/modules/cloud/misc/virt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26792\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26794\": [], \n  \"https://github.com/ansible/ansible/issues/26796\": [], \n  \"https://github.com/ansible/ansible/issues/26797\": [], \n  \"https://github.com/ansible/ansible/issues/26825\": [], \n  \"https://github.com/ansible/ansible/issues/26868\": [\n    \"lib/ansible/modules/packaging/os/dnf.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26875\": [\n    \"lib/ansible/modules/cloud/amazon/dynamodb_table.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26882\": [\n    \"test/sanity/validate-modules/__init__.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26883\": \"lib/ansible/modules/network/netconf\", \n  \"https://github.com/ansible/ansible/issues/26885\": [\n    \"lib/ansible/modules/windows/win_stat.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26890\": [\n    \"lib/ansible/modules/system/parted.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26897\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26898\": [\n    \"lib/ansible/modules/net_tools/basics/uri.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26901\": [\n    \"lib/ansible/modules/cloud/amazon/s3_sync.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26903\": [\n    \"lib/ansible/modules/identity/ipa/ipa_sudorule.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26905\": [\n    \"lib/ansible/modules/system/parted.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26916\": [], \n  \"https://github.com/ansible/ansible/issues/26919\": [\n    \"lib/ansible/modules/database/mysql/mysql_db.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26923\": [\n    \"lib/ansible/modules/web_infrastructure/apache2_module.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26937\": [\n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26940\": [\n    \"lib/ansible/modules/cloud/amazon/rds_param_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26958\": [\n    \"lib/ansible/modules/cloud/amazon/iam.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26959\": [\n    \"lib/ansible/modules/cloud/amazon/iam_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/26989\": [\n    \"lib/ansible/modules/system/pam_limits.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27010\": [\n    \"lib/ansible/modules/network/nxos/nxos_snmp_contact.py\", \n    \"lib/ansible/modules/network/nxos/nxos_snmp_location.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27024\": \"lib/ansible/modules/utilities/logic/_include.py\", \n  \"https://github.com/ansible/ansible/issues/27062\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27064\": [\n    \"lib/ansible/modules/cloud/misc/virt_net.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27071\": [], \n  \"https://github.com/ansible/ansible/issues/27072\": [], \n  \"https://github.com/ansible/ansible/issues/27077\": [\n    \"lib/ansible/modules/network/nxos/nxos_system.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27081\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27094\": [\n    \"lib/ansible/modules/network/asa/asa_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27096\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27097\": [\n    \"lib/ansible/modules/network/ios/ios_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27099\": [\n    \"lib/ansible/modules/cloud/amazon/s3_bucket.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27102\": [\n    \"lib/ansible/modules/packaging/language/maven_artifact.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27115\": [\n    \"lib/ansible/modules/network/ios/ios_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27124\": [\n    \"lib/ansible/modules/utilities/logic/assert.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27129\": [\n    \"lib/ansible/modules/network/nxos/nxos_vpc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27151\": [\n    \"lib/ansible/plugins/callback/debug.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27155\": [\n    \"lib/ansible/modules/windows/win_chocolatey.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27158\": [], \n  \"https://github.com/ansible/ansible/issues/27161\": [\n    \"lib/ansible/modules/network/sros/sros_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27163\": [], \n  \"https://github.com/ansible/ansible/issues/27179\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27181\": [\n    \"lib/ansible/modules/network/nxos/nxos_user.py\", \n    \"lib/ansible/modules/network/nxos/nxos_vtp_password.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27200\": [], \n  \"https://github.com/ansible/ansible/issues/27206\": [\n    \"lib/ansible/modules/windows/win_copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27210\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27214\": [], \n  \"https://github.com/ansible/ansible/issues/27222\": [\n    \"lib/ansible/plugins/filter\", \n    \"lib/ansible/plugins/lookup\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27229\": [], \n  \"https://github.com/ansible/ansible/issues/27232\": [\n    \"lib/ansible/modules/cloud/amazon/s3_bucket.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27233\": [\n    \"lib/ansible/modules/packaging/language/maven_artifact.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27237\": [], \n  \"https://github.com/ansible/ansible/issues/27240\": [\n    \"lib/ansible/modules/cloud/lxc/lxc_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27242\": [\n    \"lib/ansible/modules/network/ios/ios_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27243\": [\n    \"lib/ansible/modules/network/netconf/netconf_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27248\": [\n    \"lib/ansible/modules/windows/win_scheduled_task.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27262\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27266\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27268\": [], \n  \"https://github.com/ansible/ansible/issues/27273\": [], \n  \"https://github.com/ansible/ansible/issues/27275\": \"lib/ansible/modules/network/ios/ios_command.py\", \n  \"https://github.com/ansible/ansible/issues/27277\": [\n    \"lib/ansible/plugins/lookup/passwordstore.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27283\": [], \n  \"https://github.com/ansible/ansible/issues/27287\": [\n    \"lib/ansible/modules/system/pamd.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27293\": [\n    \"lib/ansible/modules/net_tools/basics/get_url.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27300\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27301\": [\n    \"lib/ansible/modules/messaging/rabbitmq_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27309\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27314\": [], \n  \"https://github.com/ansible/ansible/issues/27317\": [\n    \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27327\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_privs.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27332\": [\n    \"lib/ansible/modules/cloud/amazon/elb_application_lb.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27334\": [\n    \"lib/ansible/playbook/block.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27339\": [\n    \"lib/ansible/modules/network/nxos/nxos_ospf.py\", \n    \"test\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27340\": [\n    \"lib/ansible/modules/network/nxos/nxos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27345\": [\n    \"lib/ansible/modules/utilities/logic/_include.py\", \n    \"lib/ansible/modules/utilities/logic/include_role.py\", \n    \"lib/ansible/playbook/role\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27351\": [\n    \"lib/ansible/playbook/task.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27363\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27367\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27371\": [\n    \"lib/ansible/modules/cloud/google/gcpubsub.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27377\": [\n    \"lib/ansible/modules/packaging/os/dnf.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27383\": [\n    \"lib/ansible/modules/network/nxos/nxos_ntp.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27384\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27387\": [\n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27391\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27398\": [\n    \"lib/ansible/plugins/callback/foreman.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27401\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27402\": [\n    \"lib/ansible/modules/network/nxos/nxos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27403\": [\n    \"lib/ansible/modules/network/nxos/nxos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27413\": [\n    \"lib/ansible/modules/packaging/os/apt_key.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27419\": [\n    \"lib/ansible/plugins/action\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27424\": [], \n  \"https://github.com/ansible/ansible/issues/27426\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27445\": [\n    \"hacking/README.md\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27450\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27469\": [\n    \"lib/ansible/modules/cloud/amazon/route53.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27487\": [\n    \"lib/ansible/modules/cloud/amazon/cloudformation.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27490\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27493\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27496\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27497\": [\n    \"lib/ansible/modules/network/nxos/nxos_vlan.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27498\": [\n    \"lib/ansible/modules/network/nxos/_nxos_mtu.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27511\": [], \n  \"https://github.com/ansible/ansible/issues/27512\": [\n    \"lib/ansible/modules/network/nxos/nxos_config.py\", \n    \"lib/ansible/modules/network/nxos/nxos_interface.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27515\": [\n    \"lib/ansible/modules/network/nxos/nxos_feature.py\", \n    \"lib/ansible/modules/network/nxos/nxos_vtp_version.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27520\": [], \n  \"https://github.com/ansible/ansible/issues/27522\": [\n    \"lib/ansible/modules/network/nxos/nxos_vpc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27556\": [], \n  \"https://github.com/ansible/ansible/issues/27562\": [\n    \"lib/ansible/modules/network/nxos/nxos_vpc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27564\": [], \n  \"https://github.com/ansible/ansible/issues/27565\": [\n    \"lib/ansible/modules/utilities/helper/meta.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27591\": [\n    \"lib/ansible/modules/network/nxos/nxos_interface.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27595\": [\n    \"lib/ansible/modules/network/nxos/nxos_vrf_af.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27599\": [\n    \"lib/ansible/module_utils/api.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27600\": [\n    \"lib/ansible/modules/network/nxos/nxos_vrf_interface.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27609\": [\n    \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27617\": [\n    \"lib/ansible/modules/net_tools/basics/get_url.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27626\": [\n    \"lib/ansible/modules/files/blockinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27628\": [\n    \"lib/ansible/modules/cloud/lxc/lxc_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27630\": [\n    \"lib/ansible/modules/network/eos/eos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27631\": [\n    \"lib/ansible/modules/system/systemd.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27635\": [\n    \"lib/ansible/modules/system/pam_limits.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27643\": [\n    \"lib/ansible/modules/messaging/rabbitmq_exchange.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27654\": [\n    \"lib/ansible/modules/network/nxos/nxos_udld_interface.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27658\": [], \n  \"https://github.com/ansible/ansible/issues/27659\": [\n    \"lib/ansible/modules/network/nxos/nxos_snmp_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27663\": [\n    \"lib/ansible/modules/network/nxos/nxos_vtp_domain.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27664\": [\n    \"lib/ansible/modules/network/nxos/nxos_vtp_version.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27666\": [\n    \"lib/ansible/modules/windows/win_copy.py\", \n    \"lib/ansible/modules/windows/win_template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27675\": [\n    \"lib/ansible/template/vars.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27676\": [\n    \"lib/ansible/modules/network/nxos/nxos_vtp_password.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27677\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27681\": [\n    \"lib/ansible/modules/system/iptables.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27688\": [\n    \"lib/ansible/modules/cloud/amazon/lambda.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27706\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_eni.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27707\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27719\": [\n    \"lib/ansible/modules/files/acl.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27722\": [\n    \"lib/ansible/modules/database/misc/kibana_plugin.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27723\": [\n    \"lib/ansible/modules/windows/win_stat.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27729\": [], \n  \"https://github.com/ansible/ansible/issues/27737\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27743\": [\n    \"lib/ansible/modules/net_tools/basics/uri.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27744\": [\n    \"lib/ansible/modules/packaging/os/dnf.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27745\": [\n    \"lib/ansible/playbook/handler.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27747\": [], \n  \"https://github.com/ansible/ansible/issues/27749\": [\n    \"test/units/modules/web_infrastructure/test_jenkins_plugin.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27762\": [], \n  \"https://github.com/ansible/ansible/issues/27763\": [\n    \"lib/ansible/modules/system/java_cert.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27779\": [\n    \"lib/ansible/modules/files/replace.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27793\": [\n    \"lib/ansible/modules/network/ios/ios_command.py\", \n    \"lib/ansible/modules/network/ios/ios_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27798\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27799\": [\n    \"lib/ansible/modules/clustering/pacemaker_cluster.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27810\": [], \n  \"https://github.com/ansible/ansible/issues/27815\": [\n    \"lib/ansible/modules/network/junos/junos_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27816\": [\n    \"lib/ansible/modules/files/fetch.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27820\": [\n    \"lib/ansible/modules/web_infrastructure/jira.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27824\": [], \n  \"https://github.com/ansible/ansible/issues/27825\": [\n    \"lib/ansible/modules/utilities/logic/_include.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27836\": \"lib/ansible/modules/net_tools/basics/get_url.py\", \n  \"https://github.com/ansible/ansible/issues/27844\": [\n    \"lib/ansible/modules/packaging/os/dnf.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27845\": [], \n  \"https://github.com/ansible/ansible/issues/27857\": [\n    \"lib/ansible/modules/system/ping.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27860\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest_facts.py\", \n    \"lib/ansible/modules/cloud/vmware/vmware_guest_find.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27861\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_ami.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27864\": [\n    \"lib/ansible/modules/utilities/logic/include_vars.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27875\": [\n    \"lib/ansible/module_utils/facts\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27885\": [\n    \"lib/ansible/parsing/vault\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27893\": [], \n  \"https://github.com/ansible/ansible/issues/27894\": [\n    \"lib/ansible/modules/cloud/vmware/vca_vapp.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27895\": [\n    \"lib/ansible/modules/cloud/vmware/vca_vapp.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27903\": [\n    \"lib/ansible/modules/network/cloudengine/ce_command.py\", \n    \"lib/ansible/modules/network/cloudengine/ce_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27905\": [\n    \"lib/ansible/modules/cloud/ovirt\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27908\": [\n    \"lib/ansible/modules/network/nxos/nxos_snapshot.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27916\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27917\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27923\": [\n    \"lib/ansible/modules/cloud/lxd/lxd_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27924\": [\n    \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27925\": [\n    \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27926\": [\n    \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27933\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27934\": [], \n  \"https://github.com/ansible/ansible/issues/27939\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27940\": [], \n  \"https://github.com/ansible/ansible/issues/27941\": [\n    \"lib/ansible/modules/commands/command.py\", \n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27943\": [], \n  \"https://github.com/ansible/ansible/issues/27949\": [\n    \"lib/ansible/modules/files/xml.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27951\": [\n    \"lib/ansible/modules/files/xml.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27952\": [\n    \"lib/ansible/modules/files/xml.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27954\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27955\": [\n    \"lib/ansible/modules/files/acl.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27956\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27958\": [\n    \"lib/ansible/modules/network/junos/junos_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27960\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27968\": [], \n  \"https://github.com/ansible/ansible/issues/27970\": [\n    \"lib/ansible/playbook/block.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27973\": [], \n  \"https://github.com/ansible/ansible/issues/27978\": [], \n  \"https://github.com/ansible/ansible/issues/27982\": [\n    \"lib/ansible/modules/system/java_cert.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27989\": [\n    \"lib/ansible/cli/pull.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/27991\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28005\": [\n    \"lib/ansible/modules/windows/win_file.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28012\": [\n    \"docs\", \n    \"lib/ansible/parsing/vault\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28016\": [\n    \"lib/ansible/modules/messaging/rabbitmq_plugin.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28024\": [], \n  \"https://github.com/ansible/ansible/issues/28026\": [\n    \"lib/ansible/modules/system/pamd.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28032\": [\n    \"lib/ansible/modules/files/ini_file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28034\": [\n    \"lib/ansible/modules/net_tools/basics/uri.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28035\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28038\": [\n    \"lib/ansible/vars/hostvars.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28039\": [\n    \"lib/ansible/modules/windows/win_scheduled_task.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28045\": [\n    \"lib/ansible/modules/cloud/amazon/iam_policy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28048\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28051\": [\n    \"lib/ansible/modules/windows/win_route.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28052\": [\n    \"lib/ansible/modules/system/lvol.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28053\": [\n    \"lib/ansible/modules/system/ping.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28058\": [\n    \"bin/ansible-vault\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28059\": [], \n  \"https://github.com/ansible/ansible/issues/28061\": [\n    \"lib/ansible/modules/packaging/os/dnf.py\", \n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28063\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28078\": [], \n  \"https://github.com/ansible/ansible/issues/28079\": [\n    \"lib/ansible/modules/network/nxos/nxos_snapshot.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28084\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28086\": [\n    \"lib/ansible/modules/network/eos/eos_user.py\", \n    \"lib/ansible/modules/network/ios/ios_user.py\", \n    \"lib/ansible/modules/network/iosxr/iosxr_user.py\", \n    \"lib/ansible/modules/network/junos/junos_user.py\", \n    \"lib/ansible/modules/network/nxos/nxos_user.py\", \n    \"lib/ansible/modules/network/vyos/vyos_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28087\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28096\": [\n    \"lib/ansible/modules/system/pamd.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28108\": [], \n  \"https://github.com/ansible/ansible/issues/28116\": [], \n  \"https://github.com/ansible/ansible/issues/28117\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28126\": [\n    \"lib/ansible/modules/system/parted.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28130\": [], \n  \"https://github.com/ansible/ansible/issues/28148\": [\n    \"lib/ansible/modules/web_infrastructure/letsencrypt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28151\": [\n    \"lib/ansible/modules/system/selinux.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28160\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28165\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28167\": [\n    \"lib/ansible/modules/remote_management/foreman/foreman.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28171\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28179\": [\n    \"lib/ansible/playbook/role/include.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28191\": [], \n  \"https://github.com/ansible/ansible/issues/28193\": [\n    \"lib/ansible/modules/files/xml.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28194\": [\n    \"lib/ansible/modules/files/xml.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28195\": [\n    \"lib/ansible/modules/files/xml.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28198\": [\n    \"lib/ansible/modules/cloud/amazon/s3_sync.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28209\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28210\": [], \n  \"https://github.com/ansible/ansible/issues/28216\": [], \n  \"https://github.com/ansible/ansible/issues/28221\": [\n    \"lib/ansible/modules/cloud/amazon/elb_application_lb.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28222\": [], \n  \"https://github.com/ansible/ansible/issues/28223\": \"lib/ansible/modules/utilities/logic/import_playbook.py\", \n  \"https://github.com/ansible/ansible/issues/28225\": [\n    \"lib/ansible/modules/system/pamd.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28230\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28231\": [], \n  \"https://github.com/ansible/ansible/issues/28243\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28250\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28264\": [], \n  \"https://github.com/ansible/ansible/issues/28266\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_vm_shell.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28275\": [], \n  \"https://github.com/ansible/ansible/issues/28285\": [\n    \"lib/ansible/modules/network/nxos/nxos_vrf_af.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28293\": [\n    \"lib/ansible/modules/network/nxos/nxos_evpn_vni.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28296\": [\n    \"lib/ansible/modules/windows/win_user.py\", \n    \"lib/ansible/plugins/connection/winrm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28299\": [\n    \"lib/ansible/modules/network/nxos/nxos_udld_interface.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28309\": [\n    \"lib/ansible/modules/network/eos/__init__.py\", \n    \"lib/ansible/modules/network/eos/eos_banner.py\", \n    \"lib/ansible/modules/network/eos/eos_command.py\", \n    \"lib/ansible/modules/network/eos/eos_config.py\", \n    \"lib/ansible/modules/network/eos/eos_eapi.py\", \n    \"lib/ansible/modules/network/eos/eos_facts.py\", \n    \"lib/ansible/modules/network/eos/eos_logging.py\", \n    \"lib/ansible/modules/network/eos/eos_system.py\", \n    \"lib/ansible/modules/network/eos/eos_user.py\", \n    \"lib/ansible/modules/network/eos/eos_vlan.py\", \n    \"lib/ansible/modules/network/eos/eos_vrf.py\", \n    \"test/units/modules/network/eos/__init__.py\", \n    \"test/units/modules/network/eos/eos_module.py\", \n    \"test/units/modules/network/eos/fixtures/eos_banner_show_banner.txt\", \n    \"test/units/modules/network/eos/fixtures/eos_command_show_version.txt\", \n    \"test/units/modules/network/eos/fixtures/eos_config_candidate.cfg\", \n    \"test/units/modules/network/eos/fixtures/eos_config_config.cfg\", \n    \"test/units/modules/network/eos/fixtures/eos_config_config_updated.cfg\", \n    \"test/units/modules/network/eos/fixtures/eos_eapi_show_mgmt.json\", \n    \"test/units/modules/network/eos/fixtures/eos_eapi_show_mgmt_unconfigured.json\", \n    \"test/units/modules/network/eos/fixtures/eos_eapi_show_vrf.text\", \n    \"test/units/modules/network/eos/fixtures/eos_system_config.cfg\", \n    \"test/units/modules/network/eos/fixtures/eos_user_config.cfg\", \n    \"test/units/modules/network/eos/test_eos_banner.py\", \n    \"test/units/modules/network/eos/test_eos_command.py\", \n    \"test/units/modules/network/eos/test_eos_config.py\", \n    \"test/units/modules/network/eos/test_eos_eapi.py\", \n    \"test/units/modules/network/eos/test_eos_system.py\", \n    \"test/units/modules/network/eos/test_eos_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28310\": [], \n  \"https://github.com/ansible/ansible/issues/28312\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28313\": [\n    \"lib/ansible/modules/files/lineinfile.py\", \n    \"lib/ansible/playbook/task.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28318\": [], \n  \"https://github.com/ansible/ansible/issues/28319\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28325\": [\n    \"lib/ansible/module_utils/facts/system/ssh_pub_keys.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28329\": [], \n  \"https://github.com/ansible/ansible/issues/28330\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28335\": [\n    \"lib/ansible/modules/windows/win_get_url.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28337\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28340\": [], \n  \"https://github.com/ansible/ansible/issues/28349\": [\n    \"lib/ansible/modules/system/firewalld.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28351\": [\n    \"hacking/aws_config/setup-iam.yml\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28356\": [\n    \"lib/ansible/galaxy/data/default/vars\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28357\": [\n    \"lib/ansible/modules/system/setup.py\", \n    \"lib/ansible/modules/windows/win_ping.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28366\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28370\": [\n    \"lib/ansible/playbook/role\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28380\": [\n    \"lib/ansible/modules/cloud/docker/docker_network.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28382\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28385\": [], \n  \"https://github.com/ansible/ansible/issues/28386\": [\n    \"lib/ansible/modules/net_tools/dnsmadeeasy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28389\": [\n    \"lib/ansible/modules/windows/win_reboot.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28391\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28392\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28393\": [\n    \"lib/ansible/modules/cloud/amazon/iam_managed_policy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28394\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28405\": [\n    \"lib/ansible/plugins/lookup\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28408\": [\n    \"lib/ansible/cli/playbook.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28415\": [\n    \"lib/ansible/modules/network/ios/ios_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28421\": [\n    \"lib/ansible/modules/windows/win_copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28427\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28431\": [\n    \"lib/ansible/modules/windows/win_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28433\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28438\": [], \n  \"https://github.com/ansible/ansible/issues/28444\": [\n    \"lib/ansible/modules/files/xml.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28451\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28455\": [\n    \"lib/ansible/playbook/conditional.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28461\": [], \n  \"https://github.com/ansible/ansible/issues/28463\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28471\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28476\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28478\": [\n    \"lib/ansible/modules/windows/win_copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28479\": [\n    \"lib/ansible/modules/network/ios/ios_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28481\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28482\": [], \n  \"https://github.com/ansible/ansible/issues/28487\": [\n    \"lib/ansible/modules/system/pamd.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28489\": [\n    \"lib/ansible/modules/cloud/google/gcp_healthcheck.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28490\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28497\": [], \n  \"https://github.com/ansible/ansible/issues/28499\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28507\": [\n    \"lib/ansible/modules/net_tools/haproxy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28508\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28514\": [\n    \"lib/ansible/modules/system/filesystem.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28517\": [], \n  \"https://github.com/ansible/ansible/issues/28518\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28519\": [], \n  \"https://github.com/ansible/ansible/issues/28527\": [\n    \"lib/ansible/modules/cloud/google/gce_lb.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28529\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28534\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28539\": [\n    \"lib/ansible/modules/files/xml.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28540\": [\n    \"test/integration\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28542\": [\n    \"test/integration/targets/gathering_facts\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28545\": [\n    \"lib/ansible/modules/cloud/misc/proxmox_kvm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28551\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28565\": [\n    \"lib/ansible/modules/windows/win_domain_membership.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28567\": [\n    \"lib/ansible/modules/source_control/git_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28569\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28577\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28583\": [], \n  \"https://github.com/ansible/ansible/issues/28584\": [\n    \"lib/ansible/modules/windows/win_get_url.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28590\": [], \n  \"https://github.com/ansible/ansible/issues/28600\": [\n    \"lib/ansible/modules/cloud/amazon/iam_policy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28611\": [\n    \"lib/ansible/modules/windows/win_shell.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28653\": [\n    \"lib/ansible/modules/system/seport.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28655\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28668\": [\n    \"lib/ansible/modules/net_tools/basics/uri.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28672\": [], \n  \"https://github.com/ansible/ansible/issues/28679\": [], \n  \"https://github.com/ansible/ansible/issues/28681\": [\n    \"lib/ansible/modules/network/junos/junos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28683\": [], \n  \"https://github.com/ansible/ansible/issues/28690\": [], \n  \"https://github.com/ansible/ansible/issues/28699\": [\n    \"lib/ansible/modules/cloud/amazon/lambda.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28703\": [], \n  \"https://github.com/ansible/ansible/issues/28708\": [], \n  \"https://github.com/ansible/ansible/issues/28709\": [], \n  \"https://github.com/ansible/ansible/issues/28710\": [], \n  \"https://github.com/ansible/ansible/issues/28711\": [], \n  \"https://github.com/ansible/ansible/issues/28715\": [\n    \"lib/ansible/modules/windows/win_command.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28719\": [], \n  \"https://github.com/ansible/ansible/issues/28720\": [], \n  \"https://github.com/ansible/ansible/issues/28721\": [\n    \"lib/ansible/playbook/loop_control.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28726\": [\n    \"lib/ansible/modules/network/junos/junos_vrf.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28738\": [\n    \"lib/ansible/modules/cloud/amazon/efs_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28757\": [\n    \"lib/ansible/modules/network/junos/junos_rpc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28768\": [\n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28770\": [\n    \"lib/ansible/module_utils\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28772\": [\n    \"lib/ansible/plugins/lookup/password.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28786\": [\n    \"bin/ansible\", \n    \"lib/ansible/parsing/vault\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28789\": [], \n  \"https://github.com/ansible/ansible/issues/28796\": [\n    \"lib/ansible/modules/network/nxos/nxos_file_copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28797\": [\n    \"lib/ansible/modules/cloud/openstack/os_port.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28798\": [\n    \"lib/ansible/modules/windows/win_updates.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28813\": [\n    \"lib/ansible/modules/source_control/git_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28819\": [\n    \"lib/ansible/cli/adhoc.py\", \n    \"lib/ansible/cli/playbook.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28820\": [\n    \"lib/ansible/modules/packaging/os/apt_key.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28821\": [\n    \"lib/ansible/modules/cloud/amazon/cloudtrail.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28822\": [], \n  \"https://github.com/ansible/ansible/issues/28829\": [], \n  \"https://github.com/ansible/ansible/issues/28834\": [\n    \"lib/ansible/modules/network/nxos/nxos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28835\": [], \n  \"https://github.com/ansible/ansible/issues/28841\": [\n    \"lib/ansible/modules/network/routing/net_static_route.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28850\": [], \n  \"https://github.com/ansible/ansible/issues/28858\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28859\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28863\": [], \n  \"https://github.com/ansible/ansible/issues/28864\": [\n    \"lib/ansible/modules/utilities/logic/set_fact.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28870\": [\n    \"lib/ansible/module_utils/connection.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28874\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28877\": [\n    \"lib/ansible/modules/network/dellos6/dellos6_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28878\": [\n    \"lib/ansible/plugins/strategy/free.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28879\": [\n    \"lib/ansible/modules/network/dellos6/dellos6_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28883\": [\n    \"lib/ansible/modules/system/alternatives.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28884\": [], \n  \"https://github.com/ansible/ansible/issues/28902\": [\n    \"lib/ansible/modules/windows/win_updates.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28906\": [\n    \"lib/ansible/modules/windows/win_template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28907\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28909\": [\n    \"contrib/inventory/azure_rm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28910\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28917\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28919\": [\n    \"lib/ansible/modules/windows/win_ping.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28920\": [\n    \"lib/ansible/modules/files/xml.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28921\": [\n    \"lib/ansible/modules/files/xml.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28923\": [\n    \"lib/ansible/module_utils/digital_ocean.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28928\": [\n    \"lib/ansible/modules/network/system/net_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28929\": [], \n  \"https://github.com/ansible/ansible/issues/28930\": [\n    \"lib/ansible/modules/cloud/google/gce_instance_template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28952\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28963\": [], \n  \"https://github.com/ansible/ansible/issues/28965\": [\n    \"lib/ansible/modules/utilities/logic/_include.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28966\": [\n    \"lib/ansible/modules/web_infrastructure/htpasswd.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28971\": [\n    \"lib/ansible/modules/cloud/ovirt/ovirt_templates.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28973\": [\n    \"lib/ansible/modules/cloud/amazon/s3_sync.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28977\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28978\": [], \n  \"https://github.com/ansible/ansible/issues/28981\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28986\": [], \n  \"https://github.com/ansible/ansible/issues/28988\": [\n    \"lib/ansible/modules/system/java_cert.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28991\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28993\": [\n    \"lib/ansible/modules/net_tools/nsupdate.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28994\": [\n    \"lib/ansible/modules/network/aci/aci_rest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/28999\": [\n    \"lib/ansible/modules/windows/win_command.ps1\", \n    \"lib/ansible/modules/windows/win_shell.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29003\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29005\": [\n    \"lib/ansible/modules/windows/win_acl.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29008\": [\n    \"lib/ansible/modules/utilities/logic/import_playbook.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29012\": [], \n  \"https://github.com/ansible/ansible/issues/29013\": [\n    \"lib/ansible/modules/network/aci/aci_epg_to_domain.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29014\": [\n    \"lib/ansible/modules/network/aci/aci_epg_to_domain.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29016\": [\n    \"lib/ansible/modules/web_infrastructure/jenkins_job.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29018\": [], \n  \"https://github.com/ansible/ansible/issues/29019\": [], \n  \"https://github.com/ansible/ansible/issues/29023\": [\n    \"lib/ansible/modules/system/cron.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29026\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29028\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29040\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29043\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29047\": [\n    \"lib/ansible/playbook/block.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29052\": [], \n  \"https://github.com/ansible/ansible/issues/29060\": [\n    \"lib/ansible/plugins/action\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29062\": [\n    \"lib/ansible/modules/windows/win_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29072\": [\n    \"lib/ansible/modules/windows/win_chocolatey.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29078\": [\n    \"lib/ansible/modules/files/xml.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29079\": [], \n  \"https://github.com/ansible/ansible/issues/29081\": [], \n  \"https://github.com/ansible/ansible/issues/29083\": [\n    \"lib/ansible/modules/files/xml.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29085\": [\n    \"lib/ansible/modules/notification/mail.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29087\": [\n    \"lib/ansible/modules/cloud/amazon/redshift.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29095\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29098\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29101\": [\n    \"lib/ansible/modules/windows/win_domain_controller.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29102\": [\n    \"lib/ansible/modules/cloud/amazon/sns_topic.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29104\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29110\": [\n    \"lib/ansible/modules/windows/win_shortcut.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29113\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29118\": [\n    \"lib/ansible/modules/network/ios/ios_interface.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29124\": [], \n  \"https://github.com/ansible/ansible/issues/29130\": [], \n  \"https://github.com/ansible/ansible/issues/29133\": [\n    \"lib/ansible/modules/utilities/logic/debug.py\", \n    \"lib/ansible/playbook/conditional.py\", \n    \"lib/ansible/playbook/loop_control.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29139\": [\n    \"lib/ansible/modules/system/lvg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29145\": [\n    \"lib/ansible/modules/cloud/openstack/os_image.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29159\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29164\": [\n    \"lib/ansible/modules/network/nxos/nxos_interface.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29173\": [\n    \"lib/ansible/modules/cloud/amazon/lambda.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29177\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_db.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29181\": [\n    \"lib/ansible/modules/commands/raw.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29183\": [\n    \"lib/ansible/modules/source_control/github_deploy_key.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29186\": [], \n  \"https://github.com/ansible/ansible/issues/29187\": [\n    \"lib/ansible/module_utils/facts\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29188\": [\n    \"lib/ansible/module_utils/facts\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29190\": [\n    \"lib/ansible/modules/monitoring/logentries.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29191\": [\n    \"lib/ansible/modules/cloud/misc/virt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29193\": [\n    \"lib/ansible/modules/system/firewalld.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29194\": [\n    \"lib/ansible/modules/system/lvol.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29195\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29197\": [\n    \"lib/ansible/modules/monitoring/pingdom.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29199\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29200\": [\n    \"lib/ansible/modules/system/locale_gen.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29201\": [\n    \"lib/ansible/modules/system/lvol.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29202\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29203\": [\n    \"lib/ansible/modules/files/patch.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29205\": [\n    \"lib/ansible/modules/net_tools/haproxy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29206\": [\n    \"lib/ansible/modules/net_tools/haproxy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29207\": [\n    \"lib/ansible/modules/database/mongodb/mongodb_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29208\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29210\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29211\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29212\": [\n    \"lib/ansible/modules/files/patch.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29213\": [\n    \"lib/ansible/modules/packaging/language/bower.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29214\": [\n    \"lib/ansible/modules/database/mysql/mysql_replication.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29216\": [\n    \"lib/ansible/modules/clustering/znode.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29217\": [\n    \"lib/ansible/modules/packaging/language/cpanm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29218\": [\n    \"lib/ansible/modules/cloud/lxc/lxc_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29219\": [\n    \"lib/ansible/modules/monitoring/monit.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29220\": [\n    \"lib/ansible/modules/monitoring/monit.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29221\": [\n    \"lib/ansible/modules/storage/zfs/zfs.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29222\": [\n    \"lib/ansible/modules/packaging/language/bower.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29223\": [\n    \"lib/ansible/modules/system/known_hosts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29225\": [\n    \"lib/ansible/modules/cloud/amazon/route53_zone.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29226\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29227\": [\n    \"lib/ansible/modules/packaging/os/pkg5.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29228\": [\n    \".coveragerc\", \n    \"lib/ansible/modules/packaging/language/bower.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29229\": [\n    \"lib/ansible/modules/cloud/misc/ovirt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29230\": [\n    \"lib/ansible/modules/system/known_hosts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29232\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29233\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29234\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29235\": [\n    \"lib/ansible/modules/monitoring/monit.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29236\": [\n    \"lib/ansible/modules/system/known_hosts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29237\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29238\": [\n    \"lib/ansible/modules/cloud/amazon/s3_bucket.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29239\": [\n    \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29240\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29243\": [\n    \"lib/ansible/modules/cloud/amazon/route53_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29244\": [\n    \"lib/ansible/modules/messaging/rabbitmq_policy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29247\": [\n    \"lib/ansible/modules/packaging/os/homebrew_cask.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29248\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29249\": [\n    \"lib/ansible/modules/cloud/amazon/ecs_task.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29250\": [\n    \"lib/ansible/modules/packaging/language/bower.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29251\": [], \n  \"https://github.com/ansible/ansible/issues/29253\": [\n    \"lib/ansible/modules/packaging/language/pear.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29254\": [\n    \"lib/ansible/modules/net_tools/haproxy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29255\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29256\": [\n    \"lib/ansible/modules/system/filesystem.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29257\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29259\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29260\": [\n    \"lib/ansible/modules/messaging/rabbitmq_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29261\": [\n    \"lib/ansible/modules/cloud/misc/ovirt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29262\": [\n    \"lib/ansible/modules/web_infrastructure/jira.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29264\": [\n    \"lib/ansible/modules/messaging/rabbitmq_policy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29265\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29266\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29267\": [\n    \"lib/ansible/modules/system/locale_gen.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29268\": [\n    \"lib/ansible/modules/packaging/os/svr4pkg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29269\": [], \n  \"https://github.com/ansible/ansible/issues/29270\": [\n    \"lib/ansible/modules/packaging/os/pkgng.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29273\": [\n    \"lib/ansible/modules/packaging/os/yum_repository.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29274\": [], \n  \"https://github.com/ansible/ansible/issues/29275\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29278\": [\n    \"lib/ansible/modules/system/cronvar.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29279\": [\n    \"lib/ansible/modules/cloud/misc/proxmox.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29281\": [\n    \"lib/ansible/modules/messaging/rabbitmq_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29283\": [\n    \"lib/ansible/modules/cloud/amazon/s3_bucket.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29284\": [\n    \"lib/ansible/modules/net_tools/haproxy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29292\": [\n    \"lib/ansible/modules/system/gluster_volume.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29294\": [\n    \"lib/ansible/modules/system/lvol.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29295\": [\n    \"lib/ansible/modules/system/lvg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29296\": [\n    \"lib/ansible/modules/system/gluster_volume.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29297\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29298\": [\n    \"lib/ansible/modules/cloud/lxc/lxc_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29300\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29302\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29303\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29304\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29305\": [\n    \"lib/ansible/modules/network/citrix/_netscaler.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29306\": [\n    \"lib/ansible/modules/system/ufw.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29307\": [\n    \"lib/ansible/modules/net_tools/haproxy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29308\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29309\": [\n    \"lib/ansible/modules/system/open_iscsi.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29310\": [\n    \"lib/ansible/modules/source_control/gitlab_group.py\", \n    \"lib/ansible/modules/source_control/gitlab_project.py\", \n    \"lib/ansible/modules/source_control/gitlab_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29311\": [], \n  \"https://github.com/ansible/ansible/issues/29313\": [\n    \"lib/ansible/modules/system/lvol.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29315\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29316\": [\n    \"lib/ansible/modules/system/pam_limits.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29317\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29318\": [\n    \"lib/ansible/modules/system/selinux_permissive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29319\": [\n    \"lib/ansible/modules/system/known_hosts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29320\": [\n    \"lib/ansible/modules/system/lvol.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29321\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29322\": [\n    \"lib/ansible/modules/monitoring/monit.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29324\": [\n    \"lib/ansible/modules/cloud/amazon/ecs_service_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29325\": [], \n  \"https://github.com/ansible/ansible/issues/29326\": [\n    \"lib/ansible/modules/system/lvol.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29327\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29328\": [\n    \"lib/ansible/modules/clustering/kubernetes.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29329\": [\n    \"lib/ansible/modules/system/osx_defaults.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29330\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29331\": [\n    \"lib/ansible/modules/system/known_hosts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29332\": [], \n  \"https://github.com/ansible/ansible/issues/29333\": [], \n  \"https://github.com/ansible/ansible/issues/29334\": [\n    \"lib/ansible/modules/packaging/language/maven_artifact.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29335\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29336\": [\n    \"lib/ansible/modules/cloud/lxc/lxc_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29337\": [\n    \"lib/ansible/modules/system/osx_defaults.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29338\": [\n    \"lib/ansible/modules/clustering/znode.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29339\": [\n    \"lib/ansible/modules/cloud/lxc/lxc_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29340\": [\n    \"lib/ansible/modules/files/blockinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29341\": [\n    \"lib/ansible/modules/cloud/amazon/s3_bucket.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29342\": [\n    \"lib/ansible/modules/cloud/amazon/ecs_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29343\": [\n    \"lib/ansible/modules/system/known_hosts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29344\": [\n    \"lib/ansible/modules/cloud/amazon/s3_bucket.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29345\": [\n    \"lib/ansible/modules/cloud/lxc/lxc_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29347\": [\n    \"lib/ansible/modules/web_infrastructure/deploy_helper.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29348\": [], \n  \"https://github.com/ansible/ansible/issues/29350\": [\n    \"lib/ansible/modules/database/mongodb/mongodb_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29351\": [\n    \"lib/ansible/modules/commands/expect.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29352\": [\n    \"lib/ansible/modules/system/debconf.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29353\": [\n    \"lib/ansible/modules/files/archive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29354\": [], \n  \"https://github.com/ansible/ansible/issues/29355\": [\n    \"lib/ansible/modules/cloud/amazon/ecs_service_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29358\": [\n    \"lib/ansible/modules/monitoring/datadog_event.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29359\": [], \n  \"https://github.com/ansible/ansible/issues/29360\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_eni.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29361\": [\n    \"lib/ansible/modules/cloud/amazon/ecs_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29364\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29365\": [\n    \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29366\": [\n    \"lib/ansible/modules/cloud/amazon/s3_bucket.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29367\": [\n    \"lib/ansible/modules/monitoring/datadog_monitor.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29368\": [], \n  \"https://github.com/ansible/ansible/issues/29369\": [\n    \"lib/ansible/modules/network/asa/asa_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29370\": [\n    \"lib/ansible/modules/cloud/misc/ovirt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29371\": [\n    \"lib/ansible/modules/system/known_hosts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29372\": [\n    \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29373\": [\n    \"lib/ansible/modules/cloud/amazon/route53_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29374\": [\n    \"lib/ansible/modules/cloud/lxc/lxc_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29375\": [\n    \"lib/ansible/modules/network/f5/bigip_virtual_server.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29376\": [\n    \"lib/ansible/modules/clustering/consul_kv.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29377\": [\n    \"lib/ansible/modules/system/iptables.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29379\": [\n    \"lib/ansible/modules/system/iptables.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29380\": [\n    \"lib/ansible/modules/clustering/consul_session.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29383\": [\n    \"lib/ansible/modules/clustering/consul_session.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29384\": [\n    \"lib/ansible/modules/notification/slack.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29385\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_eni.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29386\": [\n    \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29387\": [], \n  \"https://github.com/ansible/ansible/issues/29389\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29390\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29391\": [\n    \"lib/ansible/modules/cloud/misc/proxmox.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29392\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29393\": [\n    \"lib/ansible/modules/system/iptables.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29394\": [\n    \"lib/ansible/modules/files/blockinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29395\": [\n    \"lib/ansible/modules/cloud/softlayer/sl_vm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29396\": [\n    \"lib/ansible/modules/system/filesystem.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29397\": [\n    \"lib/ansible/modules/cloud/amazon/s3_bucket.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29398\": [\n    \"lib/ansible/modules/clustering/consul_kv.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29399\": [\n    \"lib/ansible/modules/source_control/gitlab_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29400\": [\n    \"lib/ansible/modules/database/misc/elasticsearch_plugin.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29401\": [\n    \"lib/ansible/modules/database/misc/elasticsearch_plugin.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29402\": [\n    \"lib/ansible/modules/cloud/profitbricks\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29403\": [\n    \"lib/ansible/modules/packaging/os/homebrew_cask.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29404\": [\n    \"lib/ansible/modules/system/osx_defaults.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29405\": [\n    \"lib/ansible/modules/system/iptables.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29406\": [\n    \"lib/ansible/modules/packaging/language/maven_artifact.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29407\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29408\": [\n    \"lib/ansible/modules/cloud/ovirt/ovirt_vms.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29409\": [\n    \"lib/ansible/modules/net_tools/dnsimple.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29410\": [\n    \"lib/ansible/modules/clustering/consul_kv.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29411\": [\n    \"lib/ansible/modules/system/firewalld.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29412\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29413\": [\n    \"lib/ansible/modules/monitoring/zabbix/zabbix_host.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29414\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29415\": [\n    \"lib/ansible/modules/web_infrastructure/jboss.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29416\": [\n    \"lib/ansible/modules/cloud/amazon/route53_zone.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29417\": [\n    \"lib/ansible/module_utils/ipa.py\", \n    \"lib/ansible/utils/module_docs_fragments/ipa.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29418\": [], \n  \"https://github.com/ansible/ansible/issues/29419\": [\n    \"lib/ansible/modules/cloud/lxd/lxd_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29420\": [\n    \"lib/ansible/modules/files/archive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29421\": [\n    \"lib/ansible/modules/system/firewalld.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29422\": [\n    \"lib/ansible/modules/storage/zfs/zfs.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29423\": [\n    \"lib/ansible/module_utils/ipa.py\", \n    \"lib/ansible/utils/module_docs_fragments/ipa.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29425\": [\n    \"lib/ansible/modules/packaging/os/openbsd_pkg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29426\": [\n    \"lib/ansible/modules/system/iptables.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29427\": [\n    \"lib/ansible/modules/clustering/consul_kv.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29429\": [\n    \"lib/ansible/modules/system/lvol.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29443\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29445\": [\n    \"lib/ansible/modules/cloud/amazon/elasticache.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29446\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29447\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29448\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29449\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_ami.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29450\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29451\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29452\": [\n    \"lib/ansible/modules/inventory/group_by.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29453\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29455\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29456\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29457\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29459\": [], \n  \"https://github.com/ansible/ansible/issues/29460\": [], \n  \"https://github.com/ansible/ansible/issues/29461\": [], \n  \"https://github.com/ansible/ansible/issues/29462\": [], \n  \"https://github.com/ansible/ansible/issues/29463\": [], \n  \"https://github.com/ansible/ansible/issues/29464\": [\n    \"lib/ansible/modules/network/ios/ios_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29465\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29466\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29468\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29470\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n  \"https://github.com/ansible/ansible/issues/29471\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29472\": [\n    \"lib/ansible/modules/network/iosxr/iosxr_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29473\": [\n    \"lib/ansible/modules/network/nxos/nxos_acl.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29474\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29475\": [\n    \"lib/ansible/modules/web_infrastructure/supervisorctl.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29476\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29478\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29479\": [\n    \"lib/ansible/modules/net_tools/basics/uri.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29480\": [\n    \"lib/ansible/modules/network/ios/ios_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29481\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29482\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29484\": [\n    \"lib/ansible/modules/network/ios/ios_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29485\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29486\": [\n    \"lib/ansible/modules/network/nxos/nxos_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29487\": [\n    \"lib/ansible/modules/files/replace.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29489\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29490\": [\n    \"lib/ansible/modules/network/ios/ios_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29492\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29493\": [\n    \"lib/ansible/modules/packaging/os/redhat_subscription.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29495\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29496\": [\n    \"lib/ansible/modules/network/nxos/nxos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29497\": [\n    \"lib/ansible/modules/files/fetch.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29498\": [\n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29500\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29501\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29502\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29503\": [\n    \"lib/ansible/modules/cloud/amazon/rds_param_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29504\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29505\": [\n    \"lib/ansible/modules/network/dellos9/dellos9_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29506\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29507\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29508\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29509\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29510\": [\n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29511\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29512\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29513\": [\n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29514\": [], \n  \"https://github.com/ansible/ansible/issues/29515\": [\n    \"lib/ansible/modules/packaging/os/package.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29516\": [\n    \"lib/ansible/modules/net_tools/basics/get_url.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29517\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29519\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29520\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29521\": [\n    \"lib/ansible/modules/cloud/docker/docker_image.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29522\": [\n    \"lib/ansible/modules/network/nxos/nxos_reboot.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29523\": [\n    \"lib/ansible/modules/network/junos/junos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29525\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29527\": [\n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29528\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29529\": [\n    \"lib/ansible/modules/network/dellos9/dellos9_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29530\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29532\": [\n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29533\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29534\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29539\": [\n    \"lib/ansible/modules/network/eos/eos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29540\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29541\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29543\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29544\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29545\": [\n    \"lib/ansible/modules/inventory/group_by.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29546\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_ami_find.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29547\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29548\": [\n    \"lib/ansible/module_utils/netcli.py\", \n    \"lib/ansible/modules/network/ios/ios_command.py\", \n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29549\": [\n    \"lib/ansible/modules/packaging/os/apt_repository.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29550\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29551\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29552\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29554\": [], \n  \"https://github.com/ansible/ansible/issues/29555\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29556\": [\n    \"lib/ansible/modules/cloud/google/gce.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29557\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29558\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29559\": [\n    \"lib/ansible/modules/system/systemd.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29560\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29561\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29562\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29563\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29564\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29566\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29567\": [\n    \"lib/ansible/modules/network/nxos/nxos_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29568\": [\n    \"lib/ansible/modules/system/hostname.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29570\": [\n    \"lib/ansible/modules/cloud/docker/docker_image_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29572\": [\n    \"lib/ansible/modules/files/fetch.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29573\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29574\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29576\": [], \n  \"https://github.com/ansible/ansible/issues/29577\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29578\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29579\": [\n    \"lib/ansible/modules/cloud/docker/docker_login.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29580\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29581\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29582\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29583\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_ami.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29584\": [\n    \"lib/ansible/modules/cloud/docker/docker_network.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29585\": [\n    \"lib/ansible/modules/cloud/azure/_azure.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29586\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29587\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29588\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29589\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29592\": [\n    \"lib/ansible/modules/network/nxos/nxos_command.py\", \n    \"lib/ansible/modules/network/nxos/nxos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29593\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_subnet.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29594\": [\n    \"lib/ansible/modules/cloud/openstack/os_server.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29595\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29596\": [\n    \"lib/ansible/modules/cloud/google/gce_pd.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29597\": [], \n  \"https://github.com/ansible/ansible/issues/29598\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29599\": [\n    \"lib/ansible/modules/packaging/language/gem.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29601\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29607\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29608\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29609\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29610\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29611\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29612\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29613\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29614\": [\n    \"lib/ansible/modules/net_tools/basics/get_url.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29615\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29617\": [\n    \"lib/ansible/modules/source_control/hg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29618\": [\n    \"lib/ansible/modules/files/stat.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29621\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29622\": [\n    \"lib/ansible/modules/commands/command.py\", \n    \"lib/ansible/modules/files/file.py\", \n    \"lib/ansible/modules/files/lineinfile.py\", \n    \"lib/ansible/modules/packaging/os/yum.py\", \n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29623\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29624\": [\n    \"lib/ansible/modules/network/ios/ios_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29625\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29626\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29627\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29629\": [\n    \"lib/ansible/modules/inventory/group_by.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29630\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29631\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29632\": [\n    \"lib/ansible/modules/files/assemble.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29633\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29634\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29635\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29636\": [\n    \"lib/ansible/modules/system/sysctl.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29637\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29638\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_ami_find.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29639\": [\n    \"lib/ansible/modules/files/ini_file.py\", \n    \"lib/ansible/modules/files/lineinfile.py\", \n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29640\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29641\": [\n    \"lib/ansible/modules/net_tools/basics/get_url.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29642\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29644\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29645\": [\n    \"lib/ansible/modules/web_infrastructure/supervisorctl.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29647\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29649\": [\n    \"lib/ansible/modules/packaging/os/rhn_channel.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29651\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29652\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29653\": [], \n  \"https://github.com/ansible/ansible/issues/29654\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29655\": [\n    \"lib/ansible/modules/inventory/add_host.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29656\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29657\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29659\": [], \n  \"https://github.com/ansible/ansible/issues/29661\": [\n    \"lib/ansible/modules/cloud/misc/helm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29662\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29669\": [\n    \"lib/ansible/modules/system/hostname.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29670\": [\n    \"lib/ansible/modules/net_tools/basics/uri.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29671\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29673\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29675\": [\n    \"lib/ansible/modules/cloud/rackspace/rax.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29676\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29677\": [\n    \"lib/ansible/modules/network/ios/ios_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29678\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29679\": [\n    \"lib/ansible/modules/cloud/amazon/iam.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29680\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29682\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29683\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29684\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29685\": [\n    \"lib/ansible/modules/files/copy.py\", \n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29686\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29687\": [\n    \"lib/ansible/modules/web_infrastructure/django_manage.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29688\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29689\": [\n    \"lib/ansible/modules/cloud/rackspace/rax_dns_record.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29690\": [], \n  \"https://github.com/ansible/ansible/issues/29692\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29693\": [\n    \"lib/ansible/modules/system/authorized_key.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29694\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29695\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29696\": [\n    \"lib/ansible/modules/cloud/openstack/os_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29698\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29699\": [], \n  \"https://github.com/ansible/ansible/issues/29701\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_privs.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29702\": [\n    \"lib/ansible/modules/net_tools/basics/uri.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29703\": [\n    \"lib/ansible/modules/cloud/rackspace/rax.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29704\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29705\": [\n    \"lib/ansible/modules/packaging/os/package.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29706\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29707\": [\n    \"lib/ansible/modules/network/nxos/nxos_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29708\": [\n    \"lib/ansible/modules/source_control/hg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29709\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29710\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29711\": [\n    \"lib/ansible/modules/files/ini_file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29712\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29713\": [\n    \"lib/ansible/modules/cloud/amazon/iam.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29714\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29716\": [], \n  \"https://github.com/ansible/ansible/issues/29717\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29718\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29719\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29720\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29721\": [\n    \"lib/ansible/modules/cloud/amazon/cloudtrail.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29722\": [\n    \"lib/ansible/modules/database/mysql/mysql_db.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29723\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29724\": [\n    \"lib/ansible/modules/web_infrastructure/django_manage.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29725\": [\n    \"lib/ansible/modules/packaging/language/easy_install.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29726\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29727\": [\n    \"lib/ansible/modules/network/junos/junos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29728\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29729\": [\n    \"lib/ansible/modules/inventory/add_host.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29731\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29732\": [\n    \"lib/ansible/modules/packaging/os/rhn_channel.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29733\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29734\": [\n    \"lib/ansible/modules/cloud/openstack/os_server.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29735\": [], \n  \"https://github.com/ansible/ansible/issues/29736\": [\n    \"lib/ansible/modules/utilities/helper/meta.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29737\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29738\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29739\": [\n    \"lib/ansible/modules/files/acl.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29740\": [\n    \"lib/ansible/modules/cloud/digital_ocean/digital_ocean.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29741\": [\n    \"lib/ansible/modules/net_tools/basics/uri.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29746\": [], \n  \"https://github.com/ansible/ansible/issues/29749\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29751\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29752\": [\n    \"lib/ansible/modules/commands/shell.py\", \n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29753\": [\n    \"lib/ansible/modules/cloud/digital_ocean/digital_ocean.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29754\": [\n    \"lib/ansible/modules/packaging/os/apt_repository.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29755\": [\n    \"lib/ansible/modules/packaging/os/rpm_key.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29756\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29757\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29758\": [], \n  \"https://github.com/ansible/ansible/issues/29760\": [\n    \"lib/ansible/modules/network/junos/junos_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29761\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29762\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29763\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29764\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29765\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29766\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vol.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29767\": [], \n  \"https://github.com/ansible/ansible/issues/29768\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29769\": [\n    \"lib/ansible/modules/files/fetch.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29770\": [\n    \"lib/ansible/modules/cloud/google/gce.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29771\": [\n    \"lib/ansible/modules/cloud/amazon/rds_param_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29772\": [\n    \"lib/ansible/modules/cloud/amazon/iam.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29773\": [], \n  \"https://github.com/ansible/ansible/issues/29774\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_db.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29776\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29777\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29778\": [\n    \"lib/ansible/modules/packaging/os/apt_key.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29779\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29780\": [\n    \"lib/ansible/modules/files/ini_file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29781\": [\n    \"lib/ansible/modules/files/copy.py\", \n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29782\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29783\": [\n    \"lib/ansible/modules/packaging/os/redhat_subscription.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29784\": [\n    \"lib/ansible/modules/network/nxos/nxos_vlan.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29785\": [\n    \"lib/ansible/modules/cloud/linode/linode.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29786\": [\n    \"lib/ansible/modules/web_infrastructure/django_manage.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29787\": [], \n  \"https://github.com/ansible/ansible/issues/29788\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29789\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29790\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vol.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29791\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29792\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29793\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29794\": [\n    \"lib/ansible/modules/network/nxos/nxos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29795\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29796\": \"lib/ansible/modules/cloud/amazon/iam.py\", \n  \"https://github.com/ansible/ansible/issues/29797\": [\n    \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29798\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_ami_find.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29799\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29800\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29801\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29802\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29803\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29804\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_net.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29805\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29806\": [\n    \"lib/ansible/modules/net_tools/basics/uri.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29807\": [], \n  \"https://github.com/ansible/ansible/issues/29808\": [\n    \"lib/ansible/modules/system/group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29809\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29810\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29811\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29814\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29815\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29816\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29817\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29819\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_lc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29820\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29822\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29823\": [], \n  \"https://github.com/ansible/ansible/issues/29824\": [\n    \"lib/ansible/modules/source_control/subversion.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29825\": [\n    \"lib/ansible/modules/system/sysctl.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29826\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29827\": [\n    \"lib/ansible/modules/source_control/subversion.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29828\": [\n    \"lib/ansible/modules/cloud/openstack/os_router.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29829\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29830\": [\n    \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29831\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29832\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29833\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29834\": [\n    \"lib/ansible/modules/cloud/google/gce.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29835\": [\n    \"lib/ansible/modules/system/hostname.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29836\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29838\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29840\": [\n    \"lib/ansible/modules/cloud/amazon/iam.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29841\": [\n    \"lib/ansible/modules/cloud/amazon/iam.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29842\": [\n    \"lib/ansible/modules/inventory/add_host.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29843\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29845\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29846\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29847\": [\n    \"lib/ansible/modules/web_infrastructure/supervisorctl.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29848\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vol.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29849\": [\n    \"lib/ansible/modules/files/copy.py\", \n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29851\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29852\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29855\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29860\": [], \n  \"https://github.com/ansible/ansible/issues/29864\": [], \n  \"https://github.com/ansible/ansible/issues/29866\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_lc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29871\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_eip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29872\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29873\": [\n    \"lib/ansible/modules/system/hostname.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29875\": [\n    \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29879\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29880\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29886\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29887\": [], \n  \"https://github.com/ansible/ansible/issues/29888\": [], \n  \"https://github.com/ansible/ansible/issues/29890\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29891\": [\n    \"lib/ansible/modules/system/authorized_key.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29893\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29896\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29897\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29898\": [\n    \"lib/ansible/modules/source_control/subversion.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29899\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29900\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29901\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29902\": [], \n  \"https://github.com/ansible/ansible/issues/29903\": [\n    \"lib/ansible/modules/cloud/openstack/os_router.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29904\": [\n    \"lib/ansible/modules/files/ini_file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29906\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29907\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29908\": [\n    \"lib/ansible/modules/cloud/amazon/route53.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29909\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29910\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29911\": [\n    \"lib/ansible/modules/cloud/amazon/elasticache.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29912\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_ami_find.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29913\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29914\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29915\": [\n    \"lib/ansible/modules/packaging/language/gem.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29916\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29917\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29918\": [\n    \"lib/ansible/modules/cloud/amazon/iam_policy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29919\": [\n    \"lib/ansible/modules/system/group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29920\": [\n    \"lib/ansible/modules/system/sysctl.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29921\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29922\": [\n    \"lib/ansible/modules/cloud/amazon/elasticache.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29923\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29924\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29925\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29926\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29927\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29928\": [\n    \"lib/ansible/modules/system/authorized_key.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29929\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29930\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29931\": [\n    \"lib/ansible/modules/cloud/amazon/iam.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29932\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29933\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29934\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29935\": [\n    \"lib/ansible/modules/cloud/amazon/iam_policy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29936\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29937\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29938\": [\n    \"lib/ansible/modules/utilities/logic/wait_for.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29939\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29942\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29946\": [\n    \"lib/ansible/modules/crypto/openssl_certificate.py\", \n    \"lib/ansible/modules/crypto/openssl_csr.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29951\": [\n    \"lib/ansible/modules/crypto/openssl_certificate.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29955\": [\n    \"lib/ansible/modules/utilities/logic/set_fact.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29961\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29962\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29963\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29966\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29967\": [\n    \"lib/ansible/modules/system/group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29968\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29969\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29970\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29971\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29972\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29973\": [\n    \"lib/ansible/modules/cloud/amazon/iam.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29974\": [\n    \"lib/ansible/modules/network/ios/ios_system.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29975\": [\n    \"lib/ansible/modules/cloud/amazon/iam.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29976\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29977\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29978\": [\n    \"lib/ansible/modules/files/acl.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29979\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29981\": [], \n  \"https://github.com/ansible/ansible/issues/29982\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29983\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29984\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_lc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29985\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29986\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29987\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29988\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29990\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29991\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29992\": [\n    \"lib/ansible/modules/source_control/subversion.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29993\": [\n    \"lib/ansible/modules/source_control/subversion.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29994\": [\n    \"lib/ansible/modules/source_control/subversion.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29995\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29996\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29997\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/29999\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30001\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30002\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30003\": [\n    \"lib/ansible/modules/net_tools/basics/get_url.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30006\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30009\": [\n    \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30011\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30012\": [\n    \"lib/ansible/modules/cloud/amazon/route53.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30013\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30014\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30015\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30016\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30017\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_db.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30019\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30020\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30021\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30022\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30023\": [\n    \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30024\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30025\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30026\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30027\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30028\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30029\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30030\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30031\": [], \n  \"https://github.com/ansible/ansible/issues/30032\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30033\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30034\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30035\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30036\": [\n    \"lib/ansible/modules/cloud/amazon/iam.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30037\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30039\": [\n    \"lib/ansible/modules/cloud/amazon/iam.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30040\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30041\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30042\": [\n    \"lib/ansible/modules/web_infrastructure/htpasswd.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30043\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30044\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30045\": [\n    \"lib/ansible/modules/web_infrastructure/django_manage.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30046\": [], \n  \"https://github.com/ansible/ansible/issues/30047\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30049\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30050\": [\n    \"lib/ansible/modules/system/hostname.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30051\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30052\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30053\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30054\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30055\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30056\": [\n    \"lib/ansible/modules/cloud/azure/_azure.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30058\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30059\": [\n    \"lib/ansible/modules/cloud/linode/linode.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30060\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30061\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30063\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30064\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30065\": [\n    \"lib/ansible/modules/net_tools/basics/uri.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30066\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30067\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30069\": [\n    \"lib/ansible/modules/commands/shell.py\", \n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30070\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30071\": [\n    \"lib/ansible/modules/cloud/amazon/iam_policy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30072\": [\n    \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30073\": [\n    \"lib/ansible/modules/source_control/hg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30074\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30075\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30076\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30077\": [\n    \"lib/ansible/modules/cloud/amazon/route53.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30078\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30080\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30081\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_eip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30082\": [\n    \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30083\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30084\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_tag.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30085\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_lc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30086\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30087\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30088\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30089\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30090\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30091\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30092\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30093\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30094\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30095\": [\n    \"lib/ansible/modules/cloud/amazon/route53.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30096\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30097\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30098\": [], \n  \"https://github.com/ansible/ansible/issues/30099\": [\n    \"lib/ansible/modules/system/authorized_key.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30100\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30101\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30102\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30103\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_scaling_policy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30105\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30106\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30107\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30108\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30109\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_vm_shell.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30110\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30111\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30112\": [\n    \"lib/ansible/modules/system/authorized_key.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30113\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30114\": [\n    \"lib/ansible/modules/cloud/amazon/iam_policy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30115\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30116\": [\n    \"lib/ansible/modules/utilities/logic/pause.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30117\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30118\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30119\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30120\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30122\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30123\": [\n    \"lib/ansible/modules/files/acl.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30124\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30125\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30126\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30127\": [\n    \"lib/ansible/modules/cloud/amazon/rds_param_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30130\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30131\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_lc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30132\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30133\": [\n    \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30134\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30136\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30137\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30138\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30139\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30140\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30141\": [\n    \"lib/ansible/modules/packaging/language/easy_install.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30142\": [\n    \"lib/ansible/modules/cloud/azure/_azure.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30143\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30145\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_tag.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30146\": [\n    \"lib/ansible/modules/cloud/google/gce.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30147\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30148\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30149\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30150\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30155\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30156\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30159\": [\n    \"lib/ansible/modules/net_tools/basics/get_url.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30161\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30162\": [\n    \"lib/ansible/modules/packaging/language/gem.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30163\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30164\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30165\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30166\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30168\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30169\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30170\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30171\": [\n    \"lib/ansible/modules/utilities/logic/wait_for.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30172\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30173\": [\n    \"lib/ansible/modules/inventory/group_by.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30174\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30175\": [\n    \"lib/ansible/modules/web_infrastructure/supervisorctl.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30176\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30177\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30179\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30180\": [], \n  \"https://github.com/ansible/ansible/issues/30181\": [\n    \"lib/ansible/modules/cloud/google/gce_pd.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30182\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_key.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30183\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30184\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30185\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30186\": [\n    \"lib/ansible/modules/net_tools/basics/get_url.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30188\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30189\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30190\": [\n    \"lib/ansible/modules/cloud/amazon/elb_target_group_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30191\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30192\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30193\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30194\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30195\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30197\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30198\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30199\": [\n    \"lib/ansible/modules/cloud/azure/_azure.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30200\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30202\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30203\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30204\": [\n    \"lib/ansible/modules/source_control/subversion.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30205\": [\n    \"lib/ansible/modules/system/cron.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30208\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30209\": [\n    \"lib/ansible/modules/cloud/amazon/elasticache.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30210\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30211\": [\n    \"lib/ansible/modules/cloud/amazon/elasticache.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30212\": [\n    \"lib/ansible/modules/cloud/azure/_azure.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30213\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30214\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30215\": [\n    \"lib/ansible/modules/system/sysctl.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30216\": [\n    \"lib/ansible/modules/database/mysql/mysql_db.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30217\": [\n    \"lib/ansible/modules/packaging/language/gem.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30218\": [\n    \"lib/ansible/modules/cloud/azure/_azure.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30219\": [\n    \"lib/ansible/modules/packaging/os/apt_repository.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30220\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30221\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30223\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30224\": [\n    \"lib/ansible/modules/commands/raw.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30225\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30226\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30227\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30229\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30230\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30232\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30234\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30235\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30239\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\", \n    \"lib/ansible/modules/cloud/docker/docker_volume.py\", \n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30246\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30250\": [\n    \"lib/ansible/modules/network/eos/eos_eapi.py\", \n    \"lib/ansible/modules/network/eos/eos_vrf.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30258\": [\n    \"lib/ansible/modules/windows/win_command.ps1\", \n    \"lib/ansible/modules/windows/win_shell.ps1\", \n    \"lib/ansible/modules/windows/win_stat.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30260\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30264\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30265\": [], \n  \"https://github.com/ansible/ansible/issues/30268\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_lc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30269\": [], \n  \"https://github.com/ansible/ansible/issues/30270\": [\n    \"lib/ansible/utils/vars.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30271\": [\n    \"lib/ansible/modules/files/xml.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30281\": [\n    \"lib/ansible/modules/network/eos/eos_banner.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30284\": [], \n  \"https://github.com/ansible/ansible/issues/30294\": [\n    \"lib/ansible/modules/network/nxos/nxos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30296\": [\n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30307\": [\n    \"lib/ansible/modules/cloud/amazon/sns_topic.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30310\": [], \n  \"https://github.com/ansible/ansible/issues/30315\": [\n    \"lib/ansible/modules/windows/win_file.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30316\": [\n    \"lib/ansible/modules/crypto/openssl_csr.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30319\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30325\": [], \n  \"https://github.com/ansible/ansible/issues/30327\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30328\": [\n    \"lib/ansible/modules/identity/ipa/ipa_host.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30330\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30331\": [], \n  \"https://github.com/ansible/ansible/issues/30334\": [\n    \"lib/ansible/modules/cloud/openstack/os_keypair.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30341\": [], \n  \"https://github.com/ansible/ansible/issues/30351\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30354\": [\n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30357\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_net.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30362\": \"lib/ansible/modules/cloud/amazon/ec2.py\", \n  \"https://github.com/ansible/ansible/issues/30366\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30367\": [\n    \"lib/ansible/modules/network/junos/junos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30368\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30373\": [], \n  \"https://github.com/ansible/ansible/issues/30374\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30375\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30377\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30383\": [\n    \"lib/ansible/plugins/terminal/ios.py\", \n    \"lib/ansible/plugins/terminal/nxos.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30385\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30394\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30395\": [\n    \"lib/ansible/modules/system/parted.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30401\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30403\": [\n    \"lib/ansible/modules/network/layer3/net_l3_interface.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30405\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30411\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30412\": [\n    \"lib/ansible/modules/windows/win_iis_website.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30413\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30414\": [\n    \"lib/ansible/modules/cloud/google\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30418\": [\n    \"lib/ansible/modules/system/ping.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30420\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30426\": [\n    \"lib/ansible/modules/files/xml.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30431\": \"lib/ansible/modules/windows/win_regedit.ps1\", \n  \"https://github.com/ansible/ansible/issues/30438\": [\n    \"lib/ansible/plugins/callback\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30445\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30454\": [], \n  \"https://github.com/ansible/ansible/issues/30455\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30468\": [], \n  \"https://github.com/ansible/ansible/issues/30476\": [\n    \"lib/ansible/vars/hostvars.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30479\": [], \n  \"https://github.com/ansible/ansible/issues/30480\": [\n    \"lib/ansible/module_utils/powershell/Ansible.ModuleUtils.Legacy.psm1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30489\": [\n    \"lib/ansible/module_utils/basic.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30491\": [\n    \"lib/ansible/parsing/vault\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30494\": [], \n  \"https://github.com/ansible/ansible/issues/30497\": [\n    \"lib/ansible/modules/packaging/os/homebrew.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30500\": [\n    \"lib/ansible/modules/database/mysql/mysql_db.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30504\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30509\": [], \n  \"https://github.com/ansible/ansible/issues/30513\": [\n    \"lib/ansible/modules/crypto/openssl_csr.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30515\": [\n    \"lib/ansible/modules/cloud/ovirt/ovirt_vms.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30516\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30517\": [], \n  \"https://github.com/ansible/ansible/issues/30518\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30519\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30527\": [], \n  \"https://github.com/ansible/ansible/issues/30529\": [\n    \"lib/ansible/modules/network/nxos/nxos_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30534\": \"lib/ansible/inventory\", \n  \"https://github.com/ansible/ansible/issues/30540\": [\n    \"lib/ansible/modules/files/tempfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30548\": [\n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30555\": [\n    \"lib/ansible/modules/windows/win_domain_membership.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30556\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30557\": [], \n  \"https://github.com/ansible/ansible/issues/30561\": [\n    \"lib/ansible/modules/system/dconf.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30562\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30566\": [\n    \"lib/ansible/modules/system/lvol.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30570\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30571\": [\n    \"lib/ansible/modules/cloud/lxc/lxc_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30574\": [\n    \"lib/ansible/plugins/connection/docker.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30576\": [\n    \"lib/ansible/modules/cloud/amazon/aws_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30578\": [\n    \"lib/ansible/modules/cloud/amazon/elb_application_lb.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30585\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30586\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30590\": [\n    \"lib/ansible/modules/cloud/amazon/sns.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30592\": [], \n  \"https://github.com/ansible/ansible/issues/30597\": [], \n  \"https://github.com/ansible/ansible/issues/30599\": [\n    \"lib/ansible/modules/files/ini_file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30600'\": \"lib/ansible/module_utils/facts\", \n  \"https://github.com/ansible/ansible/issues/30603\": [\n    \"lib/ansible/module_utils/facts/network/linux.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30609\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30613\": [\n    \"lib/ansible/module_utils/basic.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30614\": [\n    \"lib/ansible/modules/monitoring/monit.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30618\": [\n    \"lib/ansible/modules/system/selinux.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30619\": [], \n  \"https://github.com/ansible/ansible/issues/30627\": [\n    \"lib/ansible/modules/identity/ipa/ipa_host.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30629\": [\n    \"lib/ansible/playbook/become.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30630\": [], \n  \"https://github.com/ansible/ansible/issues/30632\": [\n    \"lib/ansible/modules/network/nxos/nxos_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30632'\": \"lib/ansible/module_utils/facts\", \n  \"https://github.com/ansible/ansible/issues/30634\": [\n    \"lib/ansible/modules/cloud/openstack/os_image.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30636\": [\n    \"lib/ansible/cli/pull.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30637\": [\n    \"lib/ansible/modules/monitoring/monit.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30638\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30639\": [], \n  \"https://github.com/ansible/ansible/issues/30641\": [\n    \"lib/ansible/modules/system/parted.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30642\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30644\": [\n    \"lib/ansible/modules/packaging/os/yum_repository.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30645\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_instance_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30647\": [\n    \"lib/ansible/modules/web_infrastructure/jenkins_plugin.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30652\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30654\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30655\": [\n    \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_launch.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30663\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30676\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30677\": [\n    \"lib/ansible/modules/monitoring/monit.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30678\": [\n    \"lib/ansible/modules/cloud/amazon/cloudwatchevent_rule.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30679\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30688\": [\n    \"lib/ansible/module_utils/facts/hardware/darwin.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30693\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30697\": [\n    \"lib/ansible/module_utils/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30698\": [\n    \"lib/ansible/modules/network/eos/eos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30700\": [\n    \"lib/ansible/modules/utilities/logic/import_role.py\", \n    \"lib/ansible/playbook/role/include.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30701\": [], \n  \"https://github.com/ansible/ansible/issues/30703\": [\n    \"lib/ansible/modules/files/tempfile.py\", \n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30709\": [\n    \"lib/ansible/modules/network/nxos/nxos_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30719\": [\n    \"lib/ansible/modules/files/ini_file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30720\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30744\": [], \n  \"https://github.com/ansible/ansible/issues/30751\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30755\": [], \n  \"https://github.com/ansible/ansible/issues/30759\": [\n    \"lib/ansible/modules/cloud/google/gce.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30766\": [\n    \"lib/ansible/modules/windows/win_hotfix.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30768\": [\n    \"lib/ansible/modules/system/interfaces_file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30771\": [\n    \"lib/ansible/module_utils/basic.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30773\": [\n    \"lib/ansible/vars/hostvars.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30774\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30776\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30778\": [\n    \"lib/ansible/modules/network/junos/junos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30780\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30784\": [\n    \"lib/ansible/modules/windows/win_chocolatey.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30790\": [\n    \"lib/ansible/modules/windows/win_chocolatey.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30797\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30800\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_instance_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30802\": [\n    \"lib/ansible/modules/network/eos/eos_command.py\", \n    \"lib/ansible/modules/network/eos/eos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30803\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30818\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30820\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_lc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30821\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30827\": [\n    \"lib/ansible/modules/web_infrastructure/apache2_module.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30831\": [\n    \"lib/ansible/modules/system/iptables.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30833\": [\n    \"lib/ansible/modules/net_tools/haproxy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30835\": [\n    \"lib/ansible/modules/database/misc/redis.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30837\": [], \n  \"https://github.com/ansible/ansible/issues/30843\": [\n    \"lib/ansible/modules/utilities/logic/assert.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30846\": [\n    \"lib/ansible/modules/network/nxos/nxos_vpc.py\", \n    \"lib/ansible/modules/network/nxos/nxos_vpc_interface.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30848\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30852\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n  \"https://github.com/ansible/ansible/issues/30855\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30860\": [\n    \"lib/ansible/modules/windows/win_msg.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30864\": [], \n  \"https://github.com/ansible/ansible/issues/30866\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30867\": [], \n  \"https://github.com/ansible/ansible/issues/30870\": [], \n  \"https://github.com/ansible/ansible/issues/30872\": [\n    \"lib/ansible/modules/files/xml.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30873\": [\n    \"lib/ansible/modules/cloud/ovirt/ovirt_vms.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30879\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30880\": [\n    \"lib/ansible/modules/network/nxos/nxos_banner.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30893\": [], \n  \"https://github.com/ansible/ansible/issues/30899\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30901\": [\n    \"lib/ansible/modules/inventory/add_host.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30903\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30911\": [], \n  \"https://github.com/ansible/ansible/issues/30923\": [\n    \"lib/ansible/modules/cloud/openstack/os_image.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30929\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30933\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30941\": [\n    \"lib/ansible/modules/network/nxos/nxos_snmp_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30943\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30951\": [\n    \"lib/ansible/modules/system/lvg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30953\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30962\": [\n    \"lib/ansible/modules/cloud/amazon/elb_target_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30963\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30972\": [], \n  \"https://github.com/ansible/ansible/issues/30976\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30977\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30980\": [\n    \"lib/ansible/modules/cloud/docker/docker_network.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30981\": [\n    \"lib/ansible/modules/network/eos/eos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30982\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_storageblob.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30983\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30986\": [\n    \"lib/ansible/modules/network/nxos/nxos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30991\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30992\": [\n    \"lib/ansible/modules/network/nxos/nxos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/30995\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31001\": [\n    \"lib/ansible/cli/vault.py\", \n    \"lib/ansible/parsing/vault\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31002\": [\n    \"lib/ansible/parsing/dataloader.py\", \n    \"lib/ansible/parsing/vault\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31003\": [\n    \"lib/ansible/modules/windows/win_dsc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31004\": [\n    \"lib/ansible/parsing/dataloader.py\", \n    \"lib/ansible/parsing/vault\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31005\": [\n    \"lib/ansible/module_utils/facts\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31006\": [], \n  \"https://github.com/ansible/ansible/issues/31007\": [\n    \"lib/ansible/module_utils/facts\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31009\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_lc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31012\": [\n    \"lib/ansible/modules/utilities/logic/_include.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31017\": [\n    \"lib/ansible/module_utils/basic.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31018\": [\n    \"lib/ansible/module_utils/basic.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31019\": [\n    \"lib/ansible/plugins/lookup/dig.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31023\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_storageblob.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31027\": [\n    \"lib/ansible/module_utils/junos.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31028\": [\n    \"lib/ansible/modules/network/junos/junos_command.py\", \n    \"lib/ansible/modules/network/junos/junos_netconf.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31030\": [], \n  \"https://github.com/ansible/ansible/issues/31032\": [], \n  \"https://github.com/ansible/ansible/issues/31034\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31036\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31040\": [], \n  \"https://github.com/ansible/ansible/issues/31041\": [], \n  \"https://github.com/ansible/ansible/issues/31043\": [\n    \"lib/ansible/playbook/conditional.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31049\": [], \n  \"https://github.com/ansible/ansible/issues/31050\": [\n    \"lib/ansible/modules/files/ini_file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31051\": [\n    \"lib/ansible/modules/commands/expect.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31053\": [\n    \"lib/ansible/modules/cloud/amazon/aws_s3_bucket_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31055\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_net.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31058\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31063\": [\n    \"lib/ansible/modules/cloud/google/gce.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31068\": [], \n  \"https://github.com/ansible/ansible/issues/31070\": [], \n  \"https://github.com/ansible/ansible/issues/31071\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31075\": [\n    \"lib/ansible/modules/cloud/amazon/aws_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31086\": \"bin/ansible\", \n  \"https://github.com/ansible/ansible/issues/31087\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31090\": [\n    \"lib/ansible/plugins/filter/network.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31091\": [], \n  \"https://github.com/ansible/ansible/issues/31095\": [], \n  \"https://github.com/ansible/ansible/issues/31098\": [\n    \"lib/ansible/modules/commands/shell.py\", \n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31101\": [], \n  \"https://github.com/ansible/ansible/issues/31105\": [\n    \"lib/ansible/modules/cloud/azure/_azure.py\", \n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31106\": [\n    \"lib/ansible/plugins/connection/network_cli.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31107\": \"lib/ansible/plugins/connection/netconf.py\", \n  \"https://github.com/ansible/ansible/issues/31109\": [\n    \"lib/ansible/module_utils/urls.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31115\": [\n    \"lib/ansible/plugins/filter/core.py\", \n    \"lib/ansible/plugins/test/core.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31116\": [\n    \"lib/ansible/modules/system/ping.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31117\": [], \n  \"https://github.com/ansible/ansible/issues/31118\": [\n    \"lib/ansible/plugins/inventory/yaml.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31125\": [], \n  \"https://github.com/ansible/ansible/issues/31127\": [\n    \"lib/ansible/modules/network/ios/ios_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31131\": [], \n  \"https://github.com/ansible/ansible/issues/31145\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31147\": [\n    \"lib/ansible/modules/utilities/logic/debug.py\", \n    \"lib/ansible/modules/utilities/logic/fail.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31148\": [], \n  \"https://github.com/ansible/ansible/issues/31150\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31156\": [\n    \"lib/ansible/modules/source_control/hg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31161\": [], \n  \"https://github.com/ansible/ansible/issues/31162\": [\n    \"lib/ansible/modules/network/ios/ios_logging.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31166\": [\n    \"lib/ansible/modules/windows/win_uri.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31169\": [\n    \"lib/ansible/parsing/vault\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31180\": [\n    \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31186\": [\n    \"lib/ansible/modules/network/eos/eos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31187\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31189\": [\n    \"lib/ansible/modules/cloud/openstack/os_server.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31193\": [], \n  \"https://github.com/ansible/ansible/issues/31194\": [\n    \"lib/ansible/modules/files/fetch.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31196\": [\n    \"lib/ansible/modules/clustering/oc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31198\": [], \n  \"https://github.com/ansible/ansible/issues/31204\": [\n    \"lib/ansible/modules/network/eos/eos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31218\": [\n    \"lib/ansible/modules/windows/win_domain_membership.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31223\": [], \n  \"https://github.com/ansible/ansible/issues/31225\": [], \n  \"https://github.com/ansible/ansible/issues/31229\": [], \n  \"https://github.com/ansible/ansible/issues/31232\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\", \n    \"lib/ansible/modules/cloud/amazon/aws_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31234\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31235\": [\n    \"lib/ansible/modules/system/selinux.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31236\": [\n    \"lib/ansible/modules/utilities/logic/_include.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31239\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31249\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31250\": [\n    \"lib/ansible/modules/source_control/subversion.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31260\": [\n    \"lib/ansible/plugins/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31266\": [\n    \"lib/ansible/modules/system/parted.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31271\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31274\": [], \n  \"https://github.com/ansible/ansible/issues/31275\": [\n    \"lib/ansible/module_utils/nxos.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31276\": [\n    \"lib/ansible/module_utils/eos.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31277\": [\n    \"lib/ansible/module_utils/ios.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31278\": [\n    \"lib/ansible/module_utils/iosxr.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31279\": [\n    \"lib/ansible/module_utils/vyos.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31280\": [\n    \"lib/ansible/module_utils/junos.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31290\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31295\": [], \n  \"https://github.com/ansible/ansible/issues/31296\": [], \n  \"https://github.com/ansible/ansible/issues/31299\": [], \n  \"https://github.com/ansible/ansible/issues/31300\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_win_password.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31301\": [], \n  \"https://github.com/ansible/ansible/issues/31303\": [], \n  \"https://github.com/ansible/ansible/issues/31307\": [\n    \"lib/ansible/modules/web_infrastructure/jenkins_plugin.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31309\": [\n    \"lib/ansible/modules/system/cronvar.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31332\": [\n    \"lib/ansible/modules/cloud/docker/docker_image.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31333\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31336\": [\n    \"lib/ansible/modules/windows/win_copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31338\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31341\": [\n    \"lib/ansible/modules/network/f5\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31344\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31345\": [\n    \"lib/ansible/module_utils/iosxr.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31346\": [\n    \"lib/ansible/modules/network/eos/eos_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31350\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31354\": [\n    \"lib/ansible/modules/files/replace.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31359\": [], \n  \"https://github.com/ansible/ansible/issues/31360\": [], \n  \"https://github.com/ansible/ansible/issues/31363\": [\n    \"lib/ansible/modules/cloud/misc/virt_net.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31374\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31376\": [\n    \"lib/ansible/modules/clustering/oc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31377\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31378\": [\n    \"lib/ansible/modules/cloud/amazon/elb_target_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31382\": [\n    \"lib/ansible/plugins/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31390\": [\n    \"lib/ansible/modules/commands/expect.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31391\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31398\": [\n    \"hacking/env-setup.fish\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31403\": [], \n  \"https://github.com/ansible/ansible/issues/31404\": [\n    \"lib/ansible/modules/cloud/google/gce_img.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31409\": [], \n  \"https://github.com/ansible/ansible/issues/31411\": [\n    \"lib/ansible/inventory\", \n    \"lib/ansible/modules/utilities/helper/meta.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31412\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31418\": [], \n  \"https://github.com/ansible/ansible/issues/31419\": [], \n  \"https://github.com/ansible/ansible/issues/31420\": [], \n  \"https://github.com/ansible/ansible/issues/31422\": [\n    \"lib/ansible/playbook/loop_control.py\", \n    \"lib/ansible/playbook/play.py\", \n    \"lib/ansible/playbook/role\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31423\": [\n    \"lib/ansible/modules/windows/win_regedit.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31431\": [], \n  \"https://github.com/ansible/ansible/issues/31432\": [], \n  \"https://github.com/ansible/ansible/issues/31434\": [], \n  \"https://github.com/ansible/ansible/issues/31437\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31449\": [\n    \"lib/ansible/cli/pull.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31454\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31464\": [\n    \"lib/ansible/modules/inventory/add_host.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31465\": [], \n  \"https://github.com/ansible/ansible/issues/31471\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31473\": [], \n  \"https://github.com/ansible/ansible/issues/31474\": [\n    \"lib/ansible/modules/cloud/amazon/iam_managed_policy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31475\": [\n    \"lib/ansible/modules/net_tools/ldap/ldap_attr.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31477\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31480\": [], \n  \"https://github.com/ansible/ansible/issues/31483\": [\n    \"lib/ansible/modules/packaging/os/rpm_key.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31485\": [\n    \"lib/ansible/modules/cloud/centurylink/clc_blueprint_package.py\", \n    \"lib/ansible/modules/network/junos/junos_package.py\", \n    \"lib/ansible/modules/packaging/os/macports.py\", \n    \"lib/ansible/modules/packaging/os/package.py\", \n    \"lib/ansible/modules/windows/win_package.ps1\", \n    \"lib/ansible/modules/windows/win_package.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31489\": [\n    \"lib/ansible/modules/network/junos/junos_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31490\": [\n    \"lib/ansible/modules/network/ios/ios_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31494\": [\n    \"lib/ansible/modules/commands/command.py\", \n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31502\": [\n    \"lib/ansible/modules/windows/win_dsc.ps1lib/ansible/modules/windows/win_dsc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31503\": [], \n  \"https://github.com/ansible/ansible/issues/31504\": [\n    \"lib/ansible/playbook/handler.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31511\": [\n    \"lib/ansible/modules/net_tools/cloudflare_dns.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31518\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31521\": [], \n  \"https://github.com/ansible/ansible/issues/31527\": [], \n  \"https://github.com/ansible/ansible/issues/31532\": [], \n  \"https://github.com/ansible/ansible/issues/31534\": [\n    \"lib/ansible/modules/packaging/os/yum.py\", \n    \"lib/ansible/playbook/loop_control.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31545\": [], \n  \"https://github.com/ansible/ansible/issues/31547\": [\n    \"lib/ansible/modules/system/timezone.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31553\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31557\": [\n    \"contrib/inventory/digital_ocean.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31559\": [\n    \"lib/ansible/modules/cloud/openstack/os_flavor_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31561\": [], \n  \"https://github.com/ansible/ansible/issues/31567\": [], \n  \"https://github.com/ansible/ansible/issues/31568\": [\n    \"lib/ansible/module_utils\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31574\": [\n    \"lib/ansible/modules/network/eos/eos_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31575\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31576\": [\n    \"lib/ansible/modules/windows/win_firewall_rule.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31579\": [\n    \"lib/ansible/modules/packaging/os/dnf.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31582\": [], \n  \"https://github.com/ansible/ansible/issues/31587\": [], \n  \"https://github.com/ansible/ansible/issues/31589\": [\n    \"lib/ansible/modules/cloud/ovirt/ovirt_templates.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31590\": [\n    \"lib/ansible/module_utils/urls.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31591\": [], \n  \"https://github.com/ansible/ansible/issues/31593\": [\n    \"lib/ansible/modules/utilities/logic/include_tasks.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31594\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31595\": [\n    \"lib/ansible/modules/utilities/logic/import_playbook.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31599\": [\n    \"lib/ansible/modules/windows/win_reboot.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31602\": [\n    \"lib/ansible/modules/clustering/kubernetes.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31609\": [\n    \"lib/ansible/modules/network/asa/asa_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31611\": [\n    \"lib/ansible/modules/network/asa/asa_acl.py\", \n    \"lib/ansible/modules/network/asa/asa_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31615\": [\n    \"lib/ansible/modules/network/nxos/nxos_vlan.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31617\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31621\": [], \n  \"https://github.com/ansible/ansible/issues/31623\": [\n    \"lib/ansible/inventory/manager.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31626\": [\n    \"lib/ansible/modules/database/mysql/mysql_replication.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31627\": [\n    \"lib/ansible/modules/web_infrastructure/jira.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31630\": [\n    \"lib/ansible/modules/files/replace.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31631\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31635\": [\n    \"contrib/inventory/azure_rm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31640\": [\n    \"lib/ansible/modules/cloud/openstack/os_router.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31644\": [\n    \"lib/ansible/modules/cloud/amazon/aws_s3.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31649\": [], \n  \"https://github.com/ansible/ansible/issues/31651\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31655\": [\n    \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_credential.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31666\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31673\": [\n    \"lib/ansible/modules/utilities/logic/_include.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31674\": [\n    \"lib/ansible/vars/hostvars.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31676\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31680\": [\n    \"lib/ansible/modules/network/eos/eos_user.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31684\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31689\": [], \n  \"https://github.com/ansible/ansible/issues/31690\": [\n    \"lib/ansible/modules/cloud/openstack/os_server_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31691\": [\n    \"lib/ansible/modules/packaging/os/apt_key.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31693\": [], \n  \"https://github.com/ansible/ansible/issues/31694\": [], \n  \"https://github.com/ansible/ansible/issues/31704\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31705\": [], \n  \"https://github.com/ansible/ansible/issues/31706\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31707\": [], \n  \"https://github.com/ansible/ansible/issues/31712\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31713\": [\n    \"lib/ansible/modules/packaging/os/pacman.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31718\": [\n    \"lib/ansible/modules/system/iptables.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31723\": [\n    \"lib/ansible/modules/web_infrastructure/jenkins_script.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31735\": [], \n  \"https://github.com/ansible/ansible/issues/31737\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31743\": [\n    \"lib/ansible/cli/console.py\", \n    \"lib/ansible/cli/doc.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31747\": [], \n  \"https://github.com/ansible/ansible/issues/31751\": [\n    \"lib/ansible/playbook/role\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31759\": [\n    \"lib/ansible/playbook/become.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31761\": [], \n  \"https://github.com/ansible/ansible/issues/31762\": [], \n  \"https://github.com/ansible/ansible/issues/31764\": [\n    \"lib/ansible/parsing/vault\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31771\": [], \n  \"https://github.com/ansible/ansible/issues/31777\": [], \n  \"https://github.com/ansible/ansible/issues/31778\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31779\": [\n    \"lib/ansible/modules/cloud/amazon/elasticache.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31782\": [\n    \"lib/ansible/modules/windows/win_regedit.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31784\": [], \n  \"https://github.com/ansible/ansible/issues/31786\": [\n    \"lib/ansible/module_utils/basic.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31791\": [\n    \"contrib/inventory/azure_rm.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31793\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31796\": [\n    \"lib/ansible/modules/windows/win_get_url.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31797\": [], \n  \"https://github.com/ansible/ansible/issues/31799\": [\n    \"lib/ansible/modules/packaging/language/maven_artifact.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31804\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31805\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31806\": [\n    \"lib/ansible/modules/utilities/logic/set_fact.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31811\": [\n    \"lib/ansible/modules/system/hostname.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31816\": [\n    \"lib/ansible/modules/packaging/language/composer.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31820\": [\n    \"lib/ansible/playbook/conditional.py\", \n    \"lib/ansible/playbook/role/include.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31824\": [\n    \"lib/ansible/modules/database/misc/elasticsearch_plugin.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31825\": [], \n  \"https://github.com/ansible/ansible/issues/31826\": [], \n  \"https://github.com/ansible/ansible/issues/31828\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31832\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_instance_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31854\": [\n    \"lib/ansible/modules/cloud/amazon/lambda.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31855\": [\n    \"lib/ansible/modules/network/aruba/aruba_command.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31857\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31859\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31862\": [\n    \"lib/ansible/modules/network/eos/eos_logging.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31868\": [\n    \"lib/ansible/module_utils/vmware.py\", \n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31869\": [\n    \"lib/ansible/plugins/lookup/credstash.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31875\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31878\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet_facts.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31880\": [], \n  \"https://github.com/ansible/ansible/issues/31887\": \"lib/ansible/modules/network/nxos/nxos_portchannel.py\", \n  \"https://github.com/ansible/ansible/issues/31888\": \"lib/ansible/modules/network/nxos/nxos_ip_interface.py\", \n  \"https://github.com/ansible/ansible/issues/31890\": \"lib/ansible/modules/network/nxos/nxos_static_route.py\", \n  \"https://github.com/ansible/ansible/issues/31891\": \"lib/ansible/modules/files/replace.py\", \n  \"https://github.com/ansible/ansible/issues/31893\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31894\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31897\": [\n    \"lib/ansible/modules/net_tools/basics/get_url.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31898\": [\n    \"lib/ansible/modules/windows/win_find.ps1\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31900\": [], \n  \"https://github.com/ansible/ansible/issues/31901\": \"lib/ansible/modules/network/nxos/nxos_config.py\", \n  \"https://github.com/ansible/ansible/issues/31902\": [], \n  \"https://github.com/ansible/ansible/issues/31905\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet.py\", \n  \"https://github.com/ansible/ansible/issues/31906\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31908\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"https://github.com/ansible/ansible/issues/31916\": [], \n  \"https://github.com/ansible/ansible/issues/31918\": \"lib/ansible/modules/files/xml.py\", \n  \"https://github.com/ansible/ansible/issues/31919\": \"lib/ansible/modules/cloud/amazon/elb_target_group.py\", \n  \"https://github.com/ansible/ansible/issues/9981\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ]\n}"
  },
  {
    "path": "tests/fixtures/component_data/component_match_map.json",
    "content": "{\n  \"\\\"/tmp/ansible_MuXmOF/ansible_module_sysctl.py\": [], \n  \"'Realpath' filter.\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"'win_user' module\": [\n    \"lib/ansible/modules/windows/win_user.py\"\n  ], \n  \"* New Inventory plugins\": [\n    \"lib/ansible/plugins/inventory\"\n  ], \n  \"* [Cobbler Inventory Script](https://github.com/ansible/ansible/blob/devel/contrib/inventory/cobbler.py)\": [\n    \"contrib/inventory\"\n  ], \n  \"* `docker_container`\\n* `docker_image`\\n* `docker_image_facts`\\n* `docker_login`\\n* `docker_network`\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"lib/ansible/modules/cloud/docker/docker_image.py\", \n    \"lib/ansible/modules/cloud/docker/docker_image_facts.py\", \n    \"lib/ansible/modules/cloud/docker/docker_login.py\", \n    \"lib/ansible/modules/cloud/docker/docker_network.py\"\n  ], \n  \"* `import_plays`\": [], \n  \"* ansible\\n* ansible-playbook\\n* docker_service\\n* ansible-container\": [\n    \"bin/ansible-playbook\", \n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"* docker_service\": [\n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"* mysql_* module\": [], \n  \"* service\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"* stat module (core) http://docs.ansible.com/ansible/stat_module.html\": [\n    \"lib/ansible/modules/files/stat.py\"\n  ], \n  \"* tempfile\\n* remote files handling in general\": [\n    \"lib/ansible/modules/files/tempfile.py\"\n  ], \n  \"* unarchive\\n* tempfile\": [\n    \"lib/ansible/modules/files/tempfile.py\", \n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"**\\nec2_elb_lb module\\n**\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\"\n  ], \n  \"**\\ninclude_role\\n**\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"**\\npip module\\n**\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \"**\\nwin_unzip module\\n**\": [\n    \"lib/ansible/modules/windows/win_unzip.ps1\"\n  ], \n  \"**: service module\\n**\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"**mongodb_user**\": [\n    \"lib/ansible/modules/database/mongodb/mongodb_user.py\"\n  ], \n  \"**nxos_facts**\": [\n    \"lib/ansible/modules/network/nxos/nxos_facts.py\"\n  ], \n  \"**replace**\": [\n    \"lib/ansible/modules/files/replace.py\"\n  ], \n  \"**vca_vapp**\": [\n    \"lib/ansible/modules/cloud/vmware/vca_vapp.py\"\n  ], \n  \"+ docker_image\": [\n    \"lib/ansible/modules/cloud/docker/docker_image.py\"\n  ], \n  \", Ansible modules\\nlineinfile\\ndelegate_to\": [\n    \"lib/ansible/modules/files/lineinfile.py\", \n    \"lib/ansible/playbook/task.py\"\n  ], \n  \"- AWS SNS\": [\n    \"lib/ansible/modules/cloud/amazon/sns.py\"\n  ], \n  \"- AWS elasticache_facts module\": [], \n  \"- All AWS\": [], \n  \"- Ansible Core/Cisco ios_command module\": [\n    \"lib/ansible/modules/network/ios/ios_command.py\"\n  ], \n  \"- Ansible itself (?)\": [], \n  \"- Ansible,\": [], \n  \"- CallBackModule\": [], \n  \"- CloudEngine\": [], \n  \"- Command Module\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"- Commands/command\": [], \n  \"- Conditional & Error Handling\": [\n    \"lib/ansible/playbook/conditional.py\"\n  ], \n  \"- Dependencies\\n- Conditionals\\n- Playbooks\": [], \n  \"- Evaluation of jinja2 templates\": [\n    \"lib/ansible/template\"\n  ], \n  \"- Feature: New Module\": [], \n  \"- Files/synchronize Files/Copy\": [], \n  \"- Handlers and variable interpolation\": [\n    \"lib/ansible/playbook/handler.py\"\n  ], \n  \"- Linode module\": [\n    \"lib/ansible/modules/cloud/linode/linode.py\"\n  ], \n  \"- Module : gce\": [\n    \"lib/ansible/modules/cloud/google/gce.py\"\n  ], \n  \"- Module documentation tool (plugin_formatter)\\n- docs/bin/plugin_formatter.py\": [\n    \"bin\", \n    \"docs/bin/plugin_formatter.py\"\n  ], \n  \"- Modules\": [], \n  \"- Plugin\": [], \n  \"- Redis Lookup Plugin\": [\n    \"lib/ansible/plugins/lookup\"\n  ], \n  \"- SophosUTM\\nProbably this would be applicable for the XG firewall aswell.\": [], \n  \"- Template/Vars\": [], \n  \"- Unarchive module\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"- WinRM connection (PSRemoting)\": [\n    \"lib/ansible/plugins/connection\"\n  ], \n  \"- `contrib/inventory/openstack.py`\": [\n    \"contrib/inventory/openstack.py\"\n  ], \n  \"- `docker_container`\": [], \n  \"- `docker_image_facts`\": [], \n  \"- `docker_image`\": [], \n  \"- `docker_network`\": [], \n  \"- `template` lookup plugin\\n- `regex_replace` filter\\n- any other non-jinja2 native filters\": [\n    \"lib/ansible/plugins/filter\", \n    \"lib/ansible/plugins/lookup\"\n  ], \n  \"- `uri` module\": [\n    \"lib/ansible/modules/net_tools/basics/uri.py\"\n  ], \n  \"- `win_chocolatey`\": [], \n  \"- acl\": [\n    \"lib/ansible/modules/files/acl.py\"\n  ], \n  \"- add_host\": [\n    \"lib/ansible/modules/inventory/add_host.py\"\n  ], \n  \"- ansible-connection\": [\n    \"bin/ansible-connection\"\n  ], \n  \"- ansible-galaxy\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"- ansible-vault\": [\n    \"bin/ansible-vault\"\n  ], \n  \"- apt\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"- azure_rm_storageaccount\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount.py\"\n  ], \n  \"- blockinfile\": [\n    \"lib/ansible/modules/files/blockinfile.py\"\n  ], \n  \"- core\": [], \n  \"- core (I don't know really which part)\": [], \n  \"- docker_container\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"- docker_image\": [\n    \"lib/ansible/modules/cloud/docker/docker_image.py\"\n  ], \n  \"- docker_image\\n- docker_container\\n- docker_volume\\n- docker_system\\n- docker_network\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"lib/ansible/modules/cloud/docker/docker_image.py\", \n    \"lib/ansible/modules/cloud/docker/docker_network.py\", \n    \"lib/ansible/modules/cloud/docker/docker_volume.py\"\n  ], \n  \"- ec2\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"- ec2_elb_facts\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb_facts.py\"\n  ], \n  \"- ec2_elb_lb\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\"\n  ], \n  \"- ec2_eni\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_eni.py\"\n  ], \n  \"- eos_config\\n- eos_command\": [\n    \"lib/ansible/modules/network/eos/eos_command.py\", \n    \"lib/ansible/modules/network/eos/eos_config.py\"\n  ], \n  \"- eos_user\": [\n    \"lib/ansible/modules/network/eos/eos_user.py\"\n  ], \n  \"- fail\\n- debug\": [\n    \"lib/ansible/modules/utilities/logic/debug.py\", \n    \"lib/ansible/modules/utilities/logic/fail.py\"\n  ], \n  \"- file\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"- gathering_facts\": [], \n  \"- gce\": [\n    \"lib/ansible/modules/cloud/google/gce.py\"\n  ], \n  \"- get_url\": [\n    \"lib/ansible/modules/net_tools/basics/get_url.py\"\n  ], \n  \"- include_role\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"- ios_config\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"- ios_config\\n- ios_template\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"- ios_config.py\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"- ios_system\": [\n    \"lib/ansible/modules/network/ios/ios_system.py\"\n  ], \n  \"- jabber.py\": [\n    \"lib/ansible/modules/notification/jabber.py\"\n  ], \n  \"- junos_lldp\": [\n    \"lib/ansible/modules/network/junos/junos_lldp.py\"\n  ], \n  \"- junos_user\\n- vyos_user\\n- ios_user\\n- iosxr_user\\n- nxos_user\\n- eos_user\": [\n    \"lib/ansible/modules/network/eos/eos_user.py\", \n    \"lib/ansible/modules/network/ios/ios_user.py\", \n    \"lib/ansible/modules/network/iosxr/iosxr_user.py\", \n    \"lib/ansible/modules/network/junos/junos_user.py\", \n    \"lib/ansible/modules/network/nxos/nxos_user.py\", \n    \"lib/ansible/modules/network/vyos/vyos_user.py\"\n  ], \n  \"- known_hosts\": [\n    \"lib/ansible/modules/system/known_hosts.py\"\n  ], \n  \"- lineinfile\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"- lxc_container\": [\n    \"lib/ansible/modules/cloud/lxc/lxc_container.py\"\n  ], \n  \"- meta\\n- setup\": [\n    \"lib/ansible/modules/system/setup.py\", \n    \"lib/ansible/modules/utilities/helper/meta.py\"\n  ], \n  \"- module\": [], \n  \"- module:ios_command\": [], \n  \"- module_utils/netcfg.py +label networking\": [\n    \"lib/ansible/module_utils\"\n  ], \n  \"- moduleios_command\\n- modulenxos_command\": [], \n  \"- modules/web_infrastructure/apache2_module.py\": [\n    \"lib/ansible/modules/web_infrastructure/apache2_module.py\"\n  ], \n  \"- monitoring/zabbix_maintenance.py\": [], \n  \"- mount\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"- nftables\": [], \n  \"- nxos_aaa_server\": [\n    \"lib/ansible/modules/network/nxos/nxos_aaa_server.py\"\n  ], \n  \"- nxos_aaa_server\\n7.0(3)I5(1)\": [\n    \"lib/ansible/modules/network/nxos/nxos_aaa_server.py\"\n  ], \n  \"- nxos_aaa_server_host\": [\n    \"lib/ansible/modules/network/nxos/nxos_aaa_server_host.py\"\n  ], \n  \"- nxos_aaa_server_host\\n7.0(3)I5(1)\": [\n    \"lib/ansible/modules/network/nxos/nxos_aaa_server_host.py\"\n  ], \n  \"- nxos_acl\": [\n    \"lib/ansible/modules/network/nxos/nxos_acl.py\"\n  ], \n  \"- nxos_bgp\": [\n    \"lib/ansible/modules/network/nxos/nxos_bgp.py\"\n  ], \n  \"- nxos_bgp_af\": [\n    \"lib/ansible/modules/network/nxos/nxos_bgp_af.py\"\n  ], \n  \"- nxos_bgp_neighbor\": [\n    \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor.py\"\n  ], \n  \"- nxos_bgp_neighbor_af\\n7.0(3)I5(3)\": [\n    \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor_af.py\"\n  ], \n  \"- nxos_config\": [\n    \"lib/ansible/modules/network/nxos/nxos_config.py\"\n  ], \n  \"- nxos_config\\nNXOS VERSION\\nversion 8.0(1)\": [\n    \"lib/ansible/modules/network/nxos/nxos_config.py\"\n  ], \n  \"- nxos_config\\nversion 8.0(1)\": [\n    \"lib/ansible/modules/network/nxos/nxos_config.py\"\n  ], \n  \"- nxos_evpn_global\": [\n    \"lib/ansible/modules/network/nxos/nxos_evpn_global.py\"\n  ], \n  \"- nxos_facts\": [\n    \"lib/ansible/modules/network/nxos/nxos_facts.py\"\n  ], \n  \"- nxos_file_copy\": [\n    \"lib/ansible/modules/network/nxos/nxos_file_copy.py\"\n  ], \n  \"- nxos_gir\": [\n    \"lib/ansible/modules/network/nxos/nxos_gir.py\"\n  ], \n  \"- nxos_gir_profile_management\": [\n    \"lib/ansible/modules/network/nxos/nxos_gir_profile_management.py\"\n  ], \n  \"- nxos_igmp\": [\n    \"lib/ansible/modules/network/nxos/nxos_igmp.py\"\n  ], \n  \"- nxos_igmp_interface\": [\n    \"lib/ansible/modules/network/nxos/nxos_igmp_interface.py\"\n  ], \n  \"- nxos_igmp_snooping\": [\n    \"lib/ansible/modules/network/nxos/nxos_igmp_snooping.py\"\n  ], \n  \"- nxos_interface\\n- nxos_config\": [\n    \"lib/ansible/modules/network/nxos/nxos_config.py\", \n    \"lib/ansible/modules/network/nxos/nxos_interface.py\"\n  ], \n  \"- nxos_interface\\n7.0(3)I2(5)\": [\n    \"lib/ansible/modules/network/nxos/nxos_interface.py\"\n  ], \n  \"- nxos_interface_ospf\\n7.3(0)I6(1)\": [\n    \"lib/ansible/modules/network/nxos/nxos_interface_ospf.py\"\n  ], \n  \"- nxos_interface_ospf\\nAll\": [\n    \"lib/ansible/modules/network/nxos/nxos_interface_ospf.py\"\n  ], \n  \"- nxos_ip_interface\\n7.0(3)I2(5) and 7.0(3)F1(1)\": [\n    \"lib/ansible/modules/network/nxos/nxos_ip_interface.py\"\n  ], \n  \"- nxos_ip_interface\\n7.3(0)I5(1)\": [\n    \"lib/ansible/modules/network/nxos/nxos_ip_interface.py\"\n  ], \n  \"- nxos_mtu\": [\n    \"lib/ansible/modules/network/nxos/_nxos_mtu.py\"\n  ], \n  \"- nxos_ntp\\n7.0(3)I6(1)\": [\n    \"lib/ansible/modules/network/nxos/nxos_ntp.py\"\n  ], \n  \"- nxos_ntp_auth\": [\n    \"lib/ansible/modules/network/nxos/nxos_ntp_auth.py\"\n  ], \n  \"- nxos_ntp_options\": [\n    \"lib/ansible/modules/network/nxos/nxos_ntp_options.py\"\n  ], \n  \"- nxos_nxapi\\n7.0(3)I2(5) and 7.0(3)F1(1)\": [\n    \"lib/ansible/modules/network/nxos/nxos_nxapi.py\"\n  ], \n  \"- nxos_nxapi\\n7.0(3)I5(3)\": [\n    \"lib/ansible/modules/network/nxos/nxos_nxapi.py\"\n  ], \n  \"- nxos_ospf\\n7.0(3)I5(3) All version tested failed idempotence test.\": [\n    \"lib/ansible/modules/network/nxos/nxos_ospf.py\"\n  ], \n  \"- nxos_ospf_vrf\\n7.0(3)I5(3)\": [\n    \"lib/ansible/modules/network/nxos/nxos_ospf_vrf.py\"\n  ], \n  \"- nxos_overlay_global\\n7.0(3)I5(3)\": [\n    \"lib/ansible/modules/network/nxos/nxos_overlay_global.py\"\n  ], \n  \"- nxos_pim\\n7.0(3)I5(3), 8.0(1)\": [\n    \"lib/ansible/modules/network/nxos/nxos_pim.py\"\n  ], \n  \"- nxos_pim_interface\": [\n    \"lib/ansible/modules/network/nxos/nxos_pim_interface.py\"\n  ], \n  \"- nxos_pim_interface\\n7.0(3)I2(5), 7.0(3)F1(1)\": [\n    \"lib/ansible/modules/network/nxos/nxos_pim_interface.py\"\n  ], \n  \"- nxos_pim_interface\\n7.3(0)D1(1), 8.0(1), 7.0(3)I7(1), 7.0(3)I4(6)\": [\n    \"lib/ansible/modules/network/nxos/nxos_pim_interface.py\"\n  ], \n  \"- nxos_pim_rp_address\\nAll versions\": [\n    \"lib/ansible/modules/network/nxos/nxos_pim_rp_address.py\"\n  ], \n  \"- nxos_port_channel\\n- nxos_feature\": [\n    \"lib/ansible/modules/network/nxos/nxos_feature.py\"\n  ], \n  \"- nxos_portchannel\": [\n    \"lib/ansible/modules/network/nxos/nxos_portchannel.py\"\n  ], \n  \"- nxos_reboot\\n7.0(3)I5(3)\": [\n    \"lib/ansible/modules/network/nxos/nxos_reboot.py\"\n  ], \n  \"- nxos_smu\\n7.0(3)I5(3)\": [\n    \"lib/ansible/modules/network/nxos/nxos_smu.py\"\n  ], \n  \"- nxos_snmp_community\\n7.0(3)I6(1)\": [\n    \"lib/ansible/modules/network/nxos/nxos_snmp_community.py\"\n  ], \n  \"- nxos_snmp_community\\nAll\": [\n    \"lib/ansible/modules/network/nxos/nxos_snmp_community.py\"\n  ], \n  \"- nxos_snmp_contact\\n7.0(3)I5(3)\": [\n    \"lib/ansible/modules/network/nxos/nxos_snmp_contact.py\"\n  ], \n  \"- nxos_snmp_host\": [\n    \"lib/ansible/modules/network/nxos/nxos_snmp_host.py\"\n  ], \n  \"- nxos_snmp_location\\n- nxos_snmp_contact\": [\n    \"lib/ansible/modules/network/nxos/nxos_snmp_contact.py\", \n    \"lib/ansible/modules/network/nxos/nxos_snmp_location.py\"\n  ], \n  \"- nxos_snmp_location\\n7.0(3)I5(3)\": [\n    \"lib/ansible/modules/network/nxos/nxos_snmp_location.py\"\n  ], \n  \"- nxos_snmp_traps\": [\n    \"lib/ansible/modules/network/nxos/nxos_snmp_traps.py\"\n  ], \n  \"- nxos_vpc\\n- nxos_vpc_interface\": [\n    \"lib/ansible/modules/network/nxos/nxos_vpc.py\", \n    \"lib/ansible/modules/network/nxos/nxos_vpc_interface.py\"\n  ], \n  \"- nxos_vtp_version\": [\n    \"lib/ansible/modules/network/nxos/nxos_vtp_version.py\"\n  ], \n  \"- nxos_vtp_version\\n- nxos_feature\": [\n    \"lib/ansible/modules/network/nxos/nxos_feature.py\", \n    \"lib/ansible/modules/network/nxos/nxos_vtp_version.py\"\n  ], \n  \"- nxos_vtp_version\\n-nxos_feature\": [\n    \"lib/ansible/modules/network/nxos/nxos_feature.py\", \n    \"lib/ansible/modules/network/nxos/nxos_vtp_version.py\"\n  ], \n  \"- openssl_csr\": [\n    \"lib/ansible/modules/crypto/openssl_csr.py\"\n  ], \n  \"- os_stack\": [\n    \"lib/ansible/modules/cloud/openstack/os_stack.py\"\n  ], \n  \"- ovirt_disks\": [\n    \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\"\n  ], \n  \"- ping\": [\n    \"lib/ansible/modules/system/ping.py\"\n  ], \n  \"- pkg5 module\": [\n    \"lib/ansible/modules/packaging/os/pkg5.py\"\n  ], \n  \"- play\\n- role\\n- loop\\n- with_items\": [\n    \"lib/ansible/playbook/loop_control.py\", \n    \"lib/ansible/playbook/play.py\", \n    \"lib/ansible/playbook/role\"\n  ], \n  \"- plugins/callback/selective\": [\n    \"lib/ansible/plugins/callback/selective.py\"\n  ], \n  \"- postgresql_user\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_user.py\"\n  ], \n  \"- requirements.yml\": [], \n  \"- role + include_role + include\": [\n    \"lib/ansible/modules/utilities/logic/_include.py\", \n    \"lib/ansible/modules/utilities/logic/include_role.py\", \n    \"lib/ansible/playbook/role\"\n  ], \n  \"- s3 module\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"- setup module\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"- shell\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"- shell\\n- raw\\n- jinja2 templates\": [\n    \"lib/ansible/modules/commands/raw.py\", \n    \"lib/ansible/modules/commands/shell.py\", \n    \"lib/ansible/template\"\n  ], \n  \"- ssh\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"- sts_assume_role\": [\n    \"lib/ansible/modules/cloud/amazon/sts_assume_role.py\"\n  ], \n  \"- subversion\": [\n    \"lib/ansible/modules/source_control/subversion.py\"\n  ], \n  \"- synchronize\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"- template\\n- copy\": [\n    \"lib/ansible/modules/files/copy.py\", \n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"- template expansion\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"- tower_host\": [\n    \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_host.py\"\n  ], \n  \"- user\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"- virt\": [\n    \"lib/ansible/modules/cloud/misc/virt.py\"\n  ], \n  \"- virt_net\": [\n    \"lib/ansible/modules/cloud/misc/virt_net.py\"\n  ], \n  \"- vmware_guest\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"- vmware_guest.py\": [], \n  \"- when\\n- register\": [], \n  \"- win_nssm\": [\n    \"lib/ansible/modules/windows/win_nssm.py\"\n  ], \n  \"- win_ping\": [\n    \"lib/ansible/modules/windows/win_ping.py\"\n  ], \n  \"- win_template\\n- win_copy (EDIT)\": [\n    \"lib/ansible/modules/windows/win_copy.py\", \n    \"lib/ansible/modules/windows/win_template.py\"\n  ], \n  \"- winrm\": [\n    \"lib/ansible/plugins/connection/winrm.py\"\n  ], \n  \"- with_subelements\\n- loop_control.loop_var\\n- when condition\": [], \n  \"- yum\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"- yum\\n- apt\\n- dnf (but this is in the ansible-modules-extras repo)\": [\n    \"lib/ansible/modules/packaging/os/apt.py\", \n    \"lib/ansible/modules/packaging/os/dnf.py\", \n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"- yum\\n- dnf\": [\n    \"lib/ansible/modules/packaging/os/dnf.py\", \n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"-custom ansible modules\": [], \n  \"../ansible/modules/core/files/acl.py\": [\n    \"lib/ansible/modules/files/acl.py\"\n  ], \n  \"./lib/ansible/plugins/action/pause.py\": [], \n  \"/ansible/inventory\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"/ansible/modules/cloud/amazon/GUIDELINES.md\": \"lib/ansible/modules/cloud/amazon/GUIDELINES.md\", \n  \"/ansible/modules/cloud/amazon/_ec2_ami_search.py\": \"lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\", \n  \"/ansible/modules/cloud/amazon/_ec2_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\", \n  \"/ansible/modules/cloud/amazon/_ec2_remote_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\", \n  \"/ansible/modules/cloud/amazon/_ec2_vpc.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n  \"/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\", \n  \"/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\", \n  \"/ansible/modules/cloud/amazon/_iam_cert_facts.py\": \"lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\", \n  \"/ansible/modules/cloud/amazon/_s3.py\": \"lib/ansible/modules/cloud/amazon/_s3.py\", \n  \"/ansible/modules/cloud/amazon/aws_acm_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_acm_facts.py\", \n  \"/ansible/modules/cloud/amazon/aws_api_gateway.py\": \"lib/ansible/modules/cloud/amazon/aws_api_gateway.py\", \n  \"/ansible/modules/cloud/amazon/aws_direct_connect_connection.py\": \"lib/ansible/modules/cloud/amazon/aws_direct_connect_connection.py\", \n  \"/ansible/modules/cloud/amazon/aws_direct_connect_link_aggregation_group.py\": \"lib/ansible/modules/cloud/amazon/aws_direct_connect_link_aggregation_group.py\", \n  \"/ansible/modules/cloud/amazon/aws_kms.py\": \"lib/ansible/modules/cloud/amazon/aws_kms.py\", \n  \"/ansible/modules/cloud/amazon/aws_kms_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_kms_facts.py\", \n  \"/ansible/modules/cloud/amazon/aws_s3.py\": \"lib/ansible/modules/cloud/amazon/aws_s3.py\", \n  \"/ansible/modules/cloud/amazon/aws_s3_bucket_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_s3_bucket_facts.py\", \n  \"/ansible/modules/cloud/amazon/aws_ssm_parameter_store.py\": \"lib/ansible/modules/cloud/amazon/aws_ssm_parameter_store.py\", \n  \"/ansible/modules/cloud/amazon/aws_waf_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_waf_facts.py\", \n  \"/ansible/modules/cloud/amazon/cloudformation.py\": \"lib/ansible/modules/cloud/amazon/cloudformation.py\", \n  \"/ansible/modules/cloud/amazon/cloudformation_facts.py\": \"lib/ansible/modules/cloud/amazon/cloudformation_facts.py\", \n  \"/ansible/modules/cloud/amazon/cloudfront_facts.py\": \"lib/ansible/modules/cloud/amazon/cloudfront_facts.py\", \n  \"/ansible/modules/cloud/amazon/cloudtrail.py\": \"lib/ansible/modules/cloud/amazon/cloudtrail.py\", \n  \"/ansible/modules/cloud/amazon/cloudwatchevent_rule.py\": \"lib/ansible/modules/cloud/amazon/cloudwatchevent_rule.py\", \n  \"/ansible/modules/cloud/amazon/data_pipeline.py\": \"lib/ansible/modules/cloud/amazon/data_pipeline.py\", \n  \"/ansible/modules/cloud/amazon/dynamodb_table.py\": \"lib/ansible/modules/cloud/amazon/dynamodb_table.py\", \n  \"/ansible/modules/cloud/amazon/dynamodb_ttl.py\": \"lib/ansible/modules/cloud/amazon/dynamodb_ttl.py\", \n  \"/ansible/modules/cloud/amazon/ec2.py\": \"lib/ansible/modules/cloud/amazon/ec2.py\", \n  \"/ansible/modules/cloud/amazon/ec2_ami.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami.py\", \n  \"/ansible/modules/cloud/amazon/ec2_ami_copy.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami_copy.py\", \n  \"/ansible/modules/cloud/amazon/ec2_ami_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_ami_find.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami_find.py\", \n  \"/ansible/modules/cloud/amazon/ec2_ami_search.py\": \"lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\", \n  \"/ansible/modules/cloud/amazon/ec2_asg.py\": \"lib/ansible/modules/cloud/amazon/ec2_asg.py\", \n  \"/ansible/modules/cloud/amazon/ec2_asg_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_asg_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_customer_gateway.py\": \"lib/ansible/modules/cloud/amazon/ec2_customer_gateway.py\", \n  \"/ansible/modules/cloud/amazon/ec2_eip.py\": \"lib/ansible/modules/cloud/amazon/ec2_eip.py\", \n  \"/ansible/modules/cloud/amazon/ec2_elb.py\": \"lib/ansible/modules/cloud/amazon/ec2_elb.py\", \n  \"/ansible/modules/cloud/amazon/ec2_elb_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_elb_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_elb_lb.py\": \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\", \n  \"/ansible/modules/cloud/amazon/ec2_eni.py\": \"lib/ansible/modules/cloud/amazon/ec2_eni.py\", \n  \"/ansible/modules/cloud/amazon/ec2_eni_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_eni_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_group.py\": \"lib/ansible/modules/cloud/amazon/ec2_group.py\", \n  \"/ansible/modules/cloud/amazon/ec2_group_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_group_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_instance_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_instance_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_key.py\": \"lib/ansible/modules/cloud/amazon/ec2_key.py\", \n  \"/ansible/modules/cloud/amazon/ec2_lc.py\": \"lib/ansible/modules/cloud/amazon/ec2_lc.py\", \n  \"/ansible/modules/cloud/amazon/ec2_lc_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_lc_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_lc_find.py\": \"lib/ansible/modules/cloud/amazon/ec2_lc_find.py\", \n  \"/ansible/modules/cloud/amazon/ec2_metadata_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_metadata_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_metric_alarm.py\": \"lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py\", \n  \"/ansible/modules/cloud/amazon/ec2_remote_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_scaling_policy.py\": \"lib/ansible/modules/cloud/amazon/ec2_scaling_policy.py\", \n  \"/ansible/modules/cloud/amazon/ec2_snapshot.py\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot.py\", \n  \"/ansible/modules/cloud/amazon/ec2_snapshot_copy.py\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot_copy.py\", \n  \"/ansible/modules/cloud/amazon/ec2_snapshot_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_tag.py\": \"lib/ansible/modules/cloud/amazon/ec2_tag.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vol.py\": \"lib/ansible/modules/cloud/amazon/ec2_vol.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vol_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vol_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_dhcp_options.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_dhcp_options_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_endpoint.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_endpoint_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_igw.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_igw_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_nacl.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_nacl_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_net.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_net.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_net_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_net_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_peer.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peer.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_peering_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peering_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_route_table_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_subnet.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_subnet_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_vgw.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_vgw_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw_facts.py\", \n  \"/ansible/modules/cloud/amazon/ec2_vpc_vpn.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vpn.py\", \n  \"/ansible/modules/cloud/amazon/ec2_win_password.py\": \"lib/ansible/modules/cloud/amazon/ec2_win_password.py\", \n  \"/ansible/modules/cloud/amazon/ecs_attribute.py\": \"lib/ansible/modules/cloud/amazon/ecs_attribute.py\", \n  \"/ansible/modules/cloud/amazon/ecs_cluster.py\": \"lib/ansible/modules/cloud/amazon/ecs_cluster.py\", \n  \"/ansible/modules/cloud/amazon/ecs_ecr.py\": \"lib/ansible/modules/cloud/amazon/ecs_ecr.py\", \n  \"/ansible/modules/cloud/amazon/ecs_service.py\": \"lib/ansible/modules/cloud/amazon/ecs_service.py\", \n  \"/ansible/modules/cloud/amazon/ecs_service_facts.py\": \"lib/ansible/modules/cloud/amazon/ecs_service_facts.py\", \n  \"/ansible/modules/cloud/amazon/ecs_task.py\": \"lib/ansible/modules/cloud/amazon/ecs_task.py\", \n  \"/ansible/modules/cloud/amazon/ecs_taskdefinition.py\": \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py\", \n  \"/ansible/modules/cloud/amazon/ecs_taskdefinition_facts.py\": \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition_facts.py\", \n  \"/ansible/modules/cloud/amazon/efs.py\": \"lib/ansible/modules/cloud/amazon/efs.py\", \n  \"/ansible/modules/cloud/amazon/efs_facts.py\": \"lib/ansible/modules/cloud/amazon/efs_facts.py\", \n  \"/ansible/modules/cloud/amazon/elasticache.py\": \"lib/ansible/modules/cloud/amazon/elasticache.py\", \n  \"/ansible/modules/cloud/amazon/elasticache_parameter_group.py\": \"lib/ansible/modules/cloud/amazon/elasticache_parameter_group.py\", \n  \"/ansible/modules/cloud/amazon/elasticache_snapshot.py\": \"lib/ansible/modules/cloud/amazon/elasticache_snapshot.py\", \n  \"/ansible/modules/cloud/amazon/elasticache_subnet_group.py\": \"lib/ansible/modules/cloud/amazon/elasticache_subnet_group.py\", \n  \"/ansible/modules/cloud/amazon/elb_application_lb.py\": \"lib/ansible/modules/cloud/amazon/elb_application_lb.py\", \n  \"/ansible/modules/cloud/amazon/elb_application_lb_facts.py\": \"lib/ansible/modules/cloud/amazon/elb_application_lb_facts.py\", \n  \"/ansible/modules/cloud/amazon/elb_classic_lb.py\": \"lib/ansible/modules/cloud/amazon/elb_classic_lb.py\", \n  \"/ansible/modules/cloud/amazon/elb_classic_lb_facts.py\": \"lib/ansible/modules/cloud/amazon/elb_classic_lb_facts.py\", \n  \"/ansible/modules/cloud/amazon/elb_instance.py\": \"lib/ansible/modules/cloud/amazon/elb_instance.py\", \n  \"/ansible/modules/cloud/amazon/elb_target_group.py\": \"lib/ansible/modules/cloud/amazon/elb_target_group.py\", \n  \"/ansible/modules/cloud/amazon/elb_target_group_facts.py\": \"lib/ansible/modules/cloud/amazon/elb_target_group_facts.py\", \n  \"/ansible/modules/cloud/amazon/execute_lambda.py\": \"lib/ansible/modules/cloud/amazon/execute_lambda.py\", \n  \"/ansible/modules/cloud/amazon/iam.py\": \"lib/ansible/modules/cloud/amazon/iam.py\", \n  \"/ansible/modules/cloud/amazon/iam_cert.py\": \"lib/ansible/modules/cloud/amazon/iam_cert.py\", \n  \"/ansible/modules/cloud/amazon/iam_cert_facts.py\": \"lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\", \n  \"/ansible/modules/cloud/amazon/iam_group.py\": \"lib/ansible/modules/cloud/amazon/iam_group.py\", \n  \"/ansible/modules/cloud/amazon/iam_managed_policy.py\": \"lib/ansible/modules/cloud/amazon/iam_managed_policy.py\", \n  \"/ansible/modules/cloud/amazon/iam_mfa_device_facts.py\": \"lib/ansible/modules/cloud/amazon/iam_mfa_device_facts.py\", \n  \"/ansible/modules/cloud/amazon/iam_policy.py\": \"lib/ansible/modules/cloud/amazon/iam_policy.py\", \n  \"/ansible/modules/cloud/amazon/iam_role.py\": \"lib/ansible/modules/cloud/amazon/iam_role.py\", \n  \"/ansible/modules/cloud/amazon/iam_server_certificate_facts.py\": \"lib/ansible/modules/cloud/amazon/iam_server_certificate_facts.py\", \n  \"/ansible/modules/cloud/amazon/kinesis_stream.py\": \"lib/ansible/modules/cloud/amazon/kinesis_stream.py\", \n  \"/ansible/modules/cloud/amazon/lambda.py\": \"lib/ansible/modules/cloud/amazon/lambda.py\", \n  \"/ansible/modules/cloud/amazon/lambda_alias.py\": \"lib/ansible/modules/cloud/amazon/lambda_alias.py\", \n  \"/ansible/modules/cloud/amazon/lambda_event.py\": \"lib/ansible/modules/cloud/amazon/lambda_event.py\", \n  \"/ansible/modules/cloud/amazon/lambda_facts.py\": \"lib/ansible/modules/cloud/amazon/lambda_facts.py\", \n  \"/ansible/modules/cloud/amazon/lambda_policy.py\": \"lib/ansible/modules/cloud/amazon/lambda_policy.py\", \n  \"/ansible/modules/cloud/amazon/lightsail.py\": \"lib/ansible/modules/cloud/amazon/lightsail.py\", \n  \"/ansible/modules/cloud/amazon/rds.py\": \"lib/ansible/modules/cloud/amazon/rds.py\", \n  \"/ansible/modules/cloud/amazon/rds_param_group.py\": \"lib/ansible/modules/cloud/amazon/rds_param_group.py\", \n  \"/ansible/modules/cloud/amazon/rds_subnet_group.py\": \"lib/ansible/modules/cloud/amazon/rds_subnet_group.py\", \n  \"/ansible/modules/cloud/amazon/redshift.py\": \"lib/ansible/modules/cloud/amazon/redshift.py\", \n  \"/ansible/modules/cloud/amazon/redshift_facts.py\": \"lib/ansible/modules/cloud/amazon/redshift_facts.py\", \n  \"/ansible/modules/cloud/amazon/redshift_subnet_group.py\": \"lib/ansible/modules/cloud/amazon/redshift_subnet_group.py\", \n  \"/ansible/modules/cloud/amazon/route53.py\": \"lib/ansible/modules/cloud/amazon/route53.py\", \n  \"/ansible/modules/cloud/amazon/route53_facts.py\": \"lib/ansible/modules/cloud/amazon/route53_facts.py\", \n  \"/ansible/modules/cloud/amazon/route53_health_check.py\": \"lib/ansible/modules/cloud/amazon/route53_health_check.py\", \n  \"/ansible/modules/cloud/amazon/route53_zone.py\": \"lib/ansible/modules/cloud/amazon/route53_zone.py\", \n  \"/ansible/modules/cloud/amazon/s3.py\": \"lib/ansible/modules/cloud/amazon/_s3.py\", \n  \"/ansible/modules/cloud/amazon/s3_bucket.py\": \"lib/ansible/modules/cloud/amazon/s3_bucket.py\", \n  \"/ansible/modules/cloud/amazon/s3_lifecycle.py\": \"lib/ansible/modules/cloud/amazon/s3_lifecycle.py\", \n  \"/ansible/modules/cloud/amazon/s3_logging.py\": \"lib/ansible/modules/cloud/amazon/s3_logging.py\", \n  \"/ansible/modules/cloud/amazon/s3_sync.py\": \"lib/ansible/modules/cloud/amazon/s3_sync.py\", \n  \"/ansible/modules/cloud/amazon/s3_website.py\": \"lib/ansible/modules/cloud/amazon/s3_website.py\", \n  \"/ansible/modules/cloud/amazon/sns.py\": \"lib/ansible/modules/cloud/amazon/sns.py\", \n  \"/ansible/modules/cloud/amazon/sns_topic.py\": \"lib/ansible/modules/cloud/amazon/sns_topic.py\", \n  \"/ansible/modules/cloud/amazon/sqs_queue.py\": \"lib/ansible/modules/cloud/amazon/sqs_queue.py\", \n  \"/ansible/modules/cloud/amazon/sts_assume_role.py\": \"lib/ansible/modules/cloud/amazon/sts_assume_role.py\", \n  \"/ansible/modules/cloud/amazon/sts_session_token.py\": \"lib/ansible/modules/cloud/amazon/sts_session_token.py\", \n  \"/ansible/modules/cloud/atomic/atomic_container.py\": \"lib/ansible/modules/cloud/atomic/atomic_container.py\", \n  \"/ansible/modules/cloud/atomic/atomic_host.py\": \"lib/ansible/modules/cloud/atomic/atomic_host.py\", \n  \"/ansible/modules/cloud/atomic/atomic_image.py\": \"lib/ansible/modules/cloud/atomic/atomic_image.py\", \n  \"/ansible/modules/cloud/azure/_azure.py\": \"lib/ansible/modules/cloud/azure/_azure.py\", \n  \"/ansible/modules/cloud/azure/azure.py\": \"lib/ansible/modules/cloud/azure/_azure.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_acs.py\": \"lib/ansible/modules/cloud/azure/azure_rm_acs.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_availabilityset.py\": \"lib/ansible/modules/cloud/azure/azure_rm_availabilityset.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_availabilityset_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_availabilityset_facts.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_deployment.py\": \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_dnsrecordset.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_dnsrecordset_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset_facts.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_dnszone.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnszone.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_dnszone_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnszone_facts.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_functionapp.py\": \"lib/ansible/modules/cloud/azure/azure_rm_functionapp.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_functionapp_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_functionapp_facts.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_loadbalancer.py\": \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_loadbalancer_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer_facts.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_managed_disk.py\": \"lib/ansible/modules/cloud/azure/azure_rm_managed_disk.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_managed_disk_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_managed_disk_facts.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_networkinterface.py\": \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_networkinterface_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface_facts.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_publicipaddress.py\": \"lib/ansible/modules/cloud/azure/azure_rm_publicipaddress.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_publicipaddress_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_publicipaddress_facts.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_resourcegroup.py\": \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_resourcegroup_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup_facts.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_securitygroup.py\": \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_securitygroup_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup_facts.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_storageaccount.py\": \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_storageaccount_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount_facts.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_storageblob.py\": \"lib/ansible/modules/cloud/azure/azure_rm_storageblob.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_subnet.py\": \"lib/ansible/modules/cloud/azure/azure_rm_subnet.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_virtualmachine_extension.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_extension.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset_facts.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_virtualmachineimage_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachineimage_facts.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_virtualnetwork.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork.py\", \n  \"/ansible/modules/cloud/azure/azure_rm_virtualnetwork_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork_facts.py\", \n  \"/ansible/modules/cloud/centurylink/clc_aa_policy.py\": \"lib/ansible/modules/cloud/centurylink/clc_aa_policy.py\", \n  \"/ansible/modules/cloud/centurylink/clc_alert_policy.py\": \"lib/ansible/modules/cloud/centurylink/clc_alert_policy.py\", \n  \"/ansible/modules/cloud/centurylink/clc_blueprint_package.py\": \"lib/ansible/modules/cloud/centurylink/clc_blueprint_package.py\", \n  \"/ansible/modules/cloud/centurylink/clc_firewall_policy.py\": \"lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py\", \n  \"/ansible/modules/cloud/centurylink/clc_group.py\": \"lib/ansible/modules/cloud/centurylink/clc_group.py\", \n  \"/ansible/modules/cloud/centurylink/clc_loadbalancer.py\": \"lib/ansible/modules/cloud/centurylink/clc_loadbalancer.py\", \n  \"/ansible/modules/cloud/centurylink/clc_modify_server.py\": \"lib/ansible/modules/cloud/centurylink/clc_modify_server.py\", \n  \"/ansible/modules/cloud/centurylink/clc_publicip.py\": \"lib/ansible/modules/cloud/centurylink/clc_publicip.py\", \n  \"/ansible/modules/cloud/centurylink/clc_server.py\": \"lib/ansible/modules/cloud/centurylink/clc_server.py\", \n  \"/ansible/modules/cloud/centurylink/clc_server_snapshot.py\": \"lib/ansible/modules/cloud/centurylink/clc_server_snapshot.py\", \n  \"/ansible/modules/cloud/cloudscale/cloudscale_server.py\": \"lib/ansible/modules/cloud/cloudscale/cloudscale_server.py\", \n  \"/ansible/modules/cloud/cloudstack/_cs_nic.py\": \"lib/ansible/modules/cloud/cloudstack/_cs_nic.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_account.py\": \"lib/ansible/modules/cloud/cloudstack/cs_account.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_affinitygroup.py\": \"lib/ansible/modules/cloud/cloudstack/cs_affinitygroup.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_cluster.py\": \"lib/ansible/modules/cloud/cloudstack/cs_cluster.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_configuration.py\": \"lib/ansible/modules/cloud/cloudstack/cs_configuration.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_domain.py\": \"lib/ansible/modules/cloud/cloudstack/cs_domain.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_facts.py\": \"lib/ansible/modules/cloud/cloudstack/cs_facts.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_firewall.py\": \"lib/ansible/modules/cloud/cloudstack/cs_firewall.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_host.py\": \"lib/ansible/modules/cloud/cloudstack/cs_host.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_instance.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_instance_facts.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_facts.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_instance_nic.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_nic.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_instance_nic_secondaryip.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_nic_secondaryip.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_instancegroup.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instancegroup.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_ip_address.py\": \"lib/ansible/modules/cloud/cloudstack/cs_ip_address.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_iso.py\": \"lib/ansible/modules/cloud/cloudstack/cs_iso.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule.py\": \"lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule_member.py\": \"lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule_member.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_network.py\": \"lib/ansible/modules/cloud/cloudstack/cs_network.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_network_acl.py\": \"lib/ansible/modules/cloud/cloudstack/cs_network_acl.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_network_acl_rule.py\": \"lib/ansible/modules/cloud/cloudstack/cs_network_acl_rule.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_nic.py\": \"lib/ansible/modules/cloud/cloudstack/_cs_nic.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_pod.py\": \"lib/ansible/modules/cloud/cloudstack/cs_pod.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_portforward.py\": \"lib/ansible/modules/cloud/cloudstack/cs_portforward.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_project.py\": \"lib/ansible/modules/cloud/cloudstack/cs_project.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_region.py\": \"lib/ansible/modules/cloud/cloudstack/cs_region.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_resourcelimit.py\": \"lib/ansible/modules/cloud/cloudstack/cs_resourcelimit.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_role.py\": \"lib/ansible/modules/cloud/cloudstack/cs_role.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_router.py\": \"lib/ansible/modules/cloud/cloudstack/cs_router.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_securitygroup.py\": \"lib/ansible/modules/cloud/cloudstack/cs_securitygroup.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_securitygroup_rule.py\": \"lib/ansible/modules/cloud/cloudstack/cs_securitygroup_rule.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_snapshot_policy.py\": \"lib/ansible/modules/cloud/cloudstack/cs_snapshot_policy.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_sshkeypair.py\": \"lib/ansible/modules/cloud/cloudstack/cs_sshkeypair.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_staticnat.py\": \"lib/ansible/modules/cloud/cloudstack/cs_staticnat.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_storage_pool.py\": \"lib/ansible/modules/cloud/cloudstack/cs_storage_pool.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_template.py\": \"lib/ansible/modules/cloud/cloudstack/cs_template.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_user.py\": \"lib/ansible/modules/cloud/cloudstack/cs_user.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_vmsnapshot.py\": \"lib/ansible/modules/cloud/cloudstack/cs_vmsnapshot.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_volume.py\": \"lib/ansible/modules/cloud/cloudstack/cs_volume.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_vpc.py\": \"lib/ansible/modules/cloud/cloudstack/cs_vpc.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_vpn_gateway.py\": \"lib/ansible/modules/cloud/cloudstack/cs_vpn_gateway.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_zone.py\": \"lib/ansible/modules/cloud/cloudstack/cs_zone.py\", \n  \"/ansible/modules/cloud/cloudstack/cs_zone_facts.py\": \"lib/ansible/modules/cloud/cloudstack/cs_zone_facts.py\", \n  \"/ansible/modules/cloud/digital_ocean/digital_ocean.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean.py\", \n  \"/ansible/modules/cloud/digital_ocean/digital_ocean_block_storage.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_block_storage.py\", \n  \"/ansible/modules/cloud/digital_ocean/digital_ocean_domain.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_domain.py\", \n  \"/ansible/modules/cloud/digital_ocean/digital_ocean_floating_ip.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_floating_ip.py\", \n  \"/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey.py\", \n  \"/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey_facts.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey_facts.py\", \n  \"/ansible/modules/cloud/digital_ocean/digital_ocean_tag.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_tag.py\", \n  \"/ansible/modules/cloud/dimensiondata/dimensiondata_network.py\": \"lib/ansible/modules/cloud/dimensiondata/dimensiondata_network.py\", \n  \"/ansible/modules/cloud/docker/_docker.py\": \"lib/ansible/modules/cloud/docker/_docker.py\", \n  \"/ansible/modules/cloud/docker/docker.py\": \"lib/ansible/modules/cloud/docker/_docker.py\", \n  \"/ansible/modules/cloud/docker/docker_container.py\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n  \"/ansible/modules/cloud/docker/docker_image.py\": \"lib/ansible/modules/cloud/docker/docker_image.py\", \n  \"/ansible/modules/cloud/docker/docker_image_facts.py\": \"lib/ansible/modules/cloud/docker/docker_image_facts.py\", \n  \"/ansible/modules/cloud/docker/docker_login.py\": \"lib/ansible/modules/cloud/docker/docker_login.py\", \n  \"/ansible/modules/cloud/docker/docker_network.py\": \"lib/ansible/modules/cloud/docker/docker_network.py\", \n  \"/ansible/modules/cloud/docker/docker_secret.py\": \"lib/ansible/modules/cloud/docker/docker_secret.py\", \n  \"/ansible/modules/cloud/docker/docker_service.py\": \"lib/ansible/modules/cloud/docker/docker_service.py\", \n  \"/ansible/modules/cloud/docker/docker_volume.py\": \"lib/ansible/modules/cloud/docker/docker_volume.py\", \n  \"/ansible/modules/cloud/google/gc_storage.py\": \"lib/ansible/modules/cloud/google/gc_storage.py\", \n  \"/ansible/modules/cloud/google/gcdns_record.py\": \"lib/ansible/modules/cloud/google/gcdns_record.py\", \n  \"/ansible/modules/cloud/google/gcdns_zone.py\": \"lib/ansible/modules/cloud/google/gcdns_zone.py\", \n  \"/ansible/modules/cloud/google/gce.py\": \"lib/ansible/modules/cloud/google/gce.py\", \n  \"/ansible/modules/cloud/google/gce_eip.py\": \"lib/ansible/modules/cloud/google/gce_eip.py\", \n  \"/ansible/modules/cloud/google/gce_img.py\": \"lib/ansible/modules/cloud/google/gce_img.py\", \n  \"/ansible/modules/cloud/google/gce_instance_template.py\": \"lib/ansible/modules/cloud/google/gce_instance_template.py\", \n  \"/ansible/modules/cloud/google/gce_labels.py\": \"lib/ansible/modules/cloud/google/gce_labels.py\", \n  \"/ansible/modules/cloud/google/gce_lb.py\": \"lib/ansible/modules/cloud/google/gce_lb.py\", \n  \"/ansible/modules/cloud/google/gce_mig.py\": \"lib/ansible/modules/cloud/google/gce_mig.py\", \n  \"/ansible/modules/cloud/google/gce_net.py\": \"lib/ansible/modules/cloud/google/gce_net.py\", \n  \"/ansible/modules/cloud/google/gce_pd.py\": \"lib/ansible/modules/cloud/google/gce_pd.py\", \n  \"/ansible/modules/cloud/google/gce_snapshot.py\": \"lib/ansible/modules/cloud/google/gce_snapshot.py\", \n  \"/ansible/modules/cloud/google/gce_tag.py\": \"lib/ansible/modules/cloud/google/gce_tag.py\", \n  \"/ansible/modules/cloud/google/gcp_backend_service.py\": \"lib/ansible/modules/cloud/google/gcp_backend_service.py\", \n  \"/ansible/modules/cloud/google/gcp_forwarding_rule.py\": \"lib/ansible/modules/cloud/google/gcp_forwarding_rule.py\", \n  \"/ansible/modules/cloud/google/gcp_healthcheck.py\": \"lib/ansible/modules/cloud/google/gcp_healthcheck.py\", \n  \"/ansible/modules/cloud/google/gcp_target_proxy.py\": \"lib/ansible/modules/cloud/google/gcp_target_proxy.py\", \n  \"/ansible/modules/cloud/google/gcp_url_map.py\": \"lib/ansible/modules/cloud/google/gcp_url_map.py\", \n  \"/ansible/modules/cloud/google/gcpubsub.py\": \"lib/ansible/modules/cloud/google/gcpubsub.py\", \n  \"/ansible/modules/cloud/google/gcpubsub_facts.py\": \"lib/ansible/modules/cloud/google/gcpubsub_facts.py\", \n  \"/ansible/modules/cloud/google/gcspanner.py\": \"lib/ansible/modules/cloud/google/gcspanner.py\", \n  \"/ansible/modules/cloud/linode/linode.py\": \"lib/ansible/modules/cloud/linode/linode.py\", \n  \"/ansible/modules/cloud/lxc/lxc_container.py\": \"lib/ansible/modules/cloud/lxc/lxc_container.py\", \n  \"/ansible/modules/cloud/lxd/lxd_container.py\": \"lib/ansible/modules/cloud/lxd/lxd_container.py\", \n  \"/ansible/modules/cloud/lxd/lxd_profile.py\": \"lib/ansible/modules/cloud/lxd/lxd_profile.py\", \n  \"/ansible/modules/cloud/misc/helm.py\": \"lib/ansible/modules/cloud/misc/helm.py\", \n  \"/ansible/modules/cloud/misc/ovirt.py\": \"lib/ansible/modules/cloud/misc/ovirt.py\", \n  \"/ansible/modules/cloud/misc/proxmox.py\": \"lib/ansible/modules/cloud/misc/proxmox.py\", \n  \"/ansible/modules/cloud/misc/proxmox_kvm.py\": \"lib/ansible/modules/cloud/misc/proxmox_kvm.py\", \n  \"/ansible/modules/cloud/misc/proxmox_template.py\": \"lib/ansible/modules/cloud/misc/proxmox_template.py\", \n  \"/ansible/modules/cloud/misc/rhevm.py\": \"lib/ansible/modules/cloud/misc/rhevm.py\", \n  \"/ansible/modules/cloud/misc/serverless.py\": \"lib/ansible/modules/cloud/misc/serverless.py\", \n  \"/ansible/modules/cloud/misc/virt.py\": \"lib/ansible/modules/cloud/misc/virt.py\", \n  \"/ansible/modules/cloud/misc/virt_net.py\": \"lib/ansible/modules/cloud/misc/virt_net.py\", \n  \"/ansible/modules/cloud/misc/virt_pool.py\": \"lib/ansible/modules/cloud/misc/virt_pool.py\", \n  \"/ansible/modules/cloud/misc/xenserver_facts.py\": \"lib/ansible/modules/cloud/misc/xenserver_facts.py\", \n  \"/ansible/modules/cloud/openstack/README.md\": \"lib/ansible/modules/cloud/openstack/README.md\", \n  \"/ansible/modules/cloud/openstack/_os_server_actions.py\": \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n  \"/ansible/modules/cloud/openstack/os_auth.py\": \"lib/ansible/modules/cloud/openstack/os_auth.py\", \n  \"/ansible/modules/cloud/openstack/os_client_config.py\": \"lib/ansible/modules/cloud/openstack/os_client_config.py\", \n  \"/ansible/modules/cloud/openstack/os_flavor_facts.py\": \"lib/ansible/modules/cloud/openstack/os_flavor_facts.py\", \n  \"/ansible/modules/cloud/openstack/os_floating_ip.py\": \"lib/ansible/modules/cloud/openstack/os_floating_ip.py\", \n  \"/ansible/modules/cloud/openstack/os_group.py\": \"lib/ansible/modules/cloud/openstack/os_group.py\", \n  \"/ansible/modules/cloud/openstack/os_image.py\": \"lib/ansible/modules/cloud/openstack/os_image.py\", \n  \"/ansible/modules/cloud/openstack/os_image_facts.py\": \"lib/ansible/modules/cloud/openstack/os_image_facts.py\", \n  \"/ansible/modules/cloud/openstack/os_ironic.py\": \"lib/ansible/modules/cloud/openstack/os_ironic.py\", \n  \"/ansible/modules/cloud/openstack/os_ironic_inspect.py\": \"lib/ansible/modules/cloud/openstack/os_ironic_inspect.py\", \n  \"/ansible/modules/cloud/openstack/os_ironic_node.py\": \"lib/ansible/modules/cloud/openstack/os_ironic_node.py\", \n  \"/ansible/modules/cloud/openstack/os_keypair.py\": \"lib/ansible/modules/cloud/openstack/os_keypair.py\", \n  \"/ansible/modules/cloud/openstack/os_keystone_domain.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_domain.py\", \n  \"/ansible/modules/cloud/openstack/os_keystone_domain_facts.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_domain_facts.py\", \n  \"/ansible/modules/cloud/openstack/os_keystone_endpoint.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_endpoint.py\", \n  \"/ansible/modules/cloud/openstack/os_keystone_role.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_role.py\", \n  \"/ansible/modules/cloud/openstack/os_keystone_service.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_service.py\", \n  \"/ansible/modules/cloud/openstack/os_network.py\": \"lib/ansible/modules/cloud/openstack/os_network.py\", \n  \"/ansible/modules/cloud/openstack/os_networks_facts.py\": \"lib/ansible/modules/cloud/openstack/os_networks_facts.py\", \n  \"/ansible/modules/cloud/openstack/os_nova_flavor.py\": \"lib/ansible/modules/cloud/openstack/os_nova_flavor.py\", \n  \"/ansible/modules/cloud/openstack/os_nova_host_aggregate.py\": \"lib/ansible/modules/cloud/openstack/os_nova_host_aggregate.py\", \n  \"/ansible/modules/cloud/openstack/os_object.py\": \"lib/ansible/modules/cloud/openstack/os_object.py\", \n  \"/ansible/modules/cloud/openstack/os_port.py\": \"lib/ansible/modules/cloud/openstack/os_port.py\", \n  \"/ansible/modules/cloud/openstack/os_port_facts.py\": \"lib/ansible/modules/cloud/openstack/os_port_facts.py\", \n  \"/ansible/modules/cloud/openstack/os_project.py\": \"lib/ansible/modules/cloud/openstack/os_project.py\", \n  \"/ansible/modules/cloud/openstack/os_project_facts.py\": \"lib/ansible/modules/cloud/openstack/os_project_facts.py\", \n  \"/ansible/modules/cloud/openstack/os_quota.py\": \"lib/ansible/modules/cloud/openstack/os_quota.py\", \n  \"/ansible/modules/cloud/openstack/os_recordset.py\": \"lib/ansible/modules/cloud/openstack/os_recordset.py\", \n  \"/ansible/modules/cloud/openstack/os_router.py\": \"lib/ansible/modules/cloud/openstack/os_router.py\", \n  \"/ansible/modules/cloud/openstack/os_security_group.py\": \"lib/ansible/modules/cloud/openstack/os_security_group.py\", \n  \"/ansible/modules/cloud/openstack/os_security_group_rule.py\": \"lib/ansible/modules/cloud/openstack/os_security_group_rule.py\", \n  \"/ansible/modules/cloud/openstack/os_server.py\": \"lib/ansible/modules/cloud/openstack/os_server.py\", \n  \"/ansible/modules/cloud/openstack/os_server_action.py\": \"lib/ansible/modules/cloud/openstack/os_server_action.py\", \n  \"/ansible/modules/cloud/openstack/os_server_actions.py\": \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n  \"/ansible/modules/cloud/openstack/os_server_facts.py\": \"lib/ansible/modules/cloud/openstack/os_server_facts.py\", \n  \"/ansible/modules/cloud/openstack/os_server_group.py\": \"lib/ansible/modules/cloud/openstack/os_server_group.py\", \n  \"/ansible/modules/cloud/openstack/os_server_volume.py\": \"lib/ansible/modules/cloud/openstack/os_server_volume.py\", \n  \"/ansible/modules/cloud/openstack/os_stack.py\": \"lib/ansible/modules/cloud/openstack/os_stack.py\", \n  \"/ansible/modules/cloud/openstack/os_subnet.py\": \"lib/ansible/modules/cloud/openstack/os_subnet.py\", \n  \"/ansible/modules/cloud/openstack/os_subnets_facts.py\": \"lib/ansible/modules/cloud/openstack/os_subnets_facts.py\", \n  \"/ansible/modules/cloud/openstack/os_user.py\": \"lib/ansible/modules/cloud/openstack/os_user.py\", \n  \"/ansible/modules/cloud/openstack/os_user_facts.py\": \"lib/ansible/modules/cloud/openstack/os_user_facts.py\", \n  \"/ansible/modules/cloud/openstack/os_user_group.py\": \"lib/ansible/modules/cloud/openstack/os_user_group.py\", \n  \"/ansible/modules/cloud/openstack/os_user_role.py\": \"lib/ansible/modules/cloud/openstack/os_user_role.py\", \n  \"/ansible/modules/cloud/openstack/os_volume.py\": \"lib/ansible/modules/cloud/openstack/os_volume.py\", \n  \"/ansible/modules/cloud/openstack/os_zone.py\": \"lib/ansible/modules/cloud/openstack/os_zone.py\", \n  \"/ansible/modules/cloud/ovh/ovh_ip_loadbalancing_backend.py\": \"lib/ansible/modules/cloud/ovh/ovh_ip_loadbalancing_backend.py\", \n  \"/ansible/modules/cloud/ovirt/README.rst\": \"lib/ansible/modules/cloud/ovirt/README.rst\", \n  \"/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\", \n  \"/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\", \n  \"/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\", \n  \"/ansible/modules/cloud/ovirt/_ovirt_clusters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\", \n  \"/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\", \n  \"/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\", \n  \"/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\", \n  \"/ansible/modules/cloud/ovirt/_ovirt_disks.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\", \n  \"/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\", \n  \"/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\", \n  \"/ansible/modules/cloud/ovirt/_ovirt_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\", \n  \"/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_affinity_group.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_group.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_affinity_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_affinity_label.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_label.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_affinity_label_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_label_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_affinity_labels.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_affinity_labels_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_api_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_api_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_auth.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_auth.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_cluster.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_cluster.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_cluster_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_cluster_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_clusters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_clusters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_datacenter.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_datacenter.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_datacenter_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_datacenter_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_datacenters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_datacenters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_disk.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_disk.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_disk_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_disk_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_disks.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_external_provider.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_provider.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_external_provider_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_provider_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_external_providers.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_external_providers_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_group.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_group.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_group_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_group_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_groups_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_host_networks.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_networks.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_host_pm.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_pm.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_host_storage_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_storage_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_hosts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_hosts_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_mac_pools.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_mac_pools.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_networks.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_networks.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_networks_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_networks_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_nics.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_nics.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_nics_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_nics_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_permissions.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_permissions.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_permissions_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_permissions_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_quotas.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_quotas.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_quotas_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_quotas_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_scheduling_policies_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_scheduling_policies_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_snapshots.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_snapshots.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_snapshots_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_snapshots_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_storage_connections.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_connections.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_storage_domains.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_storage_domains_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_storage_templates_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_templates_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_storage_vms_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_vms_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_tags.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_tags.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_tags_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_tags_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_templates.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_templates.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_templates_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_templates_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_users.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_users.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_users_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_users_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_vmpools.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vmpools.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_vmpools_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vmpools_facts.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_vms.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms.py\", \n  \"/ansible/modules/cloud/ovirt/ovirt_vms_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms_facts.py\", \n  \"/ansible/modules/cloud/packet/packet_device.py\": \"lib/ansible/modules/cloud/packet/packet_device.py\", \n  \"/ansible/modules/cloud/packet/packet_sshkey.py\": \"lib/ansible/modules/cloud/packet/packet_sshkey.py\", \n  \"/ansible/modules/cloud/profitbricks/profitbricks.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks.py\", \n  \"/ansible/modules/cloud/profitbricks/profitbricks_datacenter.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_datacenter.py\", \n  \"/ansible/modules/cloud/profitbricks/profitbricks_nic.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_nic.py\", \n  \"/ansible/modules/cloud/profitbricks/profitbricks_volume.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume.py\", \n  \"/ansible/modules/cloud/profitbricks/profitbricks_volume_attachments.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume_attachments.py\", \n  \"/ansible/modules/cloud/pubnub/pubnub_blocks.py\": \"lib/ansible/modules/cloud/pubnub/pubnub_blocks.py\", \n  \"/ansible/modules/cloud/rackspace/rax.py\": \"lib/ansible/modules/cloud/rackspace/rax.py\", \n  \"/ansible/modules/cloud/rackspace/rax_cbs.py\": \"lib/ansible/modules/cloud/rackspace/rax_cbs.py\", \n  \"/ansible/modules/cloud/rackspace/rax_cbs_attachments.py\": \"lib/ansible/modules/cloud/rackspace/rax_cbs_attachments.py\", \n  \"/ansible/modules/cloud/rackspace/rax_cdb.py\": \"lib/ansible/modules/cloud/rackspace/rax_cdb.py\", \n  \"/ansible/modules/cloud/rackspace/rax_cdb_database.py\": \"lib/ansible/modules/cloud/rackspace/rax_cdb_database.py\", \n  \"/ansible/modules/cloud/rackspace/rax_cdb_user.py\": \"lib/ansible/modules/cloud/rackspace/rax_cdb_user.py\", \n  \"/ansible/modules/cloud/rackspace/rax_clb.py\": \"lib/ansible/modules/cloud/rackspace/rax_clb.py\", \n  \"/ansible/modules/cloud/rackspace/rax_clb_nodes.py\": \"lib/ansible/modules/cloud/rackspace/rax_clb_nodes.py\", \n  \"/ansible/modules/cloud/rackspace/rax_clb_ssl.py\": \"lib/ansible/modules/cloud/rackspace/rax_clb_ssl.py\", \n  \"/ansible/modules/cloud/rackspace/rax_dns.py\": \"lib/ansible/modules/cloud/rackspace/rax_dns.py\", \n  \"/ansible/modules/cloud/rackspace/rax_dns_record.py\": \"lib/ansible/modules/cloud/rackspace/rax_dns_record.py\", \n  \"/ansible/modules/cloud/rackspace/rax_facts.py\": \"lib/ansible/modules/cloud/rackspace/rax_facts.py\", \n  \"/ansible/modules/cloud/rackspace/rax_files.py\": \"lib/ansible/modules/cloud/rackspace/rax_files.py\", \n  \"/ansible/modules/cloud/rackspace/rax_files_objects.py\": \"lib/ansible/modules/cloud/rackspace/rax_files_objects.py\", \n  \"/ansible/modules/cloud/rackspace/rax_identity.py\": \"lib/ansible/modules/cloud/rackspace/rax_identity.py\", \n  \"/ansible/modules/cloud/rackspace/rax_keypair.py\": \"lib/ansible/modules/cloud/rackspace/rax_keypair.py\", \n  \"/ansible/modules/cloud/rackspace/rax_meta.py\": \"lib/ansible/modules/cloud/rackspace/rax_meta.py\", \n  \"/ansible/modules/cloud/rackspace/rax_mon_alarm.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_alarm.py\", \n  \"/ansible/modules/cloud/rackspace/rax_mon_check.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_check.py\", \n  \"/ansible/modules/cloud/rackspace/rax_mon_entity.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_entity.py\", \n  \"/ansible/modules/cloud/rackspace/rax_mon_notification.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_notification.py\", \n  \"/ansible/modules/cloud/rackspace/rax_mon_notification_plan.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_notification_plan.py\", \n  \"/ansible/modules/cloud/rackspace/rax_network.py\": \"lib/ansible/modules/cloud/rackspace/rax_network.py\", \n  \"/ansible/modules/cloud/rackspace/rax_queue.py\": \"lib/ansible/modules/cloud/rackspace/rax_queue.py\", \n  \"/ansible/modules/cloud/rackspace/rax_scaling_group.py\": \"lib/ansible/modules/cloud/rackspace/rax_scaling_group.py\", \n  \"/ansible/modules/cloud/rackspace/rax_scaling_policy.py\": \"lib/ansible/modules/cloud/rackspace/rax_scaling_policy.py\", \n  \"/ansible/modules/cloud/smartos/imgadm.py\": \"lib/ansible/modules/cloud/smartos/imgadm.py\", \n  \"/ansible/modules/cloud/smartos/smartos_image_facts.py\": \"lib/ansible/modules/cloud/smartos/smartos_image_facts.py\", \n  \"/ansible/modules/cloud/smartos/vmadm.py\": \"lib/ansible/modules/cloud/smartos/vmadm.py\", \n  \"/ansible/modules/cloud/softlayer/sl_vm.py\": \"lib/ansible/modules/cloud/softlayer/sl_vm.py\", \n  \"/ansible/modules/cloud/univention/udm_dns_record.py\": \"lib/ansible/modules/cloud/univention/udm_dns_record.py\", \n  \"/ansible/modules/cloud/univention/udm_dns_zone.py\": \"lib/ansible/modules/cloud/univention/udm_dns_zone.py\", \n  \"/ansible/modules/cloud/univention/udm_group.py\": \"lib/ansible/modules/cloud/univention/udm_group.py\", \n  \"/ansible/modules/cloud/univention/udm_share.py\": \"lib/ansible/modules/cloud/univention/udm_share.py\", \n  \"/ansible/modules/cloud/univention/udm_user.py\": \"lib/ansible/modules/cloud/univention/udm_user.py\", \n  \"/ansible/modules/cloud/vmware/vca_fw.py\": \"lib/ansible/modules/cloud/vmware/vca_fw.py\", \n  \"/ansible/modules/cloud/vmware/vca_nat.py\": \"lib/ansible/modules/cloud/vmware/vca_nat.py\", \n  \"/ansible/modules/cloud/vmware/vca_vapp.py\": \"lib/ansible/modules/cloud/vmware/vca_vapp.py\", \n  \"/ansible/modules/cloud/vmware/vcenter_license.py\": \"lib/ansible/modules/cloud/vmware/vcenter_license.py\", \n  \"/ansible/modules/cloud/vmware/vmware_cluster.py\": \"lib/ansible/modules/cloud/vmware/vmware_cluster.py\", \n  \"/ansible/modules/cloud/vmware/vmware_datacenter.py\": \"lib/ansible/modules/cloud/vmware/vmware_datacenter.py\", \n  \"/ansible/modules/cloud/vmware/vmware_dns_config.py\": \"lib/ansible/modules/cloud/vmware/vmware_dns_config.py\", \n  \"/ansible/modules/cloud/vmware/vmware_dvs_host.py\": \"lib/ansible/modules/cloud/vmware/vmware_dvs_host.py\", \n  \"/ansible/modules/cloud/vmware/vmware_dvs_portgroup.py\": \"lib/ansible/modules/cloud/vmware/vmware_dvs_portgroup.py\", \n  \"/ansible/modules/cloud/vmware/vmware_dvswitch.py\": \"lib/ansible/modules/cloud/vmware/vmware_dvswitch.py\", \n  \"/ansible/modules/cloud/vmware/vmware_guest.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n  \"/ansible/modules/cloud/vmware/vmware_guest_facts.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_facts.py\", \n  \"/ansible/modules/cloud/vmware/vmware_guest_find.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_find.py\", \n  \"/ansible/modules/cloud/vmware/vmware_guest_powerstate.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_powerstate.py\", \n  \"/ansible/modules/cloud/vmware/vmware_guest_snapshot.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_snapshot.py\", \n  \"/ansible/modules/cloud/vmware/vmware_guest_tools_wait.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_tools_wait.py\", \n  \"/ansible/modules/cloud/vmware/vmware_host.py\": \"lib/ansible/modules/cloud/vmware/vmware_host.py\", \n  \"/ansible/modules/cloud/vmware/vmware_local_user_manager.py\": \"lib/ansible/modules/cloud/vmware/vmware_local_user_manager.py\", \n  \"/ansible/modules/cloud/vmware/vmware_maintenancemode.py\": \"lib/ansible/modules/cloud/vmware/vmware_maintenancemode.py\", \n  \"/ansible/modules/cloud/vmware/vmware_migrate_vmk.py\": \"lib/ansible/modules/cloud/vmware/vmware_migrate_vmk.py\", \n  \"/ansible/modules/cloud/vmware/vmware_portgroup.py\": \"lib/ansible/modules/cloud/vmware/vmware_portgroup.py\", \n  \"/ansible/modules/cloud/vmware/vmware_resource_pool.py\": \"lib/ansible/modules/cloud/vmware/vmware_resource_pool.py\", \n  \"/ansible/modules/cloud/vmware/vmware_target_canonical_facts.py\": \"lib/ansible/modules/cloud/vmware/vmware_target_canonical_facts.py\", \n  \"/ansible/modules/cloud/vmware/vmware_vm_facts.py\": \"lib/ansible/modules/cloud/vmware/vmware_vm_facts.py\", \n  \"/ansible/modules/cloud/vmware/vmware_vm_shell.py\": \"lib/ansible/modules/cloud/vmware/vmware_vm_shell.py\", \n  \"/ansible/modules/cloud/vmware/vmware_vm_vss_dvs_migrate.py\": \"lib/ansible/modules/cloud/vmware/vmware_vm_vss_dvs_migrate.py\", \n  \"/ansible/modules/cloud/vmware/vmware_vmkernel.py\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel.py\", \n  \"/ansible/modules/cloud/vmware/vmware_vmkernel_ip_config.py\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel_ip_config.py\", \n  \"/ansible/modules/cloud/vmware/vmware_vmotion.py\": \"lib/ansible/modules/cloud/vmware/vmware_vmotion.py\", \n  \"/ansible/modules/cloud/vmware/vmware_vsan_cluster.py\": \"lib/ansible/modules/cloud/vmware/vmware_vsan_cluster.py\", \n  \"/ansible/modules/cloud/vmware/vmware_vswitch.py\": \"lib/ansible/modules/cloud/vmware/vmware_vswitch.py\", \n  \"/ansible/modules/cloud/vmware/vsphere_copy.py\": \"lib/ansible/modules/cloud/vmware/vsphere_copy.py\", \n  \"/ansible/modules/cloud/vmware/vsphere_guest.py\": \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\", \n  \"/ansible/modules/cloud/webfaction/webfaction_app.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_app.py\", \n  \"/ansible/modules/cloud/webfaction/webfaction_db.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_db.py\", \n  \"/ansible/modules/cloud/webfaction/webfaction_domain.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_domain.py\", \n  \"/ansible/modules/cloud/webfaction/webfaction_mailbox.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_mailbox.py\", \n  \"/ansible/modules/cloud/webfaction/webfaction_site.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_site.py\", \n  \"/ansible/modules/clustering/consul.py\": \"lib/ansible/modules/clustering/consul.py\", \n  \"/ansible/modules/clustering/consul_acl.py\": \"lib/ansible/modules/clustering/consul_acl.py\", \n  \"/ansible/modules/clustering/consul_kv.py\": \"lib/ansible/modules/clustering/consul_kv.py\", \n  \"/ansible/modules/clustering/consul_session.py\": \"lib/ansible/modules/clustering/consul_session.py\", \n  \"/ansible/modules/clustering/kubernetes.py\": \"lib/ansible/modules/clustering/kubernetes.py\", \n  \"/ansible/modules/clustering/oc.py\": \"lib/ansible/modules/clustering/oc.py\", \n  \"/ansible/modules/clustering/pacemaker_cluster.py\": \"lib/ansible/modules/clustering/pacemaker_cluster.py\", \n  \"/ansible/modules/clustering/znode.py\": \"lib/ansible/modules/clustering/znode.py\", \n  \"/ansible/modules/commands/command.py\": \"lib/ansible/modules/commands/command.py\", \n  \"/ansible/modules/commands/expect.py\": \"lib/ansible/modules/commands/expect.py\", \n  \"/ansible/modules/commands/raw.py\": \"lib/ansible/modules/commands/raw.py\", \n  \"/ansible/modules/commands/script.py\": \"lib/ansible/modules/commands/script.py\", \n  \"/ansible/modules/commands/shell.py\": \"lib/ansible/modules/commands/shell.py\", \n  \"/ansible/modules/commands/telnet.py\": \"lib/ansible/modules/commands/telnet.py\", \n  \"/ansible/modules/crypto/openssl_certificate.py\": \"lib/ansible/modules/crypto/openssl_certificate.py\", \n  \"/ansible/modules/crypto/openssl_csr.py\": \"lib/ansible/modules/crypto/openssl_csr.py\", \n  \"/ansible/modules/crypto/openssl_privatekey.py\": \"lib/ansible/modules/crypto/openssl_privatekey.py\", \n  \"/ansible/modules/crypto/openssl_publickey.py\": \"lib/ansible/modules/crypto/openssl_publickey.py\", \n  \"/ansible/modules/database/influxdb/influxdb_database.py\": \"lib/ansible/modules/database/influxdb/influxdb_database.py\", \n  \"/ansible/modules/database/influxdb/influxdb_retention_policy.py\": \"lib/ansible/modules/database/influxdb/influxdb_retention_policy.py\", \n  \"/ansible/modules/database/misc/elasticsearch_plugin.py\": \"lib/ansible/modules/database/misc/elasticsearch_plugin.py\", \n  \"/ansible/modules/database/misc/kibana_plugin.py\": \"lib/ansible/modules/database/misc/kibana_plugin.py\", \n  \"/ansible/modules/database/misc/redis.py\": \"lib/ansible/modules/database/misc/redis.py\", \n  \"/ansible/modules/database/misc/riak.py\": \"lib/ansible/modules/database/misc/riak.py\", \n  \"/ansible/modules/database/mongodb/mongodb_parameter.py\": \"lib/ansible/modules/database/mongodb/mongodb_parameter.py\", \n  \"/ansible/modules/database/mongodb/mongodb_user.py\": \"lib/ansible/modules/database/mongodb/mongodb_user.py\", \n  \"/ansible/modules/database/mssql/mssql_db.py\": \"lib/ansible/modules/database/mssql/mssql_db.py\", \n  \"/ansible/modules/database/mysql/mysql_db.py\": \"lib/ansible/modules/database/mysql/mysql_db.py\", \n  \"/ansible/modules/database/mysql/mysql_replication.py\": \"lib/ansible/modules/database/mysql/mysql_replication.py\", \n  \"/ansible/modules/database/mysql/mysql_user.py\": \"lib/ansible/modules/database/mysql/mysql_user.py\", \n  \"/ansible/modules/database/mysql/mysql_variables.py\": \"lib/ansible/modules/database/mysql/mysql_variables.py\", \n  \"/ansible/modules/database/postgresql/postgresql_db.py\": \"lib/ansible/modules/database/postgresql/postgresql_db.py\", \n  \"/ansible/modules/database/postgresql/postgresql_ext.py\": \"lib/ansible/modules/database/postgresql/postgresql_ext.py\", \n  \"/ansible/modules/database/postgresql/postgresql_lang.py\": \"lib/ansible/modules/database/postgresql/postgresql_lang.py\", \n  \"/ansible/modules/database/postgresql/postgresql_privs.py\": \"lib/ansible/modules/database/postgresql/postgresql_privs.py\", \n  \"/ansible/modules/database/postgresql/postgresql_schema.py\": \"lib/ansible/modules/database/postgresql/postgresql_schema.py\", \n  \"/ansible/modules/database/postgresql/postgresql_user.py\": \"lib/ansible/modules/database/postgresql/postgresql_user.py\", \n  \"/ansible/modules/database/proxysql/proxysql_backend_servers.py\": \"lib/ansible/modules/database/proxysql/proxysql_backend_servers.py\", \n  \"/ansible/modules/database/proxysql/proxysql_global_variables.py\": \"lib/ansible/modules/database/proxysql/proxysql_global_variables.py\", \n  \"/ansible/modules/database/proxysql/proxysql_manage_config.py\": \"lib/ansible/modules/database/proxysql/proxysql_manage_config.py\", \n  \"/ansible/modules/database/proxysql/proxysql_mysql_users.py\": \"lib/ansible/modules/database/proxysql/proxysql_mysql_users.py\", \n  \"/ansible/modules/database/proxysql/proxysql_query_rules.py\": \"lib/ansible/modules/database/proxysql/proxysql_query_rules.py\", \n  \"/ansible/modules/database/proxysql/proxysql_replication_hostgroups.py\": \"lib/ansible/modules/database/proxysql/proxysql_replication_hostgroups.py\", \n  \"/ansible/modules/database/proxysql/proxysql_scheduler.py\": \"lib/ansible/modules/database/proxysql/proxysql_scheduler.py\", \n  \"/ansible/modules/database/vertica/vertica_configuration.py\": \"lib/ansible/modules/database/vertica/vertica_configuration.py\", \n  \"/ansible/modules/database/vertica/vertica_facts.py\": \"lib/ansible/modules/database/vertica/vertica_facts.py\", \n  \"/ansible/modules/database/vertica/vertica_role.py\": \"lib/ansible/modules/database/vertica/vertica_role.py\", \n  \"/ansible/modules/database/vertica/vertica_schema.py\": \"lib/ansible/modules/database/vertica/vertica_schema.py\", \n  \"/ansible/modules/database/vertica/vertica_user.py\": \"lib/ansible/modules/database/vertica/vertica_user.py\", \n  \"/ansible/modules/files/acl.py\": \"lib/ansible/modules/files/acl.py\", \n  \"/ansible/modules/files/archive.py\": \"lib/ansible/modules/files/archive.py\", \n  \"/ansible/modules/files/assemble.py\": \"lib/ansible/modules/files/assemble.py\", \n  \"/ansible/modules/files/blockinfile.py\": \"lib/ansible/modules/files/blockinfile.py\", \n  \"/ansible/modules/files/copy.py\": \"lib/ansible/modules/files/copy.py\", \n  \"/ansible/modules/files/fetch.py\": \"lib/ansible/modules/files/fetch.py\", \n  \"/ansible/modules/files/file.py\": \"lib/ansible/modules/files/file.py\", \n  \"/ansible/modules/files/find.py\": \"lib/ansible/modules/files/find.py\", \n  \"/ansible/modules/files/ini_file.py\": \"lib/ansible/modules/files/ini_file.py\", \n  \"/ansible/modules/files/iso_extract.py\": \"lib/ansible/modules/files/iso_extract.py\", \n  \"/ansible/modules/files/lineinfile.py\": \"lib/ansible/modules/files/lineinfile.py\", \n  \"/ansible/modules/files/patch.py\": \"lib/ansible/modules/files/patch.py\", \n  \"/ansible/modules/files/replace.py\": \"lib/ansible/modules/files/replace.py\", \n  \"/ansible/modules/files/stat.py\": \"lib/ansible/modules/files/stat.py\", \n  \"/ansible/modules/files/synchronize.py\": \"lib/ansible/modules/files/synchronize.py\", \n  \"/ansible/modules/files/tempfile.py\": \"lib/ansible/modules/files/tempfile.py\", \n  \"/ansible/modules/files/template.py\": \"lib/ansible/modules/files/template.py\", \n  \"/ansible/modules/files/unarchive.py\": \"lib/ansible/modules/files/unarchive.py\", \n  \"/ansible/modules/files/xattr.py\": \"lib/ansible/modules/files/xattr.py\", \n  \"/ansible/modules/files/xml.py\": \"lib/ansible/modules/files/xml.py\", \n  \"/ansible/modules/identity/cyberark/cyberark_authentication.py\": \"lib/ansible/modules/identity/cyberark/cyberark_authentication.py\", \n  \"/ansible/modules/identity/cyberark/cyberark_user.py\": \"lib/ansible/modules/identity/cyberark/cyberark_user.py\", \n  \"/ansible/modules/identity/ipa/ipa_dnsrecord.py\": \"lib/ansible/modules/identity/ipa/ipa_dnsrecord.py\", \n  \"/ansible/modules/identity/ipa/ipa_dnszone.py\": \"lib/ansible/modules/identity/ipa/ipa_dnszone.py\", \n  \"/ansible/modules/identity/ipa/ipa_group.py\": \"lib/ansible/modules/identity/ipa/ipa_group.py\", \n  \"/ansible/modules/identity/ipa/ipa_hbacrule.py\": \"lib/ansible/modules/identity/ipa/ipa_hbacrule.py\", \n  \"/ansible/modules/identity/ipa/ipa_host.py\": \"lib/ansible/modules/identity/ipa/ipa_host.py\", \n  \"/ansible/modules/identity/ipa/ipa_hostgroup.py\": \"lib/ansible/modules/identity/ipa/ipa_hostgroup.py\", \n  \"/ansible/modules/identity/ipa/ipa_role.py\": \"lib/ansible/modules/identity/ipa/ipa_role.py\", \n  \"/ansible/modules/identity/ipa/ipa_sudocmd.py\": \"lib/ansible/modules/identity/ipa/ipa_sudocmd.py\", \n  \"/ansible/modules/identity/ipa/ipa_sudocmdgroup.py\": \"lib/ansible/modules/identity/ipa/ipa_sudocmdgroup.py\", \n  \"/ansible/modules/identity/ipa/ipa_sudorule.py\": \"lib/ansible/modules/identity/ipa/ipa_sudorule.py\", \n  \"/ansible/modules/identity/ipa/ipa_user.py\": \"lib/ansible/modules/identity/ipa/ipa_user.py\", \n  \"/ansible/modules/identity/opendj/opendj_backendprop.py\": \"lib/ansible/modules/identity/opendj/opendj_backendprop.py\", \n  \"/ansible/modules/inventory/add_host.py\": \"lib/ansible/modules/inventory/add_host.py\", \n  \"/ansible/modules/inventory/group_by.py\": \"lib/ansible/modules/inventory/group_by.py\", \n  \"/ansible/modules/messaging/rabbitmq_binding.py\": \"lib/ansible/modules/messaging/rabbitmq_binding.py\", \n  \"/ansible/modules/messaging/rabbitmq_exchange.py\": \"lib/ansible/modules/messaging/rabbitmq_exchange.py\", \n  \"/ansible/modules/messaging/rabbitmq_parameter.py\": \"lib/ansible/modules/messaging/rabbitmq_parameter.py\", \n  \"/ansible/modules/messaging/rabbitmq_plugin.py\": \"lib/ansible/modules/messaging/rabbitmq_plugin.py\", \n  \"/ansible/modules/messaging/rabbitmq_policy.py\": \"lib/ansible/modules/messaging/rabbitmq_policy.py\", \n  \"/ansible/modules/messaging/rabbitmq_queue.py\": \"lib/ansible/modules/messaging/rabbitmq_queue.py\", \n  \"/ansible/modules/messaging/rabbitmq_user.py\": \"lib/ansible/modules/messaging/rabbitmq_user.py\", \n  \"/ansible/modules/messaging/rabbitmq_vhost.py\": \"lib/ansible/modules/messaging/rabbitmq_vhost.py\", \n  \"/ansible/modules/monitoring/airbrake_deployment.py\": \"lib/ansible/modules/monitoring/airbrake_deployment.py\", \n  \"/ansible/modules/monitoring/bigpanda.py\": \"lib/ansible/modules/monitoring/bigpanda.py\", \n  \"/ansible/modules/monitoring/circonus_annotation.py\": \"lib/ansible/modules/monitoring/circonus_annotation.py\", \n  \"/ansible/modules/monitoring/datadog_event.py\": \"lib/ansible/modules/monitoring/datadog_event.py\", \n  \"/ansible/modules/monitoring/datadog_monitor.py\": \"lib/ansible/modules/monitoring/datadog_monitor.py\", \n  \"/ansible/modules/monitoring/honeybadger_deployment.py\": \"lib/ansible/modules/monitoring/honeybadger_deployment.py\", \n  \"/ansible/modules/monitoring/icinga2_feature.py\": \"lib/ansible/modules/monitoring/icinga2_feature.py\", \n  \"/ansible/modules/monitoring/librato_annotation.py\": \"lib/ansible/modules/monitoring/librato_annotation.py\", \n  \"/ansible/modules/monitoring/logentries.py\": \"lib/ansible/modules/monitoring/logentries.py\", \n  \"/ansible/modules/monitoring/logicmonitor.py\": \"lib/ansible/modules/monitoring/logicmonitor.py\", \n  \"/ansible/modules/monitoring/logicmonitor_facts.py\": \"lib/ansible/modules/monitoring/logicmonitor_facts.py\", \n  \"/ansible/modules/monitoring/logstash_plugin.py\": \"lib/ansible/modules/monitoring/logstash_plugin.py\", \n  \"/ansible/modules/monitoring/monit.py\": \"lib/ansible/modules/monitoring/monit.py\", \n  \"/ansible/modules/monitoring/nagios.py\": \"lib/ansible/modules/monitoring/nagios.py\", \n  \"/ansible/modules/monitoring/newrelic_deployment.py\": \"lib/ansible/modules/monitoring/newrelic_deployment.py\", \n  \"/ansible/modules/monitoring/pagerduty.py\": \"lib/ansible/modules/monitoring/pagerduty.py\", \n  \"/ansible/modules/monitoring/pagerduty_alert.py\": \"lib/ansible/modules/monitoring/pagerduty_alert.py\", \n  \"/ansible/modules/monitoring/pingdom.py\": \"lib/ansible/modules/monitoring/pingdom.py\", \n  \"/ansible/modules/monitoring/rollbar_deployment.py\": \"lib/ansible/modules/monitoring/rollbar_deployment.py\", \n  \"/ansible/modules/monitoring/sensu_check.py\": \"lib/ansible/modules/monitoring/sensu_check.py\", \n  \"/ansible/modules/monitoring/sensu_client.py\": \"lib/ansible/modules/monitoring/sensu_client.py\", \n  \"/ansible/modules/monitoring/sensu_handler.py\": \"lib/ansible/modules/monitoring/sensu_handler.py\", \n  \"/ansible/modules/monitoring/sensu_silence.py\": \"lib/ansible/modules/monitoring/sensu_silence.py\", \n  \"/ansible/modules/monitoring/sensu_subscription.py\": \"lib/ansible/modules/monitoring/sensu_subscription.py\", \n  \"/ansible/modules/monitoring/stackdriver.py\": \"lib/ansible/modules/monitoring/stackdriver.py\", \n  \"/ansible/modules/monitoring/statusio_maintenance.py\": \"lib/ansible/modules/monitoring/statusio_maintenance.py\", \n  \"/ansible/modules/monitoring/uptimerobot.py\": \"lib/ansible/modules/monitoring/uptimerobot.py\", \n  \"/ansible/modules/monitoring/zabbix/zabbix_group.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_group.py\", \n  \"/ansible/modules/monitoring/zabbix/zabbix_host.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_host.py\", \n  \"/ansible/modules/monitoring/zabbix/zabbix_hostmacro.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_hostmacro.py\", \n  \"/ansible/modules/monitoring/zabbix/zabbix_maintenance.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_maintenance.py\", \n  \"/ansible/modules/monitoring/zabbix/zabbix_proxy.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_proxy.py\", \n  \"/ansible/modules/monitoring/zabbix/zabbix_screen.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_screen.py\", \n  \"/ansible/modules/monitoring/zabbix/zabbix_template.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_template.py\", \n  \"/ansible/modules/net_tools/basics/get_url.py\": \"lib/ansible/modules/net_tools/basics/get_url.py\", \n  \"/ansible/modules/net_tools/basics/slurp.py\": \"lib/ansible/modules/net_tools/basics/slurp.py\", \n  \"/ansible/modules/net_tools/basics/uri.py\": \"lib/ansible/modules/net_tools/basics/uri.py\", \n  \"/ansible/modules/net_tools/cloudflare_dns.py\": \"lib/ansible/modules/net_tools/cloudflare_dns.py\", \n  \"/ansible/modules/net_tools/dnsimple.py\": \"lib/ansible/modules/net_tools/dnsimple.py\", \n  \"/ansible/modules/net_tools/dnsmadeeasy.py\": \"lib/ansible/modules/net_tools/dnsmadeeasy.py\", \n  \"/ansible/modules/net_tools/exoscale/exo_dns_domain.py\": \"lib/ansible/modules/net_tools/exoscale/exo_dns_domain.py\", \n  \"/ansible/modules/net_tools/exoscale/exo_dns_record.py\": \"lib/ansible/modules/net_tools/exoscale/exo_dns_record.py\", \n  \"/ansible/modules/net_tools/haproxy.py\": \"lib/ansible/modules/net_tools/haproxy.py\", \n  \"/ansible/modules/net_tools/infinity/infinity.py\": \"lib/ansible/modules/net_tools/infinity/infinity.py\", \n  \"/ansible/modules/net_tools/ipify_facts.py\": \"lib/ansible/modules/net_tools/ipify_facts.py\", \n  \"/ansible/modules/net_tools/ipinfoio_facts.py\": \"lib/ansible/modules/net_tools/ipinfoio_facts.py\", \n  \"/ansible/modules/net_tools/ldap/ldap_attr.py\": \"lib/ansible/modules/net_tools/ldap/ldap_attr.py\", \n  \"/ansible/modules/net_tools/ldap/ldap_entry.py\": \"lib/ansible/modules/net_tools/ldap/ldap_entry.py\", \n  \"/ansible/modules/net_tools/lldp.py\": \"lib/ansible/modules/net_tools/lldp.py\", \n  \"/ansible/modules/net_tools/nmcli.py\": \"lib/ansible/modules/net_tools/nmcli.py\", \n  \"/ansible/modules/net_tools/nsupdate.py\": \"lib/ansible/modules/net_tools/nsupdate.py\", \n  \"/ansible/modules/net_tools/omapi_host.py\": \"lib/ansible/modules/net_tools/omapi_host.py\", \n  \"/ansible/modules/net_tools/snmp_facts.py\": \"lib/ansible/modules/net_tools/snmp_facts.py\", \n  \"/ansible/modules/network/a10/a10_server.py\": \"lib/ansible/modules/network/a10/a10_server.py\", \n  \"/ansible/modules/network/a10/a10_server_axapi3.py\": \"lib/ansible/modules/network/a10/a10_server_axapi3.py\", \n  \"/ansible/modules/network/a10/a10_service_group.py\": \"lib/ansible/modules/network/a10/a10_service_group.py\", \n  \"/ansible/modules/network/a10/a10_virtual_server.py\": \"lib/ansible/modules/network/a10/a10_virtual_server.py\", \n  \"/ansible/modules/network/aci/aci_aep.py\": \"lib/ansible/modules/network/aci/aci_aep.py\", \n  \"/ansible/modules/network/aci/aci_ap.py\": \"lib/ansible/modules/network/aci/aci_ap.py\", \n  \"/ansible/modules/network/aci/aci_bd.py\": \"lib/ansible/modules/network/aci/aci_bd.py\", \n  \"/ansible/modules/network/aci/aci_bd_subnet.py\": \"lib/ansible/modules/network/aci/aci_bd_subnet.py\", \n  \"/ansible/modules/network/aci/aci_bd_to_l3out.py\": \"lib/ansible/modules/network/aci/aci_bd_to_l3out.py\", \n  \"/ansible/modules/network/aci/aci_config_rollback.py\": \"lib/ansible/modules/network/aci/aci_config_rollback.py\", \n  \"/ansible/modules/network/aci/aci_config_snapshot.py\": \"lib/ansible/modules/network/aci/aci_config_snapshot.py\", \n  \"/ansible/modules/network/aci/aci_contract.py\": \"lib/ansible/modules/network/aci/aci_contract.py\", \n  \"/ansible/modules/network/aci/aci_contract_subject.py\": \"lib/ansible/modules/network/aci/aci_contract_subject.py\", \n  \"/ansible/modules/network/aci/aci_contract_subject_to_filter.py\": \"lib/ansible/modules/network/aci/aci_contract_subject_to_filter.py\", \n  \"/ansible/modules/network/aci/aci_epg.py\": \"lib/ansible/modules/network/aci/aci_epg.py\", \n  \"/ansible/modules/network/aci/aci_epg_monitoring_policy.py\": \"lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py\", \n  \"/ansible/modules/network/aci/aci_epg_to_contract.py\": \"lib/ansible/modules/network/aci/aci_epg_to_contract.py\", \n  \"/ansible/modules/network/aci/aci_epg_to_domain.py\": \"lib/ansible/modules/network/aci/aci_epg_to_domain.py\", \n  \"/ansible/modules/network/aci/aci_filter.py\": \"lib/ansible/modules/network/aci/aci_filter.py\", \n  \"/ansible/modules/network/aci/aci_filter_entry.py\": \"lib/ansible/modules/network/aci/aci_filter_entry.py\", \n  \"/ansible/modules/network/aci/aci_intf_policy_fc.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_fc.py\", \n  \"/ansible/modules/network/aci/aci_intf_policy_l2.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_l2.py\", \n  \"/ansible/modules/network/aci/aci_intf_policy_lldp.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_lldp.py\", \n  \"/ansible/modules/network/aci/aci_intf_policy_mcp.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_mcp.py\", \n  \"/ansible/modules/network/aci/aci_intf_policy_port_channel.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_port_channel.py\", \n  \"/ansible/modules/network/aci/aci_intf_policy_port_security.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_port_security.py\", \n  \"/ansible/modules/network/aci/aci_l3out_route_tag_policy.py\": \"lib/ansible/modules/network/aci/aci_l3out_route_tag_policy.py\", \n  \"/ansible/modules/network/aci/aci_rest.py\": \"lib/ansible/modules/network/aci/aci_rest.py\", \n  \"/ansible/modules/network/aci/aci_taboo_contract.py\": \"lib/ansible/modules/network/aci/aci_taboo_contract.py\", \n  \"/ansible/modules/network/aci/aci_tenant.py\": \"lib/ansible/modules/network/aci/aci_tenant.py\", \n  \"/ansible/modules/network/aci/aci_tenant_action_rule_profile.py\": \"lib/ansible/modules/network/aci/aci_tenant_action_rule_profile.py\", \n  \"/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py\": \"lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py\", \n  \"/ansible/modules/network/aci/aci_tenant_span_dst_group.py\": \"lib/ansible/modules/network/aci/aci_tenant_span_dst_group.py\", \n  \"/ansible/modules/network/aci/aci_tenant_span_src_group.py\": \"lib/ansible/modules/network/aci/aci_tenant_span_src_group.py\", \n  \"/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py\": \"lib/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py\", \n  \"/ansible/modules/network/aci/aci_vrf.py\": \"lib/ansible/modules/network/aci/aci_vrf.py\", \n  \"/ansible/modules/network/aireos/aireos_command.py\": \"lib/ansible/modules/network/aireos/aireos_command.py\", \n  \"/ansible/modules/network/aireos/aireos_config.py\": \"lib/ansible/modules/network/aireos/aireos_config.py\", \n  \"/ansible/modules/network/aos/aos_asn_pool.py\": \"lib/ansible/modules/network/aos/aos_asn_pool.py\", \n  \"/ansible/modules/network/aos/aos_blueprint.py\": \"lib/ansible/modules/network/aos/aos_blueprint.py\", \n  \"/ansible/modules/network/aos/aos_blueprint_param.py\": \"lib/ansible/modules/network/aos/aos_blueprint_param.py\", \n  \"/ansible/modules/network/aos/aos_blueprint_virtnet.py\": \"lib/ansible/modules/network/aos/aos_blueprint_virtnet.py\", \n  \"/ansible/modules/network/aos/aos_device.py\": \"lib/ansible/modules/network/aos/aos_device.py\", \n  \"/ansible/modules/network/aos/aos_external_router.py\": \"lib/ansible/modules/network/aos/aos_external_router.py\", \n  \"/ansible/modules/network/aos/aos_ip_pool.py\": \"lib/ansible/modules/network/aos/aos_ip_pool.py\", \n  \"/ansible/modules/network/aos/aos_logical_device.py\": \"lib/ansible/modules/network/aos/aos_logical_device.py\", \n  \"/ansible/modules/network/aos/aos_logical_device_map.py\": \"lib/ansible/modules/network/aos/aos_logical_device_map.py\", \n  \"/ansible/modules/network/aos/aos_login.py\": \"lib/ansible/modules/network/aos/aos_login.py\", \n  \"/ansible/modules/network/aos/aos_rack_type.py\": \"lib/ansible/modules/network/aos/aos_rack_type.py\", \n  \"/ansible/modules/network/aos/aos_template.py\": \"lib/ansible/modules/network/aos/aos_template.py\", \n  \"/ansible/modules/network/aruba/aruba_command.py\": \"lib/ansible/modules/network/aruba/aruba_command.py\", \n  \"/ansible/modules/network/aruba/aruba_config.py\": \"lib/ansible/modules/network/aruba/aruba_config.py\", \n  \"/ansible/modules/network/asa/asa_acl.py\": \"lib/ansible/modules/network/asa/asa_acl.py\", \n  \"/ansible/modules/network/asa/asa_command.py\": \"lib/ansible/modules/network/asa/asa_command.py\", \n  \"/ansible/modules/network/asa/asa_config.py\": \"lib/ansible/modules/network/asa/asa_config.py\", \n  \"/ansible/modules/network/avi/avi_actiongroupconfig.py\": \"lib/ansible/modules/network/avi/avi_actiongroupconfig.py\", \n  \"/ansible/modules/network/avi/avi_alertconfig.py\": \"lib/ansible/modules/network/avi/avi_alertconfig.py\", \n  \"/ansible/modules/network/avi/avi_alertemailconfig.py\": \"lib/ansible/modules/network/avi/avi_alertemailconfig.py\", \n  \"/ansible/modules/network/avi/avi_alertscriptconfig.py\": \"lib/ansible/modules/network/avi/avi_alertscriptconfig.py\", \n  \"/ansible/modules/network/avi/avi_alertsyslogconfig.py\": \"lib/ansible/modules/network/avi/avi_alertsyslogconfig.py\", \n  \"/ansible/modules/network/avi/avi_analyticsprofile.py\": \"lib/ansible/modules/network/avi/avi_analyticsprofile.py\", \n  \"/ansible/modules/network/avi/avi_api_session.py\": \"lib/ansible/modules/network/avi/avi_api_session.py\", \n  \"/ansible/modules/network/avi/avi_applicationpersistenceprofile.py\": \"lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py\", \n  \"/ansible/modules/network/avi/avi_applicationprofile.py\": \"lib/ansible/modules/network/avi/avi_applicationprofile.py\", \n  \"/ansible/modules/network/avi/avi_authprofile.py\": \"lib/ansible/modules/network/avi/avi_authprofile.py\", \n  \"/ansible/modules/network/avi/avi_backup.py\": \"lib/ansible/modules/network/avi/avi_backup.py\", \n  \"/ansible/modules/network/avi/avi_backupconfiguration.py\": \"lib/ansible/modules/network/avi/avi_backupconfiguration.py\", \n  \"/ansible/modules/network/avi/avi_certificatemanagementprofile.py\": \"lib/ansible/modules/network/avi/avi_certificatemanagementprofile.py\", \n  \"/ansible/modules/network/avi/avi_cloud.py\": \"lib/ansible/modules/network/avi/avi_cloud.py\", \n  \"/ansible/modules/network/avi/avi_cloudconnectoruser.py\": \"lib/ansible/modules/network/avi/avi_cloudconnectoruser.py\", \n  \"/ansible/modules/network/avi/avi_cloudproperties.py\": \"lib/ansible/modules/network/avi/avi_cloudproperties.py\", \n  \"/ansible/modules/network/avi/avi_cluster.py\": \"lib/ansible/modules/network/avi/avi_cluster.py\", \n  \"/ansible/modules/network/avi/avi_controllerproperties.py\": \"lib/ansible/modules/network/avi/avi_controllerproperties.py\", \n  \"/ansible/modules/network/avi/avi_dnspolicy.py\": \"lib/ansible/modules/network/avi/avi_dnspolicy.py\", \n  \"/ansible/modules/network/avi/avi_gslb.py\": \"lib/ansible/modules/network/avi/avi_gslb.py\", \n  \"/ansible/modules/network/avi/avi_gslbapplicationpersistenceprofile.py\": \"lib/ansible/modules/network/avi/avi_gslbapplicationpersistenceprofile.py\", \n  \"/ansible/modules/network/avi/avi_gslbgeodbprofile.py\": \"lib/ansible/modules/network/avi/avi_gslbgeodbprofile.py\", \n  \"/ansible/modules/network/avi/avi_gslbhealthmonitor.py\": \"lib/ansible/modules/network/avi/avi_gslbhealthmonitor.py\", \n  \"/ansible/modules/network/avi/avi_gslbservice.py\": \"lib/ansible/modules/network/avi/avi_gslbservice.py\", \n  \"/ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py\": \"lib/ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py\", \n  \"/ansible/modules/network/avi/avi_healthmonitor.py\": \"lib/ansible/modules/network/avi/avi_healthmonitor.py\", \n  \"/ansible/modules/network/avi/avi_httppolicyset.py\": \"lib/ansible/modules/network/avi/avi_httppolicyset.py\", \n  \"/ansible/modules/network/avi/avi_ipaddrgroup.py\": \"lib/ansible/modules/network/avi/avi_ipaddrgroup.py\", \n  \"/ansible/modules/network/avi/avi_ipamdnsproviderprofile.py\": \"lib/ansible/modules/network/avi/avi_ipamdnsproviderprofile.py\", \n  \"/ansible/modules/network/avi/avi_microservicegroup.py\": \"lib/ansible/modules/network/avi/avi_microservicegroup.py\", \n  \"/ansible/modules/network/avi/avi_network.py\": \"lib/ansible/modules/network/avi/avi_network.py\", \n  \"/ansible/modules/network/avi/avi_networkprofile.py\": \"lib/ansible/modules/network/avi/avi_networkprofile.py\", \n  \"/ansible/modules/network/avi/avi_networksecuritypolicy.py\": \"lib/ansible/modules/network/avi/avi_networksecuritypolicy.py\", \n  \"/ansible/modules/network/avi/avi_pkiprofile.py\": \"lib/ansible/modules/network/avi/avi_pkiprofile.py\", \n  \"/ansible/modules/network/avi/avi_pool.py\": \"lib/ansible/modules/network/avi/avi_pool.py\", \n  \"/ansible/modules/network/avi/avi_poolgroup.py\": \"lib/ansible/modules/network/avi/avi_poolgroup.py\", \n  \"/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py\": \"lib/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py\", \n  \"/ansible/modules/network/avi/avi_prioritylabels.py\": \"lib/ansible/modules/network/avi/avi_prioritylabels.py\", \n  \"/ansible/modules/network/avi/avi_role.py\": \"lib/ansible/modules/network/avi/avi_role.py\", \n  \"/ansible/modules/network/avi/avi_scheduler.py\": \"lib/ansible/modules/network/avi/avi_scheduler.py\", \n  \"/ansible/modules/network/avi/avi_seproperties.py\": \"lib/ansible/modules/network/avi/avi_seproperties.py\", \n  \"/ansible/modules/network/avi/avi_serverautoscalepolicy.py\": \"lib/ansible/modules/network/avi/avi_serverautoscalepolicy.py\", \n  \"/ansible/modules/network/avi/avi_serviceengine.py\": \"lib/ansible/modules/network/avi/avi_serviceengine.py\", \n  \"/ansible/modules/network/avi/avi_serviceenginegroup.py\": \"lib/ansible/modules/network/avi/avi_serviceenginegroup.py\", \n  \"/ansible/modules/network/avi/avi_snmptrapprofile.py\": \"lib/ansible/modules/network/avi/avi_snmptrapprofile.py\", \n  \"/ansible/modules/network/avi/avi_sslkeyandcertificate.py\": \"lib/ansible/modules/network/avi/avi_sslkeyandcertificate.py\", \n  \"/ansible/modules/network/avi/avi_sslprofile.py\": \"lib/ansible/modules/network/avi/avi_sslprofile.py\", \n  \"/ansible/modules/network/avi/avi_stringgroup.py\": \"lib/ansible/modules/network/avi/avi_stringgroup.py\", \n  \"/ansible/modules/network/avi/avi_systemconfiguration.py\": \"lib/ansible/modules/network/avi/avi_systemconfiguration.py\", \n  \"/ansible/modules/network/avi/avi_tenant.py\": \"lib/ansible/modules/network/avi/avi_tenant.py\", \n  \"/ansible/modules/network/avi/avi_trafficcloneprofile.py\": \"lib/ansible/modules/network/avi/avi_trafficcloneprofile.py\", \n  \"/ansible/modules/network/avi/avi_useraccountprofile.py\": \"lib/ansible/modules/network/avi/avi_useraccountprofile.py\", \n  \"/ansible/modules/network/avi/avi_virtualservice.py\": \"lib/ansible/modules/network/avi/avi_virtualservice.py\", \n  \"/ansible/modules/network/avi/avi_vrfcontext.py\": \"lib/ansible/modules/network/avi/avi_vrfcontext.py\", \n  \"/ansible/modules/network/avi/avi_vsdatascriptset.py\": \"lib/ansible/modules/network/avi/avi_vsdatascriptset.py\", \n  \"/ansible/modules/network/avi/avi_vsvip.py\": \"lib/ansible/modules/network/avi/avi_vsvip.py\", \n  \"/ansible/modules/network/avi/avi_webhook.py\": \"lib/ansible/modules/network/avi/avi_webhook.py\", \n  \"/ansible/modules/network/bigswitch/bcf_switch.py\": \"lib/ansible/modules/network/bigswitch/bcf_switch.py\", \n  \"/ansible/modules/network/bigswitch/bigmon_chain.py\": \"lib/ansible/modules/network/bigswitch/bigmon_chain.py\", \n  \"/ansible/modules/network/bigswitch/bigmon_policy.py\": \"lib/ansible/modules/network/bigswitch/bigmon_policy.py\", \n  \"/ansible/modules/network/citrix/_netscaler.py\": \"lib/ansible/modules/network/citrix/_netscaler.py\", \n  \"/ansible/modules/network/citrix/netscaler.py\": \"lib/ansible/modules/network/citrix/_netscaler.py\", \n  \"/ansible/modules/network/cloudengine/ce_aaa_server.py\": \"lib/ansible/modules/network/cloudengine/ce_aaa_server.py\", \n  \"/ansible/modules/network/cloudengine/ce_aaa_server_host.py\": \"lib/ansible/modules/network/cloudengine/ce_aaa_server_host.py\", \n  \"/ansible/modules/network/cloudengine/ce_acl.py\": \"lib/ansible/modules/network/cloudengine/ce_acl.py\", \n  \"/ansible/modules/network/cloudengine/ce_acl_advance.py\": \"lib/ansible/modules/network/cloudengine/ce_acl_advance.py\", \n  \"/ansible/modules/network/cloudengine/ce_acl_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_acl_interface.py\", \n  \"/ansible/modules/network/cloudengine/ce_bfd_global.py\": \"lib/ansible/modules/network/cloudengine/ce_bfd_global.py\", \n  \"/ansible/modules/network/cloudengine/ce_bfd_session.py\": \"lib/ansible/modules/network/cloudengine/ce_bfd_session.py\", \n  \"/ansible/modules/network/cloudengine/ce_bfd_view.py\": \"lib/ansible/modules/network/cloudengine/ce_bfd_view.py\", \n  \"/ansible/modules/network/cloudengine/ce_bgp.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp.py\", \n  \"/ansible/modules/network/cloudengine/ce_bgp_af.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp_af.py\", \n  \"/ansible/modules/network/cloudengine/ce_bgp_neighbor.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor.py\", \n  \"/ansible/modules/network/cloudengine/ce_bgp_neighbor_af.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor_af.py\", \n  \"/ansible/modules/network/cloudengine/ce_command.py\": \"lib/ansible/modules/network/cloudengine/ce_command.py\", \n  \"/ansible/modules/network/cloudengine/ce_config.py\": \"lib/ansible/modules/network/cloudengine/ce_config.py\", \n  \"/ansible/modules/network/cloudengine/ce_dldp.py\": \"lib/ansible/modules/network/cloudengine/ce_dldp.py\", \n  \"/ansible/modules/network/cloudengine/ce_dldp_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_dldp_interface.py\", \n  \"/ansible/modules/network/cloudengine/ce_eth_trunk.py\": \"lib/ansible/modules/network/cloudengine/ce_eth_trunk.py\", \n  \"/ansible/modules/network/cloudengine/ce_evpn_bd_vni.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bd_vni.py\", \n  \"/ansible/modules/network/cloudengine/ce_evpn_bgp.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp.py\", \n  \"/ansible/modules/network/cloudengine/ce_evpn_bgp_rr.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp_rr.py\", \n  \"/ansible/modules/network/cloudengine/ce_evpn_global.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_global.py\", \n  \"/ansible/modules/network/cloudengine/ce_facts.py\": \"lib/ansible/modules/network/cloudengine/ce_facts.py\", \n  \"/ansible/modules/network/cloudengine/ce_file_copy.py\": \"lib/ansible/modules/network/cloudengine/ce_file_copy.py\", \n  \"/ansible/modules/network/cloudengine/ce_info_center_debug.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_debug.py\", \n  \"/ansible/modules/network/cloudengine/ce_info_center_global.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_global.py\", \n  \"/ansible/modules/network/cloudengine/ce_info_center_log.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_log.py\", \n  \"/ansible/modules/network/cloudengine/ce_info_center_trap.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_trap.py\", \n  \"/ansible/modules/network/cloudengine/ce_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_interface.py\", \n  \"/ansible/modules/network/cloudengine/ce_interface_ospf.py\": \"lib/ansible/modules/network/cloudengine/ce_interface_ospf.py\", \n  \"/ansible/modules/network/cloudengine/ce_ip_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_ip_interface.py\", \n  \"/ansible/modules/network/cloudengine/ce_link_status.py\": \"lib/ansible/modules/network/cloudengine/ce_link_status.py\", \n  \"/ansible/modules/network/cloudengine/ce_mlag_config.py\": \"lib/ansible/modules/network/cloudengine/ce_mlag_config.py\", \n  \"/ansible/modules/network/cloudengine/ce_mlag_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_mlag_interface.py\", \n  \"/ansible/modules/network/cloudengine/ce_mtu.py\": \"lib/ansible/modules/network/cloudengine/ce_mtu.py\", \n  \"/ansible/modules/network/cloudengine/ce_netconf.py\": \"lib/ansible/modules/network/cloudengine/ce_netconf.py\", \n  \"/ansible/modules/network/cloudengine/ce_netstream_aging.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_aging.py\", \n  \"/ansible/modules/network/cloudengine/ce_netstream_export.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_export.py\", \n  \"/ansible/modules/network/cloudengine/ce_netstream_global.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_global.py\", \n  \"/ansible/modules/network/cloudengine/ce_netstream_template.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_template.py\", \n  \"/ansible/modules/network/cloudengine/ce_ntp.py\": \"lib/ansible/modules/network/cloudengine/ce_ntp.py\", \n  \"/ansible/modules/network/cloudengine/ce_ntp_auth.py\": \"lib/ansible/modules/network/cloudengine/ce_ntp_auth.py\", \n  \"/ansible/modules/network/cloudengine/ce_ospf.py\": \"lib/ansible/modules/network/cloudengine/ce_ospf.py\", \n  \"/ansible/modules/network/cloudengine/ce_ospf_vrf.py\": \"lib/ansible/modules/network/cloudengine/ce_ospf_vrf.py\", \n  \"/ansible/modules/network/cloudengine/ce_reboot.py\": \"lib/ansible/modules/network/cloudengine/ce_reboot.py\", \n  \"/ansible/modules/network/cloudengine/ce_rollback.py\": \"lib/ansible/modules/network/cloudengine/ce_rollback.py\", \n  \"/ansible/modules/network/cloudengine/ce_sflow.py\": \"lib/ansible/modules/network/cloudengine/ce_sflow.py\", \n  \"/ansible/modules/network/cloudengine/ce_snmp_community.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_community.py\", \n  \"/ansible/modules/network/cloudengine/ce_snmp_contact.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_contact.py\", \n  \"/ansible/modules/network/cloudengine/ce_snmp_location.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_location.py\", \n  \"/ansible/modules/network/cloudengine/ce_snmp_target_host.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_target_host.py\", \n  \"/ansible/modules/network/cloudengine/ce_snmp_traps.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_traps.py\", \n  \"/ansible/modules/network/cloudengine/ce_snmp_user.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_user.py\", \n  \"/ansible/modules/network/cloudengine/ce_startup.py\": \"lib/ansible/modules/network/cloudengine/ce_startup.py\", \n  \"/ansible/modules/network/cloudengine/ce_static_route.py\": \"lib/ansible/modules/network/cloudengine/ce_static_route.py\", \n  \"/ansible/modules/network/cloudengine/ce_stp.py\": \"lib/ansible/modules/network/cloudengine/ce_stp.py\", \n  \"/ansible/modules/network/cloudengine/ce_switchport.py\": \"lib/ansible/modules/network/cloudengine/ce_switchport.py\", \n  \"/ansible/modules/network/cloudengine/ce_vlan.py\": \"lib/ansible/modules/network/cloudengine/ce_vlan.py\", \n  \"/ansible/modules/network/cloudengine/ce_vrf.py\": \"lib/ansible/modules/network/cloudengine/ce_vrf.py\", \n  \"/ansible/modules/network/cloudengine/ce_vrf_af.py\": \"lib/ansible/modules/network/cloudengine/ce_vrf_af.py\", \n  \"/ansible/modules/network/cloudengine/ce_vrf_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_vrf_interface.py\", \n  \"/ansible/modules/network/cloudengine/ce_vrrp.py\": \"lib/ansible/modules/network/cloudengine/ce_vrrp.py\", \n  \"/ansible/modules/network/cloudengine/ce_vxlan_arp.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_arp.py\", \n  \"/ansible/modules/network/cloudengine/ce_vxlan_gateway.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_gateway.py\", \n  \"/ansible/modules/network/cloudengine/ce_vxlan_global.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_global.py\", \n  \"/ansible/modules/network/cloudengine/ce_vxlan_tunnel.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_tunnel.py\", \n  \"/ansible/modules/network/cloudengine/ce_vxlan_vap.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_vap.py\", \n  \"/ansible/modules/network/cloudvision/cv_server_provision.py\": \"lib/ansible/modules/network/cloudvision/cv_server_provision.py\", \n  \"/ansible/modules/network/cumulus/_cl_bond.py\": \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n  \"/ansible/modules/network/cumulus/_cl_bridge.py\": \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n  \"/ansible/modules/network/cumulus/_cl_img_install.py\": \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n  \"/ansible/modules/network/cumulus/_cl_interface.py\": \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n  \"/ansible/modules/network/cumulus/_cl_interface_policy.py\": \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n  \"/ansible/modules/network/cumulus/_cl_license.py\": \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n  \"/ansible/modules/network/cumulus/_cl_ports.py\": \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n  \"/ansible/modules/network/cumulus/cl_bond.py\": \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n  \"/ansible/modules/network/cumulus/cl_bridge.py\": \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n  \"/ansible/modules/network/cumulus/cl_img_install.py\": \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n  \"/ansible/modules/network/cumulus/cl_interface.py\": \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n  \"/ansible/modules/network/cumulus/cl_interface_policy.py\": \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n  \"/ansible/modules/network/cumulus/cl_license.py\": \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n  \"/ansible/modules/network/cumulus/cl_ports.py\": \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n  \"/ansible/modules/network/cumulus/nclu.py\": \"lib/ansible/modules/network/cumulus/nclu.py\", \n  \"/ansible/modules/network/dellos10/dellos10_command.py\": \"lib/ansible/modules/network/dellos10/dellos10_command.py\", \n  \"/ansible/modules/network/dellos10/dellos10_config.py\": \"lib/ansible/modules/network/dellos10/dellos10_config.py\", \n  \"/ansible/modules/network/dellos10/dellos10_facts.py\": \"lib/ansible/modules/network/dellos10/dellos10_facts.py\", \n  \"/ansible/modules/network/dellos6/dellos6_command.py\": \"lib/ansible/modules/network/dellos6/dellos6_command.py\", \n  \"/ansible/modules/network/dellos6/dellos6_config.py\": \"lib/ansible/modules/network/dellos6/dellos6_config.py\", \n  \"/ansible/modules/network/dellos6/dellos6_facts.py\": \"lib/ansible/modules/network/dellos6/dellos6_facts.py\", \n  \"/ansible/modules/network/dellos9/dellos9_command.py\": \"lib/ansible/modules/network/dellos9/dellos9_command.py\", \n  \"/ansible/modules/network/dellos9/dellos9_config.py\": \"lib/ansible/modules/network/dellos9/dellos9_config.py\", \n  \"/ansible/modules/network/dellos9/dellos9_facts.py\": \"lib/ansible/modules/network/dellos9/dellos9_facts.py\", \n  \"/ansible/modules/network/eos/eos_banner.py\": \"lib/ansible/modules/network/eos/eos_banner.py\", \n  \"/ansible/modules/network/eos/eos_command.py\": \"lib/ansible/modules/network/eos/eos_command.py\", \n  \"/ansible/modules/network/eos/eos_config.py\": \"lib/ansible/modules/network/eos/eos_config.py\", \n  \"/ansible/modules/network/eos/eos_eapi.py\": \"lib/ansible/modules/network/eos/eos_eapi.py\", \n  \"/ansible/modules/network/eos/eos_facts.py\": \"lib/ansible/modules/network/eos/eos_facts.py\", \n  \"/ansible/modules/network/eos/eos_logging.py\": \"lib/ansible/modules/network/eos/eos_logging.py\", \n  \"/ansible/modules/network/eos/eos_system.py\": \"lib/ansible/modules/network/eos/eos_system.py\", \n  \"/ansible/modules/network/eos/eos_user.py\": \"lib/ansible/modules/network/eos/eos_user.py\", \n  \"/ansible/modules/network/eos/eos_vlan.py\": \"lib/ansible/modules/network/eos/eos_vlan.py\", \n  \"/ansible/modules/network/eos/eos_vrf.py\": \"lib/ansible/modules/network/eos/eos_vrf.py\", \n  \"/ansible/modules/network/f5/bigip_asm_policy.py\": \"lib/ansible/modules/network/f5/bigip_asm_policy.py\", \n  \"/ansible/modules/network/f5/bigip_command.py\": \"lib/ansible/modules/network/f5/bigip_command.py\", \n  \"/ansible/modules/network/f5/bigip_config.py\": \"lib/ansible/modules/network/f5/bigip_config.py\", \n  \"/ansible/modules/network/f5/bigip_configsync_action.py\": \"lib/ansible/modules/network/f5/bigip_configsync_action.py\", \n  \"/ansible/modules/network/f5/bigip_configsync_actions.py\": \"lib/ansible/modules/network/f5/bigip_configsync_actions.py\", \n  \"/ansible/modules/network/f5/bigip_device_dns.py\": \"lib/ansible/modules/network/f5/bigip_device_dns.py\", \n  \"/ansible/modules/network/f5/bigip_device_ntp.py\": \"lib/ansible/modules/network/f5/bigip_device_ntp.py\", \n  \"/ansible/modules/network/f5/bigip_device_sshd.py\": \"lib/ansible/modules/network/f5/bigip_device_sshd.py\", \n  \"/ansible/modules/network/f5/bigip_facts.py\": \"lib/ansible/modules/network/f5/bigip_facts.py\", \n  \"/ansible/modules/network/f5/bigip_gtm_datacenter.py\": \"lib/ansible/modules/network/f5/bigip_gtm_datacenter.py\", \n  \"/ansible/modules/network/f5/bigip_gtm_facts.py\": \"lib/ansible/modules/network/f5/bigip_gtm_facts.py\", \n  \"/ansible/modules/network/f5/bigip_gtm_pool.py\": \"lib/ansible/modules/network/f5/bigip_gtm_pool.py\", \n  \"/ansible/modules/network/f5/bigip_gtm_virtual_server.py\": \"lib/ansible/modules/network/f5/bigip_gtm_virtual_server.py\", \n  \"/ansible/modules/network/f5/bigip_gtm_wide_ip.py\": \"lib/ansible/modules/network/f5/bigip_gtm_wide_ip.py\", \n  \"/ansible/modules/network/f5/bigip_hostname.py\": \"lib/ansible/modules/network/f5/bigip_hostname.py\", \n  \"/ansible/modules/network/f5/bigip_iapp_service.py\": \"lib/ansible/modules/network/f5/bigip_iapp_service.py\", \n  \"/ansible/modules/network/f5/bigip_iapp_template.py\": \"lib/ansible/modules/network/f5/bigip_iapp_template.py\", \n  \"/ansible/modules/network/f5/bigip_iapplx_package.py\": \"lib/ansible/modules/network/f5/bigip_iapplx_package.py\", \n  \"/ansible/modules/network/f5/bigip_irule.py\": \"lib/ansible/modules/network/f5/bigip_irule.py\", \n  \"/ansible/modules/network/f5/bigip_monitor_http.py\": \"lib/ansible/modules/network/f5/bigip_monitor_http.py\", \n  \"/ansible/modules/network/f5/bigip_monitor_https.py\": \"lib/ansible/modules/network/f5/bigip_monitor_https.py\", \n  \"/ansible/modules/network/f5/bigip_monitor_tcp.py\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp.py\", \n  \"/ansible/modules/network/f5/bigip_monitor_tcp_echo.py\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp_echo.py\", \n  \"/ansible/modules/network/f5/bigip_monitor_tcp_half_open.py\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp_half_open.py\", \n  \"/ansible/modules/network/f5/bigip_node.py\": \"lib/ansible/modules/network/f5/bigip_node.py\", \n  \"/ansible/modules/network/f5/bigip_partition.py\": \"lib/ansible/modules/network/f5/bigip_partition.py\", \n  \"/ansible/modules/network/f5/bigip_policy.py\": \"lib/ansible/modules/network/f5/bigip_policy.py\", \n  \"/ansible/modules/network/f5/bigip_pool.py\": \"lib/ansible/modules/network/f5/bigip_pool.py\", \n  \"/ansible/modules/network/f5/bigip_pool_member.py\": \"lib/ansible/modules/network/f5/bigip_pool_member.py\", \n  \"/ansible/modules/network/f5/bigip_provision.py\": \"lib/ansible/modules/network/f5/bigip_provision.py\", \n  \"/ansible/modules/network/f5/bigip_qkview.py\": \"lib/ansible/modules/network/f5/bigip_qkview.py\", \n  \"/ansible/modules/network/f5/bigip_remote_syslog.py\": \"lib/ansible/modules/network/f5/bigip_remote_syslog.py\", \n  \"/ansible/modules/network/f5/bigip_routedomain.py\": \"lib/ansible/modules/network/f5/bigip_routedomain.py\", \n  \"/ansible/modules/network/f5/bigip_selfip.py\": \"lib/ansible/modules/network/f5/bigip_selfip.py\", \n  \"/ansible/modules/network/f5/bigip_snat_pool.py\": \"lib/ansible/modules/network/f5/bigip_snat_pool.py\", \n  \"/ansible/modules/network/f5/bigip_snmp.py\": \"lib/ansible/modules/network/f5/bigip_snmp.py\", \n  \"/ansible/modules/network/f5/bigip_snmp_trap.py\": \"lib/ansible/modules/network/f5/bigip_snmp_trap.py\", \n  \"/ansible/modules/network/f5/bigip_ssl_certificate.py\": \"lib/ansible/modules/network/f5/bigip_ssl_certificate.py\", \n  \"/ansible/modules/network/f5/bigip_ssl_key.py\": \"lib/ansible/modules/network/f5/bigip_ssl_key.py\", \n  \"/ansible/modules/network/f5/bigip_sys_db.py\": \"lib/ansible/modules/network/f5/bigip_sys_db.py\", \n  \"/ansible/modules/network/f5/bigip_sys_global.py\": \"lib/ansible/modules/network/f5/bigip_sys_global.py\", \n  \"/ansible/modules/network/f5/bigip_ucs.py\": \"lib/ansible/modules/network/f5/bigip_ucs.py\", \n  \"/ansible/modules/network/f5/bigip_user.py\": \"lib/ansible/modules/network/f5/bigip_user.py\", \n  \"/ansible/modules/network/f5/bigip_virtual_address.py\": \"lib/ansible/modules/network/f5/bigip_virtual_address.py\", \n  \"/ansible/modules/network/f5/bigip_virtual_server.py\": \"lib/ansible/modules/network/f5/bigip_virtual_server.py\", \n  \"/ansible/modules/network/f5/bigip_vlan.py\": \"lib/ansible/modules/network/f5/bigip_vlan.py\", \n  \"/ansible/modules/network/f5/bigip_wait.py\": \"lib/ansible/modules/network/f5/bigip_wait.py\", \n  \"/ansible/modules/network/fortios/fortios_address.py\": \"lib/ansible/modules/network/fortios/fortios_address.py\", \n  \"/ansible/modules/network/fortios/fortios_config.py\": \"lib/ansible/modules/network/fortios/fortios_config.py\", \n  \"/ansible/modules/network/fortios/fortios_ipv4_policy.py\": \"lib/ansible/modules/network/fortios/fortios_ipv4_policy.py\", \n  \"/ansible/modules/network/illumos/dladm_etherstub.py\": \"lib/ansible/modules/network/illumos/dladm_etherstub.py\", \n  \"/ansible/modules/network/illumos/dladm_iptun.py\": \"lib/ansible/modules/network/illumos/dladm_iptun.py\", \n  \"/ansible/modules/network/illumos/dladm_linkprop.py\": \"lib/ansible/modules/network/illumos/dladm_linkprop.py\", \n  \"/ansible/modules/network/illumos/dladm_vlan.py\": \"lib/ansible/modules/network/illumos/dladm_vlan.py\", \n  \"/ansible/modules/network/illumos/dladm_vnic.py\": \"lib/ansible/modules/network/illumos/dladm_vnic.py\", \n  \"/ansible/modules/network/illumos/flowadm.py\": \"lib/ansible/modules/network/illumos/flowadm.py\", \n  \"/ansible/modules/network/illumos/ipadm_addr.py\": \"lib/ansible/modules/network/illumos/ipadm_addr.py\", \n  \"/ansible/modules/network/illumos/ipadm_addrprop.py\": \"lib/ansible/modules/network/illumos/ipadm_addrprop.py\", \n  \"/ansible/modules/network/illumos/ipadm_if.py\": \"lib/ansible/modules/network/illumos/ipadm_if.py\", \n  \"/ansible/modules/network/illumos/ipadm_ifprop.py\": \"lib/ansible/modules/network/illumos/ipadm_ifprop.py\", \n  \"/ansible/modules/network/illumos/ipadm_prop.py\": \"lib/ansible/modules/network/illumos/ipadm_prop.py\", \n  \"/ansible/modules/network/interface/net_interface.py\": \"lib/ansible/modules/network/interface/net_interface.py\", \n  \"/ansible/modules/network/interface/net_linkagg.py\": \"lib/ansible/modules/network/interface/net_linkagg.py\", \n  \"/ansible/modules/network/interface/net_lldp_interface.py\": \"lib/ansible/modules/network/interface/net_lldp_interface.py\", \n  \"/ansible/modules/network/ios/ios_banner.py\": \"lib/ansible/modules/network/ios/ios_banner.py\", \n  \"/ansible/modules/network/ios/ios_command.py\": \"lib/ansible/modules/network/ios/ios_command.py\", \n  \"/ansible/modules/network/ios/ios_config.py\": \"lib/ansible/modules/network/ios/ios_config.py\", \n  \"/ansible/modules/network/ios/ios_facts.py\": \"lib/ansible/modules/network/ios/ios_facts.py\", \n  \"/ansible/modules/network/ios/ios_interface.py\": \"lib/ansible/modules/network/ios/ios_interface.py\", \n  \"/ansible/modules/network/ios/ios_logging.py\": \"lib/ansible/modules/network/ios/ios_logging.py\", \n  \"/ansible/modules/network/ios/ios_ping.py\": \"lib/ansible/modules/network/ios/ios_ping.py\", \n  \"/ansible/modules/network/ios/ios_static_route.py\": \"lib/ansible/modules/network/ios/ios_static_route.py\", \n  \"/ansible/modules/network/ios/ios_system.py\": \"lib/ansible/modules/network/ios/ios_system.py\", \n  \"/ansible/modules/network/ios/ios_user.py\": \"lib/ansible/modules/network/ios/ios_user.py\", \n  \"/ansible/modules/network/ios/ios_vrf.py\": \"lib/ansible/modules/network/ios/ios_vrf.py\", \n  \"/ansible/modules/network/iosxr/iosxr_banner.py\": \"lib/ansible/modules/network/iosxr/iosxr_banner.py\", \n  \"/ansible/modules/network/iosxr/iosxr_command.py\": \"lib/ansible/modules/network/iosxr/iosxr_command.py\", \n  \"/ansible/modules/network/iosxr/iosxr_config.py\": \"lib/ansible/modules/network/iosxr/iosxr_config.py\", \n  \"/ansible/modules/network/iosxr/iosxr_facts.py\": \"lib/ansible/modules/network/iosxr/iosxr_facts.py\", \n  \"/ansible/modules/network/iosxr/iosxr_interface.py\": \"lib/ansible/modules/network/iosxr/iosxr_interface.py\", \n  \"/ansible/modules/network/iosxr/iosxr_logging.py\": \"lib/ansible/modules/network/iosxr/iosxr_logging.py\", \n  \"/ansible/modules/network/iosxr/iosxr_netconf.py\": \"lib/ansible/modules/network/iosxr/iosxr_netconf.py\", \n  \"/ansible/modules/network/iosxr/iosxr_system.py\": \"lib/ansible/modules/network/iosxr/iosxr_system.py\", \n  \"/ansible/modules/network/iosxr/iosxr_user.py\": \"lib/ansible/modules/network/iosxr/iosxr_user.py\", \n  \"/ansible/modules/network/ironware/ironware_command.py\": \"lib/ansible/modules/network/ironware/ironware_command.py\", \n  \"/ansible/modules/network/junos/junos_banner.py\": \"lib/ansible/modules/network/junos/junos_banner.py\", \n  \"/ansible/modules/network/junos/junos_command.py\": \"lib/ansible/modules/network/junos/junos_command.py\", \n  \"/ansible/modules/network/junos/junos_config.py\": \"lib/ansible/modules/network/junos/junos_config.py\", \n  \"/ansible/modules/network/junos/junos_facts.py\": \"lib/ansible/modules/network/junos/junos_facts.py\", \n  \"/ansible/modules/network/junos/junos_interface.py\": \"lib/ansible/modules/network/junos/junos_interface.py\", \n  \"/ansible/modules/network/junos/junos_l3_interface.py\": \"lib/ansible/modules/network/junos/junos_l3_interface.py\", \n  \"/ansible/modules/network/junos/junos_linkagg.py\": \"lib/ansible/modules/network/junos/junos_linkagg.py\", \n  \"/ansible/modules/network/junos/junos_lldp.py\": \"lib/ansible/modules/network/junos/junos_lldp.py\", \n  \"/ansible/modules/network/junos/junos_lldp_interface.py\": \"lib/ansible/modules/network/junos/junos_lldp_interface.py\", \n  \"/ansible/modules/network/junos/junos_logging.py\": \"lib/ansible/modules/network/junos/junos_logging.py\", \n  \"/ansible/modules/network/junos/junos_netconf.py\": \"lib/ansible/modules/network/junos/junos_netconf.py\", \n  \"/ansible/modules/network/junos/junos_package.py\": \"lib/ansible/modules/network/junos/junos_package.py\", \n  \"/ansible/modules/network/junos/junos_rpc.py\": \"lib/ansible/modules/network/junos/junos_rpc.py\", \n  \"/ansible/modules/network/junos/junos_static_route.py\": \"lib/ansible/modules/network/junos/junos_static_route.py\", \n  \"/ansible/modules/network/junos/junos_system.py\": \"lib/ansible/modules/network/junos/junos_system.py\", \n  \"/ansible/modules/network/junos/junos_user.py\": \"lib/ansible/modules/network/junos/junos_user.py\", \n  \"/ansible/modules/network/junos/junos_vlan.py\": \"lib/ansible/modules/network/junos/junos_vlan.py\", \n  \"/ansible/modules/network/junos/junos_vrf.py\": \"lib/ansible/modules/network/junos/junos_vrf.py\", \n  \"/ansible/modules/network/layer2/net_l2_interface.py\": \"lib/ansible/modules/network/layer2/net_l2_interface.py\", \n  \"/ansible/modules/network/layer2/net_vlan.py\": \"lib/ansible/modules/network/layer2/net_vlan.py\", \n  \"/ansible/modules/network/layer3/net_l3_interface.py\": \"lib/ansible/modules/network/layer3/net_l3_interface.py\", \n  \"/ansible/modules/network/layer3/net_vrf.py\": \"lib/ansible/modules/network/layer3/net_vrf.py\", \n  \"/ansible/modules/network/lenovo/cnos_backup.py\": \"lib/ansible/modules/network/lenovo/cnos_backup.py\", \n  \"/ansible/modules/network/lenovo/cnos_bgp.py\": \"lib/ansible/modules/network/lenovo/cnos_bgp.py\", \n  \"/ansible/modules/network/lenovo/cnos_command.py\": \"lib/ansible/modules/network/lenovo/cnos_command.py\", \n  \"/ansible/modules/network/lenovo/cnos_conditional_command.py\": \"lib/ansible/modules/network/lenovo/cnos_conditional_command.py\", \n  \"/ansible/modules/network/lenovo/cnos_conditional_template.py\": \"lib/ansible/modules/network/lenovo/cnos_conditional_template.py\", \n  \"/ansible/modules/network/lenovo/cnos_factory.py\": \"lib/ansible/modules/network/lenovo/cnos_factory.py\", \n  \"/ansible/modules/network/lenovo/cnos_facts.py\": \"lib/ansible/modules/network/lenovo/cnos_facts.py\", \n  \"/ansible/modules/network/lenovo/cnos_image.py\": \"lib/ansible/modules/network/lenovo/cnos_image.py\", \n  \"/ansible/modules/network/lenovo/cnos_interface.py\": \"lib/ansible/modules/network/lenovo/cnos_interface.py\", \n  \"/ansible/modules/network/lenovo/cnos_portchannel.py\": \"lib/ansible/modules/network/lenovo/cnos_portchannel.py\", \n  \"/ansible/modules/network/lenovo/cnos_reload.py\": \"lib/ansible/modules/network/lenovo/cnos_reload.py\", \n  \"/ansible/modules/network/lenovo/cnos_rollback.py\": \"lib/ansible/modules/network/lenovo/cnos_rollback.py\", \n  \"/ansible/modules/network/lenovo/cnos_save.py\": \"lib/ansible/modules/network/lenovo/cnos_save.py\", \n  \"/ansible/modules/network/lenovo/cnos_showrun.py\": \"lib/ansible/modules/network/lenovo/cnos_showrun.py\", \n  \"/ansible/modules/network/lenovo/cnos_template.py\": \"lib/ansible/modules/network/lenovo/cnos_template.py\", \n  \"/ansible/modules/network/lenovo/cnos_vlag.py\": \"lib/ansible/modules/network/lenovo/cnos_vlag.py\", \n  \"/ansible/modules/network/lenovo/cnos_vlan.py\": \"lib/ansible/modules/network/lenovo/cnos_vlan.py\", \n  \"/ansible/modules/network/netconf/netconf_config.py\": \"lib/ansible/modules/network/netconf/netconf_config.py\", \n  \"/ansible/modules/network/netscaler/netscaler_cs_action.py\": \"lib/ansible/modules/network/netscaler/netscaler_cs_action.py\", \n  \"/ansible/modules/network/netscaler/netscaler_cs_policy.py\": \"lib/ansible/modules/network/netscaler/netscaler_cs_policy.py\", \n  \"/ansible/modules/network/netscaler/netscaler_cs_vserver.py\": \"lib/ansible/modules/network/netscaler/netscaler_cs_vserver.py\", \n  \"/ansible/modules/network/netscaler/netscaler_gslb_service.py\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_service.py\", \n  \"/ansible/modules/network/netscaler/netscaler_gslb_site.py\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_site.py\", \n  \"/ansible/modules/network/netscaler/netscaler_gslb_vserver.py\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_vserver.py\", \n  \"/ansible/modules/network/netscaler/netscaler_lb_monitor.py\": \"lib/ansible/modules/network/netscaler/netscaler_lb_monitor.py\", \n  \"/ansible/modules/network/netscaler/netscaler_lb_vserver.py\": \"lib/ansible/modules/network/netscaler/netscaler_lb_vserver.py\", \n  \"/ansible/modules/network/netscaler/netscaler_save_config.py\": \"lib/ansible/modules/network/netscaler/netscaler_save_config.py\", \n  \"/ansible/modules/network/netscaler/netscaler_server.py\": \"lib/ansible/modules/network/netscaler/netscaler_server.py\", \n  \"/ansible/modules/network/netscaler/netscaler_service.py\": \"lib/ansible/modules/network/netscaler/netscaler_service.py\", \n  \"/ansible/modules/network/netscaler/netscaler_servicegroup.py\": \"lib/ansible/modules/network/netscaler/netscaler_servicegroup.py\", \n  \"/ansible/modules/network/netscaler/netscaler_ssl_certkey.py\": \"lib/ansible/modules/network/netscaler/netscaler_ssl_certkey.py\", \n  \"/ansible/modules/network/netvisor/pn_cluster.py\": \"lib/ansible/modules/network/netvisor/pn_cluster.py\", \n  \"/ansible/modules/network/netvisor/pn_ospf.py\": \"lib/ansible/modules/network/netvisor/pn_ospf.py\", \n  \"/ansible/modules/network/netvisor/pn_ospfarea.py\": \"lib/ansible/modules/network/netvisor/pn_ospfarea.py\", \n  \"/ansible/modules/network/netvisor/pn_show.py\": \"lib/ansible/modules/network/netvisor/pn_show.py\", \n  \"/ansible/modules/network/netvisor/pn_trunk.py\": \"lib/ansible/modules/network/netvisor/pn_trunk.py\", \n  \"/ansible/modules/network/netvisor/pn_vlag.py\": \"lib/ansible/modules/network/netvisor/pn_vlag.py\", \n  \"/ansible/modules/network/netvisor/pn_vlan.py\": \"lib/ansible/modules/network/netvisor/pn_vlan.py\", \n  \"/ansible/modules/network/netvisor/pn_vrouter.py\": \"lib/ansible/modules/network/netvisor/pn_vrouter.py\", \n  \"/ansible/modules/network/netvisor/pn_vrouterbgp.py\": \"lib/ansible/modules/network/netvisor/pn_vrouterbgp.py\", \n  \"/ansible/modules/network/netvisor/pn_vrouterif.py\": \"lib/ansible/modules/network/netvisor/pn_vrouterif.py\", \n  \"/ansible/modules/network/netvisor/pn_vrouterlbif.py\": \"lib/ansible/modules/network/netvisor/pn_vrouterlbif.py\", \n  \"/ansible/modules/network/nuage/nuage_vspk.py\": \"lib/ansible/modules/network/nuage/nuage_vspk.py\", \n  \"/ansible/modules/network/nxos/_nxos_mtu.py\": \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n  \"/ansible/modules/network/nxos/nxos_aaa_server.py\": \"lib/ansible/modules/network/nxos/nxos_aaa_server.py\", \n  \"/ansible/modules/network/nxos/nxos_aaa_server_host.py\": \"lib/ansible/modules/network/nxos/nxos_aaa_server_host.py\", \n  \"/ansible/modules/network/nxos/nxos_acl.py\": \"lib/ansible/modules/network/nxos/nxos_acl.py\", \n  \"/ansible/modules/network/nxos/nxos_acl_interface.py\": \"lib/ansible/modules/network/nxos/nxos_acl_interface.py\", \n  \"/ansible/modules/network/nxos/nxos_banner.py\": \"lib/ansible/modules/network/nxos/nxos_banner.py\", \n  \"/ansible/modules/network/nxos/nxos_bgp.py\": \"lib/ansible/modules/network/nxos/nxos_bgp.py\", \n  \"/ansible/modules/network/nxos/nxos_bgp_af.py\": \"lib/ansible/modules/network/nxos/nxos_bgp_af.py\", \n  \"/ansible/modules/network/nxos/nxos_bgp_neighbor.py\": \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor.py\", \n  \"/ansible/modules/network/nxos/nxos_bgp_neighbor_af.py\": \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor_af.py\", \n  \"/ansible/modules/network/nxos/nxos_command.py\": \"lib/ansible/modules/network/nxos/nxos_command.py\", \n  \"/ansible/modules/network/nxos/nxos_config.py\": \"lib/ansible/modules/network/nxos/nxos_config.py\", \n  \"/ansible/modules/network/nxos/nxos_evpn_global.py\": \"lib/ansible/modules/network/nxos/nxos_evpn_global.py\", \n  \"/ansible/modules/network/nxos/nxos_evpn_vni.py\": \"lib/ansible/modules/network/nxos/nxos_evpn_vni.py\", \n  \"/ansible/modules/network/nxos/nxos_facts.py\": \"lib/ansible/modules/network/nxos/nxos_facts.py\", \n  \"/ansible/modules/network/nxos/nxos_feature.py\": \"lib/ansible/modules/network/nxos/nxos_feature.py\", \n  \"/ansible/modules/network/nxos/nxos_file_copy.py\": \"lib/ansible/modules/network/nxos/nxos_file_copy.py\", \n  \"/ansible/modules/network/nxos/nxos_gir.py\": \"lib/ansible/modules/network/nxos/nxos_gir.py\", \n  \"/ansible/modules/network/nxos/nxos_gir_profile_management.py\": \"lib/ansible/modules/network/nxos/nxos_gir_profile_management.py\", \n  \"/ansible/modules/network/nxos/nxos_hsrp.py\": \"lib/ansible/modules/network/nxos/nxos_hsrp.py\", \n  \"/ansible/modules/network/nxos/nxos_igmp.py\": \"lib/ansible/modules/network/nxos/nxos_igmp.py\", \n  \"/ansible/modules/network/nxos/nxos_igmp_interface.py\": \"lib/ansible/modules/network/nxos/nxos_igmp_interface.py\", \n  \"/ansible/modules/network/nxos/nxos_igmp_snooping.py\": \"lib/ansible/modules/network/nxos/nxos_igmp_snooping.py\", \n  \"/ansible/modules/network/nxos/nxos_install_os.py\": \"lib/ansible/modules/network/nxos/nxos_install_os.py\", \n  \"/ansible/modules/network/nxos/nxos_interface.py\": \"lib/ansible/modules/network/nxos/nxos_interface.py\", \n  \"/ansible/modules/network/nxos/nxos_interface_ospf.py\": \"lib/ansible/modules/network/nxos/nxos_interface_ospf.py\", \n  \"/ansible/modules/network/nxos/nxos_ip_interface.py\": \"lib/ansible/modules/network/nxos/nxos_ip_interface.py\", \n  \"/ansible/modules/network/nxos/nxos_logging.py\": \"lib/ansible/modules/network/nxos/nxos_logging.py\", \n  \"/ansible/modules/network/nxos/nxos_mtu.py\": \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n  \"/ansible/modules/network/nxos/nxos_ntp.py\": \"lib/ansible/modules/network/nxos/nxos_ntp.py\", \n  \"/ansible/modules/network/nxos/nxos_ntp_auth.py\": \"lib/ansible/modules/network/nxos/nxos_ntp_auth.py\", \n  \"/ansible/modules/network/nxos/nxos_ntp_options.py\": \"lib/ansible/modules/network/nxos/nxos_ntp_options.py\", \n  \"/ansible/modules/network/nxos/nxos_nxapi.py\": \"lib/ansible/modules/network/nxos/nxos_nxapi.py\", \n  \"/ansible/modules/network/nxos/nxos_ospf.py\": \"lib/ansible/modules/network/nxos/nxos_ospf.py\", \n  \"/ansible/modules/network/nxos/nxos_ospf_vrf.py\": \"lib/ansible/modules/network/nxos/nxos_ospf_vrf.py\", \n  \"/ansible/modules/network/nxos/nxos_overlay_global.py\": \"lib/ansible/modules/network/nxos/nxos_overlay_global.py\", \n  \"/ansible/modules/network/nxos/nxos_pim.py\": \"lib/ansible/modules/network/nxos/nxos_pim.py\", \n  \"/ansible/modules/network/nxos/nxos_pim_interface.py\": \"lib/ansible/modules/network/nxos/nxos_pim_interface.py\", \n  \"/ansible/modules/network/nxos/nxos_pim_rp_address.py\": \"lib/ansible/modules/network/nxos/nxos_pim_rp_address.py\", \n  \"/ansible/modules/network/nxos/nxos_ping.py\": \"lib/ansible/modules/network/nxos/nxos_ping.py\", \n  \"/ansible/modules/network/nxos/nxos_portchannel.py\": \"lib/ansible/modules/network/nxos/nxos_portchannel.py\", \n  \"/ansible/modules/network/nxos/nxos_reboot.py\": \"lib/ansible/modules/network/nxos/nxos_reboot.py\", \n  \"/ansible/modules/network/nxos/nxos_rollback.py\": \"lib/ansible/modules/network/nxos/nxos_rollback.py\", \n  \"/ansible/modules/network/nxos/nxos_smu.py\": \"lib/ansible/modules/network/nxos/nxos_smu.py\", \n  \"/ansible/modules/network/nxos/nxos_snapshot.py\": \"lib/ansible/modules/network/nxos/nxos_snapshot.py\", \n  \"/ansible/modules/network/nxos/nxos_snmp_community.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_community.py\", \n  \"/ansible/modules/network/nxos/nxos_snmp_contact.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_contact.py\", \n  \"/ansible/modules/network/nxos/nxos_snmp_host.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_host.py\", \n  \"/ansible/modules/network/nxos/nxos_snmp_location.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_location.py\", \n  \"/ansible/modules/network/nxos/nxos_snmp_traps.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_traps.py\", \n  \"/ansible/modules/network/nxos/nxos_snmp_user.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_user.py\", \n  \"/ansible/modules/network/nxos/nxos_static_route.py\": \"lib/ansible/modules/network/nxos/nxos_static_route.py\", \n  \"/ansible/modules/network/nxos/nxos_switchport.py\": \"lib/ansible/modules/network/nxos/nxos_switchport.py\", \n  \"/ansible/modules/network/nxos/nxos_system.py\": \"lib/ansible/modules/network/nxos/nxos_system.py\", \n  \"/ansible/modules/network/nxos/nxos_udld.py\": \"lib/ansible/modules/network/nxos/nxos_udld.py\", \n  \"/ansible/modules/network/nxos/nxos_udld_interface.py\": \"lib/ansible/modules/network/nxos/nxos_udld_interface.py\", \n  \"/ansible/modules/network/nxos/nxos_user.py\": \"lib/ansible/modules/network/nxos/nxos_user.py\", \n  \"/ansible/modules/network/nxos/nxos_vlan.py\": \"lib/ansible/modules/network/nxos/nxos_vlan.py\", \n  \"/ansible/modules/network/nxos/nxos_vpc.py\": \"lib/ansible/modules/network/nxos/nxos_vpc.py\", \n  \"/ansible/modules/network/nxos/nxos_vpc_interface.py\": \"lib/ansible/modules/network/nxos/nxos_vpc_interface.py\", \n  \"/ansible/modules/network/nxos/nxos_vrf.py\": \"lib/ansible/modules/network/nxos/nxos_vrf.py\", \n  \"/ansible/modules/network/nxos/nxos_vrf_af.py\": \"lib/ansible/modules/network/nxos/nxos_vrf_af.py\", \n  \"/ansible/modules/network/nxos/nxos_vrf_interface.py\": \"lib/ansible/modules/network/nxos/nxos_vrf_interface.py\", \n  \"/ansible/modules/network/nxos/nxos_vrrp.py\": \"lib/ansible/modules/network/nxos/nxos_vrrp.py\", \n  \"/ansible/modules/network/nxos/nxos_vtp_domain.py\": \"lib/ansible/modules/network/nxos/nxos_vtp_domain.py\", \n  \"/ansible/modules/network/nxos/nxos_vtp_password.py\": \"lib/ansible/modules/network/nxos/nxos_vtp_password.py\", \n  \"/ansible/modules/network/nxos/nxos_vtp_version.py\": \"lib/ansible/modules/network/nxos/nxos_vtp_version.py\", \n  \"/ansible/modules/network/nxos/nxos_vxlan_vtep.py\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep.py\", \n  \"/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\", \n  \"/ansible/modules/network/ordnance/ordnance_config.py\": \"lib/ansible/modules/network/ordnance/ordnance_config.py\", \n  \"/ansible/modules/network/ordnance/ordnance_facts.py\": \"lib/ansible/modules/network/ordnance/ordnance_facts.py\", \n  \"/ansible/modules/network/ovs/openvswitch_bridge.py\": \"lib/ansible/modules/network/ovs/openvswitch_bridge.py\", \n  \"/ansible/modules/network/ovs/openvswitch_db.py\": \"lib/ansible/modules/network/ovs/openvswitch_db.py\", \n  \"/ansible/modules/network/ovs/openvswitch_port.py\": \"lib/ansible/modules/network/ovs/openvswitch_port.py\", \n  \"/ansible/modules/network/panos/panos_admin.py\": \"lib/ansible/modules/network/panos/panos_admin.py\", \n  \"/ansible/modules/network/panos/panos_admpwd.py\": \"lib/ansible/modules/network/panos/panos_admpwd.py\", \n  \"/ansible/modules/network/panos/panos_cert_gen_ssh.py\": \"lib/ansible/modules/network/panos/panos_cert_gen_ssh.py\", \n  \"/ansible/modules/network/panos/panos_check.py\": \"lib/ansible/modules/network/panos/panos_check.py\", \n  \"/ansible/modules/network/panos/panos_commit.py\": \"lib/ansible/modules/network/panos/panos_commit.py\", \n  \"/ansible/modules/network/panos/panos_dag.py\": \"lib/ansible/modules/network/panos/panos_dag.py\", \n  \"/ansible/modules/network/panos/panos_import.py\": \"lib/ansible/modules/network/panos/panos_import.py\", \n  \"/ansible/modules/network/panos/panos_interface.py\": \"lib/ansible/modules/network/panos/panos_interface.py\", \n  \"/ansible/modules/network/panos/panos_lic.py\": \"lib/ansible/modules/network/panos/panos_lic.py\", \n  \"/ansible/modules/network/panos/panos_loadcfg.py\": \"lib/ansible/modules/network/panos/panos_loadcfg.py\", \n  \"/ansible/modules/network/panos/panos_mgtconfig.py\": \"lib/ansible/modules/network/panos/panos_mgtconfig.py\", \n  \"/ansible/modules/network/panos/panos_nat_policy.py\": \"lib/ansible/modules/network/panos/panos_nat_policy.py\", \n  \"/ansible/modules/network/panos/panos_nat_rule.py\": \"lib/ansible/modules/network/panos/panos_nat_rule.py\", \n  \"/ansible/modules/network/panos/panos_object.py\": \"lib/ansible/modules/network/panos/panos_object.py\", \n  \"/ansible/modules/network/panos/panos_pg.py\": \"lib/ansible/modules/network/panos/panos_pg.py\", \n  \"/ansible/modules/network/panos/panos_restart.py\": \"lib/ansible/modules/network/panos/panos_restart.py\", \n  \"/ansible/modules/network/panos/panos_sag.py\": \"lib/ansible/modules/network/panos/panos_sag.py\", \n  \"/ansible/modules/network/panos/panos_security_policy.py\": \"lib/ansible/modules/network/panos/panos_security_policy.py\", \n  \"/ansible/modules/network/panos/panos_security_rule.py\": \"lib/ansible/modules/network/panos/panos_security_rule.py\", \n  \"/ansible/modules/network/protocol/net_lldp.py\": \"lib/ansible/modules/network/protocol/net_lldp.py\", \n  \"/ansible/modules/network/radware/vdirect_file.py\": \"lib/ansible/modules/network/radware/vdirect_file.py\", \n  \"/ansible/modules/network/routing/net_static_route.py\": \"lib/ansible/modules/network/routing/net_static_route.py\", \n  \"/ansible/modules/network/sros/sros_command.py\": \"lib/ansible/modules/network/sros/sros_command.py\", \n  \"/ansible/modules/network/sros/sros_config.py\": \"lib/ansible/modules/network/sros/sros_config.py\", \n  \"/ansible/modules/network/sros/sros_rollback.py\": \"lib/ansible/modules/network/sros/sros_rollback.py\", \n  \"/ansible/modules/network/system/net_banner.py\": \"lib/ansible/modules/network/system/net_banner.py\", \n  \"/ansible/modules/network/system/net_logging.py\": \"lib/ansible/modules/network/system/net_logging.py\", \n  \"/ansible/modules/network/system/net_ping.py\": \"lib/ansible/modules/network/system/net_ping.py\", \n  \"/ansible/modules/network/system/net_system.py\": \"lib/ansible/modules/network/system/net_system.py\", \n  \"/ansible/modules/network/system/net_user.py\": \"lib/ansible/modules/network/system/net_user.py\", \n  \"/ansible/modules/network/vyos/vyos_banner.py\": \"lib/ansible/modules/network/vyos/vyos_banner.py\", \n  \"/ansible/modules/network/vyos/vyos_command.py\": \"lib/ansible/modules/network/vyos/vyos_command.py\", \n  \"/ansible/modules/network/vyos/vyos_config.py\": \"lib/ansible/modules/network/vyos/vyos_config.py\", \n  \"/ansible/modules/network/vyos/vyos_facts.py\": \"lib/ansible/modules/network/vyos/vyos_facts.py\", \n  \"/ansible/modules/network/vyos/vyos_interface.py\": \"lib/ansible/modules/network/vyos/vyos_interface.py\", \n  \"/ansible/modules/network/vyos/vyos_l3_interface.py\": \"lib/ansible/modules/network/vyos/vyos_l3_interface.py\", \n  \"/ansible/modules/network/vyos/vyos_linkagg.py\": \"lib/ansible/modules/network/vyos/vyos_linkagg.py\", \n  \"/ansible/modules/network/vyos/vyos_lldp.py\": \"lib/ansible/modules/network/vyos/vyos_lldp.py\", \n  \"/ansible/modules/network/vyos/vyos_lldp_interface.py\": \"lib/ansible/modules/network/vyos/vyos_lldp_interface.py\", \n  \"/ansible/modules/network/vyos/vyos_logging.py\": \"lib/ansible/modules/network/vyos/vyos_logging.py\", \n  \"/ansible/modules/network/vyos/vyos_static_route.py\": \"lib/ansible/modules/network/vyos/vyos_static_route.py\", \n  \"/ansible/modules/network/vyos/vyos_system.py\": \"lib/ansible/modules/network/vyos/vyos_system.py\", \n  \"/ansible/modules/network/vyos/vyos_user.py\": \"lib/ansible/modules/network/vyos/vyos_user.py\", \n  \"/ansible/modules/network/vyos/vyos_vlan.py\": \"lib/ansible/modules/network/vyos/vyos_vlan.py\", \n  \"/ansible/modules/notification/bearychat.py\": \"lib/ansible/modules/notification/bearychat.py\", \n  \"/ansible/modules/notification/campfire.py\": \"lib/ansible/modules/notification/campfire.py\", \n  \"/ansible/modules/notification/catapult.py\": \"lib/ansible/modules/notification/catapult.py\", \n  \"/ansible/modules/notification/cisco_spark.py\": \"lib/ansible/modules/notification/cisco_spark.py\", \n  \"/ansible/modules/notification/flowdock.py\": \"lib/ansible/modules/notification/flowdock.py\", \n  \"/ansible/modules/notification/grove.py\": \"lib/ansible/modules/notification/grove.py\", \n  \"/ansible/modules/notification/hall.py\": \"lib/ansible/modules/notification/hall.py\", \n  \"/ansible/modules/notification/hipchat.py\": \"lib/ansible/modules/notification/hipchat.py\", \n  \"/ansible/modules/notification/irc.py\": \"lib/ansible/modules/notification/irc.py\", \n  \"/ansible/modules/notification/jabber.py\": \"lib/ansible/modules/notification/jabber.py\", \n  \"/ansible/modules/notification/mail.py\": \"lib/ansible/modules/notification/mail.py\", \n  \"/ansible/modules/notification/mattermost.py\": \"lib/ansible/modules/notification/mattermost.py\", \n  \"/ansible/modules/notification/mqtt.py\": \"lib/ansible/modules/notification/mqtt.py\", \n  \"/ansible/modules/notification/nexmo.py\": \"lib/ansible/modules/notification/nexmo.py\", \n  \"/ansible/modules/notification/office_365_connector_card.py\": \"lib/ansible/modules/notification/office_365_connector_card.py\", \n  \"/ansible/modules/notification/osx_say.py\": \"lib/ansible/modules/notification/osx_say.py\", \n  \"/ansible/modules/notification/pushbullet.py\": \"lib/ansible/modules/notification/pushbullet.py\", \n  \"/ansible/modules/notification/pushover.py\": \"lib/ansible/modules/notification/pushover.py\", \n  \"/ansible/modules/notification/rocketchat.py\": \"lib/ansible/modules/notification/rocketchat.py\", \n  \"/ansible/modules/notification/sendgrid.py\": \"lib/ansible/modules/notification/sendgrid.py\", \n  \"/ansible/modules/notification/slack.py\": \"lib/ansible/modules/notification/slack.py\", \n  \"/ansible/modules/notification/snow_record.py\": \"lib/ansible/modules/notification/snow_record.py\", \n  \"/ansible/modules/notification/syslogger.py\": \"lib/ansible/modules/notification/syslogger.py\", \n  \"/ansible/modules/notification/telegram.py\": \"lib/ansible/modules/notification/telegram.py\", \n  \"/ansible/modules/notification/twilio.py\": \"lib/ansible/modules/notification/twilio.py\", \n  \"/ansible/modules/notification/typetalk.py\": \"lib/ansible/modules/notification/typetalk.py\", \n  \"/ansible/modules/packaging/language/bower.py\": \"lib/ansible/modules/packaging/language/bower.py\", \n  \"/ansible/modules/packaging/language/bundler.py\": \"lib/ansible/modules/packaging/language/bundler.py\", \n  \"/ansible/modules/packaging/language/composer.py\": \"lib/ansible/modules/packaging/language/composer.py\", \n  \"/ansible/modules/packaging/language/cpanm.py\": \"lib/ansible/modules/packaging/language/cpanm.py\", \n  \"/ansible/modules/packaging/language/easy_install.py\": \"lib/ansible/modules/packaging/language/easy_install.py\", \n  \"/ansible/modules/packaging/language/gem.py\": \"lib/ansible/modules/packaging/language/gem.py\", \n  \"/ansible/modules/packaging/language/maven_artifact.py\": \"lib/ansible/modules/packaging/language/maven_artifact.py\", \n  \"/ansible/modules/packaging/language/npm.py\": \"lib/ansible/modules/packaging/language/npm.py\", \n  \"/ansible/modules/packaging/language/pear.py\": \"lib/ansible/modules/packaging/language/pear.py\", \n  \"/ansible/modules/packaging/language/pip.py\": \"lib/ansible/modules/packaging/language/pip.py\", \n  \"/ansible/modules/packaging/os/apk.py\": \"lib/ansible/modules/packaging/os/apk.py\", \n  \"/ansible/modules/packaging/os/apt.py\": \"lib/ansible/modules/packaging/os/apt.py\", \n  \"/ansible/modules/packaging/os/apt_key.py\": \"lib/ansible/modules/packaging/os/apt_key.py\", \n  \"/ansible/modules/packaging/os/apt_repository.py\": \"lib/ansible/modules/packaging/os/apt_repository.py\", \n  \"/ansible/modules/packaging/os/apt_rpm.py\": \"lib/ansible/modules/packaging/os/apt_rpm.py\", \n  \"/ansible/modules/packaging/os/dnf.py\": \"lib/ansible/modules/packaging/os/dnf.py\", \n  \"/ansible/modules/packaging/os/dpkg_selections.py\": \"lib/ansible/modules/packaging/os/dpkg_selections.py\", \n  \"/ansible/modules/packaging/os/homebrew.py\": \"lib/ansible/modules/packaging/os/homebrew.py\", \n  \"/ansible/modules/packaging/os/homebrew_cask.py\": \"lib/ansible/modules/packaging/os/homebrew_cask.py\", \n  \"/ansible/modules/packaging/os/homebrew_tap.py\": \"lib/ansible/modules/packaging/os/homebrew_tap.py\", \n  \"/ansible/modules/packaging/os/layman.py\": \"lib/ansible/modules/packaging/os/layman.py\", \n  \"/ansible/modules/packaging/os/macports.py\": \"lib/ansible/modules/packaging/os/macports.py\", \n  \"/ansible/modules/packaging/os/openbsd_pkg.py\": \"lib/ansible/modules/packaging/os/openbsd_pkg.py\", \n  \"/ansible/modules/packaging/os/opkg.py\": \"lib/ansible/modules/packaging/os/opkg.py\", \n  \"/ansible/modules/packaging/os/package.py\": \"lib/ansible/modules/packaging/os/package.py\", \n  \"/ansible/modules/packaging/os/pacman.py\": \"lib/ansible/modules/packaging/os/pacman.py\", \n  \"/ansible/modules/packaging/os/pkg5.py\": \"lib/ansible/modules/packaging/os/pkg5.py\", \n  \"/ansible/modules/packaging/os/pkg5_publisher.py\": \"lib/ansible/modules/packaging/os/pkg5_publisher.py\", \n  \"/ansible/modules/packaging/os/pkgin.py\": \"lib/ansible/modules/packaging/os/pkgin.py\", \n  \"/ansible/modules/packaging/os/pkgng.py\": \"lib/ansible/modules/packaging/os/pkgng.py\", \n  \"/ansible/modules/packaging/os/pkgutil.py\": \"lib/ansible/modules/packaging/os/pkgutil.py\", \n  \"/ansible/modules/packaging/os/portage.py\": \"lib/ansible/modules/packaging/os/portage.py\", \n  \"/ansible/modules/packaging/os/portinstall.py\": \"lib/ansible/modules/packaging/os/portinstall.py\", \n  \"/ansible/modules/packaging/os/pulp_repo.py\": \"lib/ansible/modules/packaging/os/pulp_repo.py\", \n  \"/ansible/modules/packaging/os/redhat_subscription.py\": \"lib/ansible/modules/packaging/os/redhat_subscription.py\", \n  \"/ansible/modules/packaging/os/rhn_channel.py\": \"lib/ansible/modules/packaging/os/rhn_channel.py\", \n  \"/ansible/modules/packaging/os/rhn_register.py\": \"lib/ansible/modules/packaging/os/rhn_register.py\", \n  \"/ansible/modules/packaging/os/rpm_key.py\": \"lib/ansible/modules/packaging/os/rpm_key.py\", \n  \"/ansible/modules/packaging/os/slackpkg.py\": \"lib/ansible/modules/packaging/os/slackpkg.py\", \n  \"/ansible/modules/packaging/os/sorcery.py\": \"lib/ansible/modules/packaging/os/sorcery.py\", \n  \"/ansible/modules/packaging/os/svr4pkg.py\": \"lib/ansible/modules/packaging/os/svr4pkg.py\", \n  \"/ansible/modules/packaging/os/swdepot.py\": \"lib/ansible/modules/packaging/os/swdepot.py\", \n  \"/ansible/modules/packaging/os/swupd.py\": \"lib/ansible/modules/packaging/os/swupd.py\", \n  \"/ansible/modules/packaging/os/urpmi.py\": \"lib/ansible/modules/packaging/os/urpmi.py\", \n  \"/ansible/modules/packaging/os/xbps.py\": \"lib/ansible/modules/packaging/os/xbps.py\", \n  \"/ansible/modules/packaging/os/yum.py\": \"lib/ansible/modules/packaging/os/yum.py\", \n  \"/ansible/modules/packaging/os/yum_repository.py\": \"lib/ansible/modules/packaging/os/yum_repository.py\", \n  \"/ansible/modules/packaging/os/zypper.py\": \"lib/ansible/modules/packaging/os/zypper.py\", \n  \"/ansible/modules/packaging/os/zypper_repository.py\": \"lib/ansible/modules/packaging/os/zypper_repository.py\", \n  \"/ansible/modules/remote_management/foreman/foreman.py\": \"lib/ansible/modules/remote_management/foreman/foreman.py\", \n  \"/ansible/modules/remote_management/foreman/katello.py\": \"lib/ansible/modules/remote_management/foreman/katello.py\", \n  \"/ansible/modules/remote_management/hpilo/hpilo_boot.py\": \"lib/ansible/modules/remote_management/hpilo/hpilo_boot.py\", \n  \"/ansible/modules/remote_management/hpilo/hpilo_facts.py\": \"lib/ansible/modules/remote_management/hpilo/hpilo_facts.py\", \n  \"/ansible/modules/remote_management/hpilo/hponcfg.py\": \"lib/ansible/modules/remote_management/hpilo/hponcfg.py\", \n  \"/ansible/modules/remote_management/imc/imc_rest.py\": \"lib/ansible/modules/remote_management/imc/imc_rest.py\", \n  \"/ansible/modules/remote_management/ipmi/ipmi_boot.py\": \"lib/ansible/modules/remote_management/ipmi/ipmi_boot.py\", \n  \"/ansible/modules/remote_management/ipmi/ipmi_power.py\": \"lib/ansible/modules/remote_management/ipmi/ipmi_power.py\", \n  \"/ansible/modules/remote_management/manageiq/manageiq_provider.py\": \"lib/ansible/modules/remote_management/manageiq/manageiq_provider.py\", \n  \"/ansible/modules/remote_management/manageiq/manageiq_tags.py\": \"lib/ansible/modules/remote_management/manageiq/manageiq_tags.py\", \n  \"/ansible/modules/remote_management/manageiq/manageiq_user.py\": \"lib/ansible/modules/remote_management/manageiq/manageiq_user.py\", \n  \"/ansible/modules/remote_management/oneview/oneview_enclosure_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_enclosure_facts.py\", \n  \"/ansible/modules/remote_management/oneview/oneview_ethernet_network.py\": \"lib/ansible/modules/remote_management/oneview/oneview_ethernet_network.py\", \n  \"/ansible/modules/remote_management/oneview/oneview_ethernet_network_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_ethernet_network_facts.py\", \n  \"/ansible/modules/remote_management/oneview/oneview_fc_network.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fc_network.py\", \n  \"/ansible/modules/remote_management/oneview/oneview_fc_network_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fc_network_facts.py\", \n  \"/ansible/modules/remote_management/oneview/oneview_fcoe_network.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fcoe_network.py\", \n  \"/ansible/modules/remote_management/oneview/oneview_fcoe_network_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fcoe_network_facts.py\", \n  \"/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group.py\": \"lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group.py\", \n  \"/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group_facts.py\", \n  \"/ansible/modules/remote_management/oneview/oneview_network_set.py\": \"lib/ansible/modules/remote_management/oneview/oneview_network_set.py\", \n  \"/ansible/modules/remote_management/oneview/oneview_network_set_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_network_set_facts.py\", \n  \"/ansible/modules/remote_management/oneview/oneview_san_manager.py\": \"lib/ansible/modules/remote_management/oneview/oneview_san_manager.py\", \n  \"/ansible/modules/remote_management/oneview/oneview_san_manager_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_san_manager_facts.py\", \n  \"/ansible/modules/remote_management/stacki/stacki_host.py\": \"lib/ansible/modules/remote_management/stacki/stacki_host.py\", \n  \"/ansible/modules/remote_management/wakeonlan.py\": \"lib/ansible/modules/remote_management/wakeonlan.py\", \n  \"/ansible/modules/source_control/bzr.py\": \"lib/ansible/modules/source_control/bzr.py\", \n  \"/ansible/modules/source_control/git.py\": \"lib/ansible/modules/source_control/git.py\", \n  \"/ansible/modules/source_control/git_config.py\": \"lib/ansible/modules/source_control/git_config.py\", \n  \"/ansible/modules/source_control/github_deploy_key.py\": \"lib/ansible/modules/source_control/github_deploy_key.py\", \n  \"/ansible/modules/source_control/github_hooks.py\": \"lib/ansible/modules/source_control/github_hooks.py\", \n  \"/ansible/modules/source_control/github_issue.py\": \"lib/ansible/modules/source_control/github_issue.py\", \n  \"/ansible/modules/source_control/github_key.py\": \"lib/ansible/modules/source_control/github_key.py\", \n  \"/ansible/modules/source_control/github_release.py\": \"lib/ansible/modules/source_control/github_release.py\", \n  \"/ansible/modules/source_control/gitlab_group.py\": \"lib/ansible/modules/source_control/gitlab_group.py\", \n  \"/ansible/modules/source_control/gitlab_project.py\": \"lib/ansible/modules/source_control/gitlab_project.py\", \n  \"/ansible/modules/source_control/gitlab_user.py\": \"lib/ansible/modules/source_control/gitlab_user.py\", \n  \"/ansible/modules/source_control/hg.py\": \"lib/ansible/modules/source_control/hg.py\", \n  \"/ansible/modules/source_control/subversion.py\": \"lib/ansible/modules/source_control/subversion.py\", \n  \"/ansible/modules/storage/infinidat/infini_export.py\": \"lib/ansible/modules/storage/infinidat/infini_export.py\", \n  \"/ansible/modules/storage/infinidat/infini_export_client.py\": \"lib/ansible/modules/storage/infinidat/infini_export_client.py\", \n  \"/ansible/modules/storage/infinidat/infini_fs.py\": \"lib/ansible/modules/storage/infinidat/infini_fs.py\", \n  \"/ansible/modules/storage/infinidat/infini_host.py\": \"lib/ansible/modules/storage/infinidat/infini_host.py\", \n  \"/ansible/modules/storage/infinidat/infini_pool.py\": \"lib/ansible/modules/storage/infinidat/infini_pool.py\", \n  \"/ansible/modules/storage/infinidat/infini_vol.py\": \"lib/ansible/modules/storage/infinidat/infini_vol.py\", \n  \"/ansible/modules/storage/netapp/na_cdot_aggregate.py\": \"lib/ansible/modules/storage/netapp/na_cdot_aggregate.py\", \n  \"/ansible/modules/storage/netapp/na_cdot_license.py\": \"lib/ansible/modules/storage/netapp/na_cdot_license.py\", \n  \"/ansible/modules/storage/netapp/na_cdot_lun.py\": \"lib/ansible/modules/storage/netapp/na_cdot_lun.py\", \n  \"/ansible/modules/storage/netapp/na_cdot_qtree.py\": \"lib/ansible/modules/storage/netapp/na_cdot_qtree.py\", \n  \"/ansible/modules/storage/netapp/na_cdot_svm.py\": \"lib/ansible/modules/storage/netapp/na_cdot_svm.py\", \n  \"/ansible/modules/storage/netapp/na_cdot_user.py\": \"lib/ansible/modules/storage/netapp/na_cdot_user.py\", \n  \"/ansible/modules/storage/netapp/na_cdot_user_role.py\": \"lib/ansible/modules/storage/netapp/na_cdot_user_role.py\", \n  \"/ansible/modules/storage/netapp/na_cdot_volume.py\": \"lib/ansible/modules/storage/netapp/na_cdot_volume.py\", \n  \"/ansible/modules/storage/netapp/netapp_e_amg.py\": \"lib/ansible/modules/storage/netapp/netapp_e_amg.py\", \n  \"/ansible/modules/storage/netapp/netapp_e_amg_role.py\": \"lib/ansible/modules/storage/netapp/netapp_e_amg_role.py\", \n  \"/ansible/modules/storage/netapp/netapp_e_amg_sync.py\": \"lib/ansible/modules/storage/netapp/netapp_e_amg_sync.py\", \n  \"/ansible/modules/storage/netapp/netapp_e_auth.py\": \"lib/ansible/modules/storage/netapp/netapp_e_auth.py\", \n  \"/ansible/modules/storage/netapp/netapp_e_facts.py\": \"lib/ansible/modules/storage/netapp/netapp_e_facts.py\", \n  \"/ansible/modules/storage/netapp/netapp_e_flashcache.py\": \"lib/ansible/modules/storage/netapp/netapp_e_flashcache.py\", \n  \"/ansible/modules/storage/netapp/netapp_e_host.py\": \"lib/ansible/modules/storage/netapp/netapp_e_host.py\", \n  \"/ansible/modules/storage/netapp/netapp_e_hostgroup.py\": \"lib/ansible/modules/storage/netapp/netapp_e_hostgroup.py\", \n  \"/ansible/modules/storage/netapp/netapp_e_lun_mapping.py\": \"lib/ansible/modules/storage/netapp/netapp_e_lun_mapping.py\", \n  \"/ansible/modules/storage/netapp/netapp_e_snapshot_group.py\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_group.py\", \n  \"/ansible/modules/storage/netapp/netapp_e_snapshot_images.py\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_images.py\", \n  \"/ansible/modules/storage/netapp/netapp_e_snapshot_volume.py\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_volume.py\", \n  \"/ansible/modules/storage/netapp/netapp_e_storage_system.py\": \"lib/ansible/modules/storage/netapp/netapp_e_storage_system.py\", \n  \"/ansible/modules/storage/netapp/netapp_e_storagepool.py\": \"lib/ansible/modules/storage/netapp/netapp_e_storagepool.py\", \n  \"/ansible/modules/storage/netapp/netapp_e_volume.py\": \"lib/ansible/modules/storage/netapp/netapp_e_volume.py\", \n  \"/ansible/modules/storage/netapp/netapp_e_volume_copy.py\": \"lib/ansible/modules/storage/netapp/netapp_e_volume_copy.py\", \n  \"/ansible/modules/storage/netapp/sf_account_manager.py\": \"lib/ansible/modules/storage/netapp/sf_account_manager.py\", \n  \"/ansible/modules/storage/netapp/sf_check_connections.py\": \"lib/ansible/modules/storage/netapp/sf_check_connections.py\", \n  \"/ansible/modules/storage/netapp/sf_snapshot_schedule_manager.py\": \"lib/ansible/modules/storage/netapp/sf_snapshot_schedule_manager.py\", \n  \"/ansible/modules/storage/netapp/sf_volume_access_group_manager.py\": \"lib/ansible/modules/storage/netapp/sf_volume_access_group_manager.py\", \n  \"/ansible/modules/storage/netapp/sf_volume_manager.py\": \"lib/ansible/modules/storage/netapp/sf_volume_manager.py\", \n  \"/ansible/modules/storage/purestorage/purefa_hg.py\": \"lib/ansible/modules/storage/purestorage/purefa_hg.py\", \n  \"/ansible/modules/storage/purestorage/purefa_host.py\": \"lib/ansible/modules/storage/purestorage/purefa_host.py\", \n  \"/ansible/modules/storage/purestorage/purefa_pg.py\": \"lib/ansible/modules/storage/purestorage/purefa_pg.py\", \n  \"/ansible/modules/storage/purestorage/purefa_snap.py\": \"lib/ansible/modules/storage/purestorage/purefa_snap.py\", \n  \"/ansible/modules/storage/purestorage/purefa_volume.py\": \"lib/ansible/modules/storage/purestorage/purefa_volume.py\", \n  \"/ansible/modules/storage/zfs/zfs.py\": \"lib/ansible/modules/storage/zfs/zfs.py\", \n  \"/ansible/modules/storage/zfs/zfs_facts.py\": \"lib/ansible/modules/storage/zfs/zfs_facts.py\", \n  \"/ansible/modules/storage/zfs/zpool_facts.py\": \"lib/ansible/modules/storage/zfs/zpool_facts.py\", \n  \"/ansible/modules/system/aix_inittab.py\": \"lib/ansible/modules/system/aix_inittab.py\", \n  \"/ansible/modules/system/aix_lvol.py\": \"lib/ansible/modules/system/aix_lvol.py\", \n  \"/ansible/modules/system/alternatives.py\": \"lib/ansible/modules/system/alternatives.py\", \n  \"/ansible/modules/system/at.py\": \"lib/ansible/modules/system/at.py\", \n  \"/ansible/modules/system/authorized_key.py\": \"lib/ansible/modules/system/authorized_key.py\", \n  \"/ansible/modules/system/awall.py\": \"lib/ansible/modules/system/awall.py\", \n  \"/ansible/modules/system/beadm.py\": \"lib/ansible/modules/system/beadm.py\", \n  \"/ansible/modules/system/capabilities.py\": \"lib/ansible/modules/system/capabilities.py\", \n  \"/ansible/modules/system/cron.py\": \"lib/ansible/modules/system/cron.py\", \n  \"/ansible/modules/system/cronvar.py\": \"lib/ansible/modules/system/cronvar.py\", \n  \"/ansible/modules/system/crypttab.py\": \"lib/ansible/modules/system/crypttab.py\", \n  \"/ansible/modules/system/dconf.py\": \"lib/ansible/modules/system/dconf.py\", \n  \"/ansible/modules/system/debconf.py\": \"lib/ansible/modules/system/debconf.py\", \n  \"/ansible/modules/system/facter.py\": \"lib/ansible/modules/system/facter.py\", \n  \"/ansible/modules/system/filesystem.py\": \"lib/ansible/modules/system/filesystem.py\", \n  \"/ansible/modules/system/firewalld.py\": \"lib/ansible/modules/system/firewalld.py\", \n  \"/ansible/modules/system/gconftool2.py\": \"lib/ansible/modules/system/gconftool2.py\", \n  \"/ansible/modules/system/getent.py\": \"lib/ansible/modules/system/getent.py\", \n  \"/ansible/modules/system/gluster_volume.py\": \"lib/ansible/modules/system/gluster_volume.py\", \n  \"/ansible/modules/system/group.py\": \"lib/ansible/modules/system/group.py\", \n  \"/ansible/modules/system/hostname.py\": \"lib/ansible/modules/system/hostname.py\", \n  \"/ansible/modules/system/interfaces_file.py\": \"lib/ansible/modules/system/interfaces_file.py\", \n  \"/ansible/modules/system/iptables.py\": \"lib/ansible/modules/system/iptables.py\", \n  \"/ansible/modules/system/java_cert.py\": \"lib/ansible/modules/system/java_cert.py\", \n  \"/ansible/modules/system/kernel_blacklist.py\": \"lib/ansible/modules/system/kernel_blacklist.py\", \n  \"/ansible/modules/system/known_hosts.py\": \"lib/ansible/modules/system/known_hosts.py\", \n  \"/ansible/modules/system/locale_gen.py\": \"lib/ansible/modules/system/locale_gen.py\", \n  \"/ansible/modules/system/lvg.py\": \"lib/ansible/modules/system/lvg.py\", \n  \"/ansible/modules/system/lvol.py\": \"lib/ansible/modules/system/lvol.py\", \n  \"/ansible/modules/system/make.py\": \"lib/ansible/modules/system/make.py\", \n  \"/ansible/modules/system/mksysb.py\": \"lib/ansible/modules/system/mksysb.py\", \n  \"/ansible/modules/system/modprobe.py\": \"lib/ansible/modules/system/modprobe.py\", \n  \"/ansible/modules/system/mount.py\": \"lib/ansible/modules/system/mount.py\", \n  \"/ansible/modules/system/nosh.py\": \"lib/ansible/modules/system/nosh.py\", \n  \"/ansible/modules/system/ohai.py\": \"lib/ansible/modules/system/ohai.py\", \n  \"/ansible/modules/system/open_iscsi.py\": \"lib/ansible/modules/system/open_iscsi.py\", \n  \"/ansible/modules/system/openwrt_init.py\": \"lib/ansible/modules/system/openwrt_init.py\", \n  \"/ansible/modules/system/osx_defaults.py\": \"lib/ansible/modules/system/osx_defaults.py\", \n  \"/ansible/modules/system/pam_limits.py\": \"lib/ansible/modules/system/pam_limits.py\", \n  \"/ansible/modules/system/pamd.py\": \"lib/ansible/modules/system/pamd.py\", \n  \"/ansible/modules/system/parted.py\": \"lib/ansible/modules/system/parted.py\", \n  \"/ansible/modules/system/ping.py\": \"lib/ansible/modules/system/ping.py\", \n  \"/ansible/modules/system/puppet.py\": \"lib/ansible/modules/system/puppet.py\", \n  \"/ansible/modules/system/runit.py\": \"lib/ansible/modules/system/runit.py\", \n  \"/ansible/modules/system/seboolean.py\": \"lib/ansible/modules/system/seboolean.py\", \n  \"/ansible/modules/system/sefcontext.py\": \"lib/ansible/modules/system/sefcontext.py\", \n  \"/ansible/modules/system/selinux.py\": \"lib/ansible/modules/system/selinux.py\", \n  \"/ansible/modules/system/selinux_permissive.py\": \"lib/ansible/modules/system/selinux_permissive.py\", \n  \"/ansible/modules/system/seport.py\": \"lib/ansible/modules/system/seport.py\", \n  \"/ansible/modules/system/service.py\": \"lib/ansible/modules/system/service.py\", \n  \"/ansible/modules/system/setup.py\": \"lib/ansible/modules/system/setup.py\", \n  \"/ansible/modules/system/solaris_zone.py\": \"lib/ansible/modules/system/solaris_zone.py\", \n  \"/ansible/modules/system/svc.py\": \"lib/ansible/modules/system/svc.py\", \n  \"/ansible/modules/system/sysctl.py\": \"lib/ansible/modules/system/sysctl.py\", \n  \"/ansible/modules/system/systemd.py\": \"lib/ansible/modules/system/systemd.py\", \n  \"/ansible/modules/system/timezone.py\": \"lib/ansible/modules/system/timezone.py\", \n  \"/ansible/modules/system/ufw.py\": \"lib/ansible/modules/system/ufw.py\", \n  \"/ansible/modules/system/user.py\": \"lib/ansible/modules/system/user.py\", \n  \"/ansible/modules/utilities/helper/_accelerate.py\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n  \"/ansible/modules/utilities/helper/accelerate.py\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n  \"/ansible/modules/utilities/helper/meta.py\": \"lib/ansible/modules/utilities/helper/meta.py\", \n  \"/ansible/modules/utilities/logic/_include.py\": \"lib/ansible/modules/utilities/logic/_include.py\", \n  \"/ansible/modules/utilities/logic/assert.py\": \"lib/ansible/modules/utilities/logic/assert.py\", \n  \"/ansible/modules/utilities/logic/async_status.py\": \"lib/ansible/modules/utilities/logic/async_status.py\", \n  \"/ansible/modules/utilities/logic/async_wrapper.py\": \"lib/ansible/modules/utilities/logic/async_wrapper.py\", \n  \"/ansible/modules/utilities/logic/debug.py\": \"lib/ansible/modules/utilities/logic/debug.py\", \n  \"/ansible/modules/utilities/logic/fail.py\": \"lib/ansible/modules/utilities/logic/fail.py\", \n  \"/ansible/modules/utilities/logic/import_playbook.py\": \"lib/ansible/modules/utilities/logic/import_playbook.py\", \n  \"/ansible/modules/utilities/logic/import_role.py\": \"lib/ansible/modules/utilities/logic/import_role.py\", \n  \"/ansible/modules/utilities/logic/import_tasks.py\": \"lib/ansible/modules/utilities/logic/import_tasks.py\", \n  \"/ansible/modules/utilities/logic/include.py\": \"lib/ansible/modules/utilities/logic/_include.py\", \n  \"/ansible/modules/utilities/logic/include_role.py\": \"lib/ansible/modules/utilities/logic/include_role.py\", \n  \"/ansible/modules/utilities/logic/include_tasks.py\": \"lib/ansible/modules/utilities/logic/include_tasks.py\", \n  \"/ansible/modules/utilities/logic/include_vars.py\": \"lib/ansible/modules/utilities/logic/include_vars.py\", \n  \"/ansible/modules/utilities/logic/pause.py\": \"lib/ansible/modules/utilities/logic/pause.py\", \n  \"/ansible/modules/utilities/logic/set_fact.py\": \"lib/ansible/modules/utilities/logic/set_fact.py\", \n  \"/ansible/modules/utilities/logic/set_stats.py\": \"lib/ansible/modules/utilities/logic/set_stats.py\", \n  \"/ansible/modules/utilities/logic/wait_for.py\": \"lib/ansible/modules/utilities/logic/wait_for.py\", \n  \"/ansible/modules/utilities/logic/wait_for_connection.py\": \"lib/ansible/modules/utilities/logic/wait_for_connection.py\", \n  \"/ansible/modules/web_infrastructure/ansible_tower/tower_credential.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_credential.py\", \n  \"/ansible/modules/web_infrastructure/ansible_tower/tower_group.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_group.py\", \n  \"/ansible/modules/web_infrastructure/ansible_tower/tower_host.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_host.py\", \n  \"/ansible/modules/web_infrastructure/ansible_tower/tower_inventory.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_inventory.py\", \n  \"/ansible/modules/web_infrastructure/ansible_tower/tower_job_cancel.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_cancel.py\", \n  \"/ansible/modules/web_infrastructure/ansible_tower/tower_job_launch.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_launch.py\", \n  \"/ansible/modules/web_infrastructure/ansible_tower/tower_job_list.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_list.py\", \n  \"/ansible/modules/web_infrastructure/ansible_tower/tower_job_template.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_template.py\", \n  \"/ansible/modules/web_infrastructure/ansible_tower/tower_job_wait.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_wait.py\", \n  \"/ansible/modules/web_infrastructure/ansible_tower/tower_label.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_label.py\", \n  \"/ansible/modules/web_infrastructure/ansible_tower/tower_organization.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_organization.py\", \n  \"/ansible/modules/web_infrastructure/ansible_tower/tower_project.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_project.py\", \n  \"/ansible/modules/web_infrastructure/ansible_tower/tower_role.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_role.py\", \n  \"/ansible/modules/web_infrastructure/ansible_tower/tower_team.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_team.py\", \n  \"/ansible/modules/web_infrastructure/ansible_tower/tower_user.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_user.py\", \n  \"/ansible/modules/web_infrastructure/apache2_mod_proxy.py\": \"lib/ansible/modules/web_infrastructure/apache2_mod_proxy.py\", \n  \"/ansible/modules/web_infrastructure/apache2_module.py\": \"lib/ansible/modules/web_infrastructure/apache2_module.py\", \n  \"/ansible/modules/web_infrastructure/deploy_helper.py\": \"lib/ansible/modules/web_infrastructure/deploy_helper.py\", \n  \"/ansible/modules/web_infrastructure/django_manage.py\": \"lib/ansible/modules/web_infrastructure/django_manage.py\", \n  \"/ansible/modules/web_infrastructure/ejabberd_user.py\": \"lib/ansible/modules/web_infrastructure/ejabberd_user.py\", \n  \"/ansible/modules/web_infrastructure/gunicorn.py\": \"lib/ansible/modules/web_infrastructure/gunicorn.py\", \n  \"/ansible/modules/web_infrastructure/htpasswd.py\": \"lib/ansible/modules/web_infrastructure/htpasswd.py\", \n  \"/ansible/modules/web_infrastructure/jboss.py\": \"lib/ansible/modules/web_infrastructure/jboss.py\", \n  \"/ansible/modules/web_infrastructure/jenkins_job.py\": \"lib/ansible/modules/web_infrastructure/jenkins_job.py\", \n  \"/ansible/modules/web_infrastructure/jenkins_plugin.py\": \"lib/ansible/modules/web_infrastructure/jenkins_plugin.py\", \n  \"/ansible/modules/web_infrastructure/jenkins_script.py\": \"lib/ansible/modules/web_infrastructure/jenkins_script.py\", \n  \"/ansible/modules/web_infrastructure/jira.py\": \"lib/ansible/modules/web_infrastructure/jira.py\", \n  \"/ansible/modules/web_infrastructure/letsencrypt.py\": \"lib/ansible/modules/web_infrastructure/letsencrypt.py\", \n  \"/ansible/modules/web_infrastructure/nginx_status_facts.py\": \"lib/ansible/modules/web_infrastructure/nginx_status_facts.py\", \n  \"/ansible/modules/web_infrastructure/rundeck_acl_policy.py\": \"lib/ansible/modules/web_infrastructure/rundeck_acl_policy.py\", \n  \"/ansible/modules/web_infrastructure/rundeck_project.py\": \"lib/ansible/modules/web_infrastructure/rundeck_project.py\", \n  \"/ansible/modules/web_infrastructure/supervisorctl.py\": \"lib/ansible/modules/web_infrastructure/supervisorctl.py\", \n  \"/ansible/modules/web_infrastructure/taiga_issue.py\": \"lib/ansible/modules/web_infrastructure/taiga_issue.py\", \n  \"/ansible/modules/windows/_win_msi.ps1\": \"lib/ansible/modules/windows/_win_msi.ps1\", \n  \"/ansible/modules/windows/_win_msi.py\": \"lib/ansible/modules/windows/_win_msi.py\", \n  \"/ansible/modules/windows/async_status.ps1\": \"lib/ansible/modules/windows/async_status.ps1\", \n  \"/ansible/modules/windows/async_wrapper.ps1\": \"lib/ansible/modules/windows/async_wrapper.ps1\", \n  \"/ansible/modules/windows/setup.ps1\": \"lib/ansible/modules/windows/setup.ps1\", \n  \"/ansible/modules/windows/slurp.ps1\": \"lib/ansible/modules/windows/slurp.ps1\", \n  \"/ansible/modules/windows/win_acl.ps1\": \"lib/ansible/modules/windows/win_acl.ps1\", \n  \"/ansible/modules/windows/win_acl.py\": \"lib/ansible/modules/windows/win_acl.py\", \n  \"/ansible/modules/windows/win_acl_inheritance.ps1\": \"lib/ansible/modules/windows/win_acl_inheritance.ps1\", \n  \"/ansible/modules/windows/win_acl_inheritance.py\": \"lib/ansible/modules/windows/win_acl_inheritance.py\", \n  \"/ansible/modules/windows/win_audit_rule.ps1\": \"lib/ansible/modules/windows/win_audit_rule.ps1\", \n  \"/ansible/modules/windows/win_audit_rule.py\": \"lib/ansible/modules/windows/win_audit_rule.py\", \n  \"/ansible/modules/windows/win_chocolatey.ps1\": \"lib/ansible/modules/windows/win_chocolatey.ps1\", \n  \"/ansible/modules/windows/win_chocolatey.py\": \"lib/ansible/modules/windows/win_chocolatey.py\", \n  \"/ansible/modules/windows/win_command.ps1\": \"lib/ansible/modules/windows/win_command.ps1\", \n  \"/ansible/modules/windows/win_command.py\": \"lib/ansible/modules/windows/win_command.py\", \n  \"/ansible/modules/windows/win_copy.ps1\": \"lib/ansible/modules/windows/win_copy.ps1\", \n  \"/ansible/modules/windows/win_copy.py\": \"lib/ansible/modules/windows/win_copy.py\", \n  \"/ansible/modules/windows/win_defrag.ps1\": \"lib/ansible/modules/windows/win_defrag.ps1\", \n  \"/ansible/modules/windows/win_defrag.py\": \"lib/ansible/modules/windows/win_defrag.py\", \n  \"/ansible/modules/windows/win_disk_image.ps1\": \"lib/ansible/modules/windows/win_disk_image.ps1\", \n  \"/ansible/modules/windows/win_disk_image.py\": \"lib/ansible/modules/windows/win_disk_image.py\", \n  \"/ansible/modules/windows/win_dns_client.ps1\": \"lib/ansible/modules/windows/win_dns_client.ps1\", \n  \"/ansible/modules/windows/win_dns_client.py\": \"lib/ansible/modules/windows/win_dns_client.py\", \n  \"/ansible/modules/windows/win_domain.ps1\": \"lib/ansible/modules/windows/win_domain.ps1\", \n  \"/ansible/modules/windows/win_domain.py\": \"lib/ansible/modules/windows/win_domain.py\", \n  \"/ansible/modules/windows/win_domain_controller.ps1\": \"lib/ansible/modules/windows/win_domain_controller.ps1\", \n  \"/ansible/modules/windows/win_domain_controller.py\": \"lib/ansible/modules/windows/win_domain_controller.py\", \n  \"/ansible/modules/windows/win_domain_group.ps1\": \"lib/ansible/modules/windows/win_domain_group.ps1\", \n  \"/ansible/modules/windows/win_domain_group.py\": \"lib/ansible/modules/windows/win_domain_group.py\", \n  \"/ansible/modules/windows/win_domain_membership.ps1\": \"lib/ansible/modules/windows/win_domain_membership.ps1\", \n  \"/ansible/modules/windows/win_domain_membership.py\": \"lib/ansible/modules/windows/win_domain_membership.py\", \n  \"/ansible/modules/windows/win_domain_user.ps1\": \"lib/ansible/modules/windows/win_domain_user.ps1\", \n  \"/ansible/modules/windows/win_domain_user.py\": \"lib/ansible/modules/windows/win_domain_user.py\", \n  \"/ansible/modules/windows/win_dotnet_ngen.ps1\": \"lib/ansible/modules/windows/win_dotnet_ngen.ps1\", \n  \"/ansible/modules/windows/win_dotnet_ngen.py\": \"lib/ansible/modules/windows/win_dotnet_ngen.py\", \n  \"/ansible/modules/windows/win_dsc.ps1\": \"lib/ansible/modules/windows/win_dsc.ps1\", \n  \"/ansible/modules/windows/win_dsc.py\": \"lib/ansible/modules/windows/win_dsc.py\", \n  \"/ansible/modules/windows/win_environment.ps1\": \"lib/ansible/modules/windows/win_environment.ps1\", \n  \"/ansible/modules/windows/win_environment.py\": \"lib/ansible/modules/windows/win_environment.py\", \n  \"/ansible/modules/windows/win_eventlog.ps1\": \"lib/ansible/modules/windows/win_eventlog.ps1\", \n  \"/ansible/modules/windows/win_eventlog.py\": \"lib/ansible/modules/windows/win_eventlog.py\", \n  \"/ansible/modules/windows/win_eventlog_entry.ps1\": \"lib/ansible/modules/windows/win_eventlog_entry.ps1\", \n  \"/ansible/modules/windows/win_eventlog_entry.py\": \"lib/ansible/modules/windows/win_eventlog_entry.py\", \n  \"/ansible/modules/windows/win_feature.ps1\": \"lib/ansible/modules/windows/win_feature.ps1\", \n  \"/ansible/modules/windows/win_feature.py\": \"lib/ansible/modules/windows/win_feature.py\", \n  \"/ansible/modules/windows/win_file.ps1\": \"lib/ansible/modules/windows/win_file.ps1\", \n  \"/ansible/modules/windows/win_file.py\": \"lib/ansible/modules/windows/win_file.py\", \n  \"/ansible/modules/windows/win_file_version.ps1\": \"lib/ansible/modules/windows/win_file_version.ps1\", \n  \"/ansible/modules/windows/win_file_version.py\": \"lib/ansible/modules/windows/win_file_version.py\", \n  \"/ansible/modules/windows/win_find.ps1\": \"lib/ansible/modules/windows/win_find.ps1\", \n  \"/ansible/modules/windows/win_find.py\": \"lib/ansible/modules/windows/win_find.py\", \n  \"/ansible/modules/windows/win_firewall.ps1\": \"lib/ansible/modules/windows/win_firewall.ps1\", \n  \"/ansible/modules/windows/win_firewall.py\": \"lib/ansible/modules/windows/win_firewall.py\", \n  \"/ansible/modules/windows/win_firewall_rule.ps1\": \"lib/ansible/modules/windows/win_firewall_rule.ps1\", \n  \"/ansible/modules/windows/win_firewall_rule.py\": \"lib/ansible/modules/windows/win_firewall_rule.py\", \n  \"/ansible/modules/windows/win_get_url.ps1\": \"lib/ansible/modules/windows/win_get_url.ps1\", \n  \"/ansible/modules/windows/win_get_url.py\": \"lib/ansible/modules/windows/win_get_url.py\", \n  \"/ansible/modules/windows/win_group.ps1\": \"lib/ansible/modules/windows/win_group.ps1\", \n  \"/ansible/modules/windows/win_group.py\": \"lib/ansible/modules/windows/win_group.py\", \n  \"/ansible/modules/windows/win_group_membership.ps1\": \"lib/ansible/modules/windows/win_group_membership.ps1\", \n  \"/ansible/modules/windows/win_group_membership.py\": \"lib/ansible/modules/windows/win_group_membership.py\", \n  \"/ansible/modules/windows/win_hotfix.ps1\": \"lib/ansible/modules/windows/win_hotfix.ps1\", \n  \"/ansible/modules/windows/win_hotfix.py\": \"lib/ansible/modules/windows/win_hotfix.py\", \n  \"/ansible/modules/windows/win_iis_virtualdirectory.ps1\": \"lib/ansible/modules/windows/win_iis_virtualdirectory.ps1\", \n  \"/ansible/modules/windows/win_iis_virtualdirectory.py\": \"lib/ansible/modules/windows/win_iis_virtualdirectory.py\", \n  \"/ansible/modules/windows/win_iis_webapplication.ps1\": \"lib/ansible/modules/windows/win_iis_webapplication.ps1\", \n  \"/ansible/modules/windows/win_iis_webapplication.py\": \"lib/ansible/modules/windows/win_iis_webapplication.py\", \n  \"/ansible/modules/windows/win_iis_webapppool.ps1\": \"lib/ansible/modules/windows/win_iis_webapppool.ps1\", \n  \"/ansible/modules/windows/win_iis_webapppool.py\": \"lib/ansible/modules/windows/win_iis_webapppool.py\", \n  \"/ansible/modules/windows/win_iis_webbinding.ps1\": \"lib/ansible/modules/windows/win_iis_webbinding.ps1\", \n  \"/ansible/modules/windows/win_iis_webbinding.py\": \"lib/ansible/modules/windows/win_iis_webbinding.py\", \n  \"/ansible/modules/windows/win_iis_website.ps1\": \"lib/ansible/modules/windows/win_iis_website.ps1\", \n  \"/ansible/modules/windows/win_iis_website.py\": \"lib/ansible/modules/windows/win_iis_website.py\", \n  \"/ansible/modules/windows/win_lineinfile.ps1\": \"lib/ansible/modules/windows/win_lineinfile.ps1\", \n  \"/ansible/modules/windows/win_lineinfile.py\": \"lib/ansible/modules/windows/win_lineinfile.py\", \n  \"/ansible/modules/windows/win_mapped_drive.ps1\": \"lib/ansible/modules/windows/win_mapped_drive.ps1\", \n  \"/ansible/modules/windows/win_mapped_drive.py\": \"lib/ansible/modules/windows/win_mapped_drive.py\", \n  \"/ansible/modules/windows/win_msg.ps1\": \"lib/ansible/modules/windows/win_msg.ps1\", \n  \"/ansible/modules/windows/win_msg.py\": \"lib/ansible/modules/windows/win_msg.py\", \n  \"/ansible/modules/windows/win_msi.ps1\": \"lib/ansible/modules/windows/_win_msi.ps1\", \n  \"/ansible/modules/windows/win_msi.py\": \"lib/ansible/modules/windows/_win_msi.py\", \n  \"/ansible/modules/windows/win_nssm.ps1\": \"lib/ansible/modules/windows/win_nssm.ps1\", \n  \"/ansible/modules/windows/win_nssm.py\": \"lib/ansible/modules/windows/win_nssm.py\", \n  \"/ansible/modules/windows/win_owner.ps1\": \"lib/ansible/modules/windows/win_owner.ps1\", \n  \"/ansible/modules/windows/win_owner.py\": \"lib/ansible/modules/windows/win_owner.py\", \n  \"/ansible/modules/windows/win_package.ps1\": \"lib/ansible/modules/windows/win_package.ps1\", \n  \"/ansible/modules/windows/win_package.py\": \"lib/ansible/modules/windows/win_package.py\", \n  \"/ansible/modules/windows/win_pagefile.ps1\": \"lib/ansible/modules/windows/win_pagefile.ps1\", \n  \"/ansible/modules/windows/win_pagefile.py\": \"lib/ansible/modules/windows/win_pagefile.py\", \n  \"/ansible/modules/windows/win_path.ps1\": \"lib/ansible/modules/windows/win_path.ps1\", \n  \"/ansible/modules/windows/win_path.py\": \"lib/ansible/modules/windows/win_path.py\", \n  \"/ansible/modules/windows/win_ping.ps1\": \"lib/ansible/modules/windows/win_ping.ps1\", \n  \"/ansible/modules/windows/win_ping.py\": \"lib/ansible/modules/windows/win_ping.py\", \n  \"/ansible/modules/windows/win_power_plan.ps1\": \"lib/ansible/modules/windows/win_power_plan.ps1\", \n  \"/ansible/modules/windows/win_power_plan.py\": \"lib/ansible/modules/windows/win_power_plan.py\", \n  \"/ansible/modules/windows/win_psexec.ps1\": \"lib/ansible/modules/windows/win_psexec.ps1\", \n  \"/ansible/modules/windows/win_psexec.py\": \"lib/ansible/modules/windows/win_psexec.py\", \n  \"/ansible/modules/windows/win_psmodule.ps1\": \"lib/ansible/modules/windows/win_psmodule.ps1\", \n  \"/ansible/modules/windows/win_psmodule.py\": \"lib/ansible/modules/windows/win_psmodule.py\", \n  \"/ansible/modules/windows/win_rabbitmq_plugin.ps1\": \"lib/ansible/modules/windows/win_rabbitmq_plugin.ps1\", \n  \"/ansible/modules/windows/win_rabbitmq_plugin.py\": \"lib/ansible/modules/windows/win_rabbitmq_plugin.py\", \n  \"/ansible/modules/windows/win_reboot.py\": \"lib/ansible/modules/windows/win_reboot.py\", \n  \"/ansible/modules/windows/win_reg_stat.ps1\": \"lib/ansible/modules/windows/win_reg_stat.ps1\", \n  \"/ansible/modules/windows/win_reg_stat.py\": \"lib/ansible/modules/windows/win_reg_stat.py\", \n  \"/ansible/modules/windows/win_regedit.ps1\": \"lib/ansible/modules/windows/win_regedit.ps1\", \n  \"/ansible/modules/windows/win_regedit.py\": \"lib/ansible/modules/windows/win_regedit.py\", \n  \"/ansible/modules/windows/win_region.ps1\": \"lib/ansible/modules/windows/win_region.ps1\", \n  \"/ansible/modules/windows/win_region.py\": \"lib/ansible/modules/windows/win_region.py\", \n  \"/ansible/modules/windows/win_regmerge.ps1\": \"lib/ansible/modules/windows/win_regmerge.ps1\", \n  \"/ansible/modules/windows/win_regmerge.py\": \"lib/ansible/modules/windows/win_regmerge.py\", \n  \"/ansible/modules/windows/win_robocopy.ps1\": \"lib/ansible/modules/windows/win_robocopy.ps1\", \n  \"/ansible/modules/windows/win_robocopy.py\": \"lib/ansible/modules/windows/win_robocopy.py\", \n  \"/ansible/modules/windows/win_route.ps1\": \"lib/ansible/modules/windows/win_route.ps1\", \n  \"/ansible/modules/windows/win_route.py\": \"lib/ansible/modules/windows/win_route.py\", \n  \"/ansible/modules/windows/win_say.ps1\": \"lib/ansible/modules/windows/win_say.ps1\", \n  \"/ansible/modules/windows/win_say.py\": \"lib/ansible/modules/windows/win_say.py\", \n  \"/ansible/modules/windows/win_scheduled_task.ps1\": \"lib/ansible/modules/windows/win_scheduled_task.ps1\", \n  \"/ansible/modules/windows/win_scheduled_task.py\": \"lib/ansible/modules/windows/win_scheduled_task.py\", \n  \"/ansible/modules/windows/win_scheduled_task_stat.ps1\": \"lib/ansible/modules/windows/win_scheduled_task_stat.ps1\", \n  \"/ansible/modules/windows/win_scheduled_task_stat.py\": \"lib/ansible/modules/windows/win_scheduled_task_stat.py\", \n  \"/ansible/modules/windows/win_security_policy.ps1\": \"lib/ansible/modules/windows/win_security_policy.ps1\", \n  \"/ansible/modules/windows/win_security_policy.py\": \"lib/ansible/modules/windows/win_security_policy.py\", \n  \"/ansible/modules/windows/win_service.ps1\": \"lib/ansible/modules/windows/win_service.ps1\", \n  \"/ansible/modules/windows/win_service.py\": \"lib/ansible/modules/windows/win_service.py\", \n  \"/ansible/modules/windows/win_share.ps1\": \"lib/ansible/modules/windows/win_share.ps1\", \n  \"/ansible/modules/windows/win_share.py\": \"lib/ansible/modules/windows/win_share.py\", \n  \"/ansible/modules/windows/win_shell.ps1\": \"lib/ansible/modules/windows/win_shell.ps1\", \n  \"/ansible/modules/windows/win_shell.py\": \"lib/ansible/modules/windows/win_shell.py\", \n  \"/ansible/modules/windows/win_shortcut.ps1\": \"lib/ansible/modules/windows/win_shortcut.ps1\", \n  \"/ansible/modules/windows/win_shortcut.py\": \"lib/ansible/modules/windows/win_shortcut.py\", \n  \"/ansible/modules/windows/win_stat.ps1\": \"lib/ansible/modules/windows/win_stat.ps1\", \n  \"/ansible/modules/windows/win_stat.py\": \"lib/ansible/modules/windows/win_stat.py\", \n  \"/ansible/modules/windows/win_tempfile.ps1\": \"lib/ansible/modules/windows/win_tempfile.ps1\", \n  \"/ansible/modules/windows/win_tempfile.py\": \"lib/ansible/modules/windows/win_tempfile.py\", \n  \"/ansible/modules/windows/win_template.py\": \"lib/ansible/modules/windows/win_template.py\", \n  \"/ansible/modules/windows/win_timezone.ps1\": \"lib/ansible/modules/windows/win_timezone.ps1\", \n  \"/ansible/modules/windows/win_timezone.py\": \"lib/ansible/modules/windows/win_timezone.py\", \n  \"/ansible/modules/windows/win_toast.ps1\": \"lib/ansible/modules/windows/win_toast.ps1\", \n  \"/ansible/modules/windows/win_toast.py\": \"lib/ansible/modules/windows/win_toast.py\", \n  \"/ansible/modules/windows/win_unzip.ps1\": \"lib/ansible/modules/windows/win_unzip.ps1\", \n  \"/ansible/modules/windows/win_unzip.py\": \"lib/ansible/modules/windows/win_unzip.py\", \n  \"/ansible/modules/windows/win_updates.ps1\": \"lib/ansible/modules/windows/win_updates.ps1\", \n  \"/ansible/modules/windows/win_updates.py\": \"lib/ansible/modules/windows/win_updates.py\", \n  \"/ansible/modules/windows/win_uri.ps1\": \"lib/ansible/modules/windows/win_uri.ps1\", \n  \"/ansible/modules/windows/win_uri.py\": \"lib/ansible/modules/windows/win_uri.py\", \n  \"/ansible/modules/windows/win_user.ps1\": \"lib/ansible/modules/windows/win_user.ps1\", \n  \"/ansible/modules/windows/win_user.py\": \"lib/ansible/modules/windows/win_user.py\", \n  \"/ansible/modules/windows/win_user_right.ps1\": \"lib/ansible/modules/windows/win_user_right.ps1\", \n  \"/ansible/modules/windows/win_user_right.py\": \"lib/ansible/modules/windows/win_user_right.py\", \n  \"/ansible/modules/windows/win_wait_for.ps1\": \"lib/ansible/modules/windows/win_wait_for.ps1\", \n  \"/ansible/modules/windows/win_wait_for.py\": \"lib/ansible/modules/windows/win_wait_for.py\", \n  \"/ansible/modules/windows/win_wakeonlan.ps1\": \"lib/ansible/modules/windows/win_wakeonlan.ps1\", \n  \"/ansible/modules/windows/win_wakeonlan.py\": \"lib/ansible/modules/windows/win_wakeonlan.py\", \n  \"/ansible/modules/windows/win_webpicmd.ps1\": \"lib/ansible/modules/windows/win_webpicmd.ps1\", \n  \"/ansible/modules/windows/win_webpicmd.py\": \"lib/ansible/modules/windows/win_webpicmd.py\", \n  \"/lib/ansible/module_utils/shell.py\\n```\\nclass Shell(object):\\ndef receive(self, cmd=None):\\n```\": [], \n  \"/lib/ansible/module_utils/urls.py\": [], \n  \"/modules/cloud/amazon/GUIDELINES.md\": \"lib/ansible/modules/cloud/amazon/GUIDELINES.md\", \n  \"/modules/cloud/amazon/_ec2_ami_search.py\": \"lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\", \n  \"/modules/cloud/amazon/_ec2_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\", \n  \"/modules/cloud/amazon/_ec2_remote_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\", \n  \"/modules/cloud/amazon/_ec2_vpc.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n  \"/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\", \n  \"/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\", \n  \"/modules/cloud/amazon/_iam_cert_facts.py\": \"lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\", \n  \"/modules/cloud/amazon/_s3.py\": \"lib/ansible/modules/cloud/amazon/_s3.py\", \n  \"/modules/cloud/amazon/aws_acm_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_acm_facts.py\", \n  \"/modules/cloud/amazon/aws_api_gateway.py\": \"lib/ansible/modules/cloud/amazon/aws_api_gateway.py\", \n  \"/modules/cloud/amazon/aws_direct_connect_connection.py\": \"lib/ansible/modules/cloud/amazon/aws_direct_connect_connection.py\", \n  \"/modules/cloud/amazon/aws_direct_connect_link_aggregation_group.py\": \"lib/ansible/modules/cloud/amazon/aws_direct_connect_link_aggregation_group.py\", \n  \"/modules/cloud/amazon/aws_kms.py\": \"lib/ansible/modules/cloud/amazon/aws_kms.py\", \n  \"/modules/cloud/amazon/aws_kms_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_kms_facts.py\", \n  \"/modules/cloud/amazon/aws_s3.py\": \"lib/ansible/modules/cloud/amazon/aws_s3.py\", \n  \"/modules/cloud/amazon/aws_s3_bucket_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_s3_bucket_facts.py\", \n  \"/modules/cloud/amazon/aws_ssm_parameter_store.py\": \"lib/ansible/modules/cloud/amazon/aws_ssm_parameter_store.py\", \n  \"/modules/cloud/amazon/aws_waf_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_waf_facts.py\", \n  \"/modules/cloud/amazon/cloudformation.py\": \"lib/ansible/modules/cloud/amazon/cloudformation.py\", \n  \"/modules/cloud/amazon/cloudformation_facts.py\": \"lib/ansible/modules/cloud/amazon/cloudformation_facts.py\", \n  \"/modules/cloud/amazon/cloudfront_facts.py\": \"lib/ansible/modules/cloud/amazon/cloudfront_facts.py\", \n  \"/modules/cloud/amazon/cloudtrail.py\": \"lib/ansible/modules/cloud/amazon/cloudtrail.py\", \n  \"/modules/cloud/amazon/cloudwatchevent_rule.py\": \"lib/ansible/modules/cloud/amazon/cloudwatchevent_rule.py\", \n  \"/modules/cloud/amazon/data_pipeline.py\": \"lib/ansible/modules/cloud/amazon/data_pipeline.py\", \n  \"/modules/cloud/amazon/dynamodb_table.py\": \"lib/ansible/modules/cloud/amazon/dynamodb_table.py\", \n  \"/modules/cloud/amazon/dynamodb_ttl.py\": \"lib/ansible/modules/cloud/amazon/dynamodb_ttl.py\", \n  \"/modules/cloud/amazon/ec2.py\": \"lib/ansible/modules/cloud/amazon/ec2.py\", \n  \"/modules/cloud/amazon/ec2_ami.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami.py\", \n  \"/modules/cloud/amazon/ec2_ami_copy.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami_copy.py\", \n  \"/modules/cloud/amazon/ec2_ami_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami_facts.py\", \n  \"/modules/cloud/amazon/ec2_ami_find.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami_find.py\", \n  \"/modules/cloud/amazon/ec2_ami_search.py\": \"lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\", \n  \"/modules/cloud/amazon/ec2_asg.py\": \"lib/ansible/modules/cloud/amazon/ec2_asg.py\", \n  \"/modules/cloud/amazon/ec2_asg_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_asg_facts.py\", \n  \"/modules/cloud/amazon/ec2_customer_gateway.py\": \"lib/ansible/modules/cloud/amazon/ec2_customer_gateway.py\", \n  \"/modules/cloud/amazon/ec2_eip.py\": \"lib/ansible/modules/cloud/amazon/ec2_eip.py\", \n  \"/modules/cloud/amazon/ec2_elb.py\": \"lib/ansible/modules/cloud/amazon/ec2_elb.py\", \n  \"/modules/cloud/amazon/ec2_elb_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_elb_facts.py\", \n  \"/modules/cloud/amazon/ec2_elb_lb.py\": \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\", \n  \"/modules/cloud/amazon/ec2_eni.py\": \"lib/ansible/modules/cloud/amazon/ec2_eni.py\", \n  \"/modules/cloud/amazon/ec2_eni_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_eni_facts.py\", \n  \"/modules/cloud/amazon/ec2_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\", \n  \"/modules/cloud/amazon/ec2_group.py\": \"lib/ansible/modules/cloud/amazon/ec2_group.py\", \n  \"/modules/cloud/amazon/ec2_group_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_group_facts.py\", \n  \"/modules/cloud/amazon/ec2_instance_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_instance_facts.py\", \n  \"/modules/cloud/amazon/ec2_key.py\": \"lib/ansible/modules/cloud/amazon/ec2_key.py\", \n  \"/modules/cloud/amazon/ec2_lc.py\": \"lib/ansible/modules/cloud/amazon/ec2_lc.py\", \n  \"/modules/cloud/amazon/ec2_lc_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_lc_facts.py\", \n  \"/modules/cloud/amazon/ec2_lc_find.py\": \"lib/ansible/modules/cloud/amazon/ec2_lc_find.py\", \n  \"/modules/cloud/amazon/ec2_metadata_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_metadata_facts.py\", \n  \"/modules/cloud/amazon/ec2_metric_alarm.py\": \"lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py\", \n  \"/modules/cloud/amazon/ec2_remote_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\", \n  \"/modules/cloud/amazon/ec2_scaling_policy.py\": \"lib/ansible/modules/cloud/amazon/ec2_scaling_policy.py\", \n  \"/modules/cloud/amazon/ec2_snapshot.py\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot.py\", \n  \"/modules/cloud/amazon/ec2_snapshot_copy.py\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot_copy.py\", \n  \"/modules/cloud/amazon/ec2_snapshot_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot_facts.py\", \n  \"/modules/cloud/amazon/ec2_tag.py\": \"lib/ansible/modules/cloud/amazon/ec2_tag.py\", \n  \"/modules/cloud/amazon/ec2_vol.py\": \"lib/ansible/modules/cloud/amazon/ec2_vol.py\", \n  \"/modules/cloud/amazon/ec2_vol_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vol_facts.py\", \n  \"/modules/cloud/amazon/ec2_vpc.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n  \"/modules/cloud/amazon/ec2_vpc_dhcp_option.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option.py\", \n  \"/modules/cloud/amazon/ec2_vpc_dhcp_option_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option_facts.py\", \n  \"/modules/cloud/amazon/ec2_vpc_dhcp_options.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\", \n  \"/modules/cloud/amazon/ec2_vpc_dhcp_options_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\", \n  \"/modules/cloud/amazon/ec2_vpc_endpoint.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint.py\", \n  \"/modules/cloud/amazon/ec2_vpc_endpoint_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint_facts.py\", \n  \"/modules/cloud/amazon/ec2_vpc_igw.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw.py\", \n  \"/modules/cloud/amazon/ec2_vpc_igw_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw_facts.py\", \n  \"/modules/cloud/amazon/ec2_vpc_nacl.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl.py\", \n  \"/modules/cloud/amazon/ec2_vpc_nacl_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl_facts.py\", \n  \"/modules/cloud/amazon/ec2_vpc_nat_gateway.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway.py\", \n  \"/modules/cloud/amazon/ec2_vpc_nat_gateway_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway_facts.py\", \n  \"/modules/cloud/amazon/ec2_vpc_net.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_net.py\", \n  \"/modules/cloud/amazon/ec2_vpc_net_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_net_facts.py\", \n  \"/modules/cloud/amazon/ec2_vpc_peer.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peer.py\", \n  \"/modules/cloud/amazon/ec2_vpc_peering_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peering_facts.py\", \n  \"/modules/cloud/amazon/ec2_vpc_route_table.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\", \n  \"/modules/cloud/amazon/ec2_vpc_route_table_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table_facts.py\", \n  \"/modules/cloud/amazon/ec2_vpc_subnet.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet.py\", \n  \"/modules/cloud/amazon/ec2_vpc_subnet_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet_facts.py\", \n  \"/modules/cloud/amazon/ec2_vpc_vgw.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw.py\", \n  \"/modules/cloud/amazon/ec2_vpc_vgw_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw_facts.py\", \n  \"/modules/cloud/amazon/ec2_vpc_vpn.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vpn.py\", \n  \"/modules/cloud/amazon/ec2_win_password.py\": \"lib/ansible/modules/cloud/amazon/ec2_win_password.py\", \n  \"/modules/cloud/amazon/ecs_attribute.py\": \"lib/ansible/modules/cloud/amazon/ecs_attribute.py\", \n  \"/modules/cloud/amazon/ecs_cluster.py\": \"lib/ansible/modules/cloud/amazon/ecs_cluster.py\", \n  \"/modules/cloud/amazon/ecs_ecr.py\": \"lib/ansible/modules/cloud/amazon/ecs_ecr.py\", \n  \"/modules/cloud/amazon/ecs_service.py\": \"lib/ansible/modules/cloud/amazon/ecs_service.py\", \n  \"/modules/cloud/amazon/ecs_service_facts.py\": \"lib/ansible/modules/cloud/amazon/ecs_service_facts.py\", \n  \"/modules/cloud/amazon/ecs_task.py\": \"lib/ansible/modules/cloud/amazon/ecs_task.py\", \n  \"/modules/cloud/amazon/ecs_taskdefinition.py\": \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py\", \n  \"/modules/cloud/amazon/ecs_taskdefinition_facts.py\": \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition_facts.py\", \n  \"/modules/cloud/amazon/efs.py\": \"lib/ansible/modules/cloud/amazon/efs.py\", \n  \"/modules/cloud/amazon/efs_facts.py\": \"lib/ansible/modules/cloud/amazon/efs_facts.py\", \n  \"/modules/cloud/amazon/elasticache.py\": \"lib/ansible/modules/cloud/amazon/elasticache.py\", \n  \"/modules/cloud/amazon/elasticache_parameter_group.py\": \"lib/ansible/modules/cloud/amazon/elasticache_parameter_group.py\", \n  \"/modules/cloud/amazon/elasticache_snapshot.py\": \"lib/ansible/modules/cloud/amazon/elasticache_snapshot.py\", \n  \"/modules/cloud/amazon/elasticache_subnet_group.py\": \"lib/ansible/modules/cloud/amazon/elasticache_subnet_group.py\", \n  \"/modules/cloud/amazon/elb_application_lb.py\": \"lib/ansible/modules/cloud/amazon/elb_application_lb.py\", \n  \"/modules/cloud/amazon/elb_application_lb_facts.py\": \"lib/ansible/modules/cloud/amazon/elb_application_lb_facts.py\", \n  \"/modules/cloud/amazon/elb_classic_lb.py\": \"lib/ansible/modules/cloud/amazon/elb_classic_lb.py\", \n  \"/modules/cloud/amazon/elb_classic_lb_facts.py\": \"lib/ansible/modules/cloud/amazon/elb_classic_lb_facts.py\", \n  \"/modules/cloud/amazon/elb_instance.py\": \"lib/ansible/modules/cloud/amazon/elb_instance.py\", \n  \"/modules/cloud/amazon/elb_target_group.py\": \"lib/ansible/modules/cloud/amazon/elb_target_group.py\", \n  \"/modules/cloud/amazon/elb_target_group_facts.py\": \"lib/ansible/modules/cloud/amazon/elb_target_group_facts.py\", \n  \"/modules/cloud/amazon/execute_lambda.py\": \"lib/ansible/modules/cloud/amazon/execute_lambda.py\", \n  \"/modules/cloud/amazon/iam.py\": \"lib/ansible/modules/cloud/amazon/iam.py\", \n  \"/modules/cloud/amazon/iam_cert.py\": \"lib/ansible/modules/cloud/amazon/iam_cert.py\", \n  \"/modules/cloud/amazon/iam_cert_facts.py\": \"lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\", \n  \"/modules/cloud/amazon/iam_group.py\": \"lib/ansible/modules/cloud/amazon/iam_group.py\", \n  \"/modules/cloud/amazon/iam_managed_policy.py\": \"lib/ansible/modules/cloud/amazon/iam_managed_policy.py\", \n  \"/modules/cloud/amazon/iam_mfa_device_facts.py\": \"lib/ansible/modules/cloud/amazon/iam_mfa_device_facts.py\", \n  \"/modules/cloud/amazon/iam_policy.py\": \"lib/ansible/modules/cloud/amazon/iam_policy.py\", \n  \"/modules/cloud/amazon/iam_role.py\": \"lib/ansible/modules/cloud/amazon/iam_role.py\", \n  \"/modules/cloud/amazon/iam_server_certificate_facts.py\": \"lib/ansible/modules/cloud/amazon/iam_server_certificate_facts.py\", \n  \"/modules/cloud/amazon/kinesis_stream.py\": \"lib/ansible/modules/cloud/amazon/kinesis_stream.py\", \n  \"/modules/cloud/amazon/lambda.py\": \"lib/ansible/modules/cloud/amazon/lambda.py\", \n  \"/modules/cloud/amazon/lambda_alias.py\": \"lib/ansible/modules/cloud/amazon/lambda_alias.py\", \n  \"/modules/cloud/amazon/lambda_event.py\": \"lib/ansible/modules/cloud/amazon/lambda_event.py\", \n  \"/modules/cloud/amazon/lambda_facts.py\": \"lib/ansible/modules/cloud/amazon/lambda_facts.py\", \n  \"/modules/cloud/amazon/lambda_policy.py\": \"lib/ansible/modules/cloud/amazon/lambda_policy.py\", \n  \"/modules/cloud/amazon/lightsail.py\": \"lib/ansible/modules/cloud/amazon/lightsail.py\", \n  \"/modules/cloud/amazon/rds.py\": \"lib/ansible/modules/cloud/amazon/rds.py\", \n  \"/modules/cloud/amazon/rds_param_group.py\": \"lib/ansible/modules/cloud/amazon/rds_param_group.py\", \n  \"/modules/cloud/amazon/rds_subnet_group.py\": \"lib/ansible/modules/cloud/amazon/rds_subnet_group.py\", \n  \"/modules/cloud/amazon/redshift.py\": \"lib/ansible/modules/cloud/amazon/redshift.py\", \n  \"/modules/cloud/amazon/redshift_facts.py\": \"lib/ansible/modules/cloud/amazon/redshift_facts.py\", \n  \"/modules/cloud/amazon/redshift_subnet_group.py\": \"lib/ansible/modules/cloud/amazon/redshift_subnet_group.py\", \n  \"/modules/cloud/amazon/route53.py\": \"lib/ansible/modules/cloud/amazon/route53.py\", \n  \"/modules/cloud/amazon/route53_facts.py\": \"lib/ansible/modules/cloud/amazon/route53_facts.py\", \n  \"/modules/cloud/amazon/route53_health_check.py\": \"lib/ansible/modules/cloud/amazon/route53_health_check.py\", \n  \"/modules/cloud/amazon/route53_zone.py\": \"lib/ansible/modules/cloud/amazon/route53_zone.py\", \n  \"/modules/cloud/amazon/s3.py\": \"lib/ansible/modules/cloud/amazon/_s3.py\", \n  \"/modules/cloud/amazon/s3_bucket.py\": \"lib/ansible/modules/cloud/amazon/s3_bucket.py\", \n  \"/modules/cloud/amazon/s3_lifecycle.py\": \"lib/ansible/modules/cloud/amazon/s3_lifecycle.py\", \n  \"/modules/cloud/amazon/s3_logging.py\": \"lib/ansible/modules/cloud/amazon/s3_logging.py\", \n  \"/modules/cloud/amazon/s3_sync.py\": \"lib/ansible/modules/cloud/amazon/s3_sync.py\", \n  \"/modules/cloud/amazon/s3_website.py\": \"lib/ansible/modules/cloud/amazon/s3_website.py\", \n  \"/modules/cloud/amazon/sns.py\": \"lib/ansible/modules/cloud/amazon/sns.py\", \n  \"/modules/cloud/amazon/sns_topic.py\": \"lib/ansible/modules/cloud/amazon/sns_topic.py\", \n  \"/modules/cloud/amazon/sqs_queue.py\": \"lib/ansible/modules/cloud/amazon/sqs_queue.py\", \n  \"/modules/cloud/amazon/sts_assume_role.py\": \"lib/ansible/modules/cloud/amazon/sts_assume_role.py\", \n  \"/modules/cloud/amazon/sts_session_token.py\": \"lib/ansible/modules/cloud/amazon/sts_session_token.py\", \n  \"/modules/cloud/atomic/atomic_container.py\": \"lib/ansible/modules/cloud/atomic/atomic_container.py\", \n  \"/modules/cloud/atomic/atomic_host.py\": \"lib/ansible/modules/cloud/atomic/atomic_host.py\", \n  \"/modules/cloud/atomic/atomic_image.py\": \"lib/ansible/modules/cloud/atomic/atomic_image.py\", \n  \"/modules/cloud/azure/_azure.py\": \"lib/ansible/modules/cloud/azure/_azure.py\", \n  \"/modules/cloud/azure/azure.py\": \"lib/ansible/modules/cloud/azure/_azure.py\", \n  \"/modules/cloud/azure/azure_rm_acs.py\": \"lib/ansible/modules/cloud/azure/azure_rm_acs.py\", \n  \"/modules/cloud/azure/azure_rm_availabilityset.py\": \"lib/ansible/modules/cloud/azure/azure_rm_availabilityset.py\", \n  \"/modules/cloud/azure/azure_rm_availabilityset_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_availabilityset_facts.py\", \n  \"/modules/cloud/azure/azure_rm_deployment.py\": \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\", \n  \"/modules/cloud/azure/azure_rm_dnsrecordset.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset.py\", \n  \"/modules/cloud/azure/azure_rm_dnsrecordset_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset_facts.py\", \n  \"/modules/cloud/azure/azure_rm_dnszone.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnszone.py\", \n  \"/modules/cloud/azure/azure_rm_dnszone_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnszone_facts.py\", \n  \"/modules/cloud/azure/azure_rm_functionapp.py\": \"lib/ansible/modules/cloud/azure/azure_rm_functionapp.py\", \n  \"/modules/cloud/azure/azure_rm_functionapp_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_functionapp_facts.py\", \n  \"/modules/cloud/azure/azure_rm_loadbalancer.py\": \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer.py\", \n  \"/modules/cloud/azure/azure_rm_loadbalancer_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer_facts.py\", \n  \"/modules/cloud/azure/azure_rm_managed_disk.py\": \"lib/ansible/modules/cloud/azure/azure_rm_managed_disk.py\", \n  \"/modules/cloud/azure/azure_rm_managed_disk_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_managed_disk_facts.py\", \n  \"/modules/cloud/azure/azure_rm_networkinterface.py\": \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface.py\", \n  \"/modules/cloud/azure/azure_rm_networkinterface_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface_facts.py\", \n  \"/modules/cloud/azure/azure_rm_publicipaddress.py\": \"lib/ansible/modules/cloud/azure/azure_rm_publicipaddress.py\", \n  \"/modules/cloud/azure/azure_rm_publicipaddress_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_publicipaddress_facts.py\", \n  \"/modules/cloud/azure/azure_rm_resourcegroup.py\": \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup.py\", \n  \"/modules/cloud/azure/azure_rm_resourcegroup_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup_facts.py\", \n  \"/modules/cloud/azure/azure_rm_securitygroup.py\": \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup.py\", \n  \"/modules/cloud/azure/azure_rm_securitygroup_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup_facts.py\", \n  \"/modules/cloud/azure/azure_rm_storageaccount.py\": \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount.py\", \n  \"/modules/cloud/azure/azure_rm_storageaccount_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount_facts.py\", \n  \"/modules/cloud/azure/azure_rm_storageblob.py\": \"lib/ansible/modules/cloud/azure/azure_rm_storageblob.py\", \n  \"/modules/cloud/azure/azure_rm_subnet.py\": \"lib/ansible/modules/cloud/azure/azure_rm_subnet.py\", \n  \"/modules/cloud/azure/azure_rm_virtualmachine.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\", \n  \"/modules/cloud/azure/azure_rm_virtualmachine_extension.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_extension.py\", \n  \"/modules/cloud/azure/azure_rm_virtualmachine_scaleset.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset.py\", \n  \"/modules/cloud/azure/azure_rm_virtualmachine_scaleset_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset_facts.py\", \n  \"/modules/cloud/azure/azure_rm_virtualmachineimage_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachineimage_facts.py\", \n  \"/modules/cloud/azure/azure_rm_virtualnetwork.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork.py\", \n  \"/modules/cloud/azure/azure_rm_virtualnetwork_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork_facts.py\", \n  \"/modules/cloud/centurylink/clc_aa_policy.py\": \"lib/ansible/modules/cloud/centurylink/clc_aa_policy.py\", \n  \"/modules/cloud/centurylink/clc_alert_policy.py\": \"lib/ansible/modules/cloud/centurylink/clc_alert_policy.py\", \n  \"/modules/cloud/centurylink/clc_blueprint_package.py\": \"lib/ansible/modules/cloud/centurylink/clc_blueprint_package.py\", \n  \"/modules/cloud/centurylink/clc_firewall_policy.py\": \"lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py\", \n  \"/modules/cloud/centurylink/clc_group.py\": \"lib/ansible/modules/cloud/centurylink/clc_group.py\", \n  \"/modules/cloud/centurylink/clc_loadbalancer.py\": \"lib/ansible/modules/cloud/centurylink/clc_loadbalancer.py\", \n  \"/modules/cloud/centurylink/clc_modify_server.py\": \"lib/ansible/modules/cloud/centurylink/clc_modify_server.py\", \n  \"/modules/cloud/centurylink/clc_publicip.py\": \"lib/ansible/modules/cloud/centurylink/clc_publicip.py\", \n  \"/modules/cloud/centurylink/clc_server.py\": \"lib/ansible/modules/cloud/centurylink/clc_server.py\", \n  \"/modules/cloud/centurylink/clc_server_snapshot.py\": \"lib/ansible/modules/cloud/centurylink/clc_server_snapshot.py\", \n  \"/modules/cloud/cloudscale/cloudscale_server.py\": \"lib/ansible/modules/cloud/cloudscale/cloudscale_server.py\", \n  \"/modules/cloud/cloudstack/_cs_nic.py\": \"lib/ansible/modules/cloud/cloudstack/_cs_nic.py\", \n  \"/modules/cloud/cloudstack/cs_account.py\": \"lib/ansible/modules/cloud/cloudstack/cs_account.py\", \n  \"/modules/cloud/cloudstack/cs_affinitygroup.py\": \"lib/ansible/modules/cloud/cloudstack/cs_affinitygroup.py\", \n  \"/modules/cloud/cloudstack/cs_cluster.py\": \"lib/ansible/modules/cloud/cloudstack/cs_cluster.py\", \n  \"/modules/cloud/cloudstack/cs_configuration.py\": \"lib/ansible/modules/cloud/cloudstack/cs_configuration.py\", \n  \"/modules/cloud/cloudstack/cs_domain.py\": \"lib/ansible/modules/cloud/cloudstack/cs_domain.py\", \n  \"/modules/cloud/cloudstack/cs_facts.py\": \"lib/ansible/modules/cloud/cloudstack/cs_facts.py\", \n  \"/modules/cloud/cloudstack/cs_firewall.py\": \"lib/ansible/modules/cloud/cloudstack/cs_firewall.py\", \n  \"/modules/cloud/cloudstack/cs_host.py\": \"lib/ansible/modules/cloud/cloudstack/cs_host.py\", \n  \"/modules/cloud/cloudstack/cs_instance.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance.py\", \n  \"/modules/cloud/cloudstack/cs_instance_facts.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_facts.py\", \n  \"/modules/cloud/cloudstack/cs_instance_nic.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_nic.py\", \n  \"/modules/cloud/cloudstack/cs_instance_nic_secondaryip.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_nic_secondaryip.py\", \n  \"/modules/cloud/cloudstack/cs_instancegroup.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instancegroup.py\", \n  \"/modules/cloud/cloudstack/cs_ip_address.py\": \"lib/ansible/modules/cloud/cloudstack/cs_ip_address.py\", \n  \"/modules/cloud/cloudstack/cs_iso.py\": \"lib/ansible/modules/cloud/cloudstack/cs_iso.py\", \n  \"/modules/cloud/cloudstack/cs_loadbalancer_rule.py\": \"lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule.py\", \n  \"/modules/cloud/cloudstack/cs_loadbalancer_rule_member.py\": \"lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule_member.py\", \n  \"/modules/cloud/cloudstack/cs_network.py\": \"lib/ansible/modules/cloud/cloudstack/cs_network.py\", \n  \"/modules/cloud/cloudstack/cs_network_acl.py\": \"lib/ansible/modules/cloud/cloudstack/cs_network_acl.py\", \n  \"/modules/cloud/cloudstack/cs_network_acl_rule.py\": \"lib/ansible/modules/cloud/cloudstack/cs_network_acl_rule.py\", \n  \"/modules/cloud/cloudstack/cs_nic.py\": \"lib/ansible/modules/cloud/cloudstack/_cs_nic.py\", \n  \"/modules/cloud/cloudstack/cs_pod.py\": \"lib/ansible/modules/cloud/cloudstack/cs_pod.py\", \n  \"/modules/cloud/cloudstack/cs_portforward.py\": \"lib/ansible/modules/cloud/cloudstack/cs_portforward.py\", \n  \"/modules/cloud/cloudstack/cs_project.py\": \"lib/ansible/modules/cloud/cloudstack/cs_project.py\", \n  \"/modules/cloud/cloudstack/cs_region.py\": \"lib/ansible/modules/cloud/cloudstack/cs_region.py\", \n  \"/modules/cloud/cloudstack/cs_resourcelimit.py\": \"lib/ansible/modules/cloud/cloudstack/cs_resourcelimit.py\", \n  \"/modules/cloud/cloudstack/cs_role.py\": \"lib/ansible/modules/cloud/cloudstack/cs_role.py\", \n  \"/modules/cloud/cloudstack/cs_router.py\": \"lib/ansible/modules/cloud/cloudstack/cs_router.py\", \n  \"/modules/cloud/cloudstack/cs_securitygroup.py\": \"lib/ansible/modules/cloud/cloudstack/cs_securitygroup.py\", \n  \"/modules/cloud/cloudstack/cs_securitygroup_rule.py\": \"lib/ansible/modules/cloud/cloudstack/cs_securitygroup_rule.py\", \n  \"/modules/cloud/cloudstack/cs_snapshot_policy.py\": \"lib/ansible/modules/cloud/cloudstack/cs_snapshot_policy.py\", \n  \"/modules/cloud/cloudstack/cs_sshkeypair.py\": \"lib/ansible/modules/cloud/cloudstack/cs_sshkeypair.py\", \n  \"/modules/cloud/cloudstack/cs_staticnat.py\": \"lib/ansible/modules/cloud/cloudstack/cs_staticnat.py\", \n  \"/modules/cloud/cloudstack/cs_storage_pool.py\": \"lib/ansible/modules/cloud/cloudstack/cs_storage_pool.py\", \n  \"/modules/cloud/cloudstack/cs_template.py\": \"lib/ansible/modules/cloud/cloudstack/cs_template.py\", \n  \"/modules/cloud/cloudstack/cs_user.py\": \"lib/ansible/modules/cloud/cloudstack/cs_user.py\", \n  \"/modules/cloud/cloudstack/cs_vmsnapshot.py\": \"lib/ansible/modules/cloud/cloudstack/cs_vmsnapshot.py\", \n  \"/modules/cloud/cloudstack/cs_volume.py\": \"lib/ansible/modules/cloud/cloudstack/cs_volume.py\", \n  \"/modules/cloud/cloudstack/cs_vpc.py\": \"lib/ansible/modules/cloud/cloudstack/cs_vpc.py\", \n  \"/modules/cloud/cloudstack/cs_vpn_gateway.py\": \"lib/ansible/modules/cloud/cloudstack/cs_vpn_gateway.py\", \n  \"/modules/cloud/cloudstack/cs_zone.py\": \"lib/ansible/modules/cloud/cloudstack/cs_zone.py\", \n  \"/modules/cloud/cloudstack/cs_zone_facts.py\": \"lib/ansible/modules/cloud/cloudstack/cs_zone_facts.py\", \n  \"/modules/cloud/digital_ocean/digital_ocean.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean.py\", \n  \"/modules/cloud/digital_ocean/digital_ocean_block_storage.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_block_storage.py\", \n  \"/modules/cloud/digital_ocean/digital_ocean_domain.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_domain.py\", \n  \"/modules/cloud/digital_ocean/digital_ocean_floating_ip.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_floating_ip.py\", \n  \"/modules/cloud/digital_ocean/digital_ocean_sshkey.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey.py\", \n  \"/modules/cloud/digital_ocean/digital_ocean_sshkey_facts.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey_facts.py\", \n  \"/modules/cloud/digital_ocean/digital_ocean_tag.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_tag.py\", \n  \"/modules/cloud/dimensiondata/dimensiondata_network.py\": \"lib/ansible/modules/cloud/dimensiondata/dimensiondata_network.py\", \n  \"/modules/cloud/docker/_docker.py\": \"lib/ansible/modules/cloud/docker/_docker.py\", \n  \"/modules/cloud/docker/docker.py\": \"lib/ansible/modules/cloud/docker/_docker.py\", \n  \"/modules/cloud/docker/docker_container.py\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n  \"/modules/cloud/docker/docker_image.py\": \"lib/ansible/modules/cloud/docker/docker_image.py\", \n  \"/modules/cloud/docker/docker_image_facts.py\": \"lib/ansible/modules/cloud/docker/docker_image_facts.py\", \n  \"/modules/cloud/docker/docker_login.py\": \"lib/ansible/modules/cloud/docker/docker_login.py\", \n  \"/modules/cloud/docker/docker_network.py\": \"lib/ansible/modules/cloud/docker/docker_network.py\", \n  \"/modules/cloud/docker/docker_secret.py\": \"lib/ansible/modules/cloud/docker/docker_secret.py\", \n  \"/modules/cloud/docker/docker_service.py\": \"lib/ansible/modules/cloud/docker/docker_service.py\", \n  \"/modules/cloud/docker/docker_volume.py\": \"lib/ansible/modules/cloud/docker/docker_volume.py\", \n  \"/modules/cloud/google/gc_storage.py\": \"lib/ansible/modules/cloud/google/gc_storage.py\", \n  \"/modules/cloud/google/gcdns_record.py\": \"lib/ansible/modules/cloud/google/gcdns_record.py\", \n  \"/modules/cloud/google/gcdns_zone.py\": \"lib/ansible/modules/cloud/google/gcdns_zone.py\", \n  \"/modules/cloud/google/gce.py\": \"lib/ansible/modules/cloud/google/gce.py\", \n  \"/modules/cloud/google/gce_eip.py\": \"lib/ansible/modules/cloud/google/gce_eip.py\", \n  \"/modules/cloud/google/gce_img.py\": \"lib/ansible/modules/cloud/google/gce_img.py\", \n  \"/modules/cloud/google/gce_instance_template.py\": \"lib/ansible/modules/cloud/google/gce_instance_template.py\", \n  \"/modules/cloud/google/gce_labels.py\": \"lib/ansible/modules/cloud/google/gce_labels.py\", \n  \"/modules/cloud/google/gce_lb.py\": \"lib/ansible/modules/cloud/google/gce_lb.py\", \n  \"/modules/cloud/google/gce_mig.py\": \"lib/ansible/modules/cloud/google/gce_mig.py\", \n  \"/modules/cloud/google/gce_net.py\": \"lib/ansible/modules/cloud/google/gce_net.py\", \n  \"/modules/cloud/google/gce_pd.py\": \"lib/ansible/modules/cloud/google/gce_pd.py\", \n  \"/modules/cloud/google/gce_snapshot.py\": \"lib/ansible/modules/cloud/google/gce_snapshot.py\", \n  \"/modules/cloud/google/gce_tag.py\": \"lib/ansible/modules/cloud/google/gce_tag.py\", \n  \"/modules/cloud/google/gcp_backend_service.py\": \"lib/ansible/modules/cloud/google/gcp_backend_service.py\", \n  \"/modules/cloud/google/gcp_forwarding_rule.py\": \"lib/ansible/modules/cloud/google/gcp_forwarding_rule.py\", \n  \"/modules/cloud/google/gcp_healthcheck.py\": \"lib/ansible/modules/cloud/google/gcp_healthcheck.py\", \n  \"/modules/cloud/google/gcp_target_proxy.py\": \"lib/ansible/modules/cloud/google/gcp_target_proxy.py\", \n  \"/modules/cloud/google/gcp_url_map.py\": \"lib/ansible/modules/cloud/google/gcp_url_map.py\", \n  \"/modules/cloud/google/gcpubsub.py\": \"lib/ansible/modules/cloud/google/gcpubsub.py\", \n  \"/modules/cloud/google/gcpubsub_facts.py\": \"lib/ansible/modules/cloud/google/gcpubsub_facts.py\", \n  \"/modules/cloud/google/gcspanner.py\": \"lib/ansible/modules/cloud/google/gcspanner.py\", \n  \"/modules/cloud/linode/linode.py\": \"lib/ansible/modules/cloud/linode/linode.py\", \n  \"/modules/cloud/lxc/lxc_container.py\": \"lib/ansible/modules/cloud/lxc/lxc_container.py\", \n  \"/modules/cloud/lxd/lxd_container.py\": \"lib/ansible/modules/cloud/lxd/lxd_container.py\", \n  \"/modules/cloud/lxd/lxd_profile.py\": \"lib/ansible/modules/cloud/lxd/lxd_profile.py\", \n  \"/modules/cloud/misc/helm.py\": \"lib/ansible/modules/cloud/misc/helm.py\", \n  \"/modules/cloud/misc/ovirt.py\": \"lib/ansible/modules/cloud/misc/ovirt.py\", \n  \"/modules/cloud/misc/proxmox.py\": \"lib/ansible/modules/cloud/misc/proxmox.py\", \n  \"/modules/cloud/misc/proxmox_kvm.py\": \"lib/ansible/modules/cloud/misc/proxmox_kvm.py\", \n  \"/modules/cloud/misc/proxmox_template.py\": \"lib/ansible/modules/cloud/misc/proxmox_template.py\", \n  \"/modules/cloud/misc/rhevm.py\": \"lib/ansible/modules/cloud/misc/rhevm.py\", \n  \"/modules/cloud/misc/serverless.py\": \"lib/ansible/modules/cloud/misc/serverless.py\", \n  \"/modules/cloud/misc/virt.py\": \"lib/ansible/modules/cloud/misc/virt.py\", \n  \"/modules/cloud/misc/virt_net.py\": \"lib/ansible/modules/cloud/misc/virt_net.py\", \n  \"/modules/cloud/misc/virt_pool.py\": \"lib/ansible/modules/cloud/misc/virt_pool.py\", \n  \"/modules/cloud/misc/xenserver_facts.py\": \"lib/ansible/modules/cloud/misc/xenserver_facts.py\", \n  \"/modules/cloud/openstack/README.md\": \"lib/ansible/modules/cloud/openstack/README.md\", \n  \"/modules/cloud/openstack/_os_server_actions.py\": \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n  \"/modules/cloud/openstack/os_auth.py\": \"lib/ansible/modules/cloud/openstack/os_auth.py\", \n  \"/modules/cloud/openstack/os_client_config.py\": \"lib/ansible/modules/cloud/openstack/os_client_config.py\", \n  \"/modules/cloud/openstack/os_flavor_facts.py\": \"lib/ansible/modules/cloud/openstack/os_flavor_facts.py\", \n  \"/modules/cloud/openstack/os_floating_ip.py\": \"lib/ansible/modules/cloud/openstack/os_floating_ip.py\", \n  \"/modules/cloud/openstack/os_group.py\": \"lib/ansible/modules/cloud/openstack/os_group.py\", \n  \"/modules/cloud/openstack/os_image.py\": \"lib/ansible/modules/cloud/openstack/os_image.py\", \n  \"/modules/cloud/openstack/os_image_facts.py\": \"lib/ansible/modules/cloud/openstack/os_image_facts.py\", \n  \"/modules/cloud/openstack/os_ironic.py\": \"lib/ansible/modules/cloud/openstack/os_ironic.py\", \n  \"/modules/cloud/openstack/os_ironic_inspect.py\": \"lib/ansible/modules/cloud/openstack/os_ironic_inspect.py\", \n  \"/modules/cloud/openstack/os_ironic_node.py\": \"lib/ansible/modules/cloud/openstack/os_ironic_node.py\", \n  \"/modules/cloud/openstack/os_keypair.py\": \"lib/ansible/modules/cloud/openstack/os_keypair.py\", \n  \"/modules/cloud/openstack/os_keystone_domain.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_domain.py\", \n  \"/modules/cloud/openstack/os_keystone_domain_facts.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_domain_facts.py\", \n  \"/modules/cloud/openstack/os_keystone_endpoint.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_endpoint.py\", \n  \"/modules/cloud/openstack/os_keystone_role.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_role.py\", \n  \"/modules/cloud/openstack/os_keystone_service.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_service.py\", \n  \"/modules/cloud/openstack/os_network.py\": \"lib/ansible/modules/cloud/openstack/os_network.py\", \n  \"/modules/cloud/openstack/os_networks_facts.py\": \"lib/ansible/modules/cloud/openstack/os_networks_facts.py\", \n  \"/modules/cloud/openstack/os_nova_flavor.py\": \"lib/ansible/modules/cloud/openstack/os_nova_flavor.py\", \n  \"/modules/cloud/openstack/os_nova_host_aggregate.py\": \"lib/ansible/modules/cloud/openstack/os_nova_host_aggregate.py\", \n  \"/modules/cloud/openstack/os_object.py\": \"lib/ansible/modules/cloud/openstack/os_object.py\", \n  \"/modules/cloud/openstack/os_port.py\": \"lib/ansible/modules/cloud/openstack/os_port.py\", \n  \"/modules/cloud/openstack/os_port_facts.py\": \"lib/ansible/modules/cloud/openstack/os_port_facts.py\", \n  \"/modules/cloud/openstack/os_project.py\": \"lib/ansible/modules/cloud/openstack/os_project.py\", \n  \"/modules/cloud/openstack/os_project_facts.py\": \"lib/ansible/modules/cloud/openstack/os_project_facts.py\", \n  \"/modules/cloud/openstack/os_quota.py\": \"lib/ansible/modules/cloud/openstack/os_quota.py\", \n  \"/modules/cloud/openstack/os_recordset.py\": \"lib/ansible/modules/cloud/openstack/os_recordset.py\", \n  \"/modules/cloud/openstack/os_router.py\": \"lib/ansible/modules/cloud/openstack/os_router.py\", \n  \"/modules/cloud/openstack/os_security_group.py\": \"lib/ansible/modules/cloud/openstack/os_security_group.py\", \n  \"/modules/cloud/openstack/os_security_group_rule.py\": \"lib/ansible/modules/cloud/openstack/os_security_group_rule.py\", \n  \"/modules/cloud/openstack/os_server.py\": \"lib/ansible/modules/cloud/openstack/os_server.py\", \n  \"/modules/cloud/openstack/os_server_action.py\": \"lib/ansible/modules/cloud/openstack/os_server_action.py\", \n  \"/modules/cloud/openstack/os_server_actions.py\": \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n  \"/modules/cloud/openstack/os_server_facts.py\": \"lib/ansible/modules/cloud/openstack/os_server_facts.py\", \n  \"/modules/cloud/openstack/os_server_group.py\": \"lib/ansible/modules/cloud/openstack/os_server_group.py\", \n  \"/modules/cloud/openstack/os_server_volume.py\": \"lib/ansible/modules/cloud/openstack/os_server_volume.py\", \n  \"/modules/cloud/openstack/os_stack.py\": \"lib/ansible/modules/cloud/openstack/os_stack.py\", \n  \"/modules/cloud/openstack/os_subnet.py\": \"lib/ansible/modules/cloud/openstack/os_subnet.py\", \n  \"/modules/cloud/openstack/os_subnets_facts.py\": \"lib/ansible/modules/cloud/openstack/os_subnets_facts.py\", \n  \"/modules/cloud/openstack/os_user.py\": \"lib/ansible/modules/cloud/openstack/os_user.py\", \n  \"/modules/cloud/openstack/os_user_facts.py\": \"lib/ansible/modules/cloud/openstack/os_user_facts.py\", \n  \"/modules/cloud/openstack/os_user_group.py\": \"lib/ansible/modules/cloud/openstack/os_user_group.py\", \n  \"/modules/cloud/openstack/os_user_role.py\": \"lib/ansible/modules/cloud/openstack/os_user_role.py\", \n  \"/modules/cloud/openstack/os_volume.py\": \"lib/ansible/modules/cloud/openstack/os_volume.py\", \n  \"/modules/cloud/openstack/os_zone.py\": \"lib/ansible/modules/cloud/openstack/os_zone.py\", \n  \"/modules/cloud/ovh/ovh_ip_loadbalancing_backend.py\": \"lib/ansible/modules/cloud/ovh/ovh_ip_loadbalancing_backend.py\", \n  \"/modules/cloud/ovirt/README.rst\": \"lib/ansible/modules/cloud/ovirt/README.rst\", \n  \"/modules/cloud/ovirt/_ovirt_affinity_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\", \n  \"/modules/cloud/ovirt/_ovirt_affinity_labels.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\", \n  \"/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\", \n  \"/modules/cloud/ovirt/_ovirt_clusters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\", \n  \"/modules/cloud/ovirt/_ovirt_clusters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\", \n  \"/modules/cloud/ovirt/_ovirt_datacenters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\", \n  \"/modules/cloud/ovirt/_ovirt_datacenters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\", \n  \"/modules/cloud/ovirt/_ovirt_disks.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\", \n  \"/modules/cloud/ovirt/_ovirt_external_providers.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\", \n  \"/modules/cloud/ovirt/_ovirt_external_providers_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\", \n  \"/modules/cloud/ovirt/_ovirt_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\", \n  \"/modules/cloud/ovirt/_ovirt_groups_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_affinity_group.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_group.py\", \n  \"/modules/cloud/ovirt/ovirt_affinity_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\", \n  \"/modules/cloud/ovirt/ovirt_affinity_label.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_label.py\", \n  \"/modules/cloud/ovirt/ovirt_affinity_label_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_label_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_affinity_labels.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\", \n  \"/modules/cloud/ovirt/ovirt_affinity_labels_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_api_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_api_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_auth.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_auth.py\", \n  \"/modules/cloud/ovirt/ovirt_cluster.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_cluster.py\", \n  \"/modules/cloud/ovirt/ovirt_cluster_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_cluster_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_clusters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\", \n  \"/modules/cloud/ovirt/ovirt_clusters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_datacenter.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_datacenter.py\", \n  \"/modules/cloud/ovirt/ovirt_datacenter_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_datacenter_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_datacenters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\", \n  \"/modules/cloud/ovirt/ovirt_datacenters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_disk.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_disk.py\", \n  \"/modules/cloud/ovirt/ovirt_disk_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_disk_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_disks.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\", \n  \"/modules/cloud/ovirt/ovirt_external_provider.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_provider.py\", \n  \"/modules/cloud/ovirt/ovirt_external_provider_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_provider_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_external_providers.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\", \n  \"/modules/cloud/ovirt/ovirt_external_providers_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_group.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_group.py\", \n  \"/modules/cloud/ovirt/ovirt_group_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_group_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\", \n  \"/modules/cloud/ovirt/ovirt_groups_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_host_networks.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_networks.py\", \n  \"/modules/cloud/ovirt/ovirt_host_pm.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_pm.py\", \n  \"/modules/cloud/ovirt/ovirt_host_storage_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_storage_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_hosts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts.py\", \n  \"/modules/cloud/ovirt/ovirt_hosts_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_mac_pools.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_mac_pools.py\", \n  \"/modules/cloud/ovirt/ovirt_networks.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_networks.py\", \n  \"/modules/cloud/ovirt/ovirt_networks_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_networks_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_nics.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_nics.py\", \n  \"/modules/cloud/ovirt/ovirt_nics_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_nics_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_permissions.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_permissions.py\", \n  \"/modules/cloud/ovirt/ovirt_permissions_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_permissions_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_quotas.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_quotas.py\", \n  \"/modules/cloud/ovirt/ovirt_quotas_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_quotas_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_scheduling_policies_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_scheduling_policies_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_snapshots.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_snapshots.py\", \n  \"/modules/cloud/ovirt/ovirt_snapshots_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_snapshots_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_storage_connections.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_connections.py\", \n  \"/modules/cloud/ovirt/ovirt_storage_domains.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains.py\", \n  \"/modules/cloud/ovirt/ovirt_storage_domains_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_storage_templates_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_templates_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_storage_vms_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_vms_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_tags.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_tags.py\", \n  \"/modules/cloud/ovirt/ovirt_tags_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_tags_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_templates.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_templates.py\", \n  \"/modules/cloud/ovirt/ovirt_templates_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_templates_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_users.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_users.py\", \n  \"/modules/cloud/ovirt/ovirt_users_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_users_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_vmpools.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vmpools.py\", \n  \"/modules/cloud/ovirt/ovirt_vmpools_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vmpools_facts.py\", \n  \"/modules/cloud/ovirt/ovirt_vms.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms.py\", \n  \"/modules/cloud/ovirt/ovirt_vms_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms_facts.py\", \n  \"/modules/cloud/packet/packet_device.py\": \"lib/ansible/modules/cloud/packet/packet_device.py\", \n  \"/modules/cloud/packet/packet_sshkey.py\": \"lib/ansible/modules/cloud/packet/packet_sshkey.py\", \n  \"/modules/cloud/profitbricks/profitbricks.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks.py\", \n  \"/modules/cloud/profitbricks/profitbricks_datacenter.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_datacenter.py\", \n  \"/modules/cloud/profitbricks/profitbricks_nic.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_nic.py\", \n  \"/modules/cloud/profitbricks/profitbricks_volume.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume.py\", \n  \"/modules/cloud/profitbricks/profitbricks_volume_attachments.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume_attachments.py\", \n  \"/modules/cloud/pubnub/pubnub_blocks.py\": \"lib/ansible/modules/cloud/pubnub/pubnub_blocks.py\", \n  \"/modules/cloud/rackspace/rax.py\": \"lib/ansible/modules/cloud/rackspace/rax.py\", \n  \"/modules/cloud/rackspace/rax_cbs.py\": \"lib/ansible/modules/cloud/rackspace/rax_cbs.py\", \n  \"/modules/cloud/rackspace/rax_cbs_attachments.py\": \"lib/ansible/modules/cloud/rackspace/rax_cbs_attachments.py\", \n  \"/modules/cloud/rackspace/rax_cdb.py\": \"lib/ansible/modules/cloud/rackspace/rax_cdb.py\", \n  \"/modules/cloud/rackspace/rax_cdb_database.py\": \"lib/ansible/modules/cloud/rackspace/rax_cdb_database.py\", \n  \"/modules/cloud/rackspace/rax_cdb_user.py\": \"lib/ansible/modules/cloud/rackspace/rax_cdb_user.py\", \n  \"/modules/cloud/rackspace/rax_clb.py\": \"lib/ansible/modules/cloud/rackspace/rax_clb.py\", \n  \"/modules/cloud/rackspace/rax_clb_nodes.py\": \"lib/ansible/modules/cloud/rackspace/rax_clb_nodes.py\", \n  \"/modules/cloud/rackspace/rax_clb_ssl.py\": \"lib/ansible/modules/cloud/rackspace/rax_clb_ssl.py\", \n  \"/modules/cloud/rackspace/rax_dns.py\": \"lib/ansible/modules/cloud/rackspace/rax_dns.py\", \n  \"/modules/cloud/rackspace/rax_dns_record.py\": \"lib/ansible/modules/cloud/rackspace/rax_dns_record.py\", \n  \"/modules/cloud/rackspace/rax_facts.py\": \"lib/ansible/modules/cloud/rackspace/rax_facts.py\", \n  \"/modules/cloud/rackspace/rax_files.py\": \"lib/ansible/modules/cloud/rackspace/rax_files.py\", \n  \"/modules/cloud/rackspace/rax_files_objects.py\": \"lib/ansible/modules/cloud/rackspace/rax_files_objects.py\", \n  \"/modules/cloud/rackspace/rax_identity.py\": \"lib/ansible/modules/cloud/rackspace/rax_identity.py\", \n  \"/modules/cloud/rackspace/rax_keypair.py\": \"lib/ansible/modules/cloud/rackspace/rax_keypair.py\", \n  \"/modules/cloud/rackspace/rax_meta.py\": \"lib/ansible/modules/cloud/rackspace/rax_meta.py\", \n  \"/modules/cloud/rackspace/rax_mon_alarm.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_alarm.py\", \n  \"/modules/cloud/rackspace/rax_mon_check.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_check.py\", \n  \"/modules/cloud/rackspace/rax_mon_entity.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_entity.py\", \n  \"/modules/cloud/rackspace/rax_mon_notification.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_notification.py\", \n  \"/modules/cloud/rackspace/rax_mon_notification_plan.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_notification_plan.py\", \n  \"/modules/cloud/rackspace/rax_network.py\": \"lib/ansible/modules/cloud/rackspace/rax_network.py\", \n  \"/modules/cloud/rackspace/rax_queue.py\": \"lib/ansible/modules/cloud/rackspace/rax_queue.py\", \n  \"/modules/cloud/rackspace/rax_scaling_group.py\": \"lib/ansible/modules/cloud/rackspace/rax_scaling_group.py\", \n  \"/modules/cloud/rackspace/rax_scaling_policy.py\": \"lib/ansible/modules/cloud/rackspace/rax_scaling_policy.py\", \n  \"/modules/cloud/smartos/imgadm.py\": \"lib/ansible/modules/cloud/smartos/imgadm.py\", \n  \"/modules/cloud/smartos/smartos_image_facts.py\": \"lib/ansible/modules/cloud/smartos/smartos_image_facts.py\", \n  \"/modules/cloud/smartos/vmadm.py\": \"lib/ansible/modules/cloud/smartos/vmadm.py\", \n  \"/modules/cloud/softlayer/sl_vm.py\": \"lib/ansible/modules/cloud/softlayer/sl_vm.py\", \n  \"/modules/cloud/univention/udm_dns_record.py\": \"lib/ansible/modules/cloud/univention/udm_dns_record.py\", \n  \"/modules/cloud/univention/udm_dns_zone.py\": \"lib/ansible/modules/cloud/univention/udm_dns_zone.py\", \n  \"/modules/cloud/univention/udm_group.py\": \"lib/ansible/modules/cloud/univention/udm_group.py\", \n  \"/modules/cloud/univention/udm_share.py\": \"lib/ansible/modules/cloud/univention/udm_share.py\", \n  \"/modules/cloud/univention/udm_user.py\": \"lib/ansible/modules/cloud/univention/udm_user.py\", \n  \"/modules/cloud/vmware/vca_fw.py\": \"lib/ansible/modules/cloud/vmware/vca_fw.py\", \n  \"/modules/cloud/vmware/vca_nat.py\": \"lib/ansible/modules/cloud/vmware/vca_nat.py\", \n  \"/modules/cloud/vmware/vca_vapp.py\": \"lib/ansible/modules/cloud/vmware/vca_vapp.py\", \n  \"/modules/cloud/vmware/vcenter_license.py\": \"lib/ansible/modules/cloud/vmware/vcenter_license.py\", \n  \"/modules/cloud/vmware/vmware_cluster.py\": \"lib/ansible/modules/cloud/vmware/vmware_cluster.py\", \n  \"/modules/cloud/vmware/vmware_datacenter.py\": \"lib/ansible/modules/cloud/vmware/vmware_datacenter.py\", \n  \"/modules/cloud/vmware/vmware_dns_config.py\": \"lib/ansible/modules/cloud/vmware/vmware_dns_config.py\", \n  \"/modules/cloud/vmware/vmware_dvs_host.py\": \"lib/ansible/modules/cloud/vmware/vmware_dvs_host.py\", \n  \"/modules/cloud/vmware/vmware_dvs_portgroup.py\": \"lib/ansible/modules/cloud/vmware/vmware_dvs_portgroup.py\", \n  \"/modules/cloud/vmware/vmware_dvswitch.py\": \"lib/ansible/modules/cloud/vmware/vmware_dvswitch.py\", \n  \"/modules/cloud/vmware/vmware_guest.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n  \"/modules/cloud/vmware/vmware_guest_facts.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_facts.py\", \n  \"/modules/cloud/vmware/vmware_guest_find.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_find.py\", \n  \"/modules/cloud/vmware/vmware_guest_powerstate.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_powerstate.py\", \n  \"/modules/cloud/vmware/vmware_guest_snapshot.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_snapshot.py\", \n  \"/modules/cloud/vmware/vmware_guest_tools_wait.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_tools_wait.py\", \n  \"/modules/cloud/vmware/vmware_host.py\": \"lib/ansible/modules/cloud/vmware/vmware_host.py\", \n  \"/modules/cloud/vmware/vmware_local_user_manager.py\": \"lib/ansible/modules/cloud/vmware/vmware_local_user_manager.py\", \n  \"/modules/cloud/vmware/vmware_maintenancemode.py\": \"lib/ansible/modules/cloud/vmware/vmware_maintenancemode.py\", \n  \"/modules/cloud/vmware/vmware_migrate_vmk.py\": \"lib/ansible/modules/cloud/vmware/vmware_migrate_vmk.py\", \n  \"/modules/cloud/vmware/vmware_portgroup.py\": \"lib/ansible/modules/cloud/vmware/vmware_portgroup.py\", \n  \"/modules/cloud/vmware/vmware_resource_pool.py\": \"lib/ansible/modules/cloud/vmware/vmware_resource_pool.py\", \n  \"/modules/cloud/vmware/vmware_target_canonical_facts.py\": \"lib/ansible/modules/cloud/vmware/vmware_target_canonical_facts.py\", \n  \"/modules/cloud/vmware/vmware_vm_facts.py\": \"lib/ansible/modules/cloud/vmware/vmware_vm_facts.py\", \n  \"/modules/cloud/vmware/vmware_vm_shell.py\": \"lib/ansible/modules/cloud/vmware/vmware_vm_shell.py\", \n  \"/modules/cloud/vmware/vmware_vm_vss_dvs_migrate.py\": \"lib/ansible/modules/cloud/vmware/vmware_vm_vss_dvs_migrate.py\", \n  \"/modules/cloud/vmware/vmware_vmkernel.py\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel.py\", \n  \"/modules/cloud/vmware/vmware_vmkernel_ip_config.py\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel_ip_config.py\", \n  \"/modules/cloud/vmware/vmware_vmotion.py\": \"lib/ansible/modules/cloud/vmware/vmware_vmotion.py\", \n  \"/modules/cloud/vmware/vmware_vsan_cluster.py\": \"lib/ansible/modules/cloud/vmware/vmware_vsan_cluster.py\", \n  \"/modules/cloud/vmware/vmware_vswitch.py\": \"lib/ansible/modules/cloud/vmware/vmware_vswitch.py\", \n  \"/modules/cloud/vmware/vsphere_copy.py\": \"lib/ansible/modules/cloud/vmware/vsphere_copy.py\", \n  \"/modules/cloud/vmware/vsphere_guest.py\": \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\", \n  \"/modules/cloud/webfaction/webfaction_app.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_app.py\", \n  \"/modules/cloud/webfaction/webfaction_db.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_db.py\", \n  \"/modules/cloud/webfaction/webfaction_domain.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_domain.py\", \n  \"/modules/cloud/webfaction/webfaction_mailbox.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_mailbox.py\", \n  \"/modules/cloud/webfaction/webfaction_site.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_site.py\", \n  \"/modules/clustering/consul.py\": \"lib/ansible/modules/clustering/consul.py\", \n  \"/modules/clustering/consul_acl.py\": \"lib/ansible/modules/clustering/consul_acl.py\", \n  \"/modules/clustering/consul_kv.py\": \"lib/ansible/modules/clustering/consul_kv.py\", \n  \"/modules/clustering/consul_session.py\": \"lib/ansible/modules/clustering/consul_session.py\", \n  \"/modules/clustering/kubernetes.py\": \"lib/ansible/modules/clustering/kubernetes.py\", \n  \"/modules/clustering/oc.py\": \"lib/ansible/modules/clustering/oc.py\", \n  \"/modules/clustering/pacemaker_cluster.py\": \"lib/ansible/modules/clustering/pacemaker_cluster.py\", \n  \"/modules/clustering/znode.py\": \"lib/ansible/modules/clustering/znode.py\", \n  \"/modules/commands/command.py\": \"lib/ansible/modules/commands/command.py\", \n  \"/modules/commands/expect.py\": \"lib/ansible/modules/commands/expect.py\", \n  \"/modules/commands/raw.py\": \"lib/ansible/modules/commands/raw.py\", \n  \"/modules/commands/script.py\": \"lib/ansible/modules/commands/script.py\", \n  \"/modules/commands/shell.py\": \"lib/ansible/modules/commands/shell.py\", \n  \"/modules/commands/telnet.py\": \"lib/ansible/modules/commands/telnet.py\", \n  \"/modules/crypto/openssl_certificate.py\": \"lib/ansible/modules/crypto/openssl_certificate.py\", \n  \"/modules/crypto/openssl_csr.py\": \"lib/ansible/modules/crypto/openssl_csr.py\", \n  \"/modules/crypto/openssl_privatekey.py\": \"lib/ansible/modules/crypto/openssl_privatekey.py\", \n  \"/modules/crypto/openssl_publickey.py\": \"lib/ansible/modules/crypto/openssl_publickey.py\", \n  \"/modules/database/influxdb/influxdb_database.py\": \"lib/ansible/modules/database/influxdb/influxdb_database.py\", \n  \"/modules/database/influxdb/influxdb_retention_policy.py\": \"lib/ansible/modules/database/influxdb/influxdb_retention_policy.py\", \n  \"/modules/database/misc/elasticsearch_plugin.py\": \"lib/ansible/modules/database/misc/elasticsearch_plugin.py\", \n  \"/modules/database/misc/kibana_plugin.py\": \"lib/ansible/modules/database/misc/kibana_plugin.py\", \n  \"/modules/database/misc/redis.py\": \"lib/ansible/modules/database/misc/redis.py\", \n  \"/modules/database/misc/riak.py\": \"lib/ansible/modules/database/misc/riak.py\", \n  \"/modules/database/mongodb/mongodb_parameter.py\": \"lib/ansible/modules/database/mongodb/mongodb_parameter.py\", \n  \"/modules/database/mongodb/mongodb_user.py\": \"lib/ansible/modules/database/mongodb/mongodb_user.py\", \n  \"/modules/database/mssql/mssql_db.py\": \"lib/ansible/modules/database/mssql/mssql_db.py\", \n  \"/modules/database/mysql/mysql_db.py\": \"lib/ansible/modules/database/mysql/mysql_db.py\", \n  \"/modules/database/mysql/mysql_replication.py\": \"lib/ansible/modules/database/mysql/mysql_replication.py\", \n  \"/modules/database/mysql/mysql_user.py\": \"lib/ansible/modules/database/mysql/mysql_user.py\", \n  \"/modules/database/mysql/mysql_variables.py\": \"lib/ansible/modules/database/mysql/mysql_variables.py\", \n  \"/modules/database/postgresql/postgresql_db.py\": \"lib/ansible/modules/database/postgresql/postgresql_db.py\", \n  \"/modules/database/postgresql/postgresql_ext.py\": \"lib/ansible/modules/database/postgresql/postgresql_ext.py\", \n  \"/modules/database/postgresql/postgresql_lang.py\": \"lib/ansible/modules/database/postgresql/postgresql_lang.py\", \n  \"/modules/database/postgresql/postgresql_privs.py\": \"lib/ansible/modules/database/postgresql/postgresql_privs.py\", \n  \"/modules/database/postgresql/postgresql_schema.py\": \"lib/ansible/modules/database/postgresql/postgresql_schema.py\", \n  \"/modules/database/postgresql/postgresql_user.py\": \"lib/ansible/modules/database/postgresql/postgresql_user.py\", \n  \"/modules/database/proxysql/proxysql_backend_servers.py\": \"lib/ansible/modules/database/proxysql/proxysql_backend_servers.py\", \n  \"/modules/database/proxysql/proxysql_global_variables.py\": \"lib/ansible/modules/database/proxysql/proxysql_global_variables.py\", \n  \"/modules/database/proxysql/proxysql_manage_config.py\": \"lib/ansible/modules/database/proxysql/proxysql_manage_config.py\", \n  \"/modules/database/proxysql/proxysql_mysql_users.py\": \"lib/ansible/modules/database/proxysql/proxysql_mysql_users.py\", \n  \"/modules/database/proxysql/proxysql_query_rules.py\": \"lib/ansible/modules/database/proxysql/proxysql_query_rules.py\", \n  \"/modules/database/proxysql/proxysql_replication_hostgroups.py\": \"lib/ansible/modules/database/proxysql/proxysql_replication_hostgroups.py\", \n  \"/modules/database/proxysql/proxysql_scheduler.py\": \"lib/ansible/modules/database/proxysql/proxysql_scheduler.py\", \n  \"/modules/database/vertica/vertica_configuration.py\": \"lib/ansible/modules/database/vertica/vertica_configuration.py\", \n  \"/modules/database/vertica/vertica_facts.py\": \"lib/ansible/modules/database/vertica/vertica_facts.py\", \n  \"/modules/database/vertica/vertica_role.py\": \"lib/ansible/modules/database/vertica/vertica_role.py\", \n  \"/modules/database/vertica/vertica_schema.py\": \"lib/ansible/modules/database/vertica/vertica_schema.py\", \n  \"/modules/database/vertica/vertica_user.py\": \"lib/ansible/modules/database/vertica/vertica_user.py\", \n  \"/modules/extras/system/firewalld.py\": [\n    \"lib/ansible/modules/system/firewalld.py\"\n  ], \n  \"/modules/files/acl.py\": \"lib/ansible/modules/files/acl.py\", \n  \"/modules/files/archive.py\": \"lib/ansible/modules/files/archive.py\", \n  \"/modules/files/assemble.py\": \"lib/ansible/modules/files/assemble.py\", \n  \"/modules/files/blockinfile.py\": \"lib/ansible/modules/files/blockinfile.py\", \n  \"/modules/files/copy.py\": \"lib/ansible/modules/files/copy.py\", \n  \"/modules/files/fetch.py\": \"lib/ansible/modules/files/fetch.py\", \n  \"/modules/files/file.py\": \"lib/ansible/modules/files/file.py\", \n  \"/modules/files/find.py\": \"lib/ansible/modules/files/find.py\", \n  \"/modules/files/ini_file.py\": \"lib/ansible/modules/files/ini_file.py\", \n  \"/modules/files/iso_extract.py\": \"lib/ansible/modules/files/iso_extract.py\", \n  \"/modules/files/lineinfile.py\": \"lib/ansible/modules/files/lineinfile.py\", \n  \"/modules/files/patch.py\": \"lib/ansible/modules/files/patch.py\", \n  \"/modules/files/replace.py\": \"lib/ansible/modules/files/replace.py\", \n  \"/modules/files/stat.py\": \"lib/ansible/modules/files/stat.py\", \n  \"/modules/files/synchronize.py\": \"lib/ansible/modules/files/synchronize.py\", \n  \"/modules/files/tempfile.py\": \"lib/ansible/modules/files/tempfile.py\", \n  \"/modules/files/template.py\": \"lib/ansible/modules/files/template.py\", \n  \"/modules/files/unarchive.py\": \"lib/ansible/modules/files/unarchive.py\", \n  \"/modules/files/xattr.py\": \"lib/ansible/modules/files/xattr.py\", \n  \"/modules/files/xml.py\": \"lib/ansible/modules/files/xml.py\", \n  \"/modules/identity/cyberark/cyberark_authentication.py\": \"lib/ansible/modules/identity/cyberark/cyberark_authentication.py\", \n  \"/modules/identity/cyberark/cyberark_user.py\": \"lib/ansible/modules/identity/cyberark/cyberark_user.py\", \n  \"/modules/identity/ipa/ipa_dnsrecord.py\": \"lib/ansible/modules/identity/ipa/ipa_dnsrecord.py\", \n  \"/modules/identity/ipa/ipa_dnszone.py\": \"lib/ansible/modules/identity/ipa/ipa_dnszone.py\", \n  \"/modules/identity/ipa/ipa_group.py\": \"lib/ansible/modules/identity/ipa/ipa_group.py\", \n  \"/modules/identity/ipa/ipa_hbacrule.py\": \"lib/ansible/modules/identity/ipa/ipa_hbacrule.py\", \n  \"/modules/identity/ipa/ipa_host.py\": \"lib/ansible/modules/identity/ipa/ipa_host.py\", \n  \"/modules/identity/ipa/ipa_hostgroup.py\": \"lib/ansible/modules/identity/ipa/ipa_hostgroup.py\", \n  \"/modules/identity/ipa/ipa_role.py\": \"lib/ansible/modules/identity/ipa/ipa_role.py\", \n  \"/modules/identity/ipa/ipa_sudocmd.py\": \"lib/ansible/modules/identity/ipa/ipa_sudocmd.py\", \n  \"/modules/identity/ipa/ipa_sudocmdgroup.py\": \"lib/ansible/modules/identity/ipa/ipa_sudocmdgroup.py\", \n  \"/modules/identity/ipa/ipa_sudorule.py\": \"lib/ansible/modules/identity/ipa/ipa_sudorule.py\", \n  \"/modules/identity/ipa/ipa_user.py\": \"lib/ansible/modules/identity/ipa/ipa_user.py\", \n  \"/modules/identity/opendj/opendj_backendprop.py\": \"lib/ansible/modules/identity/opendj/opendj_backendprop.py\", \n  \"/modules/inventory/add_host.py\": \"lib/ansible/modules/inventory/add_host.py\", \n  \"/modules/inventory/group_by.py\": \"lib/ansible/modules/inventory/group_by.py\", \n  \"/modules/messaging/rabbitmq_binding.py\": \"lib/ansible/modules/messaging/rabbitmq_binding.py\", \n  \"/modules/messaging/rabbitmq_exchange.py\": \"lib/ansible/modules/messaging/rabbitmq_exchange.py\", \n  \"/modules/messaging/rabbitmq_parameter.py\": \"lib/ansible/modules/messaging/rabbitmq_parameter.py\", \n  \"/modules/messaging/rabbitmq_plugin.py\": \"lib/ansible/modules/messaging/rabbitmq_plugin.py\", \n  \"/modules/messaging/rabbitmq_policy.py\": \"lib/ansible/modules/messaging/rabbitmq_policy.py\", \n  \"/modules/messaging/rabbitmq_queue.py\": \"lib/ansible/modules/messaging/rabbitmq_queue.py\", \n  \"/modules/messaging/rabbitmq_user.py\": \"lib/ansible/modules/messaging/rabbitmq_user.py\", \n  \"/modules/messaging/rabbitmq_vhost.py\": \"lib/ansible/modules/messaging/rabbitmq_vhost.py\", \n  \"/modules/monitoring/airbrake_deployment.py\": \"lib/ansible/modules/monitoring/airbrake_deployment.py\", \n  \"/modules/monitoring/bigpanda.py\": \"lib/ansible/modules/monitoring/bigpanda.py\", \n  \"/modules/monitoring/circonus_annotation.py\": \"lib/ansible/modules/monitoring/circonus_annotation.py\", \n  \"/modules/monitoring/datadog_event.py\": \"lib/ansible/modules/monitoring/datadog_event.py\", \n  \"/modules/monitoring/datadog_monitor.py\": \"lib/ansible/modules/monitoring/datadog_monitor.py\", \n  \"/modules/monitoring/honeybadger_deployment.py\": \"lib/ansible/modules/monitoring/honeybadger_deployment.py\", \n  \"/modules/monitoring/icinga2_feature.py\": \"lib/ansible/modules/monitoring/icinga2_feature.py\", \n  \"/modules/monitoring/librato_annotation.py\": \"lib/ansible/modules/monitoring/librato_annotation.py\", \n  \"/modules/monitoring/logentries.py\": \"lib/ansible/modules/monitoring/logentries.py\", \n  \"/modules/monitoring/logicmonitor.py\": \"lib/ansible/modules/monitoring/logicmonitor.py\", \n  \"/modules/monitoring/logicmonitor_facts.py\": \"lib/ansible/modules/monitoring/logicmonitor_facts.py\", \n  \"/modules/monitoring/logstash_plugin.py\": \"lib/ansible/modules/monitoring/logstash_plugin.py\", \n  \"/modules/monitoring/monit.py\": \"lib/ansible/modules/monitoring/monit.py\", \n  \"/modules/monitoring/nagios.py\": \"lib/ansible/modules/monitoring/nagios.py\", \n  \"/modules/monitoring/newrelic_deployment.py\": \"lib/ansible/modules/monitoring/newrelic_deployment.py\", \n  \"/modules/monitoring/pagerduty.py\": \"lib/ansible/modules/monitoring/pagerduty.py\", \n  \"/modules/monitoring/pagerduty_alert.py\": \"lib/ansible/modules/monitoring/pagerduty_alert.py\", \n  \"/modules/monitoring/pingdom.py\": \"lib/ansible/modules/monitoring/pingdom.py\", \n  \"/modules/monitoring/rollbar_deployment.py\": \"lib/ansible/modules/monitoring/rollbar_deployment.py\", \n  \"/modules/monitoring/sensu_check.py\": \"lib/ansible/modules/monitoring/sensu_check.py\", \n  \"/modules/monitoring/sensu_client.py\": \"lib/ansible/modules/monitoring/sensu_client.py\", \n  \"/modules/monitoring/sensu_handler.py\": \"lib/ansible/modules/monitoring/sensu_handler.py\", \n  \"/modules/monitoring/sensu_silence.py\": \"lib/ansible/modules/monitoring/sensu_silence.py\", \n  \"/modules/monitoring/sensu_subscription.py\": \"lib/ansible/modules/monitoring/sensu_subscription.py\", \n  \"/modules/monitoring/stackdriver.py\": \"lib/ansible/modules/monitoring/stackdriver.py\", \n  \"/modules/monitoring/statusio_maintenance.py\": \"lib/ansible/modules/monitoring/statusio_maintenance.py\", \n  \"/modules/monitoring/uptimerobot.py\": \"lib/ansible/modules/monitoring/uptimerobot.py\", \n  \"/modules/monitoring/zabbix/zabbix_group.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_group.py\", \n  \"/modules/monitoring/zabbix/zabbix_host.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_host.py\", \n  \"/modules/monitoring/zabbix/zabbix_hostmacro.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_hostmacro.py\", \n  \"/modules/monitoring/zabbix/zabbix_maintenance.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_maintenance.py\", \n  \"/modules/monitoring/zabbix/zabbix_proxy.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_proxy.py\", \n  \"/modules/monitoring/zabbix/zabbix_screen.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_screen.py\", \n  \"/modules/monitoring/zabbix/zabbix_template.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_template.py\", \n  \"/modules/net_tools/basics/get_url.py\": \"lib/ansible/modules/net_tools/basics/get_url.py\", \n  \"/modules/net_tools/basics/slurp.py\": \"lib/ansible/modules/net_tools/basics/slurp.py\", \n  \"/modules/net_tools/basics/uri.py\": \"lib/ansible/modules/net_tools/basics/uri.py\", \n  \"/modules/net_tools/cloudflare_dns.py\": \"lib/ansible/modules/net_tools/cloudflare_dns.py\", \n  \"/modules/net_tools/dnsimple.py\": \"lib/ansible/modules/net_tools/dnsimple.py\", \n  \"/modules/net_tools/dnsmadeeasy.py\": \"lib/ansible/modules/net_tools/dnsmadeeasy.py\", \n  \"/modules/net_tools/exoscale/exo_dns_domain.py\": \"lib/ansible/modules/net_tools/exoscale/exo_dns_domain.py\", \n  \"/modules/net_tools/exoscale/exo_dns_record.py\": \"lib/ansible/modules/net_tools/exoscale/exo_dns_record.py\", \n  \"/modules/net_tools/haproxy.py\": \"lib/ansible/modules/net_tools/haproxy.py\", \n  \"/modules/net_tools/infinity/infinity.py\": \"lib/ansible/modules/net_tools/infinity/infinity.py\", \n  \"/modules/net_tools/ipify_facts.py\": \"lib/ansible/modules/net_tools/ipify_facts.py\", \n  \"/modules/net_tools/ipinfoio_facts.py\": \"lib/ansible/modules/net_tools/ipinfoio_facts.py\", \n  \"/modules/net_tools/ldap/ldap_attr.py\": \"lib/ansible/modules/net_tools/ldap/ldap_attr.py\", \n  \"/modules/net_tools/ldap/ldap_entry.py\": \"lib/ansible/modules/net_tools/ldap/ldap_entry.py\", \n  \"/modules/net_tools/lldp.py\": \"lib/ansible/modules/net_tools/lldp.py\", \n  \"/modules/net_tools/nmcli.py\": \"lib/ansible/modules/net_tools/nmcli.py\", \n  \"/modules/net_tools/nsupdate.py\": \"lib/ansible/modules/net_tools/nsupdate.py\", \n  \"/modules/net_tools/omapi_host.py\": \"lib/ansible/modules/net_tools/omapi_host.py\", \n  \"/modules/net_tools/snmp_facts.py\": \"lib/ansible/modules/net_tools/snmp_facts.py\", \n  \"/modules/network/a10/a10_server.py\": \"lib/ansible/modules/network/a10/a10_server.py\", \n  \"/modules/network/a10/a10_server_axapi3.py\": \"lib/ansible/modules/network/a10/a10_server_axapi3.py\", \n  \"/modules/network/a10/a10_service_group.py\": \"lib/ansible/modules/network/a10/a10_service_group.py\", \n  \"/modules/network/a10/a10_virtual_server.py\": \"lib/ansible/modules/network/a10/a10_virtual_server.py\", \n  \"/modules/network/aci/aci_aep.py\": \"lib/ansible/modules/network/aci/aci_aep.py\", \n  \"/modules/network/aci/aci_ap.py\": \"lib/ansible/modules/network/aci/aci_ap.py\", \n  \"/modules/network/aci/aci_bd.py\": \"lib/ansible/modules/network/aci/aci_bd.py\", \n  \"/modules/network/aci/aci_bd_subnet.py\": \"lib/ansible/modules/network/aci/aci_bd_subnet.py\", \n  \"/modules/network/aci/aci_bd_to_l3out.py\": \"lib/ansible/modules/network/aci/aci_bd_to_l3out.py\", \n  \"/modules/network/aci/aci_config_rollback.py\": \"lib/ansible/modules/network/aci/aci_config_rollback.py\", \n  \"/modules/network/aci/aci_config_snapshot.py\": \"lib/ansible/modules/network/aci/aci_config_snapshot.py\", \n  \"/modules/network/aci/aci_contract.py\": \"lib/ansible/modules/network/aci/aci_contract.py\", \n  \"/modules/network/aci/aci_contract_subject.py\": \"lib/ansible/modules/network/aci/aci_contract_subject.py\", \n  \"/modules/network/aci/aci_contract_subject_to_filter.py\": \"lib/ansible/modules/network/aci/aci_contract_subject_to_filter.py\", \n  \"/modules/network/aci/aci_epg.py\": \"lib/ansible/modules/network/aci/aci_epg.py\", \n  \"/modules/network/aci/aci_epg_monitoring_policy.py\": \"lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py\", \n  \"/modules/network/aci/aci_epg_to_contract.py\": \"lib/ansible/modules/network/aci/aci_epg_to_contract.py\", \n  \"/modules/network/aci/aci_epg_to_domain.py\": \"lib/ansible/modules/network/aci/aci_epg_to_domain.py\", \n  \"/modules/network/aci/aci_filter.py\": \"lib/ansible/modules/network/aci/aci_filter.py\", \n  \"/modules/network/aci/aci_filter_entry.py\": \"lib/ansible/modules/network/aci/aci_filter_entry.py\", \n  \"/modules/network/aci/aci_intf_policy_fc.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_fc.py\", \n  \"/modules/network/aci/aci_intf_policy_l2.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_l2.py\", \n  \"/modules/network/aci/aci_intf_policy_lldp.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_lldp.py\", \n  \"/modules/network/aci/aci_intf_policy_mcp.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_mcp.py\", \n  \"/modules/network/aci/aci_intf_policy_port_channel.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_port_channel.py\", \n  \"/modules/network/aci/aci_intf_policy_port_security.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_port_security.py\", \n  \"/modules/network/aci/aci_l3out_route_tag_policy.py\": \"lib/ansible/modules/network/aci/aci_l3out_route_tag_policy.py\", \n  \"/modules/network/aci/aci_rest.py\": \"lib/ansible/modules/network/aci/aci_rest.py\", \n  \"/modules/network/aci/aci_taboo_contract.py\": \"lib/ansible/modules/network/aci/aci_taboo_contract.py\", \n  \"/modules/network/aci/aci_tenant.py\": \"lib/ansible/modules/network/aci/aci_tenant.py\", \n  \"/modules/network/aci/aci_tenant_action_rule_profile.py\": \"lib/ansible/modules/network/aci/aci_tenant_action_rule_profile.py\", \n  \"/modules/network/aci/aci_tenant_ep_retention_policy.py\": \"lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py\", \n  \"/modules/network/aci/aci_tenant_span_dst_group.py\": \"lib/ansible/modules/network/aci/aci_tenant_span_dst_group.py\", \n  \"/modules/network/aci/aci_tenant_span_src_group.py\": \"lib/ansible/modules/network/aci/aci_tenant_span_src_group.py\", \n  \"/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py\": \"lib/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py\", \n  \"/modules/network/aci/aci_vrf.py\": \"lib/ansible/modules/network/aci/aci_vrf.py\", \n  \"/modules/network/aireos/aireos_command.py\": \"lib/ansible/modules/network/aireos/aireos_command.py\", \n  \"/modules/network/aireos/aireos_config.py\": \"lib/ansible/modules/network/aireos/aireos_config.py\", \n  \"/modules/network/aos/aos_asn_pool.py\": \"lib/ansible/modules/network/aos/aos_asn_pool.py\", \n  \"/modules/network/aos/aos_blueprint.py\": \"lib/ansible/modules/network/aos/aos_blueprint.py\", \n  \"/modules/network/aos/aos_blueprint_param.py\": \"lib/ansible/modules/network/aos/aos_blueprint_param.py\", \n  \"/modules/network/aos/aos_blueprint_virtnet.py\": \"lib/ansible/modules/network/aos/aos_blueprint_virtnet.py\", \n  \"/modules/network/aos/aos_device.py\": \"lib/ansible/modules/network/aos/aos_device.py\", \n  \"/modules/network/aos/aos_external_router.py\": \"lib/ansible/modules/network/aos/aos_external_router.py\", \n  \"/modules/network/aos/aos_ip_pool.py\": \"lib/ansible/modules/network/aos/aos_ip_pool.py\", \n  \"/modules/network/aos/aos_logical_device.py\": \"lib/ansible/modules/network/aos/aos_logical_device.py\", \n  \"/modules/network/aos/aos_logical_device_map.py\": \"lib/ansible/modules/network/aos/aos_logical_device_map.py\", \n  \"/modules/network/aos/aos_login.py\": \"lib/ansible/modules/network/aos/aos_login.py\", \n  \"/modules/network/aos/aos_rack_type.py\": \"lib/ansible/modules/network/aos/aos_rack_type.py\", \n  \"/modules/network/aos/aos_template.py\": \"lib/ansible/modules/network/aos/aos_template.py\", \n  \"/modules/network/aruba/aruba_command.py\": \"lib/ansible/modules/network/aruba/aruba_command.py\", \n  \"/modules/network/aruba/aruba_config.py\": \"lib/ansible/modules/network/aruba/aruba_config.py\", \n  \"/modules/network/asa/asa_acl.py\": \"lib/ansible/modules/network/asa/asa_acl.py\", \n  \"/modules/network/asa/asa_command.py\": \"lib/ansible/modules/network/asa/asa_command.py\", \n  \"/modules/network/asa/asa_config.py\": \"lib/ansible/modules/network/asa/asa_config.py\", \n  \"/modules/network/avi/avi_actiongroupconfig.py\": \"lib/ansible/modules/network/avi/avi_actiongroupconfig.py\", \n  \"/modules/network/avi/avi_alertconfig.py\": \"lib/ansible/modules/network/avi/avi_alertconfig.py\", \n  \"/modules/network/avi/avi_alertemailconfig.py\": \"lib/ansible/modules/network/avi/avi_alertemailconfig.py\", \n  \"/modules/network/avi/avi_alertscriptconfig.py\": \"lib/ansible/modules/network/avi/avi_alertscriptconfig.py\", \n  \"/modules/network/avi/avi_alertsyslogconfig.py\": \"lib/ansible/modules/network/avi/avi_alertsyslogconfig.py\", \n  \"/modules/network/avi/avi_analyticsprofile.py\": \"lib/ansible/modules/network/avi/avi_analyticsprofile.py\", \n  \"/modules/network/avi/avi_api_session.py\": \"lib/ansible/modules/network/avi/avi_api_session.py\", \n  \"/modules/network/avi/avi_applicationpersistenceprofile.py\": \"lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py\", \n  \"/modules/network/avi/avi_applicationprofile.py\": \"lib/ansible/modules/network/avi/avi_applicationprofile.py\", \n  \"/modules/network/avi/avi_authprofile.py\": \"lib/ansible/modules/network/avi/avi_authprofile.py\", \n  \"/modules/network/avi/avi_backup.py\": \"lib/ansible/modules/network/avi/avi_backup.py\", \n  \"/modules/network/avi/avi_backupconfiguration.py\": \"lib/ansible/modules/network/avi/avi_backupconfiguration.py\", \n  \"/modules/network/avi/avi_certificatemanagementprofile.py\": \"lib/ansible/modules/network/avi/avi_certificatemanagementprofile.py\", \n  \"/modules/network/avi/avi_cloud.py\": \"lib/ansible/modules/network/avi/avi_cloud.py\", \n  \"/modules/network/avi/avi_cloudconnectoruser.py\": \"lib/ansible/modules/network/avi/avi_cloudconnectoruser.py\", \n  \"/modules/network/avi/avi_cloudproperties.py\": \"lib/ansible/modules/network/avi/avi_cloudproperties.py\", \n  \"/modules/network/avi/avi_cluster.py\": \"lib/ansible/modules/network/avi/avi_cluster.py\", \n  \"/modules/network/avi/avi_controllerproperties.py\": \"lib/ansible/modules/network/avi/avi_controllerproperties.py\", \n  \"/modules/network/avi/avi_dnspolicy.py\": \"lib/ansible/modules/network/avi/avi_dnspolicy.py\", \n  \"/modules/network/avi/avi_gslb.py\": \"lib/ansible/modules/network/avi/avi_gslb.py\", \n  \"/modules/network/avi/avi_gslbapplicationpersistenceprofile.py\": \"lib/ansible/modules/network/avi/avi_gslbapplicationpersistenceprofile.py\", \n  \"/modules/network/avi/avi_gslbgeodbprofile.py\": \"lib/ansible/modules/network/avi/avi_gslbgeodbprofile.py\", \n  \"/modules/network/avi/avi_gslbhealthmonitor.py\": \"lib/ansible/modules/network/avi/avi_gslbhealthmonitor.py\", \n  \"/modules/network/avi/avi_gslbservice.py\": \"lib/ansible/modules/network/avi/avi_gslbservice.py\", \n  \"/modules/network/avi/avi_hardwaresecuritymodulegroup.py\": \"lib/ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py\", \n  \"/modules/network/avi/avi_healthmonitor.py\": \"lib/ansible/modules/network/avi/avi_healthmonitor.py\", \n  \"/modules/network/avi/avi_httppolicyset.py\": \"lib/ansible/modules/network/avi/avi_httppolicyset.py\", \n  \"/modules/network/avi/avi_ipaddrgroup.py\": \"lib/ansible/modules/network/avi/avi_ipaddrgroup.py\", \n  \"/modules/network/avi/avi_ipamdnsproviderprofile.py\": \"lib/ansible/modules/network/avi/avi_ipamdnsproviderprofile.py\", \n  \"/modules/network/avi/avi_microservicegroup.py\": \"lib/ansible/modules/network/avi/avi_microservicegroup.py\", \n  \"/modules/network/avi/avi_network.py\": \"lib/ansible/modules/network/avi/avi_network.py\", \n  \"/modules/network/avi/avi_networkprofile.py\": \"lib/ansible/modules/network/avi/avi_networkprofile.py\", \n  \"/modules/network/avi/avi_networksecuritypolicy.py\": \"lib/ansible/modules/network/avi/avi_networksecuritypolicy.py\", \n  \"/modules/network/avi/avi_pkiprofile.py\": \"lib/ansible/modules/network/avi/avi_pkiprofile.py\", \n  \"/modules/network/avi/avi_pool.py\": \"lib/ansible/modules/network/avi/avi_pool.py\", \n  \"/modules/network/avi/avi_poolgroup.py\": \"lib/ansible/modules/network/avi/avi_poolgroup.py\", \n  \"/modules/network/avi/avi_poolgroupdeploymentpolicy.py\": \"lib/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py\", \n  \"/modules/network/avi/avi_prioritylabels.py\": \"lib/ansible/modules/network/avi/avi_prioritylabels.py\", \n  \"/modules/network/avi/avi_role.py\": \"lib/ansible/modules/network/avi/avi_role.py\", \n  \"/modules/network/avi/avi_scheduler.py\": \"lib/ansible/modules/network/avi/avi_scheduler.py\", \n  \"/modules/network/avi/avi_seproperties.py\": \"lib/ansible/modules/network/avi/avi_seproperties.py\", \n  \"/modules/network/avi/avi_serverautoscalepolicy.py\": \"lib/ansible/modules/network/avi/avi_serverautoscalepolicy.py\", \n  \"/modules/network/avi/avi_serviceengine.py\": \"lib/ansible/modules/network/avi/avi_serviceengine.py\", \n  \"/modules/network/avi/avi_serviceenginegroup.py\": \"lib/ansible/modules/network/avi/avi_serviceenginegroup.py\", \n  \"/modules/network/avi/avi_snmptrapprofile.py\": \"lib/ansible/modules/network/avi/avi_snmptrapprofile.py\", \n  \"/modules/network/avi/avi_sslkeyandcertificate.py\": \"lib/ansible/modules/network/avi/avi_sslkeyandcertificate.py\", \n  \"/modules/network/avi/avi_sslprofile.py\": \"lib/ansible/modules/network/avi/avi_sslprofile.py\", \n  \"/modules/network/avi/avi_stringgroup.py\": \"lib/ansible/modules/network/avi/avi_stringgroup.py\", \n  \"/modules/network/avi/avi_systemconfiguration.py\": \"lib/ansible/modules/network/avi/avi_systemconfiguration.py\", \n  \"/modules/network/avi/avi_tenant.py\": \"lib/ansible/modules/network/avi/avi_tenant.py\", \n  \"/modules/network/avi/avi_trafficcloneprofile.py\": \"lib/ansible/modules/network/avi/avi_trafficcloneprofile.py\", \n  \"/modules/network/avi/avi_useraccountprofile.py\": \"lib/ansible/modules/network/avi/avi_useraccountprofile.py\", \n  \"/modules/network/avi/avi_virtualservice.py\": \"lib/ansible/modules/network/avi/avi_virtualservice.py\", \n  \"/modules/network/avi/avi_vrfcontext.py\": \"lib/ansible/modules/network/avi/avi_vrfcontext.py\", \n  \"/modules/network/avi/avi_vsdatascriptset.py\": \"lib/ansible/modules/network/avi/avi_vsdatascriptset.py\", \n  \"/modules/network/avi/avi_vsvip.py\": \"lib/ansible/modules/network/avi/avi_vsvip.py\", \n  \"/modules/network/avi/avi_webhook.py\": \"lib/ansible/modules/network/avi/avi_webhook.py\", \n  \"/modules/network/bigswitch/bcf_switch.py\": \"lib/ansible/modules/network/bigswitch/bcf_switch.py\", \n  \"/modules/network/bigswitch/bigmon_chain.py\": \"lib/ansible/modules/network/bigswitch/bigmon_chain.py\", \n  \"/modules/network/bigswitch/bigmon_policy.py\": \"lib/ansible/modules/network/bigswitch/bigmon_policy.py\", \n  \"/modules/network/citrix/_netscaler.py\": \"lib/ansible/modules/network/citrix/_netscaler.py\", \n  \"/modules/network/citrix/netscaler.py\": \"lib/ansible/modules/network/citrix/_netscaler.py\", \n  \"/modules/network/cloudengine/ce_aaa_server.py\": \"lib/ansible/modules/network/cloudengine/ce_aaa_server.py\", \n  \"/modules/network/cloudengine/ce_aaa_server_host.py\": \"lib/ansible/modules/network/cloudengine/ce_aaa_server_host.py\", \n  \"/modules/network/cloudengine/ce_acl.py\": \"lib/ansible/modules/network/cloudengine/ce_acl.py\", \n  \"/modules/network/cloudengine/ce_acl_advance.py\": \"lib/ansible/modules/network/cloudengine/ce_acl_advance.py\", \n  \"/modules/network/cloudengine/ce_acl_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_acl_interface.py\", \n  \"/modules/network/cloudengine/ce_bfd_global.py\": \"lib/ansible/modules/network/cloudengine/ce_bfd_global.py\", \n  \"/modules/network/cloudengine/ce_bfd_session.py\": \"lib/ansible/modules/network/cloudengine/ce_bfd_session.py\", \n  \"/modules/network/cloudengine/ce_bfd_view.py\": \"lib/ansible/modules/network/cloudengine/ce_bfd_view.py\", \n  \"/modules/network/cloudengine/ce_bgp.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp.py\", \n  \"/modules/network/cloudengine/ce_bgp_af.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp_af.py\", \n  \"/modules/network/cloudengine/ce_bgp_neighbor.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor.py\", \n  \"/modules/network/cloudengine/ce_bgp_neighbor_af.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor_af.py\", \n  \"/modules/network/cloudengine/ce_command.py\": \"lib/ansible/modules/network/cloudengine/ce_command.py\", \n  \"/modules/network/cloudengine/ce_config.py\": \"lib/ansible/modules/network/cloudengine/ce_config.py\", \n  \"/modules/network/cloudengine/ce_dldp.py\": \"lib/ansible/modules/network/cloudengine/ce_dldp.py\", \n  \"/modules/network/cloudengine/ce_dldp_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_dldp_interface.py\", \n  \"/modules/network/cloudengine/ce_eth_trunk.py\": \"lib/ansible/modules/network/cloudengine/ce_eth_trunk.py\", \n  \"/modules/network/cloudengine/ce_evpn_bd_vni.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bd_vni.py\", \n  \"/modules/network/cloudengine/ce_evpn_bgp.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp.py\", \n  \"/modules/network/cloudengine/ce_evpn_bgp_rr.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp_rr.py\", \n  \"/modules/network/cloudengine/ce_evpn_global.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_global.py\", \n  \"/modules/network/cloudengine/ce_facts.py\": \"lib/ansible/modules/network/cloudengine/ce_facts.py\", \n  \"/modules/network/cloudengine/ce_file_copy.py\": \"lib/ansible/modules/network/cloudengine/ce_file_copy.py\", \n  \"/modules/network/cloudengine/ce_info_center_debug.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_debug.py\", \n  \"/modules/network/cloudengine/ce_info_center_global.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_global.py\", \n  \"/modules/network/cloudengine/ce_info_center_log.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_log.py\", \n  \"/modules/network/cloudengine/ce_info_center_trap.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_trap.py\", \n  \"/modules/network/cloudengine/ce_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_interface.py\", \n  \"/modules/network/cloudengine/ce_interface_ospf.py\": \"lib/ansible/modules/network/cloudengine/ce_interface_ospf.py\", \n  \"/modules/network/cloudengine/ce_ip_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_ip_interface.py\", \n  \"/modules/network/cloudengine/ce_link_status.py\": \"lib/ansible/modules/network/cloudengine/ce_link_status.py\", \n  \"/modules/network/cloudengine/ce_mlag_config.py\": \"lib/ansible/modules/network/cloudengine/ce_mlag_config.py\", \n  \"/modules/network/cloudengine/ce_mlag_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_mlag_interface.py\", \n  \"/modules/network/cloudengine/ce_mtu.py\": \"lib/ansible/modules/network/cloudengine/ce_mtu.py\", \n  \"/modules/network/cloudengine/ce_netconf.py\": \"lib/ansible/modules/network/cloudengine/ce_netconf.py\", \n  \"/modules/network/cloudengine/ce_netstream_aging.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_aging.py\", \n  \"/modules/network/cloudengine/ce_netstream_export.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_export.py\", \n  \"/modules/network/cloudengine/ce_netstream_global.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_global.py\", \n  \"/modules/network/cloudengine/ce_netstream_template.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_template.py\", \n  \"/modules/network/cloudengine/ce_ntp.py\": \"lib/ansible/modules/network/cloudengine/ce_ntp.py\", \n  \"/modules/network/cloudengine/ce_ntp_auth.py\": \"lib/ansible/modules/network/cloudengine/ce_ntp_auth.py\", \n  \"/modules/network/cloudengine/ce_ospf.py\": \"lib/ansible/modules/network/cloudengine/ce_ospf.py\", \n  \"/modules/network/cloudengine/ce_ospf_vrf.py\": \"lib/ansible/modules/network/cloudengine/ce_ospf_vrf.py\", \n  \"/modules/network/cloudengine/ce_reboot.py\": \"lib/ansible/modules/network/cloudengine/ce_reboot.py\", \n  \"/modules/network/cloudengine/ce_rollback.py\": \"lib/ansible/modules/network/cloudengine/ce_rollback.py\", \n  \"/modules/network/cloudengine/ce_sflow.py\": \"lib/ansible/modules/network/cloudengine/ce_sflow.py\", \n  \"/modules/network/cloudengine/ce_snmp_community.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_community.py\", \n  \"/modules/network/cloudengine/ce_snmp_contact.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_contact.py\", \n  \"/modules/network/cloudengine/ce_snmp_location.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_location.py\", \n  \"/modules/network/cloudengine/ce_snmp_target_host.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_target_host.py\", \n  \"/modules/network/cloudengine/ce_snmp_traps.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_traps.py\", \n  \"/modules/network/cloudengine/ce_snmp_user.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_user.py\", \n  \"/modules/network/cloudengine/ce_startup.py\": \"lib/ansible/modules/network/cloudengine/ce_startup.py\", \n  \"/modules/network/cloudengine/ce_static_route.py\": \"lib/ansible/modules/network/cloudengine/ce_static_route.py\", \n  \"/modules/network/cloudengine/ce_stp.py\": \"lib/ansible/modules/network/cloudengine/ce_stp.py\", \n  \"/modules/network/cloudengine/ce_switchport.py\": \"lib/ansible/modules/network/cloudengine/ce_switchport.py\", \n  \"/modules/network/cloudengine/ce_vlan.py\": \"lib/ansible/modules/network/cloudengine/ce_vlan.py\", \n  \"/modules/network/cloudengine/ce_vrf.py\": \"lib/ansible/modules/network/cloudengine/ce_vrf.py\", \n  \"/modules/network/cloudengine/ce_vrf_af.py\": \"lib/ansible/modules/network/cloudengine/ce_vrf_af.py\", \n  \"/modules/network/cloudengine/ce_vrf_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_vrf_interface.py\", \n  \"/modules/network/cloudengine/ce_vrrp.py\": \"lib/ansible/modules/network/cloudengine/ce_vrrp.py\", \n  \"/modules/network/cloudengine/ce_vxlan_arp.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_arp.py\", \n  \"/modules/network/cloudengine/ce_vxlan_gateway.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_gateway.py\", \n  \"/modules/network/cloudengine/ce_vxlan_global.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_global.py\", \n  \"/modules/network/cloudengine/ce_vxlan_tunnel.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_tunnel.py\", \n  \"/modules/network/cloudengine/ce_vxlan_vap.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_vap.py\", \n  \"/modules/network/cloudvision/cv_server_provision.py\": \"lib/ansible/modules/network/cloudvision/cv_server_provision.py\", \n  \"/modules/network/cumulus/_cl_bond.py\": \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n  \"/modules/network/cumulus/_cl_bridge.py\": \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n  \"/modules/network/cumulus/_cl_img_install.py\": \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n  \"/modules/network/cumulus/_cl_interface.py\": \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n  \"/modules/network/cumulus/_cl_interface_policy.py\": \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n  \"/modules/network/cumulus/_cl_license.py\": \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n  \"/modules/network/cumulus/_cl_ports.py\": \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n  \"/modules/network/cumulus/cl_bond.py\": \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n  \"/modules/network/cumulus/cl_bridge.py\": \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n  \"/modules/network/cumulus/cl_img_install.py\": \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n  \"/modules/network/cumulus/cl_interface.py\": \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n  \"/modules/network/cumulus/cl_interface_policy.py\": \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n  \"/modules/network/cumulus/cl_license.py\": \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n  \"/modules/network/cumulus/cl_ports.py\": \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n  \"/modules/network/cumulus/nclu.py\": \"lib/ansible/modules/network/cumulus/nclu.py\", \n  \"/modules/network/dellos10/dellos10_command.py\": \"lib/ansible/modules/network/dellos10/dellos10_command.py\", \n  \"/modules/network/dellos10/dellos10_config.py\": \"lib/ansible/modules/network/dellos10/dellos10_config.py\", \n  \"/modules/network/dellos10/dellos10_facts.py\": \"lib/ansible/modules/network/dellos10/dellos10_facts.py\", \n  \"/modules/network/dellos6/dellos6_command.py\": \"lib/ansible/modules/network/dellos6/dellos6_command.py\", \n  \"/modules/network/dellos6/dellos6_config.py\": \"lib/ansible/modules/network/dellos6/dellos6_config.py\", \n  \"/modules/network/dellos6/dellos6_facts.py\": \"lib/ansible/modules/network/dellos6/dellos6_facts.py\", \n  \"/modules/network/dellos9/dellos9_command.py\": \"lib/ansible/modules/network/dellos9/dellos9_command.py\", \n  \"/modules/network/dellos9/dellos9_config.py\": \"lib/ansible/modules/network/dellos9/dellos9_config.py\", \n  \"/modules/network/dellos9/dellos9_facts.py\": \"lib/ansible/modules/network/dellos9/dellos9_facts.py\", \n  \"/modules/network/eos/eos_banner.py\": \"lib/ansible/modules/network/eos/eos_banner.py\", \n  \"/modules/network/eos/eos_command.py\": \"lib/ansible/modules/network/eos/eos_command.py\", \n  \"/modules/network/eos/eos_config.py\": \"lib/ansible/modules/network/eos/eos_config.py\", \n  \"/modules/network/eos/eos_eapi.py\": \"lib/ansible/modules/network/eos/eos_eapi.py\", \n  \"/modules/network/eos/eos_facts.py\": \"lib/ansible/modules/network/eos/eos_facts.py\", \n  \"/modules/network/eos/eos_logging.py\": \"lib/ansible/modules/network/eos/eos_logging.py\", \n  \"/modules/network/eos/eos_system.py\": \"lib/ansible/modules/network/eos/eos_system.py\", \n  \"/modules/network/eos/eos_user.py\": \"lib/ansible/modules/network/eos/eos_user.py\", \n  \"/modules/network/eos/eos_vlan.py\": \"lib/ansible/modules/network/eos/eos_vlan.py\", \n  \"/modules/network/eos/eos_vrf.py\": \"lib/ansible/modules/network/eos/eos_vrf.py\", \n  \"/modules/network/f5/bigip_asm_policy.py\": \"lib/ansible/modules/network/f5/bigip_asm_policy.py\", \n  \"/modules/network/f5/bigip_command.py\": \"lib/ansible/modules/network/f5/bigip_command.py\", \n  \"/modules/network/f5/bigip_config.py\": \"lib/ansible/modules/network/f5/bigip_config.py\", \n  \"/modules/network/f5/bigip_configsync_action.py\": \"lib/ansible/modules/network/f5/bigip_configsync_action.py\", \n  \"/modules/network/f5/bigip_configsync_actions.py\": \"lib/ansible/modules/network/f5/bigip_configsync_actions.py\", \n  \"/modules/network/f5/bigip_device_dns.py\": \"lib/ansible/modules/network/f5/bigip_device_dns.py\", \n  \"/modules/network/f5/bigip_device_ntp.py\": \"lib/ansible/modules/network/f5/bigip_device_ntp.py\", \n  \"/modules/network/f5/bigip_device_sshd.py\": \"lib/ansible/modules/network/f5/bigip_device_sshd.py\", \n  \"/modules/network/f5/bigip_facts.py\": \"lib/ansible/modules/network/f5/bigip_facts.py\", \n  \"/modules/network/f5/bigip_gtm_datacenter.py\": \"lib/ansible/modules/network/f5/bigip_gtm_datacenter.py\", \n  \"/modules/network/f5/bigip_gtm_facts.py\": \"lib/ansible/modules/network/f5/bigip_gtm_facts.py\", \n  \"/modules/network/f5/bigip_gtm_pool.py\": \"lib/ansible/modules/network/f5/bigip_gtm_pool.py\", \n  \"/modules/network/f5/bigip_gtm_virtual_server.py\": \"lib/ansible/modules/network/f5/bigip_gtm_virtual_server.py\", \n  \"/modules/network/f5/bigip_gtm_wide_ip.py\": \"lib/ansible/modules/network/f5/bigip_gtm_wide_ip.py\", \n  \"/modules/network/f5/bigip_hostname.py\": \"lib/ansible/modules/network/f5/bigip_hostname.py\", \n  \"/modules/network/f5/bigip_iapp_service.py\": \"lib/ansible/modules/network/f5/bigip_iapp_service.py\", \n  \"/modules/network/f5/bigip_iapp_template.py\": \"lib/ansible/modules/network/f5/bigip_iapp_template.py\", \n  \"/modules/network/f5/bigip_iapplx_package.py\": \"lib/ansible/modules/network/f5/bigip_iapplx_package.py\", \n  \"/modules/network/f5/bigip_irule.py\": \"lib/ansible/modules/network/f5/bigip_irule.py\", \n  \"/modules/network/f5/bigip_monitor_http.py\": \"lib/ansible/modules/network/f5/bigip_monitor_http.py\", \n  \"/modules/network/f5/bigip_monitor_https.py\": \"lib/ansible/modules/network/f5/bigip_monitor_https.py\", \n  \"/modules/network/f5/bigip_monitor_tcp.py\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp.py\", \n  \"/modules/network/f5/bigip_monitor_tcp_echo.py\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp_echo.py\", \n  \"/modules/network/f5/bigip_monitor_tcp_half_open.py\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp_half_open.py\", \n  \"/modules/network/f5/bigip_node.py\": \"lib/ansible/modules/network/f5/bigip_node.py\", \n  \"/modules/network/f5/bigip_partition.py\": \"lib/ansible/modules/network/f5/bigip_partition.py\", \n  \"/modules/network/f5/bigip_policy.py\": \"lib/ansible/modules/network/f5/bigip_policy.py\", \n  \"/modules/network/f5/bigip_pool.py\": \"lib/ansible/modules/network/f5/bigip_pool.py\", \n  \"/modules/network/f5/bigip_pool_member.py\": \"lib/ansible/modules/network/f5/bigip_pool_member.py\", \n  \"/modules/network/f5/bigip_provision.py\": \"lib/ansible/modules/network/f5/bigip_provision.py\", \n  \"/modules/network/f5/bigip_qkview.py\": \"lib/ansible/modules/network/f5/bigip_qkview.py\", \n  \"/modules/network/f5/bigip_remote_syslog.py\": \"lib/ansible/modules/network/f5/bigip_remote_syslog.py\", \n  \"/modules/network/f5/bigip_routedomain.py\": \"lib/ansible/modules/network/f5/bigip_routedomain.py\", \n  \"/modules/network/f5/bigip_selfip.py\": \"lib/ansible/modules/network/f5/bigip_selfip.py\", \n  \"/modules/network/f5/bigip_snat_pool.py\": \"lib/ansible/modules/network/f5/bigip_snat_pool.py\", \n  \"/modules/network/f5/bigip_snmp.py\": \"lib/ansible/modules/network/f5/bigip_snmp.py\", \n  \"/modules/network/f5/bigip_snmp_trap.py\": \"lib/ansible/modules/network/f5/bigip_snmp_trap.py\", \n  \"/modules/network/f5/bigip_ssl_certificate.py\": \"lib/ansible/modules/network/f5/bigip_ssl_certificate.py\", \n  \"/modules/network/f5/bigip_ssl_key.py\": \"lib/ansible/modules/network/f5/bigip_ssl_key.py\", \n  \"/modules/network/f5/bigip_sys_db.py\": \"lib/ansible/modules/network/f5/bigip_sys_db.py\", \n  \"/modules/network/f5/bigip_sys_global.py\": \"lib/ansible/modules/network/f5/bigip_sys_global.py\", \n  \"/modules/network/f5/bigip_ucs.py\": \"lib/ansible/modules/network/f5/bigip_ucs.py\", \n  \"/modules/network/f5/bigip_user.py\": \"lib/ansible/modules/network/f5/bigip_user.py\", \n  \"/modules/network/f5/bigip_virtual_address.py\": \"lib/ansible/modules/network/f5/bigip_virtual_address.py\", \n  \"/modules/network/f5/bigip_virtual_server.py\": \"lib/ansible/modules/network/f5/bigip_virtual_server.py\", \n  \"/modules/network/f5/bigip_vlan.py\": \"lib/ansible/modules/network/f5/bigip_vlan.py\", \n  \"/modules/network/f5/bigip_wait.py\": \"lib/ansible/modules/network/f5/bigip_wait.py\", \n  \"/modules/network/fortios/fortios_address.py\": \"lib/ansible/modules/network/fortios/fortios_address.py\", \n  \"/modules/network/fortios/fortios_config.py\": \"lib/ansible/modules/network/fortios/fortios_config.py\", \n  \"/modules/network/fortios/fortios_ipv4_policy.py\": \"lib/ansible/modules/network/fortios/fortios_ipv4_policy.py\", \n  \"/modules/network/illumos/dladm_etherstub.py\": \"lib/ansible/modules/network/illumos/dladm_etherstub.py\", \n  \"/modules/network/illumos/dladm_iptun.py\": \"lib/ansible/modules/network/illumos/dladm_iptun.py\", \n  \"/modules/network/illumos/dladm_linkprop.py\": \"lib/ansible/modules/network/illumos/dladm_linkprop.py\", \n  \"/modules/network/illumos/dladm_vlan.py\": \"lib/ansible/modules/network/illumos/dladm_vlan.py\", \n  \"/modules/network/illumos/dladm_vnic.py\": \"lib/ansible/modules/network/illumos/dladm_vnic.py\", \n  \"/modules/network/illumos/flowadm.py\": \"lib/ansible/modules/network/illumos/flowadm.py\", \n  \"/modules/network/illumos/ipadm_addr.py\": \"lib/ansible/modules/network/illumos/ipadm_addr.py\", \n  \"/modules/network/illumos/ipadm_addrprop.py\": \"lib/ansible/modules/network/illumos/ipadm_addrprop.py\", \n  \"/modules/network/illumos/ipadm_if.py\": \"lib/ansible/modules/network/illumos/ipadm_if.py\", \n  \"/modules/network/illumos/ipadm_ifprop.py\": \"lib/ansible/modules/network/illumos/ipadm_ifprop.py\", \n  \"/modules/network/illumos/ipadm_prop.py\": \"lib/ansible/modules/network/illumos/ipadm_prop.py\", \n  \"/modules/network/interface/net_interface.py\": \"lib/ansible/modules/network/interface/net_interface.py\", \n  \"/modules/network/interface/net_linkagg.py\": \"lib/ansible/modules/network/interface/net_linkagg.py\", \n  \"/modules/network/interface/net_lldp_interface.py\": \"lib/ansible/modules/network/interface/net_lldp_interface.py\", \n  \"/modules/network/ios/ios_banner.py\": \"lib/ansible/modules/network/ios/ios_banner.py\", \n  \"/modules/network/ios/ios_command.py\": \"lib/ansible/modules/network/ios/ios_command.py\", \n  \"/modules/network/ios/ios_config.py\": \"lib/ansible/modules/network/ios/ios_config.py\", \n  \"/modules/network/ios/ios_facts.py\": \"lib/ansible/modules/network/ios/ios_facts.py\", \n  \"/modules/network/ios/ios_interface.py\": \"lib/ansible/modules/network/ios/ios_interface.py\", \n  \"/modules/network/ios/ios_logging.py\": \"lib/ansible/modules/network/ios/ios_logging.py\", \n  \"/modules/network/ios/ios_ping.py\": \"lib/ansible/modules/network/ios/ios_ping.py\", \n  \"/modules/network/ios/ios_static_route.py\": \"lib/ansible/modules/network/ios/ios_static_route.py\", \n  \"/modules/network/ios/ios_system.py\": \"lib/ansible/modules/network/ios/ios_system.py\", \n  \"/modules/network/ios/ios_user.py\": \"lib/ansible/modules/network/ios/ios_user.py\", \n  \"/modules/network/ios/ios_vrf.py\": \"lib/ansible/modules/network/ios/ios_vrf.py\", \n  \"/modules/network/iosxr/iosxr_banner.py\": \"lib/ansible/modules/network/iosxr/iosxr_banner.py\", \n  \"/modules/network/iosxr/iosxr_command.py\": \"lib/ansible/modules/network/iosxr/iosxr_command.py\", \n  \"/modules/network/iosxr/iosxr_config.py\": \"lib/ansible/modules/network/iosxr/iosxr_config.py\", \n  \"/modules/network/iosxr/iosxr_facts.py\": \"lib/ansible/modules/network/iosxr/iosxr_facts.py\", \n  \"/modules/network/iosxr/iosxr_interface.py\": \"lib/ansible/modules/network/iosxr/iosxr_interface.py\", \n  \"/modules/network/iosxr/iosxr_logging.py\": \"lib/ansible/modules/network/iosxr/iosxr_logging.py\", \n  \"/modules/network/iosxr/iosxr_netconf.py\": \"lib/ansible/modules/network/iosxr/iosxr_netconf.py\", \n  \"/modules/network/iosxr/iosxr_system.py\": \"lib/ansible/modules/network/iosxr/iosxr_system.py\", \n  \"/modules/network/iosxr/iosxr_user.py\": \"lib/ansible/modules/network/iosxr/iosxr_user.py\", \n  \"/modules/network/ironware/ironware_command.py\": \"lib/ansible/modules/network/ironware/ironware_command.py\", \n  \"/modules/network/junos/junos_banner.py\": \"lib/ansible/modules/network/junos/junos_banner.py\", \n  \"/modules/network/junos/junos_command.py\": \"lib/ansible/modules/network/junos/junos_command.py\", \n  \"/modules/network/junos/junos_config.py\": \"lib/ansible/modules/network/junos/junos_config.py\", \n  \"/modules/network/junos/junos_facts.py\": \"lib/ansible/modules/network/junos/junos_facts.py\", \n  \"/modules/network/junos/junos_interface.py\": \"lib/ansible/modules/network/junos/junos_interface.py\", \n  \"/modules/network/junos/junos_l3_interface.py\": \"lib/ansible/modules/network/junos/junos_l3_interface.py\", \n  \"/modules/network/junos/junos_linkagg.py\": \"lib/ansible/modules/network/junos/junos_linkagg.py\", \n  \"/modules/network/junos/junos_lldp.py\": \"lib/ansible/modules/network/junos/junos_lldp.py\", \n  \"/modules/network/junos/junos_lldp_interface.py\": \"lib/ansible/modules/network/junos/junos_lldp_interface.py\", \n  \"/modules/network/junos/junos_logging.py\": \"lib/ansible/modules/network/junos/junos_logging.py\", \n  \"/modules/network/junos/junos_netconf.py\": \"lib/ansible/modules/network/junos/junos_netconf.py\", \n  \"/modules/network/junos/junos_package.py\": \"lib/ansible/modules/network/junos/junos_package.py\", \n  \"/modules/network/junos/junos_rpc.py\": \"lib/ansible/modules/network/junos/junos_rpc.py\", \n  \"/modules/network/junos/junos_static_route.py\": \"lib/ansible/modules/network/junos/junos_static_route.py\", \n  \"/modules/network/junos/junos_system.py\": \"lib/ansible/modules/network/junos/junos_system.py\", \n  \"/modules/network/junos/junos_user.py\": \"lib/ansible/modules/network/junos/junos_user.py\", \n  \"/modules/network/junos/junos_vlan.py\": \"lib/ansible/modules/network/junos/junos_vlan.py\", \n  \"/modules/network/junos/junos_vrf.py\": \"lib/ansible/modules/network/junos/junos_vrf.py\", \n  \"/modules/network/layer2/net_l2_interface.py\": \"lib/ansible/modules/network/layer2/net_l2_interface.py\", \n  \"/modules/network/layer2/net_vlan.py\": \"lib/ansible/modules/network/layer2/net_vlan.py\", \n  \"/modules/network/layer3/net_l3_interface.py\": \"lib/ansible/modules/network/layer3/net_l3_interface.py\", \n  \"/modules/network/layer3/net_vrf.py\": \"lib/ansible/modules/network/layer3/net_vrf.py\", \n  \"/modules/network/lenovo/cnos_backup.py\": \"lib/ansible/modules/network/lenovo/cnos_backup.py\", \n  \"/modules/network/lenovo/cnos_bgp.py\": \"lib/ansible/modules/network/lenovo/cnos_bgp.py\", \n  \"/modules/network/lenovo/cnos_command.py\": \"lib/ansible/modules/network/lenovo/cnos_command.py\", \n  \"/modules/network/lenovo/cnos_conditional_command.py\": \"lib/ansible/modules/network/lenovo/cnos_conditional_command.py\", \n  \"/modules/network/lenovo/cnos_conditional_template.py\": \"lib/ansible/modules/network/lenovo/cnos_conditional_template.py\", \n  \"/modules/network/lenovo/cnos_factory.py\": \"lib/ansible/modules/network/lenovo/cnos_factory.py\", \n  \"/modules/network/lenovo/cnos_facts.py\": \"lib/ansible/modules/network/lenovo/cnos_facts.py\", \n  \"/modules/network/lenovo/cnos_image.py\": \"lib/ansible/modules/network/lenovo/cnos_image.py\", \n  \"/modules/network/lenovo/cnos_interface.py\": \"lib/ansible/modules/network/lenovo/cnos_interface.py\", \n  \"/modules/network/lenovo/cnos_portchannel.py\": \"lib/ansible/modules/network/lenovo/cnos_portchannel.py\", \n  \"/modules/network/lenovo/cnos_reload.py\": \"lib/ansible/modules/network/lenovo/cnos_reload.py\", \n  \"/modules/network/lenovo/cnos_rollback.py\": \"lib/ansible/modules/network/lenovo/cnos_rollback.py\", \n  \"/modules/network/lenovo/cnos_save.py\": \"lib/ansible/modules/network/lenovo/cnos_save.py\", \n  \"/modules/network/lenovo/cnos_showrun.py\": \"lib/ansible/modules/network/lenovo/cnos_showrun.py\", \n  \"/modules/network/lenovo/cnos_template.py\": \"lib/ansible/modules/network/lenovo/cnos_template.py\", \n  \"/modules/network/lenovo/cnos_vlag.py\": \"lib/ansible/modules/network/lenovo/cnos_vlag.py\", \n  \"/modules/network/lenovo/cnos_vlan.py\": \"lib/ansible/modules/network/lenovo/cnos_vlan.py\", \n  \"/modules/network/netconf/netconf_config.py\": \"lib/ansible/modules/network/netconf/netconf_config.py\", \n  \"/modules/network/netscaler/netscaler_cs_action.py\": \"lib/ansible/modules/network/netscaler/netscaler_cs_action.py\", \n  \"/modules/network/netscaler/netscaler_cs_policy.py\": \"lib/ansible/modules/network/netscaler/netscaler_cs_policy.py\", \n  \"/modules/network/netscaler/netscaler_cs_vserver.py\": \"lib/ansible/modules/network/netscaler/netscaler_cs_vserver.py\", \n  \"/modules/network/netscaler/netscaler_gslb_service.py\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_service.py\", \n  \"/modules/network/netscaler/netscaler_gslb_site.py\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_site.py\", \n  \"/modules/network/netscaler/netscaler_gslb_vserver.py\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_vserver.py\", \n  \"/modules/network/netscaler/netscaler_lb_monitor.py\": \"lib/ansible/modules/network/netscaler/netscaler_lb_monitor.py\", \n  \"/modules/network/netscaler/netscaler_lb_vserver.py\": \"lib/ansible/modules/network/netscaler/netscaler_lb_vserver.py\", \n  \"/modules/network/netscaler/netscaler_save_config.py\": \"lib/ansible/modules/network/netscaler/netscaler_save_config.py\", \n  \"/modules/network/netscaler/netscaler_server.py\": \"lib/ansible/modules/network/netscaler/netscaler_server.py\", \n  \"/modules/network/netscaler/netscaler_service.py\": \"lib/ansible/modules/network/netscaler/netscaler_service.py\", \n  \"/modules/network/netscaler/netscaler_servicegroup.py\": \"lib/ansible/modules/network/netscaler/netscaler_servicegroup.py\", \n  \"/modules/network/netscaler/netscaler_ssl_certkey.py\": \"lib/ansible/modules/network/netscaler/netscaler_ssl_certkey.py\", \n  \"/modules/network/netvisor/pn_cluster.py\": \"lib/ansible/modules/network/netvisor/pn_cluster.py\", \n  \"/modules/network/netvisor/pn_ospf.py\": \"lib/ansible/modules/network/netvisor/pn_ospf.py\", \n  \"/modules/network/netvisor/pn_ospfarea.py\": \"lib/ansible/modules/network/netvisor/pn_ospfarea.py\", \n  \"/modules/network/netvisor/pn_show.py\": \"lib/ansible/modules/network/netvisor/pn_show.py\", \n  \"/modules/network/netvisor/pn_trunk.py\": \"lib/ansible/modules/network/netvisor/pn_trunk.py\", \n  \"/modules/network/netvisor/pn_vlag.py\": \"lib/ansible/modules/network/netvisor/pn_vlag.py\", \n  \"/modules/network/netvisor/pn_vlan.py\": \"lib/ansible/modules/network/netvisor/pn_vlan.py\", \n  \"/modules/network/netvisor/pn_vrouter.py\": \"lib/ansible/modules/network/netvisor/pn_vrouter.py\", \n  \"/modules/network/netvisor/pn_vrouterbgp.py\": \"lib/ansible/modules/network/netvisor/pn_vrouterbgp.py\", \n  \"/modules/network/netvisor/pn_vrouterif.py\": \"lib/ansible/modules/network/netvisor/pn_vrouterif.py\", \n  \"/modules/network/netvisor/pn_vrouterlbif.py\": \"lib/ansible/modules/network/netvisor/pn_vrouterlbif.py\", \n  \"/modules/network/nuage/nuage_vspk.py\": \"lib/ansible/modules/network/nuage/nuage_vspk.py\", \n  \"/modules/network/nxos/_nxos_mtu.py\": \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n  \"/modules/network/nxos/nxos_aaa_server.py\": \"lib/ansible/modules/network/nxos/nxos_aaa_server.py\", \n  \"/modules/network/nxos/nxos_aaa_server_host.py\": \"lib/ansible/modules/network/nxos/nxos_aaa_server_host.py\", \n  \"/modules/network/nxos/nxos_acl.py\": \"lib/ansible/modules/network/nxos/nxos_acl.py\", \n  \"/modules/network/nxos/nxos_acl_interface.py\": \"lib/ansible/modules/network/nxos/nxos_acl_interface.py\", \n  \"/modules/network/nxos/nxos_banner.py\": \"lib/ansible/modules/network/nxos/nxos_banner.py\", \n  \"/modules/network/nxos/nxos_bgp.py\": \"lib/ansible/modules/network/nxos/nxos_bgp.py\", \n  \"/modules/network/nxos/nxos_bgp_af.py\": \"lib/ansible/modules/network/nxos/nxos_bgp_af.py\", \n  \"/modules/network/nxos/nxos_bgp_neighbor.py\": \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor.py\", \n  \"/modules/network/nxos/nxos_bgp_neighbor_af.py\": \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor_af.py\", \n  \"/modules/network/nxos/nxos_command.py\": \"lib/ansible/modules/network/nxos/nxos_command.py\", \n  \"/modules/network/nxos/nxos_config.py\": \"lib/ansible/modules/network/nxos/nxos_config.py\", \n  \"/modules/network/nxos/nxos_evpn_global.py\": \"lib/ansible/modules/network/nxos/nxos_evpn_global.py\", \n  \"/modules/network/nxos/nxos_evpn_vni.py\": \"lib/ansible/modules/network/nxos/nxos_evpn_vni.py\", \n  \"/modules/network/nxos/nxos_facts.py\": \"lib/ansible/modules/network/nxos/nxos_facts.py\", \n  \"/modules/network/nxos/nxos_feature.py\": \"lib/ansible/modules/network/nxos/nxos_feature.py\", \n  \"/modules/network/nxos/nxos_file_copy.py\": \"lib/ansible/modules/network/nxos/nxos_file_copy.py\", \n  \"/modules/network/nxos/nxos_gir.py\": \"lib/ansible/modules/network/nxos/nxos_gir.py\", \n  \"/modules/network/nxos/nxos_gir_profile_management.py\": \"lib/ansible/modules/network/nxos/nxos_gir_profile_management.py\", \n  \"/modules/network/nxos/nxos_hsrp.py\": \"lib/ansible/modules/network/nxos/nxos_hsrp.py\", \n  \"/modules/network/nxos/nxos_igmp.py\": \"lib/ansible/modules/network/nxos/nxos_igmp.py\", \n  \"/modules/network/nxos/nxos_igmp_interface.py\": \"lib/ansible/modules/network/nxos/nxos_igmp_interface.py\", \n  \"/modules/network/nxos/nxos_igmp_snooping.py\": \"lib/ansible/modules/network/nxos/nxos_igmp_snooping.py\", \n  \"/modules/network/nxos/nxos_install_os.py\": \"lib/ansible/modules/network/nxos/nxos_install_os.py\", \n  \"/modules/network/nxos/nxos_interface.py\": \"lib/ansible/modules/network/nxos/nxos_interface.py\", \n  \"/modules/network/nxos/nxos_interface_ospf.py\": \"lib/ansible/modules/network/nxos/nxos_interface_ospf.py\", \n  \"/modules/network/nxos/nxos_ip_interface.py\": \"lib/ansible/modules/network/nxos/nxos_ip_interface.py\", \n  \"/modules/network/nxos/nxos_logging.py\": \"lib/ansible/modules/network/nxos/nxos_logging.py\", \n  \"/modules/network/nxos/nxos_mtu.py\": \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n  \"/modules/network/nxos/nxos_ntp.py\": \"lib/ansible/modules/network/nxos/nxos_ntp.py\", \n  \"/modules/network/nxos/nxos_ntp_auth.py\": \"lib/ansible/modules/network/nxos/nxos_ntp_auth.py\", \n  \"/modules/network/nxos/nxos_ntp_options.py\": \"lib/ansible/modules/network/nxos/nxos_ntp_options.py\", \n  \"/modules/network/nxos/nxos_nxapi.py\": \"lib/ansible/modules/network/nxos/nxos_nxapi.py\", \n  \"/modules/network/nxos/nxos_ospf.py\": \"lib/ansible/modules/network/nxos/nxos_ospf.py\", \n  \"/modules/network/nxos/nxos_ospf_vrf.py\": \"lib/ansible/modules/network/nxos/nxos_ospf_vrf.py\", \n  \"/modules/network/nxos/nxos_overlay_global.py\": \"lib/ansible/modules/network/nxos/nxos_overlay_global.py\", \n  \"/modules/network/nxos/nxos_pim.py\": \"lib/ansible/modules/network/nxos/nxos_pim.py\", \n  \"/modules/network/nxos/nxos_pim_interface.py\": \"lib/ansible/modules/network/nxos/nxos_pim_interface.py\", \n  \"/modules/network/nxos/nxos_pim_rp_address.py\": \"lib/ansible/modules/network/nxos/nxos_pim_rp_address.py\", \n  \"/modules/network/nxos/nxos_ping.py\": \"lib/ansible/modules/network/nxos/nxos_ping.py\", \n  \"/modules/network/nxos/nxos_portchannel.py\": \"lib/ansible/modules/network/nxos/nxos_portchannel.py\", \n  \"/modules/network/nxos/nxos_reboot.py\": \"lib/ansible/modules/network/nxos/nxos_reboot.py\", \n  \"/modules/network/nxos/nxos_rollback.py\": \"lib/ansible/modules/network/nxos/nxos_rollback.py\", \n  \"/modules/network/nxos/nxos_smu.py\": \"lib/ansible/modules/network/nxos/nxos_smu.py\", \n  \"/modules/network/nxos/nxos_snapshot.py\": \"lib/ansible/modules/network/nxos/nxos_snapshot.py\", \n  \"/modules/network/nxos/nxos_snmp_community.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_community.py\", \n  \"/modules/network/nxos/nxos_snmp_contact.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_contact.py\", \n  \"/modules/network/nxos/nxos_snmp_host.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_host.py\", \n  \"/modules/network/nxos/nxos_snmp_location.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_location.py\", \n  \"/modules/network/nxos/nxos_snmp_traps.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_traps.py\", \n  \"/modules/network/nxos/nxos_snmp_user.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_user.py\", \n  \"/modules/network/nxos/nxos_static_route.py\": \"lib/ansible/modules/network/nxos/nxos_static_route.py\", \n  \"/modules/network/nxos/nxos_switchport.py\": \"lib/ansible/modules/network/nxos/nxos_switchport.py\", \n  \"/modules/network/nxos/nxos_system.py\": \"lib/ansible/modules/network/nxos/nxos_system.py\", \n  \"/modules/network/nxos/nxos_udld.py\": \"lib/ansible/modules/network/nxos/nxos_udld.py\", \n  \"/modules/network/nxos/nxos_udld_interface.py\": \"lib/ansible/modules/network/nxos/nxos_udld_interface.py\", \n  \"/modules/network/nxos/nxos_user.py\": \"lib/ansible/modules/network/nxos/nxos_user.py\", \n  \"/modules/network/nxos/nxos_vlan.py\": \"lib/ansible/modules/network/nxos/nxos_vlan.py\", \n  \"/modules/network/nxos/nxos_vpc.py\": \"lib/ansible/modules/network/nxos/nxos_vpc.py\", \n  \"/modules/network/nxos/nxos_vpc_interface.py\": \"lib/ansible/modules/network/nxos/nxos_vpc_interface.py\", \n  \"/modules/network/nxos/nxos_vrf.py\": \"lib/ansible/modules/network/nxos/nxos_vrf.py\", \n  \"/modules/network/nxos/nxos_vrf_af.py\": \"lib/ansible/modules/network/nxos/nxos_vrf_af.py\", \n  \"/modules/network/nxos/nxos_vrf_interface.py\": \"lib/ansible/modules/network/nxos/nxos_vrf_interface.py\", \n  \"/modules/network/nxos/nxos_vrrp.py\": \"lib/ansible/modules/network/nxos/nxos_vrrp.py\", \n  \"/modules/network/nxos/nxos_vtp_domain.py\": \"lib/ansible/modules/network/nxos/nxos_vtp_domain.py\", \n  \"/modules/network/nxos/nxos_vtp_password.py\": \"lib/ansible/modules/network/nxos/nxos_vtp_password.py\", \n  \"/modules/network/nxos/nxos_vtp_version.py\": \"lib/ansible/modules/network/nxos/nxos_vtp_version.py\", \n  \"/modules/network/nxos/nxos_vxlan_vtep.py\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep.py\", \n  \"/modules/network/nxos/nxos_vxlan_vtep_vni.py\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\", \n  \"/modules/network/ordnance/ordnance_config.py\": \"lib/ansible/modules/network/ordnance/ordnance_config.py\", \n  \"/modules/network/ordnance/ordnance_facts.py\": \"lib/ansible/modules/network/ordnance/ordnance_facts.py\", \n  \"/modules/network/ovs/openvswitch_bridge.py\": \"lib/ansible/modules/network/ovs/openvswitch_bridge.py\", \n  \"/modules/network/ovs/openvswitch_db.py\": \"lib/ansible/modules/network/ovs/openvswitch_db.py\", \n  \"/modules/network/ovs/openvswitch_port.py\": \"lib/ansible/modules/network/ovs/openvswitch_port.py\", \n  \"/modules/network/panos/panos_admin.py\": \"lib/ansible/modules/network/panos/panos_admin.py\", \n  \"/modules/network/panos/panos_admpwd.py\": \"lib/ansible/modules/network/panos/panos_admpwd.py\", \n  \"/modules/network/panos/panos_cert_gen_ssh.py\": \"lib/ansible/modules/network/panos/panos_cert_gen_ssh.py\", \n  \"/modules/network/panos/panos_check.py\": \"lib/ansible/modules/network/panos/panos_check.py\", \n  \"/modules/network/panos/panos_commit.py\": \"lib/ansible/modules/network/panos/panos_commit.py\", \n  \"/modules/network/panos/panos_dag.py\": \"lib/ansible/modules/network/panos/panos_dag.py\", \n  \"/modules/network/panos/panos_import.py\": \"lib/ansible/modules/network/panos/panos_import.py\", \n  \"/modules/network/panos/panos_interface.py\": \"lib/ansible/modules/network/panos/panos_interface.py\", \n  \"/modules/network/panos/panos_lic.py\": \"lib/ansible/modules/network/panos/panos_lic.py\", \n  \"/modules/network/panos/panos_loadcfg.py\": \"lib/ansible/modules/network/panos/panos_loadcfg.py\", \n  \"/modules/network/panos/panos_mgtconfig.py\": \"lib/ansible/modules/network/panos/panos_mgtconfig.py\", \n  \"/modules/network/panos/panos_nat_policy.py\": \"lib/ansible/modules/network/panos/panos_nat_policy.py\", \n  \"/modules/network/panos/panos_nat_rule.py\": \"lib/ansible/modules/network/panos/panos_nat_rule.py\", \n  \"/modules/network/panos/panos_object.py\": \"lib/ansible/modules/network/panos/panos_object.py\", \n  \"/modules/network/panos/panos_pg.py\": \"lib/ansible/modules/network/panos/panos_pg.py\", \n  \"/modules/network/panos/panos_restart.py\": \"lib/ansible/modules/network/panos/panos_restart.py\", \n  \"/modules/network/panos/panos_sag.py\": \"lib/ansible/modules/network/panos/panos_sag.py\", \n  \"/modules/network/panos/panos_security_policy.py\": \"lib/ansible/modules/network/panos/panos_security_policy.py\", \n  \"/modules/network/panos/panos_security_rule.py\": \"lib/ansible/modules/network/panos/panos_security_rule.py\", \n  \"/modules/network/protocol/net_lldp.py\": \"lib/ansible/modules/network/protocol/net_lldp.py\", \n  \"/modules/network/radware/vdirect_file.py\": \"lib/ansible/modules/network/radware/vdirect_file.py\", \n  \"/modules/network/routing/net_static_route.py\": \"lib/ansible/modules/network/routing/net_static_route.py\", \n  \"/modules/network/sros/sros_command.py\": \"lib/ansible/modules/network/sros/sros_command.py\", \n  \"/modules/network/sros/sros_config.py\": \"lib/ansible/modules/network/sros/sros_config.py\", \n  \"/modules/network/sros/sros_rollback.py\": \"lib/ansible/modules/network/sros/sros_rollback.py\", \n  \"/modules/network/system/net_banner.py\": \"lib/ansible/modules/network/system/net_banner.py\", \n  \"/modules/network/system/net_logging.py\": \"lib/ansible/modules/network/system/net_logging.py\", \n  \"/modules/network/system/net_ping.py\": \"lib/ansible/modules/network/system/net_ping.py\", \n  \"/modules/network/system/net_system.py\": \"lib/ansible/modules/network/system/net_system.py\", \n  \"/modules/network/system/net_user.py\": \"lib/ansible/modules/network/system/net_user.py\", \n  \"/modules/network/vyos/vyos_banner.py\": \"lib/ansible/modules/network/vyos/vyos_banner.py\", \n  \"/modules/network/vyos/vyos_command.py\": \"lib/ansible/modules/network/vyos/vyos_command.py\", \n  \"/modules/network/vyos/vyos_config.py\": \"lib/ansible/modules/network/vyos/vyos_config.py\", \n  \"/modules/network/vyos/vyos_facts.py\": \"lib/ansible/modules/network/vyos/vyos_facts.py\", \n  \"/modules/network/vyos/vyos_interface.py\": \"lib/ansible/modules/network/vyos/vyos_interface.py\", \n  \"/modules/network/vyos/vyos_l3_interface.py\": \"lib/ansible/modules/network/vyos/vyos_l3_interface.py\", \n  \"/modules/network/vyos/vyos_linkagg.py\": \"lib/ansible/modules/network/vyos/vyos_linkagg.py\", \n  \"/modules/network/vyos/vyos_lldp.py\": \"lib/ansible/modules/network/vyos/vyos_lldp.py\", \n  \"/modules/network/vyos/vyos_lldp_interface.py\": \"lib/ansible/modules/network/vyos/vyos_lldp_interface.py\", \n  \"/modules/network/vyos/vyos_logging.py\": \"lib/ansible/modules/network/vyos/vyos_logging.py\", \n  \"/modules/network/vyos/vyos_static_route.py\": \"lib/ansible/modules/network/vyos/vyos_static_route.py\", \n  \"/modules/network/vyos/vyos_system.py\": \"lib/ansible/modules/network/vyos/vyos_system.py\", \n  \"/modules/network/vyos/vyos_user.py\": \"lib/ansible/modules/network/vyos/vyos_user.py\", \n  \"/modules/network/vyos/vyos_vlan.py\": \"lib/ansible/modules/network/vyos/vyos_vlan.py\", \n  \"/modules/notification/bearychat.py\": \"lib/ansible/modules/notification/bearychat.py\", \n  \"/modules/notification/campfire.py\": \"lib/ansible/modules/notification/campfire.py\", \n  \"/modules/notification/catapult.py\": \"lib/ansible/modules/notification/catapult.py\", \n  \"/modules/notification/cisco_spark.py\": \"lib/ansible/modules/notification/cisco_spark.py\", \n  \"/modules/notification/flowdock.py\": \"lib/ansible/modules/notification/flowdock.py\", \n  \"/modules/notification/grove.py\": \"lib/ansible/modules/notification/grove.py\", \n  \"/modules/notification/hall.py\": \"lib/ansible/modules/notification/hall.py\", \n  \"/modules/notification/hipchat.py\": \"lib/ansible/modules/notification/hipchat.py\", \n  \"/modules/notification/irc.py\": \"lib/ansible/modules/notification/irc.py\", \n  \"/modules/notification/jabber.py\": \"lib/ansible/modules/notification/jabber.py\", \n  \"/modules/notification/mail.py\": \"lib/ansible/modules/notification/mail.py\", \n  \"/modules/notification/mattermost.py\": \"lib/ansible/modules/notification/mattermost.py\", \n  \"/modules/notification/mqtt.py\": \"lib/ansible/modules/notification/mqtt.py\", \n  \"/modules/notification/nexmo.py\": \"lib/ansible/modules/notification/nexmo.py\", \n  \"/modules/notification/office_365_connector_card.py\": \"lib/ansible/modules/notification/office_365_connector_card.py\", \n  \"/modules/notification/osx_say.py\": \"lib/ansible/modules/notification/osx_say.py\", \n  \"/modules/notification/pushbullet.py\": \"lib/ansible/modules/notification/pushbullet.py\", \n  \"/modules/notification/pushover.py\": \"lib/ansible/modules/notification/pushover.py\", \n  \"/modules/notification/rocketchat.py\": \"lib/ansible/modules/notification/rocketchat.py\", \n  \"/modules/notification/sendgrid.py\": \"lib/ansible/modules/notification/sendgrid.py\", \n  \"/modules/notification/slack.py\": \"lib/ansible/modules/notification/slack.py\", \n  \"/modules/notification/snow_record.py\": \"lib/ansible/modules/notification/snow_record.py\", \n  \"/modules/notification/syslogger.py\": \"lib/ansible/modules/notification/syslogger.py\", \n  \"/modules/notification/telegram.py\": \"lib/ansible/modules/notification/telegram.py\", \n  \"/modules/notification/twilio.py\": \"lib/ansible/modules/notification/twilio.py\", \n  \"/modules/notification/typetalk.py\": \"lib/ansible/modules/notification/typetalk.py\", \n  \"/modules/packaging/language/bower.py\": \"lib/ansible/modules/packaging/language/bower.py\", \n  \"/modules/packaging/language/bundler.py\": \"lib/ansible/modules/packaging/language/bundler.py\", \n  \"/modules/packaging/language/composer.py\": \"lib/ansible/modules/packaging/language/composer.py\", \n  \"/modules/packaging/language/cpanm.py\": \"lib/ansible/modules/packaging/language/cpanm.py\", \n  \"/modules/packaging/language/easy_install.py\": \"lib/ansible/modules/packaging/language/easy_install.py\", \n  \"/modules/packaging/language/gem.py\": \"lib/ansible/modules/packaging/language/gem.py\", \n  \"/modules/packaging/language/maven_artifact.py\": \"lib/ansible/modules/packaging/language/maven_artifact.py\", \n  \"/modules/packaging/language/npm.py\": \"lib/ansible/modules/packaging/language/npm.py\", \n  \"/modules/packaging/language/pear.py\": \"lib/ansible/modules/packaging/language/pear.py\", \n  \"/modules/packaging/language/pip.py\": \"lib/ansible/modules/packaging/language/pip.py\", \n  \"/modules/packaging/os/apk.py\": \"lib/ansible/modules/packaging/os/apk.py\", \n  \"/modules/packaging/os/apt.py\": \"lib/ansible/modules/packaging/os/apt.py\", \n  \"/modules/packaging/os/apt_key.py\": \"lib/ansible/modules/packaging/os/apt_key.py\", \n  \"/modules/packaging/os/apt_repository.py\": \"lib/ansible/modules/packaging/os/apt_repository.py\", \n  \"/modules/packaging/os/apt_rpm.py\": \"lib/ansible/modules/packaging/os/apt_rpm.py\", \n  \"/modules/packaging/os/dnf.py\": \"lib/ansible/modules/packaging/os/dnf.py\", \n  \"/modules/packaging/os/dpkg_selections.py\": \"lib/ansible/modules/packaging/os/dpkg_selections.py\", \n  \"/modules/packaging/os/homebrew.py\": \"lib/ansible/modules/packaging/os/homebrew.py\", \n  \"/modules/packaging/os/homebrew_cask.py\": \"lib/ansible/modules/packaging/os/homebrew_cask.py\", \n  \"/modules/packaging/os/homebrew_tap.py\": \"lib/ansible/modules/packaging/os/homebrew_tap.py\", \n  \"/modules/packaging/os/layman.py\": \"lib/ansible/modules/packaging/os/layman.py\", \n  \"/modules/packaging/os/macports.py\": \"lib/ansible/modules/packaging/os/macports.py\", \n  \"/modules/packaging/os/openbsd_pkg.py\": \"lib/ansible/modules/packaging/os/openbsd_pkg.py\", \n  \"/modules/packaging/os/opkg.py\": \"lib/ansible/modules/packaging/os/opkg.py\", \n  \"/modules/packaging/os/package.py\": \"lib/ansible/modules/packaging/os/package.py\", \n  \"/modules/packaging/os/pacman.py\": \"lib/ansible/modules/packaging/os/pacman.py\", \n  \"/modules/packaging/os/pkg5.py\": \"lib/ansible/modules/packaging/os/pkg5.py\", \n  \"/modules/packaging/os/pkg5_publisher.py\": \"lib/ansible/modules/packaging/os/pkg5_publisher.py\", \n  \"/modules/packaging/os/pkgin.py\": \"lib/ansible/modules/packaging/os/pkgin.py\", \n  \"/modules/packaging/os/pkgng.py\": \"lib/ansible/modules/packaging/os/pkgng.py\", \n  \"/modules/packaging/os/pkgutil.py\": \"lib/ansible/modules/packaging/os/pkgutil.py\", \n  \"/modules/packaging/os/portage.py\": \"lib/ansible/modules/packaging/os/portage.py\", \n  \"/modules/packaging/os/portinstall.py\": \"lib/ansible/modules/packaging/os/portinstall.py\", \n  \"/modules/packaging/os/pulp_repo.py\": \"lib/ansible/modules/packaging/os/pulp_repo.py\", \n  \"/modules/packaging/os/redhat_subscription.py\": \"lib/ansible/modules/packaging/os/redhat_subscription.py\", \n  \"/modules/packaging/os/rhn_channel.py\": \"lib/ansible/modules/packaging/os/rhn_channel.py\", \n  \"/modules/packaging/os/rhn_register.py\": \"lib/ansible/modules/packaging/os/rhn_register.py\", \n  \"/modules/packaging/os/rpm_key.py\": \"lib/ansible/modules/packaging/os/rpm_key.py\", \n  \"/modules/packaging/os/slackpkg.py\": \"lib/ansible/modules/packaging/os/slackpkg.py\", \n  \"/modules/packaging/os/sorcery.py\": \"lib/ansible/modules/packaging/os/sorcery.py\", \n  \"/modules/packaging/os/svr4pkg.py\": \"lib/ansible/modules/packaging/os/svr4pkg.py\", \n  \"/modules/packaging/os/swdepot.py\": \"lib/ansible/modules/packaging/os/swdepot.py\", \n  \"/modules/packaging/os/swupd.py\": \"lib/ansible/modules/packaging/os/swupd.py\", \n  \"/modules/packaging/os/urpmi.py\": \"lib/ansible/modules/packaging/os/urpmi.py\", \n  \"/modules/packaging/os/xbps.py\": \"lib/ansible/modules/packaging/os/xbps.py\", \n  \"/modules/packaging/os/yum.py\": \"lib/ansible/modules/packaging/os/yum.py\", \n  \"/modules/packaging/os/yum_repository.py\": \"lib/ansible/modules/packaging/os/yum_repository.py\", \n  \"/modules/packaging/os/zypper.py\": \"lib/ansible/modules/packaging/os/zypper.py\", \n  \"/modules/packaging/os/zypper_repository.py\": \"lib/ansible/modules/packaging/os/zypper_repository.py\", \n  \"/modules/remote_management/foreman/foreman.py\": \"lib/ansible/modules/remote_management/foreman/foreman.py\", \n  \"/modules/remote_management/foreman/katello.py\": [\n    \"lib/ansible/modules/remote_management/foreman/katello.py\"\n  ], \n  \"/modules/remote_management/hpilo/hpilo_boot.py\": \"lib/ansible/modules/remote_management/hpilo/hpilo_boot.py\", \n  \"/modules/remote_management/hpilo/hpilo_facts.py\": \"lib/ansible/modules/remote_management/hpilo/hpilo_facts.py\", \n  \"/modules/remote_management/hpilo/hponcfg.py\": \"lib/ansible/modules/remote_management/hpilo/hponcfg.py\", \n  \"/modules/remote_management/imc/imc_rest.py\": \"lib/ansible/modules/remote_management/imc/imc_rest.py\", \n  \"/modules/remote_management/ipmi/ipmi_boot.py\": \"lib/ansible/modules/remote_management/ipmi/ipmi_boot.py\", \n  \"/modules/remote_management/ipmi/ipmi_power.py\": \"lib/ansible/modules/remote_management/ipmi/ipmi_power.py\", \n  \"/modules/remote_management/manageiq/manageiq_provider.py\": \"lib/ansible/modules/remote_management/manageiq/manageiq_provider.py\", \n  \"/modules/remote_management/manageiq/manageiq_tags.py\": \"lib/ansible/modules/remote_management/manageiq/manageiq_tags.py\", \n  \"/modules/remote_management/manageiq/manageiq_user.py\": \"lib/ansible/modules/remote_management/manageiq/manageiq_user.py\", \n  \"/modules/remote_management/oneview/oneview_enclosure_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_enclosure_facts.py\", \n  \"/modules/remote_management/oneview/oneview_ethernet_network.py\": \"lib/ansible/modules/remote_management/oneview/oneview_ethernet_network.py\", \n  \"/modules/remote_management/oneview/oneview_ethernet_network_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_ethernet_network_facts.py\", \n  \"/modules/remote_management/oneview/oneview_fc_network.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fc_network.py\", \n  \"/modules/remote_management/oneview/oneview_fc_network_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fc_network_facts.py\", \n  \"/modules/remote_management/oneview/oneview_fcoe_network.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fcoe_network.py\", \n  \"/modules/remote_management/oneview/oneview_fcoe_network_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fcoe_network_facts.py\", \n  \"/modules/remote_management/oneview/oneview_logical_interconnect_group.py\": \"lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group.py\", \n  \"/modules/remote_management/oneview/oneview_logical_interconnect_group_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group_facts.py\", \n  \"/modules/remote_management/oneview/oneview_network_set.py\": \"lib/ansible/modules/remote_management/oneview/oneview_network_set.py\", \n  \"/modules/remote_management/oneview/oneview_network_set_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_network_set_facts.py\", \n  \"/modules/remote_management/oneview/oneview_san_manager.py\": \"lib/ansible/modules/remote_management/oneview/oneview_san_manager.py\", \n  \"/modules/remote_management/oneview/oneview_san_manager_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_san_manager_facts.py\", \n  \"/modules/remote_management/stacki/stacki_host.py\": \"lib/ansible/modules/remote_management/stacki/stacki_host.py\", \n  \"/modules/remote_management/wakeonlan.py\": \"lib/ansible/modules/remote_management/wakeonlan.py\", \n  \"/modules/source_control/bzr.py\": \"lib/ansible/modules/source_control/bzr.py\", \n  \"/modules/source_control/git.py\": \"lib/ansible/modules/source_control/git.py\", \n  \"/modules/source_control/git_config.py\": \"lib/ansible/modules/source_control/git_config.py\", \n  \"/modules/source_control/github_deploy_key.py\": \"lib/ansible/modules/source_control/github_deploy_key.py\", \n  \"/modules/source_control/github_hooks.py\": \"lib/ansible/modules/source_control/github_hooks.py\", \n  \"/modules/source_control/github_issue.py\": \"lib/ansible/modules/source_control/github_issue.py\", \n  \"/modules/source_control/github_key.py\": \"lib/ansible/modules/source_control/github_key.py\", \n  \"/modules/source_control/github_release.py\": \"lib/ansible/modules/source_control/github_release.py\", \n  \"/modules/source_control/gitlab_group.py\": \"lib/ansible/modules/source_control/gitlab_group.py\", \n  \"/modules/source_control/gitlab_project.py\": \"lib/ansible/modules/source_control/gitlab_project.py\", \n  \"/modules/source_control/gitlab_user.py\": \"lib/ansible/modules/source_control/gitlab_user.py\", \n  \"/modules/source_control/hg.py\": \"lib/ansible/modules/source_control/hg.py\", \n  \"/modules/source_control/subversion.py\": \"lib/ansible/modules/source_control/subversion.py\", \n  \"/modules/storage/infinidat/infini_export.py\": \"lib/ansible/modules/storage/infinidat/infini_export.py\", \n  \"/modules/storage/infinidat/infini_export_client.py\": \"lib/ansible/modules/storage/infinidat/infini_export_client.py\", \n  \"/modules/storage/infinidat/infini_fs.py\": \"lib/ansible/modules/storage/infinidat/infini_fs.py\", \n  \"/modules/storage/infinidat/infini_host.py\": \"lib/ansible/modules/storage/infinidat/infini_host.py\", \n  \"/modules/storage/infinidat/infini_pool.py\": \"lib/ansible/modules/storage/infinidat/infini_pool.py\", \n  \"/modules/storage/infinidat/infini_vol.py\": \"lib/ansible/modules/storage/infinidat/infini_vol.py\", \n  \"/modules/storage/netapp/na_cdot_aggregate.py\": \"lib/ansible/modules/storage/netapp/na_cdot_aggregate.py\", \n  \"/modules/storage/netapp/na_cdot_license.py\": \"lib/ansible/modules/storage/netapp/na_cdot_license.py\", \n  \"/modules/storage/netapp/na_cdot_lun.py\": \"lib/ansible/modules/storage/netapp/na_cdot_lun.py\", \n  \"/modules/storage/netapp/na_cdot_qtree.py\": \"lib/ansible/modules/storage/netapp/na_cdot_qtree.py\", \n  \"/modules/storage/netapp/na_cdot_svm.py\": \"lib/ansible/modules/storage/netapp/na_cdot_svm.py\", \n  \"/modules/storage/netapp/na_cdot_user.py\": \"lib/ansible/modules/storage/netapp/na_cdot_user.py\", \n  \"/modules/storage/netapp/na_cdot_user_role.py\": \"lib/ansible/modules/storage/netapp/na_cdot_user_role.py\", \n  \"/modules/storage/netapp/na_cdot_volume.py\": \"lib/ansible/modules/storage/netapp/na_cdot_volume.py\", \n  \"/modules/storage/netapp/netapp_e_amg.py\": \"lib/ansible/modules/storage/netapp/netapp_e_amg.py\", \n  \"/modules/storage/netapp/netapp_e_amg_role.py\": \"lib/ansible/modules/storage/netapp/netapp_e_amg_role.py\", \n  \"/modules/storage/netapp/netapp_e_amg_sync.py\": \"lib/ansible/modules/storage/netapp/netapp_e_amg_sync.py\", \n  \"/modules/storage/netapp/netapp_e_auth.py\": \"lib/ansible/modules/storage/netapp/netapp_e_auth.py\", \n  \"/modules/storage/netapp/netapp_e_facts.py\": \"lib/ansible/modules/storage/netapp/netapp_e_facts.py\", \n  \"/modules/storage/netapp/netapp_e_flashcache.py\": \"lib/ansible/modules/storage/netapp/netapp_e_flashcache.py\", \n  \"/modules/storage/netapp/netapp_e_host.py\": \"lib/ansible/modules/storage/netapp/netapp_e_host.py\", \n  \"/modules/storage/netapp/netapp_e_hostgroup.py\": \"lib/ansible/modules/storage/netapp/netapp_e_hostgroup.py\", \n  \"/modules/storage/netapp/netapp_e_lun_mapping.py\": \"lib/ansible/modules/storage/netapp/netapp_e_lun_mapping.py\", \n  \"/modules/storage/netapp/netapp_e_snapshot_group.py\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_group.py\", \n  \"/modules/storage/netapp/netapp_e_snapshot_images.py\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_images.py\", \n  \"/modules/storage/netapp/netapp_e_snapshot_volume.py\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_volume.py\", \n  \"/modules/storage/netapp/netapp_e_storage_system.py\": \"lib/ansible/modules/storage/netapp/netapp_e_storage_system.py\", \n  \"/modules/storage/netapp/netapp_e_storagepool.py\": \"lib/ansible/modules/storage/netapp/netapp_e_storagepool.py\", \n  \"/modules/storage/netapp/netapp_e_volume.py\": \"lib/ansible/modules/storage/netapp/netapp_e_volume.py\", \n  \"/modules/storage/netapp/netapp_e_volume_copy.py\": \"lib/ansible/modules/storage/netapp/netapp_e_volume_copy.py\", \n  \"/modules/storage/netapp/sf_account_manager.py\": \"lib/ansible/modules/storage/netapp/sf_account_manager.py\", \n  \"/modules/storage/netapp/sf_check_connections.py\": \"lib/ansible/modules/storage/netapp/sf_check_connections.py\", \n  \"/modules/storage/netapp/sf_snapshot_schedule_manager.py\": \"lib/ansible/modules/storage/netapp/sf_snapshot_schedule_manager.py\", \n  \"/modules/storage/netapp/sf_volume_access_group_manager.py\": \"lib/ansible/modules/storage/netapp/sf_volume_access_group_manager.py\", \n  \"/modules/storage/netapp/sf_volume_manager.py\": \"lib/ansible/modules/storage/netapp/sf_volume_manager.py\", \n  \"/modules/storage/purestorage/purefa_hg.py\": \"lib/ansible/modules/storage/purestorage/purefa_hg.py\", \n  \"/modules/storage/purestorage/purefa_host.py\": \"lib/ansible/modules/storage/purestorage/purefa_host.py\", \n  \"/modules/storage/purestorage/purefa_pg.py\": \"lib/ansible/modules/storage/purestorage/purefa_pg.py\", \n  \"/modules/storage/purestorage/purefa_snap.py\": \"lib/ansible/modules/storage/purestorage/purefa_snap.py\", \n  \"/modules/storage/purestorage/purefa_volume.py\": \"lib/ansible/modules/storage/purestorage/purefa_volume.py\", \n  \"/modules/storage/zfs/zfs.py\": \"lib/ansible/modules/storage/zfs/zfs.py\", \n  \"/modules/storage/zfs/zfs_facts.py\": \"lib/ansible/modules/storage/zfs/zfs_facts.py\", \n  \"/modules/storage/zfs/zpool_facts.py\": \"lib/ansible/modules/storage/zfs/zpool_facts.py\", \n  \"/modules/system/aix_inittab.py\": \"lib/ansible/modules/system/aix_inittab.py\", \n  \"/modules/system/aix_lvol.py\": \"lib/ansible/modules/system/aix_lvol.py\", \n  \"/modules/system/alternatives.py\": \"lib/ansible/modules/system/alternatives.py\", \n  \"/modules/system/at.py\": \"lib/ansible/modules/system/at.py\", \n  \"/modules/system/authorized_key.py\": \"lib/ansible/modules/system/authorized_key.py\", \n  \"/modules/system/awall.py\": \"lib/ansible/modules/system/awall.py\", \n  \"/modules/system/beadm.py\": \"lib/ansible/modules/system/beadm.py\", \n  \"/modules/system/capabilities.py\": \"lib/ansible/modules/system/capabilities.py\", \n  \"/modules/system/cron.py\": \"lib/ansible/modules/system/cron.py\", \n  \"/modules/system/cronvar.py\": \"lib/ansible/modules/system/cronvar.py\", \n  \"/modules/system/crypttab.py\": \"lib/ansible/modules/system/crypttab.py\", \n  \"/modules/system/dconf.py\": \"lib/ansible/modules/system/dconf.py\", \n  \"/modules/system/debconf.py\": \"lib/ansible/modules/system/debconf.py\", \n  \"/modules/system/facter.py\": \"lib/ansible/modules/system/facter.py\", \n  \"/modules/system/filesystem.py\": \"lib/ansible/modules/system/filesystem.py\", \n  \"/modules/system/firewalld.py\": \"lib/ansible/modules/system/firewalld.py\", \n  \"/modules/system/gconftool2.py\": \"lib/ansible/modules/system/gconftool2.py\", \n  \"/modules/system/getent.py\": \"lib/ansible/modules/system/getent.py\", \n  \"/modules/system/gluster_volume.py\": \"lib/ansible/modules/system/gluster_volume.py\", \n  \"/modules/system/group.py\": \"lib/ansible/modules/system/group.py\", \n  \"/modules/system/hostname.py\": \"lib/ansible/modules/system/hostname.py\", \n  \"/modules/system/interfaces_file.py\": \"lib/ansible/modules/system/interfaces_file.py\", \n  \"/modules/system/iptables.py\": \"lib/ansible/modules/system/iptables.py\", \n  \"/modules/system/java_cert.py\": \"lib/ansible/modules/system/java_cert.py\", \n  \"/modules/system/kernel_blacklist.py\": \"lib/ansible/modules/system/kernel_blacklist.py\", \n  \"/modules/system/known_hosts.py\": \"lib/ansible/modules/system/known_hosts.py\", \n  \"/modules/system/locale_gen.py\": \"lib/ansible/modules/system/locale_gen.py\", \n  \"/modules/system/lvg.py\": \"lib/ansible/modules/system/lvg.py\", \n  \"/modules/system/lvol.py\": \"lib/ansible/modules/system/lvol.py\", \n  \"/modules/system/make.py\": \"lib/ansible/modules/system/make.py\", \n  \"/modules/system/mksysb.py\": \"lib/ansible/modules/system/mksysb.py\", \n  \"/modules/system/modprobe.py\": \"lib/ansible/modules/system/modprobe.py\", \n  \"/modules/system/mount.py\": \"lib/ansible/modules/system/mount.py\", \n  \"/modules/system/nosh.py\": \"lib/ansible/modules/system/nosh.py\", \n  \"/modules/system/ohai.py\": \"lib/ansible/modules/system/ohai.py\", \n  \"/modules/system/open_iscsi.py\": \"lib/ansible/modules/system/open_iscsi.py\", \n  \"/modules/system/openwrt_init.py\": \"lib/ansible/modules/system/openwrt_init.py\", \n  \"/modules/system/osx_defaults.py\": \"lib/ansible/modules/system/osx_defaults.py\", \n  \"/modules/system/pam_limits.py\": \"lib/ansible/modules/system/pam_limits.py\", \n  \"/modules/system/pamd.py\": \"lib/ansible/modules/system/pamd.py\", \n  \"/modules/system/parted.py\": \"lib/ansible/modules/system/parted.py\", \n  \"/modules/system/ping.py\": \"lib/ansible/modules/system/ping.py\", \n  \"/modules/system/puppet.py\": \"lib/ansible/modules/system/puppet.py\", \n  \"/modules/system/runit.py\": \"lib/ansible/modules/system/runit.py\", \n  \"/modules/system/seboolean.py\": \"lib/ansible/modules/system/seboolean.py\", \n  \"/modules/system/sefcontext.py\": \"lib/ansible/modules/system/sefcontext.py\", \n  \"/modules/system/selinux.py\": \"lib/ansible/modules/system/selinux.py\", \n  \"/modules/system/selinux_permissive.py\": \"lib/ansible/modules/system/selinux_permissive.py\", \n  \"/modules/system/seport.py\": \"lib/ansible/modules/system/seport.py\", \n  \"/modules/system/service.py\": \"lib/ansible/modules/system/service.py\", \n  \"/modules/system/setup.py\": \"lib/ansible/modules/system/setup.py\", \n  \"/modules/system/solaris_zone.py\": \"lib/ansible/modules/system/solaris_zone.py\", \n  \"/modules/system/svc.py\": \"lib/ansible/modules/system/svc.py\", \n  \"/modules/system/sysctl.py\": \"lib/ansible/modules/system/sysctl.py\", \n  \"/modules/system/systemd.py\": \"lib/ansible/modules/system/systemd.py\", \n  \"/modules/system/timezone.py\": \"lib/ansible/modules/system/timezone.py\", \n  \"/modules/system/ufw.py\": \"lib/ansible/modules/system/ufw.py\", \n  \"/modules/system/user.py\": \"lib/ansible/modules/system/user.py\", \n  \"/modules/utilities/helper/_accelerate.py\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n  \"/modules/utilities/helper/accelerate.py\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n  \"/modules/utilities/helper/meta.py\": \"lib/ansible/modules/utilities/helper/meta.py\", \n  \"/modules/utilities/logic/_include.py\": \"lib/ansible/modules/utilities/logic/_include.py\", \n  \"/modules/utilities/logic/assert.py\": \"lib/ansible/modules/utilities/logic/assert.py\", \n  \"/modules/utilities/logic/async_status.py\": \"lib/ansible/modules/utilities/logic/async_status.py\", \n  \"/modules/utilities/logic/async_wrapper.py\": \"lib/ansible/modules/utilities/logic/async_wrapper.py\", \n  \"/modules/utilities/logic/debug.py\": \"lib/ansible/modules/utilities/logic/debug.py\", \n  \"/modules/utilities/logic/fail.py\": \"lib/ansible/modules/utilities/logic/fail.py\", \n  \"/modules/utilities/logic/import_playbook.py\": \"lib/ansible/modules/utilities/logic/import_playbook.py\", \n  \"/modules/utilities/logic/import_role.py\": \"lib/ansible/modules/utilities/logic/import_role.py\", \n  \"/modules/utilities/logic/import_tasks.py\": \"lib/ansible/modules/utilities/logic/import_tasks.py\", \n  \"/modules/utilities/logic/include.py\": \"lib/ansible/modules/utilities/logic/_include.py\", \n  \"/modules/utilities/logic/include_role.py\": \"lib/ansible/modules/utilities/logic/include_role.py\", \n  \"/modules/utilities/logic/include_tasks.py\": \"lib/ansible/modules/utilities/logic/include_tasks.py\", \n  \"/modules/utilities/logic/include_vars.py\": \"lib/ansible/modules/utilities/logic/include_vars.py\", \n  \"/modules/utilities/logic/pause.py\": \"lib/ansible/modules/utilities/logic/pause.py\", \n  \"/modules/utilities/logic/set_fact.py\": \"lib/ansible/modules/utilities/logic/set_fact.py\", \n  \"/modules/utilities/logic/set_stats.py\": \"lib/ansible/modules/utilities/logic/set_stats.py\", \n  \"/modules/utilities/logic/wait_for.py\": \"lib/ansible/modules/utilities/logic/wait_for.py\", \n  \"/modules/utilities/logic/wait_for_connection.py\": \"lib/ansible/modules/utilities/logic/wait_for_connection.py\", \n  \"/modules/web_infrastructure/ansible_tower/tower_credential.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_credential.py\", \n  \"/modules/web_infrastructure/ansible_tower/tower_group.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_group.py\", \n  \"/modules/web_infrastructure/ansible_tower/tower_host.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_host.py\", \n  \"/modules/web_infrastructure/ansible_tower/tower_inventory.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_inventory.py\", \n  \"/modules/web_infrastructure/ansible_tower/tower_job_cancel.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_cancel.py\", \n  \"/modules/web_infrastructure/ansible_tower/tower_job_launch.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_launch.py\", \n  \"/modules/web_infrastructure/ansible_tower/tower_job_list.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_list.py\", \n  \"/modules/web_infrastructure/ansible_tower/tower_job_template.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_template.py\", \n  \"/modules/web_infrastructure/ansible_tower/tower_job_wait.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_wait.py\", \n  \"/modules/web_infrastructure/ansible_tower/tower_label.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_label.py\", \n  \"/modules/web_infrastructure/ansible_tower/tower_organization.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_organization.py\", \n  \"/modules/web_infrastructure/ansible_tower/tower_project.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_project.py\", \n  \"/modules/web_infrastructure/ansible_tower/tower_role.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_role.py\", \n  \"/modules/web_infrastructure/ansible_tower/tower_team.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_team.py\", \n  \"/modules/web_infrastructure/ansible_tower/tower_user.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_user.py\", \n  \"/modules/web_infrastructure/apache2_mod_proxy.py\": \"lib/ansible/modules/web_infrastructure/apache2_mod_proxy.py\", \n  \"/modules/web_infrastructure/apache2_module.py\": \"lib/ansible/modules/web_infrastructure/apache2_module.py\", \n  \"/modules/web_infrastructure/deploy_helper.py\": \"lib/ansible/modules/web_infrastructure/deploy_helper.py\", \n  \"/modules/web_infrastructure/django_manage.py\": \"lib/ansible/modules/web_infrastructure/django_manage.py\", \n  \"/modules/web_infrastructure/ejabberd_user.py\": \"lib/ansible/modules/web_infrastructure/ejabberd_user.py\", \n  \"/modules/web_infrastructure/gunicorn.py\": \"lib/ansible/modules/web_infrastructure/gunicorn.py\", \n  \"/modules/web_infrastructure/htpasswd.py\": \"lib/ansible/modules/web_infrastructure/htpasswd.py\", \n  \"/modules/web_infrastructure/jboss.py\": \"lib/ansible/modules/web_infrastructure/jboss.py\", \n  \"/modules/web_infrastructure/jenkins_job.py\": \"lib/ansible/modules/web_infrastructure/jenkins_job.py\", \n  \"/modules/web_infrastructure/jenkins_plugin.py\": \"lib/ansible/modules/web_infrastructure/jenkins_plugin.py\", \n  \"/modules/web_infrastructure/jenkins_script.py\": \"lib/ansible/modules/web_infrastructure/jenkins_script.py\", \n  \"/modules/web_infrastructure/jira.py\": \"lib/ansible/modules/web_infrastructure/jira.py\", \n  \"/modules/web_infrastructure/letsencrypt.py\": \"lib/ansible/modules/web_infrastructure/letsencrypt.py\", \n  \"/modules/web_infrastructure/nginx_status_facts.py\": \"lib/ansible/modules/web_infrastructure/nginx_status_facts.py\", \n  \"/modules/web_infrastructure/rundeck_acl_policy.py\": \"lib/ansible/modules/web_infrastructure/rundeck_acl_policy.py\", \n  \"/modules/web_infrastructure/rundeck_project.py\": \"lib/ansible/modules/web_infrastructure/rundeck_project.py\", \n  \"/modules/web_infrastructure/supervisorctl.py\": \"lib/ansible/modules/web_infrastructure/supervisorctl.py\", \n  \"/modules/web_infrastructure/taiga_issue.py\": \"lib/ansible/modules/web_infrastructure/taiga_issue.py\", \n  \"/modules/windows/_win_msi.ps1\": \"lib/ansible/modules/windows/_win_msi.ps1\", \n  \"/modules/windows/_win_msi.py\": \"lib/ansible/modules/windows/_win_msi.py\", \n  \"/modules/windows/async_status.ps1\": \"lib/ansible/modules/windows/async_status.ps1\", \n  \"/modules/windows/async_wrapper.ps1\": \"lib/ansible/modules/windows/async_wrapper.ps1\", \n  \"/modules/windows/setup.ps1\": \"lib/ansible/modules/windows/setup.ps1\", \n  \"/modules/windows/slurp.ps1\": \"lib/ansible/modules/windows/slurp.ps1\", \n  \"/modules/windows/win_acl.ps1\": \"lib/ansible/modules/windows/win_acl.ps1\", \n  \"/modules/windows/win_acl.py\": \"lib/ansible/modules/windows/win_acl.py\", \n  \"/modules/windows/win_acl_inheritance.ps1\": \"lib/ansible/modules/windows/win_acl_inheritance.ps1\", \n  \"/modules/windows/win_acl_inheritance.py\": \"lib/ansible/modules/windows/win_acl_inheritance.py\", \n  \"/modules/windows/win_audit_rule.ps1\": \"lib/ansible/modules/windows/win_audit_rule.ps1\", \n  \"/modules/windows/win_audit_rule.py\": \"lib/ansible/modules/windows/win_audit_rule.py\", \n  \"/modules/windows/win_chocolatey.ps1\": \"lib/ansible/modules/windows/win_chocolatey.ps1\", \n  \"/modules/windows/win_chocolatey.py\": \"lib/ansible/modules/windows/win_chocolatey.py\", \n  \"/modules/windows/win_command.ps1\": \"lib/ansible/modules/windows/win_command.ps1\", \n  \"/modules/windows/win_command.py\": \"lib/ansible/modules/windows/win_command.py\", \n  \"/modules/windows/win_copy.ps1\": \"lib/ansible/modules/windows/win_copy.ps1\", \n  \"/modules/windows/win_copy.py\": \"lib/ansible/modules/windows/win_copy.py\", \n  \"/modules/windows/win_defrag.ps1\": \"lib/ansible/modules/windows/win_defrag.ps1\", \n  \"/modules/windows/win_defrag.py\": \"lib/ansible/modules/windows/win_defrag.py\", \n  \"/modules/windows/win_disk_image.ps1\": \"lib/ansible/modules/windows/win_disk_image.ps1\", \n  \"/modules/windows/win_disk_image.py\": \"lib/ansible/modules/windows/win_disk_image.py\", \n  \"/modules/windows/win_dns_client.ps1\": \"lib/ansible/modules/windows/win_dns_client.ps1\", \n  \"/modules/windows/win_dns_client.py\": \"lib/ansible/modules/windows/win_dns_client.py\", \n  \"/modules/windows/win_domain.ps1\": \"lib/ansible/modules/windows/win_domain.ps1\", \n  \"/modules/windows/win_domain.py\": \"lib/ansible/modules/windows/win_domain.py\", \n  \"/modules/windows/win_domain_controller.ps1\": \"lib/ansible/modules/windows/win_domain_controller.ps1\", \n  \"/modules/windows/win_domain_controller.py\": \"lib/ansible/modules/windows/win_domain_controller.py\", \n  \"/modules/windows/win_domain_group.ps1\": \"lib/ansible/modules/windows/win_domain_group.ps1\", \n  \"/modules/windows/win_domain_group.py\": \"lib/ansible/modules/windows/win_domain_group.py\", \n  \"/modules/windows/win_domain_membership.ps1\": \"lib/ansible/modules/windows/win_domain_membership.ps1\", \n  \"/modules/windows/win_domain_membership.py\": \"lib/ansible/modules/windows/win_domain_membership.py\", \n  \"/modules/windows/win_domain_user.ps1\": \"lib/ansible/modules/windows/win_domain_user.ps1\", \n  \"/modules/windows/win_domain_user.py\": \"lib/ansible/modules/windows/win_domain_user.py\", \n  \"/modules/windows/win_dotnet_ngen.ps1\": \"lib/ansible/modules/windows/win_dotnet_ngen.ps1\", \n  \"/modules/windows/win_dotnet_ngen.py\": \"lib/ansible/modules/windows/win_dotnet_ngen.py\", \n  \"/modules/windows/win_dsc.ps1\": \"lib/ansible/modules/windows/win_dsc.ps1\", \n  \"/modules/windows/win_dsc.py\": \"lib/ansible/modules/windows/win_dsc.py\", \n  \"/modules/windows/win_environment.ps1\": \"lib/ansible/modules/windows/win_environment.ps1\", \n  \"/modules/windows/win_environment.py\": \"lib/ansible/modules/windows/win_environment.py\", \n  \"/modules/windows/win_eventlog.ps1\": \"lib/ansible/modules/windows/win_eventlog.ps1\", \n  \"/modules/windows/win_eventlog.py\": \"lib/ansible/modules/windows/win_eventlog.py\", \n  \"/modules/windows/win_eventlog_entry.ps1\": \"lib/ansible/modules/windows/win_eventlog_entry.ps1\", \n  \"/modules/windows/win_eventlog_entry.py\": \"lib/ansible/modules/windows/win_eventlog_entry.py\", \n  \"/modules/windows/win_feature.ps1\": \"lib/ansible/modules/windows/win_feature.ps1\", \n  \"/modules/windows/win_feature.py\": \"lib/ansible/modules/windows/win_feature.py\", \n  \"/modules/windows/win_file.ps1\": \"lib/ansible/modules/windows/win_file.ps1\", \n  \"/modules/windows/win_file.py\": \"lib/ansible/modules/windows/win_file.py\", \n  \"/modules/windows/win_file_version.ps1\": \"lib/ansible/modules/windows/win_file_version.ps1\", \n  \"/modules/windows/win_file_version.py\": \"lib/ansible/modules/windows/win_file_version.py\", \n  \"/modules/windows/win_find.ps1\": \"lib/ansible/modules/windows/win_find.ps1\", \n  \"/modules/windows/win_find.py\": \"lib/ansible/modules/windows/win_find.py\", \n  \"/modules/windows/win_firewall.ps1\": \"lib/ansible/modules/windows/win_firewall.ps1\", \n  \"/modules/windows/win_firewall.py\": \"lib/ansible/modules/windows/win_firewall.py\", \n  \"/modules/windows/win_firewall_rule.ps1\": \"lib/ansible/modules/windows/win_firewall_rule.ps1\", \n  \"/modules/windows/win_firewall_rule.py\": \"lib/ansible/modules/windows/win_firewall_rule.py\", \n  \"/modules/windows/win_get_url.ps1\": \"lib/ansible/modules/windows/win_get_url.ps1\", \n  \"/modules/windows/win_get_url.py\": \"lib/ansible/modules/windows/win_get_url.py\", \n  \"/modules/windows/win_group.ps1\": \"lib/ansible/modules/windows/win_group.ps1\", \n  \"/modules/windows/win_group.py\": \"lib/ansible/modules/windows/win_group.py\", \n  \"/modules/windows/win_group_membership.ps1\": \"lib/ansible/modules/windows/win_group_membership.ps1\", \n  \"/modules/windows/win_group_membership.py\": \"lib/ansible/modules/windows/win_group_membership.py\", \n  \"/modules/windows/win_hotfix.ps1\": \"lib/ansible/modules/windows/win_hotfix.ps1\", \n  \"/modules/windows/win_hotfix.py\": \"lib/ansible/modules/windows/win_hotfix.py\", \n  \"/modules/windows/win_iis_virtualdirectory.ps1\": \"lib/ansible/modules/windows/win_iis_virtualdirectory.ps1\", \n  \"/modules/windows/win_iis_virtualdirectory.py\": \"lib/ansible/modules/windows/win_iis_virtualdirectory.py\", \n  \"/modules/windows/win_iis_webapplication.ps1\": \"lib/ansible/modules/windows/win_iis_webapplication.ps1\", \n  \"/modules/windows/win_iis_webapplication.py\": \"lib/ansible/modules/windows/win_iis_webapplication.py\", \n  \"/modules/windows/win_iis_webapppool.ps1\": \"lib/ansible/modules/windows/win_iis_webapppool.ps1\", \n  \"/modules/windows/win_iis_webapppool.py\": \"lib/ansible/modules/windows/win_iis_webapppool.py\", \n  \"/modules/windows/win_iis_webbinding.ps1\": \"lib/ansible/modules/windows/win_iis_webbinding.ps1\", \n  \"/modules/windows/win_iis_webbinding.py\": \"lib/ansible/modules/windows/win_iis_webbinding.py\", \n  \"/modules/windows/win_iis_website.ps1\": \"lib/ansible/modules/windows/win_iis_website.ps1\", \n  \"/modules/windows/win_iis_website.py\": \"lib/ansible/modules/windows/win_iis_website.py\", \n  \"/modules/windows/win_lineinfile.ps1\": \"lib/ansible/modules/windows/win_lineinfile.ps1\", \n  \"/modules/windows/win_lineinfile.py\": \"lib/ansible/modules/windows/win_lineinfile.py\", \n  \"/modules/windows/win_mapped_drive.ps1\": \"lib/ansible/modules/windows/win_mapped_drive.ps1\", \n  \"/modules/windows/win_mapped_drive.py\": \"lib/ansible/modules/windows/win_mapped_drive.py\", \n  \"/modules/windows/win_msg.ps1\": \"lib/ansible/modules/windows/win_msg.ps1\", \n  \"/modules/windows/win_msg.py\": \"lib/ansible/modules/windows/win_msg.py\", \n  \"/modules/windows/win_msi.ps1\": \"lib/ansible/modules/windows/_win_msi.ps1\", \n  \"/modules/windows/win_msi.py\": \"lib/ansible/modules/windows/_win_msi.py\", \n  \"/modules/windows/win_nssm.ps1\": \"lib/ansible/modules/windows/win_nssm.ps1\", \n  \"/modules/windows/win_nssm.py\": \"lib/ansible/modules/windows/win_nssm.py\", \n  \"/modules/windows/win_owner.ps1\": \"lib/ansible/modules/windows/win_owner.ps1\", \n  \"/modules/windows/win_owner.py\": \"lib/ansible/modules/windows/win_owner.py\", \n  \"/modules/windows/win_package.ps1\": \"lib/ansible/modules/windows/win_package.ps1\", \n  \"/modules/windows/win_package.py\": \"lib/ansible/modules/windows/win_package.py\", \n  \"/modules/windows/win_pagefile.ps1\": \"lib/ansible/modules/windows/win_pagefile.ps1\", \n  \"/modules/windows/win_pagefile.py\": \"lib/ansible/modules/windows/win_pagefile.py\", \n  \"/modules/windows/win_path.ps1\": \"lib/ansible/modules/windows/win_path.ps1\", \n  \"/modules/windows/win_path.py\": \"lib/ansible/modules/windows/win_path.py\", \n  \"/modules/windows/win_ping.ps1\": \"lib/ansible/modules/windows/win_ping.ps1\", \n  \"/modules/windows/win_ping.py\": \"lib/ansible/modules/windows/win_ping.py\", \n  \"/modules/windows/win_power_plan.ps1\": \"lib/ansible/modules/windows/win_power_plan.ps1\", \n  \"/modules/windows/win_power_plan.py\": \"lib/ansible/modules/windows/win_power_plan.py\", \n  \"/modules/windows/win_psexec.ps1\": \"lib/ansible/modules/windows/win_psexec.ps1\", \n  \"/modules/windows/win_psexec.py\": \"lib/ansible/modules/windows/win_psexec.py\", \n  \"/modules/windows/win_psmodule.ps1\": \"lib/ansible/modules/windows/win_psmodule.ps1\", \n  \"/modules/windows/win_psmodule.py\": \"lib/ansible/modules/windows/win_psmodule.py\", \n  \"/modules/windows/win_rabbitmq_plugin.ps1\": \"lib/ansible/modules/windows/win_rabbitmq_plugin.ps1\", \n  \"/modules/windows/win_rabbitmq_plugin.py\": \"lib/ansible/modules/windows/win_rabbitmq_plugin.py\", \n  \"/modules/windows/win_reboot.py\": \"lib/ansible/modules/windows/win_reboot.py\", \n  \"/modules/windows/win_reg_stat.ps1\": \"lib/ansible/modules/windows/win_reg_stat.ps1\", \n  \"/modules/windows/win_reg_stat.py\": \"lib/ansible/modules/windows/win_reg_stat.py\", \n  \"/modules/windows/win_regedit.ps1\": \"lib/ansible/modules/windows/win_regedit.ps1\", \n  \"/modules/windows/win_regedit.py\": \"lib/ansible/modules/windows/win_regedit.py\", \n  \"/modules/windows/win_region.ps1\": \"lib/ansible/modules/windows/win_region.ps1\", \n  \"/modules/windows/win_region.py\": \"lib/ansible/modules/windows/win_region.py\", \n  \"/modules/windows/win_regmerge.ps1\": \"lib/ansible/modules/windows/win_regmerge.ps1\", \n  \"/modules/windows/win_regmerge.py\": \"lib/ansible/modules/windows/win_regmerge.py\", \n  \"/modules/windows/win_robocopy.ps1\": \"lib/ansible/modules/windows/win_robocopy.ps1\", \n  \"/modules/windows/win_robocopy.py\": \"lib/ansible/modules/windows/win_robocopy.py\", \n  \"/modules/windows/win_route.ps1\": \"lib/ansible/modules/windows/win_route.ps1\", \n  \"/modules/windows/win_route.py\": \"lib/ansible/modules/windows/win_route.py\", \n  \"/modules/windows/win_say.ps1\": \"lib/ansible/modules/windows/win_say.ps1\", \n  \"/modules/windows/win_say.py\": \"lib/ansible/modules/windows/win_say.py\", \n  \"/modules/windows/win_scheduled_task.ps1\": \"lib/ansible/modules/windows/win_scheduled_task.ps1\", \n  \"/modules/windows/win_scheduled_task.py\": \"lib/ansible/modules/windows/win_scheduled_task.py\", \n  \"/modules/windows/win_scheduled_task_stat.ps1\": \"lib/ansible/modules/windows/win_scheduled_task_stat.ps1\", \n  \"/modules/windows/win_scheduled_task_stat.py\": \"lib/ansible/modules/windows/win_scheduled_task_stat.py\", \n  \"/modules/windows/win_security_policy.ps1\": \"lib/ansible/modules/windows/win_security_policy.ps1\", \n  \"/modules/windows/win_security_policy.py\": \"lib/ansible/modules/windows/win_security_policy.py\", \n  \"/modules/windows/win_service.ps1\": \"lib/ansible/modules/windows/win_service.ps1\", \n  \"/modules/windows/win_service.py\": \"lib/ansible/modules/windows/win_service.py\", \n  \"/modules/windows/win_share.ps1\": \"lib/ansible/modules/windows/win_share.ps1\", \n  \"/modules/windows/win_share.py\": \"lib/ansible/modules/windows/win_share.py\", \n  \"/modules/windows/win_shell.ps1\": \"lib/ansible/modules/windows/win_shell.ps1\", \n  \"/modules/windows/win_shell.py\": \"lib/ansible/modules/windows/win_shell.py\", \n  \"/modules/windows/win_shortcut.ps1\": \"lib/ansible/modules/windows/win_shortcut.ps1\", \n  \"/modules/windows/win_shortcut.py\": \"lib/ansible/modules/windows/win_shortcut.py\", \n  \"/modules/windows/win_stat.ps1\": \"lib/ansible/modules/windows/win_stat.ps1\", \n  \"/modules/windows/win_stat.py\": \"lib/ansible/modules/windows/win_stat.py\", \n  \"/modules/windows/win_tempfile.ps1\": \"lib/ansible/modules/windows/win_tempfile.ps1\", \n  \"/modules/windows/win_tempfile.py\": \"lib/ansible/modules/windows/win_tempfile.py\", \n  \"/modules/windows/win_template.py\": \"lib/ansible/modules/windows/win_template.py\", \n  \"/modules/windows/win_timezone.ps1\": \"lib/ansible/modules/windows/win_timezone.ps1\", \n  \"/modules/windows/win_timezone.py\": \"lib/ansible/modules/windows/win_timezone.py\", \n  \"/modules/windows/win_toast.ps1\": \"lib/ansible/modules/windows/win_toast.ps1\", \n  \"/modules/windows/win_toast.py\": \"lib/ansible/modules/windows/win_toast.py\", \n  \"/modules/windows/win_unzip.ps1\": \"lib/ansible/modules/windows/win_unzip.ps1\", \n  \"/modules/windows/win_unzip.py\": \"lib/ansible/modules/windows/win_unzip.py\", \n  \"/modules/windows/win_updates.ps1\": \"lib/ansible/modules/windows/win_updates.ps1\", \n  \"/modules/windows/win_updates.py\": \"lib/ansible/modules/windows/win_updates.py\", \n  \"/modules/windows/win_uri.ps1\": \"lib/ansible/modules/windows/win_uri.ps1\", \n  \"/modules/windows/win_uri.py\": \"lib/ansible/modules/windows/win_uri.py\", \n  \"/modules/windows/win_user.ps1\": \"lib/ansible/modules/windows/win_user.ps1\", \n  \"/modules/windows/win_user.py\": \"lib/ansible/modules/windows/win_user.py\", \n  \"/modules/windows/win_user_right.ps1\": \"lib/ansible/modules/windows/win_user_right.ps1\", \n  \"/modules/windows/win_user_right.py\": \"lib/ansible/modules/windows/win_user_right.py\", \n  \"/modules/windows/win_wait_for.ps1\": \"lib/ansible/modules/windows/win_wait_for.ps1\", \n  \"/modules/windows/win_wait_for.py\": \"lib/ansible/modules/windows/win_wait_for.py\", \n  \"/modules/windows/win_wakeonlan.ps1\": \"lib/ansible/modules/windows/win_wakeonlan.ps1\", \n  \"/modules/windows/win_wakeonlan.py\": \"lib/ansible/modules/windows/win_wakeonlan.py\", \n  \"/modules/windows/win_webpicmd.ps1\": \"lib/ansible/modules/windows/win_webpicmd.ps1\", \n  \"/modules/windows/win_webpicmd.py\": \"lib/ansible/modules/windows/win_webpicmd.py\", \n  \"/network/dellos6/dellos6_config\": [\n    \"lib/ansible/modules/network/dellos6/dellos6_config.py\"\n  ], \n  \"/usr/bin/ansible-pull\": [\n    \"bin/ansible-pull\"\n  ], \n  \"/usr/lib/python2.7/site-packages/ansible/modules/network/nxos/nxos_system.py\": [\n    \"lib/ansible/modules/network/nxos/nxos_system.py\"\n  ], \n  \"1. WINRM\\n2. winrm send_input failed\": [\n    \"lib/ansible/plugins/connection/winrm.py\"\n  ], \n  \":\": [], \n  \":\\n- cloud/amazon/route53\": [], \n  \":\\n- ec2_vpc.py\": [], \n  \":\\nDocker\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \":\\n_docker module\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \":\\n`at` module\": [\n    \"lib/ansible/modules/system/at.py\"\n  ], \n  \":\\n`rax` module\": [\n    \"lib/ansible/modules/cloud/rackspace/rax.py\"\n  ], \n  \":\\nacl\": [\n    \"lib/ansible/modules/files/acl.py\"\n  ], \n  \":\\nacl module\": [\n    \"lib/ansible/modules/files/acl.py\"\n  ], \n  \":\\napt module\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \":\\nasync_status\": [\n    \"lib/ansible/modules/windows/async_status.ps1\"\n  ], \n  \":\\nbigip_node\": [\n    \"lib/ansible/modules/network/f5/bigip_node.py\"\n  ], \n  \":\\ncloud/amazon/ec2_vol.py\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vol.py\"\n  ], \n  \":\\ncloudtrail\": [\n    \"lib/ansible/modules/cloud/amazon/cloudtrail.py\"\n  ], \n  \":\\ncloudtrail module\": [\n    \"lib/ansible/modules/cloud/amazon/cloudtrail.py\"\n  ], \n  \":\\ncommand module\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \":\\ncopy module\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \":\\ncore\": [], \n  \":\\ndebconf\": [\n    \"lib/ansible/modules/system/debconf.py\"\n  ], \n  \":\\ndocker\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \":\\ndocker module\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \":\\ndocker.py\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \":\\nec2\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \":\\nec2 module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \":\\nec2_asg\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \":\\nec2_eip module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_eip.py\"\n  ], \n  \":\\nec2_elb_lb\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\"\n  ], \n  \":\\nec2_group\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \":\\nec2_key module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_key.py\"\n  ], \n  \":\\nec2_lc module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_lc.py\"\n  ], \n  \":\\nec2_scaling_policy\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_scaling_policy.py\"\n  ], \n  \":\\nec2_tag module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_tag.py\"\n  ], \n  \":\\nec2_vol module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vol.py\"\n  ], \n  \":\\necs_task module\": [\n    \"lib/ansible/modules/cloud/amazon/ecs_task.py\"\n  ], \n  \":\\necs_taskdefinition module\": [\n    \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py\"\n  ], \n  \":\\nelasticache\": [\n    \"lib/ansible/modules/cloud/amazon/elasticache.py\"\n  ], \n  \":\\nfile module\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \":\\ngce\": [\n    \"lib/ansible/modules/cloud/google/gce.py\"\n  ], \n  \":\\nget_url\": [\n    \"lib/ansible/modules/net_tools/basics/get_url.py\"\n  ], \n  \":\\ngroup\": [\n    \"lib/ansible/modules/system/group.py\"\n  ], \n  \":\\nhaproxy module\": [\n    \"lib/ansible/modules/net_tools/haproxy.py\"\n  ], \n  \":\\nhostname module\": [\n    \"lib/ansible/modules/system/hostname.py\"\n  ], \n  \":\\niam module\": [\n    \"lib/ansible/modules/cloud/amazon/iam.py\"\n  ], \n  \":\\niam_policy\": [\n    \"lib/ansible/modules/cloud/amazon/iam_policy.py\"\n  ], \n  \":\\niam_policy module\": [\n    \"lib/ansible/modules/cloud/amazon/iam_policy.py\"\n  ], \n  \":\\nini_file\": [\n    \"lib/ansible/modules/files/ini_file.py\"\n  ], \n  \":\\nknown_hosts\": [\n    \"lib/ansible/modules/system/known_hosts.py\"\n  ], \n  \":\\nlineinfile module\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \":\\nlocale_gen module\": [\n    \"lib/ansible/modules/system/locale_gen.py\"\n  ], \n  \":\\nlogentries module\": [\n    \"lib/ansible/modules/monitoring/logentries.py\"\n  ], \n  \":\\nlxc_container\": [\n    \"lib/ansible/modules/cloud/lxc/lxc_container.py\"\n  ], \n  \":\\nmodule [authorized_key](http://docs.ansible.com/ansible/authorized_key_module.html)\": [\n    \"lib/ansible/modules/system/authorized_key.py\"\n  ], \n  \":\\nmodule: elasticache\": [\n    \"lib/ansible/modules/cloud/amazon/elasticache.py\"\n  ], \n  \":\\nmonit module\": [\n    \"lib/ansible/modules/monitoring/monit.py\"\n  ], \n  \":\\nmount\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \":\\nmount module\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \":\\nmysql_user module\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \":\\nnew module\": [], \n  \":\\nnmcli\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \":\\nnpm\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \":\\nnpm module\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \":\\nnpm.py\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \":\\nopen_iscsi\": [\n    \"lib/ansible/modules/system/open_iscsi.py\"\n  ], \n  \":\\npatch module\": [\n    \"lib/ansible/modules/files/patch.py\"\n  ], \n  \":\\npear module\": [\n    \"lib/ansible/modules/packaging/language/pear.py\"\n  ], \n  \":\\npip\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \":\\npkgng\": [\n    \"lib/ansible/modules/packaging/os/pkgng.py\"\n  ], \n  \":\\nraw module\": [\n    \"lib/ansible/modules/commands/raw.py\"\n  ], \n  \":\\nredhat_subscription\": [\n    \"lib/ansible/modules/packaging/os/redhat_subscription.py\"\n  ], \n  \":\\nrhn_register\": [\n    \"lib/ansible/modules/packaging/os/rhn_register.py\"\n  ], \n  \":\\nroute53\": [\n    \"lib/ansible/modules/cloud/amazon/route53.py\"\n  ], \n  \":\\nroute53_facts module\": [\n    \"lib/ansible/modules/cloud/amazon/route53_facts.py\"\n  ], \n  \":\\ns3\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \":\\ns3 - manage objects in S3\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \":\\ns3 module\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \":\\ns3_bucket.py\": [\n    \"lib/ansible/modules/cloud/amazon/s3_bucket.py\"\n  ], \n  \":\\nservice module\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \":\\nsetup module\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \":\\nsupervisorctl module\": [\n    \"lib/ansible/modules/web_infrastructure/supervisorctl.py\"\n  ], \n  \":\\nsvr4pkg\": [\n    \"lib/ansible/modules/packaging/os/svr4pkg.py\"\n  ], \n  \":\\ntemplate or copy module\": [\n    \"lib/ansible/modules/files/copy.py\", \n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \":\\nunarchive\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \":\\nuser\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \":\\nuser module\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \":\\nvirt module\": [\n    \"lib/ansible/modules/cloud/misc/virt.py\"\n  ], \n  \":\\nwindows setup modules\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \":\\nyum module\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \":\\nzfs module\": [\n    \"lib/ansible/modules/storage/zfs/zfs.py\"\n  ], \n  \": `cloud/gce.py`\": [], \n  \": ansible-galaxy\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \": bower module\": [\n    \"lib/ansible/modules/packaging/language/bower.py\"\n  ], \n  \": ec2_asg\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \": ec2_vpc_route_table module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\"\n  ], \n  \": rabbitmq_user\": [\n    \"lib/ansible/modules/messaging/rabbitmq_user.py\"\n  ], \n  \": s3 module\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \": yum\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \":**\\nec2 module\\n**\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \":**\\nec2_vpc module\\n**\": [\n    \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\"\n  ], \n  \":**\\nlineinfile module\\n**\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \":**\\nmount module\\n**\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \":**\\nunarchive module\\n**\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \":** handlers\\n**\": [\n    \"lib/ansible/playbook/handler.py\"\n  ], \n  \"<ansible/scripts/update.py\": [], \n  \"<ios_command module\": [], \n  \"?\": [], \n  \"AWS Batch\": [], \n  \"AWS EC2 Schedule Reserved\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"AWS NLB Cloud Module\": [], \n  \"AWS Plugin\": [], \n  \"AWS cloudwatchevent_rule\": [\n    \"lib/ansible/modules/cloud/amazon/cloudwatchevent_rule.py\"\n  ], \n  \"Abort/fail if host is unreachable\": [], \n  \"Add to vmware_guest module, Clone to Virtual Machine task\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"All AWS modules\": [\n    \"lib/ansible/modules/cloud/amazon\"\n  ], \n  \"All Cisco IOS Modules\": [], \n  \"All EC2 based modules, possibly more.\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"All FreeIPA Modules\": [], \n  \"All modules\": [], \n  \"All tasks\": [], \n  \"Anisble run playbook\": [], \n  \"Ansible\": [], \n  \"Ansible \\\"Mail\\\" module\": [], \n  \"Ansible Core\": [], \n  \"Ansible Filters (based off of Jinja2 \\\"builtin filters\\\")\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"Ansible Inventory Manager (`manager.py`)\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"Ansible Inventory YAML\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"Ansible Module: apt\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"Ansible Vault\": [\n    \"contrib/vault\"\n  ], \n  \"Ansible command line\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"Ansible core\": [], \n  \"Ansible facts, specifically ansible_distribution et al, and how they are evaluated.\": [\n    \"lib/ansible/module_utils/facts\"\n  ], \n  \"Ansible host pattern matching?\": [], \n  \"Ansible install (module `copy`, see below)\": [], \n  \"Ansible module naming\": [], \n  \"Ansible os_object.py\": [], \n  \"Ansible playbook\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"Ansible role min_ansible_version checking\": [\n    \"lib/ansible/playbook/role\"\n  ], \n  \"Ansible support for appending or stacking Variable Lists\\nIn this case, with with_items\\n--Should be able to append variable lists on the fly, conditionally\": [\n    \"lib/ansible/playbook/loop_control.py\"\n  ], \n  \"Ansible's tag option\": [], \n  \"Ansible, inventory script\": [\n    \"contrib/inventory\"\n  ], \n  \"Ansible-Tower 3.1.3\": [], \n  \"Ansible-playbook\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"Ansible.ModuleUtils.Legacy.psm1\": [\n    \"lib/ansible/module_utils/powershell/Ansible.ModuleUtils.Legacy.psm1\"\n  ], \n  \"AnsibleModule\": [], \n  \"Any module\": [], \n  \"Any win module\": [], \n  \"BigIP modules\": [\n    \"lib/ansible/modules/network/f5\"\n  ], \n  \"CLI error/warnings reporting when running from a path containing UTF-8 chars\": [], \n  \"CLOUD/GOOGLE/GCE.PY\": [], \n  \"Callbacks\": [], \n  \"Cloudtrail\": [\n    \"lib/ansible/modules/cloud/amazon/cloudtrail.py\"\n  ], \n  \"Conditional Include\": [\n    \"lib/ansible/modules/utilities/logic/_include.py\"\n  ], \n  \"Conditional check (Jinja2?)\": [], \n  \"Conditionals\": [], \n  \"Copy module\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"Core\": [], \n  \"Core (templating variable)\": [], \n  \"Core / import_playbook\": [\n    \"lib/ansible/modules/utilities/logic/import_playbook.py\"\n  ], \n  \"Core functionality involving variable lists and vaulted values.\": [], \n  \"Core library specific to ssh authentication\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"Core?\": [], \n  \"Core? The whole of ansible s\": [], \n  \"Cowsay support.\\nAnd... ponies!\": [], \n  \"DNF\": [\n    \"lib/ansible/modules/packaging/os/dnf.py\"\n  ], \n  \"Debug module\": [\n    \"lib/ansible/modules/utilities/logic/debug.py\"\n  ], \n  \"Debug module, with when conditional, using with_random_choice or with_items\": [\n    \"lib/ansible/modules/utilities/logic/debug.py\", \n    \"lib/ansible/playbook/conditional.py\", \n    \"lib/ansible/playbook/loop_control.py\"\n  ], \n  \"Different modules keep temporary files after execution.\\n- command\\n- yum\\n- setup\\n- file\\n- lineinfile\": [\n    \"lib/ansible/modules/commands/command.py\", \n    \"lib/ansible/modules/files/file.py\", \n    \"lib/ansible/modules/files/lineinfile.py\", \n    \"lib/ansible/modules/packaging/os/yum.py\", \n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"Documentation\": [], \n  \"EC2\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"EC2 module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"EOS network modules\": [\n    \"lib/ansible/modules/network/eos/__init__.py\", \n    \"lib/ansible/modules/network/eos/eos_banner.py\", \n    \"lib/ansible/modules/network/eos/eos_command.py\", \n    \"lib/ansible/modules/network/eos/eos_config.py\", \n    \"lib/ansible/modules/network/eos/eos_eapi.py\", \n    \"lib/ansible/modules/network/eos/eos_facts.py\", \n    \"lib/ansible/modules/network/eos/eos_logging.py\", \n    \"lib/ansible/modules/network/eos/eos_system.py\", \n    \"lib/ansible/modules/network/eos/eos_user.py\", \n    \"lib/ansible/modules/network/eos/eos_vlan.py\", \n    \"lib/ansible/modules/network/eos/eos_vrf.py\", \n    \"test/units/modules/network/eos/__init__.py\", \n    \"test/units/modules/network/eos/eos_module.py\", \n    \"test/units/modules/network/eos/fixtures/eos_banner_show_banner.txt\", \n    \"test/units/modules/network/eos/fixtures/eos_command_show_version.txt\", \n    \"test/units/modules/network/eos/fixtures/eos_config_candidate.cfg\", \n    \"test/units/modules/network/eos/fixtures/eos_config_config.cfg\", \n    \"test/units/modules/network/eos/fixtures/eos_config_config_updated.cfg\", \n    \"test/units/modules/network/eos/fixtures/eos_eapi_show_mgmt.json\", \n    \"test/units/modules/network/eos/fixtures/eos_eapi_show_mgmt_unconfigured.json\", \n    \"test/units/modules/network/eos/fixtures/eos_eapi_show_vrf.text\", \n    \"test/units/modules/network/eos/fixtures/eos_system_config.cfg\", \n    \"test/units/modules/network/eos/fixtures/eos_user_config.cfg\", \n    \"test/units/modules/network/eos/test_eos_banner.py\", \n    \"test/units/modules/network/eos/test_eos_command.py\", \n    \"test/units/modules/network/eos/test_eos_config.py\", \n    \"test/units/modules/network/eos/test_eos_eapi.py\", \n    \"test/units/modules/network/eos/test_eos_system.py\", \n    \"test/units/modules/network/eos/test_eos_user.py\"\n  ], \n  \"Edit (Added for ease of readability) iosxr_config\": [\n    \"lib/ansible/modules/network/iosxr/iosxr_config.py\"\n  ], \n  \"Examples:\\n* archive (https://docs.ansible.com/ansible/archive_module.html)\\n* s3_sync (https://docs.ansible.com/ansible/s3_sync_module.html)\": [\n    \"lib/ansible/modules/cloud/amazon/s3_sync.py\", \n    \"lib/ansible/modules/files/archive.py\"\n  ], \n  \"Executor\": [], \n  \"Expect module\": [\n    \"lib/ansible/modules/commands/expect.py\"\n  ], \n  \"Fact module + action plugin\": [\n    \"lib/ansible/plugins/action\"\n  ], \n  \"Facter module\\n`lib/ansible/modules/system/facter.py`\": [\n    \"lib/ansible/modules/system/facter.py\"\n  ], \n  \"Facts\": [\n    \"lib/ansible/module_utils/facts\"\n  ], \n  \"Fetch\": [\n    \"lib/ansible/modules/files/fetch.py\"\n  ], \n  \"File\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"File Module\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"File module\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"File modules with `backup` option: `copy`, `template`, `lineinfile`, `ini_file`, `replace`.\": [\n    \"lib/ansible/modules/files/ini_file.py\", \n    \"lib/ansible/modules/files/lineinfile.py\", \n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"File transfer during an Ansible run with sftp\": [], \n  \"Files module\": [], \n  \"Files/Template\": [], \n  \"Filter `quote` from filter plugin `core`\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"Firewalld\": [\n    \"lib/ansible/modules/system/firewalld.py\"\n  ], \n  \"Flush handlers by name\": [\n    \"lib/ansible/playbook/handler.py\"\n  ], \n  \"Foreman module\": [\n    \"lib/ansible/modules/remote_management/foreman/foreman.py\"\n  ], \n  \"GCE\": [\n    \"lib/ansible/modules/cloud/google/gce.py\"\n  ], \n  \"GCP ansible modules\": [\n    \"lib/ansible/modules/cloud/google\"\n  ], \n  \"GUIDELINES.md\": \"lib/ansible/modules/cloud/amazon/GUIDELINES.md\", \n  \"GUIDELINES.md module\": \"lib/ansible/modules/cloud/amazon/GUIDELINES.md\", \n  \"Gathering Facts\": [], \n  \"Git module\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"Git module\\nhttp://docs.ansible.com/ansible/git_module.html\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"HaProxy Module\": [\n    \"lib/ansible/modules/net_tools/haproxy.py\"\n  ], \n  \"HomeBrew Modules\": [\n    \"lib/ansible/modules/packaging/os/homebrew.py\"\n  ], \n  \"I guess this is in ansible core, or wheverever the jinja templating stuff lives.\": [\n    \"lib/ansible/template\"\n  ], \n  \"IAM\": [\n    \"lib/ansible/modules/cloud/amazon/iam.py\"\n  ], \n  \"IOS\": [], \n  \"In the cloud module, in the docker module, the docker_volume command\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"Included / imported plays and group_vars loading\": [], \n  \"Install/Upgrade\": [], \n  \"Installation of Ansible into a virtual environment (optionally, via Homebrew)\": [\n    \"lib/ansible/modules/packaging/os/homebrew.py\"\n  ], \n  \"Inventory\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"Inventory file\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"InventoryManager\": [], \n  \"InventoryManager and Inventory Plugins\": [\n    \"lib/ansible/plugins/inventory\"\n  ], \n  \"It concerns the when statement.\": [], \n  \"Jinja\": [\n    \"lib/ansible/template\"\n  ], \n  \"Jinja templating.\": [], \n  \"Jinja2 includes in ansible template module\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"Jinja2 templating (inheritance)\": [], \n  \"Jira\": [\n    \"lib/ansible/modules/web_infrastructure/jira.py\"\n  ], \n  \"Jira Module\": [\n    \"lib/ansible/modules/web_infrastructure/jira.py\"\n  ], \n  \"Junos_Command\": [\n    \"lib/ansible/modules/network/junos/junos_command.py\"\n  ], \n  \"Kubernetes\\nansible/lib/ansible/modules/clustering/kubernetes.py\": [\n    \"lib/ansible/modules/clustering/kubernetes.py\"\n  ], \n  \"Kubernetes Module\": [\n    \"lib/ansible/modules/clustering/kubernetes.py\"\n  ], \n  \"LOOKUP(dig)\": [], \n  \"LVM fact gathering\": [], \n  \"LVOL\": [\n    \"lib/ansible/modules/system/lvol.py\"\n  ], \n  \"LVOL module\": [\n    \"lib/ansible/modules/system/lvol.py\"\n  ], \n  \"Lambda\": [\n    \"lib/ansible/modules/cloud/amazon/lambda.py\"\n  ], \n  \"Letsencrypt\": [\n    \"lib/ansible/modules/web_infrastructure/letsencrypt.py\"\n  ], \n  \"LineInFile + ansible-vault\": [\n    \"bin/ansible-vault\", \n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"Lineinfile\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"Lookup plugin\": [], \n  \"Make\": [\n    \"lib/ansible/modules/system/make.py\"\n  ], \n  \"Math filters `human_to_bytes` and `human_readable`\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"Module - tower_project\": [\n    \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_project.py\"\n  ], \n  \"Module HTML documentation\": [], \n  \"Module Route53\": [\n    \"lib/ansible/modules/cloud/amazon/route53.py\"\n  ], \n  \"Module `apt_key`\": [\n    \"lib/ansible/modules/packaging/os/apt_key.py\"\n  ], \n  \"Module `maven_artifact`\": [\n    \"lib/ansible/modules/packaging/language/maven_artifact.py\"\n  ], \n  \"Module `synchronize`\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"Module copy\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"Module fetch\": [\n    \"lib/ansible/modules/files/fetch.py\"\n  ], \n  \"Module filesystem\": [\n    \"lib/ansible/modules/system/filesystem.py\"\n  ], \n  \"Module git\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"Module nmcli - Manage Networking\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"Module rpm_key\": [\n    \"lib/ansible/modules/packaging/os/rpm_key.py\"\n  ], \n  \"Module search path\": [], \n  \"Module source_control/git\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"Module sros_config\": [\n    \"lib/ansible/modules/network/sros/sros_config.py\"\n  ], \n  \"Module: Copy\\nOption: decrypt: no #new in version 2.4.\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"Module: authorized_key\": [\n    \"lib/ansible/modules/system/authorized_key.py\"\n  ], \n  \"Module: django_manage\": [\n    \"lib/ansible/modules/web_infrastructure/django_manage.py\"\n  ], \n  \"Module: ec2\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"Module: elb_application_lb\": [\n    \"lib/ansible/modules/cloud/amazon/elb_application_lb.py\"\n  ], \n  \"Module: include_role\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"Module: mysql_replication\": [\n    \"lib/ansible/modules/database/mysql/mysql_replication.py\"\n  ], \n  \"Module: script, command\": [\n    \"lib/ansible/modules/commands/command.py\", \n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"Module: unarchive\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"Module: vsphere_guest - vm_hardware\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"Module: win_update\": [], \n  \"Module: yum\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"Modules\": [], \n  \"Modules template, copy\": [\n    \"lib/ansible/modules/files/copy.py\", \n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"Most closely to feature (or issue): How to perform privilege elevation using just \\\"su -\\\"?\": [], \n  \"N/A\": [], \n  \"NA\": [], \n  \"NPM\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"NXOS SCP file from server (nxos_copy ?)\": [], \n  \"NXOS modules\": [\n    \"lib/ansible/modules/network/nxos\"\n  ], \n  \"NXOS_CONFIG\": [\n    \"lib/ansible/modules/network/nxos/nxos_config.py\"\n  ], \n  \"Nested Role dependencies - meta/main.yml\": [\n    \"lib/ansible/playbook/role/requirement.py\"\n  ], \n  \"Network Action Plugin\": [\n    \"lib/ansible/plugins/action\"\n  ], \n  \"Network Filter Plugin (network.py)\": [\n    \"lib/ansible/plugins/filter/network.py\"\n  ], \n  \"Network Modules\": [\n    \"lib/ansible/modules/network\"\n  ], \n  \"New module\": [], \n  \"New module for aws step functions\": [], \n  \"New module that I have written to get the datastore name.\": [], \n  \"Not applicable.\": [], \n  \"Not sure -- something that handles dereferencing variables, presumably?\": [], \n  \"Not sure. Core?\": [], \n  \"Pacman\": [\n    \"lib/ansible/modules/packaging/os/pacman.py\"\n  ], \n  \"Pam_limits\": [\n    \"lib/ansible/modules/system/pam_limits.py\"\n  ], \n  \"Patch module\": [\n    \"lib/ansible/modules/files/patch.py\"\n  ], \n  \"Playbook\": [], \n  \"Playbook & Inventory\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"Playbook Roles and Include Statements\": [\n    \"lib/ansible/modules/utilities/logic/_include.py\", \n    \"lib/ansible/playbook/role\"\n  ], \n  \"Playbook includes\": [], \n  \"Playbook roles\": [\n    \"lib/ansible/playbook/role\"\n  ], \n  \"Playbooks\": [], \n  \"Playbooks blocks with fail module\\nhttp://docs.ansible.com/ansible/playbooks_blocks.html\\nhttp://docs.ansible.com/ansible/fail_module.html\": [\n    \"docs\", \n    \"lib/ansible/modules/utilities/logic/fail.py\", \n    \"lib/ansible/playbook/block.py\"\n  ], \n  \"Playbooks/Roles\": [], \n  \"PluginLoader\": [], \n  \"Privilege escalation/changing effective user\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"Proxmox (Dynamic Inventory script)\": [\n    \"contrib/inventory\"\n  ], \n  \"Python API 2.0\": [], \n  \"Quote filter\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"RDS\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"README.md\": \"lib/ansible/modules/cloud/openstack/README.md\", \n  \"README.md module\": \"lib/ansible/modules/cloud/openstack/README.md\", \n  \"README.rst\": \"lib/ansible/modules/cloud/ovirt/README.rst\", \n  \"README.rst module\": \"lib/ansible/modules/cloud/ovirt/README.rst\", \n  \"Red hat subscription module\": [], \n  \"Role dependencies\": [\n    \"lib/ansible/playbook/role/requirement.py\"\n  ], \n  \"SFTP (for template transfer)\": [], \n  \"SNS_Topic\": [\n    \"lib/ansible/modules/cloud/amazon/sns_topic.py\"\n  ], \n  \"SSH Connection plugin\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"SSH Pipelining.\": [], \n  \"SSH and Ping All\": [\n    \"lib/ansible/modules/system/ping.py\"\n  ], \n  \"SSH connection\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"SSH connection plugin\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"SSH connectivity\": [], \n  \"SU prompt\": [], \n  \"Script module\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"Script, Windows modules to access c drives in windows\": [\n    \"lib/ansible/modules/commands/script.py\", \n    \"lib/ansible/modules/windows\"\n  ], \n  \"Seems to be a core feature.\": [], \n  \"Service Module\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"Set operations in tasks return `set()` instead of item.\": [], \n  \"Setup\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"Shell\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"Slack module\": [\n    \"lib/ansible/modules/notification/slack.py\"\n  ], \n  \"Suggestion: ifupdown\": [], \n  \"Suggestion: netctl\": [], \n  \"Suggestion: networkd\": [], \n  \"Synchronize\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"TASK [setup]\": [], \n  \"Task docker_service\": [\n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"Template\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"Template Module\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"Template module\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"Testing\": [\n    \"test/\"\n  ], \n  \"Tests\": [], \n  \"The \\\"[unarchive](http://docs.ansible.com/ansible/latest/unarchive_module.html)\\\" module.\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"The `npm` module\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"The new ldap_attr module.\": [\n    \"lib/ansible/modules/net_tools/ldap/ldap_attr.py\"\n  ], \n  \"The register mechanic in Playbook tasks.\": [], \n  \"There is no module for modifying DNS zones.\": [], \n  \"Tower\": [], \n  \"Trying to use ios_config module but can't open shell to device.\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"Type conversion\": [], \n  \"Type detection\": [], \n  \"URI Module\": [\n    \"lib/ansible/modules/net_tools/basics/uri.py\"\n  ], \n  \"Uri\": [\n    \"lib/ansible/modules/net_tools/basics/uri.py\"\n  ], \n  \"Use of custom modules in $role/library/\": [], \n  \"User Module, Ansible core module\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"User module\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"Utility module: wait_for\": [\n    \"lib/ansible/modules/utilities/logic/wait_for.py\"\n  ], \n  \"Variable expansion/core.\": [], \n  \"Variable handling\": [], \n  \"Variable management\": [], \n  \"Variable scope\": [], \n  \"VaultLib\": [], \n  \"WinRM\": [\n    \"lib/ansible/plugins/connection/winrm.py\"\n  ], \n  \"Win_copy\": [\n    \"lib/ansible/modules/windows/win_copy.py\"\n  ], \n  \"Win_updates\": [\n    \"lib/ansible/modules/windows/win_updates.ps1\"\n  ], \n  \"Windows management over SSH\": [], \n  \"Windows module \\\"win_dotnet_ngen\\\"\": [], \n  \"Windows module: win_robocopy\\nhttp://docs.ansible.com/ansible/latest/win_robocopy_module.html\": [\n    \"lib/ansible/modules/windows/win_robocopy.py\"\n  ], \n  \"Windows modules\": [\n    \"lib/ansible/modules/windows\"\n  ], \n  \"Windows setup module (setup.ps1)\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"XML Module\": [\n    \"lib/ansible/modules/files/xml.py\"\n  ], \n  \"XML module\": [\n    \"lib/ansible/modules/files/xml.py\"\n  ], \n  \"Yum\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"Yum module\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"Zypper module - http//docs.ansible.com/ansible/latest/zypper_module.html\": [\n    \"lib/ansible/modules/packaging/os/zypper.py\"\n  ], \n  \"[Mount module](http://docs.ansible.com/ansible/mount_module.html)\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"[S3 module](http://docs.ansible.com/ansible/s3_module.html)\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"[ansible/lib/ansible/parsing/splitter.py][1]\": [], \n  \"[ec2_vpc_nat_gateway](http://docs.ansible.com/ansible/latest/ec2_vpc_nat_gateway_module.html)\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway.py\"\n  ], \n  \"[helm module](https//docs.ansible.com/ansible/2.4/helm_module.html)\": [], \n  \"[include_vars](http//docs.ansible.com/ansible/latest/include_vars_module.htmloptions)\": [\n    \"lib/ansible/modules/utilities/logic/include_vars.py\"\n  ], \n  \"[module: database/mysql/mysql_replication.py]\": [], \n  \"[npm](http://docs.ansible.com/ansible/npm_module.html)\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"[windows] setup module\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"_Include_ task.\": [], \n  \"_accelerate\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n  \"_accelerate module\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n  \"_apt_ module\": [], \n  \"_azure\": \"lib/ansible/modules/cloud/azure/_azure.py\", \n  \"_azure module\": \"lib/ansible/modules/cloud/azure/_azure.py\", \n  \"_cl_bond\": \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n  \"_cl_bond module\": \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n  \"_cl_bridge\": \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n  \"_cl_bridge module\": \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n  \"_cl_img_install\": \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n  \"_cl_img_install module\": \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n  \"_cl_interface\": \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n  \"_cl_interface module\": \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n  \"_cl_interface_policy\": \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n  \"_cl_interface_policy module\": \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n  \"_cl_license\": \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n  \"_cl_license module\": \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n  \"_cl_ports\": \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n  \"_cl_ports module\": \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n  \"_cs_nic\": \"lib/ansible/modules/cloud/cloudstack/_cs_nic.py\", \n  \"_cs_nic module\": \"lib/ansible/modules/cloud/cloudstack/_cs_nic.py\", \n  \"_docker\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"_docker module\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"_ec2_ami_search\": \"lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\", \n  \"_ec2_ami_search module\": \"lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\", \n  \"_ec2_facts\": \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\", \n  \"_ec2_facts module\": \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\", \n  \"_ec2_remote_facts\": \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\", \n  \"_ec2_remote_facts module\": \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\", \n  \"_ec2_vpc\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n  \"_ec2_vpc module\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n  \"_ec2_vpc_dhcp_options\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\", \n  \"_ec2_vpc_dhcp_options module\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\", \n  \"_ec2_vpc_dhcp_options_facts\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\", \n  \"_ec2_vpc_dhcp_options_facts module\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\", \n  \"_iam_cert_facts\": \"lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\", \n  \"_iam_cert_facts module\": \"lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\", \n  \"_include\": \"lib/ansible/modules/utilities/logic/_include.py\", \n  \"_include module\": \"lib/ansible/modules/utilities/logic/_include.py\", \n  \"_include_role:_\": [], \n  \"_netscaler\": \"lib/ansible/modules/network/citrix/_netscaler.py\", \n  \"_netscaler module\": \"lib/ansible/modules/network/citrix/_netscaler.py\", \n  \"_nxos_mtu\": \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n  \"_nxos_mtu module\": \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n  \"_os_server_actions\": \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n  \"_os_server_actions module\": \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n  \"_ovirt_affinity_groups\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\", \n  \"_ovirt_affinity_groups module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\", \n  \"_ovirt_affinity_labels\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\", \n  \"_ovirt_affinity_labels module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\", \n  \"_ovirt_affinity_labels_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\", \n  \"_ovirt_affinity_labels_facts module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\", \n  \"_ovirt_clusters\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\", \n  \"_ovirt_clusters module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\", \n  \"_ovirt_clusters_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\", \n  \"_ovirt_clusters_facts module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\", \n  \"_ovirt_datacenters\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\", \n  \"_ovirt_datacenters module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\", \n  \"_ovirt_datacenters_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\", \n  \"_ovirt_datacenters_facts module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\", \n  \"_ovirt_disks\": \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\", \n  \"_ovirt_disks module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\", \n  \"_ovirt_external_providers\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\", \n  \"_ovirt_external_providers module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\", \n  \"_ovirt_external_providers_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\", \n  \"_ovirt_external_providers_facts module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\", \n  \"_ovirt_groups\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\", \n  \"_ovirt_groups module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\", \n  \"_ovirt_groups_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\", \n  \"_ovirt_groups_facts module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\", \n  \"_s3\": \"lib/ansible/modules/cloud/amazon/_s3.py\", \n  \"_s3 module\": \"lib/ansible/modules/cloud/amazon/_s3.py\", \n  \"_win_msi\": \"lib/ansible/modules/windows/_win_msi.ps1\", \n  \"_win_msi module\": \"lib/ansible/modules/windows/_win_msi.ps1\", \n  \"```\\nec2_asg_facts\\n```\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg_facts.py\"\n  ], \n  \"```\\nnxos_vlan\\n```\": [\n    \"lib/ansible/modules/network/nxos/nxos_vlan.py\"\n  ], \n  \"```\\nproxmox_kvm module\\n```\": [\n    \"lib/ansible/modules/cloud/misc/proxmox_kvm.py\"\n  ], \n  \"```\\nselectattr(x, 'equalto', y)\\n```\": [], \n  \"```hacking/env-setup.fish```\": [\n    \"hacking/env-setup.fish\"\n  ], \n  \"``yum_repository`` module\": [\n    \"lib/ansible/modules/packaging/os/yum_repository.py\"\n  ], \n  \"`ansible.plugins.callback.default.CallbackModule`\": [], \n  \"`ansible/modules/source_control/git.py`\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"`ansible_module_ec2_ami_copy.py`\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_ami_copy.py\"\n  ], \n  \"`apt_key_module`\": [\n    \"lib/ansible/modules/packaging/os/apt_key.py\"\n  ], \n  \"`apt_key` module\": [\n    \"lib/ansible/modules/packaging/os/apt_key.py\"\n  ], \n  \"`apt_repository`\": [\n    \"lib/ansible/modules/packaging/os/apt_repository.py\"\n  ], \n  \"`apt` module\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"`assemble`\": [\n    \"lib/ansible/modules/files/assemble.py\"\n  ], \n  \"`aws_s3`\": [\n    \"lib/ansible/modules/cloud/amazon/aws_s3.py\"\n  ], \n  \"`azure_rm.py`\": [\n    \"contrib/inventory/azure_rm.py\"\n  ], \n  \"`azure_rm_networkinterface`\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface.py\"\n  ], \n  \"`azure_rm_storageaccount_facts`\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount_facts.py\"\n  ], \n  \"`azure_rm_virtualmachine: ansible/lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py`\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"`cloud/amazon/rds`\": [], \n  \"`cloudwatchevent_rule`\": [\n    \"lib/ansible/modules/cloud/amazon/cloudwatchevent_rule.py\"\n  ], \n  \"`command`-module\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"`consul_acl` module integration tests\": [\n    \"lib/ansible/modules/clustering/consul_acl.py\"\n  ], \n  \"`cron`\": [\n    \"lib/ansible/modules/system/cron.py\"\n  ], \n  \"`docker_container`\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"`docker_image`\": [\n    \"lib/ansible/modules/cloud/docker/docker_image.py\"\n  ], \n  \"`ec2_vpc_route_table`: `ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py`\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\"\n  ], \n  \"`ecs_service_facts`\": [\n    \"lib/ansible/modules/cloud/amazon/ecs_service_facts.py\"\n  ], \n  \"`ecs_service` module\": [\n    \"lib/ansible/modules/cloud/amazon/ecs_service.py\"\n  ], \n  \"`elasticsearch_plugin`\": [\n    \"lib/ansible/modules/database/misc/elasticsearch_plugin.py\"\n  ], \n  \"`fetch` module\": [\n    \"lib/ansible/modules/files/fetch.py\"\n  ], \n  \"`filesystem` module\": [\n    \"lib/ansible/modules/system/filesystem.py\"\n  ], \n  \"`git`\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"`hacking/test-module`\": [], \n  \"`include*` and `import*`\": [\n    \"lib/ansible/modules/utilities/logic/_include.py\"\n  ], \n  \"`include_role`\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"`include_role` or meta/dependencies\": [], \n  \"`include_version` used in a loop statement\": [], \n  \"`lib/ansible/executor/module_common.py`\": [\n    \"lib/ansible/executor/module_common.py\"\n  ], \n  \"`lib/ansible/modules/cloud/amazon/efs.py`\": [\n    \"lib/ansible/modules/cloud/amazon/efs.py\"\n  ], \n  \"`lib/ansible/modules/web_infrastructure/jboss.py`\": [\n    \"lib/ansible/modules/web_infrastructure/jboss.py\"\n  ], \n  \"`lib/ansible/parsing/yaml/dumper.py:AnsibleDumper`\": [\n    \"lib/ansible/parsing/yaml/dumper.py\"\n  ], \n  \"`lxc_container` module\": [\n    \"lib/ansible/modules/cloud/lxc/lxc_container.py\"\n  ], \n  \"`meta` module\": [\n    \"lib/ansible/modules/utilities/helper/meta.py\"\n  ], \n  \"`module_utils/basic.py`\": [\n    \"lib/ansible/module_utils/basic.py\"\n  ], \n  \"`module_utils/urls.py` and the `SSLValidationHandler`\": [\n    \"lib/ansible/module_utils\"\n  ], \n  \"`modules/cloud/amazon/ecs_taskdefinition.py`\": [\n    \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py\"\n  ], \n  \"`modules/cloud/docker/docker_container.py`\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"`modules/cloud/misc/proxmox_kvm.py`\": [\n    \"lib/ansible/modules/cloud/misc/proxmox_kvm.py\"\n  ], \n  \"`modules/system/service`\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"`mysql_db`\": [\n    \"lib/ansible/modules/database/mysql/mysql_db.py\"\n  ], \n  \"`mysql_user`\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"`mysql_user` module\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"`plugins/strategy/__init__.py`\": [\n    \"lib/ansible/plugins/strategy/__init__.py\"\n  ], \n  \"`portage` module\": [\n    \"lib/ansible/modules/packaging/os/portage.py\"\n  ], \n  \"`postgresql_user` module\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_user.py\"\n  ], \n  \"`s3` module\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"`script` inventory plugin\": [\n    \"lib/ansible/plugins/inventory\"\n  ], \n  \"`script` module\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"`service` module\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"`setup` module/`delegate_facts`\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"`ssh` transport\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"`subversion`\": [\n    \"lib/ansible/modules/source_control/subversion.py\"\n  ], \n  \"`synchronize`\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"`systemd`\": [\n    \"lib/ansible/modules/system/systemd.py\"\n  ], \n  \"`template` module\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"`unarchive`\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"`uri`\": [\n    \"lib/ansible/modules/net_tools/basics/uri.py\"\n  ], \n  \"`user` module\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"`validate-modules`\": [\n    \"test/sanity/validate-modules/__init__.py\"\n  ], \n  \"`when` conditional\": [\n    \"lib/ansible/playbook/conditional.py\"\n  ], \n  \"`when` conditionals\": [], \n  \"`win_acl`\": [\n    \"lib/ansible/modules/windows/win_acl.ps1\"\n  ], \n  \"`win_command`\\n`win_shell`\": [\n    \"lib/ansible/modules/windows/win_command.ps1\", \n    \"lib/ansible/modules/windows/win_shell.ps1\"\n  ], \n  \"`win_shell`\": [\n    \"lib/ansible/modules/windows/win_shell.ps1\"\n  ], \n  \"`yum`\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"`zypper_repository`\": [\n    \"lib/ansible/modules/packaging/os/zypper_repository.py\"\n  ], \n  \"a10_server\": \"lib/ansible/modules/network/a10/a10_server.py\", \n  \"a10_server module\": \"lib/ansible/modules/network/a10/a10_server.py\", \n  \"a10_server_axapi3\": \"lib/ansible/modules/network/a10/a10_server_axapi3.py\", \n  \"a10_server_axapi3 module\": \"lib/ansible/modules/network/a10/a10_server_axapi3.py\", \n  \"a10_service_group\": \"lib/ansible/modules/network/a10/a10_service_group.py\", \n  \"a10_service_group module\": \"lib/ansible/modules/network/a10/a10_service_group.py\", \n  \"a10_virtual_server\": \"lib/ansible/modules/network/a10/a10_virtual_server.py\", \n  \"a10_virtual_server module\": \"lib/ansible/modules/network/a10/a10_virtual_server.py\", \n  \"accelerate\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n  \"accelerate module\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n  \"aci_aep\": \"lib/ansible/modules/network/aci/aci_aep.py\", \n  \"aci_aep module\": \"lib/ansible/modules/network/aci/aci_aep.py\", \n  \"aci_ap\": \"lib/ansible/modules/network/aci/aci_ap.py\", \n  \"aci_ap module\": \"lib/ansible/modules/network/aci/aci_ap.py\", \n  \"aci_bd\": \"lib/ansible/modules/network/aci/aci_bd.py\", \n  \"aci_bd module\": \"lib/ansible/modules/network/aci/aci_bd.py\", \n  \"aci_bd_subnet\": \"lib/ansible/modules/network/aci/aci_bd_subnet.py\", \n  \"aci_bd_subnet module\": \"lib/ansible/modules/network/aci/aci_bd_subnet.py\", \n  \"aci_bd_to_l3out\": \"lib/ansible/modules/network/aci/aci_bd_to_l3out.py\", \n  \"aci_bd_to_l3out module\": \"lib/ansible/modules/network/aci/aci_bd_to_l3out.py\", \n  \"aci_config_rollback\": \"lib/ansible/modules/network/aci/aci_config_rollback.py\", \n  \"aci_config_rollback module\": \"lib/ansible/modules/network/aci/aci_config_rollback.py\", \n  \"aci_config_snapshot\": \"lib/ansible/modules/network/aci/aci_config_snapshot.py\", \n  \"aci_config_snapshot module\": \"lib/ansible/modules/network/aci/aci_config_snapshot.py\", \n  \"aci_contract\": \"lib/ansible/modules/network/aci/aci_contract.py\", \n  \"aci_contract module\": \"lib/ansible/modules/network/aci/aci_contract.py\", \n  \"aci_contract_subject\": \"lib/ansible/modules/network/aci/aci_contract_subject.py\", \n  \"aci_contract_subject module\": \"lib/ansible/modules/network/aci/aci_contract_subject.py\", \n  \"aci_contract_subject_to_filter\": \"lib/ansible/modules/network/aci/aci_contract_subject_to_filter.py\", \n  \"aci_contract_subject_to_filter module\": \"lib/ansible/modules/network/aci/aci_contract_subject_to_filter.py\", \n  \"aci_epg\": \"lib/ansible/modules/network/aci/aci_epg.py\", \n  \"aci_epg module\": \"lib/ansible/modules/network/aci/aci_epg.py\", \n  \"aci_epg_monitoring_policy\": \"lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py\", \n  \"aci_epg_monitoring_policy module\": \"lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py\", \n  \"aci_epg_to_contract\": \"lib/ansible/modules/network/aci/aci_epg_to_contract.py\", \n  \"aci_epg_to_contract module\": \"lib/ansible/modules/network/aci/aci_epg_to_contract.py\", \n  \"aci_epg_to_domain\": \"lib/ansible/modules/network/aci/aci_epg_to_domain.py\", \n  \"aci_epg_to_domain Module\": [\n    \"lib/ansible/modules/network/aci/aci_epg_to_domain.py\"\n  ], \n  \"aci_epg_to_domain module\": \"lib/ansible/modules/network/aci/aci_epg_to_domain.py\", \n  \"aci_filter\": \"lib/ansible/modules/network/aci/aci_filter.py\", \n  \"aci_filter module\": \"lib/ansible/modules/network/aci/aci_filter.py\", \n  \"aci_filter_entry\": \"lib/ansible/modules/network/aci/aci_filter_entry.py\", \n  \"aci_filter_entry module\": \"lib/ansible/modules/network/aci/aci_filter_entry.py\", \n  \"aci_intf_policy_fc\": \"lib/ansible/modules/network/aci/aci_intf_policy_fc.py\", \n  \"aci_intf_policy_fc module\": \"lib/ansible/modules/network/aci/aci_intf_policy_fc.py\", \n  \"aci_intf_policy_l2\": \"lib/ansible/modules/network/aci/aci_intf_policy_l2.py\", \n  \"aci_intf_policy_l2 module\": \"lib/ansible/modules/network/aci/aci_intf_policy_l2.py\", \n  \"aci_intf_policy_lldp\": \"lib/ansible/modules/network/aci/aci_intf_policy_lldp.py\", \n  \"aci_intf_policy_lldp module\": \"lib/ansible/modules/network/aci/aci_intf_policy_lldp.py\", \n  \"aci_intf_policy_mcp\": \"lib/ansible/modules/network/aci/aci_intf_policy_mcp.py\", \n  \"aci_intf_policy_mcp module\": \"lib/ansible/modules/network/aci/aci_intf_policy_mcp.py\", \n  \"aci_intf_policy_port_channel\": \"lib/ansible/modules/network/aci/aci_intf_policy_port_channel.py\", \n  \"aci_intf_policy_port_channel module\": \"lib/ansible/modules/network/aci/aci_intf_policy_port_channel.py\", \n  \"aci_intf_policy_port_security\": \"lib/ansible/modules/network/aci/aci_intf_policy_port_security.py\", \n  \"aci_intf_policy_port_security module\": \"lib/ansible/modules/network/aci/aci_intf_policy_port_security.py\", \n  \"aci_l3out_route_tag_policy\": \"lib/ansible/modules/network/aci/aci_l3out_route_tag_policy.py\", \n  \"aci_l3out_route_tag_policy module\": \"lib/ansible/modules/network/aci/aci_l3out_route_tag_policy.py\", \n  \"aci_rest\": [\n    \"lib/ansible/modules/network/aci/aci_rest.py\"\n  ], \n  \"aci_rest module\": \"lib/ansible/modules/network/aci/aci_rest.py\", \n  \"aci_taboo_contract\": \"lib/ansible/modules/network/aci/aci_taboo_contract.py\", \n  \"aci_taboo_contract module\": \"lib/ansible/modules/network/aci/aci_taboo_contract.py\", \n  \"aci_tenant\": \"lib/ansible/modules/network/aci/aci_tenant.py\", \n  \"aci_tenant module\": \"lib/ansible/modules/network/aci/aci_tenant.py\", \n  \"aci_tenant_action_rule_profile\": \"lib/ansible/modules/network/aci/aci_tenant_action_rule_profile.py\", \n  \"aci_tenant_action_rule_profile module\": \"lib/ansible/modules/network/aci/aci_tenant_action_rule_profile.py\", \n  \"aci_tenant_ep_retention_policy\": \"lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py\", \n  \"aci_tenant_ep_retention_policy module\": \"lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py\", \n  \"aci_tenant_span_dst_group\": \"lib/ansible/modules/network/aci/aci_tenant_span_dst_group.py\", \n  \"aci_tenant_span_dst_group module\": \"lib/ansible/modules/network/aci/aci_tenant_span_dst_group.py\", \n  \"aci_tenant_span_src_group\": \"lib/ansible/modules/network/aci/aci_tenant_span_src_group.py\", \n  \"aci_tenant_span_src_group module\": \"lib/ansible/modules/network/aci/aci_tenant_span_src_group.py\", \n  \"aci_tenant_span_src_group_to_dst_group\": \"lib/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py\", \n  \"aci_tenant_span_src_group_to_dst_group module\": \"lib/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py\", \n  \"aci_vrf\": \"lib/ansible/modules/network/aci/aci_vrf.py\", \n  \"aci_vrf module\": \"lib/ansible/modules/network/aci/aci_vrf.py\", \n  \"acl\": [\n    \"lib/ansible/modules/files/acl.py\"\n  ], \n  \"acl module\": [\n    \"lib/ansible/modules/files/acl.py\"\n  ], \n  \"action_plugin\": [], \n  \"add_host\": [\n    \"lib/ansible/modules/inventory/add_host.py\"\n  ], \n  \"add_host module\": [\n    \"lib/ansible/modules/inventory/add_host.py\"\n  ], \n  \"adhoc/playbook cli\": [], \n  \"airbrake_deployment\": \"lib/ansible/modules/monitoring/airbrake_deployment.py\", \n  \"airbrake_deployment module\": \"lib/ansible/modules/monitoring/airbrake_deployment.py\", \n  \"aireos_command\": \"lib/ansible/modules/network/aireos/aireos_command.py\", \n  \"aireos_command module\": \"lib/ansible/modules/network/aireos/aireos_command.py\", \n  \"aireos_config\": \"lib/ansible/modules/network/aireos/aireos_config.py\", \n  \"aireos_config module\": \"lib/ansible/modules/network/aireos/aireos_config.py\", \n  \"aix_inittab\": \"lib/ansible/modules/system/aix_inittab.py\", \n  \"aix_inittab module\": \"lib/ansible/modules/system/aix_inittab.py\", \n  \"aix_lvol\": \"lib/ansible/modules/system/aix_lvol.py\", \n  \"aix_lvol module\": \"lib/ansible/modules/system/aix_lvol.py\", \n  \"all\": [], \n  \"all command modules\": [\n    \"lib/ansible/modules/commands\"\n  ], \n  \"almost all nxos modules and probably the module_utils/nxos.py\": [\n    \"lib/ansible/modules/network/nxos\"\n  ], \n  \"alternatives\": [\n    \"lib/ansible/modules/system/alternatives.py\"\n  ], \n  \"alternatives module\": \"lib/ansible/modules/system/alternatives.py\", \n  \"amazon/rds.py\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"amazon/s3\": [], \n  \"ansiballz\": [\n    \"lib/ansible/executor/module_common.py\"\n  ], \n  \"ansiballz compression / wrapper\": [], \n  \"ansiballz/ziploader for modules\": [], \n  \"ansible\": [], \n  \"ansible (got the latest tarball from here  http//releases.ansible.com/ansible)\": [], \n  \"ansible / docker_container / memory\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"ansible / gather_facts\": [], \n  \"ansible cloud module openstack\": [\n    \"lib/ansible/modules/cloud/openstack\"\n  ], \n  \"ansible command\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"ansible connection handling and loops\": [\n    \"lib/ansible/plugins/connection\"\n  ], \n  \"ansible core\": [], \n  \"ansible playbooks\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"ansible web3 -m shell -a \\\"uptime\\\"\\nansible web3 -m ping\": [\n    \"lib/ansible/modules/commands/shell.py\", \n    \"lib/ansible/modules/system/ping.py\"\n  ], \n  \"ansible windows module: `win_scheduled_task`\": [\n    \"lib/ansible/modules/windows/win_scheduled_task.ps1\"\n  ], \n  \"ansible-2.2.0.0\": [], \n  \"ansible-galaxy\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"ansible-galaxy\\nmodule_utils/urls.py\": [\n    \"lib/ansible/galaxy\", \n    \"lib/ansible/module_utils/urls.py\"\n  ], \n  \"ansible-galaxy and ansible-console\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"ansible-galaxy init\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"ansible-modules-core/cloud/docker/docker_login.py\": [\n    \"lib/ansible/modules/cloud/docker/docker_login.py\"\n  ], \n  \"ansible-modules-core/packaging/os/rpm_key.py\": [\n    \"lib/ansible/modules/packaging/os/rpm_key.py\"\n  ], \n  \"ansible-modules-core/source_control/subversion\": [\n    \"lib/ansible/modules/source_control/subversion.py\"\n  ], \n  \"ansible-modules-core/system/user.py\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"ansible-modules-extras/cloud/amazon/ecs_task\": [\n    \"lib/ansible/modules/cloud/amazon/ecs_task.py\"\n  ], \n  \"ansible-playbook\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"ansible-playbook  / SSH connection type\": [\n    \"lib/ansible/playbook\", \n    \"lib/ansible/plugins/connection\"\n  ], \n  \"ansible-playbook (--check option)\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"ansible-playbook (I think)\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"ansible-playbook --syntax-check\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"ansible-playbook / core\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"ansible-playbook running a playbook to build a VM in openstack\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"ansible-playbook setup\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"ansible-playbook using statically included files\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"ansible-playbook, --ssh-extra-args flag\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"ansible-playbook, when\": [\n    \"lib/ansible/playbook\"\n  ], \n  \"ansible-pull\": [\n    \"lib/ansible/cli/pull.py\"\n  ], \n  \"ansible-test\": [\n    \"test/runner/ansible-test\"\n  ], \n  \"ansible-vault\": [\n    \"lib/ansible/parsing/vault\"\n  ], \n  \"ansible-vault encrypt\": [\n    \"lib/ansible/parsing/vault\"\n  ], \n  \"ansible-vault, ansible\": [\n    \"bin/ansible\", \n    \"lib/ansible/parsing/vault\"\n  ], \n  \"ansible.cfg\": [\n    \"examples/ansible.cfg\", \n    \"lib/ansible/galaxy/data/container_enabled/tests/ansible.cfg\", \n    \"test/integration/targets/pull/pull-integration-test/ansible.cfg\", \n    \"test/sanity/ansible.cfg\", \n    \"test/units/ansible.cfg\"\n  ], \n  \"ansible.module_utils.dellos6\": [], \n  \"ansible/contrib/inventory/cloudforms.py\": [\n    \"contrib/inventory/cloudforms.py\"\n  ], \n  \"ansible/files/modules/archive.py\": [\n    \"lib/ansible/modules/files/archive.py\"\n  ], \n  \"ansible/get_url\": [\n    \"lib/ansible/modules/net_tools/basics/get_url.py\"\n  ], \n  \"ansible/hacking/test-module\": [\n    \"hacking/test-module\"\n  ], \n  \"ansible/inventory/manager.py\": [\n    \"lib/ansible/inventory/manager.py\"\n  ], \n  \"ansible/lib/ansible/modules/cloud/amazon/GUIDELINES.md\": \"lib/ansible/modules/cloud/amazon/GUIDELINES.md\", \n  \"ansible/lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\": \"lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/_ec2_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/_ec2_vpc.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\": \"lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/_s3.py\": \"lib/ansible/modules/cloud/amazon/_s3.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/aws_acm_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_acm_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/aws_api_gateway.py\": \"lib/ansible/modules/cloud/amazon/aws_api_gateway.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/aws_direct_connect_connection.py\": \"lib/ansible/modules/cloud/amazon/aws_direct_connect_connection.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/aws_direct_connect_link_aggregation_group.py\": \"lib/ansible/modules/cloud/amazon/aws_direct_connect_link_aggregation_group.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/aws_kms.py\": \"lib/ansible/modules/cloud/amazon/aws_kms.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/aws_kms_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_kms_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/aws_s3.py\": \"lib/ansible/modules/cloud/amazon/aws_s3.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/aws_s3_bucket_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_s3_bucket_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/aws_ssm_parameter_store.py\": \"lib/ansible/modules/cloud/amazon/aws_ssm_parameter_store.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/aws_waf_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_waf_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/cloudformation.py\": \"lib/ansible/modules/cloud/amazon/cloudformation.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/cloudformation_facts.py\": \"lib/ansible/modules/cloud/amazon/cloudformation_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/cloudfront_facts.py\": \"lib/ansible/modules/cloud/amazon/cloudfront_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/cloudtrail.py\": \"lib/ansible/modules/cloud/amazon/cloudtrail.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/cloudwatchevent_rule.py\": \"lib/ansible/modules/cloud/amazon/cloudwatchevent_rule.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/data_pipeline.py\": \"lib/ansible/modules/cloud/amazon/data_pipeline.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/dynamodb_table.py\": \"lib/ansible/modules/cloud/amazon/dynamodb_table.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/dynamodb_ttl.py\": \"lib/ansible/modules/cloud/amazon/dynamodb_ttl.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2.py\": \"lib/ansible/modules/cloud/amazon/ec2.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_ami.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_ami_copy.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami_copy.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_ami_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_ami_find.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami_find.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_ami_search.py\": \"lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_asg.py\": \"lib/ansible/modules/cloud/amazon/ec2_asg.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_asg_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_asg_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_customer_gateway.py\": \"lib/ansible/modules/cloud/amazon/ec2_customer_gateway.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_eip.py\": \"lib/ansible/modules/cloud/amazon/ec2_eip.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_elb.py\": \"lib/ansible/modules/cloud/amazon/ec2_elb.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_elb_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_elb_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\": \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_eni.py\": \"lib/ansible/modules/cloud/amazon/ec2_eni.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_eni_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_eni_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_group.py\": \"lib/ansible/modules/cloud/amazon/ec2_group.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_group_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_group_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_instance_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_instance_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_key.py\": \"lib/ansible/modules/cloud/amazon/ec2_key.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_lc.py\": \"lib/ansible/modules/cloud/amazon/ec2_lc.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_lc_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_lc_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_lc_find.py\": \"lib/ansible/modules/cloud/amazon/ec2_lc_find.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_metadata_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_metadata_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py\": \"lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_remote_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_scaling_policy.py\": \"lib/ansible/modules/cloud/amazon/ec2_scaling_policy.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_snapshot.py\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_snapshot_copy.py\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot_copy.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_snapshot_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_tag.py\": \"lib/ansible/modules/cloud/amazon/ec2_tag.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vol.py\": \"lib/ansible/modules/cloud/amazon/ec2_vol.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vol_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vol_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_options.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_options_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_igw.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_igw_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_nacl.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_nacl_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_net.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_net.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_net_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_net_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_peer.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peer.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_peering_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peering_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_route_table_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_subnet.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_subnet_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_vgw.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_vgw_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_vpn.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vpn.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ec2_win_password.py\": \"lib/ansible/modules/cloud/amazon/ec2_win_password.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ecs_attribute.py\": \"lib/ansible/modules/cloud/amazon/ecs_attribute.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ecs_cluster.py\": \"lib/ansible/modules/cloud/amazon/ecs_cluster.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ecs_ecr.py\": \"lib/ansible/modules/cloud/amazon/ecs_ecr.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ecs_service.py\": \"lib/ansible/modules/cloud/amazon/ecs_service.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ecs_service_facts.py\": \"lib/ansible/modules/cloud/amazon/ecs_service_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ecs_task.py\": \"lib/ansible/modules/cloud/amazon/ecs_task.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py\": \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/ecs_taskdefinition_facts.py\": \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/efs.py\": \"lib/ansible/modules/cloud/amazon/efs.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/efs_facts.py\": \"lib/ansible/modules/cloud/amazon/efs_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/elasticache.py\": \"lib/ansible/modules/cloud/amazon/elasticache.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/elasticache_parameter_group.py\": \"lib/ansible/modules/cloud/amazon/elasticache_parameter_group.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/elasticache_snapshot.py\": \"lib/ansible/modules/cloud/amazon/elasticache_snapshot.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/elasticache_subnet_group.py\": \"lib/ansible/modules/cloud/amazon/elasticache_subnet_group.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/elb_application_lb.py\": \"lib/ansible/modules/cloud/amazon/elb_application_lb.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/elb_application_lb_facts.py\": \"lib/ansible/modules/cloud/amazon/elb_application_lb_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/elb_classic_lb.py\": \"lib/ansible/modules/cloud/amazon/elb_classic_lb.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/elb_classic_lb_facts.py\": \"lib/ansible/modules/cloud/amazon/elb_classic_lb_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/elb_instance.py\": \"lib/ansible/modules/cloud/amazon/elb_instance.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/elb_target_group.py\": \"lib/ansible/modules/cloud/amazon/elb_target_group.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/elb_target_group_facts.py\": \"lib/ansible/modules/cloud/amazon/elb_target_group_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/execute_lambda.py\": \"lib/ansible/modules/cloud/amazon/execute_lambda.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/iam.py\": \"lib/ansible/modules/cloud/amazon/iam.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/iam_cert.py\": \"lib/ansible/modules/cloud/amazon/iam_cert.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/iam_cert_facts.py\": \"lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/iam_group.py\": \"lib/ansible/modules/cloud/amazon/iam_group.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/iam_managed_policy.py\": \"lib/ansible/modules/cloud/amazon/iam_managed_policy.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/iam_mfa_device_facts.py\": \"lib/ansible/modules/cloud/amazon/iam_mfa_device_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/iam_policy.py\": [\n    \"lib/ansible/modules/cloud/amazon/iam_policy.py\"\n  ], \n  \"ansible/lib/ansible/modules/cloud/amazon/iam_role.py\": \"lib/ansible/modules/cloud/amazon/iam_role.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/iam_server_certificate_facts.py\": \"lib/ansible/modules/cloud/amazon/iam_server_certificate_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/kinesis_stream.py\": \"lib/ansible/modules/cloud/amazon/kinesis_stream.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/lambda.py\": [\n    \"lib/ansible/modules/cloud/amazon/lambda.py\"\n  ], \n  \"ansible/lib/ansible/modules/cloud/amazon/lambda_alias.py\": \"lib/ansible/modules/cloud/amazon/lambda_alias.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/lambda_event.py\": \"lib/ansible/modules/cloud/amazon/lambda_event.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/lambda_facts.py\": \"lib/ansible/modules/cloud/amazon/lambda_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/lambda_policy.py\": \"lib/ansible/modules/cloud/amazon/lambda_policy.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/lightsail.py\": \"lib/ansible/modules/cloud/amazon/lightsail.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/rds.py\": \"lib/ansible/modules/cloud/amazon/rds.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/rds_param_group.py\": \"lib/ansible/modules/cloud/amazon/rds_param_group.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/rds_subnet_group.py\": \"lib/ansible/modules/cloud/amazon/rds_subnet_group.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/redshift.py\": \"lib/ansible/modules/cloud/amazon/redshift.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/redshift_facts.py\": \"lib/ansible/modules/cloud/amazon/redshift_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/redshift_subnet_group.py\": \"lib/ansible/modules/cloud/amazon/redshift_subnet_group.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/route53.py\": \"lib/ansible/modules/cloud/amazon/route53.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/route53_facts.py\": \"lib/ansible/modules/cloud/amazon/route53_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/route53_health_check.py\": \"lib/ansible/modules/cloud/amazon/route53_health_check.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/route53_zone.py\": \"lib/ansible/modules/cloud/amazon/route53_zone.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/s3.py\": \"lib/ansible/modules/cloud/amazon/_s3.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/s3_bucket.py\": \"lib/ansible/modules/cloud/amazon/s3_bucket.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/s3_lifecycle.py\": \"lib/ansible/modules/cloud/amazon/s3_lifecycle.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/s3_logging.py\": \"lib/ansible/modules/cloud/amazon/s3_logging.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/s3_sync.py\": \"lib/ansible/modules/cloud/amazon/s3_sync.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/s3_website.py\": \"lib/ansible/modules/cloud/amazon/s3_website.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/sns.py\": \"lib/ansible/modules/cloud/amazon/sns.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/sns_topic.py\": \"lib/ansible/modules/cloud/amazon/sns_topic.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/sqs_queue.py\": [\n    \"lib/ansible/modules/cloud/amazon/sqs_queue.py\"\n  ], \n  \"ansible/lib/ansible/modules/cloud/amazon/sts_assume_role.py\": \"lib/ansible/modules/cloud/amazon/sts_assume_role.py\", \n  \"ansible/lib/ansible/modules/cloud/amazon/sts_session_token.py\": \"lib/ansible/modules/cloud/amazon/sts_session_token.py\", \n  \"ansible/lib/ansible/modules/cloud/atomic/atomic_container.py\": \"lib/ansible/modules/cloud/atomic/atomic_container.py\", \n  \"ansible/lib/ansible/modules/cloud/atomic/atomic_host.py\": \"lib/ansible/modules/cloud/atomic/atomic_host.py\", \n  \"ansible/lib/ansible/modules/cloud/atomic/atomic_image.py\": \"lib/ansible/modules/cloud/atomic/atomic_image.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/_azure.py\": \"lib/ansible/modules/cloud/azure/_azure.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure.py\": \"lib/ansible/modules/cloud/azure/_azure.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_acs.py\": \"lib/ansible/modules/cloud/azure/azure_rm_acs.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_availabilityset.py\": \"lib/ansible/modules/cloud/azure/azure_rm_availabilityset.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_availabilityset_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_availabilityset_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_deployment.py\": \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_dnszone.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnszone.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_dnszone_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnszone_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_functionapp.py\": \"lib/ansible/modules/cloud/azure/azure_rm_functionapp.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_functionapp_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_functionapp_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_loadbalancer.py\": \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_loadbalancer_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_managed_disk.py\": \"lib/ansible/modules/cloud/azure/azure_rm_managed_disk.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_managed_disk_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_managed_disk_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_networkinterface.py\": \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_networkinterface_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_publicipaddress.py\": \"lib/ansible/modules/cloud/azure/azure_rm_publicipaddress.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_publicipaddress_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_publicipaddress_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_resourcegroup.py\": \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_resourcegroup_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_securitygroup.py\": \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_securitygroup_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_storageaccount.py\": \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_storageaccount_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_storageblob.py\": \"lib/ansible/modules/cloud/azure/azure_rm_storageblob.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_subnet.py\": \"lib/ansible/modules/cloud/azure/azure_rm_subnet.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_extension.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_extension.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_virtualmachineimage_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachineimage_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork.py\", \n  \"ansible/lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/centurylink/clc_aa_policy.py\": \"lib/ansible/modules/cloud/centurylink/clc_aa_policy.py\", \n  \"ansible/lib/ansible/modules/cloud/centurylink/clc_alert_policy.py\": \"lib/ansible/modules/cloud/centurylink/clc_alert_policy.py\", \n  \"ansible/lib/ansible/modules/cloud/centurylink/clc_blueprint_package.py\": \"lib/ansible/modules/cloud/centurylink/clc_blueprint_package.py\", \n  \"ansible/lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py\": \"lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py\", \n  \"ansible/lib/ansible/modules/cloud/centurylink/clc_group.py\": \"lib/ansible/modules/cloud/centurylink/clc_group.py\", \n  \"ansible/lib/ansible/modules/cloud/centurylink/clc_loadbalancer.py\": \"lib/ansible/modules/cloud/centurylink/clc_loadbalancer.py\", \n  \"ansible/lib/ansible/modules/cloud/centurylink/clc_modify_server.py\": \"lib/ansible/modules/cloud/centurylink/clc_modify_server.py\", \n  \"ansible/lib/ansible/modules/cloud/centurylink/clc_publicip.py\": \"lib/ansible/modules/cloud/centurylink/clc_publicip.py\", \n  \"ansible/lib/ansible/modules/cloud/centurylink/clc_server.py\": \"lib/ansible/modules/cloud/centurylink/clc_server.py\", \n  \"ansible/lib/ansible/modules/cloud/centurylink/clc_server_snapshot.py\": \"lib/ansible/modules/cloud/centurylink/clc_server_snapshot.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudscale/cloudscale_server.py\": \"lib/ansible/modules/cloud/cloudscale/cloudscale_server.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/_cs_nic.py\": \"lib/ansible/modules/cloud/cloudstack/_cs_nic.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_account.py\": \"lib/ansible/modules/cloud/cloudstack/cs_account.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_affinitygroup.py\": \"lib/ansible/modules/cloud/cloudstack/cs_affinitygroup.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_cluster.py\": \"lib/ansible/modules/cloud/cloudstack/cs_cluster.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_configuration.py\": \"lib/ansible/modules/cloud/cloudstack/cs_configuration.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_domain.py\": \"lib/ansible/modules/cloud/cloudstack/cs_domain.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_facts.py\": \"lib/ansible/modules/cloud/cloudstack/cs_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_firewall.py\": \"lib/ansible/modules/cloud/cloudstack/cs_firewall.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_host.py\": \"lib/ansible/modules/cloud/cloudstack/cs_host.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_instance.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_instance_facts.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_instance_nic.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_nic.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_instance_nic_secondaryip.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_nic_secondaryip.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_instancegroup.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instancegroup.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_ip_address.py\": \"lib/ansible/modules/cloud/cloudstack/cs_ip_address.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_iso.py\": \"lib/ansible/modules/cloud/cloudstack/cs_iso.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule.py\": \"lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule_member.py\": \"lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule_member.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_network.py\": \"lib/ansible/modules/cloud/cloudstack/cs_network.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_network_acl.py\": \"lib/ansible/modules/cloud/cloudstack/cs_network_acl.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_network_acl_rule.py\": \"lib/ansible/modules/cloud/cloudstack/cs_network_acl_rule.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_nic.py\": \"lib/ansible/modules/cloud/cloudstack/_cs_nic.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_pod.py\": \"lib/ansible/modules/cloud/cloudstack/cs_pod.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_portforward.py\": \"lib/ansible/modules/cloud/cloudstack/cs_portforward.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_project.py\": \"lib/ansible/modules/cloud/cloudstack/cs_project.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_region.py\": \"lib/ansible/modules/cloud/cloudstack/cs_region.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_resourcelimit.py\": \"lib/ansible/modules/cloud/cloudstack/cs_resourcelimit.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_role.py\": \"lib/ansible/modules/cloud/cloudstack/cs_role.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_router.py\": \"lib/ansible/modules/cloud/cloudstack/cs_router.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_securitygroup.py\": \"lib/ansible/modules/cloud/cloudstack/cs_securitygroup.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_securitygroup_rule.py\": \"lib/ansible/modules/cloud/cloudstack/cs_securitygroup_rule.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_snapshot_policy.py\": \"lib/ansible/modules/cloud/cloudstack/cs_snapshot_policy.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_sshkeypair.py\": \"lib/ansible/modules/cloud/cloudstack/cs_sshkeypair.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_staticnat.py\": \"lib/ansible/modules/cloud/cloudstack/cs_staticnat.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_storage_pool.py\": \"lib/ansible/modules/cloud/cloudstack/cs_storage_pool.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_template.py\": \"lib/ansible/modules/cloud/cloudstack/cs_template.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_user.py\": \"lib/ansible/modules/cloud/cloudstack/cs_user.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_vmsnapshot.py\": \"lib/ansible/modules/cloud/cloudstack/cs_vmsnapshot.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_volume.py\": \"lib/ansible/modules/cloud/cloudstack/cs_volume.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_vpc.py\": \"lib/ansible/modules/cloud/cloudstack/cs_vpc.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_vpn_gateway.py\": \"lib/ansible/modules/cloud/cloudstack/cs_vpn_gateway.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_zone.py\": \"lib/ansible/modules/cloud/cloudstack/cs_zone.py\", \n  \"ansible/lib/ansible/modules/cloud/cloudstack/cs_zone_facts.py\": \"lib/ansible/modules/cloud/cloudstack/cs_zone_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/digital_ocean/digital_ocean.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean.py\", \n  \"ansible/lib/ansible/modules/cloud/digital_ocean/digital_ocean_block_storage.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_block_storage.py\", \n  \"ansible/lib/ansible/modules/cloud/digital_ocean/digital_ocean_domain.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_domain.py\", \n  \"ansible/lib/ansible/modules/cloud/digital_ocean/digital_ocean_floating_ip.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_floating_ip.py\", \n  \"ansible/lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey.py\", \n  \"ansible/lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey_facts.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/digital_ocean/digital_ocean_tag.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_tag.py\", \n  \"ansible/lib/ansible/modules/cloud/dimensiondata/dimensiondata_network.py\": \"lib/ansible/modules/cloud/dimensiondata/dimensiondata_network.py\", \n  \"ansible/lib/ansible/modules/cloud/docker/_docker.py\": \"lib/ansible/modules/cloud/docker/_docker.py\", \n  \"ansible/lib/ansible/modules/cloud/docker/docker.py\": \"lib/ansible/modules/cloud/docker/_docker.py\", \n  \"ansible/lib/ansible/modules/cloud/docker/docker_container.py\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n  \"ansible/lib/ansible/modules/cloud/docker/docker_image.py\": \"lib/ansible/modules/cloud/docker/docker_image.py\", \n  \"ansible/lib/ansible/modules/cloud/docker/docker_image_facts.py\": \"lib/ansible/modules/cloud/docker/docker_image_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/docker/docker_login.py\": \"lib/ansible/modules/cloud/docker/docker_login.py\", \n  \"ansible/lib/ansible/modules/cloud/docker/docker_network.py\": \"lib/ansible/modules/cloud/docker/docker_network.py\", \n  \"ansible/lib/ansible/modules/cloud/docker/docker_secret.py\": \"lib/ansible/modules/cloud/docker/docker_secret.py\", \n  \"ansible/lib/ansible/modules/cloud/docker/docker_service.py\": \"lib/ansible/modules/cloud/docker/docker_service.py\", \n  \"ansible/lib/ansible/modules/cloud/docker/docker_volume.py\": \"lib/ansible/modules/cloud/docker/docker_volume.py\", \n  \"ansible/lib/ansible/modules/cloud/google/gc_storage.py\": \"lib/ansible/modules/cloud/google/gc_storage.py\", \n  \"ansible/lib/ansible/modules/cloud/google/gcdns_record.py\": \"lib/ansible/modules/cloud/google/gcdns_record.py\", \n  \"ansible/lib/ansible/modules/cloud/google/gcdns_zone.py\": \"lib/ansible/modules/cloud/google/gcdns_zone.py\", \n  \"ansible/lib/ansible/modules/cloud/google/gce.py\": \"lib/ansible/modules/cloud/google/gce.py\", \n  \"ansible/lib/ansible/modules/cloud/google/gce_eip.py\": \"lib/ansible/modules/cloud/google/gce_eip.py\", \n  \"ansible/lib/ansible/modules/cloud/google/gce_img.py\": \"lib/ansible/modules/cloud/google/gce_img.py\", \n  \"ansible/lib/ansible/modules/cloud/google/gce_instance_template.py\": \"lib/ansible/modules/cloud/google/gce_instance_template.py\", \n  \"ansible/lib/ansible/modules/cloud/google/gce_labels.py\": \"lib/ansible/modules/cloud/google/gce_labels.py\", \n  \"ansible/lib/ansible/modules/cloud/google/gce_lb.py\": \"lib/ansible/modules/cloud/google/gce_lb.py\", \n  \"ansible/lib/ansible/modules/cloud/google/gce_mig.py\": \"lib/ansible/modules/cloud/google/gce_mig.py\", \n  \"ansible/lib/ansible/modules/cloud/google/gce_net.py\": \"lib/ansible/modules/cloud/google/gce_net.py\", \n  \"ansible/lib/ansible/modules/cloud/google/gce_pd.py\": \"lib/ansible/modules/cloud/google/gce_pd.py\", \n  \"ansible/lib/ansible/modules/cloud/google/gce_snapshot.py\": \"lib/ansible/modules/cloud/google/gce_snapshot.py\", \n  \"ansible/lib/ansible/modules/cloud/google/gce_tag.py\": \"lib/ansible/modules/cloud/google/gce_tag.py\", \n  \"ansible/lib/ansible/modules/cloud/google/gcp_backend_service.py\": \"lib/ansible/modules/cloud/google/gcp_backend_service.py\", \n  \"ansible/lib/ansible/modules/cloud/google/gcp_forwarding_rule.py\": \"lib/ansible/modules/cloud/google/gcp_forwarding_rule.py\", \n  \"ansible/lib/ansible/modules/cloud/google/gcp_healthcheck.py\": \"lib/ansible/modules/cloud/google/gcp_healthcheck.py\", \n  \"ansible/lib/ansible/modules/cloud/google/gcp_target_proxy.py\": \"lib/ansible/modules/cloud/google/gcp_target_proxy.py\", \n  \"ansible/lib/ansible/modules/cloud/google/gcp_url_map.py\": \"lib/ansible/modules/cloud/google/gcp_url_map.py\", \n  \"ansible/lib/ansible/modules/cloud/google/gcpubsub.py\": \"lib/ansible/modules/cloud/google/gcpubsub.py\", \n  \"ansible/lib/ansible/modules/cloud/google/gcpubsub_facts.py\": \"lib/ansible/modules/cloud/google/gcpubsub_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/google/gcspanner.py\": \"lib/ansible/modules/cloud/google/gcspanner.py\", \n  \"ansible/lib/ansible/modules/cloud/linode/linode.py\": \"lib/ansible/modules/cloud/linode/linode.py\", \n  \"ansible/lib/ansible/modules/cloud/lxc/lxc_container.py\": \"lib/ansible/modules/cloud/lxc/lxc_container.py\", \n  \"ansible/lib/ansible/modules/cloud/lxd/lxd_container.py\": \"lib/ansible/modules/cloud/lxd/lxd_container.py\", \n  \"ansible/lib/ansible/modules/cloud/lxd/lxd_profile.py\": \"lib/ansible/modules/cloud/lxd/lxd_profile.py\", \n  \"ansible/lib/ansible/modules/cloud/misc/helm.py\": \"lib/ansible/modules/cloud/misc/helm.py\", \n  \"ansible/lib/ansible/modules/cloud/misc/ovirt.py\": \"lib/ansible/modules/cloud/misc/ovirt.py\", \n  \"ansible/lib/ansible/modules/cloud/misc/proxmox.py\": \"lib/ansible/modules/cloud/misc/proxmox.py\", \n  \"ansible/lib/ansible/modules/cloud/misc/proxmox_kvm.py\": \"lib/ansible/modules/cloud/misc/proxmox_kvm.py\", \n  \"ansible/lib/ansible/modules/cloud/misc/proxmox_template.py\": \"lib/ansible/modules/cloud/misc/proxmox_template.py\", \n  \"ansible/lib/ansible/modules/cloud/misc/rhevm.py\": \"lib/ansible/modules/cloud/misc/rhevm.py\", \n  \"ansible/lib/ansible/modules/cloud/misc/serverless.py\": \"lib/ansible/modules/cloud/misc/serverless.py\", \n  \"ansible/lib/ansible/modules/cloud/misc/virt.py\": \"lib/ansible/modules/cloud/misc/virt.py\", \n  \"ansible/lib/ansible/modules/cloud/misc/virt_net.py\": \"lib/ansible/modules/cloud/misc/virt_net.py\", \n  \"ansible/lib/ansible/modules/cloud/misc/virt_pool.py\": \"lib/ansible/modules/cloud/misc/virt_pool.py\", \n  \"ansible/lib/ansible/modules/cloud/misc/xenserver_facts.py\": \"lib/ansible/modules/cloud/misc/xenserver_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/README.md\": \"lib/ansible/modules/cloud/openstack/README.md\", \n  \"ansible/lib/ansible/modules/cloud/openstack/_os_server_actions.py\": \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_auth.py\": \"lib/ansible/modules/cloud/openstack/os_auth.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_client_config.py\": \"lib/ansible/modules/cloud/openstack/os_client_config.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_flavor_facts.py\": \"lib/ansible/modules/cloud/openstack/os_flavor_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_floating_ip.py\": \"lib/ansible/modules/cloud/openstack/os_floating_ip.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_group.py\": \"lib/ansible/modules/cloud/openstack/os_group.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_image.py\": \"lib/ansible/modules/cloud/openstack/os_image.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_image_facts.py\": \"lib/ansible/modules/cloud/openstack/os_image_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_ironic.py\": \"lib/ansible/modules/cloud/openstack/os_ironic.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_ironic_inspect.py\": \"lib/ansible/modules/cloud/openstack/os_ironic_inspect.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_ironic_node.py\": \"lib/ansible/modules/cloud/openstack/os_ironic_node.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_keypair.py\": \"lib/ansible/modules/cloud/openstack/os_keypair.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_keystone_domain.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_domain.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_keystone_domain_facts.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_domain_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_keystone_endpoint.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_endpoint.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_keystone_role.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_role.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_keystone_service.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_service.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_network.py\": \"lib/ansible/modules/cloud/openstack/os_network.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_networks_facts.py\": \"lib/ansible/modules/cloud/openstack/os_networks_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_nova_flavor.py\": \"lib/ansible/modules/cloud/openstack/os_nova_flavor.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_nova_host_aggregate.py\": \"lib/ansible/modules/cloud/openstack/os_nova_host_aggregate.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_object.py\": \"lib/ansible/modules/cloud/openstack/os_object.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_port.py\": \"lib/ansible/modules/cloud/openstack/os_port.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_port_facts.py\": \"lib/ansible/modules/cloud/openstack/os_port_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_project.py\": \"lib/ansible/modules/cloud/openstack/os_project.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_project_facts.py\": \"lib/ansible/modules/cloud/openstack/os_project_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_quota.py\": \"lib/ansible/modules/cloud/openstack/os_quota.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_recordset.py\": \"lib/ansible/modules/cloud/openstack/os_recordset.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_router.py\": \"lib/ansible/modules/cloud/openstack/os_router.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_security_group.py\": \"lib/ansible/modules/cloud/openstack/os_security_group.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_security_group_rule.py\": \"lib/ansible/modules/cloud/openstack/os_security_group_rule.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_server.py\": \"lib/ansible/modules/cloud/openstack/os_server.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_server_action.py\": \"lib/ansible/modules/cloud/openstack/os_server_action.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_server_actions.py\": \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_server_facts.py\": \"lib/ansible/modules/cloud/openstack/os_server_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_server_group.py\": \"lib/ansible/modules/cloud/openstack/os_server_group.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_server_volume.py\": \"lib/ansible/modules/cloud/openstack/os_server_volume.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_stack.py\": \"lib/ansible/modules/cloud/openstack/os_stack.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_subnet.py\": \"lib/ansible/modules/cloud/openstack/os_subnet.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_subnets_facts.py\": \"lib/ansible/modules/cloud/openstack/os_subnets_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_user.py\": [\n    \"lib/ansible/modules/cloud/openstack/os_user.py\"\n  ], \n  \"ansible/lib/ansible/modules/cloud/openstack/os_user_facts.py\": \"lib/ansible/modules/cloud/openstack/os_user_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_user_group.py\": \"lib/ansible/modules/cloud/openstack/os_user_group.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_user_role.py\": [\n    \"lib/ansible/modules/cloud/openstack/os_user_role.py\"\n  ], \n  \"ansible/lib/ansible/modules/cloud/openstack/os_volume.py\": \"lib/ansible/modules/cloud/openstack/os_volume.py\", \n  \"ansible/lib/ansible/modules/cloud/openstack/os_zone.py\": \"lib/ansible/modules/cloud/openstack/os_zone.py\", \n  \"ansible/lib/ansible/modules/cloud/ovh/ovh_ip_loadbalancing_backend.py\": \"lib/ansible/modules/cloud/ovh/ovh_ip_loadbalancing_backend.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/README.rst\": \"lib/ansible/modules/cloud/ovirt/README.rst\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_affinity_group.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_group.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_affinity_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_affinity_label.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_label.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_affinity_label_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_label_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_affinity_labels.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_affinity_labels_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_api_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_api_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_auth.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_auth.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_cluster.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_cluster.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_cluster_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_cluster_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_clusters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_clusters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_datacenter.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_datacenter.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_datacenter_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_datacenter_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_datacenters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_datacenters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_disk.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_disk.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_disk_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_disk_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_disks.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_external_provider.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_provider.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_external_provider_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_provider_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_external_providers.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_external_providers_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_group.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_group.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_group_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_group_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_groups_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_host_networks.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_networks.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_host_pm.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_pm.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_host_storage_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_storage_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_hosts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_hosts_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_mac_pools.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_mac_pools.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_networks.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_networks.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_networks_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_networks_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_nics.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_nics.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_nics_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_nics_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_permissions.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_permissions.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_permissions_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_permissions_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_quotas.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_quotas.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_quotas_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_quotas_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_scheduling_policies_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_scheduling_policies_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_snapshots.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_snapshots.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_snapshots_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_snapshots_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_storage_connections.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_connections.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_storage_domains.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_storage_domains_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_storage_templates_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_templates_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_storage_vms_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_vms_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_tags.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_tags.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_tags_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_tags_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_templates.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_templates.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_templates_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_templates_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_users.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_users.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_users_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_users_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_vmpools.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vmpools.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_vmpools_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vmpools_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_vms.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms.py\", \n  \"ansible/lib/ansible/modules/cloud/ovirt/ovirt_vms_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/packet/packet_device.py\": \"lib/ansible/modules/cloud/packet/packet_device.py\", \n  \"ansible/lib/ansible/modules/cloud/packet/packet_sshkey.py\": \"lib/ansible/modules/cloud/packet/packet_sshkey.py\", \n  \"ansible/lib/ansible/modules/cloud/profitbricks/profitbricks.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks.py\", \n  \"ansible/lib/ansible/modules/cloud/profitbricks/profitbricks_datacenter.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_datacenter.py\", \n  \"ansible/lib/ansible/modules/cloud/profitbricks/profitbricks_nic.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_nic.py\", \n  \"ansible/lib/ansible/modules/cloud/profitbricks/profitbricks_volume.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume.py\", \n  \"ansible/lib/ansible/modules/cloud/profitbricks/profitbricks_volume_attachments.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume_attachments.py\", \n  \"ansible/lib/ansible/modules/cloud/pubnub/pubnub_blocks.py\": \"lib/ansible/modules/cloud/pubnub/pubnub_blocks.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax.py\": \"lib/ansible/modules/cloud/rackspace/rax.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_cbs.py\": \"lib/ansible/modules/cloud/rackspace/rax_cbs.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_cbs_attachments.py\": \"lib/ansible/modules/cloud/rackspace/rax_cbs_attachments.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_cdb.py\": \"lib/ansible/modules/cloud/rackspace/rax_cdb.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_cdb_database.py\": \"lib/ansible/modules/cloud/rackspace/rax_cdb_database.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_cdb_user.py\": \"lib/ansible/modules/cloud/rackspace/rax_cdb_user.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_clb.py\": \"lib/ansible/modules/cloud/rackspace/rax_clb.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_clb_nodes.py\": \"lib/ansible/modules/cloud/rackspace/rax_clb_nodes.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_clb_ssl.py\": \"lib/ansible/modules/cloud/rackspace/rax_clb_ssl.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_dns.py\": \"lib/ansible/modules/cloud/rackspace/rax_dns.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_dns_record.py\": \"lib/ansible/modules/cloud/rackspace/rax_dns_record.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_facts.py\": \"lib/ansible/modules/cloud/rackspace/rax_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_files.py\": \"lib/ansible/modules/cloud/rackspace/rax_files.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_files_objects.py\": \"lib/ansible/modules/cloud/rackspace/rax_files_objects.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_identity.py\": \"lib/ansible/modules/cloud/rackspace/rax_identity.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_keypair.py\": \"lib/ansible/modules/cloud/rackspace/rax_keypair.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_meta.py\": \"lib/ansible/modules/cloud/rackspace/rax_meta.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_mon_alarm.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_alarm.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_mon_check.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_check.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_mon_entity.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_entity.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_mon_notification.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_notification.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_mon_notification_plan.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_notification_plan.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_network.py\": \"lib/ansible/modules/cloud/rackspace/rax_network.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_queue.py\": \"lib/ansible/modules/cloud/rackspace/rax_queue.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_scaling_group.py\": \"lib/ansible/modules/cloud/rackspace/rax_scaling_group.py\", \n  \"ansible/lib/ansible/modules/cloud/rackspace/rax_scaling_policy.py\": \"lib/ansible/modules/cloud/rackspace/rax_scaling_policy.py\", \n  \"ansible/lib/ansible/modules/cloud/smartos/imgadm.py\": \"lib/ansible/modules/cloud/smartos/imgadm.py\", \n  \"ansible/lib/ansible/modules/cloud/smartos/smartos_image_facts.py\": \"lib/ansible/modules/cloud/smartos/smartos_image_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/smartos/vmadm.py\": \"lib/ansible/modules/cloud/smartos/vmadm.py\", \n  \"ansible/lib/ansible/modules/cloud/softlayer/sl_vm.py\": \"lib/ansible/modules/cloud/softlayer/sl_vm.py\", \n  \"ansible/lib/ansible/modules/cloud/univention/udm_dns_record.py\": \"lib/ansible/modules/cloud/univention/udm_dns_record.py\", \n  \"ansible/lib/ansible/modules/cloud/univention/udm_dns_zone.py\": \"lib/ansible/modules/cloud/univention/udm_dns_zone.py\", \n  \"ansible/lib/ansible/modules/cloud/univention/udm_group.py\": \"lib/ansible/modules/cloud/univention/udm_group.py\", \n  \"ansible/lib/ansible/modules/cloud/univention/udm_share.py\": \"lib/ansible/modules/cloud/univention/udm_share.py\", \n  \"ansible/lib/ansible/modules/cloud/univention/udm_user.py\": \"lib/ansible/modules/cloud/univention/udm_user.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vca_fw.py\": \"lib/ansible/modules/cloud/vmware/vca_fw.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vca_nat.py\": \"lib/ansible/modules/cloud/vmware/vca_nat.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vca_vapp.py\": \"lib/ansible/modules/cloud/vmware/vca_vapp.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vcenter_license.py\": \"lib/ansible/modules/cloud/vmware/vcenter_license.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_cluster.py\": \"lib/ansible/modules/cloud/vmware/vmware_cluster.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_datacenter.py\": \"lib/ansible/modules/cloud/vmware/vmware_datacenter.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_dns_config.py\": \"lib/ansible/modules/cloud/vmware/vmware_dns_config.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_dvs_host.py\": \"lib/ansible/modules/cloud/vmware/vmware_dvs_host.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_dvs_portgroup.py\": \"lib/ansible/modules/cloud/vmware/vmware_dvs_portgroup.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_dvswitch.py\": \"lib/ansible/modules/cloud/vmware/vmware_dvswitch.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_guest.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_guest_facts.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_guest_find.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_find.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_guest_powerstate.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_powerstate.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_guest_snapshot.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_snapshot.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_guest_tools_wait.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_tools_wait.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_host.py\": \"lib/ansible/modules/cloud/vmware/vmware_host.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_local_user_manager.py\": \"lib/ansible/modules/cloud/vmware/vmware_local_user_manager.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_maintenancemode.py\": \"lib/ansible/modules/cloud/vmware/vmware_maintenancemode.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_migrate_vmk.py\": \"lib/ansible/modules/cloud/vmware/vmware_migrate_vmk.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_portgroup.py\": \"lib/ansible/modules/cloud/vmware/vmware_portgroup.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_resource_pool.py\": \"lib/ansible/modules/cloud/vmware/vmware_resource_pool.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_target_canonical_facts.py\": \"lib/ansible/modules/cloud/vmware/vmware_target_canonical_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_vm_facts.py\": \"lib/ansible/modules/cloud/vmware/vmware_vm_facts.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_vm_shell.py\": \"lib/ansible/modules/cloud/vmware/vmware_vm_shell.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_vm_vss_dvs_migrate.py\": \"lib/ansible/modules/cloud/vmware/vmware_vm_vss_dvs_migrate.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_vmkernel.py\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_vmkernel_ip_config.py\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel_ip_config.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_vmotion.py\": \"lib/ansible/modules/cloud/vmware/vmware_vmotion.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_vsan_cluster.py\": \"lib/ansible/modules/cloud/vmware/vmware_vsan_cluster.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vmware_vswitch.py\": \"lib/ansible/modules/cloud/vmware/vmware_vswitch.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vsphere_copy.py\": \"lib/ansible/modules/cloud/vmware/vsphere_copy.py\", \n  \"ansible/lib/ansible/modules/cloud/vmware/vsphere_guest.py\": \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\", \n  \"ansible/lib/ansible/modules/cloud/webfaction/webfaction_app.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_app.py\", \n  \"ansible/lib/ansible/modules/cloud/webfaction/webfaction_db.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_db.py\", \n  \"ansible/lib/ansible/modules/cloud/webfaction/webfaction_domain.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_domain.py\", \n  \"ansible/lib/ansible/modules/cloud/webfaction/webfaction_mailbox.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_mailbox.py\", \n  \"ansible/lib/ansible/modules/cloud/webfaction/webfaction_site.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_site.py\", \n  \"ansible/lib/ansible/modules/clustering/consul.py\": \"lib/ansible/modules/clustering/consul.py\", \n  \"ansible/lib/ansible/modules/clustering/consul_acl.py\": \"lib/ansible/modules/clustering/consul_acl.py\", \n  \"ansible/lib/ansible/modules/clustering/consul_kv.py\": \"lib/ansible/modules/clustering/consul_kv.py\", \n  \"ansible/lib/ansible/modules/clustering/consul_session.py\": \"lib/ansible/modules/clustering/consul_session.py\", \n  \"ansible/lib/ansible/modules/clustering/kubernetes.py\": \"lib/ansible/modules/clustering/kubernetes.py\", \n  \"ansible/lib/ansible/modules/clustering/oc.py\": \"lib/ansible/modules/clustering/oc.py\", \n  \"ansible/lib/ansible/modules/clustering/pacemaker_cluster.py\": \"lib/ansible/modules/clustering/pacemaker_cluster.py\", \n  \"ansible/lib/ansible/modules/clustering/znode.py\": \"lib/ansible/modules/clustering/znode.py\", \n  \"ansible/lib/ansible/modules/commands/command.py\": \"lib/ansible/modules/commands/command.py\", \n  \"ansible/lib/ansible/modules/commands/expect.py\": \"lib/ansible/modules/commands/expect.py\", \n  \"ansible/lib/ansible/modules/commands/raw.py\": \"lib/ansible/modules/commands/raw.py\", \n  \"ansible/lib/ansible/modules/commands/script.py\": \"lib/ansible/modules/commands/script.py\", \n  \"ansible/lib/ansible/modules/commands/shell.py\": \"lib/ansible/modules/commands/shell.py\", \n  \"ansible/lib/ansible/modules/commands/telnet.py\": \"lib/ansible/modules/commands/telnet.py\", \n  \"ansible/lib/ansible/modules/crypto/openssl_certificate.py\": \"lib/ansible/modules/crypto/openssl_certificate.py\", \n  \"ansible/lib/ansible/modules/crypto/openssl_csr.py\": \"lib/ansible/modules/crypto/openssl_csr.py\", \n  \"ansible/lib/ansible/modules/crypto/openssl_privatekey.py\": \"lib/ansible/modules/crypto/openssl_privatekey.py\", \n  \"ansible/lib/ansible/modules/crypto/openssl_publickey.py\": \"lib/ansible/modules/crypto/openssl_publickey.py\", \n  \"ansible/lib/ansible/modules/database/influxdb/influxdb_database.py\": \"lib/ansible/modules/database/influxdb/influxdb_database.py\", \n  \"ansible/lib/ansible/modules/database/influxdb/influxdb_retention_policy.py\": \"lib/ansible/modules/database/influxdb/influxdb_retention_policy.py\", \n  \"ansible/lib/ansible/modules/database/misc/elasticsearch_plugin.py\": \"lib/ansible/modules/database/misc/elasticsearch_plugin.py\", \n  \"ansible/lib/ansible/modules/database/misc/kibana_plugin.py\": \"lib/ansible/modules/database/misc/kibana_plugin.py\", \n  \"ansible/lib/ansible/modules/database/misc/redis.py\": \"lib/ansible/modules/database/misc/redis.py\", \n  \"ansible/lib/ansible/modules/database/misc/riak.py\": \"lib/ansible/modules/database/misc/riak.py\", \n  \"ansible/lib/ansible/modules/database/mongodb/mongodb_parameter.py\": \"lib/ansible/modules/database/mongodb/mongodb_parameter.py\", \n  \"ansible/lib/ansible/modules/database/mongodb/mongodb_user.py\": \"lib/ansible/modules/database/mongodb/mongodb_user.py\", \n  \"ansible/lib/ansible/modules/database/mssql/mssql_db.py\": \"lib/ansible/modules/database/mssql/mssql_db.py\", \n  \"ansible/lib/ansible/modules/database/mysql/mysql_db.py\": \"lib/ansible/modules/database/mysql/mysql_db.py\", \n  \"ansible/lib/ansible/modules/database/mysql/mysql_replication.py\": \"lib/ansible/modules/database/mysql/mysql_replication.py\", \n  \"ansible/lib/ansible/modules/database/mysql/mysql_user.py\": \"lib/ansible/modules/database/mysql/mysql_user.py\", \n  \"ansible/lib/ansible/modules/database/mysql/mysql_variables.py\": \"lib/ansible/modules/database/mysql/mysql_variables.py\", \n  \"ansible/lib/ansible/modules/database/postgresql/postgresql_db.py\": \"lib/ansible/modules/database/postgresql/postgresql_db.py\", \n  \"ansible/lib/ansible/modules/database/postgresql/postgresql_ext.py\": \"lib/ansible/modules/database/postgresql/postgresql_ext.py\", \n  \"ansible/lib/ansible/modules/database/postgresql/postgresql_lang.py\": \"lib/ansible/modules/database/postgresql/postgresql_lang.py\", \n  \"ansible/lib/ansible/modules/database/postgresql/postgresql_privs.py\": \"lib/ansible/modules/database/postgresql/postgresql_privs.py\", \n  \"ansible/lib/ansible/modules/database/postgresql/postgresql_schema.py\": \"lib/ansible/modules/database/postgresql/postgresql_schema.py\", \n  \"ansible/lib/ansible/modules/database/postgresql/postgresql_user.py\": \"lib/ansible/modules/database/postgresql/postgresql_user.py\", \n  \"ansible/lib/ansible/modules/database/proxysql/proxysql_backend_servers.py\": \"lib/ansible/modules/database/proxysql/proxysql_backend_servers.py\", \n  \"ansible/lib/ansible/modules/database/proxysql/proxysql_global_variables.py\": \"lib/ansible/modules/database/proxysql/proxysql_global_variables.py\", \n  \"ansible/lib/ansible/modules/database/proxysql/proxysql_manage_config.py\": \"lib/ansible/modules/database/proxysql/proxysql_manage_config.py\", \n  \"ansible/lib/ansible/modules/database/proxysql/proxysql_mysql_users.py\": \"lib/ansible/modules/database/proxysql/proxysql_mysql_users.py\", \n  \"ansible/lib/ansible/modules/database/proxysql/proxysql_query_rules.py\": \"lib/ansible/modules/database/proxysql/proxysql_query_rules.py\", \n  \"ansible/lib/ansible/modules/database/proxysql/proxysql_replication_hostgroups.py\": \"lib/ansible/modules/database/proxysql/proxysql_replication_hostgroups.py\", \n  \"ansible/lib/ansible/modules/database/proxysql/proxysql_scheduler.py\": \"lib/ansible/modules/database/proxysql/proxysql_scheduler.py\", \n  \"ansible/lib/ansible/modules/database/vertica/vertica_configuration.py\": \"lib/ansible/modules/database/vertica/vertica_configuration.py\", \n  \"ansible/lib/ansible/modules/database/vertica/vertica_facts.py\": \"lib/ansible/modules/database/vertica/vertica_facts.py\", \n  \"ansible/lib/ansible/modules/database/vertica/vertica_role.py\": \"lib/ansible/modules/database/vertica/vertica_role.py\", \n  \"ansible/lib/ansible/modules/database/vertica/vertica_schema.py\": \"lib/ansible/modules/database/vertica/vertica_schema.py\", \n  \"ansible/lib/ansible/modules/database/vertica/vertica_user.py\": \"lib/ansible/modules/database/vertica/vertica_user.py\", \n  \"ansible/lib/ansible/modules/files/acl.py\": \"lib/ansible/modules/files/acl.py\", \n  \"ansible/lib/ansible/modules/files/archive.py\": \"lib/ansible/modules/files/archive.py\", \n  \"ansible/lib/ansible/modules/files/assemble.py\": \"lib/ansible/modules/files/assemble.py\", \n  \"ansible/lib/ansible/modules/files/blockinfile.py\": \"lib/ansible/modules/files/blockinfile.py\", \n  \"ansible/lib/ansible/modules/files/copy.py\": \"lib/ansible/modules/files/copy.py\", \n  \"ansible/lib/ansible/modules/files/fetch.py\": \"lib/ansible/modules/files/fetch.py\", \n  \"ansible/lib/ansible/modules/files/file.py\": \"lib/ansible/modules/files/file.py\", \n  \"ansible/lib/ansible/modules/files/find.py\": \"lib/ansible/modules/files/find.py\", \n  \"ansible/lib/ansible/modules/files/ini_file.py\": \"lib/ansible/modules/files/ini_file.py\", \n  \"ansible/lib/ansible/modules/files/iso_extract.py\": \"lib/ansible/modules/files/iso_extract.py\", \n  \"ansible/lib/ansible/modules/files/lineinfile.py\": \"lib/ansible/modules/files/lineinfile.py\", \n  \"ansible/lib/ansible/modules/files/patch.py\": \"lib/ansible/modules/files/patch.py\", \n  \"ansible/lib/ansible/modules/files/replace.py\": \"lib/ansible/modules/files/replace.py\", \n  \"ansible/lib/ansible/modules/files/stat.py\": \"lib/ansible/modules/files/stat.py\", \n  \"ansible/lib/ansible/modules/files/synchronize.py\": \"lib/ansible/modules/files/synchronize.py\", \n  \"ansible/lib/ansible/modules/files/tempfile.py\": \"lib/ansible/modules/files/tempfile.py\", \n  \"ansible/lib/ansible/modules/files/template.py\": \"lib/ansible/modules/files/template.py\", \n  \"ansible/lib/ansible/modules/files/unarchive.py\": \"lib/ansible/modules/files/unarchive.py\", \n  \"ansible/lib/ansible/modules/files/xattr.py\": \"lib/ansible/modules/files/xattr.py\", \n  \"ansible/lib/ansible/modules/files/xml.py\": \"lib/ansible/modules/files/xml.py\", \n  \"ansible/lib/ansible/modules/identity/cyberark/cyberark_authentication.py\": \"lib/ansible/modules/identity/cyberark/cyberark_authentication.py\", \n  \"ansible/lib/ansible/modules/identity/cyberark/cyberark_user.py\": \"lib/ansible/modules/identity/cyberark/cyberark_user.py\", \n  \"ansible/lib/ansible/modules/identity/ipa/ipa_dnsrecord.py\": \"lib/ansible/modules/identity/ipa/ipa_dnsrecord.py\", \n  \"ansible/lib/ansible/modules/identity/ipa/ipa_dnszone.py\": \"lib/ansible/modules/identity/ipa/ipa_dnszone.py\", \n  \"ansible/lib/ansible/modules/identity/ipa/ipa_group.py\": \"lib/ansible/modules/identity/ipa/ipa_group.py\", \n  \"ansible/lib/ansible/modules/identity/ipa/ipa_hbacrule.py\": \"lib/ansible/modules/identity/ipa/ipa_hbacrule.py\", \n  \"ansible/lib/ansible/modules/identity/ipa/ipa_host.py\": \"lib/ansible/modules/identity/ipa/ipa_host.py\", \n  \"ansible/lib/ansible/modules/identity/ipa/ipa_hostgroup.py\": \"lib/ansible/modules/identity/ipa/ipa_hostgroup.py\", \n  \"ansible/lib/ansible/modules/identity/ipa/ipa_role.py\": \"lib/ansible/modules/identity/ipa/ipa_role.py\", \n  \"ansible/lib/ansible/modules/identity/ipa/ipa_sudocmd.py\": \"lib/ansible/modules/identity/ipa/ipa_sudocmd.py\", \n  \"ansible/lib/ansible/modules/identity/ipa/ipa_sudocmdgroup.py\": \"lib/ansible/modules/identity/ipa/ipa_sudocmdgroup.py\", \n  \"ansible/lib/ansible/modules/identity/ipa/ipa_sudorule.py\": \"lib/ansible/modules/identity/ipa/ipa_sudorule.py\", \n  \"ansible/lib/ansible/modules/identity/ipa/ipa_user.py\": \"lib/ansible/modules/identity/ipa/ipa_user.py\", \n  \"ansible/lib/ansible/modules/identity/opendj/opendj_backendprop.py\": \"lib/ansible/modules/identity/opendj/opendj_backendprop.py\", \n  \"ansible/lib/ansible/modules/inventory/add_host.py\": \"lib/ansible/modules/inventory/add_host.py\", \n  \"ansible/lib/ansible/modules/inventory/group_by.py\": \"lib/ansible/modules/inventory/group_by.py\", \n  \"ansible/lib/ansible/modules/messaging/rabbitmq_binding.py\": \"lib/ansible/modules/messaging/rabbitmq_binding.py\", \n  \"ansible/lib/ansible/modules/messaging/rabbitmq_exchange.py\": \"lib/ansible/modules/messaging/rabbitmq_exchange.py\", \n  \"ansible/lib/ansible/modules/messaging/rabbitmq_parameter.py\": \"lib/ansible/modules/messaging/rabbitmq_parameter.py\", \n  \"ansible/lib/ansible/modules/messaging/rabbitmq_plugin.py\": \"lib/ansible/modules/messaging/rabbitmq_plugin.py\", \n  \"ansible/lib/ansible/modules/messaging/rabbitmq_policy.py\": \"lib/ansible/modules/messaging/rabbitmq_policy.py\", \n  \"ansible/lib/ansible/modules/messaging/rabbitmq_queue.py\": \"lib/ansible/modules/messaging/rabbitmq_queue.py\", \n  \"ansible/lib/ansible/modules/messaging/rabbitmq_user.py\": \"lib/ansible/modules/messaging/rabbitmq_user.py\", \n  \"ansible/lib/ansible/modules/messaging/rabbitmq_vhost.py\": \"lib/ansible/modules/messaging/rabbitmq_vhost.py\", \n  \"ansible/lib/ansible/modules/monitoring/airbrake_deployment.py\": \"lib/ansible/modules/monitoring/airbrake_deployment.py\", \n  \"ansible/lib/ansible/modules/monitoring/bigpanda.py\": \"lib/ansible/modules/monitoring/bigpanda.py\", \n  \"ansible/lib/ansible/modules/monitoring/circonus_annotation.py\": \"lib/ansible/modules/monitoring/circonus_annotation.py\", \n  \"ansible/lib/ansible/modules/monitoring/datadog_event.py\": \"lib/ansible/modules/monitoring/datadog_event.py\", \n  \"ansible/lib/ansible/modules/monitoring/datadog_monitor.py\": \"lib/ansible/modules/monitoring/datadog_monitor.py\", \n  \"ansible/lib/ansible/modules/monitoring/honeybadger_deployment.py\": \"lib/ansible/modules/monitoring/honeybadger_deployment.py\", \n  \"ansible/lib/ansible/modules/monitoring/icinga2_feature.py\": \"lib/ansible/modules/monitoring/icinga2_feature.py\", \n  \"ansible/lib/ansible/modules/monitoring/librato_annotation.py\": \"lib/ansible/modules/monitoring/librato_annotation.py\", \n  \"ansible/lib/ansible/modules/monitoring/logentries.py\": \"lib/ansible/modules/monitoring/logentries.py\", \n  \"ansible/lib/ansible/modules/monitoring/logicmonitor.py\": \"lib/ansible/modules/monitoring/logicmonitor.py\", \n  \"ansible/lib/ansible/modules/monitoring/logicmonitor_facts.py\": \"lib/ansible/modules/monitoring/logicmonitor_facts.py\", \n  \"ansible/lib/ansible/modules/monitoring/logstash_plugin.py\": \"lib/ansible/modules/monitoring/logstash_plugin.py\", \n  \"ansible/lib/ansible/modules/monitoring/monit.py\": [\n    \"lib/ansible/modules/monitoring/monit.py\"\n  ], \n  \"ansible/lib/ansible/modules/monitoring/nagios.py\": \"lib/ansible/modules/monitoring/nagios.py\", \n  \"ansible/lib/ansible/modules/monitoring/newrelic_deployment.py\": \"lib/ansible/modules/monitoring/newrelic_deployment.py\", \n  \"ansible/lib/ansible/modules/monitoring/pagerduty.py\": \"lib/ansible/modules/monitoring/pagerduty.py\", \n  \"ansible/lib/ansible/modules/monitoring/pagerduty_alert.py\": \"lib/ansible/modules/monitoring/pagerduty_alert.py\", \n  \"ansible/lib/ansible/modules/monitoring/pingdom.py\": \"lib/ansible/modules/monitoring/pingdom.py\", \n  \"ansible/lib/ansible/modules/monitoring/rollbar_deployment.py\": \"lib/ansible/modules/monitoring/rollbar_deployment.py\", \n  \"ansible/lib/ansible/modules/monitoring/sensu_check.py\": \"lib/ansible/modules/monitoring/sensu_check.py\", \n  \"ansible/lib/ansible/modules/monitoring/sensu_client.py\": \"lib/ansible/modules/monitoring/sensu_client.py\", \n  \"ansible/lib/ansible/modules/monitoring/sensu_handler.py\": \"lib/ansible/modules/monitoring/sensu_handler.py\", \n  \"ansible/lib/ansible/modules/monitoring/sensu_silence.py\": \"lib/ansible/modules/monitoring/sensu_silence.py\", \n  \"ansible/lib/ansible/modules/monitoring/sensu_subscription.py\": \"lib/ansible/modules/monitoring/sensu_subscription.py\", \n  \"ansible/lib/ansible/modules/monitoring/stackdriver.py\": \"lib/ansible/modules/monitoring/stackdriver.py\", \n  \"ansible/lib/ansible/modules/monitoring/statusio_maintenance.py\": \"lib/ansible/modules/monitoring/statusio_maintenance.py\", \n  \"ansible/lib/ansible/modules/monitoring/uptimerobot.py\": \"lib/ansible/modules/monitoring/uptimerobot.py\", \n  \"ansible/lib/ansible/modules/monitoring/zabbix/zabbix_group.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_group.py\", \n  \"ansible/lib/ansible/modules/monitoring/zabbix/zabbix_host.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_host.py\", \n  \"ansible/lib/ansible/modules/monitoring/zabbix/zabbix_hostmacro.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_hostmacro.py\", \n  \"ansible/lib/ansible/modules/monitoring/zabbix/zabbix_maintenance.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_maintenance.py\", \n  \"ansible/lib/ansible/modules/monitoring/zabbix/zabbix_proxy.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_proxy.py\", \n  \"ansible/lib/ansible/modules/monitoring/zabbix/zabbix_screen.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_screen.py\", \n  \"ansible/lib/ansible/modules/monitoring/zabbix/zabbix_template.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_template.py\", \n  \"ansible/lib/ansible/modules/net_tools/basics/get_url.py\": \"lib/ansible/modules/net_tools/basics/get_url.py\", \n  \"ansible/lib/ansible/modules/net_tools/basics/slurp.py\": \"lib/ansible/modules/net_tools/basics/slurp.py\", \n  \"ansible/lib/ansible/modules/net_tools/basics/uri.py\": \"lib/ansible/modules/net_tools/basics/uri.py\", \n  \"ansible/lib/ansible/modules/net_tools/cloudflare_dns.py\": \"lib/ansible/modules/net_tools/cloudflare_dns.py\", \n  \"ansible/lib/ansible/modules/net_tools/dnsimple.py\": \"lib/ansible/modules/net_tools/dnsimple.py\", \n  \"ansible/lib/ansible/modules/net_tools/dnsmadeeasy.py\": \"lib/ansible/modules/net_tools/dnsmadeeasy.py\", \n  \"ansible/lib/ansible/modules/net_tools/exoscale/exo_dns_domain.py\": \"lib/ansible/modules/net_tools/exoscale/exo_dns_domain.py\", \n  \"ansible/lib/ansible/modules/net_tools/exoscale/exo_dns_record.py\": \"lib/ansible/modules/net_tools/exoscale/exo_dns_record.py\", \n  \"ansible/lib/ansible/modules/net_tools/haproxy.py\": \"lib/ansible/modules/net_tools/haproxy.py\", \n  \"ansible/lib/ansible/modules/net_tools/infinity/infinity.py\": \"lib/ansible/modules/net_tools/infinity/infinity.py\", \n  \"ansible/lib/ansible/modules/net_tools/ipify_facts.py\": \"lib/ansible/modules/net_tools/ipify_facts.py\", \n  \"ansible/lib/ansible/modules/net_tools/ipinfoio_facts.py\": \"lib/ansible/modules/net_tools/ipinfoio_facts.py\", \n  \"ansible/lib/ansible/modules/net_tools/ldap/ldap_attr.py\": \"lib/ansible/modules/net_tools/ldap/ldap_attr.py\", \n  \"ansible/lib/ansible/modules/net_tools/ldap/ldap_entry.py\": \"lib/ansible/modules/net_tools/ldap/ldap_entry.py\", \n  \"ansible/lib/ansible/modules/net_tools/lldp.py\": \"lib/ansible/modules/net_tools/lldp.py\", \n  \"ansible/lib/ansible/modules/net_tools/nmcli.py\": \"lib/ansible/modules/net_tools/nmcli.py\", \n  \"ansible/lib/ansible/modules/net_tools/nsupdate.py\": \"lib/ansible/modules/net_tools/nsupdate.py\", \n  \"ansible/lib/ansible/modules/net_tools/omapi_host.py\": \"lib/ansible/modules/net_tools/omapi_host.py\", \n  \"ansible/lib/ansible/modules/net_tools/snmp_facts.py\": \"lib/ansible/modules/net_tools/snmp_facts.py\", \n  \"ansible/lib/ansible/modules/network/a10/a10_server.py\": \"lib/ansible/modules/network/a10/a10_server.py\", \n  \"ansible/lib/ansible/modules/network/a10/a10_server_axapi3.py\": \"lib/ansible/modules/network/a10/a10_server_axapi3.py\", \n  \"ansible/lib/ansible/modules/network/a10/a10_service_group.py\": \"lib/ansible/modules/network/a10/a10_service_group.py\", \n  \"ansible/lib/ansible/modules/network/a10/a10_virtual_server.py\": \"lib/ansible/modules/network/a10/a10_virtual_server.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_aep.py\": \"lib/ansible/modules/network/aci/aci_aep.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_ap.py\": \"lib/ansible/modules/network/aci/aci_ap.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_bd.py\": \"lib/ansible/modules/network/aci/aci_bd.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_bd_subnet.py\": \"lib/ansible/modules/network/aci/aci_bd_subnet.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_bd_to_l3out.py\": \"lib/ansible/modules/network/aci/aci_bd_to_l3out.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_config_rollback.py\": \"lib/ansible/modules/network/aci/aci_config_rollback.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_config_snapshot.py\": \"lib/ansible/modules/network/aci/aci_config_snapshot.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_contract.py\": \"lib/ansible/modules/network/aci/aci_contract.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_contract_subject.py\": \"lib/ansible/modules/network/aci/aci_contract_subject.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_contract_subject_to_filter.py\": \"lib/ansible/modules/network/aci/aci_contract_subject_to_filter.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_epg.py\": \"lib/ansible/modules/network/aci/aci_epg.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py\": \"lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_epg_to_contract.py\": \"lib/ansible/modules/network/aci/aci_epg_to_contract.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_epg_to_domain.py\": \"lib/ansible/modules/network/aci/aci_epg_to_domain.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_filter.py\": \"lib/ansible/modules/network/aci/aci_filter.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_filter_entry.py\": \"lib/ansible/modules/network/aci/aci_filter_entry.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_intf_policy_fc.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_fc.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_intf_policy_l2.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_l2.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_intf_policy_lldp.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_lldp.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_intf_policy_mcp.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_mcp.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_intf_policy_port_channel.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_port_channel.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_intf_policy_port_security.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_port_security.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_l3out_route_tag_policy.py\": \"lib/ansible/modules/network/aci/aci_l3out_route_tag_policy.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_rest.py\": \"lib/ansible/modules/network/aci/aci_rest.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_taboo_contract.py\": \"lib/ansible/modules/network/aci/aci_taboo_contract.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_tenant.py\": \"lib/ansible/modules/network/aci/aci_tenant.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_tenant_action_rule_profile.py\": \"lib/ansible/modules/network/aci/aci_tenant_action_rule_profile.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py\": \"lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_tenant_span_dst_group.py\": \"lib/ansible/modules/network/aci/aci_tenant_span_dst_group.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_tenant_span_src_group.py\": \"lib/ansible/modules/network/aci/aci_tenant_span_src_group.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py\": \"lib/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py\", \n  \"ansible/lib/ansible/modules/network/aci/aci_vrf.py\": \"lib/ansible/modules/network/aci/aci_vrf.py\", \n  \"ansible/lib/ansible/modules/network/aireos/aireos_command.py\": \"lib/ansible/modules/network/aireos/aireos_command.py\", \n  \"ansible/lib/ansible/modules/network/aireos/aireos_config.py\": \"lib/ansible/modules/network/aireos/aireos_config.py\", \n  \"ansible/lib/ansible/modules/network/aos/aos_asn_pool.py\": \"lib/ansible/modules/network/aos/aos_asn_pool.py\", \n  \"ansible/lib/ansible/modules/network/aos/aos_blueprint.py\": \"lib/ansible/modules/network/aos/aos_blueprint.py\", \n  \"ansible/lib/ansible/modules/network/aos/aos_blueprint_param.py\": \"lib/ansible/modules/network/aos/aos_blueprint_param.py\", \n  \"ansible/lib/ansible/modules/network/aos/aos_blueprint_virtnet.py\": \"lib/ansible/modules/network/aos/aos_blueprint_virtnet.py\", \n  \"ansible/lib/ansible/modules/network/aos/aos_device.py\": \"lib/ansible/modules/network/aos/aos_device.py\", \n  \"ansible/lib/ansible/modules/network/aos/aos_external_router.py\": \"lib/ansible/modules/network/aos/aos_external_router.py\", \n  \"ansible/lib/ansible/modules/network/aos/aos_ip_pool.py\": \"lib/ansible/modules/network/aos/aos_ip_pool.py\", \n  \"ansible/lib/ansible/modules/network/aos/aos_logical_device.py\": \"lib/ansible/modules/network/aos/aos_logical_device.py\", \n  \"ansible/lib/ansible/modules/network/aos/aos_logical_device_map.py\": \"lib/ansible/modules/network/aos/aos_logical_device_map.py\", \n  \"ansible/lib/ansible/modules/network/aos/aos_login.py\": \"lib/ansible/modules/network/aos/aos_login.py\", \n  \"ansible/lib/ansible/modules/network/aos/aos_rack_type.py\": \"lib/ansible/modules/network/aos/aos_rack_type.py\", \n  \"ansible/lib/ansible/modules/network/aos/aos_template.py\": \"lib/ansible/modules/network/aos/aos_template.py\", \n  \"ansible/lib/ansible/modules/network/aruba/aruba_command.py\": \"lib/ansible/modules/network/aruba/aruba_command.py\", \n  \"ansible/lib/ansible/modules/network/aruba/aruba_config.py\": \"lib/ansible/modules/network/aruba/aruba_config.py\", \n  \"ansible/lib/ansible/modules/network/asa/asa_acl.py\": \"lib/ansible/modules/network/asa/asa_acl.py\", \n  \"ansible/lib/ansible/modules/network/asa/asa_command.py\": \"lib/ansible/modules/network/asa/asa_command.py\", \n  \"ansible/lib/ansible/modules/network/asa/asa_config.py\": \"lib/ansible/modules/network/asa/asa_config.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_actiongroupconfig.py\": \"lib/ansible/modules/network/avi/avi_actiongroupconfig.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_alertconfig.py\": \"lib/ansible/modules/network/avi/avi_alertconfig.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_alertemailconfig.py\": \"lib/ansible/modules/network/avi/avi_alertemailconfig.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_alertscriptconfig.py\": \"lib/ansible/modules/network/avi/avi_alertscriptconfig.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_alertsyslogconfig.py\": \"lib/ansible/modules/network/avi/avi_alertsyslogconfig.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_analyticsprofile.py\": \"lib/ansible/modules/network/avi/avi_analyticsprofile.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_api_session.py\": \"lib/ansible/modules/network/avi/avi_api_session.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py\": \"lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_applicationprofile.py\": \"lib/ansible/modules/network/avi/avi_applicationprofile.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_authprofile.py\": \"lib/ansible/modules/network/avi/avi_authprofile.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_backup.py\": \"lib/ansible/modules/network/avi/avi_backup.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_backupconfiguration.py\": \"lib/ansible/modules/network/avi/avi_backupconfiguration.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_certificatemanagementprofile.py\": \"lib/ansible/modules/network/avi/avi_certificatemanagementprofile.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_cloud.py\": \"lib/ansible/modules/network/avi/avi_cloud.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_cloudconnectoruser.py\": \"lib/ansible/modules/network/avi/avi_cloudconnectoruser.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_cloudproperties.py\": \"lib/ansible/modules/network/avi/avi_cloudproperties.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_cluster.py\": \"lib/ansible/modules/network/avi/avi_cluster.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_controllerproperties.py\": \"lib/ansible/modules/network/avi/avi_controllerproperties.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_dnspolicy.py\": \"lib/ansible/modules/network/avi/avi_dnspolicy.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_gslb.py\": \"lib/ansible/modules/network/avi/avi_gslb.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_gslbapplicationpersistenceprofile.py\": \"lib/ansible/modules/network/avi/avi_gslbapplicationpersistenceprofile.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_gslbgeodbprofile.py\": \"lib/ansible/modules/network/avi/avi_gslbgeodbprofile.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_gslbhealthmonitor.py\": \"lib/ansible/modules/network/avi/avi_gslbhealthmonitor.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_gslbservice.py\": \"lib/ansible/modules/network/avi/avi_gslbservice.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py\": \"lib/ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_healthmonitor.py\": \"lib/ansible/modules/network/avi/avi_healthmonitor.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_httppolicyset.py\": \"lib/ansible/modules/network/avi/avi_httppolicyset.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_ipaddrgroup.py\": \"lib/ansible/modules/network/avi/avi_ipaddrgroup.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_ipamdnsproviderprofile.py\": \"lib/ansible/modules/network/avi/avi_ipamdnsproviderprofile.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_microservicegroup.py\": \"lib/ansible/modules/network/avi/avi_microservicegroup.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_network.py\": \"lib/ansible/modules/network/avi/avi_network.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_networkprofile.py\": \"lib/ansible/modules/network/avi/avi_networkprofile.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_networksecuritypolicy.py\": \"lib/ansible/modules/network/avi/avi_networksecuritypolicy.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_pkiprofile.py\": \"lib/ansible/modules/network/avi/avi_pkiprofile.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_pool.py\": \"lib/ansible/modules/network/avi/avi_pool.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_poolgroup.py\": \"lib/ansible/modules/network/avi/avi_poolgroup.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py\": \"lib/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_prioritylabels.py\": \"lib/ansible/modules/network/avi/avi_prioritylabels.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_role.py\": \"lib/ansible/modules/network/avi/avi_role.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_scheduler.py\": \"lib/ansible/modules/network/avi/avi_scheduler.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_seproperties.py\": \"lib/ansible/modules/network/avi/avi_seproperties.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_serverautoscalepolicy.py\": \"lib/ansible/modules/network/avi/avi_serverautoscalepolicy.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_serviceengine.py\": \"lib/ansible/modules/network/avi/avi_serviceengine.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_serviceenginegroup.py\": \"lib/ansible/modules/network/avi/avi_serviceenginegroup.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_snmptrapprofile.py\": \"lib/ansible/modules/network/avi/avi_snmptrapprofile.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_sslkeyandcertificate.py\": \"lib/ansible/modules/network/avi/avi_sslkeyandcertificate.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_sslprofile.py\": \"lib/ansible/modules/network/avi/avi_sslprofile.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_stringgroup.py\": \"lib/ansible/modules/network/avi/avi_stringgroup.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_systemconfiguration.py\": \"lib/ansible/modules/network/avi/avi_systemconfiguration.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_tenant.py\": \"lib/ansible/modules/network/avi/avi_tenant.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_trafficcloneprofile.py\": \"lib/ansible/modules/network/avi/avi_trafficcloneprofile.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_useraccountprofile.py\": \"lib/ansible/modules/network/avi/avi_useraccountprofile.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_virtualservice.py\": \"lib/ansible/modules/network/avi/avi_virtualservice.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_vrfcontext.py\": \"lib/ansible/modules/network/avi/avi_vrfcontext.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_vsdatascriptset.py\": \"lib/ansible/modules/network/avi/avi_vsdatascriptset.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_vsvip.py\": \"lib/ansible/modules/network/avi/avi_vsvip.py\", \n  \"ansible/lib/ansible/modules/network/avi/avi_webhook.py\": \"lib/ansible/modules/network/avi/avi_webhook.py\", \n  \"ansible/lib/ansible/modules/network/bigswitch/bcf_switch.py\": \"lib/ansible/modules/network/bigswitch/bcf_switch.py\", \n  \"ansible/lib/ansible/modules/network/bigswitch/bigmon_chain.py\": \"lib/ansible/modules/network/bigswitch/bigmon_chain.py\", \n  \"ansible/lib/ansible/modules/network/bigswitch/bigmon_policy.py\": \"lib/ansible/modules/network/bigswitch/bigmon_policy.py\", \n  \"ansible/lib/ansible/modules/network/citrix/_netscaler.py\": \"lib/ansible/modules/network/citrix/_netscaler.py\", \n  \"ansible/lib/ansible/modules/network/citrix/netscaler.py\": \"lib/ansible/modules/network/citrix/_netscaler.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_aaa_server.py\": \"lib/ansible/modules/network/cloudengine/ce_aaa_server.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_aaa_server_host.py\": \"lib/ansible/modules/network/cloudengine/ce_aaa_server_host.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_acl.py\": \"lib/ansible/modules/network/cloudengine/ce_acl.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_acl_advance.py\": \"lib/ansible/modules/network/cloudengine/ce_acl_advance.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_acl_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_acl_interface.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_bfd_global.py\": \"lib/ansible/modules/network/cloudengine/ce_bfd_global.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_bfd_session.py\": \"lib/ansible/modules/network/cloudengine/ce_bfd_session.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_bfd_view.py\": \"lib/ansible/modules/network/cloudengine/ce_bfd_view.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_bgp.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_bgp_af.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp_af.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_bgp_neighbor.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_bgp_neighbor_af.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor_af.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_command.py\": \"lib/ansible/modules/network/cloudengine/ce_command.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_config.py\": \"lib/ansible/modules/network/cloudengine/ce_config.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_dldp.py\": \"lib/ansible/modules/network/cloudengine/ce_dldp.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_dldp_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_dldp_interface.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_eth_trunk.py\": \"lib/ansible/modules/network/cloudengine/ce_eth_trunk.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_evpn_bd_vni.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bd_vni.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_evpn_bgp.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_evpn_bgp_rr.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp_rr.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_evpn_global.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_global.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_facts.py\": \"lib/ansible/modules/network/cloudengine/ce_facts.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_file_copy.py\": \"lib/ansible/modules/network/cloudengine/ce_file_copy.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_info_center_debug.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_debug.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_info_center_global.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_global.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_info_center_log.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_log.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_info_center_trap.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_trap.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_interface.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_interface_ospf.py\": \"lib/ansible/modules/network/cloudengine/ce_interface_ospf.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_ip_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_ip_interface.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_link_status.py\": \"lib/ansible/modules/network/cloudengine/ce_link_status.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_mlag_config.py\": \"lib/ansible/modules/network/cloudengine/ce_mlag_config.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_mlag_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_mlag_interface.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_mtu.py\": \"lib/ansible/modules/network/cloudengine/ce_mtu.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_netconf.py\": \"lib/ansible/modules/network/cloudengine/ce_netconf.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_netstream_aging.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_aging.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_netstream_export.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_export.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_netstream_global.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_global.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_netstream_template.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_template.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_ntp.py\": \"lib/ansible/modules/network/cloudengine/ce_ntp.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_ntp_auth.py\": \"lib/ansible/modules/network/cloudengine/ce_ntp_auth.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_ospf.py\": \"lib/ansible/modules/network/cloudengine/ce_ospf.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_ospf_vrf.py\": \"lib/ansible/modules/network/cloudengine/ce_ospf_vrf.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_reboot.py\": \"lib/ansible/modules/network/cloudengine/ce_reboot.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_rollback.py\": \"lib/ansible/modules/network/cloudengine/ce_rollback.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_sflow.py\": \"lib/ansible/modules/network/cloudengine/ce_sflow.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_snmp_community.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_community.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_snmp_contact.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_contact.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_snmp_location.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_location.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_snmp_target_host.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_target_host.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_snmp_traps.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_traps.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_snmp_user.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_user.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_startup.py\": \"lib/ansible/modules/network/cloudengine/ce_startup.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_static_route.py\": \"lib/ansible/modules/network/cloudengine/ce_static_route.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_stp.py\": \"lib/ansible/modules/network/cloudengine/ce_stp.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_switchport.py\": \"lib/ansible/modules/network/cloudengine/ce_switchport.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_vlan.py\": \"lib/ansible/modules/network/cloudengine/ce_vlan.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_vrf.py\": \"lib/ansible/modules/network/cloudengine/ce_vrf.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_vrf_af.py\": \"lib/ansible/modules/network/cloudengine/ce_vrf_af.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_vrf_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_vrf_interface.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_vrrp.py\": \"lib/ansible/modules/network/cloudengine/ce_vrrp.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_vxlan_arp.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_arp.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_vxlan_gateway.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_gateway.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_vxlan_global.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_global.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_vxlan_tunnel.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_tunnel.py\", \n  \"ansible/lib/ansible/modules/network/cloudengine/ce_vxlan_vap.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_vap.py\", \n  \"ansible/lib/ansible/modules/network/cloudvision/cv_server_provision.py\": \"lib/ansible/modules/network/cloudvision/cv_server_provision.py\", \n  \"ansible/lib/ansible/modules/network/cumulus/_cl_bond.py\": \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n  \"ansible/lib/ansible/modules/network/cumulus/_cl_bridge.py\": \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n  \"ansible/lib/ansible/modules/network/cumulus/_cl_img_install.py\": \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n  \"ansible/lib/ansible/modules/network/cumulus/_cl_interface.py\": \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n  \"ansible/lib/ansible/modules/network/cumulus/_cl_interface_policy.py\": \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n  \"ansible/lib/ansible/modules/network/cumulus/_cl_license.py\": \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n  \"ansible/lib/ansible/modules/network/cumulus/_cl_ports.py\": \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n  \"ansible/lib/ansible/modules/network/cumulus/cl_bond.py\": \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n  \"ansible/lib/ansible/modules/network/cumulus/cl_bridge.py\": \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n  \"ansible/lib/ansible/modules/network/cumulus/cl_img_install.py\": \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n  \"ansible/lib/ansible/modules/network/cumulus/cl_interface.py\": \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n  \"ansible/lib/ansible/modules/network/cumulus/cl_interface_policy.py\": \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n  \"ansible/lib/ansible/modules/network/cumulus/cl_license.py\": \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n  \"ansible/lib/ansible/modules/network/cumulus/cl_ports.py\": \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n  \"ansible/lib/ansible/modules/network/cumulus/nclu.py\": \"lib/ansible/modules/network/cumulus/nclu.py\", \n  \"ansible/lib/ansible/modules/network/dellos10/dellos10_command.py\": \"lib/ansible/modules/network/dellos10/dellos10_command.py\", \n  \"ansible/lib/ansible/modules/network/dellos10/dellos10_config.py\": \"lib/ansible/modules/network/dellos10/dellos10_config.py\", \n  \"ansible/lib/ansible/modules/network/dellos10/dellos10_facts.py\": \"lib/ansible/modules/network/dellos10/dellos10_facts.py\", \n  \"ansible/lib/ansible/modules/network/dellos6/dellos6_command.py\": \"lib/ansible/modules/network/dellos6/dellos6_command.py\", \n  \"ansible/lib/ansible/modules/network/dellos6/dellos6_config.py\": \"lib/ansible/modules/network/dellos6/dellos6_config.py\", \n  \"ansible/lib/ansible/modules/network/dellos6/dellos6_facts.py\": \"lib/ansible/modules/network/dellos6/dellos6_facts.py\", \n  \"ansible/lib/ansible/modules/network/dellos9/dellos9_command.py\": \"lib/ansible/modules/network/dellos9/dellos9_command.py\", \n  \"ansible/lib/ansible/modules/network/dellos9/dellos9_config.py\": \"lib/ansible/modules/network/dellos9/dellos9_config.py\", \n  \"ansible/lib/ansible/modules/network/dellos9/dellos9_facts.py\": \"lib/ansible/modules/network/dellos9/dellos9_facts.py\", \n  \"ansible/lib/ansible/modules/network/eos/eos_banner.py\": \"lib/ansible/modules/network/eos/eos_banner.py\", \n  \"ansible/lib/ansible/modules/network/eos/eos_command.py\": \"lib/ansible/modules/network/eos/eos_command.py\", \n  \"ansible/lib/ansible/modules/network/eos/eos_config.py\": \"lib/ansible/modules/network/eos/eos_config.py\", \n  \"ansible/lib/ansible/modules/network/eos/eos_eapi.py\": \"lib/ansible/modules/network/eos/eos_eapi.py\", \n  \"ansible/lib/ansible/modules/network/eos/eos_facts.py\": \"lib/ansible/modules/network/eos/eos_facts.py\", \n  \"ansible/lib/ansible/modules/network/eos/eos_logging.py\": \"lib/ansible/modules/network/eos/eos_logging.py\", \n  \"ansible/lib/ansible/modules/network/eos/eos_system.py\": \"lib/ansible/modules/network/eos/eos_system.py\", \n  \"ansible/lib/ansible/modules/network/eos/eos_user.py\": \"lib/ansible/modules/network/eos/eos_user.py\", \n  \"ansible/lib/ansible/modules/network/eos/eos_vlan.py\": \"lib/ansible/modules/network/eos/eos_vlan.py\", \n  \"ansible/lib/ansible/modules/network/eos/eos_vrf.py\": \"lib/ansible/modules/network/eos/eos_vrf.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_asm_policy.py\": \"lib/ansible/modules/network/f5/bigip_asm_policy.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_command.py\": \"lib/ansible/modules/network/f5/bigip_command.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_config.py\": \"lib/ansible/modules/network/f5/bigip_config.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_configsync_action.py\": \"lib/ansible/modules/network/f5/bigip_configsync_action.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_configsync_actions.py\": \"lib/ansible/modules/network/f5/bigip_configsync_actions.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_device_dns.py\": \"lib/ansible/modules/network/f5/bigip_device_dns.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_device_ntp.py\": \"lib/ansible/modules/network/f5/bigip_device_ntp.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_device_sshd.py\": \"lib/ansible/modules/network/f5/bigip_device_sshd.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_facts.py\": \"lib/ansible/modules/network/f5/bigip_facts.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_gtm_datacenter.py\": \"lib/ansible/modules/network/f5/bigip_gtm_datacenter.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_gtm_facts.py\": \"lib/ansible/modules/network/f5/bigip_gtm_facts.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_gtm_pool.py\": \"lib/ansible/modules/network/f5/bigip_gtm_pool.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_gtm_virtual_server.py\": \"lib/ansible/modules/network/f5/bigip_gtm_virtual_server.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_gtm_wide_ip.py\": \"lib/ansible/modules/network/f5/bigip_gtm_wide_ip.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_hostname.py\": \"lib/ansible/modules/network/f5/bigip_hostname.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_iapp_service.py\": \"lib/ansible/modules/network/f5/bigip_iapp_service.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_iapp_template.py\": \"lib/ansible/modules/network/f5/bigip_iapp_template.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_iapplx_package.py\": \"lib/ansible/modules/network/f5/bigip_iapplx_package.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_irule.py\": \"lib/ansible/modules/network/f5/bigip_irule.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_monitor_http.py\": \"lib/ansible/modules/network/f5/bigip_monitor_http.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_monitor_https.py\": \"lib/ansible/modules/network/f5/bigip_monitor_https.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_monitor_tcp.py\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_monitor_tcp_echo.py\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp_echo.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_monitor_tcp_half_open.py\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp_half_open.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_node.py\": \"lib/ansible/modules/network/f5/bigip_node.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_partition.py\": \"lib/ansible/modules/network/f5/bigip_partition.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_policy.py\": \"lib/ansible/modules/network/f5/bigip_policy.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_pool.py\": \"lib/ansible/modules/network/f5/bigip_pool.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_pool_member.py\": \"lib/ansible/modules/network/f5/bigip_pool_member.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_provision.py\": \"lib/ansible/modules/network/f5/bigip_provision.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_qkview.py\": \"lib/ansible/modules/network/f5/bigip_qkview.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_remote_syslog.py\": \"lib/ansible/modules/network/f5/bigip_remote_syslog.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_routedomain.py\": \"lib/ansible/modules/network/f5/bigip_routedomain.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_selfip.py\": \"lib/ansible/modules/network/f5/bigip_selfip.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_snat_pool.py\": \"lib/ansible/modules/network/f5/bigip_snat_pool.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_snmp.py\": \"lib/ansible/modules/network/f5/bigip_snmp.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_snmp_trap.py\": \"lib/ansible/modules/network/f5/bigip_snmp_trap.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_ssl_certificate.py\": \"lib/ansible/modules/network/f5/bigip_ssl_certificate.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_ssl_key.py\": \"lib/ansible/modules/network/f5/bigip_ssl_key.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_sys_db.py\": \"lib/ansible/modules/network/f5/bigip_sys_db.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_sys_global.py\": \"lib/ansible/modules/network/f5/bigip_sys_global.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_ucs.py\": \"lib/ansible/modules/network/f5/bigip_ucs.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_user.py\": \"lib/ansible/modules/network/f5/bigip_user.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_virtual_address.py\": \"lib/ansible/modules/network/f5/bigip_virtual_address.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_virtual_server.py\": \"lib/ansible/modules/network/f5/bigip_virtual_server.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_vlan.py\": \"lib/ansible/modules/network/f5/bigip_vlan.py\", \n  \"ansible/lib/ansible/modules/network/f5/bigip_wait.py\": \"lib/ansible/modules/network/f5/bigip_wait.py\", \n  \"ansible/lib/ansible/modules/network/fortios/fortios_address.py\": \"lib/ansible/modules/network/fortios/fortios_address.py\", \n  \"ansible/lib/ansible/modules/network/fortios/fortios_config.py\": \"lib/ansible/modules/network/fortios/fortios_config.py\", \n  \"ansible/lib/ansible/modules/network/fortios/fortios_ipv4_policy.py\": \"lib/ansible/modules/network/fortios/fortios_ipv4_policy.py\", \n  \"ansible/lib/ansible/modules/network/illumos/dladm_etherstub.py\": \"lib/ansible/modules/network/illumos/dladm_etherstub.py\", \n  \"ansible/lib/ansible/modules/network/illumos/dladm_iptun.py\": \"lib/ansible/modules/network/illumos/dladm_iptun.py\", \n  \"ansible/lib/ansible/modules/network/illumos/dladm_linkprop.py\": \"lib/ansible/modules/network/illumos/dladm_linkprop.py\", \n  \"ansible/lib/ansible/modules/network/illumos/dladm_vlan.py\": \"lib/ansible/modules/network/illumos/dladm_vlan.py\", \n  \"ansible/lib/ansible/modules/network/illumos/dladm_vnic.py\": \"lib/ansible/modules/network/illumos/dladm_vnic.py\", \n  \"ansible/lib/ansible/modules/network/illumos/flowadm.py\": \"lib/ansible/modules/network/illumos/flowadm.py\", \n  \"ansible/lib/ansible/modules/network/illumos/ipadm_addr.py\": \"lib/ansible/modules/network/illumos/ipadm_addr.py\", \n  \"ansible/lib/ansible/modules/network/illumos/ipadm_addrprop.py\": \"lib/ansible/modules/network/illumos/ipadm_addrprop.py\", \n  \"ansible/lib/ansible/modules/network/illumos/ipadm_if.py\": \"lib/ansible/modules/network/illumos/ipadm_if.py\", \n  \"ansible/lib/ansible/modules/network/illumos/ipadm_ifprop.py\": \"lib/ansible/modules/network/illumos/ipadm_ifprop.py\", \n  \"ansible/lib/ansible/modules/network/illumos/ipadm_prop.py\": \"lib/ansible/modules/network/illumos/ipadm_prop.py\", \n  \"ansible/lib/ansible/modules/network/interface/net_interface.py\": \"lib/ansible/modules/network/interface/net_interface.py\", \n  \"ansible/lib/ansible/modules/network/interface/net_linkagg.py\": \"lib/ansible/modules/network/interface/net_linkagg.py\", \n  \"ansible/lib/ansible/modules/network/interface/net_lldp_interface.py\": \"lib/ansible/modules/network/interface/net_lldp_interface.py\", \n  \"ansible/lib/ansible/modules/network/ios/ios_banner.py\": \"lib/ansible/modules/network/ios/ios_banner.py\", \n  \"ansible/lib/ansible/modules/network/ios/ios_command.py\": \"lib/ansible/modules/network/ios/ios_command.py\", \n  \"ansible/lib/ansible/modules/network/ios/ios_config.py\": \"lib/ansible/modules/network/ios/ios_config.py\", \n  \"ansible/lib/ansible/modules/network/ios/ios_facts.py\": \"lib/ansible/modules/network/ios/ios_facts.py\", \n  \"ansible/lib/ansible/modules/network/ios/ios_interface.py\": \"lib/ansible/modules/network/ios/ios_interface.py\", \n  \"ansible/lib/ansible/modules/network/ios/ios_logging.py\": \"lib/ansible/modules/network/ios/ios_logging.py\", \n  \"ansible/lib/ansible/modules/network/ios/ios_ping.py\": \"lib/ansible/modules/network/ios/ios_ping.py\", \n  \"ansible/lib/ansible/modules/network/ios/ios_static_route.py\": \"lib/ansible/modules/network/ios/ios_static_route.py\", \n  \"ansible/lib/ansible/modules/network/ios/ios_system.py\": \"lib/ansible/modules/network/ios/ios_system.py\", \n  \"ansible/lib/ansible/modules/network/ios/ios_user.py\": \"lib/ansible/modules/network/ios/ios_user.py\", \n  \"ansible/lib/ansible/modules/network/ios/ios_vrf.py\": \"lib/ansible/modules/network/ios/ios_vrf.py\", \n  \"ansible/lib/ansible/modules/network/iosxr/iosxr_banner.py\": \"lib/ansible/modules/network/iosxr/iosxr_banner.py\", \n  \"ansible/lib/ansible/modules/network/iosxr/iosxr_command.py\": \"lib/ansible/modules/network/iosxr/iosxr_command.py\", \n  \"ansible/lib/ansible/modules/network/iosxr/iosxr_config.py\": \"lib/ansible/modules/network/iosxr/iosxr_config.py\", \n  \"ansible/lib/ansible/modules/network/iosxr/iosxr_facts.py\": \"lib/ansible/modules/network/iosxr/iosxr_facts.py\", \n  \"ansible/lib/ansible/modules/network/iosxr/iosxr_interface.py\": \"lib/ansible/modules/network/iosxr/iosxr_interface.py\", \n  \"ansible/lib/ansible/modules/network/iosxr/iosxr_logging.py\": \"lib/ansible/modules/network/iosxr/iosxr_logging.py\", \n  \"ansible/lib/ansible/modules/network/iosxr/iosxr_netconf.py\": \"lib/ansible/modules/network/iosxr/iosxr_netconf.py\", \n  \"ansible/lib/ansible/modules/network/iosxr/iosxr_system.py\": \"lib/ansible/modules/network/iosxr/iosxr_system.py\", \n  \"ansible/lib/ansible/modules/network/iosxr/iosxr_user.py\": \"lib/ansible/modules/network/iosxr/iosxr_user.py\", \n  \"ansible/lib/ansible/modules/network/ironware/ironware_command.py\": \"lib/ansible/modules/network/ironware/ironware_command.py\", \n  \"ansible/lib/ansible/modules/network/junos/junos_banner.py\": \"lib/ansible/modules/network/junos/junos_banner.py\", \n  \"ansible/lib/ansible/modules/network/junos/junos_command.py\": \"lib/ansible/modules/network/junos/junos_command.py\", \n  \"ansible/lib/ansible/modules/network/junos/junos_config.py\": \"lib/ansible/modules/network/junos/junos_config.py\", \n  \"ansible/lib/ansible/modules/network/junos/junos_facts.py\": \"lib/ansible/modules/network/junos/junos_facts.py\", \n  \"ansible/lib/ansible/modules/network/junos/junos_interface.py\": \"lib/ansible/modules/network/junos/junos_interface.py\", \n  \"ansible/lib/ansible/modules/network/junos/junos_l3_interface.py\": \"lib/ansible/modules/network/junos/junos_l3_interface.py\", \n  \"ansible/lib/ansible/modules/network/junos/junos_linkagg.py\": \"lib/ansible/modules/network/junos/junos_linkagg.py\", \n  \"ansible/lib/ansible/modules/network/junos/junos_lldp.py\": \"lib/ansible/modules/network/junos/junos_lldp.py\", \n  \"ansible/lib/ansible/modules/network/junos/junos_lldp_interface.py\": \"lib/ansible/modules/network/junos/junos_lldp_interface.py\", \n  \"ansible/lib/ansible/modules/network/junos/junos_logging.py\": \"lib/ansible/modules/network/junos/junos_logging.py\", \n  \"ansible/lib/ansible/modules/network/junos/junos_netconf.py\": \"lib/ansible/modules/network/junos/junos_netconf.py\", \n  \"ansible/lib/ansible/modules/network/junos/junos_package.py\": \"lib/ansible/modules/network/junos/junos_package.py\", \n  \"ansible/lib/ansible/modules/network/junos/junos_rpc.py\": \"lib/ansible/modules/network/junos/junos_rpc.py\", \n  \"ansible/lib/ansible/modules/network/junos/junos_static_route.py\": \"lib/ansible/modules/network/junos/junos_static_route.py\", \n  \"ansible/lib/ansible/modules/network/junos/junos_system.py\": \"lib/ansible/modules/network/junos/junos_system.py\", \n  \"ansible/lib/ansible/modules/network/junos/junos_user.py\": \"lib/ansible/modules/network/junos/junos_user.py\", \n  \"ansible/lib/ansible/modules/network/junos/junos_vlan.py\": \"lib/ansible/modules/network/junos/junos_vlan.py\", \n  \"ansible/lib/ansible/modules/network/junos/junos_vrf.py\": \"lib/ansible/modules/network/junos/junos_vrf.py\", \n  \"ansible/lib/ansible/modules/network/layer2/net_l2_interface.py\": \"lib/ansible/modules/network/layer2/net_l2_interface.py\", \n  \"ansible/lib/ansible/modules/network/layer2/net_vlan.py\": \"lib/ansible/modules/network/layer2/net_vlan.py\", \n  \"ansible/lib/ansible/modules/network/layer3/net_l3_interface.py\": \"lib/ansible/modules/network/layer3/net_l3_interface.py\", \n  \"ansible/lib/ansible/modules/network/layer3/net_vrf.py\": \"lib/ansible/modules/network/layer3/net_vrf.py\", \n  \"ansible/lib/ansible/modules/network/lenovo/cnos_backup.py\": \"lib/ansible/modules/network/lenovo/cnos_backup.py\", \n  \"ansible/lib/ansible/modules/network/lenovo/cnos_bgp.py\": \"lib/ansible/modules/network/lenovo/cnos_bgp.py\", \n  \"ansible/lib/ansible/modules/network/lenovo/cnos_command.py\": \"lib/ansible/modules/network/lenovo/cnos_command.py\", \n  \"ansible/lib/ansible/modules/network/lenovo/cnos_conditional_command.py\": \"lib/ansible/modules/network/lenovo/cnos_conditional_command.py\", \n  \"ansible/lib/ansible/modules/network/lenovo/cnos_conditional_template.py\": \"lib/ansible/modules/network/lenovo/cnos_conditional_template.py\", \n  \"ansible/lib/ansible/modules/network/lenovo/cnos_factory.py\": \"lib/ansible/modules/network/lenovo/cnos_factory.py\", \n  \"ansible/lib/ansible/modules/network/lenovo/cnos_facts.py\": \"lib/ansible/modules/network/lenovo/cnos_facts.py\", \n  \"ansible/lib/ansible/modules/network/lenovo/cnos_image.py\": \"lib/ansible/modules/network/lenovo/cnos_image.py\", \n  \"ansible/lib/ansible/modules/network/lenovo/cnos_interface.py\": \"lib/ansible/modules/network/lenovo/cnos_interface.py\", \n  \"ansible/lib/ansible/modules/network/lenovo/cnos_portchannel.py\": \"lib/ansible/modules/network/lenovo/cnos_portchannel.py\", \n  \"ansible/lib/ansible/modules/network/lenovo/cnos_reload.py\": \"lib/ansible/modules/network/lenovo/cnos_reload.py\", \n  \"ansible/lib/ansible/modules/network/lenovo/cnos_rollback.py\": \"lib/ansible/modules/network/lenovo/cnos_rollback.py\", \n  \"ansible/lib/ansible/modules/network/lenovo/cnos_save.py\": \"lib/ansible/modules/network/lenovo/cnos_save.py\", \n  \"ansible/lib/ansible/modules/network/lenovo/cnos_showrun.py\": \"lib/ansible/modules/network/lenovo/cnos_showrun.py\", \n  \"ansible/lib/ansible/modules/network/lenovo/cnos_template.py\": \"lib/ansible/modules/network/lenovo/cnos_template.py\", \n  \"ansible/lib/ansible/modules/network/lenovo/cnos_vlag.py\": \"lib/ansible/modules/network/lenovo/cnos_vlag.py\", \n  \"ansible/lib/ansible/modules/network/lenovo/cnos_vlan.py\": \"lib/ansible/modules/network/lenovo/cnos_vlan.py\", \n  \"ansible/lib/ansible/modules/network/netconf/netconf_config.py\": \"lib/ansible/modules/network/netconf/netconf_config.py\", \n  \"ansible/lib/ansible/modules/network/netscaler/netscaler_cs_action.py\": \"lib/ansible/modules/network/netscaler/netscaler_cs_action.py\", \n  \"ansible/lib/ansible/modules/network/netscaler/netscaler_cs_policy.py\": \"lib/ansible/modules/network/netscaler/netscaler_cs_policy.py\", \n  \"ansible/lib/ansible/modules/network/netscaler/netscaler_cs_vserver.py\": \"lib/ansible/modules/network/netscaler/netscaler_cs_vserver.py\", \n  \"ansible/lib/ansible/modules/network/netscaler/netscaler_gslb_service.py\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_service.py\", \n  \"ansible/lib/ansible/modules/network/netscaler/netscaler_gslb_site.py\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_site.py\", \n  \"ansible/lib/ansible/modules/network/netscaler/netscaler_gslb_vserver.py\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_vserver.py\", \n  \"ansible/lib/ansible/modules/network/netscaler/netscaler_lb_monitor.py\": \"lib/ansible/modules/network/netscaler/netscaler_lb_monitor.py\", \n  \"ansible/lib/ansible/modules/network/netscaler/netscaler_lb_vserver.py\": \"lib/ansible/modules/network/netscaler/netscaler_lb_vserver.py\", \n  \"ansible/lib/ansible/modules/network/netscaler/netscaler_save_config.py\": \"lib/ansible/modules/network/netscaler/netscaler_save_config.py\", \n  \"ansible/lib/ansible/modules/network/netscaler/netscaler_server.py\": \"lib/ansible/modules/network/netscaler/netscaler_server.py\", \n  \"ansible/lib/ansible/modules/network/netscaler/netscaler_service.py\": \"lib/ansible/modules/network/netscaler/netscaler_service.py\", \n  \"ansible/lib/ansible/modules/network/netscaler/netscaler_servicegroup.py\": \"lib/ansible/modules/network/netscaler/netscaler_servicegroup.py\", \n  \"ansible/lib/ansible/modules/network/netscaler/netscaler_ssl_certkey.py\": \"lib/ansible/modules/network/netscaler/netscaler_ssl_certkey.py\", \n  \"ansible/lib/ansible/modules/network/netvisor/pn_cluster.py\": \"lib/ansible/modules/network/netvisor/pn_cluster.py\", \n  \"ansible/lib/ansible/modules/network/netvisor/pn_ospf.py\": \"lib/ansible/modules/network/netvisor/pn_ospf.py\", \n  \"ansible/lib/ansible/modules/network/netvisor/pn_ospfarea.py\": \"lib/ansible/modules/network/netvisor/pn_ospfarea.py\", \n  \"ansible/lib/ansible/modules/network/netvisor/pn_show.py\": \"lib/ansible/modules/network/netvisor/pn_show.py\", \n  \"ansible/lib/ansible/modules/network/netvisor/pn_trunk.py\": \"lib/ansible/modules/network/netvisor/pn_trunk.py\", \n  \"ansible/lib/ansible/modules/network/netvisor/pn_vlag.py\": \"lib/ansible/modules/network/netvisor/pn_vlag.py\", \n  \"ansible/lib/ansible/modules/network/netvisor/pn_vlan.py\": \"lib/ansible/modules/network/netvisor/pn_vlan.py\", \n  \"ansible/lib/ansible/modules/network/netvisor/pn_vrouter.py\": \"lib/ansible/modules/network/netvisor/pn_vrouter.py\", \n  \"ansible/lib/ansible/modules/network/netvisor/pn_vrouterbgp.py\": \"lib/ansible/modules/network/netvisor/pn_vrouterbgp.py\", \n  \"ansible/lib/ansible/modules/network/netvisor/pn_vrouterif.py\": \"lib/ansible/modules/network/netvisor/pn_vrouterif.py\", \n  \"ansible/lib/ansible/modules/network/netvisor/pn_vrouterlbif.py\": \"lib/ansible/modules/network/netvisor/pn_vrouterlbif.py\", \n  \"ansible/lib/ansible/modules/network/nuage/nuage_vspk.py\": \"lib/ansible/modules/network/nuage/nuage_vspk.py\", \n  \"ansible/lib/ansible/modules/network/nxos/_nxos_mtu.py\": \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_aaa_server.py\": \"lib/ansible/modules/network/nxos/nxos_aaa_server.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_aaa_server_host.py\": \"lib/ansible/modules/network/nxos/nxos_aaa_server_host.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_acl.py\": \"lib/ansible/modules/network/nxos/nxos_acl.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_acl_interface.py\": \"lib/ansible/modules/network/nxos/nxos_acl_interface.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_banner.py\": \"lib/ansible/modules/network/nxos/nxos_banner.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_bgp.py\": \"lib/ansible/modules/network/nxos/nxos_bgp.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_bgp_af.py\": \"lib/ansible/modules/network/nxos/nxos_bgp_af.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_bgp_neighbor.py\": \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_bgp_neighbor_af.py\": \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor_af.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_command.py\": \"lib/ansible/modules/network/nxos/nxos_command.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_config.py\": \"lib/ansible/modules/network/nxos/nxos_config.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_evpn_global.py\": \"lib/ansible/modules/network/nxos/nxos_evpn_global.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_evpn_vni.py\": \"lib/ansible/modules/network/nxos/nxos_evpn_vni.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_facts.py\": \"lib/ansible/modules/network/nxos/nxos_facts.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_feature.py\": \"lib/ansible/modules/network/nxos/nxos_feature.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_file_copy.py\": \"lib/ansible/modules/network/nxos/nxos_file_copy.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_gir.py\": \"lib/ansible/modules/network/nxos/nxos_gir.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_gir_profile_management.py\": \"lib/ansible/modules/network/nxos/nxos_gir_profile_management.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_hsrp.py\": [\n    \"lib/ansible/modules/network/nxos/nxos_hsrp.py\"\n  ], \n  \"ansible/lib/ansible/modules/network/nxos/nxos_igmp.py\": \"lib/ansible/modules/network/nxos/nxos_igmp.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_igmp_interface.py\": \"lib/ansible/modules/network/nxos/nxos_igmp_interface.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_igmp_snooping.py\": \"lib/ansible/modules/network/nxos/nxos_igmp_snooping.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_install_os.py\": \"lib/ansible/modules/network/nxos/nxos_install_os.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_interface.py\": \"lib/ansible/modules/network/nxos/nxos_interface.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_interface_ospf.py\": \"lib/ansible/modules/network/nxos/nxos_interface_ospf.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_ip_interface.py\": \"lib/ansible/modules/network/nxos/nxos_ip_interface.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_logging.py\": \"lib/ansible/modules/network/nxos/nxos_logging.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_mtu.py\": \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_ntp.py\": \"lib/ansible/modules/network/nxos/nxos_ntp.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_ntp_auth.py\": \"lib/ansible/modules/network/nxos/nxos_ntp_auth.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_ntp_options.py\": \"lib/ansible/modules/network/nxos/nxos_ntp_options.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_nxapi.py\": \"lib/ansible/modules/network/nxos/nxos_nxapi.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_ospf.py\": \"lib/ansible/modules/network/nxos/nxos_ospf.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_ospf_vrf.py\": \"lib/ansible/modules/network/nxos/nxos_ospf_vrf.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_overlay_global.py\": \"lib/ansible/modules/network/nxos/nxos_overlay_global.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_pim.py\": \"lib/ansible/modules/network/nxos/nxos_pim.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_pim_interface.py\": \"lib/ansible/modules/network/nxos/nxos_pim_interface.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_pim_rp_address.py\": \"lib/ansible/modules/network/nxos/nxos_pim_rp_address.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_ping.py\": \"lib/ansible/modules/network/nxos/nxos_ping.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_portchannel.py\": \"lib/ansible/modules/network/nxos/nxos_portchannel.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_reboot.py\": \"lib/ansible/modules/network/nxos/nxos_reboot.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_rollback.py\": \"lib/ansible/modules/network/nxos/nxos_rollback.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_smu.py\": \"lib/ansible/modules/network/nxos/nxos_smu.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_snapshot.py\": \"lib/ansible/modules/network/nxos/nxos_snapshot.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_snmp_community.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_community.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_snmp_contact.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_contact.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_snmp_host.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_host.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_snmp_location.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_location.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_snmp_traps.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_traps.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_snmp_user.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_user.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_static_route.py\": \"lib/ansible/modules/network/nxos/nxos_static_route.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_switchport.py\": \"lib/ansible/modules/network/nxos/nxos_switchport.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_system.py\": \"lib/ansible/modules/network/nxos/nxos_system.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_udld.py\": \"lib/ansible/modules/network/nxos/nxos_udld.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_udld_interface.py\": \"lib/ansible/modules/network/nxos/nxos_udld_interface.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_user.py\": \"lib/ansible/modules/network/nxos/nxos_user.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_vlan.py\": \"lib/ansible/modules/network/nxos/nxos_vlan.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_vpc.py\": \"lib/ansible/modules/network/nxos/nxos_vpc.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_vpc_interface.py\": \"lib/ansible/modules/network/nxos/nxos_vpc_interface.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_vrf.py\": \"lib/ansible/modules/network/nxos/nxos_vrf.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_vrf_af.py\": \"lib/ansible/modules/network/nxos/nxos_vrf_af.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_vrf_interface.py\": \"lib/ansible/modules/network/nxos/nxos_vrf_interface.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_vrrp.py\": \"lib/ansible/modules/network/nxos/nxos_vrrp.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_vtp_domain.py\": \"lib/ansible/modules/network/nxos/nxos_vtp_domain.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_vtp_password.py\": \"lib/ansible/modules/network/nxos/nxos_vtp_password.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_vtp_version.py\": \"lib/ansible/modules/network/nxos/nxos_vtp_version.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_vxlan_vtep.py\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep.py\", \n  \"ansible/lib/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\", \n  \"ansible/lib/ansible/modules/network/ordnance/ordnance_config.py\": \"lib/ansible/modules/network/ordnance/ordnance_config.py\", \n  \"ansible/lib/ansible/modules/network/ordnance/ordnance_facts.py\": \"lib/ansible/modules/network/ordnance/ordnance_facts.py\", \n  \"ansible/lib/ansible/modules/network/ovs/openvswitch_bridge.py\": \"lib/ansible/modules/network/ovs/openvswitch_bridge.py\", \n  \"ansible/lib/ansible/modules/network/ovs/openvswitch_db.py\": \"lib/ansible/modules/network/ovs/openvswitch_db.py\", \n  \"ansible/lib/ansible/modules/network/ovs/openvswitch_port.py\": \"lib/ansible/modules/network/ovs/openvswitch_port.py\", \n  \"ansible/lib/ansible/modules/network/panos/panos_admin.py\": \"lib/ansible/modules/network/panos/panos_admin.py\", \n  \"ansible/lib/ansible/modules/network/panos/panos_admpwd.py\": \"lib/ansible/modules/network/panos/panos_admpwd.py\", \n  \"ansible/lib/ansible/modules/network/panos/panos_cert_gen_ssh.py\": \"lib/ansible/modules/network/panos/panos_cert_gen_ssh.py\", \n  \"ansible/lib/ansible/modules/network/panos/panos_check.py\": \"lib/ansible/modules/network/panos/panos_check.py\", \n  \"ansible/lib/ansible/modules/network/panos/panos_commit.py\": \"lib/ansible/modules/network/panos/panos_commit.py\", \n  \"ansible/lib/ansible/modules/network/panos/panos_dag.py\": \"lib/ansible/modules/network/panos/panos_dag.py\", \n  \"ansible/lib/ansible/modules/network/panos/panos_import.py\": \"lib/ansible/modules/network/panos/panos_import.py\", \n  \"ansible/lib/ansible/modules/network/panos/panos_interface.py\": \"lib/ansible/modules/network/panos/panos_interface.py\", \n  \"ansible/lib/ansible/modules/network/panos/panos_lic.py\": \"lib/ansible/modules/network/panos/panos_lic.py\", \n  \"ansible/lib/ansible/modules/network/panos/panos_loadcfg.py\": \"lib/ansible/modules/network/panos/panos_loadcfg.py\", \n  \"ansible/lib/ansible/modules/network/panos/panos_mgtconfig.py\": \"lib/ansible/modules/network/panos/panos_mgtconfig.py\", \n  \"ansible/lib/ansible/modules/network/panos/panos_nat_policy.py\": \"lib/ansible/modules/network/panos/panos_nat_policy.py\", \n  \"ansible/lib/ansible/modules/network/panos/panos_nat_rule.py\": \"lib/ansible/modules/network/panos/panos_nat_rule.py\", \n  \"ansible/lib/ansible/modules/network/panos/panos_object.py\": \"lib/ansible/modules/network/panos/panos_object.py\", \n  \"ansible/lib/ansible/modules/network/panos/panos_pg.py\": \"lib/ansible/modules/network/panos/panos_pg.py\", \n  \"ansible/lib/ansible/modules/network/panos/panos_restart.py\": \"lib/ansible/modules/network/panos/panos_restart.py\", \n  \"ansible/lib/ansible/modules/network/panos/panos_sag.py\": \"lib/ansible/modules/network/panos/panos_sag.py\", \n  \"ansible/lib/ansible/modules/network/panos/panos_security_policy.py\": \"lib/ansible/modules/network/panos/panos_security_policy.py\", \n  \"ansible/lib/ansible/modules/network/panos/panos_security_rule.py\": \"lib/ansible/modules/network/panos/panos_security_rule.py\", \n  \"ansible/lib/ansible/modules/network/protocol/net_lldp.py\": \"lib/ansible/modules/network/protocol/net_lldp.py\", \n  \"ansible/lib/ansible/modules/network/radware/vdirect_file.py\": \"lib/ansible/modules/network/radware/vdirect_file.py\", \n  \"ansible/lib/ansible/modules/network/routing/net_static_route.py\": \"lib/ansible/modules/network/routing/net_static_route.py\", \n  \"ansible/lib/ansible/modules/network/sros/sros_command.py\": \"lib/ansible/modules/network/sros/sros_command.py\", \n  \"ansible/lib/ansible/modules/network/sros/sros_config.py\": \"lib/ansible/modules/network/sros/sros_config.py\", \n  \"ansible/lib/ansible/modules/network/sros/sros_rollback.py\": \"lib/ansible/modules/network/sros/sros_rollback.py\", \n  \"ansible/lib/ansible/modules/network/system/net_banner.py\": \"lib/ansible/modules/network/system/net_banner.py\", \n  \"ansible/lib/ansible/modules/network/system/net_logging.py\": \"lib/ansible/modules/network/system/net_logging.py\", \n  \"ansible/lib/ansible/modules/network/system/net_ping.py\": \"lib/ansible/modules/network/system/net_ping.py\", \n  \"ansible/lib/ansible/modules/network/system/net_system.py\": \"lib/ansible/modules/network/system/net_system.py\", \n  \"ansible/lib/ansible/modules/network/system/net_user.py\": \"lib/ansible/modules/network/system/net_user.py\", \n  \"ansible/lib/ansible/modules/network/vyos/vyos_banner.py\": \"lib/ansible/modules/network/vyos/vyos_banner.py\", \n  \"ansible/lib/ansible/modules/network/vyos/vyos_command.py\": \"lib/ansible/modules/network/vyos/vyos_command.py\", \n  \"ansible/lib/ansible/modules/network/vyos/vyos_config.py\": \"lib/ansible/modules/network/vyos/vyos_config.py\", \n  \"ansible/lib/ansible/modules/network/vyos/vyos_facts.py\": \"lib/ansible/modules/network/vyos/vyos_facts.py\", \n  \"ansible/lib/ansible/modules/network/vyos/vyos_interface.py\": \"lib/ansible/modules/network/vyos/vyos_interface.py\", \n  \"ansible/lib/ansible/modules/network/vyos/vyos_l3_interface.py\": \"lib/ansible/modules/network/vyos/vyos_l3_interface.py\", \n  \"ansible/lib/ansible/modules/network/vyos/vyos_linkagg.py\": \"lib/ansible/modules/network/vyos/vyos_linkagg.py\", \n  \"ansible/lib/ansible/modules/network/vyos/vyos_lldp.py\": \"lib/ansible/modules/network/vyos/vyos_lldp.py\", \n  \"ansible/lib/ansible/modules/network/vyos/vyos_lldp_interface.py\": \"lib/ansible/modules/network/vyos/vyos_lldp_interface.py\", \n  \"ansible/lib/ansible/modules/network/vyos/vyos_logging.py\": \"lib/ansible/modules/network/vyos/vyos_logging.py\", \n  \"ansible/lib/ansible/modules/network/vyos/vyos_static_route.py\": \"lib/ansible/modules/network/vyos/vyos_static_route.py\", \n  \"ansible/lib/ansible/modules/network/vyos/vyos_system.py\": \"lib/ansible/modules/network/vyos/vyos_system.py\", \n  \"ansible/lib/ansible/modules/network/vyos/vyos_user.py\": \"lib/ansible/modules/network/vyos/vyos_user.py\", \n  \"ansible/lib/ansible/modules/network/vyos/vyos_vlan.py\": \"lib/ansible/modules/network/vyos/vyos_vlan.py\", \n  \"ansible/lib/ansible/modules/notification/bearychat.py\": \"lib/ansible/modules/notification/bearychat.py\", \n  \"ansible/lib/ansible/modules/notification/campfire.py\": \"lib/ansible/modules/notification/campfire.py\", \n  \"ansible/lib/ansible/modules/notification/catapult.py\": \"lib/ansible/modules/notification/catapult.py\", \n  \"ansible/lib/ansible/modules/notification/cisco_spark.py\": \"lib/ansible/modules/notification/cisco_spark.py\", \n  \"ansible/lib/ansible/modules/notification/flowdock.py\": \"lib/ansible/modules/notification/flowdock.py\", \n  \"ansible/lib/ansible/modules/notification/grove.py\": \"lib/ansible/modules/notification/grove.py\", \n  \"ansible/lib/ansible/modules/notification/hall.py\": \"lib/ansible/modules/notification/hall.py\", \n  \"ansible/lib/ansible/modules/notification/hipchat.py\": \"lib/ansible/modules/notification/hipchat.py\", \n  \"ansible/lib/ansible/modules/notification/irc.py\": \"lib/ansible/modules/notification/irc.py\", \n  \"ansible/lib/ansible/modules/notification/jabber.py\": \"lib/ansible/modules/notification/jabber.py\", \n  \"ansible/lib/ansible/modules/notification/mail.py\": \"lib/ansible/modules/notification/mail.py\", \n  \"ansible/lib/ansible/modules/notification/mattermost.py\": \"lib/ansible/modules/notification/mattermost.py\", \n  \"ansible/lib/ansible/modules/notification/mqtt.py\": \"lib/ansible/modules/notification/mqtt.py\", \n  \"ansible/lib/ansible/modules/notification/nexmo.py\": \"lib/ansible/modules/notification/nexmo.py\", \n  \"ansible/lib/ansible/modules/notification/office_365_connector_card.py\": \"lib/ansible/modules/notification/office_365_connector_card.py\", \n  \"ansible/lib/ansible/modules/notification/osx_say.py\": \"lib/ansible/modules/notification/osx_say.py\", \n  \"ansible/lib/ansible/modules/notification/pushbullet.py\": \"lib/ansible/modules/notification/pushbullet.py\", \n  \"ansible/lib/ansible/modules/notification/pushover.py\": \"lib/ansible/modules/notification/pushover.py\", \n  \"ansible/lib/ansible/modules/notification/rocketchat.py\": \"lib/ansible/modules/notification/rocketchat.py\", \n  \"ansible/lib/ansible/modules/notification/sendgrid.py\": \"lib/ansible/modules/notification/sendgrid.py\", \n  \"ansible/lib/ansible/modules/notification/slack.py\": \"lib/ansible/modules/notification/slack.py\", \n  \"ansible/lib/ansible/modules/notification/snow_record.py\": \"lib/ansible/modules/notification/snow_record.py\", \n  \"ansible/lib/ansible/modules/notification/syslogger.py\": \"lib/ansible/modules/notification/syslogger.py\", \n  \"ansible/lib/ansible/modules/notification/telegram.py\": \"lib/ansible/modules/notification/telegram.py\", \n  \"ansible/lib/ansible/modules/notification/twilio.py\": \"lib/ansible/modules/notification/twilio.py\", \n  \"ansible/lib/ansible/modules/notification/typetalk.py\": \"lib/ansible/modules/notification/typetalk.py\", \n  \"ansible/lib/ansible/modules/packaging/language/bower.py\": \"lib/ansible/modules/packaging/language/bower.py\", \n  \"ansible/lib/ansible/modules/packaging/language/bundler.py\": \"lib/ansible/modules/packaging/language/bundler.py\", \n  \"ansible/lib/ansible/modules/packaging/language/composer.py\": \"lib/ansible/modules/packaging/language/composer.py\", \n  \"ansible/lib/ansible/modules/packaging/language/cpanm.py\": \"lib/ansible/modules/packaging/language/cpanm.py\", \n  \"ansible/lib/ansible/modules/packaging/language/easy_install.py\": \"lib/ansible/modules/packaging/language/easy_install.py\", \n  \"ansible/lib/ansible/modules/packaging/language/gem.py\": \"lib/ansible/modules/packaging/language/gem.py\", \n  \"ansible/lib/ansible/modules/packaging/language/maven_artifact.py\": \"lib/ansible/modules/packaging/language/maven_artifact.py\", \n  \"ansible/lib/ansible/modules/packaging/language/npm.py\": \"lib/ansible/modules/packaging/language/npm.py\", \n  \"ansible/lib/ansible/modules/packaging/language/pear.py\": \"lib/ansible/modules/packaging/language/pear.py\", \n  \"ansible/lib/ansible/modules/packaging/language/pip.py\": \"lib/ansible/modules/packaging/language/pip.py\", \n  \"ansible/lib/ansible/modules/packaging/os/apk.py\": \"lib/ansible/modules/packaging/os/apk.py\", \n  \"ansible/lib/ansible/modules/packaging/os/apt.py\": \"lib/ansible/modules/packaging/os/apt.py\", \n  \"ansible/lib/ansible/modules/packaging/os/apt_key.py\": \"lib/ansible/modules/packaging/os/apt_key.py\", \n  \"ansible/lib/ansible/modules/packaging/os/apt_repository.py\": \"lib/ansible/modules/packaging/os/apt_repository.py\", \n  \"ansible/lib/ansible/modules/packaging/os/apt_rpm.py\": \"lib/ansible/modules/packaging/os/apt_rpm.py\", \n  \"ansible/lib/ansible/modules/packaging/os/dnf.py\": \"lib/ansible/modules/packaging/os/dnf.py\", \n  \"ansible/lib/ansible/modules/packaging/os/dpkg_selections.py\": \"lib/ansible/modules/packaging/os/dpkg_selections.py\", \n  \"ansible/lib/ansible/modules/packaging/os/homebrew.py\": \"lib/ansible/modules/packaging/os/homebrew.py\", \n  \"ansible/lib/ansible/modules/packaging/os/homebrew_cask.py\": \"lib/ansible/modules/packaging/os/homebrew_cask.py\", \n  \"ansible/lib/ansible/modules/packaging/os/homebrew_tap.py\": \"lib/ansible/modules/packaging/os/homebrew_tap.py\", \n  \"ansible/lib/ansible/modules/packaging/os/layman.py\": \"lib/ansible/modules/packaging/os/layman.py\", \n  \"ansible/lib/ansible/modules/packaging/os/macports.py\": \"lib/ansible/modules/packaging/os/macports.py\", \n  \"ansible/lib/ansible/modules/packaging/os/openbsd_pkg.py\": \"lib/ansible/modules/packaging/os/openbsd_pkg.py\", \n  \"ansible/lib/ansible/modules/packaging/os/opkg.py\": \"lib/ansible/modules/packaging/os/opkg.py\", \n  \"ansible/lib/ansible/modules/packaging/os/package.py\": \"lib/ansible/modules/packaging/os/package.py\", \n  \"ansible/lib/ansible/modules/packaging/os/pacman.py\": \"lib/ansible/modules/packaging/os/pacman.py\", \n  \"ansible/lib/ansible/modules/packaging/os/pkg5.py\": \"lib/ansible/modules/packaging/os/pkg5.py\", \n  \"ansible/lib/ansible/modules/packaging/os/pkg5_publisher.py\": \"lib/ansible/modules/packaging/os/pkg5_publisher.py\", \n  \"ansible/lib/ansible/modules/packaging/os/pkgin.py\": \"lib/ansible/modules/packaging/os/pkgin.py\", \n  \"ansible/lib/ansible/modules/packaging/os/pkgng.py\": \"lib/ansible/modules/packaging/os/pkgng.py\", \n  \"ansible/lib/ansible/modules/packaging/os/pkgutil.py\": \"lib/ansible/modules/packaging/os/pkgutil.py\", \n  \"ansible/lib/ansible/modules/packaging/os/portage.py\": \"lib/ansible/modules/packaging/os/portage.py\", \n  \"ansible/lib/ansible/modules/packaging/os/portinstall.py\": \"lib/ansible/modules/packaging/os/portinstall.py\", \n  \"ansible/lib/ansible/modules/packaging/os/pulp_repo.py\": \"lib/ansible/modules/packaging/os/pulp_repo.py\", \n  \"ansible/lib/ansible/modules/packaging/os/redhat_subscription.py\": \"lib/ansible/modules/packaging/os/redhat_subscription.py\", \n  \"ansible/lib/ansible/modules/packaging/os/rhn_channel.py\": \"lib/ansible/modules/packaging/os/rhn_channel.py\", \n  \"ansible/lib/ansible/modules/packaging/os/rhn_register.py\": \"lib/ansible/modules/packaging/os/rhn_register.py\", \n  \"ansible/lib/ansible/modules/packaging/os/rpm_key.py\": \"lib/ansible/modules/packaging/os/rpm_key.py\", \n  \"ansible/lib/ansible/modules/packaging/os/slackpkg.py\": \"lib/ansible/modules/packaging/os/slackpkg.py\", \n  \"ansible/lib/ansible/modules/packaging/os/sorcery.py\": \"lib/ansible/modules/packaging/os/sorcery.py\", \n  \"ansible/lib/ansible/modules/packaging/os/svr4pkg.py\": \"lib/ansible/modules/packaging/os/svr4pkg.py\", \n  \"ansible/lib/ansible/modules/packaging/os/swdepot.py\": \"lib/ansible/modules/packaging/os/swdepot.py\", \n  \"ansible/lib/ansible/modules/packaging/os/swupd.py\": \"lib/ansible/modules/packaging/os/swupd.py\", \n  \"ansible/lib/ansible/modules/packaging/os/urpmi.py\": \"lib/ansible/modules/packaging/os/urpmi.py\", \n  \"ansible/lib/ansible/modules/packaging/os/xbps.py\": \"lib/ansible/modules/packaging/os/xbps.py\", \n  \"ansible/lib/ansible/modules/packaging/os/yum.py\": \"lib/ansible/modules/packaging/os/yum.py\", \n  \"ansible/lib/ansible/modules/packaging/os/yum_repository.py\": \"lib/ansible/modules/packaging/os/yum_repository.py\", \n  \"ansible/lib/ansible/modules/packaging/os/zypper.py\": \"lib/ansible/modules/packaging/os/zypper.py\", \n  \"ansible/lib/ansible/modules/packaging/os/zypper_repository.py\": \"lib/ansible/modules/packaging/os/zypper_repository.py\", \n  \"ansible/lib/ansible/modules/remote_management/foreman/foreman.py\": \"lib/ansible/modules/remote_management/foreman/foreman.py\", \n  \"ansible/lib/ansible/modules/remote_management/foreman/katello.py\": \"lib/ansible/modules/remote_management/foreman/katello.py\", \n  \"ansible/lib/ansible/modules/remote_management/hpilo/hpilo_boot.py\": \"lib/ansible/modules/remote_management/hpilo/hpilo_boot.py\", \n  \"ansible/lib/ansible/modules/remote_management/hpilo/hpilo_facts.py\": \"lib/ansible/modules/remote_management/hpilo/hpilo_facts.py\", \n  \"ansible/lib/ansible/modules/remote_management/hpilo/hponcfg.py\": \"lib/ansible/modules/remote_management/hpilo/hponcfg.py\", \n  \"ansible/lib/ansible/modules/remote_management/imc/imc_rest.py\": \"lib/ansible/modules/remote_management/imc/imc_rest.py\", \n  \"ansible/lib/ansible/modules/remote_management/ipmi/ipmi_boot.py\": \"lib/ansible/modules/remote_management/ipmi/ipmi_boot.py\", \n  \"ansible/lib/ansible/modules/remote_management/ipmi/ipmi_power.py\": \"lib/ansible/modules/remote_management/ipmi/ipmi_power.py\", \n  \"ansible/lib/ansible/modules/remote_management/manageiq/manageiq_provider.py\": \"lib/ansible/modules/remote_management/manageiq/manageiq_provider.py\", \n  \"ansible/lib/ansible/modules/remote_management/manageiq/manageiq_tags.py\": \"lib/ansible/modules/remote_management/manageiq/manageiq_tags.py\", \n  \"ansible/lib/ansible/modules/remote_management/manageiq/manageiq_user.py\": \"lib/ansible/modules/remote_management/manageiq/manageiq_user.py\", \n  \"ansible/lib/ansible/modules/remote_management/oneview/oneview_enclosure_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_enclosure_facts.py\", \n  \"ansible/lib/ansible/modules/remote_management/oneview/oneview_ethernet_network.py\": \"lib/ansible/modules/remote_management/oneview/oneview_ethernet_network.py\", \n  \"ansible/lib/ansible/modules/remote_management/oneview/oneview_ethernet_network_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_ethernet_network_facts.py\", \n  \"ansible/lib/ansible/modules/remote_management/oneview/oneview_fc_network.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fc_network.py\", \n  \"ansible/lib/ansible/modules/remote_management/oneview/oneview_fc_network_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fc_network_facts.py\", \n  \"ansible/lib/ansible/modules/remote_management/oneview/oneview_fcoe_network.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fcoe_network.py\", \n  \"ansible/lib/ansible/modules/remote_management/oneview/oneview_fcoe_network_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fcoe_network_facts.py\", \n  \"ansible/lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group.py\": \"lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group.py\", \n  \"ansible/lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group_facts.py\", \n  \"ansible/lib/ansible/modules/remote_management/oneview/oneview_network_set.py\": \"lib/ansible/modules/remote_management/oneview/oneview_network_set.py\", \n  \"ansible/lib/ansible/modules/remote_management/oneview/oneview_network_set_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_network_set_facts.py\", \n  \"ansible/lib/ansible/modules/remote_management/oneview/oneview_san_manager.py\": \"lib/ansible/modules/remote_management/oneview/oneview_san_manager.py\", \n  \"ansible/lib/ansible/modules/remote_management/oneview/oneview_san_manager_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_san_manager_facts.py\", \n  \"ansible/lib/ansible/modules/remote_management/stacki/stacki_host.py\": \"lib/ansible/modules/remote_management/stacki/stacki_host.py\", \n  \"ansible/lib/ansible/modules/remote_management/wakeonlan.py\": \"lib/ansible/modules/remote_management/wakeonlan.py\", \n  \"ansible/lib/ansible/modules/source_control/bzr.py\": \"lib/ansible/modules/source_control/bzr.py\", \n  \"ansible/lib/ansible/modules/source_control/git.py\": \"lib/ansible/modules/source_control/git.py\", \n  \"ansible/lib/ansible/modules/source_control/git_config.py\": \"lib/ansible/modules/source_control/git_config.py\", \n  \"ansible/lib/ansible/modules/source_control/github_deploy_key.py\": \"lib/ansible/modules/source_control/github_deploy_key.py\", \n  \"ansible/lib/ansible/modules/source_control/github_hooks.py\": \"lib/ansible/modules/source_control/github_hooks.py\", \n  \"ansible/lib/ansible/modules/source_control/github_issue.py\": \"lib/ansible/modules/source_control/github_issue.py\", \n  \"ansible/lib/ansible/modules/source_control/github_key.py\": \"lib/ansible/modules/source_control/github_key.py\", \n  \"ansible/lib/ansible/modules/source_control/github_release.py\": \"lib/ansible/modules/source_control/github_release.py\", \n  \"ansible/lib/ansible/modules/source_control/gitlab_group.py\": \"lib/ansible/modules/source_control/gitlab_group.py\", \n  \"ansible/lib/ansible/modules/source_control/gitlab_project.py\": \"lib/ansible/modules/source_control/gitlab_project.py\", \n  \"ansible/lib/ansible/modules/source_control/gitlab_user.py\": \"lib/ansible/modules/source_control/gitlab_user.py\", \n  \"ansible/lib/ansible/modules/source_control/hg.py\": \"lib/ansible/modules/source_control/hg.py\", \n  \"ansible/lib/ansible/modules/source_control/subversion.py\": \"lib/ansible/modules/source_control/subversion.py\", \n  \"ansible/lib/ansible/modules/storage/infinidat/infini_export.py\": \"lib/ansible/modules/storage/infinidat/infini_export.py\", \n  \"ansible/lib/ansible/modules/storage/infinidat/infini_export_client.py\": \"lib/ansible/modules/storage/infinidat/infini_export_client.py\", \n  \"ansible/lib/ansible/modules/storage/infinidat/infini_fs.py\": \"lib/ansible/modules/storage/infinidat/infini_fs.py\", \n  \"ansible/lib/ansible/modules/storage/infinidat/infini_host.py\": \"lib/ansible/modules/storage/infinidat/infini_host.py\", \n  \"ansible/lib/ansible/modules/storage/infinidat/infini_pool.py\": \"lib/ansible/modules/storage/infinidat/infini_pool.py\", \n  \"ansible/lib/ansible/modules/storage/infinidat/infini_vol.py\": \"lib/ansible/modules/storage/infinidat/infini_vol.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/na_cdot_aggregate.py\": \"lib/ansible/modules/storage/netapp/na_cdot_aggregate.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/na_cdot_license.py\": \"lib/ansible/modules/storage/netapp/na_cdot_license.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/na_cdot_lun.py\": \"lib/ansible/modules/storage/netapp/na_cdot_lun.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/na_cdot_qtree.py\": \"lib/ansible/modules/storage/netapp/na_cdot_qtree.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/na_cdot_svm.py\": \"lib/ansible/modules/storage/netapp/na_cdot_svm.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/na_cdot_user.py\": \"lib/ansible/modules/storage/netapp/na_cdot_user.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/na_cdot_user_role.py\": \"lib/ansible/modules/storage/netapp/na_cdot_user_role.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/na_cdot_volume.py\": \"lib/ansible/modules/storage/netapp/na_cdot_volume.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/netapp_e_amg.py\": \"lib/ansible/modules/storage/netapp/netapp_e_amg.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/netapp_e_amg_role.py\": \"lib/ansible/modules/storage/netapp/netapp_e_amg_role.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/netapp_e_amg_sync.py\": \"lib/ansible/modules/storage/netapp/netapp_e_amg_sync.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/netapp_e_auth.py\": \"lib/ansible/modules/storage/netapp/netapp_e_auth.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/netapp_e_facts.py\": \"lib/ansible/modules/storage/netapp/netapp_e_facts.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/netapp_e_flashcache.py\": \"lib/ansible/modules/storage/netapp/netapp_e_flashcache.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/netapp_e_host.py\": \"lib/ansible/modules/storage/netapp/netapp_e_host.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/netapp_e_hostgroup.py\": \"lib/ansible/modules/storage/netapp/netapp_e_hostgroup.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/netapp_e_lun_mapping.py\": \"lib/ansible/modules/storage/netapp/netapp_e_lun_mapping.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/netapp_e_snapshot_group.py\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_group.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/netapp_e_snapshot_images.py\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_images.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/netapp_e_snapshot_volume.py\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_volume.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/netapp_e_storage_system.py\": \"lib/ansible/modules/storage/netapp/netapp_e_storage_system.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/netapp_e_storagepool.py\": \"lib/ansible/modules/storage/netapp/netapp_e_storagepool.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/netapp_e_volume.py\": \"lib/ansible/modules/storage/netapp/netapp_e_volume.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/netapp_e_volume_copy.py\": \"lib/ansible/modules/storage/netapp/netapp_e_volume_copy.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/sf_account_manager.py\": \"lib/ansible/modules/storage/netapp/sf_account_manager.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/sf_check_connections.py\": \"lib/ansible/modules/storage/netapp/sf_check_connections.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/sf_snapshot_schedule_manager.py\": \"lib/ansible/modules/storage/netapp/sf_snapshot_schedule_manager.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/sf_volume_access_group_manager.py\": \"lib/ansible/modules/storage/netapp/sf_volume_access_group_manager.py\", \n  \"ansible/lib/ansible/modules/storage/netapp/sf_volume_manager.py\": \"lib/ansible/modules/storage/netapp/sf_volume_manager.py\", \n  \"ansible/lib/ansible/modules/storage/purestorage/purefa_hg.py\": \"lib/ansible/modules/storage/purestorage/purefa_hg.py\", \n  \"ansible/lib/ansible/modules/storage/purestorage/purefa_host.py\": \"lib/ansible/modules/storage/purestorage/purefa_host.py\", \n  \"ansible/lib/ansible/modules/storage/purestorage/purefa_pg.py\": \"lib/ansible/modules/storage/purestorage/purefa_pg.py\", \n  \"ansible/lib/ansible/modules/storage/purestorage/purefa_snap.py\": \"lib/ansible/modules/storage/purestorage/purefa_snap.py\", \n  \"ansible/lib/ansible/modules/storage/purestorage/purefa_volume.py\": \"lib/ansible/modules/storage/purestorage/purefa_volume.py\", \n  \"ansible/lib/ansible/modules/storage/zfs/zfs.py\": \"lib/ansible/modules/storage/zfs/zfs.py\", \n  \"ansible/lib/ansible/modules/storage/zfs/zfs_facts.py\": \"lib/ansible/modules/storage/zfs/zfs_facts.py\", \n  \"ansible/lib/ansible/modules/storage/zfs/zpool_facts.py\": \"lib/ansible/modules/storage/zfs/zpool_facts.py\", \n  \"ansible/lib/ansible/modules/system/aix_inittab.py\": \"lib/ansible/modules/system/aix_inittab.py\", \n  \"ansible/lib/ansible/modules/system/aix_lvol.py\": \"lib/ansible/modules/system/aix_lvol.py\", \n  \"ansible/lib/ansible/modules/system/alternatives.py\": \"lib/ansible/modules/system/alternatives.py\", \n  \"ansible/lib/ansible/modules/system/at.py\": \"lib/ansible/modules/system/at.py\", \n  \"ansible/lib/ansible/modules/system/authorized_key.py\": \"lib/ansible/modules/system/authorized_key.py\", \n  \"ansible/lib/ansible/modules/system/awall.py\": \"lib/ansible/modules/system/awall.py\", \n  \"ansible/lib/ansible/modules/system/beadm.py\": \"lib/ansible/modules/system/beadm.py\", \n  \"ansible/lib/ansible/modules/system/capabilities.py\": \"lib/ansible/modules/system/capabilities.py\", \n  \"ansible/lib/ansible/modules/system/cron.py\": \"lib/ansible/modules/system/cron.py\", \n  \"ansible/lib/ansible/modules/system/cronvar.py\": \"lib/ansible/modules/system/cronvar.py\", \n  \"ansible/lib/ansible/modules/system/crypttab.py\": \"lib/ansible/modules/system/crypttab.py\", \n  \"ansible/lib/ansible/modules/system/dconf.py\": \"lib/ansible/modules/system/dconf.py\", \n  \"ansible/lib/ansible/modules/system/debconf.py\": \"lib/ansible/modules/system/debconf.py\", \n  \"ansible/lib/ansible/modules/system/facter.py\": \"lib/ansible/modules/system/facter.py\", \n  \"ansible/lib/ansible/modules/system/filesystem.py\": \"lib/ansible/modules/system/filesystem.py\", \n  \"ansible/lib/ansible/modules/system/firewalld.py\": \"lib/ansible/modules/system/firewalld.py\", \n  \"ansible/lib/ansible/modules/system/gconftool2.py\": \"lib/ansible/modules/system/gconftool2.py\", \n  \"ansible/lib/ansible/modules/system/getent.py\": \"lib/ansible/modules/system/getent.py\", \n  \"ansible/lib/ansible/modules/system/gluster_volume.py\": \"lib/ansible/modules/system/gluster_volume.py\", \n  \"ansible/lib/ansible/modules/system/group.py\": \"lib/ansible/modules/system/group.py\", \n  \"ansible/lib/ansible/modules/system/hostname.py\": \"lib/ansible/modules/system/hostname.py\", \n  \"ansible/lib/ansible/modules/system/interfaces_file.py\": \"lib/ansible/modules/system/interfaces_file.py\", \n  \"ansible/lib/ansible/modules/system/iptables.py\": \"lib/ansible/modules/system/iptables.py\", \n  \"ansible/lib/ansible/modules/system/java_cert.py\": \"lib/ansible/modules/system/java_cert.py\", \n  \"ansible/lib/ansible/modules/system/kernel_blacklist.py\": \"lib/ansible/modules/system/kernel_blacklist.py\", \n  \"ansible/lib/ansible/modules/system/known_hosts.py\": \"lib/ansible/modules/system/known_hosts.py\", \n  \"ansible/lib/ansible/modules/system/locale_gen.py\": \"lib/ansible/modules/system/locale_gen.py\", \n  \"ansible/lib/ansible/modules/system/lvg.py\": \"lib/ansible/modules/system/lvg.py\", \n  \"ansible/lib/ansible/modules/system/lvol.py\": \"lib/ansible/modules/system/lvol.py\", \n  \"ansible/lib/ansible/modules/system/make.py\": \"lib/ansible/modules/system/make.py\", \n  \"ansible/lib/ansible/modules/system/mksysb.py\": \"lib/ansible/modules/system/mksysb.py\", \n  \"ansible/lib/ansible/modules/system/modprobe.py\": \"lib/ansible/modules/system/modprobe.py\", \n  \"ansible/lib/ansible/modules/system/mount.py\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"ansible/lib/ansible/modules/system/nosh.py\": \"lib/ansible/modules/system/nosh.py\", \n  \"ansible/lib/ansible/modules/system/ohai.py\": \"lib/ansible/modules/system/ohai.py\", \n  \"ansible/lib/ansible/modules/system/open_iscsi.py\": \"lib/ansible/modules/system/open_iscsi.py\", \n  \"ansible/lib/ansible/modules/system/openwrt_init.py\": \"lib/ansible/modules/system/openwrt_init.py\", \n  \"ansible/lib/ansible/modules/system/osx_defaults.py\": \"lib/ansible/modules/system/osx_defaults.py\", \n  \"ansible/lib/ansible/modules/system/pam_limits.py\": \"lib/ansible/modules/system/pam_limits.py\", \n  \"ansible/lib/ansible/modules/system/pamd.py\": \"lib/ansible/modules/system/pamd.py\", \n  \"ansible/lib/ansible/modules/system/parted.py\": \"lib/ansible/modules/system/parted.py\", \n  \"ansible/lib/ansible/modules/system/ping.py\": \"lib/ansible/modules/system/ping.py\", \n  \"ansible/lib/ansible/modules/system/puppet.py\": \"lib/ansible/modules/system/puppet.py\", \n  \"ansible/lib/ansible/modules/system/runit.py\": \"lib/ansible/modules/system/runit.py\", \n  \"ansible/lib/ansible/modules/system/seboolean.py\": \"lib/ansible/modules/system/seboolean.py\", \n  \"ansible/lib/ansible/modules/system/sefcontext.py\": \"lib/ansible/modules/system/sefcontext.py\", \n  \"ansible/lib/ansible/modules/system/selinux.py\": \"lib/ansible/modules/system/selinux.py\", \n  \"ansible/lib/ansible/modules/system/selinux_permissive.py\": \"lib/ansible/modules/system/selinux_permissive.py\", \n  \"ansible/lib/ansible/modules/system/seport.py\": \"lib/ansible/modules/system/seport.py\", \n  \"ansible/lib/ansible/modules/system/service.py\": \"lib/ansible/modules/system/service.py\", \n  \"ansible/lib/ansible/modules/system/setup.py\": \"lib/ansible/modules/system/setup.py\", \n  \"ansible/lib/ansible/modules/system/solaris_zone.py\": \"lib/ansible/modules/system/solaris_zone.py\", \n  \"ansible/lib/ansible/modules/system/svc.py\": \"lib/ansible/modules/system/svc.py\", \n  \"ansible/lib/ansible/modules/system/sysctl.py\": \"lib/ansible/modules/system/sysctl.py\", \n  \"ansible/lib/ansible/modules/system/systemd.py\": \"lib/ansible/modules/system/systemd.py\", \n  \"ansible/lib/ansible/modules/system/timezone.py\": \"lib/ansible/modules/system/timezone.py\", \n  \"ansible/lib/ansible/modules/system/ufw.py\": \"lib/ansible/modules/system/ufw.py\", \n  \"ansible/lib/ansible/modules/system/user.py\": \"lib/ansible/modules/system/user.py\", \n  \"ansible/lib/ansible/modules/utilities/helper/_accelerate.py\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n  \"ansible/lib/ansible/modules/utilities/helper/accelerate.py\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n  \"ansible/lib/ansible/modules/utilities/helper/meta.py\": \"lib/ansible/modules/utilities/helper/meta.py\", \n  \"ansible/lib/ansible/modules/utilities/logic/_include.py\": \"lib/ansible/modules/utilities/logic/_include.py\", \n  \"ansible/lib/ansible/modules/utilities/logic/assert.py\": \"lib/ansible/modules/utilities/logic/assert.py\", \n  \"ansible/lib/ansible/modules/utilities/logic/async_status.py\": \"lib/ansible/modules/utilities/logic/async_status.py\", \n  \"ansible/lib/ansible/modules/utilities/logic/async_wrapper.py\": \"lib/ansible/modules/utilities/logic/async_wrapper.py\", \n  \"ansible/lib/ansible/modules/utilities/logic/debug.py\": \"lib/ansible/modules/utilities/logic/debug.py\", \n  \"ansible/lib/ansible/modules/utilities/logic/fail.py\": \"lib/ansible/modules/utilities/logic/fail.py\", \n  \"ansible/lib/ansible/modules/utilities/logic/import_playbook.py\": \"lib/ansible/modules/utilities/logic/import_playbook.py\", \n  \"ansible/lib/ansible/modules/utilities/logic/import_role.py\": \"lib/ansible/modules/utilities/logic/import_role.py\", \n  \"ansible/lib/ansible/modules/utilities/logic/import_tasks.py\": \"lib/ansible/modules/utilities/logic/import_tasks.py\", \n  \"ansible/lib/ansible/modules/utilities/logic/include.py\": \"lib/ansible/modules/utilities/logic/_include.py\", \n  \"ansible/lib/ansible/modules/utilities/logic/include_role.py\": \"lib/ansible/modules/utilities/logic/include_role.py\", \n  \"ansible/lib/ansible/modules/utilities/logic/include_tasks.py\": \"lib/ansible/modules/utilities/logic/include_tasks.py\", \n  \"ansible/lib/ansible/modules/utilities/logic/include_vars.py\": \"lib/ansible/modules/utilities/logic/include_vars.py\", \n  \"ansible/lib/ansible/modules/utilities/logic/pause.py\": \"lib/ansible/modules/utilities/logic/pause.py\", \n  \"ansible/lib/ansible/modules/utilities/logic/set_fact.py\": \"lib/ansible/modules/utilities/logic/set_fact.py\", \n  \"ansible/lib/ansible/modules/utilities/logic/set_stats.py\": \"lib/ansible/modules/utilities/logic/set_stats.py\", \n  \"ansible/lib/ansible/modules/utilities/logic/wait_for.py\": \"lib/ansible/modules/utilities/logic/wait_for.py\", \n  \"ansible/lib/ansible/modules/utilities/logic/wait_for_connection.py\": \"lib/ansible/modules/utilities/logic/wait_for_connection.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/ansible_tower/tower_credential.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_credential.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/ansible_tower/tower_group.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_group.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/ansible_tower/tower_host.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_host.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/ansible_tower/tower_inventory.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_inventory.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_cancel.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_cancel.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_launch.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_launch.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_list.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_list.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_template.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_template.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_wait.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_wait.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/ansible_tower/tower_label.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_label.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/ansible_tower/tower_organization.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_organization.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/ansible_tower/tower_project.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_project.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/ansible_tower/tower_role.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_role.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/ansible_tower/tower_team.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_team.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/ansible_tower/tower_user.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_user.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/apache2_mod_proxy.py\": \"lib/ansible/modules/web_infrastructure/apache2_mod_proxy.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/apache2_module.py\": \"lib/ansible/modules/web_infrastructure/apache2_module.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/deploy_helper.py\": \"lib/ansible/modules/web_infrastructure/deploy_helper.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/django_manage.py\": \"lib/ansible/modules/web_infrastructure/django_manage.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/ejabberd_user.py\": \"lib/ansible/modules/web_infrastructure/ejabberd_user.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/gunicorn.py\": \"lib/ansible/modules/web_infrastructure/gunicorn.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/htpasswd.py\": \"lib/ansible/modules/web_infrastructure/htpasswd.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/jboss.py\": \"lib/ansible/modules/web_infrastructure/jboss.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/jenkins_job.py\": \"lib/ansible/modules/web_infrastructure/jenkins_job.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/jenkins_plugin.py\": \"lib/ansible/modules/web_infrastructure/jenkins_plugin.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/jenkins_script.py\": \"lib/ansible/modules/web_infrastructure/jenkins_script.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/jira.py\": \"lib/ansible/modules/web_infrastructure/jira.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/letsencrypt.py\": \"lib/ansible/modules/web_infrastructure/letsencrypt.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/nginx_status_facts.py\": \"lib/ansible/modules/web_infrastructure/nginx_status_facts.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/rundeck_acl_policy.py\": \"lib/ansible/modules/web_infrastructure/rundeck_acl_policy.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/rundeck_project.py\": \"lib/ansible/modules/web_infrastructure/rundeck_project.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/supervisorctl.py\": \"lib/ansible/modules/web_infrastructure/supervisorctl.py\", \n  \"ansible/lib/ansible/modules/web_infrastructure/taiga_issue.py\": \"lib/ansible/modules/web_infrastructure/taiga_issue.py\", \n  \"ansible/lib/ansible/modules/windows/_win_msi.ps1\": \"lib/ansible/modules/windows/_win_msi.ps1\", \n  \"ansible/lib/ansible/modules/windows/_win_msi.py\": \"lib/ansible/modules/windows/_win_msi.py\", \n  \"ansible/lib/ansible/modules/windows/async_status.ps1\": \"lib/ansible/modules/windows/async_status.ps1\", \n  \"ansible/lib/ansible/modules/windows/async_wrapper.ps1\": \"lib/ansible/modules/windows/async_wrapper.ps1\", \n  \"ansible/lib/ansible/modules/windows/setup.ps1\": \"lib/ansible/modules/windows/setup.ps1\", \n  \"ansible/lib/ansible/modules/windows/slurp.ps1\": \"lib/ansible/modules/windows/slurp.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_acl.ps1\": \"lib/ansible/modules/windows/win_acl.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_acl.py\": \"lib/ansible/modules/windows/win_acl.py\", \n  \"ansible/lib/ansible/modules/windows/win_acl_inheritance.ps1\": \"lib/ansible/modules/windows/win_acl_inheritance.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_acl_inheritance.py\": \"lib/ansible/modules/windows/win_acl_inheritance.py\", \n  \"ansible/lib/ansible/modules/windows/win_audit_rule.ps1\": \"lib/ansible/modules/windows/win_audit_rule.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_audit_rule.py\": \"lib/ansible/modules/windows/win_audit_rule.py\", \n  \"ansible/lib/ansible/modules/windows/win_chocolatey.ps1\": \"lib/ansible/modules/windows/win_chocolatey.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_chocolatey.py\": \"lib/ansible/modules/windows/win_chocolatey.py\", \n  \"ansible/lib/ansible/modules/windows/win_command.ps1\": \"lib/ansible/modules/windows/win_command.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_command.py\": \"lib/ansible/modules/windows/win_command.py\", \n  \"ansible/lib/ansible/modules/windows/win_copy.ps1\": \"lib/ansible/modules/windows/win_copy.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_copy.py\": \"lib/ansible/modules/windows/win_copy.py\", \n  \"ansible/lib/ansible/modules/windows/win_defrag.ps1\": \"lib/ansible/modules/windows/win_defrag.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_defrag.py\": \"lib/ansible/modules/windows/win_defrag.py\", \n  \"ansible/lib/ansible/modules/windows/win_disk_image.ps1\": \"lib/ansible/modules/windows/win_disk_image.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_disk_image.py\": \"lib/ansible/modules/windows/win_disk_image.py\", \n  \"ansible/lib/ansible/modules/windows/win_dns_client.ps1\": \"lib/ansible/modules/windows/win_dns_client.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_dns_client.py\": \"lib/ansible/modules/windows/win_dns_client.py\", \n  \"ansible/lib/ansible/modules/windows/win_domain.ps1\": \"lib/ansible/modules/windows/win_domain.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_domain.py\": \"lib/ansible/modules/windows/win_domain.py\", \n  \"ansible/lib/ansible/modules/windows/win_domain_controller.ps1\": \"lib/ansible/modules/windows/win_domain_controller.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_domain_controller.py\": \"lib/ansible/modules/windows/win_domain_controller.py\", \n  \"ansible/lib/ansible/modules/windows/win_domain_group.ps1\": \"lib/ansible/modules/windows/win_domain_group.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_domain_group.py\": \"lib/ansible/modules/windows/win_domain_group.py\", \n  \"ansible/lib/ansible/modules/windows/win_domain_membership.ps1\": \"lib/ansible/modules/windows/win_domain_membership.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_domain_membership.py\": \"lib/ansible/modules/windows/win_domain_membership.py\", \n  \"ansible/lib/ansible/modules/windows/win_domain_user.ps1\": \"lib/ansible/modules/windows/win_domain_user.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_domain_user.py\": \"lib/ansible/modules/windows/win_domain_user.py\", \n  \"ansible/lib/ansible/modules/windows/win_dotnet_ngen.ps1\": \"lib/ansible/modules/windows/win_dotnet_ngen.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_dotnet_ngen.py\": \"lib/ansible/modules/windows/win_dotnet_ngen.py\", \n  \"ansible/lib/ansible/modules/windows/win_dsc.ps1\": \"lib/ansible/modules/windows/win_dsc.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_dsc.py\": \"lib/ansible/modules/windows/win_dsc.py\", \n  \"ansible/lib/ansible/modules/windows/win_environment.ps1\": \"lib/ansible/modules/windows/win_environment.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_environment.py\": \"lib/ansible/modules/windows/win_environment.py\", \n  \"ansible/lib/ansible/modules/windows/win_eventlog.ps1\": \"lib/ansible/modules/windows/win_eventlog.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_eventlog.py\": \"lib/ansible/modules/windows/win_eventlog.py\", \n  \"ansible/lib/ansible/modules/windows/win_eventlog_entry.ps1\": \"lib/ansible/modules/windows/win_eventlog_entry.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_eventlog_entry.py\": \"lib/ansible/modules/windows/win_eventlog_entry.py\", \n  \"ansible/lib/ansible/modules/windows/win_feature.ps1\": \"lib/ansible/modules/windows/win_feature.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_feature.py\": \"lib/ansible/modules/windows/win_feature.py\", \n  \"ansible/lib/ansible/modules/windows/win_file.ps1\": \"lib/ansible/modules/windows/win_file.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_file.py\": \"lib/ansible/modules/windows/win_file.py\", \n  \"ansible/lib/ansible/modules/windows/win_file_version.ps1\": \"lib/ansible/modules/windows/win_file_version.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_file_version.py\": \"lib/ansible/modules/windows/win_file_version.py\", \n  \"ansible/lib/ansible/modules/windows/win_find.ps1\": \"lib/ansible/modules/windows/win_find.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_find.py\": \"lib/ansible/modules/windows/win_find.py\", \n  \"ansible/lib/ansible/modules/windows/win_firewall.ps1\": \"lib/ansible/modules/windows/win_firewall.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_firewall.py\": \"lib/ansible/modules/windows/win_firewall.py\", \n  \"ansible/lib/ansible/modules/windows/win_firewall_rule.ps1\": \"lib/ansible/modules/windows/win_firewall_rule.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_firewall_rule.py\": \"lib/ansible/modules/windows/win_firewall_rule.py\", \n  \"ansible/lib/ansible/modules/windows/win_get_url.ps1\": \"lib/ansible/modules/windows/win_get_url.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_get_url.py\": \"lib/ansible/modules/windows/win_get_url.py\", \n  \"ansible/lib/ansible/modules/windows/win_group.ps1\": \"lib/ansible/modules/windows/win_group.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_group.py\": \"lib/ansible/modules/windows/win_group.py\", \n  \"ansible/lib/ansible/modules/windows/win_group_membership.ps1\": \"lib/ansible/modules/windows/win_group_membership.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_group_membership.py\": \"lib/ansible/modules/windows/win_group_membership.py\", \n  \"ansible/lib/ansible/modules/windows/win_hotfix.ps1\": \"lib/ansible/modules/windows/win_hotfix.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_hotfix.py\": \"lib/ansible/modules/windows/win_hotfix.py\", \n  \"ansible/lib/ansible/modules/windows/win_iis_virtualdirectory.ps1\": \"lib/ansible/modules/windows/win_iis_virtualdirectory.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_iis_virtualdirectory.py\": \"lib/ansible/modules/windows/win_iis_virtualdirectory.py\", \n  \"ansible/lib/ansible/modules/windows/win_iis_webapplication.ps1\": \"lib/ansible/modules/windows/win_iis_webapplication.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_iis_webapplication.py\": \"lib/ansible/modules/windows/win_iis_webapplication.py\", \n  \"ansible/lib/ansible/modules/windows/win_iis_webapppool.ps1\": \"lib/ansible/modules/windows/win_iis_webapppool.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_iis_webapppool.py\": \"lib/ansible/modules/windows/win_iis_webapppool.py\", \n  \"ansible/lib/ansible/modules/windows/win_iis_webbinding.ps1\": \"lib/ansible/modules/windows/win_iis_webbinding.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_iis_webbinding.py\": \"lib/ansible/modules/windows/win_iis_webbinding.py\", \n  \"ansible/lib/ansible/modules/windows/win_iis_website.ps1\": \"lib/ansible/modules/windows/win_iis_website.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_iis_website.py\": \"lib/ansible/modules/windows/win_iis_website.py\", \n  \"ansible/lib/ansible/modules/windows/win_lineinfile.ps1\": \"lib/ansible/modules/windows/win_lineinfile.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_lineinfile.py\": \"lib/ansible/modules/windows/win_lineinfile.py\", \n  \"ansible/lib/ansible/modules/windows/win_mapped_drive.ps1\": \"lib/ansible/modules/windows/win_mapped_drive.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_mapped_drive.py\": \"lib/ansible/modules/windows/win_mapped_drive.py\", \n  \"ansible/lib/ansible/modules/windows/win_msg.ps1\": \"lib/ansible/modules/windows/win_msg.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_msg.py\": \"lib/ansible/modules/windows/win_msg.py\", \n  \"ansible/lib/ansible/modules/windows/win_msi.ps1\": \"lib/ansible/modules/windows/_win_msi.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_msi.py\": \"lib/ansible/modules/windows/_win_msi.py\", \n  \"ansible/lib/ansible/modules/windows/win_nssm.ps1\": \"lib/ansible/modules/windows/win_nssm.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_nssm.py\": \"lib/ansible/modules/windows/win_nssm.py\", \n  \"ansible/lib/ansible/modules/windows/win_owner.ps1\": \"lib/ansible/modules/windows/win_owner.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_owner.py\": \"lib/ansible/modules/windows/win_owner.py\", \n  \"ansible/lib/ansible/modules/windows/win_package.ps1\": \"lib/ansible/modules/windows/win_package.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_package.py\": \"lib/ansible/modules/windows/win_package.py\", \n  \"ansible/lib/ansible/modules/windows/win_pagefile.ps1\": \"lib/ansible/modules/windows/win_pagefile.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_pagefile.py\": \"lib/ansible/modules/windows/win_pagefile.py\", \n  \"ansible/lib/ansible/modules/windows/win_path.ps1\": \"lib/ansible/modules/windows/win_path.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_path.py\": \"lib/ansible/modules/windows/win_path.py\", \n  \"ansible/lib/ansible/modules/windows/win_ping.ps1\": \"lib/ansible/modules/windows/win_ping.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_ping.py\": \"lib/ansible/modules/windows/win_ping.py\", \n  \"ansible/lib/ansible/modules/windows/win_power_plan.ps1\": \"lib/ansible/modules/windows/win_power_plan.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_power_plan.py\": \"lib/ansible/modules/windows/win_power_plan.py\", \n  \"ansible/lib/ansible/modules/windows/win_psexec.ps1\": \"lib/ansible/modules/windows/win_psexec.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_psexec.py\": \"lib/ansible/modules/windows/win_psexec.py\", \n  \"ansible/lib/ansible/modules/windows/win_psmodule.ps1\": \"lib/ansible/modules/windows/win_psmodule.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_psmodule.py\": \"lib/ansible/modules/windows/win_psmodule.py\", \n  \"ansible/lib/ansible/modules/windows/win_rabbitmq_plugin.ps1\": \"lib/ansible/modules/windows/win_rabbitmq_plugin.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_rabbitmq_plugin.py\": \"lib/ansible/modules/windows/win_rabbitmq_plugin.py\", \n  \"ansible/lib/ansible/modules/windows/win_reboot.py\": \"lib/ansible/modules/windows/win_reboot.py\", \n  \"ansible/lib/ansible/modules/windows/win_reg_stat.ps1\": \"lib/ansible/modules/windows/win_reg_stat.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_reg_stat.py\": \"lib/ansible/modules/windows/win_reg_stat.py\", \n  \"ansible/lib/ansible/modules/windows/win_regedit.ps1\": \"lib/ansible/modules/windows/win_regedit.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_regedit.py\": \"lib/ansible/modules/windows/win_regedit.py\", \n  \"ansible/lib/ansible/modules/windows/win_region.ps1\": \"lib/ansible/modules/windows/win_region.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_region.py\": \"lib/ansible/modules/windows/win_region.py\", \n  \"ansible/lib/ansible/modules/windows/win_regmerge.ps1\": \"lib/ansible/modules/windows/win_regmerge.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_regmerge.py\": \"lib/ansible/modules/windows/win_regmerge.py\", \n  \"ansible/lib/ansible/modules/windows/win_robocopy.ps1\": \"lib/ansible/modules/windows/win_robocopy.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_robocopy.py\": \"lib/ansible/modules/windows/win_robocopy.py\", \n  \"ansible/lib/ansible/modules/windows/win_route.ps1\": \"lib/ansible/modules/windows/win_route.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_route.py\": \"lib/ansible/modules/windows/win_route.py\", \n  \"ansible/lib/ansible/modules/windows/win_say.ps1\": \"lib/ansible/modules/windows/win_say.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_say.py\": \"lib/ansible/modules/windows/win_say.py\", \n  \"ansible/lib/ansible/modules/windows/win_scheduled_task.ps1\": \"lib/ansible/modules/windows/win_scheduled_task.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_scheduled_task.py\": \"lib/ansible/modules/windows/win_scheduled_task.py\", \n  \"ansible/lib/ansible/modules/windows/win_scheduled_task_stat.ps1\": \"lib/ansible/modules/windows/win_scheduled_task_stat.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_scheduled_task_stat.py\": \"lib/ansible/modules/windows/win_scheduled_task_stat.py\", \n  \"ansible/lib/ansible/modules/windows/win_security_policy.ps1\": \"lib/ansible/modules/windows/win_security_policy.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_security_policy.py\": \"lib/ansible/modules/windows/win_security_policy.py\", \n  \"ansible/lib/ansible/modules/windows/win_service.ps1\": \"lib/ansible/modules/windows/win_service.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_service.py\": \"lib/ansible/modules/windows/win_service.py\", \n  \"ansible/lib/ansible/modules/windows/win_share.ps1\": \"lib/ansible/modules/windows/win_share.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_share.py\": \"lib/ansible/modules/windows/win_share.py\", \n  \"ansible/lib/ansible/modules/windows/win_shell.ps1\": \"lib/ansible/modules/windows/win_shell.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_shell.py\": \"lib/ansible/modules/windows/win_shell.py\", \n  \"ansible/lib/ansible/modules/windows/win_shortcut.ps1\": \"lib/ansible/modules/windows/win_shortcut.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_shortcut.py\": \"lib/ansible/modules/windows/win_shortcut.py\", \n  \"ansible/lib/ansible/modules/windows/win_stat.ps1\": \"lib/ansible/modules/windows/win_stat.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_stat.py\": \"lib/ansible/modules/windows/win_stat.py\", \n  \"ansible/lib/ansible/modules/windows/win_tempfile.ps1\": \"lib/ansible/modules/windows/win_tempfile.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_tempfile.py\": \"lib/ansible/modules/windows/win_tempfile.py\", \n  \"ansible/lib/ansible/modules/windows/win_template.py\": \"lib/ansible/modules/windows/win_template.py\", \n  \"ansible/lib/ansible/modules/windows/win_timezone.ps1\": \"lib/ansible/modules/windows/win_timezone.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_timezone.py\": \"lib/ansible/modules/windows/win_timezone.py\", \n  \"ansible/lib/ansible/modules/windows/win_toast.ps1\": \"lib/ansible/modules/windows/win_toast.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_toast.py\": \"lib/ansible/modules/windows/win_toast.py\", \n  \"ansible/lib/ansible/modules/windows/win_unzip.ps1\": \"lib/ansible/modules/windows/win_unzip.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_unzip.py\": \"lib/ansible/modules/windows/win_unzip.py\", \n  \"ansible/lib/ansible/modules/windows/win_updates.ps1\": \"lib/ansible/modules/windows/win_updates.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_updates.py\": \"lib/ansible/modules/windows/win_updates.py\", \n  \"ansible/lib/ansible/modules/windows/win_uri.ps1\": \"lib/ansible/modules/windows/win_uri.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_uri.py\": \"lib/ansible/modules/windows/win_uri.py\", \n  \"ansible/lib/ansible/modules/windows/win_user.ps1\": \"lib/ansible/modules/windows/win_user.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_user.py\": \"lib/ansible/modules/windows/win_user.py\", \n  \"ansible/lib/ansible/modules/windows/win_user_right.ps1\": \"lib/ansible/modules/windows/win_user_right.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_user_right.py\": \"lib/ansible/modules/windows/win_user_right.py\", \n  \"ansible/lib/ansible/modules/windows/win_wait_for.ps1\": \"lib/ansible/modules/windows/win_wait_for.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_wait_for.py\": \"lib/ansible/modules/windows/win_wait_for.py\", \n  \"ansible/lib/ansible/modules/windows/win_wakeonlan.ps1\": \"lib/ansible/modules/windows/win_wakeonlan.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_wakeonlan.py\": \"lib/ansible/modules/windows/win_wakeonlan.py\", \n  \"ansible/lib/ansible/modules/windows/win_webpicmd.ps1\": \"lib/ansible/modules/windows/win_webpicmd.ps1\", \n  \"ansible/lib/ansible/modules/windows/win_webpicmd.py\": \"lib/ansible/modules/windows/win_webpicmd.py\", \n  \"ansible/lib/ansible/playbook/block.py\": [\n    \"lib/ansible/playbook/block.py\"\n  ], \n  \"ansible/lib/ansible/plugins/callback/init.py\": [\n    \"lib/ansible/plugins/callback\"\n  ], \n  \"ansible/lib/ansible/plugins/connection/winrm.py\": [\n    \"lib/ansible/plugins/connection/winrm.py\"\n  ], \n  \"ansible/lib/ansible/plugins/filter/ipaddr.py\": [\n    \"lib/ansible/plugins/filter/ipaddr.py\"\n  ], \n  \"ansible/lib/ansible/plugins/shell/powershell.py\": [\n    \"lib/ansible/plugins/shell/powershell.py\"\n  ], \n  \"ansible/meta\": \"meta\", \n  \"ansible/module_utils/basic.py\": [\n    \"lib/ansible/module_utils/basic.py\"\n  ], \n  \"ansible/module_utils/facts/hardware/darwin.py\": [\n    \"lib/ansible/module_utils/facts/hardware/darwin.py\"\n  ], \n  \"ansible/module_utils/ovirt.py\": [], \n  \"ansible/module_utils/shell.py\": [], \n  \"ansible/module_utils/urls.py\": [\n    \"lib/ansible/module_utils/urls.py\"\n  ], \n  \"ansible/modules/cloud/amazon/GUIDELINES.md\": \"lib/ansible/modules/cloud/amazon/GUIDELINES.md\", \n  \"ansible/modules/cloud/amazon/_ec2_ami_search.py\": \"lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\", \n  \"ansible/modules/cloud/amazon/_ec2_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\", \n  \"ansible/modules/cloud/amazon/_ec2_remote_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\", \n  \"ansible/modules/cloud/amazon/_ec2_vpc.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n  \"ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\", \n  \"ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\", \n  \"ansible/modules/cloud/amazon/_iam_cert_facts.py\": \"lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\", \n  \"ansible/modules/cloud/amazon/_s3.py\": \"lib/ansible/modules/cloud/amazon/_s3.py\", \n  \"ansible/modules/cloud/amazon/aws_acm_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_acm_facts.py\", \n  \"ansible/modules/cloud/amazon/aws_api_gateway.py\": \"lib/ansible/modules/cloud/amazon/aws_api_gateway.py\", \n  \"ansible/modules/cloud/amazon/aws_direct_connect_connection.py\": \"lib/ansible/modules/cloud/amazon/aws_direct_connect_connection.py\", \n  \"ansible/modules/cloud/amazon/aws_direct_connect_link_aggregation_group.py\": \"lib/ansible/modules/cloud/amazon/aws_direct_connect_link_aggregation_group.py\", \n  \"ansible/modules/cloud/amazon/aws_kms.py\": \"lib/ansible/modules/cloud/amazon/aws_kms.py\", \n  \"ansible/modules/cloud/amazon/aws_kms_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_kms_facts.py\", \n  \"ansible/modules/cloud/amazon/aws_s3.py\": \"lib/ansible/modules/cloud/amazon/aws_s3.py\", \n  \"ansible/modules/cloud/amazon/aws_s3_bucket_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_s3_bucket_facts.py\", \n  \"ansible/modules/cloud/amazon/aws_ssm_parameter_store.py\": \"lib/ansible/modules/cloud/amazon/aws_ssm_parameter_store.py\", \n  \"ansible/modules/cloud/amazon/aws_waf_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_waf_facts.py\", \n  \"ansible/modules/cloud/amazon/cloudformation.py\": \"lib/ansible/modules/cloud/amazon/cloudformation.py\", \n  \"ansible/modules/cloud/amazon/cloudformation_facts.py\": \"lib/ansible/modules/cloud/amazon/cloudformation_facts.py\", \n  \"ansible/modules/cloud/amazon/cloudfront_facts.py\": \"lib/ansible/modules/cloud/amazon/cloudfront_facts.py\", \n  \"ansible/modules/cloud/amazon/cloudtrail.py\": \"lib/ansible/modules/cloud/amazon/cloudtrail.py\", \n  \"ansible/modules/cloud/amazon/cloudwatchevent_rule.py\": \"lib/ansible/modules/cloud/amazon/cloudwatchevent_rule.py\", \n  \"ansible/modules/cloud/amazon/data_pipeline.py\": \"lib/ansible/modules/cloud/amazon/data_pipeline.py\", \n  \"ansible/modules/cloud/amazon/dynamodb_table.py\": \"lib/ansible/modules/cloud/amazon/dynamodb_table.py\", \n  \"ansible/modules/cloud/amazon/dynamodb_ttl.py\": \"lib/ansible/modules/cloud/amazon/dynamodb_ttl.py\", \n  \"ansible/modules/cloud/amazon/ec2.py\": \"lib/ansible/modules/cloud/amazon/ec2.py\", \n  \"ansible/modules/cloud/amazon/ec2_ami.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami.py\", \n  \"ansible/modules/cloud/amazon/ec2_ami_copy.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami_copy.py\", \n  \"ansible/modules/cloud/amazon/ec2_ami_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_ami_find.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami_find.py\", \n  \"ansible/modules/cloud/amazon/ec2_ami_search.py\": \"lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\", \n  \"ansible/modules/cloud/amazon/ec2_asg.py\": \"lib/ansible/modules/cloud/amazon/ec2_asg.py\", \n  \"ansible/modules/cloud/amazon/ec2_asg_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_asg_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_customer_gateway.py\": \"lib/ansible/modules/cloud/amazon/ec2_customer_gateway.py\", \n  \"ansible/modules/cloud/amazon/ec2_eip.py\": \"lib/ansible/modules/cloud/amazon/ec2_eip.py\", \n  \"ansible/modules/cloud/amazon/ec2_elb.py\": \"lib/ansible/modules/cloud/amazon/ec2_elb.py\", \n  \"ansible/modules/cloud/amazon/ec2_elb_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_elb_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_elb_lb.py\": \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\", \n  \"ansible/modules/cloud/amazon/ec2_eni.py\": \"lib/ansible/modules/cloud/amazon/ec2_eni.py\", \n  \"ansible/modules/cloud/amazon/ec2_eni_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_eni_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_group.py\": \"lib/ansible/modules/cloud/amazon/ec2_group.py\", \n  \"ansible/modules/cloud/amazon/ec2_group_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_group_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_instance_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_instance_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_key.py\": \"lib/ansible/modules/cloud/amazon/ec2_key.py\", \n  \"ansible/modules/cloud/amazon/ec2_lc.py\": \"lib/ansible/modules/cloud/amazon/ec2_lc.py\", \n  \"ansible/modules/cloud/amazon/ec2_lc_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_lc_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_lc_find.py\": \"lib/ansible/modules/cloud/amazon/ec2_lc_find.py\", \n  \"ansible/modules/cloud/amazon/ec2_metadata_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_metadata_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_metric_alarm.py\": \"lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py\", \n  \"ansible/modules/cloud/amazon/ec2_remote_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_scaling_policy.py\": \"lib/ansible/modules/cloud/amazon/ec2_scaling_policy.py\", \n  \"ansible/modules/cloud/amazon/ec2_snapshot.py\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot.py\", \n  \"ansible/modules/cloud/amazon/ec2_snapshot_copy.py\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot_copy.py\", \n  \"ansible/modules/cloud/amazon/ec2_snapshot_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_tag.py\": \"lib/ansible/modules/cloud/amazon/ec2_tag.py\", \n  \"ansible/modules/cloud/amazon/ec2_vol.py\": \"lib/ansible/modules/cloud/amazon/ec2_vol.py\", \n  \"ansible/modules/cloud/amazon/ec2_vol_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vol_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_dhcp_option.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_dhcp_option_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_dhcp_options.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_dhcp_options_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_endpoint.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_endpoint_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_igw.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_igw_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_nacl.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_nacl_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_nat_gateway.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_nat_gateway_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_net.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_net.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_net_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_net_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_peer.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peer.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_peering_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peering_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_route_table.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_route_table_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_subnet.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_subnet_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_vgw.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_vgw_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw_facts.py\", \n  \"ansible/modules/cloud/amazon/ec2_vpc_vpn.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vpn.py\", \n  \"ansible/modules/cloud/amazon/ec2_win_password.py\": \"lib/ansible/modules/cloud/amazon/ec2_win_password.py\", \n  \"ansible/modules/cloud/amazon/ecs_attribute.py\": \"lib/ansible/modules/cloud/amazon/ecs_attribute.py\", \n  \"ansible/modules/cloud/amazon/ecs_cluster.py\": \"lib/ansible/modules/cloud/amazon/ecs_cluster.py\", \n  \"ansible/modules/cloud/amazon/ecs_ecr.py\": \"lib/ansible/modules/cloud/amazon/ecs_ecr.py\", \n  \"ansible/modules/cloud/amazon/ecs_service.py\": \"lib/ansible/modules/cloud/amazon/ecs_service.py\", \n  \"ansible/modules/cloud/amazon/ecs_service_facts.py\": \"lib/ansible/modules/cloud/amazon/ecs_service_facts.py\", \n  \"ansible/modules/cloud/amazon/ecs_task.py\": \"lib/ansible/modules/cloud/amazon/ecs_task.py\", \n  \"ansible/modules/cloud/amazon/ecs_taskdefinition.py\": \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py\", \n  \"ansible/modules/cloud/amazon/ecs_taskdefinition_facts.py\": \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition_facts.py\", \n  \"ansible/modules/cloud/amazon/efs.py\": \"lib/ansible/modules/cloud/amazon/efs.py\", \n  \"ansible/modules/cloud/amazon/efs_facts.py\": \"lib/ansible/modules/cloud/amazon/efs_facts.py\", \n  \"ansible/modules/cloud/amazon/elasticache.py\": \"lib/ansible/modules/cloud/amazon/elasticache.py\", \n  \"ansible/modules/cloud/amazon/elasticache_parameter_group.py\": \"lib/ansible/modules/cloud/amazon/elasticache_parameter_group.py\", \n  \"ansible/modules/cloud/amazon/elasticache_snapshot.py\": \"lib/ansible/modules/cloud/amazon/elasticache_snapshot.py\", \n  \"ansible/modules/cloud/amazon/elasticache_subnet_group.py\": \"lib/ansible/modules/cloud/amazon/elasticache_subnet_group.py\", \n  \"ansible/modules/cloud/amazon/elb_application_lb.py\": \"lib/ansible/modules/cloud/amazon/elb_application_lb.py\", \n  \"ansible/modules/cloud/amazon/elb_application_lb_facts.py\": \"lib/ansible/modules/cloud/amazon/elb_application_lb_facts.py\", \n  \"ansible/modules/cloud/amazon/elb_classic_lb.py\": \"lib/ansible/modules/cloud/amazon/elb_classic_lb.py\", \n  \"ansible/modules/cloud/amazon/elb_classic_lb_facts.py\": \"lib/ansible/modules/cloud/amazon/elb_classic_lb_facts.py\", \n  \"ansible/modules/cloud/amazon/elb_instance.py\": \"lib/ansible/modules/cloud/amazon/elb_instance.py\", \n  \"ansible/modules/cloud/amazon/elb_target_group.py\": \"lib/ansible/modules/cloud/amazon/elb_target_group.py\", \n  \"ansible/modules/cloud/amazon/elb_target_group_facts.py\": \"lib/ansible/modules/cloud/amazon/elb_target_group_facts.py\", \n  \"ansible/modules/cloud/amazon/execute_lambda.py\": \"lib/ansible/modules/cloud/amazon/execute_lambda.py\", \n  \"ansible/modules/cloud/amazon/iam.py\": \"lib/ansible/modules/cloud/amazon/iam.py\", \n  \"ansible/modules/cloud/amazon/iam_cert.py\": \"lib/ansible/modules/cloud/amazon/iam_cert.py\", \n  \"ansible/modules/cloud/amazon/iam_cert_facts.py\": \"lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\", \n  \"ansible/modules/cloud/amazon/iam_group.py\": \"lib/ansible/modules/cloud/amazon/iam_group.py\", \n  \"ansible/modules/cloud/amazon/iam_managed_policy.py\": \"lib/ansible/modules/cloud/amazon/iam_managed_policy.py\", \n  \"ansible/modules/cloud/amazon/iam_mfa_device_facts.py\": \"lib/ansible/modules/cloud/amazon/iam_mfa_device_facts.py\", \n  \"ansible/modules/cloud/amazon/iam_policy.py\": \"lib/ansible/modules/cloud/amazon/iam_policy.py\", \n  \"ansible/modules/cloud/amazon/iam_role.py\": \"lib/ansible/modules/cloud/amazon/iam_role.py\", \n  \"ansible/modules/cloud/amazon/iam_server_certificate_facts.py\": \"lib/ansible/modules/cloud/amazon/iam_server_certificate_facts.py\", \n  \"ansible/modules/cloud/amazon/kinesis_stream.py\": \"lib/ansible/modules/cloud/amazon/kinesis_stream.py\", \n  \"ansible/modules/cloud/amazon/lambda.py\": \"lib/ansible/modules/cloud/amazon/lambda.py\", \n  \"ansible/modules/cloud/amazon/lambda_alias.py\": \"lib/ansible/modules/cloud/amazon/lambda_alias.py\", \n  \"ansible/modules/cloud/amazon/lambda_event.py\": \"lib/ansible/modules/cloud/amazon/lambda_event.py\", \n  \"ansible/modules/cloud/amazon/lambda_facts.py\": \"lib/ansible/modules/cloud/amazon/lambda_facts.py\", \n  \"ansible/modules/cloud/amazon/lambda_policy.py\": \"lib/ansible/modules/cloud/amazon/lambda_policy.py\", \n  \"ansible/modules/cloud/amazon/lightsail.py\": \"lib/ansible/modules/cloud/amazon/lightsail.py\", \n  \"ansible/modules/cloud/amazon/rds.py\": \"lib/ansible/modules/cloud/amazon/rds.py\", \n  \"ansible/modules/cloud/amazon/rds_param_group.py\": \"lib/ansible/modules/cloud/amazon/rds_param_group.py\", \n  \"ansible/modules/cloud/amazon/rds_subnet_group.py\": \"lib/ansible/modules/cloud/amazon/rds_subnet_group.py\", \n  \"ansible/modules/cloud/amazon/redshift.py\": \"lib/ansible/modules/cloud/amazon/redshift.py\", \n  \"ansible/modules/cloud/amazon/redshift_facts.py\": \"lib/ansible/modules/cloud/amazon/redshift_facts.py\", \n  \"ansible/modules/cloud/amazon/redshift_subnet_group.py\": \"lib/ansible/modules/cloud/amazon/redshift_subnet_group.py\", \n  \"ansible/modules/cloud/amazon/route53.py\": \"lib/ansible/modules/cloud/amazon/route53.py\", \n  \"ansible/modules/cloud/amazon/route53_facts.py\": \"lib/ansible/modules/cloud/amazon/route53_facts.py\", \n  \"ansible/modules/cloud/amazon/route53_health_check.py\": \"lib/ansible/modules/cloud/amazon/route53_health_check.py\", \n  \"ansible/modules/cloud/amazon/route53_zone.py\": \"lib/ansible/modules/cloud/amazon/route53_zone.py\", \n  \"ansible/modules/cloud/amazon/s3.py\": \"lib/ansible/modules/cloud/amazon/_s3.py\", \n  \"ansible/modules/cloud/amazon/s3_bucket.py\": \"lib/ansible/modules/cloud/amazon/s3_bucket.py\", \n  \"ansible/modules/cloud/amazon/s3_lifecycle.py\": \"lib/ansible/modules/cloud/amazon/s3_lifecycle.py\", \n  \"ansible/modules/cloud/amazon/s3_logging.py\": \"lib/ansible/modules/cloud/amazon/s3_logging.py\", \n  \"ansible/modules/cloud/amazon/s3_sync.py\": \"lib/ansible/modules/cloud/amazon/s3_sync.py\", \n  \"ansible/modules/cloud/amazon/s3_website.py\": \"lib/ansible/modules/cloud/amazon/s3_website.py\", \n  \"ansible/modules/cloud/amazon/sns.py\": \"lib/ansible/modules/cloud/amazon/sns.py\", \n  \"ansible/modules/cloud/amazon/sns_topic.py\": \"lib/ansible/modules/cloud/amazon/sns_topic.py\", \n  \"ansible/modules/cloud/amazon/sqs_queue.py\": \"lib/ansible/modules/cloud/amazon/sqs_queue.py\", \n  \"ansible/modules/cloud/amazon/sts_assume_role.py\": \"lib/ansible/modules/cloud/amazon/sts_assume_role.py\", \n  \"ansible/modules/cloud/amazon/sts_session_token.py\": \"lib/ansible/modules/cloud/amazon/sts_session_token.py\", \n  \"ansible/modules/cloud/atomic/atomic_container.py\": \"lib/ansible/modules/cloud/atomic/atomic_container.py\", \n  \"ansible/modules/cloud/atomic/atomic_host.py\": \"lib/ansible/modules/cloud/atomic/atomic_host.py\", \n  \"ansible/modules/cloud/atomic/atomic_image.py\": \"lib/ansible/modules/cloud/atomic/atomic_image.py\", \n  \"ansible/modules/cloud/azure/_azure.py\": \"lib/ansible/modules/cloud/azure/_azure.py\", \n  \"ansible/modules/cloud/azure/azure.py\": \"lib/ansible/modules/cloud/azure/_azure.py\", \n  \"ansible/modules/cloud/azure/azure_rm_acs.py\": \"lib/ansible/modules/cloud/azure/azure_rm_acs.py\", \n  \"ansible/modules/cloud/azure/azure_rm_availabilityset.py\": \"lib/ansible/modules/cloud/azure/azure_rm_availabilityset.py\", \n  \"ansible/modules/cloud/azure/azure_rm_availabilityset_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_availabilityset_facts.py\", \n  \"ansible/modules/cloud/azure/azure_rm_deployment.py\": \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\", \n  \"ansible/modules/cloud/azure/azure_rm_dnsrecordset.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset.py\", \n  \"ansible/modules/cloud/azure/azure_rm_dnsrecordset_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset_facts.py\", \n  \"ansible/modules/cloud/azure/azure_rm_dnszone.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnszone.py\", \n  \"ansible/modules/cloud/azure/azure_rm_dnszone_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnszone_facts.py\", \n  \"ansible/modules/cloud/azure/azure_rm_functionapp.py\": \"lib/ansible/modules/cloud/azure/azure_rm_functionapp.py\", \n  \"ansible/modules/cloud/azure/azure_rm_functionapp_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_functionapp_facts.py\", \n  \"ansible/modules/cloud/azure/azure_rm_loadbalancer.py\": \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer.py\", \n  \"ansible/modules/cloud/azure/azure_rm_loadbalancer_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer_facts.py\", \n  \"ansible/modules/cloud/azure/azure_rm_managed_disk.py\": \"lib/ansible/modules/cloud/azure/azure_rm_managed_disk.py\", \n  \"ansible/modules/cloud/azure/azure_rm_managed_disk_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_managed_disk_facts.py\", \n  \"ansible/modules/cloud/azure/azure_rm_networkinterface.py\": \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface.py\", \n  \"ansible/modules/cloud/azure/azure_rm_networkinterface_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface_facts.py\", \n  \"ansible/modules/cloud/azure/azure_rm_publicipaddress.py\": \"lib/ansible/modules/cloud/azure/azure_rm_publicipaddress.py\", \n  \"ansible/modules/cloud/azure/azure_rm_publicipaddress_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_publicipaddress_facts.py\", \n  \"ansible/modules/cloud/azure/azure_rm_resourcegroup.py\": \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup.py\", \n  \"ansible/modules/cloud/azure/azure_rm_resourcegroup_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup_facts.py\", \n  \"ansible/modules/cloud/azure/azure_rm_securitygroup.py\": \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup.py\", \n  \"ansible/modules/cloud/azure/azure_rm_securitygroup_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup_facts.py\", \n  \"ansible/modules/cloud/azure/azure_rm_storageaccount.py\": \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount.py\", \n  \"ansible/modules/cloud/azure/azure_rm_storageaccount_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount_facts.py\", \n  \"ansible/modules/cloud/azure/azure_rm_storageblob.py\": \"lib/ansible/modules/cloud/azure/azure_rm_storageblob.py\", \n  \"ansible/modules/cloud/azure/azure_rm_subnet.py\": \"lib/ansible/modules/cloud/azure/azure_rm_subnet.py\", \n  \"ansible/modules/cloud/azure/azure_rm_virtualmachine.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\", \n  \"ansible/modules/cloud/azure/azure_rm_virtualmachine_extension.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_extension.py\", \n  \"ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset.py\", \n  \"ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset_facts.py\", \n  \"ansible/modules/cloud/azure/azure_rm_virtualmachineimage_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachineimage_facts.py\", \n  \"ansible/modules/cloud/azure/azure_rm_virtualnetwork.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork.py\", \n  \"ansible/modules/cloud/azure/azure_rm_virtualnetwork_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork_facts.py\", \n  \"ansible/modules/cloud/centurylink/clc_aa_policy.py\": \"lib/ansible/modules/cloud/centurylink/clc_aa_policy.py\", \n  \"ansible/modules/cloud/centurylink/clc_alert_policy.py\": \"lib/ansible/modules/cloud/centurylink/clc_alert_policy.py\", \n  \"ansible/modules/cloud/centurylink/clc_blueprint_package.py\": \"lib/ansible/modules/cloud/centurylink/clc_blueprint_package.py\", \n  \"ansible/modules/cloud/centurylink/clc_firewall_policy.py\": \"lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py\", \n  \"ansible/modules/cloud/centurylink/clc_group.py\": \"lib/ansible/modules/cloud/centurylink/clc_group.py\", \n  \"ansible/modules/cloud/centurylink/clc_loadbalancer.py\": \"lib/ansible/modules/cloud/centurylink/clc_loadbalancer.py\", \n  \"ansible/modules/cloud/centurylink/clc_modify_server.py\": \"lib/ansible/modules/cloud/centurylink/clc_modify_server.py\", \n  \"ansible/modules/cloud/centurylink/clc_publicip.py\": \"lib/ansible/modules/cloud/centurylink/clc_publicip.py\", \n  \"ansible/modules/cloud/centurylink/clc_server.py\": \"lib/ansible/modules/cloud/centurylink/clc_server.py\", \n  \"ansible/modules/cloud/centurylink/clc_server_snapshot.py\": \"lib/ansible/modules/cloud/centurylink/clc_server_snapshot.py\", \n  \"ansible/modules/cloud/cloudscale/cloudscale_server.py\": \"lib/ansible/modules/cloud/cloudscale/cloudscale_server.py\", \n  \"ansible/modules/cloud/cloudstack/_cs_nic.py\": \"lib/ansible/modules/cloud/cloudstack/_cs_nic.py\", \n  \"ansible/modules/cloud/cloudstack/cs_account.py\": \"lib/ansible/modules/cloud/cloudstack/cs_account.py\", \n  \"ansible/modules/cloud/cloudstack/cs_affinitygroup.py\": \"lib/ansible/modules/cloud/cloudstack/cs_affinitygroup.py\", \n  \"ansible/modules/cloud/cloudstack/cs_cluster.py\": \"lib/ansible/modules/cloud/cloudstack/cs_cluster.py\", \n  \"ansible/modules/cloud/cloudstack/cs_configuration.py\": \"lib/ansible/modules/cloud/cloudstack/cs_configuration.py\", \n  \"ansible/modules/cloud/cloudstack/cs_domain.py\": \"lib/ansible/modules/cloud/cloudstack/cs_domain.py\", \n  \"ansible/modules/cloud/cloudstack/cs_facts.py\": \"lib/ansible/modules/cloud/cloudstack/cs_facts.py\", \n  \"ansible/modules/cloud/cloudstack/cs_firewall.py\": \"lib/ansible/modules/cloud/cloudstack/cs_firewall.py\", \n  \"ansible/modules/cloud/cloudstack/cs_host.py\": \"lib/ansible/modules/cloud/cloudstack/cs_host.py\", \n  \"ansible/modules/cloud/cloudstack/cs_instance.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance.py\", \n  \"ansible/modules/cloud/cloudstack/cs_instance_facts.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_facts.py\", \n  \"ansible/modules/cloud/cloudstack/cs_instance_nic.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_nic.py\", \n  \"ansible/modules/cloud/cloudstack/cs_instance_nic_secondaryip.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_nic_secondaryip.py\", \n  \"ansible/modules/cloud/cloudstack/cs_instancegroup.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instancegroup.py\", \n  \"ansible/modules/cloud/cloudstack/cs_ip_address.py\": \"lib/ansible/modules/cloud/cloudstack/cs_ip_address.py\", \n  \"ansible/modules/cloud/cloudstack/cs_iso.py\": \"lib/ansible/modules/cloud/cloudstack/cs_iso.py\", \n  \"ansible/modules/cloud/cloudstack/cs_loadbalancer_rule.py\": \"lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule.py\", \n  \"ansible/modules/cloud/cloudstack/cs_loadbalancer_rule_member.py\": \"lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule_member.py\", \n  \"ansible/modules/cloud/cloudstack/cs_network.py\": \"lib/ansible/modules/cloud/cloudstack/cs_network.py\", \n  \"ansible/modules/cloud/cloudstack/cs_network_acl.py\": \"lib/ansible/modules/cloud/cloudstack/cs_network_acl.py\", \n  \"ansible/modules/cloud/cloudstack/cs_network_acl_rule.py\": \"lib/ansible/modules/cloud/cloudstack/cs_network_acl_rule.py\", \n  \"ansible/modules/cloud/cloudstack/cs_nic.py\": \"lib/ansible/modules/cloud/cloudstack/_cs_nic.py\", \n  \"ansible/modules/cloud/cloudstack/cs_pod.py\": \"lib/ansible/modules/cloud/cloudstack/cs_pod.py\", \n  \"ansible/modules/cloud/cloudstack/cs_portforward.py\": \"lib/ansible/modules/cloud/cloudstack/cs_portforward.py\", \n  \"ansible/modules/cloud/cloudstack/cs_project.py\": \"lib/ansible/modules/cloud/cloudstack/cs_project.py\", \n  \"ansible/modules/cloud/cloudstack/cs_region.py\": \"lib/ansible/modules/cloud/cloudstack/cs_region.py\", \n  \"ansible/modules/cloud/cloudstack/cs_resourcelimit.py\": \"lib/ansible/modules/cloud/cloudstack/cs_resourcelimit.py\", \n  \"ansible/modules/cloud/cloudstack/cs_role.py\": \"lib/ansible/modules/cloud/cloudstack/cs_role.py\", \n  \"ansible/modules/cloud/cloudstack/cs_router.py\": \"lib/ansible/modules/cloud/cloudstack/cs_router.py\", \n  \"ansible/modules/cloud/cloudstack/cs_securitygroup.py\": \"lib/ansible/modules/cloud/cloudstack/cs_securitygroup.py\", \n  \"ansible/modules/cloud/cloudstack/cs_securitygroup_rule.py\": \"lib/ansible/modules/cloud/cloudstack/cs_securitygroup_rule.py\", \n  \"ansible/modules/cloud/cloudstack/cs_snapshot_policy.py\": \"lib/ansible/modules/cloud/cloudstack/cs_snapshot_policy.py\", \n  \"ansible/modules/cloud/cloudstack/cs_sshkeypair.py\": \"lib/ansible/modules/cloud/cloudstack/cs_sshkeypair.py\", \n  \"ansible/modules/cloud/cloudstack/cs_staticnat.py\": \"lib/ansible/modules/cloud/cloudstack/cs_staticnat.py\", \n  \"ansible/modules/cloud/cloudstack/cs_storage_pool.py\": \"lib/ansible/modules/cloud/cloudstack/cs_storage_pool.py\", \n  \"ansible/modules/cloud/cloudstack/cs_template.py\": \"lib/ansible/modules/cloud/cloudstack/cs_template.py\", \n  \"ansible/modules/cloud/cloudstack/cs_user.py\": \"lib/ansible/modules/cloud/cloudstack/cs_user.py\", \n  \"ansible/modules/cloud/cloudstack/cs_vmsnapshot.py\": \"lib/ansible/modules/cloud/cloudstack/cs_vmsnapshot.py\", \n  \"ansible/modules/cloud/cloudstack/cs_volume.py\": \"lib/ansible/modules/cloud/cloudstack/cs_volume.py\", \n  \"ansible/modules/cloud/cloudstack/cs_vpc.py\": \"lib/ansible/modules/cloud/cloudstack/cs_vpc.py\", \n  \"ansible/modules/cloud/cloudstack/cs_vpn_gateway.py\": \"lib/ansible/modules/cloud/cloudstack/cs_vpn_gateway.py\", \n  \"ansible/modules/cloud/cloudstack/cs_zone.py\": \"lib/ansible/modules/cloud/cloudstack/cs_zone.py\", \n  \"ansible/modules/cloud/cloudstack/cs_zone_facts.py\": \"lib/ansible/modules/cloud/cloudstack/cs_zone_facts.py\", \n  \"ansible/modules/cloud/digital_ocean/digital_ocean.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean.py\", \n  \"ansible/modules/cloud/digital_ocean/digital_ocean_block_storage.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_block_storage.py\", \n  \"ansible/modules/cloud/digital_ocean/digital_ocean_domain.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_domain.py\", \n  \"ansible/modules/cloud/digital_ocean/digital_ocean_floating_ip.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_floating_ip.py\", \n  \"ansible/modules/cloud/digital_ocean/digital_ocean_sshkey.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey.py\", \n  \"ansible/modules/cloud/digital_ocean/digital_ocean_sshkey_facts.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey_facts.py\", \n  \"ansible/modules/cloud/digital_ocean/digital_ocean_tag.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_tag.py\", \n  \"ansible/modules/cloud/dimensiondata/dimensiondata_network.py\": \"lib/ansible/modules/cloud/dimensiondata/dimensiondata_network.py\", \n  \"ansible/modules/cloud/docker/_docker.py\": \"lib/ansible/modules/cloud/docker/_docker.py\", \n  \"ansible/modules/cloud/docker/docker.py\": \"lib/ansible/modules/cloud/docker/_docker.py\", \n  \"ansible/modules/cloud/docker/docker_container.py\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n  \"ansible/modules/cloud/docker/docker_image.py\": \"lib/ansible/modules/cloud/docker/docker_image.py\", \n  \"ansible/modules/cloud/docker/docker_image_facts.py\": \"lib/ansible/modules/cloud/docker/docker_image_facts.py\", \n  \"ansible/modules/cloud/docker/docker_login.py\": \"lib/ansible/modules/cloud/docker/docker_login.py\", \n  \"ansible/modules/cloud/docker/docker_network.py\": \"lib/ansible/modules/cloud/docker/docker_network.py\", \n  \"ansible/modules/cloud/docker/docker_secret.py\": \"lib/ansible/modules/cloud/docker/docker_secret.py\", \n  \"ansible/modules/cloud/docker/docker_service.py\": \"lib/ansible/modules/cloud/docker/docker_service.py\", \n  \"ansible/modules/cloud/docker/docker_volume.py\": \"lib/ansible/modules/cloud/docker/docker_volume.py\", \n  \"ansible/modules/cloud/google/gc_storage.py\": \"lib/ansible/modules/cloud/google/gc_storage.py\", \n  \"ansible/modules/cloud/google/gcdns_record.py\": \"lib/ansible/modules/cloud/google/gcdns_record.py\", \n  \"ansible/modules/cloud/google/gcdns_zone.py\": \"lib/ansible/modules/cloud/google/gcdns_zone.py\", \n  \"ansible/modules/cloud/google/gce.py\": \"lib/ansible/modules/cloud/google/gce.py\", \n  \"ansible/modules/cloud/google/gce_eip.py\": \"lib/ansible/modules/cloud/google/gce_eip.py\", \n  \"ansible/modules/cloud/google/gce_img.py\": \"lib/ansible/modules/cloud/google/gce_img.py\", \n  \"ansible/modules/cloud/google/gce_instance_template.py\": \"lib/ansible/modules/cloud/google/gce_instance_template.py\", \n  \"ansible/modules/cloud/google/gce_labels.py\": \"lib/ansible/modules/cloud/google/gce_labels.py\", \n  \"ansible/modules/cloud/google/gce_lb.py\": \"lib/ansible/modules/cloud/google/gce_lb.py\", \n  \"ansible/modules/cloud/google/gce_mig.py\": \"lib/ansible/modules/cloud/google/gce_mig.py\", \n  \"ansible/modules/cloud/google/gce_net.py\": \"lib/ansible/modules/cloud/google/gce_net.py\", \n  \"ansible/modules/cloud/google/gce_pd.py\": \"lib/ansible/modules/cloud/google/gce_pd.py\", \n  \"ansible/modules/cloud/google/gce_snapshot.py\": \"lib/ansible/modules/cloud/google/gce_snapshot.py\", \n  \"ansible/modules/cloud/google/gce_tag.py\": \"lib/ansible/modules/cloud/google/gce_tag.py\", \n  \"ansible/modules/cloud/google/gcp_backend_service.py\": \"lib/ansible/modules/cloud/google/gcp_backend_service.py\", \n  \"ansible/modules/cloud/google/gcp_forwarding_rule.py\": \"lib/ansible/modules/cloud/google/gcp_forwarding_rule.py\", \n  \"ansible/modules/cloud/google/gcp_healthcheck.py\": \"lib/ansible/modules/cloud/google/gcp_healthcheck.py\", \n  \"ansible/modules/cloud/google/gcp_target_proxy.py\": \"lib/ansible/modules/cloud/google/gcp_target_proxy.py\", \n  \"ansible/modules/cloud/google/gcp_url_map.py\": \"lib/ansible/modules/cloud/google/gcp_url_map.py\", \n  \"ansible/modules/cloud/google/gcpubsub.py\": \"lib/ansible/modules/cloud/google/gcpubsub.py\", \n  \"ansible/modules/cloud/google/gcpubsub_facts.py\": \"lib/ansible/modules/cloud/google/gcpubsub_facts.py\", \n  \"ansible/modules/cloud/google/gcspanner.py\": \"lib/ansible/modules/cloud/google/gcspanner.py\", \n  \"ansible/modules/cloud/linode/linode.py\": \"lib/ansible/modules/cloud/linode/linode.py\", \n  \"ansible/modules/cloud/lxc/lxc_container.py\": \"lib/ansible/modules/cloud/lxc/lxc_container.py\", \n  \"ansible/modules/cloud/lxd/lxd_container.py\": \"lib/ansible/modules/cloud/lxd/lxd_container.py\", \n  \"ansible/modules/cloud/lxd/lxd_profile.py\": \"lib/ansible/modules/cloud/lxd/lxd_profile.py\", \n  \"ansible/modules/cloud/misc/helm.py\": \"lib/ansible/modules/cloud/misc/helm.py\", \n  \"ansible/modules/cloud/misc/ovirt.py\": \"lib/ansible/modules/cloud/misc/ovirt.py\", \n  \"ansible/modules/cloud/misc/proxmox.py\": \"lib/ansible/modules/cloud/misc/proxmox.py\", \n  \"ansible/modules/cloud/misc/proxmox_kvm.py\": \"lib/ansible/modules/cloud/misc/proxmox_kvm.py\", \n  \"ansible/modules/cloud/misc/proxmox_template.py\": \"lib/ansible/modules/cloud/misc/proxmox_template.py\", \n  \"ansible/modules/cloud/misc/rhevm.py\": \"lib/ansible/modules/cloud/misc/rhevm.py\", \n  \"ansible/modules/cloud/misc/serverless.py\": \"lib/ansible/modules/cloud/misc/serverless.py\", \n  \"ansible/modules/cloud/misc/virt.py\": \"lib/ansible/modules/cloud/misc/virt.py\", \n  \"ansible/modules/cloud/misc/virt_net.py\": \"lib/ansible/modules/cloud/misc/virt_net.py\", \n  \"ansible/modules/cloud/misc/virt_pool.py\": \"lib/ansible/modules/cloud/misc/virt_pool.py\", \n  \"ansible/modules/cloud/misc/xenserver_facts.py\": \"lib/ansible/modules/cloud/misc/xenserver_facts.py\", \n  \"ansible/modules/cloud/openstack/README.md\": \"lib/ansible/modules/cloud/openstack/README.md\", \n  \"ansible/modules/cloud/openstack/_os_server_actions.py\": \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n  \"ansible/modules/cloud/openstack/os_auth.py\": \"lib/ansible/modules/cloud/openstack/os_auth.py\", \n  \"ansible/modules/cloud/openstack/os_client_config.py\": \"lib/ansible/modules/cloud/openstack/os_client_config.py\", \n  \"ansible/modules/cloud/openstack/os_flavor_facts.py\": \"lib/ansible/modules/cloud/openstack/os_flavor_facts.py\", \n  \"ansible/modules/cloud/openstack/os_floating_ip.py\": \"lib/ansible/modules/cloud/openstack/os_floating_ip.py\", \n  \"ansible/modules/cloud/openstack/os_group.py\": \"lib/ansible/modules/cloud/openstack/os_group.py\", \n  \"ansible/modules/cloud/openstack/os_image.py\": \"lib/ansible/modules/cloud/openstack/os_image.py\", \n  \"ansible/modules/cloud/openstack/os_image_facts.py\": \"lib/ansible/modules/cloud/openstack/os_image_facts.py\", \n  \"ansible/modules/cloud/openstack/os_ironic.py\": \"lib/ansible/modules/cloud/openstack/os_ironic.py\", \n  \"ansible/modules/cloud/openstack/os_ironic_inspect.py\": \"lib/ansible/modules/cloud/openstack/os_ironic_inspect.py\", \n  \"ansible/modules/cloud/openstack/os_ironic_node.py\": \"lib/ansible/modules/cloud/openstack/os_ironic_node.py\", \n  \"ansible/modules/cloud/openstack/os_keypair.py\": \"lib/ansible/modules/cloud/openstack/os_keypair.py\", \n  \"ansible/modules/cloud/openstack/os_keystone_domain.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_domain.py\", \n  \"ansible/modules/cloud/openstack/os_keystone_domain_facts.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_domain_facts.py\", \n  \"ansible/modules/cloud/openstack/os_keystone_endpoint.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_endpoint.py\", \n  \"ansible/modules/cloud/openstack/os_keystone_role.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_role.py\", \n  \"ansible/modules/cloud/openstack/os_keystone_service.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_service.py\", \n  \"ansible/modules/cloud/openstack/os_network.py\": \"lib/ansible/modules/cloud/openstack/os_network.py\", \n  \"ansible/modules/cloud/openstack/os_networks_facts.py\": \"lib/ansible/modules/cloud/openstack/os_networks_facts.py\", \n  \"ansible/modules/cloud/openstack/os_nova_flavor.py\": \"lib/ansible/modules/cloud/openstack/os_nova_flavor.py\", \n  \"ansible/modules/cloud/openstack/os_nova_host_aggregate.py\": \"lib/ansible/modules/cloud/openstack/os_nova_host_aggregate.py\", \n  \"ansible/modules/cloud/openstack/os_object.py\": \"lib/ansible/modules/cloud/openstack/os_object.py\", \n  \"ansible/modules/cloud/openstack/os_port.py\": \"lib/ansible/modules/cloud/openstack/os_port.py\", \n  \"ansible/modules/cloud/openstack/os_port_facts.py\": \"lib/ansible/modules/cloud/openstack/os_port_facts.py\", \n  \"ansible/modules/cloud/openstack/os_project.py\": \"lib/ansible/modules/cloud/openstack/os_project.py\", \n  \"ansible/modules/cloud/openstack/os_project_facts.py\": \"lib/ansible/modules/cloud/openstack/os_project_facts.py\", \n  \"ansible/modules/cloud/openstack/os_quota.py\": \"lib/ansible/modules/cloud/openstack/os_quota.py\", \n  \"ansible/modules/cloud/openstack/os_recordset.py\": \"lib/ansible/modules/cloud/openstack/os_recordset.py\", \n  \"ansible/modules/cloud/openstack/os_router.py\": \"lib/ansible/modules/cloud/openstack/os_router.py\", \n  \"ansible/modules/cloud/openstack/os_security_group.py\": \"lib/ansible/modules/cloud/openstack/os_security_group.py\", \n  \"ansible/modules/cloud/openstack/os_security_group_rule.py\": \"lib/ansible/modules/cloud/openstack/os_security_group_rule.py\", \n  \"ansible/modules/cloud/openstack/os_server.py\": \"lib/ansible/modules/cloud/openstack/os_server.py\", \n  \"ansible/modules/cloud/openstack/os_server_action.py\": \"lib/ansible/modules/cloud/openstack/os_server_action.py\", \n  \"ansible/modules/cloud/openstack/os_server_actions.py\": \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n  \"ansible/modules/cloud/openstack/os_server_facts.py\": \"lib/ansible/modules/cloud/openstack/os_server_facts.py\", \n  \"ansible/modules/cloud/openstack/os_server_group.py\": \"lib/ansible/modules/cloud/openstack/os_server_group.py\", \n  \"ansible/modules/cloud/openstack/os_server_volume.py\": \"lib/ansible/modules/cloud/openstack/os_server_volume.py\", \n  \"ansible/modules/cloud/openstack/os_stack.py\": \"lib/ansible/modules/cloud/openstack/os_stack.py\", \n  \"ansible/modules/cloud/openstack/os_subnet.py\": \"lib/ansible/modules/cloud/openstack/os_subnet.py\", \n  \"ansible/modules/cloud/openstack/os_subnets_facts.py\": \"lib/ansible/modules/cloud/openstack/os_subnets_facts.py\", \n  \"ansible/modules/cloud/openstack/os_user.py\": \"lib/ansible/modules/cloud/openstack/os_user.py\", \n  \"ansible/modules/cloud/openstack/os_user_facts.py\": \"lib/ansible/modules/cloud/openstack/os_user_facts.py\", \n  \"ansible/modules/cloud/openstack/os_user_group.py\": \"lib/ansible/modules/cloud/openstack/os_user_group.py\", \n  \"ansible/modules/cloud/openstack/os_user_role.py\": \"lib/ansible/modules/cloud/openstack/os_user_role.py\", \n  \"ansible/modules/cloud/openstack/os_volume.py\": \"lib/ansible/modules/cloud/openstack/os_volume.py\", \n  \"ansible/modules/cloud/openstack/os_zone.py\": \"lib/ansible/modules/cloud/openstack/os_zone.py\", \n  \"ansible/modules/cloud/ovh/ovh_ip_loadbalancing_backend.py\": \"lib/ansible/modules/cloud/ovh/ovh_ip_loadbalancing_backend.py\", \n  \"ansible/modules/cloud/ovirt/README.rst\": \"lib/ansible/modules/cloud/ovirt/README.rst\", \n  \"ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\", \n  \"ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\", \n  \"ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\", \n  \"ansible/modules/cloud/ovirt/_ovirt_clusters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\", \n  \"ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\", \n  \"ansible/modules/cloud/ovirt/_ovirt_datacenters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\", \n  \"ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\", \n  \"ansible/modules/cloud/ovirt/_ovirt_disks.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\", \n  \"ansible/modules/cloud/ovirt/_ovirt_external_providers.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\", \n  \"ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\", \n  \"ansible/modules/cloud/ovirt/_ovirt_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\", \n  \"ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_affinity_group.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_group.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_affinity_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_affinity_label.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_label.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_affinity_label_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_label_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_affinity_labels.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_affinity_labels_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_api_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_api_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_auth.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_auth.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_cluster.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_cluster.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_cluster_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_cluster_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_clusters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_clusters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_datacenter.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_datacenter.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_datacenter_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_datacenter_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_datacenters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_datacenters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_disk.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_disk.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_disk_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_disk_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_disks.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_external_provider.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_provider.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_external_provider_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_provider_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_external_providers.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_external_providers_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_group.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_group.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_group_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_group_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_groups_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_host_networks.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_networks.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_host_pm.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_pm.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_host_storage_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_storage_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_hosts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_hosts_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_mac_pools.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_mac_pools.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_networks.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_networks.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_networks_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_networks_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_nics.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_nics.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_nics_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_nics_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_permissions.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_permissions.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_permissions_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_permissions_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_quotas.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_quotas.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_quotas_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_quotas_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_scheduling_policies_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_scheduling_policies_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_snapshots.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_snapshots.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_snapshots_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_snapshots_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_storage_connections.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_connections.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_storage_domains.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_storage_domains_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_storage_templates_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_templates_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_storage_vms_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_vms_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_tags.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_tags.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_tags_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_tags_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_templates.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_templates.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_templates_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_templates_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_users.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_users.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_users_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_users_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_vmpools.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vmpools.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_vmpools_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vmpools_facts.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_vms.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms.py\", \n  \"ansible/modules/cloud/ovirt/ovirt_vms_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms_facts.py\", \n  \"ansible/modules/cloud/packet/packet_device.py\": \"lib/ansible/modules/cloud/packet/packet_device.py\", \n  \"ansible/modules/cloud/packet/packet_sshkey.py\": \"lib/ansible/modules/cloud/packet/packet_sshkey.py\", \n  \"ansible/modules/cloud/profitbricks/profitbricks.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks.py\", \n  \"ansible/modules/cloud/profitbricks/profitbricks_datacenter.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_datacenter.py\", \n  \"ansible/modules/cloud/profitbricks/profitbricks_nic.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_nic.py\", \n  \"ansible/modules/cloud/profitbricks/profitbricks_volume.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume.py\", \n  \"ansible/modules/cloud/profitbricks/profitbricks_volume_attachments.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume_attachments.py\", \n  \"ansible/modules/cloud/pubnub/pubnub_blocks.py\": \"lib/ansible/modules/cloud/pubnub/pubnub_blocks.py\", \n  \"ansible/modules/cloud/rackspace/rax.py\": \"lib/ansible/modules/cloud/rackspace/rax.py\", \n  \"ansible/modules/cloud/rackspace/rax_cbs.py\": \"lib/ansible/modules/cloud/rackspace/rax_cbs.py\", \n  \"ansible/modules/cloud/rackspace/rax_cbs_attachments.py\": \"lib/ansible/modules/cloud/rackspace/rax_cbs_attachments.py\", \n  \"ansible/modules/cloud/rackspace/rax_cdb.py\": \"lib/ansible/modules/cloud/rackspace/rax_cdb.py\", \n  \"ansible/modules/cloud/rackspace/rax_cdb_database.py\": \"lib/ansible/modules/cloud/rackspace/rax_cdb_database.py\", \n  \"ansible/modules/cloud/rackspace/rax_cdb_user.py\": \"lib/ansible/modules/cloud/rackspace/rax_cdb_user.py\", \n  \"ansible/modules/cloud/rackspace/rax_clb.py\": \"lib/ansible/modules/cloud/rackspace/rax_clb.py\", \n  \"ansible/modules/cloud/rackspace/rax_clb_nodes.py\": \"lib/ansible/modules/cloud/rackspace/rax_clb_nodes.py\", \n  \"ansible/modules/cloud/rackspace/rax_clb_ssl.py\": \"lib/ansible/modules/cloud/rackspace/rax_clb_ssl.py\", \n  \"ansible/modules/cloud/rackspace/rax_dns.py\": \"lib/ansible/modules/cloud/rackspace/rax_dns.py\", \n  \"ansible/modules/cloud/rackspace/rax_dns_record.py\": \"lib/ansible/modules/cloud/rackspace/rax_dns_record.py\", \n  \"ansible/modules/cloud/rackspace/rax_facts.py\": \"lib/ansible/modules/cloud/rackspace/rax_facts.py\", \n  \"ansible/modules/cloud/rackspace/rax_files.py\": \"lib/ansible/modules/cloud/rackspace/rax_files.py\", \n  \"ansible/modules/cloud/rackspace/rax_files_objects.py\": \"lib/ansible/modules/cloud/rackspace/rax_files_objects.py\", \n  \"ansible/modules/cloud/rackspace/rax_identity.py\": \"lib/ansible/modules/cloud/rackspace/rax_identity.py\", \n  \"ansible/modules/cloud/rackspace/rax_keypair.py\": \"lib/ansible/modules/cloud/rackspace/rax_keypair.py\", \n  \"ansible/modules/cloud/rackspace/rax_meta.py\": \"lib/ansible/modules/cloud/rackspace/rax_meta.py\", \n  \"ansible/modules/cloud/rackspace/rax_mon_alarm.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_alarm.py\", \n  \"ansible/modules/cloud/rackspace/rax_mon_check.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_check.py\", \n  \"ansible/modules/cloud/rackspace/rax_mon_entity.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_entity.py\", \n  \"ansible/modules/cloud/rackspace/rax_mon_notification.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_notification.py\", \n  \"ansible/modules/cloud/rackspace/rax_mon_notification_plan.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_notification_plan.py\", \n  \"ansible/modules/cloud/rackspace/rax_network.py\": \"lib/ansible/modules/cloud/rackspace/rax_network.py\", \n  \"ansible/modules/cloud/rackspace/rax_queue.py\": \"lib/ansible/modules/cloud/rackspace/rax_queue.py\", \n  \"ansible/modules/cloud/rackspace/rax_scaling_group.py\": \"lib/ansible/modules/cloud/rackspace/rax_scaling_group.py\", \n  \"ansible/modules/cloud/rackspace/rax_scaling_policy.py\": \"lib/ansible/modules/cloud/rackspace/rax_scaling_policy.py\", \n  \"ansible/modules/cloud/smartos/imgadm.py\": \"lib/ansible/modules/cloud/smartos/imgadm.py\", \n  \"ansible/modules/cloud/smartos/smartos_image_facts.py\": \"lib/ansible/modules/cloud/smartos/smartos_image_facts.py\", \n  \"ansible/modules/cloud/smartos/vmadm.py\": \"lib/ansible/modules/cloud/smartos/vmadm.py\", \n  \"ansible/modules/cloud/softlayer/sl_vm.py\": \"lib/ansible/modules/cloud/softlayer/sl_vm.py\", \n  \"ansible/modules/cloud/univention/udm_dns_record.py\": \"lib/ansible/modules/cloud/univention/udm_dns_record.py\", \n  \"ansible/modules/cloud/univention/udm_dns_zone.py\": \"lib/ansible/modules/cloud/univention/udm_dns_zone.py\", \n  \"ansible/modules/cloud/univention/udm_group.py\": \"lib/ansible/modules/cloud/univention/udm_group.py\", \n  \"ansible/modules/cloud/univention/udm_share.py\": \"lib/ansible/modules/cloud/univention/udm_share.py\", \n  \"ansible/modules/cloud/univention/udm_user.py\": \"lib/ansible/modules/cloud/univention/udm_user.py\", \n  \"ansible/modules/cloud/vmware/vca_fw.py\": \"lib/ansible/modules/cloud/vmware/vca_fw.py\", \n  \"ansible/modules/cloud/vmware/vca_nat.py\": \"lib/ansible/modules/cloud/vmware/vca_nat.py\", \n  \"ansible/modules/cloud/vmware/vca_vapp.py\": \"lib/ansible/modules/cloud/vmware/vca_vapp.py\", \n  \"ansible/modules/cloud/vmware/vcenter_license.py\": \"lib/ansible/modules/cloud/vmware/vcenter_license.py\", \n  \"ansible/modules/cloud/vmware/vmware_cluster.py\": \"lib/ansible/modules/cloud/vmware/vmware_cluster.py\", \n  \"ansible/modules/cloud/vmware/vmware_datacenter.py\": \"lib/ansible/modules/cloud/vmware/vmware_datacenter.py\", \n  \"ansible/modules/cloud/vmware/vmware_dns_config.py\": \"lib/ansible/modules/cloud/vmware/vmware_dns_config.py\", \n  \"ansible/modules/cloud/vmware/vmware_dvs_host.py\": \"lib/ansible/modules/cloud/vmware/vmware_dvs_host.py\", \n  \"ansible/modules/cloud/vmware/vmware_dvs_portgroup.py\": \"lib/ansible/modules/cloud/vmware/vmware_dvs_portgroup.py\", \n  \"ansible/modules/cloud/vmware/vmware_dvswitch.py\": \"lib/ansible/modules/cloud/vmware/vmware_dvswitch.py\", \n  \"ansible/modules/cloud/vmware/vmware_guest.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n  \"ansible/modules/cloud/vmware/vmware_guest_facts.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_facts.py\", \n  \"ansible/modules/cloud/vmware/vmware_guest_find.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_find.py\", \n  \"ansible/modules/cloud/vmware/vmware_guest_powerstate.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_powerstate.py\", \n  \"ansible/modules/cloud/vmware/vmware_guest_snapshot.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_snapshot.py\", \n  \"ansible/modules/cloud/vmware/vmware_guest_tools_wait.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_tools_wait.py\", \n  \"ansible/modules/cloud/vmware/vmware_host.py\": \"lib/ansible/modules/cloud/vmware/vmware_host.py\", \n  \"ansible/modules/cloud/vmware/vmware_local_user_manager.py\": \"lib/ansible/modules/cloud/vmware/vmware_local_user_manager.py\", \n  \"ansible/modules/cloud/vmware/vmware_maintenancemode.py\": \"lib/ansible/modules/cloud/vmware/vmware_maintenancemode.py\", \n  \"ansible/modules/cloud/vmware/vmware_migrate_vmk.py\": \"lib/ansible/modules/cloud/vmware/vmware_migrate_vmk.py\", \n  \"ansible/modules/cloud/vmware/vmware_portgroup.py\": \"lib/ansible/modules/cloud/vmware/vmware_portgroup.py\", \n  \"ansible/modules/cloud/vmware/vmware_resource_pool.py\": \"lib/ansible/modules/cloud/vmware/vmware_resource_pool.py\", \n  \"ansible/modules/cloud/vmware/vmware_target_canonical_facts.py\": \"lib/ansible/modules/cloud/vmware/vmware_target_canonical_facts.py\", \n  \"ansible/modules/cloud/vmware/vmware_vm_facts.py\": \"lib/ansible/modules/cloud/vmware/vmware_vm_facts.py\", \n  \"ansible/modules/cloud/vmware/vmware_vm_shell.py\": \"lib/ansible/modules/cloud/vmware/vmware_vm_shell.py\", \n  \"ansible/modules/cloud/vmware/vmware_vm_vss_dvs_migrate.py\": \"lib/ansible/modules/cloud/vmware/vmware_vm_vss_dvs_migrate.py\", \n  \"ansible/modules/cloud/vmware/vmware_vmkernel.py\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel.py\", \n  \"ansible/modules/cloud/vmware/vmware_vmkernel_ip_config.py\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel_ip_config.py\", \n  \"ansible/modules/cloud/vmware/vmware_vmotion.py\": \"lib/ansible/modules/cloud/vmware/vmware_vmotion.py\", \n  \"ansible/modules/cloud/vmware/vmware_vsan_cluster.py\": \"lib/ansible/modules/cloud/vmware/vmware_vsan_cluster.py\", \n  \"ansible/modules/cloud/vmware/vmware_vswitch.py\": \"lib/ansible/modules/cloud/vmware/vmware_vswitch.py\", \n  \"ansible/modules/cloud/vmware/vsphere_copy.py\": \"lib/ansible/modules/cloud/vmware/vsphere_copy.py\", \n  \"ansible/modules/cloud/vmware/vsphere_guest.py\": \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\", \n  \"ansible/modules/cloud/webfaction/webfaction_app.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_app.py\", \n  \"ansible/modules/cloud/webfaction/webfaction_db.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_db.py\", \n  \"ansible/modules/cloud/webfaction/webfaction_domain.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_domain.py\", \n  \"ansible/modules/cloud/webfaction/webfaction_mailbox.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_mailbox.py\", \n  \"ansible/modules/cloud/webfaction/webfaction_site.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_site.py\", \n  \"ansible/modules/clustering/consul.py\": \"lib/ansible/modules/clustering/consul.py\", \n  \"ansible/modules/clustering/consul_acl.py\": \"lib/ansible/modules/clustering/consul_acl.py\", \n  \"ansible/modules/clustering/consul_kv.py\": \"lib/ansible/modules/clustering/consul_kv.py\", \n  \"ansible/modules/clustering/consul_session.py\": \"lib/ansible/modules/clustering/consul_session.py\", \n  \"ansible/modules/clustering/kubernetes.py\": \"lib/ansible/modules/clustering/kubernetes.py\", \n  \"ansible/modules/clustering/oc.py\": \"lib/ansible/modules/clustering/oc.py\", \n  \"ansible/modules/clustering/pacemaker_cluster.py\": \"lib/ansible/modules/clustering/pacemaker_cluster.py\", \n  \"ansible/modules/clustering/znode.py\": \"lib/ansible/modules/clustering/znode.py\", \n  \"ansible/modules/commands/command.py\": \"lib/ansible/modules/commands/command.py\", \n  \"ansible/modules/commands/expect.py\": \"lib/ansible/modules/commands/expect.py\", \n  \"ansible/modules/commands/raw.py\": \"lib/ansible/modules/commands/raw.py\", \n  \"ansible/modules/commands/script.py\": \"lib/ansible/modules/commands/script.py\", \n  \"ansible/modules/commands/shell.py\": \"lib/ansible/modules/commands/shell.py\", \n  \"ansible/modules/commands/telnet.py\": \"lib/ansible/modules/commands/telnet.py\", \n  \"ansible/modules/crypto/openssl_certificate.py\": \"lib/ansible/modules/crypto/openssl_certificate.py\", \n  \"ansible/modules/crypto/openssl_csr.py\": \"lib/ansible/modules/crypto/openssl_csr.py\", \n  \"ansible/modules/crypto/openssl_privatekey.py\": \"lib/ansible/modules/crypto/openssl_privatekey.py\", \n  \"ansible/modules/crypto/openssl_publickey.py\": \"lib/ansible/modules/crypto/openssl_publickey.py\", \n  \"ansible/modules/database/influxdb/influxdb_database.py\": \"lib/ansible/modules/database/influxdb/influxdb_database.py\", \n  \"ansible/modules/database/influxdb/influxdb_retention_policy.py\": \"lib/ansible/modules/database/influxdb/influxdb_retention_policy.py\", \n  \"ansible/modules/database/misc/elasticsearch_plugin.py\": \"lib/ansible/modules/database/misc/elasticsearch_plugin.py\", \n  \"ansible/modules/database/misc/kibana_plugin.py\": \"lib/ansible/modules/database/misc/kibana_plugin.py\", \n  \"ansible/modules/database/misc/redis.py\": \"lib/ansible/modules/database/misc/redis.py\", \n  \"ansible/modules/database/misc/riak.py\": \"lib/ansible/modules/database/misc/riak.py\", \n  \"ansible/modules/database/mongodb/mongodb_parameter.py\": \"lib/ansible/modules/database/mongodb/mongodb_parameter.py\", \n  \"ansible/modules/database/mongodb/mongodb_user.py\": \"lib/ansible/modules/database/mongodb/mongodb_user.py\", \n  \"ansible/modules/database/mssql/mssql_db.py\": \"lib/ansible/modules/database/mssql/mssql_db.py\", \n  \"ansible/modules/database/mysql/mysql_db.py\": \"lib/ansible/modules/database/mysql/mysql_db.py\", \n  \"ansible/modules/database/mysql/mysql_replication.py\": \"lib/ansible/modules/database/mysql/mysql_replication.py\", \n  \"ansible/modules/database/mysql/mysql_user.py\": \"lib/ansible/modules/database/mysql/mysql_user.py\", \n  \"ansible/modules/database/mysql/mysql_variables.py\": \"lib/ansible/modules/database/mysql/mysql_variables.py\", \n  \"ansible/modules/database/postgresql/postgresql_db.py\": \"lib/ansible/modules/database/postgresql/postgresql_db.py\", \n  \"ansible/modules/database/postgresql/postgresql_ext.py\": \"lib/ansible/modules/database/postgresql/postgresql_ext.py\", \n  \"ansible/modules/database/postgresql/postgresql_lang.py\": \"lib/ansible/modules/database/postgresql/postgresql_lang.py\", \n  \"ansible/modules/database/postgresql/postgresql_privs.py\": \"lib/ansible/modules/database/postgresql/postgresql_privs.py\", \n  \"ansible/modules/database/postgresql/postgresql_schema.py\": \"lib/ansible/modules/database/postgresql/postgresql_schema.py\", \n  \"ansible/modules/database/postgresql/postgresql_user.py\": \"lib/ansible/modules/database/postgresql/postgresql_user.py\", \n  \"ansible/modules/database/proxysql/proxysql_backend_servers.py\": \"lib/ansible/modules/database/proxysql/proxysql_backend_servers.py\", \n  \"ansible/modules/database/proxysql/proxysql_global_variables.py\": \"lib/ansible/modules/database/proxysql/proxysql_global_variables.py\", \n  \"ansible/modules/database/proxysql/proxysql_manage_config.py\": \"lib/ansible/modules/database/proxysql/proxysql_manage_config.py\", \n  \"ansible/modules/database/proxysql/proxysql_mysql_users.py\": \"lib/ansible/modules/database/proxysql/proxysql_mysql_users.py\", \n  \"ansible/modules/database/proxysql/proxysql_query_rules.py\": \"lib/ansible/modules/database/proxysql/proxysql_query_rules.py\", \n  \"ansible/modules/database/proxysql/proxysql_replication_hostgroups.py\": \"lib/ansible/modules/database/proxysql/proxysql_replication_hostgroups.py\", \n  \"ansible/modules/database/proxysql/proxysql_scheduler.py\": \"lib/ansible/modules/database/proxysql/proxysql_scheduler.py\", \n  \"ansible/modules/database/vertica/vertica_configuration.py\": \"lib/ansible/modules/database/vertica/vertica_configuration.py\", \n  \"ansible/modules/database/vertica/vertica_facts.py\": \"lib/ansible/modules/database/vertica/vertica_facts.py\", \n  \"ansible/modules/database/vertica/vertica_role.py\": \"lib/ansible/modules/database/vertica/vertica_role.py\", \n  \"ansible/modules/database/vertica/vertica_schema.py\": \"lib/ansible/modules/database/vertica/vertica_schema.py\", \n  \"ansible/modules/database/vertica/vertica_user.py\": \"lib/ansible/modules/database/vertica/vertica_user.py\", \n  \"ansible/modules/extras/packaging/os/macports.py\": [\n    \"lib/ansible/modules/packaging/os/macports.py\"\n  ], \n  \"ansible/modules/files/acl.py\": \"lib/ansible/modules/files/acl.py\", \n  \"ansible/modules/files/archive.py\": \"lib/ansible/modules/files/archive.py\", \n  \"ansible/modules/files/assemble.py\": \"lib/ansible/modules/files/assemble.py\", \n  \"ansible/modules/files/blockinfile.py\": \"lib/ansible/modules/files/blockinfile.py\", \n  \"ansible/modules/files/copy.py\": \"lib/ansible/modules/files/copy.py\", \n  \"ansible/modules/files/fetch.py\": \"lib/ansible/modules/files/fetch.py\", \n  \"ansible/modules/files/file.py\": \"lib/ansible/modules/files/file.py\", \n  \"ansible/modules/files/find.py\": \"lib/ansible/modules/files/find.py\", \n  \"ansible/modules/files/ini_file.py\": \"lib/ansible/modules/files/ini_file.py\", \n  \"ansible/modules/files/iso_extract.py\": \"lib/ansible/modules/files/iso_extract.py\", \n  \"ansible/modules/files/lineinfile.py\": \"lib/ansible/modules/files/lineinfile.py\", \n  \"ansible/modules/files/patch.py\": \"lib/ansible/modules/files/patch.py\", \n  \"ansible/modules/files/replace.py\": \"lib/ansible/modules/files/replace.py\", \n  \"ansible/modules/files/stat.py\": \"lib/ansible/modules/files/stat.py\", \n  \"ansible/modules/files/synchronize.py\": \"lib/ansible/modules/files/synchronize.py\", \n  \"ansible/modules/files/tempfile.py\": \"lib/ansible/modules/files/tempfile.py\", \n  \"ansible/modules/files/template.py\": \"lib/ansible/modules/files/template.py\", \n  \"ansible/modules/files/unarchive.py\": \"lib/ansible/modules/files/unarchive.py\", \n  \"ansible/modules/files/xattr.py\": \"lib/ansible/modules/files/xattr.py\", \n  \"ansible/modules/files/xml.py\": \"lib/ansible/modules/files/xml.py\", \n  \"ansible/modules/identity/cyberark/cyberark_authentication.py\": \"lib/ansible/modules/identity/cyberark/cyberark_authentication.py\", \n  \"ansible/modules/identity/cyberark/cyberark_user.py\": \"lib/ansible/modules/identity/cyberark/cyberark_user.py\", \n  \"ansible/modules/identity/ipa/ipa_dnsrecord.py\": \"lib/ansible/modules/identity/ipa/ipa_dnsrecord.py\", \n  \"ansible/modules/identity/ipa/ipa_dnszone.py\": \"lib/ansible/modules/identity/ipa/ipa_dnszone.py\", \n  \"ansible/modules/identity/ipa/ipa_group.py\": \"lib/ansible/modules/identity/ipa/ipa_group.py\", \n  \"ansible/modules/identity/ipa/ipa_hbacrule.py\": \"lib/ansible/modules/identity/ipa/ipa_hbacrule.py\", \n  \"ansible/modules/identity/ipa/ipa_host.py\": \"lib/ansible/modules/identity/ipa/ipa_host.py\", \n  \"ansible/modules/identity/ipa/ipa_hostgroup.py\": \"lib/ansible/modules/identity/ipa/ipa_hostgroup.py\", \n  \"ansible/modules/identity/ipa/ipa_role.py\": \"lib/ansible/modules/identity/ipa/ipa_role.py\", \n  \"ansible/modules/identity/ipa/ipa_sudocmd.py\": \"lib/ansible/modules/identity/ipa/ipa_sudocmd.py\", \n  \"ansible/modules/identity/ipa/ipa_sudocmdgroup.py\": \"lib/ansible/modules/identity/ipa/ipa_sudocmdgroup.py\", \n  \"ansible/modules/identity/ipa/ipa_sudorule.py\": \"lib/ansible/modules/identity/ipa/ipa_sudorule.py\", \n  \"ansible/modules/identity/ipa/ipa_user.py\": \"lib/ansible/modules/identity/ipa/ipa_user.py\", \n  \"ansible/modules/identity/opendj/opendj_backendprop.py\": \"lib/ansible/modules/identity/opendj/opendj_backendprop.py\", \n  \"ansible/modules/inventory/add_host.py\": \"lib/ansible/modules/inventory/add_host.py\", \n  \"ansible/modules/inventory/group_by.py\": \"lib/ansible/modules/inventory/group_by.py\", \n  \"ansible/modules/messaging/rabbitmq_binding.py\": \"lib/ansible/modules/messaging/rabbitmq_binding.py\", \n  \"ansible/modules/messaging/rabbitmq_exchange.py\": \"lib/ansible/modules/messaging/rabbitmq_exchange.py\", \n  \"ansible/modules/messaging/rabbitmq_parameter.py\": \"lib/ansible/modules/messaging/rabbitmq_parameter.py\", \n  \"ansible/modules/messaging/rabbitmq_plugin.py\": \"lib/ansible/modules/messaging/rabbitmq_plugin.py\", \n  \"ansible/modules/messaging/rabbitmq_policy.py\": \"lib/ansible/modules/messaging/rabbitmq_policy.py\", \n  \"ansible/modules/messaging/rabbitmq_queue.py\": \"lib/ansible/modules/messaging/rabbitmq_queue.py\", \n  \"ansible/modules/messaging/rabbitmq_user.py\": \"lib/ansible/modules/messaging/rabbitmq_user.py\", \n  \"ansible/modules/messaging/rabbitmq_vhost.py\": \"lib/ansible/modules/messaging/rabbitmq_vhost.py\", \n  \"ansible/modules/monitoring/airbrake_deployment.py\": \"lib/ansible/modules/monitoring/airbrake_deployment.py\", \n  \"ansible/modules/monitoring/bigpanda.py\": \"lib/ansible/modules/monitoring/bigpanda.py\", \n  \"ansible/modules/monitoring/circonus_annotation.py\": \"lib/ansible/modules/monitoring/circonus_annotation.py\", \n  \"ansible/modules/monitoring/datadog_event.py\": \"lib/ansible/modules/monitoring/datadog_event.py\", \n  \"ansible/modules/monitoring/datadog_monitor.py\": \"lib/ansible/modules/monitoring/datadog_monitor.py\", \n  \"ansible/modules/monitoring/honeybadger_deployment.py\": \"lib/ansible/modules/monitoring/honeybadger_deployment.py\", \n  \"ansible/modules/monitoring/icinga2_feature.py\": \"lib/ansible/modules/monitoring/icinga2_feature.py\", \n  \"ansible/modules/monitoring/librato_annotation.py\": \"lib/ansible/modules/monitoring/librato_annotation.py\", \n  \"ansible/modules/monitoring/logentries.py\": \"lib/ansible/modules/monitoring/logentries.py\", \n  \"ansible/modules/monitoring/logicmonitor.py\": \"lib/ansible/modules/monitoring/logicmonitor.py\", \n  \"ansible/modules/monitoring/logicmonitor_facts.py\": \"lib/ansible/modules/monitoring/logicmonitor_facts.py\", \n  \"ansible/modules/monitoring/logstash_plugin.py\": \"lib/ansible/modules/monitoring/logstash_plugin.py\", \n  \"ansible/modules/monitoring/monit.py\": \"lib/ansible/modules/monitoring/monit.py\", \n  \"ansible/modules/monitoring/nagios.py\": \"lib/ansible/modules/monitoring/nagios.py\", \n  \"ansible/modules/monitoring/newrelic_deployment.py\": \"lib/ansible/modules/monitoring/newrelic_deployment.py\", \n  \"ansible/modules/monitoring/pagerduty.py\": \"lib/ansible/modules/monitoring/pagerduty.py\", \n  \"ansible/modules/monitoring/pagerduty_alert.py\": \"lib/ansible/modules/monitoring/pagerduty_alert.py\", \n  \"ansible/modules/monitoring/pingdom.py\": \"lib/ansible/modules/monitoring/pingdom.py\", \n  \"ansible/modules/monitoring/rollbar_deployment.py\": \"lib/ansible/modules/monitoring/rollbar_deployment.py\", \n  \"ansible/modules/monitoring/sensu_check.py\": \"lib/ansible/modules/monitoring/sensu_check.py\", \n  \"ansible/modules/monitoring/sensu_client.py\": \"lib/ansible/modules/monitoring/sensu_client.py\", \n  \"ansible/modules/monitoring/sensu_handler.py\": \"lib/ansible/modules/monitoring/sensu_handler.py\", \n  \"ansible/modules/monitoring/sensu_silence.py\": \"lib/ansible/modules/monitoring/sensu_silence.py\", \n  \"ansible/modules/monitoring/sensu_subscription.py\": \"lib/ansible/modules/monitoring/sensu_subscription.py\", \n  \"ansible/modules/monitoring/stackdriver.py\": \"lib/ansible/modules/monitoring/stackdriver.py\", \n  \"ansible/modules/monitoring/statusio_maintenance.py\": \"lib/ansible/modules/monitoring/statusio_maintenance.py\", \n  \"ansible/modules/monitoring/uptimerobot.py\": \"lib/ansible/modules/monitoring/uptimerobot.py\", \n  \"ansible/modules/monitoring/zabbix/zabbix_group.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_group.py\", \n  \"ansible/modules/monitoring/zabbix/zabbix_host.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_host.py\", \n  \"ansible/modules/monitoring/zabbix/zabbix_hostmacro.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_hostmacro.py\", \n  \"ansible/modules/monitoring/zabbix/zabbix_maintenance.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_maintenance.py\", \n  \"ansible/modules/monitoring/zabbix/zabbix_proxy.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_proxy.py\", \n  \"ansible/modules/monitoring/zabbix/zabbix_screen.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_screen.py\", \n  \"ansible/modules/monitoring/zabbix/zabbix_template.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_template.py\", \n  \"ansible/modules/net_tools/basics/get_url.py\": \"lib/ansible/modules/net_tools/basics/get_url.py\", \n  \"ansible/modules/net_tools/basics/slurp.py\": \"lib/ansible/modules/net_tools/basics/slurp.py\", \n  \"ansible/modules/net_tools/basics/uri.py\": \"lib/ansible/modules/net_tools/basics/uri.py\", \n  \"ansible/modules/net_tools/cloudflare_dns.py\": \"lib/ansible/modules/net_tools/cloudflare_dns.py\", \n  \"ansible/modules/net_tools/dnsimple.py\": \"lib/ansible/modules/net_tools/dnsimple.py\", \n  \"ansible/modules/net_tools/dnsmadeeasy.py\": \"lib/ansible/modules/net_tools/dnsmadeeasy.py\", \n  \"ansible/modules/net_tools/exoscale/exo_dns_domain.py\": \"lib/ansible/modules/net_tools/exoscale/exo_dns_domain.py\", \n  \"ansible/modules/net_tools/exoscale/exo_dns_record.py\": \"lib/ansible/modules/net_tools/exoscale/exo_dns_record.py\", \n  \"ansible/modules/net_tools/haproxy.py\": \"lib/ansible/modules/net_tools/haproxy.py\", \n  \"ansible/modules/net_tools/infinity/infinity.py\": \"lib/ansible/modules/net_tools/infinity/infinity.py\", \n  \"ansible/modules/net_tools/ipify_facts.py\": \"lib/ansible/modules/net_tools/ipify_facts.py\", \n  \"ansible/modules/net_tools/ipinfoio_facts.py\": \"lib/ansible/modules/net_tools/ipinfoio_facts.py\", \n  \"ansible/modules/net_tools/ldap/ldap_attr.py\": \"lib/ansible/modules/net_tools/ldap/ldap_attr.py\", \n  \"ansible/modules/net_tools/ldap/ldap_entry.py\": \"lib/ansible/modules/net_tools/ldap/ldap_entry.py\", \n  \"ansible/modules/net_tools/lldp.py\": \"lib/ansible/modules/net_tools/lldp.py\", \n  \"ansible/modules/net_tools/nmcli.py\": \"lib/ansible/modules/net_tools/nmcli.py\", \n  \"ansible/modules/net_tools/nsupdate.py\": \"lib/ansible/modules/net_tools/nsupdate.py\", \n  \"ansible/modules/net_tools/omapi_host.py\": \"lib/ansible/modules/net_tools/omapi_host.py\", \n  \"ansible/modules/net_tools/snmp_facts.py\": \"lib/ansible/modules/net_tools/snmp_facts.py\", \n  \"ansible/modules/network/a10/a10_server.py\": \"lib/ansible/modules/network/a10/a10_server.py\", \n  \"ansible/modules/network/a10/a10_server_axapi3.py\": \"lib/ansible/modules/network/a10/a10_server_axapi3.py\", \n  \"ansible/modules/network/a10/a10_service_group.py\": \"lib/ansible/modules/network/a10/a10_service_group.py\", \n  \"ansible/modules/network/a10/a10_virtual_server.py\": \"lib/ansible/modules/network/a10/a10_virtual_server.py\", \n  \"ansible/modules/network/aci/aci_aep.py\": \"lib/ansible/modules/network/aci/aci_aep.py\", \n  \"ansible/modules/network/aci/aci_ap.py\": \"lib/ansible/modules/network/aci/aci_ap.py\", \n  \"ansible/modules/network/aci/aci_bd.py\": \"lib/ansible/modules/network/aci/aci_bd.py\", \n  \"ansible/modules/network/aci/aci_bd_subnet.py\": \"lib/ansible/modules/network/aci/aci_bd_subnet.py\", \n  \"ansible/modules/network/aci/aci_bd_to_l3out.py\": \"lib/ansible/modules/network/aci/aci_bd_to_l3out.py\", \n  \"ansible/modules/network/aci/aci_config_rollback.py\": \"lib/ansible/modules/network/aci/aci_config_rollback.py\", \n  \"ansible/modules/network/aci/aci_config_snapshot.py\": \"lib/ansible/modules/network/aci/aci_config_snapshot.py\", \n  \"ansible/modules/network/aci/aci_contract.py\": \"lib/ansible/modules/network/aci/aci_contract.py\", \n  \"ansible/modules/network/aci/aci_contract_subject.py\": \"lib/ansible/modules/network/aci/aci_contract_subject.py\", \n  \"ansible/modules/network/aci/aci_contract_subject_to_filter.py\": \"lib/ansible/modules/network/aci/aci_contract_subject_to_filter.py\", \n  \"ansible/modules/network/aci/aci_epg.py\": \"lib/ansible/modules/network/aci/aci_epg.py\", \n  \"ansible/modules/network/aci/aci_epg_monitoring_policy.py\": \"lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py\", \n  \"ansible/modules/network/aci/aci_epg_to_contract.py\": \"lib/ansible/modules/network/aci/aci_epg_to_contract.py\", \n  \"ansible/modules/network/aci/aci_epg_to_domain.py\": \"lib/ansible/modules/network/aci/aci_epg_to_domain.py\", \n  \"ansible/modules/network/aci/aci_filter.py\": \"lib/ansible/modules/network/aci/aci_filter.py\", \n  \"ansible/modules/network/aci/aci_filter_entry.py\": \"lib/ansible/modules/network/aci/aci_filter_entry.py\", \n  \"ansible/modules/network/aci/aci_intf_policy_fc.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_fc.py\", \n  \"ansible/modules/network/aci/aci_intf_policy_l2.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_l2.py\", \n  \"ansible/modules/network/aci/aci_intf_policy_lldp.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_lldp.py\", \n  \"ansible/modules/network/aci/aci_intf_policy_mcp.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_mcp.py\", \n  \"ansible/modules/network/aci/aci_intf_policy_port_channel.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_port_channel.py\", \n  \"ansible/modules/network/aci/aci_intf_policy_port_security.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_port_security.py\", \n  \"ansible/modules/network/aci/aci_l3out_route_tag_policy.py\": \"lib/ansible/modules/network/aci/aci_l3out_route_tag_policy.py\", \n  \"ansible/modules/network/aci/aci_rest.py\": \"lib/ansible/modules/network/aci/aci_rest.py\", \n  \"ansible/modules/network/aci/aci_taboo_contract.py\": \"lib/ansible/modules/network/aci/aci_taboo_contract.py\", \n  \"ansible/modules/network/aci/aci_tenant.py\": \"lib/ansible/modules/network/aci/aci_tenant.py\", \n  \"ansible/modules/network/aci/aci_tenant_action_rule_profile.py\": \"lib/ansible/modules/network/aci/aci_tenant_action_rule_profile.py\", \n  \"ansible/modules/network/aci/aci_tenant_ep_retention_policy.py\": \"lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py\", \n  \"ansible/modules/network/aci/aci_tenant_span_dst_group.py\": \"lib/ansible/modules/network/aci/aci_tenant_span_dst_group.py\", \n  \"ansible/modules/network/aci/aci_tenant_span_src_group.py\": \"lib/ansible/modules/network/aci/aci_tenant_span_src_group.py\", \n  \"ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py\": \"lib/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py\", \n  \"ansible/modules/network/aci/aci_vrf.py\": \"lib/ansible/modules/network/aci/aci_vrf.py\", \n  \"ansible/modules/network/aireos/aireos_command.py\": \"lib/ansible/modules/network/aireos/aireos_command.py\", \n  \"ansible/modules/network/aireos/aireos_config.py\": \"lib/ansible/modules/network/aireos/aireos_config.py\", \n  \"ansible/modules/network/aos/aos_asn_pool.py\": \"lib/ansible/modules/network/aos/aos_asn_pool.py\", \n  \"ansible/modules/network/aos/aos_blueprint.py\": \"lib/ansible/modules/network/aos/aos_blueprint.py\", \n  \"ansible/modules/network/aos/aos_blueprint_param.py\": \"lib/ansible/modules/network/aos/aos_blueprint_param.py\", \n  \"ansible/modules/network/aos/aos_blueprint_virtnet.py\": \"lib/ansible/modules/network/aos/aos_blueprint_virtnet.py\", \n  \"ansible/modules/network/aos/aos_device.py\": \"lib/ansible/modules/network/aos/aos_device.py\", \n  \"ansible/modules/network/aos/aos_external_router.py\": \"lib/ansible/modules/network/aos/aos_external_router.py\", \n  \"ansible/modules/network/aos/aos_ip_pool.py\": \"lib/ansible/modules/network/aos/aos_ip_pool.py\", \n  \"ansible/modules/network/aos/aos_logical_device.py\": \"lib/ansible/modules/network/aos/aos_logical_device.py\", \n  \"ansible/modules/network/aos/aos_logical_device_map.py\": \"lib/ansible/modules/network/aos/aos_logical_device_map.py\", \n  \"ansible/modules/network/aos/aos_login.py\": \"lib/ansible/modules/network/aos/aos_login.py\", \n  \"ansible/modules/network/aos/aos_rack_type.py\": \"lib/ansible/modules/network/aos/aos_rack_type.py\", \n  \"ansible/modules/network/aos/aos_template.py\": \"lib/ansible/modules/network/aos/aos_template.py\", \n  \"ansible/modules/network/aruba/aruba_command.py\": \"lib/ansible/modules/network/aruba/aruba_command.py\", \n  \"ansible/modules/network/aruba/aruba_config.py\": \"lib/ansible/modules/network/aruba/aruba_config.py\", \n  \"ansible/modules/network/asa/asa_acl.py\": \"lib/ansible/modules/network/asa/asa_acl.py\", \n  \"ansible/modules/network/asa/asa_command.py\": \"lib/ansible/modules/network/asa/asa_command.py\", \n  \"ansible/modules/network/asa/asa_config.py\": \"lib/ansible/modules/network/asa/asa_config.py\", \n  \"ansible/modules/network/avi/avi_actiongroupconfig.py\": \"lib/ansible/modules/network/avi/avi_actiongroupconfig.py\", \n  \"ansible/modules/network/avi/avi_alertconfig.py\": \"lib/ansible/modules/network/avi/avi_alertconfig.py\", \n  \"ansible/modules/network/avi/avi_alertemailconfig.py\": \"lib/ansible/modules/network/avi/avi_alertemailconfig.py\", \n  \"ansible/modules/network/avi/avi_alertscriptconfig.py\": \"lib/ansible/modules/network/avi/avi_alertscriptconfig.py\", \n  \"ansible/modules/network/avi/avi_alertsyslogconfig.py\": \"lib/ansible/modules/network/avi/avi_alertsyslogconfig.py\", \n  \"ansible/modules/network/avi/avi_analyticsprofile.py\": \"lib/ansible/modules/network/avi/avi_analyticsprofile.py\", \n  \"ansible/modules/network/avi/avi_api_session.py\": \"lib/ansible/modules/network/avi/avi_api_session.py\", \n  \"ansible/modules/network/avi/avi_applicationpersistenceprofile.py\": \"lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py\", \n  \"ansible/modules/network/avi/avi_applicationprofile.py\": \"lib/ansible/modules/network/avi/avi_applicationprofile.py\", \n  \"ansible/modules/network/avi/avi_authprofile.py\": \"lib/ansible/modules/network/avi/avi_authprofile.py\", \n  \"ansible/modules/network/avi/avi_backup.py\": \"lib/ansible/modules/network/avi/avi_backup.py\", \n  \"ansible/modules/network/avi/avi_backupconfiguration.py\": \"lib/ansible/modules/network/avi/avi_backupconfiguration.py\", \n  \"ansible/modules/network/avi/avi_certificatemanagementprofile.py\": \"lib/ansible/modules/network/avi/avi_certificatemanagementprofile.py\", \n  \"ansible/modules/network/avi/avi_cloud.py\": \"lib/ansible/modules/network/avi/avi_cloud.py\", \n  \"ansible/modules/network/avi/avi_cloudconnectoruser.py\": \"lib/ansible/modules/network/avi/avi_cloudconnectoruser.py\", \n  \"ansible/modules/network/avi/avi_cloudproperties.py\": \"lib/ansible/modules/network/avi/avi_cloudproperties.py\", \n  \"ansible/modules/network/avi/avi_cluster.py\": \"lib/ansible/modules/network/avi/avi_cluster.py\", \n  \"ansible/modules/network/avi/avi_controllerproperties.py\": \"lib/ansible/modules/network/avi/avi_controllerproperties.py\", \n  \"ansible/modules/network/avi/avi_dnspolicy.py\": \"lib/ansible/modules/network/avi/avi_dnspolicy.py\", \n  \"ansible/modules/network/avi/avi_gslb.py\": \"lib/ansible/modules/network/avi/avi_gslb.py\", \n  \"ansible/modules/network/avi/avi_gslbapplicationpersistenceprofile.py\": \"lib/ansible/modules/network/avi/avi_gslbapplicationpersistenceprofile.py\", \n  \"ansible/modules/network/avi/avi_gslbgeodbprofile.py\": \"lib/ansible/modules/network/avi/avi_gslbgeodbprofile.py\", \n  \"ansible/modules/network/avi/avi_gslbhealthmonitor.py\": \"lib/ansible/modules/network/avi/avi_gslbhealthmonitor.py\", \n  \"ansible/modules/network/avi/avi_gslbservice.py\": \"lib/ansible/modules/network/avi/avi_gslbservice.py\", \n  \"ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py\": \"lib/ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py\", \n  \"ansible/modules/network/avi/avi_healthmonitor.py\": \"lib/ansible/modules/network/avi/avi_healthmonitor.py\", \n  \"ansible/modules/network/avi/avi_httppolicyset.py\": \"lib/ansible/modules/network/avi/avi_httppolicyset.py\", \n  \"ansible/modules/network/avi/avi_ipaddrgroup.py\": \"lib/ansible/modules/network/avi/avi_ipaddrgroup.py\", \n  \"ansible/modules/network/avi/avi_ipamdnsproviderprofile.py\": \"lib/ansible/modules/network/avi/avi_ipamdnsproviderprofile.py\", \n  \"ansible/modules/network/avi/avi_microservicegroup.py\": \"lib/ansible/modules/network/avi/avi_microservicegroup.py\", \n  \"ansible/modules/network/avi/avi_network.py\": \"lib/ansible/modules/network/avi/avi_network.py\", \n  \"ansible/modules/network/avi/avi_networkprofile.py\": \"lib/ansible/modules/network/avi/avi_networkprofile.py\", \n  \"ansible/modules/network/avi/avi_networksecuritypolicy.py\": \"lib/ansible/modules/network/avi/avi_networksecuritypolicy.py\", \n  \"ansible/modules/network/avi/avi_pkiprofile.py\": \"lib/ansible/modules/network/avi/avi_pkiprofile.py\", \n  \"ansible/modules/network/avi/avi_pool.py\": \"lib/ansible/modules/network/avi/avi_pool.py\", \n  \"ansible/modules/network/avi/avi_poolgroup.py\": \"lib/ansible/modules/network/avi/avi_poolgroup.py\", \n  \"ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py\": \"lib/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py\", \n  \"ansible/modules/network/avi/avi_prioritylabels.py\": \"lib/ansible/modules/network/avi/avi_prioritylabels.py\", \n  \"ansible/modules/network/avi/avi_role.py\": \"lib/ansible/modules/network/avi/avi_role.py\", \n  \"ansible/modules/network/avi/avi_scheduler.py\": \"lib/ansible/modules/network/avi/avi_scheduler.py\", \n  \"ansible/modules/network/avi/avi_seproperties.py\": \"lib/ansible/modules/network/avi/avi_seproperties.py\", \n  \"ansible/modules/network/avi/avi_serverautoscalepolicy.py\": \"lib/ansible/modules/network/avi/avi_serverautoscalepolicy.py\", \n  \"ansible/modules/network/avi/avi_serviceengine.py\": \"lib/ansible/modules/network/avi/avi_serviceengine.py\", \n  \"ansible/modules/network/avi/avi_serviceenginegroup.py\": \"lib/ansible/modules/network/avi/avi_serviceenginegroup.py\", \n  \"ansible/modules/network/avi/avi_snmptrapprofile.py\": \"lib/ansible/modules/network/avi/avi_snmptrapprofile.py\", \n  \"ansible/modules/network/avi/avi_sslkeyandcertificate.py\": \"lib/ansible/modules/network/avi/avi_sslkeyandcertificate.py\", \n  \"ansible/modules/network/avi/avi_sslprofile.py\": \"lib/ansible/modules/network/avi/avi_sslprofile.py\", \n  \"ansible/modules/network/avi/avi_stringgroup.py\": \"lib/ansible/modules/network/avi/avi_stringgroup.py\", \n  \"ansible/modules/network/avi/avi_systemconfiguration.py\": \"lib/ansible/modules/network/avi/avi_systemconfiguration.py\", \n  \"ansible/modules/network/avi/avi_tenant.py\": \"lib/ansible/modules/network/avi/avi_tenant.py\", \n  \"ansible/modules/network/avi/avi_trafficcloneprofile.py\": \"lib/ansible/modules/network/avi/avi_trafficcloneprofile.py\", \n  \"ansible/modules/network/avi/avi_useraccountprofile.py\": \"lib/ansible/modules/network/avi/avi_useraccountprofile.py\", \n  \"ansible/modules/network/avi/avi_virtualservice.py\": \"lib/ansible/modules/network/avi/avi_virtualservice.py\", \n  \"ansible/modules/network/avi/avi_vrfcontext.py\": \"lib/ansible/modules/network/avi/avi_vrfcontext.py\", \n  \"ansible/modules/network/avi/avi_vsdatascriptset.py\": \"lib/ansible/modules/network/avi/avi_vsdatascriptset.py\", \n  \"ansible/modules/network/avi/avi_vsvip.py\": \"lib/ansible/modules/network/avi/avi_vsvip.py\", \n  \"ansible/modules/network/avi/avi_webhook.py\": \"lib/ansible/modules/network/avi/avi_webhook.py\", \n  \"ansible/modules/network/bigswitch/bcf_switch.py\": \"lib/ansible/modules/network/bigswitch/bcf_switch.py\", \n  \"ansible/modules/network/bigswitch/bigmon_chain.py\": \"lib/ansible/modules/network/bigswitch/bigmon_chain.py\", \n  \"ansible/modules/network/bigswitch/bigmon_policy.py\": \"lib/ansible/modules/network/bigswitch/bigmon_policy.py\", \n  \"ansible/modules/network/citrix/_netscaler.py\": \"lib/ansible/modules/network/citrix/_netscaler.py\", \n  \"ansible/modules/network/citrix/netscaler.py\": \"lib/ansible/modules/network/citrix/_netscaler.py\", \n  \"ansible/modules/network/cloudengine/ce_aaa_server.py\": \"lib/ansible/modules/network/cloudengine/ce_aaa_server.py\", \n  \"ansible/modules/network/cloudengine/ce_aaa_server_host.py\": \"lib/ansible/modules/network/cloudengine/ce_aaa_server_host.py\", \n  \"ansible/modules/network/cloudengine/ce_acl.py\": \"lib/ansible/modules/network/cloudengine/ce_acl.py\", \n  \"ansible/modules/network/cloudengine/ce_acl_advance.py\": \"lib/ansible/modules/network/cloudengine/ce_acl_advance.py\", \n  \"ansible/modules/network/cloudengine/ce_acl_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_acl_interface.py\", \n  \"ansible/modules/network/cloudengine/ce_bfd_global.py\": \"lib/ansible/modules/network/cloudengine/ce_bfd_global.py\", \n  \"ansible/modules/network/cloudengine/ce_bfd_session.py\": \"lib/ansible/modules/network/cloudengine/ce_bfd_session.py\", \n  \"ansible/modules/network/cloudengine/ce_bfd_view.py\": \"lib/ansible/modules/network/cloudengine/ce_bfd_view.py\", \n  \"ansible/modules/network/cloudengine/ce_bgp.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp.py\", \n  \"ansible/modules/network/cloudengine/ce_bgp_af.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp_af.py\", \n  \"ansible/modules/network/cloudengine/ce_bgp_neighbor.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor.py\", \n  \"ansible/modules/network/cloudengine/ce_bgp_neighbor_af.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor_af.py\", \n  \"ansible/modules/network/cloudengine/ce_command.py\": \"lib/ansible/modules/network/cloudengine/ce_command.py\", \n  \"ansible/modules/network/cloudengine/ce_config.py\": \"lib/ansible/modules/network/cloudengine/ce_config.py\", \n  \"ansible/modules/network/cloudengine/ce_dldp.py\": \"lib/ansible/modules/network/cloudengine/ce_dldp.py\", \n  \"ansible/modules/network/cloudengine/ce_dldp_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_dldp_interface.py\", \n  \"ansible/modules/network/cloudengine/ce_eth_trunk.py\": \"lib/ansible/modules/network/cloudengine/ce_eth_trunk.py\", \n  \"ansible/modules/network/cloudengine/ce_evpn_bd_vni.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bd_vni.py\", \n  \"ansible/modules/network/cloudengine/ce_evpn_bgp.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp.py\", \n  \"ansible/modules/network/cloudengine/ce_evpn_bgp_rr.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp_rr.py\", \n  \"ansible/modules/network/cloudengine/ce_evpn_global.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_global.py\", \n  \"ansible/modules/network/cloudengine/ce_facts.py\": \"lib/ansible/modules/network/cloudengine/ce_facts.py\", \n  \"ansible/modules/network/cloudengine/ce_file_copy.py\": \"lib/ansible/modules/network/cloudengine/ce_file_copy.py\", \n  \"ansible/modules/network/cloudengine/ce_info_center_debug.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_debug.py\", \n  \"ansible/modules/network/cloudengine/ce_info_center_global.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_global.py\", \n  \"ansible/modules/network/cloudengine/ce_info_center_log.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_log.py\", \n  \"ansible/modules/network/cloudengine/ce_info_center_trap.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_trap.py\", \n  \"ansible/modules/network/cloudengine/ce_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_interface.py\", \n  \"ansible/modules/network/cloudengine/ce_interface_ospf.py\": \"lib/ansible/modules/network/cloudengine/ce_interface_ospf.py\", \n  \"ansible/modules/network/cloudengine/ce_ip_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_ip_interface.py\", \n  \"ansible/modules/network/cloudengine/ce_link_status.py\": \"lib/ansible/modules/network/cloudengine/ce_link_status.py\", \n  \"ansible/modules/network/cloudengine/ce_mlag_config.py\": \"lib/ansible/modules/network/cloudengine/ce_mlag_config.py\", \n  \"ansible/modules/network/cloudengine/ce_mlag_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_mlag_interface.py\", \n  \"ansible/modules/network/cloudengine/ce_mtu.py\": \"lib/ansible/modules/network/cloudengine/ce_mtu.py\", \n  \"ansible/modules/network/cloudengine/ce_netconf.py\": \"lib/ansible/modules/network/cloudengine/ce_netconf.py\", \n  \"ansible/modules/network/cloudengine/ce_netstream_aging.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_aging.py\", \n  \"ansible/modules/network/cloudengine/ce_netstream_export.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_export.py\", \n  \"ansible/modules/network/cloudengine/ce_netstream_global.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_global.py\", \n  \"ansible/modules/network/cloudengine/ce_netstream_template.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_template.py\", \n  \"ansible/modules/network/cloudengine/ce_ntp.py\": \"lib/ansible/modules/network/cloudengine/ce_ntp.py\", \n  \"ansible/modules/network/cloudengine/ce_ntp_auth.py\": \"lib/ansible/modules/network/cloudengine/ce_ntp_auth.py\", \n  \"ansible/modules/network/cloudengine/ce_ospf.py\": \"lib/ansible/modules/network/cloudengine/ce_ospf.py\", \n  \"ansible/modules/network/cloudengine/ce_ospf_vrf.py\": \"lib/ansible/modules/network/cloudengine/ce_ospf_vrf.py\", \n  \"ansible/modules/network/cloudengine/ce_reboot.py\": \"lib/ansible/modules/network/cloudengine/ce_reboot.py\", \n  \"ansible/modules/network/cloudengine/ce_rollback.py\": \"lib/ansible/modules/network/cloudengine/ce_rollback.py\", \n  \"ansible/modules/network/cloudengine/ce_sflow.py\": \"lib/ansible/modules/network/cloudengine/ce_sflow.py\", \n  \"ansible/modules/network/cloudengine/ce_snmp_community.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_community.py\", \n  \"ansible/modules/network/cloudengine/ce_snmp_contact.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_contact.py\", \n  \"ansible/modules/network/cloudengine/ce_snmp_location.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_location.py\", \n  \"ansible/modules/network/cloudengine/ce_snmp_target_host.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_target_host.py\", \n  \"ansible/modules/network/cloudengine/ce_snmp_traps.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_traps.py\", \n  \"ansible/modules/network/cloudengine/ce_snmp_user.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_user.py\", \n  \"ansible/modules/network/cloudengine/ce_startup.py\": \"lib/ansible/modules/network/cloudengine/ce_startup.py\", \n  \"ansible/modules/network/cloudengine/ce_static_route.py\": \"lib/ansible/modules/network/cloudengine/ce_static_route.py\", \n  \"ansible/modules/network/cloudengine/ce_stp.py\": \"lib/ansible/modules/network/cloudengine/ce_stp.py\", \n  \"ansible/modules/network/cloudengine/ce_switchport.py\": \"lib/ansible/modules/network/cloudengine/ce_switchport.py\", \n  \"ansible/modules/network/cloudengine/ce_vlan.py\": \"lib/ansible/modules/network/cloudengine/ce_vlan.py\", \n  \"ansible/modules/network/cloudengine/ce_vrf.py\": \"lib/ansible/modules/network/cloudengine/ce_vrf.py\", \n  \"ansible/modules/network/cloudengine/ce_vrf_af.py\": \"lib/ansible/modules/network/cloudengine/ce_vrf_af.py\", \n  \"ansible/modules/network/cloudengine/ce_vrf_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_vrf_interface.py\", \n  \"ansible/modules/network/cloudengine/ce_vrrp.py\": \"lib/ansible/modules/network/cloudengine/ce_vrrp.py\", \n  \"ansible/modules/network/cloudengine/ce_vxlan_arp.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_arp.py\", \n  \"ansible/modules/network/cloudengine/ce_vxlan_gateway.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_gateway.py\", \n  \"ansible/modules/network/cloudengine/ce_vxlan_global.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_global.py\", \n  \"ansible/modules/network/cloudengine/ce_vxlan_tunnel.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_tunnel.py\", \n  \"ansible/modules/network/cloudengine/ce_vxlan_vap.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_vap.py\", \n  \"ansible/modules/network/cloudvision/cv_server_provision.py\": \"lib/ansible/modules/network/cloudvision/cv_server_provision.py\", \n  \"ansible/modules/network/cumulus/_cl_bond.py\": \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n  \"ansible/modules/network/cumulus/_cl_bridge.py\": \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n  \"ansible/modules/network/cumulus/_cl_img_install.py\": \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n  \"ansible/modules/network/cumulus/_cl_interface.py\": \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n  \"ansible/modules/network/cumulus/_cl_interface_policy.py\": \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n  \"ansible/modules/network/cumulus/_cl_license.py\": \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n  \"ansible/modules/network/cumulus/_cl_ports.py\": \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n  \"ansible/modules/network/cumulus/cl_bond.py\": \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n  \"ansible/modules/network/cumulus/cl_bridge.py\": \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n  \"ansible/modules/network/cumulus/cl_img_install.py\": \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n  \"ansible/modules/network/cumulus/cl_interface.py\": \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n  \"ansible/modules/network/cumulus/cl_interface_policy.py\": \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n  \"ansible/modules/network/cumulus/cl_license.py\": \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n  \"ansible/modules/network/cumulus/cl_ports.py\": \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n  \"ansible/modules/network/cumulus/nclu.py\": \"lib/ansible/modules/network/cumulus/nclu.py\", \n  \"ansible/modules/network/dellos10/dellos10_command.py\": \"lib/ansible/modules/network/dellos10/dellos10_command.py\", \n  \"ansible/modules/network/dellos10/dellos10_config.py\": \"lib/ansible/modules/network/dellos10/dellos10_config.py\", \n  \"ansible/modules/network/dellos10/dellos10_facts.py\": \"lib/ansible/modules/network/dellos10/dellos10_facts.py\", \n  \"ansible/modules/network/dellos6/dellos6_command.py\": \"lib/ansible/modules/network/dellos6/dellos6_command.py\", \n  \"ansible/modules/network/dellos6/dellos6_config.py\": \"lib/ansible/modules/network/dellos6/dellos6_config.py\", \n  \"ansible/modules/network/dellos6/dellos6_facts.py\": \"lib/ansible/modules/network/dellos6/dellos6_facts.py\", \n  \"ansible/modules/network/dellos9/dellos9_command.py\": \"lib/ansible/modules/network/dellos9/dellos9_command.py\", \n  \"ansible/modules/network/dellos9/dellos9_config.py\": \"lib/ansible/modules/network/dellos9/dellos9_config.py\", \n  \"ansible/modules/network/dellos9/dellos9_facts.py\": \"lib/ansible/modules/network/dellos9/dellos9_facts.py\", \n  \"ansible/modules/network/eos/eos_banner.py\": \"lib/ansible/modules/network/eos/eos_banner.py\", \n  \"ansible/modules/network/eos/eos_command.py\": \"lib/ansible/modules/network/eos/eos_command.py\", \n  \"ansible/modules/network/eos/eos_config.py\": \"lib/ansible/modules/network/eos/eos_config.py\", \n  \"ansible/modules/network/eos/eos_eapi.py\": \"lib/ansible/modules/network/eos/eos_eapi.py\", \n  \"ansible/modules/network/eos/eos_facts.py\": \"lib/ansible/modules/network/eos/eos_facts.py\", \n  \"ansible/modules/network/eos/eos_logging.py\": \"lib/ansible/modules/network/eos/eos_logging.py\", \n  \"ansible/modules/network/eos/eos_system.py\": \"lib/ansible/modules/network/eos/eos_system.py\", \n  \"ansible/modules/network/eos/eos_user.py\": \"lib/ansible/modules/network/eos/eos_user.py\", \n  \"ansible/modules/network/eos/eos_vlan.py\": \"lib/ansible/modules/network/eos/eos_vlan.py\", \n  \"ansible/modules/network/eos/eos_vrf.py\": \"lib/ansible/modules/network/eos/eos_vrf.py\", \n  \"ansible/modules/network/f5/bigip_asm_policy.py\": \"lib/ansible/modules/network/f5/bigip_asm_policy.py\", \n  \"ansible/modules/network/f5/bigip_command.py\": \"lib/ansible/modules/network/f5/bigip_command.py\", \n  \"ansible/modules/network/f5/bigip_config.py\": \"lib/ansible/modules/network/f5/bigip_config.py\", \n  \"ansible/modules/network/f5/bigip_configsync_action.py\": \"lib/ansible/modules/network/f5/bigip_configsync_action.py\", \n  \"ansible/modules/network/f5/bigip_configsync_actions.py\": \"lib/ansible/modules/network/f5/bigip_configsync_actions.py\", \n  \"ansible/modules/network/f5/bigip_device_dns.py\": \"lib/ansible/modules/network/f5/bigip_device_dns.py\", \n  \"ansible/modules/network/f5/bigip_device_ntp.py\": \"lib/ansible/modules/network/f5/bigip_device_ntp.py\", \n  \"ansible/modules/network/f5/bigip_device_sshd.py\": \"lib/ansible/modules/network/f5/bigip_device_sshd.py\", \n  \"ansible/modules/network/f5/bigip_facts.py\": \"lib/ansible/modules/network/f5/bigip_facts.py\", \n  \"ansible/modules/network/f5/bigip_gtm_datacenter.py\": \"lib/ansible/modules/network/f5/bigip_gtm_datacenter.py\", \n  \"ansible/modules/network/f5/bigip_gtm_facts.py\": \"lib/ansible/modules/network/f5/bigip_gtm_facts.py\", \n  \"ansible/modules/network/f5/bigip_gtm_pool.py\": \"lib/ansible/modules/network/f5/bigip_gtm_pool.py\", \n  \"ansible/modules/network/f5/bigip_gtm_virtual_server.py\": \"lib/ansible/modules/network/f5/bigip_gtm_virtual_server.py\", \n  \"ansible/modules/network/f5/bigip_gtm_wide_ip.py\": \"lib/ansible/modules/network/f5/bigip_gtm_wide_ip.py\", \n  \"ansible/modules/network/f5/bigip_hostname.py\": \"lib/ansible/modules/network/f5/bigip_hostname.py\", \n  \"ansible/modules/network/f5/bigip_iapp_service.py\": \"lib/ansible/modules/network/f5/bigip_iapp_service.py\", \n  \"ansible/modules/network/f5/bigip_iapp_template.py\": \"lib/ansible/modules/network/f5/bigip_iapp_template.py\", \n  \"ansible/modules/network/f5/bigip_iapplx_package.py\": \"lib/ansible/modules/network/f5/bigip_iapplx_package.py\", \n  \"ansible/modules/network/f5/bigip_irule.py\": \"lib/ansible/modules/network/f5/bigip_irule.py\", \n  \"ansible/modules/network/f5/bigip_monitor_http.py\": \"lib/ansible/modules/network/f5/bigip_monitor_http.py\", \n  \"ansible/modules/network/f5/bigip_monitor_https.py\": \"lib/ansible/modules/network/f5/bigip_monitor_https.py\", \n  \"ansible/modules/network/f5/bigip_monitor_tcp.py\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp.py\", \n  \"ansible/modules/network/f5/bigip_monitor_tcp_echo.py\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp_echo.py\", \n  \"ansible/modules/network/f5/bigip_monitor_tcp_half_open.py\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp_half_open.py\", \n  \"ansible/modules/network/f5/bigip_node.py\": \"lib/ansible/modules/network/f5/bigip_node.py\", \n  \"ansible/modules/network/f5/bigip_partition.py\": \"lib/ansible/modules/network/f5/bigip_partition.py\", \n  \"ansible/modules/network/f5/bigip_policy.py\": \"lib/ansible/modules/network/f5/bigip_policy.py\", \n  \"ansible/modules/network/f5/bigip_pool.py\": \"lib/ansible/modules/network/f5/bigip_pool.py\", \n  \"ansible/modules/network/f5/bigip_pool_member.py\": \"lib/ansible/modules/network/f5/bigip_pool_member.py\", \n  \"ansible/modules/network/f5/bigip_provision.py\": \"lib/ansible/modules/network/f5/bigip_provision.py\", \n  \"ansible/modules/network/f5/bigip_qkview.py\": \"lib/ansible/modules/network/f5/bigip_qkview.py\", \n  \"ansible/modules/network/f5/bigip_remote_syslog.py\": \"lib/ansible/modules/network/f5/bigip_remote_syslog.py\", \n  \"ansible/modules/network/f5/bigip_routedomain.py\": \"lib/ansible/modules/network/f5/bigip_routedomain.py\", \n  \"ansible/modules/network/f5/bigip_selfip.py\": \"lib/ansible/modules/network/f5/bigip_selfip.py\", \n  \"ansible/modules/network/f5/bigip_snat_pool.py\": \"lib/ansible/modules/network/f5/bigip_snat_pool.py\", \n  \"ansible/modules/network/f5/bigip_snmp.py\": \"lib/ansible/modules/network/f5/bigip_snmp.py\", \n  \"ansible/modules/network/f5/bigip_snmp_trap.py\": \"lib/ansible/modules/network/f5/bigip_snmp_trap.py\", \n  \"ansible/modules/network/f5/bigip_ssl_certificate.py\": \"lib/ansible/modules/network/f5/bigip_ssl_certificate.py\", \n  \"ansible/modules/network/f5/bigip_ssl_key.py\": \"lib/ansible/modules/network/f5/bigip_ssl_key.py\", \n  \"ansible/modules/network/f5/bigip_sys_db.py\": \"lib/ansible/modules/network/f5/bigip_sys_db.py\", \n  \"ansible/modules/network/f5/bigip_sys_global.py\": \"lib/ansible/modules/network/f5/bigip_sys_global.py\", \n  \"ansible/modules/network/f5/bigip_ucs.py\": \"lib/ansible/modules/network/f5/bigip_ucs.py\", \n  \"ansible/modules/network/f5/bigip_user.py\": \"lib/ansible/modules/network/f5/bigip_user.py\", \n  \"ansible/modules/network/f5/bigip_virtual_address.py\": \"lib/ansible/modules/network/f5/bigip_virtual_address.py\", \n  \"ansible/modules/network/f5/bigip_virtual_server.py\": \"lib/ansible/modules/network/f5/bigip_virtual_server.py\", \n  \"ansible/modules/network/f5/bigip_vlan.py\": \"lib/ansible/modules/network/f5/bigip_vlan.py\", \n  \"ansible/modules/network/f5/bigip_wait.py\": \"lib/ansible/modules/network/f5/bigip_wait.py\", \n  \"ansible/modules/network/fortios/fortios_address.py\": \"lib/ansible/modules/network/fortios/fortios_address.py\", \n  \"ansible/modules/network/fortios/fortios_config.py\": \"lib/ansible/modules/network/fortios/fortios_config.py\", \n  \"ansible/modules/network/fortios/fortios_ipv4_policy.py\": \"lib/ansible/modules/network/fortios/fortios_ipv4_policy.py\", \n  \"ansible/modules/network/illumos/dladm_etherstub.py\": \"lib/ansible/modules/network/illumos/dladm_etherstub.py\", \n  \"ansible/modules/network/illumos/dladm_iptun.py\": \"lib/ansible/modules/network/illumos/dladm_iptun.py\", \n  \"ansible/modules/network/illumos/dladm_linkprop.py\": \"lib/ansible/modules/network/illumos/dladm_linkprop.py\", \n  \"ansible/modules/network/illumos/dladm_vlan.py\": \"lib/ansible/modules/network/illumos/dladm_vlan.py\", \n  \"ansible/modules/network/illumos/dladm_vnic.py\": \"lib/ansible/modules/network/illumos/dladm_vnic.py\", \n  \"ansible/modules/network/illumos/flowadm.py\": \"lib/ansible/modules/network/illumos/flowadm.py\", \n  \"ansible/modules/network/illumos/ipadm_addr.py\": \"lib/ansible/modules/network/illumos/ipadm_addr.py\", \n  \"ansible/modules/network/illumos/ipadm_addrprop.py\": \"lib/ansible/modules/network/illumos/ipadm_addrprop.py\", \n  \"ansible/modules/network/illumos/ipadm_if.py\": \"lib/ansible/modules/network/illumos/ipadm_if.py\", \n  \"ansible/modules/network/illumos/ipadm_ifprop.py\": \"lib/ansible/modules/network/illumos/ipadm_ifprop.py\", \n  \"ansible/modules/network/illumos/ipadm_prop.py\": \"lib/ansible/modules/network/illumos/ipadm_prop.py\", \n  \"ansible/modules/network/interface/net_interface.py\": \"lib/ansible/modules/network/interface/net_interface.py\", \n  \"ansible/modules/network/interface/net_linkagg.py\": \"lib/ansible/modules/network/interface/net_linkagg.py\", \n  \"ansible/modules/network/interface/net_lldp_interface.py\": \"lib/ansible/modules/network/interface/net_lldp_interface.py\", \n  \"ansible/modules/network/ios/ios_banner.py\": \"lib/ansible/modules/network/ios/ios_banner.py\", \n  \"ansible/modules/network/ios/ios_command.py\": \"lib/ansible/modules/network/ios/ios_command.py\", \n  \"ansible/modules/network/ios/ios_config.py\": \"lib/ansible/modules/network/ios/ios_config.py\", \n  \"ansible/modules/network/ios/ios_facts.py\": \"lib/ansible/modules/network/ios/ios_facts.py\", \n  \"ansible/modules/network/ios/ios_interface.py\": \"lib/ansible/modules/network/ios/ios_interface.py\", \n  \"ansible/modules/network/ios/ios_logging.py\": \"lib/ansible/modules/network/ios/ios_logging.py\", \n  \"ansible/modules/network/ios/ios_ping.py\": \"lib/ansible/modules/network/ios/ios_ping.py\", \n  \"ansible/modules/network/ios/ios_static_route.py\": \"lib/ansible/modules/network/ios/ios_static_route.py\", \n  \"ansible/modules/network/ios/ios_system.py\": \"lib/ansible/modules/network/ios/ios_system.py\", \n  \"ansible/modules/network/ios/ios_user.py\": \"lib/ansible/modules/network/ios/ios_user.py\", \n  \"ansible/modules/network/ios/ios_vrf.py\": \"lib/ansible/modules/network/ios/ios_vrf.py\", \n  \"ansible/modules/network/iosxr/iosxr_banner.py\": \"lib/ansible/modules/network/iosxr/iosxr_banner.py\", \n  \"ansible/modules/network/iosxr/iosxr_command.py\": \"lib/ansible/modules/network/iosxr/iosxr_command.py\", \n  \"ansible/modules/network/iosxr/iosxr_config.py\": \"lib/ansible/modules/network/iosxr/iosxr_config.py\", \n  \"ansible/modules/network/iosxr/iosxr_facts.py\": \"lib/ansible/modules/network/iosxr/iosxr_facts.py\", \n  \"ansible/modules/network/iosxr/iosxr_interface.py\": \"lib/ansible/modules/network/iosxr/iosxr_interface.py\", \n  \"ansible/modules/network/iosxr/iosxr_logging.py\": \"lib/ansible/modules/network/iosxr/iosxr_logging.py\", \n  \"ansible/modules/network/iosxr/iosxr_netconf.py\": \"lib/ansible/modules/network/iosxr/iosxr_netconf.py\", \n  \"ansible/modules/network/iosxr/iosxr_system.py\": \"lib/ansible/modules/network/iosxr/iosxr_system.py\", \n  \"ansible/modules/network/iosxr/iosxr_user.py\": \"lib/ansible/modules/network/iosxr/iosxr_user.py\", \n  \"ansible/modules/network/ironware/ironware_command.py\": \"lib/ansible/modules/network/ironware/ironware_command.py\", \n  \"ansible/modules/network/junos/junos_banner.py\": \"lib/ansible/modules/network/junos/junos_banner.py\", \n  \"ansible/modules/network/junos/junos_command.py\": \"lib/ansible/modules/network/junos/junos_command.py\", \n  \"ansible/modules/network/junos/junos_config.py\": \"lib/ansible/modules/network/junos/junos_config.py\", \n  \"ansible/modules/network/junos/junos_facts.py\": \"lib/ansible/modules/network/junos/junos_facts.py\", \n  \"ansible/modules/network/junos/junos_interface.py\": \"lib/ansible/modules/network/junos/junos_interface.py\", \n  \"ansible/modules/network/junos/junos_l3_interface.py\": \"lib/ansible/modules/network/junos/junos_l3_interface.py\", \n  \"ansible/modules/network/junos/junos_linkagg.py\": \"lib/ansible/modules/network/junos/junos_linkagg.py\", \n  \"ansible/modules/network/junos/junos_lldp.py\": \"lib/ansible/modules/network/junos/junos_lldp.py\", \n  \"ansible/modules/network/junos/junos_lldp_interface.py\": \"lib/ansible/modules/network/junos/junos_lldp_interface.py\", \n  \"ansible/modules/network/junos/junos_logging.py\": \"lib/ansible/modules/network/junos/junos_logging.py\", \n  \"ansible/modules/network/junos/junos_netconf.py\": \"lib/ansible/modules/network/junos/junos_netconf.py\", \n  \"ansible/modules/network/junos/junos_package.py\": \"lib/ansible/modules/network/junos/junos_package.py\", \n  \"ansible/modules/network/junos/junos_rpc.py\": \"lib/ansible/modules/network/junos/junos_rpc.py\", \n  \"ansible/modules/network/junos/junos_static_route.py\": \"lib/ansible/modules/network/junos/junos_static_route.py\", \n  \"ansible/modules/network/junos/junos_system.py\": \"lib/ansible/modules/network/junos/junos_system.py\", \n  \"ansible/modules/network/junos/junos_user.py\": \"lib/ansible/modules/network/junos/junos_user.py\", \n  \"ansible/modules/network/junos/junos_vlan.py\": \"lib/ansible/modules/network/junos/junos_vlan.py\", \n  \"ansible/modules/network/junos/junos_vrf.py\": \"lib/ansible/modules/network/junos/junos_vrf.py\", \n  \"ansible/modules/network/layer2/net_l2_interface.py\": \"lib/ansible/modules/network/layer2/net_l2_interface.py\", \n  \"ansible/modules/network/layer2/net_vlan.py\": \"lib/ansible/modules/network/layer2/net_vlan.py\", \n  \"ansible/modules/network/layer3/net_l3_interface.py\": \"lib/ansible/modules/network/layer3/net_l3_interface.py\", \n  \"ansible/modules/network/layer3/net_vrf.py\": \"lib/ansible/modules/network/layer3/net_vrf.py\", \n  \"ansible/modules/network/lenovo/cnos_backup.py\": \"lib/ansible/modules/network/lenovo/cnos_backup.py\", \n  \"ansible/modules/network/lenovo/cnos_bgp.py\": \"lib/ansible/modules/network/lenovo/cnos_bgp.py\", \n  \"ansible/modules/network/lenovo/cnos_command.py\": \"lib/ansible/modules/network/lenovo/cnos_command.py\", \n  \"ansible/modules/network/lenovo/cnos_conditional_command.py\": \"lib/ansible/modules/network/lenovo/cnos_conditional_command.py\", \n  \"ansible/modules/network/lenovo/cnos_conditional_template.py\": \"lib/ansible/modules/network/lenovo/cnos_conditional_template.py\", \n  \"ansible/modules/network/lenovo/cnos_factory.py\": \"lib/ansible/modules/network/lenovo/cnos_factory.py\", \n  \"ansible/modules/network/lenovo/cnos_facts.py\": \"lib/ansible/modules/network/lenovo/cnos_facts.py\", \n  \"ansible/modules/network/lenovo/cnos_image.py\": \"lib/ansible/modules/network/lenovo/cnos_image.py\", \n  \"ansible/modules/network/lenovo/cnos_interface.py\": \"lib/ansible/modules/network/lenovo/cnos_interface.py\", \n  \"ansible/modules/network/lenovo/cnos_portchannel.py\": \"lib/ansible/modules/network/lenovo/cnos_portchannel.py\", \n  \"ansible/modules/network/lenovo/cnos_reload.py\": \"lib/ansible/modules/network/lenovo/cnos_reload.py\", \n  \"ansible/modules/network/lenovo/cnos_rollback.py\": \"lib/ansible/modules/network/lenovo/cnos_rollback.py\", \n  \"ansible/modules/network/lenovo/cnos_save.py\": \"lib/ansible/modules/network/lenovo/cnos_save.py\", \n  \"ansible/modules/network/lenovo/cnos_showrun.py\": \"lib/ansible/modules/network/lenovo/cnos_showrun.py\", \n  \"ansible/modules/network/lenovo/cnos_template.py\": \"lib/ansible/modules/network/lenovo/cnos_template.py\", \n  \"ansible/modules/network/lenovo/cnos_vlag.py\": \"lib/ansible/modules/network/lenovo/cnos_vlag.py\", \n  \"ansible/modules/network/lenovo/cnos_vlan.py\": \"lib/ansible/modules/network/lenovo/cnos_vlan.py\", \n  \"ansible/modules/network/netconf/netconf_config.py\": \"lib/ansible/modules/network/netconf/netconf_config.py\", \n  \"ansible/modules/network/netscaler/netscaler_cs_action.py\": \"lib/ansible/modules/network/netscaler/netscaler_cs_action.py\", \n  \"ansible/modules/network/netscaler/netscaler_cs_policy.py\": \"lib/ansible/modules/network/netscaler/netscaler_cs_policy.py\", \n  \"ansible/modules/network/netscaler/netscaler_cs_vserver.py\": \"lib/ansible/modules/network/netscaler/netscaler_cs_vserver.py\", \n  \"ansible/modules/network/netscaler/netscaler_gslb_service.py\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_service.py\", \n  \"ansible/modules/network/netscaler/netscaler_gslb_site.py\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_site.py\", \n  \"ansible/modules/network/netscaler/netscaler_gslb_vserver.py\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_vserver.py\", \n  \"ansible/modules/network/netscaler/netscaler_lb_monitor.py\": \"lib/ansible/modules/network/netscaler/netscaler_lb_monitor.py\", \n  \"ansible/modules/network/netscaler/netscaler_lb_vserver.py\": \"lib/ansible/modules/network/netscaler/netscaler_lb_vserver.py\", \n  \"ansible/modules/network/netscaler/netscaler_save_config.py\": \"lib/ansible/modules/network/netscaler/netscaler_save_config.py\", \n  \"ansible/modules/network/netscaler/netscaler_server.py\": \"lib/ansible/modules/network/netscaler/netscaler_server.py\", \n  \"ansible/modules/network/netscaler/netscaler_service.py\": \"lib/ansible/modules/network/netscaler/netscaler_service.py\", \n  \"ansible/modules/network/netscaler/netscaler_servicegroup.py\": \"lib/ansible/modules/network/netscaler/netscaler_servicegroup.py\", \n  \"ansible/modules/network/netscaler/netscaler_ssl_certkey.py\": \"lib/ansible/modules/network/netscaler/netscaler_ssl_certkey.py\", \n  \"ansible/modules/network/netvisor/pn_cluster.py\": \"lib/ansible/modules/network/netvisor/pn_cluster.py\", \n  \"ansible/modules/network/netvisor/pn_ospf.py\": \"lib/ansible/modules/network/netvisor/pn_ospf.py\", \n  \"ansible/modules/network/netvisor/pn_ospfarea.py\": \"lib/ansible/modules/network/netvisor/pn_ospfarea.py\", \n  \"ansible/modules/network/netvisor/pn_show.py\": \"lib/ansible/modules/network/netvisor/pn_show.py\", \n  \"ansible/modules/network/netvisor/pn_trunk.py\": \"lib/ansible/modules/network/netvisor/pn_trunk.py\", \n  \"ansible/modules/network/netvisor/pn_vlag.py\": \"lib/ansible/modules/network/netvisor/pn_vlag.py\", \n  \"ansible/modules/network/netvisor/pn_vlan.py\": \"lib/ansible/modules/network/netvisor/pn_vlan.py\", \n  \"ansible/modules/network/netvisor/pn_vrouter.py\": \"lib/ansible/modules/network/netvisor/pn_vrouter.py\", \n  \"ansible/modules/network/netvisor/pn_vrouterbgp.py\": \"lib/ansible/modules/network/netvisor/pn_vrouterbgp.py\", \n  \"ansible/modules/network/netvisor/pn_vrouterif.py\": \"lib/ansible/modules/network/netvisor/pn_vrouterif.py\", \n  \"ansible/modules/network/netvisor/pn_vrouterlbif.py\": \"lib/ansible/modules/network/netvisor/pn_vrouterlbif.py\", \n  \"ansible/modules/network/nuage/nuage_vspk.py\": \"lib/ansible/modules/network/nuage/nuage_vspk.py\", \n  \"ansible/modules/network/nxos/_nxos_mtu.py\": \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n  \"ansible/modules/network/nxos/nxos_aaa_server.py\": \"lib/ansible/modules/network/nxos/nxos_aaa_server.py\", \n  \"ansible/modules/network/nxos/nxos_aaa_server_host.py\": \"lib/ansible/modules/network/nxos/nxos_aaa_server_host.py\", \n  \"ansible/modules/network/nxos/nxos_acl.py\": \"lib/ansible/modules/network/nxos/nxos_acl.py\", \n  \"ansible/modules/network/nxos/nxos_acl_interface.py\": \"lib/ansible/modules/network/nxos/nxos_acl_interface.py\", \n  \"ansible/modules/network/nxos/nxos_banner.py\": \"lib/ansible/modules/network/nxos/nxos_banner.py\", \n  \"ansible/modules/network/nxos/nxos_bgp.py\": \"lib/ansible/modules/network/nxos/nxos_bgp.py\", \n  \"ansible/modules/network/nxos/nxos_bgp_af.py\": \"lib/ansible/modules/network/nxos/nxos_bgp_af.py\", \n  \"ansible/modules/network/nxos/nxos_bgp_neighbor.py\": \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor.py\", \n  \"ansible/modules/network/nxos/nxos_bgp_neighbor_af.py\": \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor_af.py\", \n  \"ansible/modules/network/nxos/nxos_command.py\": \"lib/ansible/modules/network/nxos/nxos_command.py\", \n  \"ansible/modules/network/nxos/nxos_config.py\": \"lib/ansible/modules/network/nxos/nxos_config.py\", \n  \"ansible/modules/network/nxos/nxos_evpn_global.py\": \"lib/ansible/modules/network/nxos/nxos_evpn_global.py\", \n  \"ansible/modules/network/nxos/nxos_evpn_vni.py\": \"lib/ansible/modules/network/nxos/nxos_evpn_vni.py\", \n  \"ansible/modules/network/nxos/nxos_facts.py\": \"lib/ansible/modules/network/nxos/nxos_facts.py\", \n  \"ansible/modules/network/nxos/nxos_feature.py\": \"lib/ansible/modules/network/nxos/nxos_feature.py\", \n  \"ansible/modules/network/nxos/nxos_file_copy.py\": \"lib/ansible/modules/network/nxos/nxos_file_copy.py\", \n  \"ansible/modules/network/nxos/nxos_gir.py\": \"lib/ansible/modules/network/nxos/nxos_gir.py\", \n  \"ansible/modules/network/nxos/nxos_gir_profile_management.py\": \"lib/ansible/modules/network/nxos/nxos_gir_profile_management.py\", \n  \"ansible/modules/network/nxos/nxos_hsrp.py\": \"lib/ansible/modules/network/nxos/nxos_hsrp.py\", \n  \"ansible/modules/network/nxos/nxos_igmp.py\": \"lib/ansible/modules/network/nxos/nxos_igmp.py\", \n  \"ansible/modules/network/nxos/nxos_igmp_interface.py\": \"lib/ansible/modules/network/nxos/nxos_igmp_interface.py\", \n  \"ansible/modules/network/nxos/nxos_igmp_snooping.py\": \"lib/ansible/modules/network/nxos/nxos_igmp_snooping.py\", \n  \"ansible/modules/network/nxos/nxos_install_os.py\": \"lib/ansible/modules/network/nxos/nxos_install_os.py\", \n  \"ansible/modules/network/nxos/nxos_interface.py\": \"lib/ansible/modules/network/nxos/nxos_interface.py\", \n  \"ansible/modules/network/nxos/nxos_interface_ospf.py\": \"lib/ansible/modules/network/nxos/nxos_interface_ospf.py\", \n  \"ansible/modules/network/nxos/nxos_ip_interface.py\": \"lib/ansible/modules/network/nxos/nxos_ip_interface.py\", \n  \"ansible/modules/network/nxos/nxos_logging.py\": \"lib/ansible/modules/network/nxos/nxos_logging.py\", \n  \"ansible/modules/network/nxos/nxos_mtu.py\": \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n  \"ansible/modules/network/nxos/nxos_ntp.py\": \"lib/ansible/modules/network/nxos/nxos_ntp.py\", \n  \"ansible/modules/network/nxos/nxos_ntp_auth.py\": \"lib/ansible/modules/network/nxos/nxos_ntp_auth.py\", \n  \"ansible/modules/network/nxos/nxos_ntp_options.py\": \"lib/ansible/modules/network/nxos/nxos_ntp_options.py\", \n  \"ansible/modules/network/nxos/nxos_nxapi.py\": \"lib/ansible/modules/network/nxos/nxos_nxapi.py\", \n  \"ansible/modules/network/nxos/nxos_ospf.py\": \"lib/ansible/modules/network/nxos/nxos_ospf.py\", \n  \"ansible/modules/network/nxos/nxos_ospf_vrf.py\": \"lib/ansible/modules/network/nxos/nxos_ospf_vrf.py\", \n  \"ansible/modules/network/nxos/nxos_overlay_global.py\": \"lib/ansible/modules/network/nxos/nxos_overlay_global.py\", \n  \"ansible/modules/network/nxos/nxos_pim.py\": \"lib/ansible/modules/network/nxos/nxos_pim.py\", \n  \"ansible/modules/network/nxos/nxos_pim_interface.py\": \"lib/ansible/modules/network/nxos/nxos_pim_interface.py\", \n  \"ansible/modules/network/nxos/nxos_pim_rp_address.py\": \"lib/ansible/modules/network/nxos/nxos_pim_rp_address.py\", \n  \"ansible/modules/network/nxos/nxos_ping.py\": \"lib/ansible/modules/network/nxos/nxos_ping.py\", \n  \"ansible/modules/network/nxos/nxos_portchannel.py\": \"lib/ansible/modules/network/nxos/nxos_portchannel.py\", \n  \"ansible/modules/network/nxos/nxos_reboot.py\": \"lib/ansible/modules/network/nxos/nxos_reboot.py\", \n  \"ansible/modules/network/nxos/nxos_rollback.py\": \"lib/ansible/modules/network/nxos/nxos_rollback.py\", \n  \"ansible/modules/network/nxos/nxos_smu.py\": \"lib/ansible/modules/network/nxos/nxos_smu.py\", \n  \"ansible/modules/network/nxos/nxos_snapshot.py\": \"lib/ansible/modules/network/nxos/nxos_snapshot.py\", \n  \"ansible/modules/network/nxos/nxos_snmp_community.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_community.py\", \n  \"ansible/modules/network/nxos/nxos_snmp_contact.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_contact.py\", \n  \"ansible/modules/network/nxos/nxos_snmp_host.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_host.py\", \n  \"ansible/modules/network/nxos/nxos_snmp_location.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_location.py\", \n  \"ansible/modules/network/nxos/nxos_snmp_traps.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_traps.py\", \n  \"ansible/modules/network/nxos/nxos_snmp_user.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_user.py\", \n  \"ansible/modules/network/nxos/nxos_static_route.py\": \"lib/ansible/modules/network/nxos/nxos_static_route.py\", \n  \"ansible/modules/network/nxos/nxos_switchport.py\": \"lib/ansible/modules/network/nxos/nxos_switchport.py\", \n  \"ansible/modules/network/nxos/nxos_system.py\": \"lib/ansible/modules/network/nxos/nxos_system.py\", \n  \"ansible/modules/network/nxos/nxos_udld.py\": \"lib/ansible/modules/network/nxos/nxos_udld.py\", \n  \"ansible/modules/network/nxos/nxos_udld_interface.py\": \"lib/ansible/modules/network/nxos/nxos_udld_interface.py\", \n  \"ansible/modules/network/nxos/nxos_user.py\": \"lib/ansible/modules/network/nxos/nxos_user.py\", \n  \"ansible/modules/network/nxos/nxos_vlan.py\": \"lib/ansible/modules/network/nxos/nxos_vlan.py\", \n  \"ansible/modules/network/nxos/nxos_vpc.py\": \"lib/ansible/modules/network/nxos/nxos_vpc.py\", \n  \"ansible/modules/network/nxos/nxos_vpc_interface.py\": \"lib/ansible/modules/network/nxos/nxos_vpc_interface.py\", \n  \"ansible/modules/network/nxos/nxos_vrf.py\": \"lib/ansible/modules/network/nxos/nxos_vrf.py\", \n  \"ansible/modules/network/nxos/nxos_vrf_af.py\": \"lib/ansible/modules/network/nxos/nxos_vrf_af.py\", \n  \"ansible/modules/network/nxos/nxos_vrf_interface.py\": \"lib/ansible/modules/network/nxos/nxos_vrf_interface.py\", \n  \"ansible/modules/network/nxos/nxos_vrrp.py\": \"lib/ansible/modules/network/nxos/nxos_vrrp.py\", \n  \"ansible/modules/network/nxos/nxos_vtp_domain.py\": \"lib/ansible/modules/network/nxos/nxos_vtp_domain.py\", \n  \"ansible/modules/network/nxos/nxos_vtp_password.py\": \"lib/ansible/modules/network/nxos/nxos_vtp_password.py\", \n  \"ansible/modules/network/nxos/nxos_vtp_version.py\": \"lib/ansible/modules/network/nxos/nxos_vtp_version.py\", \n  \"ansible/modules/network/nxos/nxos_vxlan_vtep.py\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep.py\", \n  \"ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\", \n  \"ansible/modules/network/ordnance/ordnance_config.py\": \"lib/ansible/modules/network/ordnance/ordnance_config.py\", \n  \"ansible/modules/network/ordnance/ordnance_facts.py\": \"lib/ansible/modules/network/ordnance/ordnance_facts.py\", \n  \"ansible/modules/network/ovs/openvswitch_bridge.py\": \"lib/ansible/modules/network/ovs/openvswitch_bridge.py\", \n  \"ansible/modules/network/ovs/openvswitch_db.py\": \"lib/ansible/modules/network/ovs/openvswitch_db.py\", \n  \"ansible/modules/network/ovs/openvswitch_port.py\": \"lib/ansible/modules/network/ovs/openvswitch_port.py\", \n  \"ansible/modules/network/panos/panos_admin.py\": \"lib/ansible/modules/network/panos/panos_admin.py\", \n  \"ansible/modules/network/panos/panos_admpwd.py\": \"lib/ansible/modules/network/panos/panos_admpwd.py\", \n  \"ansible/modules/network/panos/panos_cert_gen_ssh.py\": \"lib/ansible/modules/network/panos/panos_cert_gen_ssh.py\", \n  \"ansible/modules/network/panos/panos_check.py\": \"lib/ansible/modules/network/panos/panos_check.py\", \n  \"ansible/modules/network/panos/panos_commit.py\": \"lib/ansible/modules/network/panos/panos_commit.py\", \n  \"ansible/modules/network/panos/panos_dag.py\": \"lib/ansible/modules/network/panos/panos_dag.py\", \n  \"ansible/modules/network/panos/panos_import.py\": \"lib/ansible/modules/network/panos/panos_import.py\", \n  \"ansible/modules/network/panos/panos_interface.py\": \"lib/ansible/modules/network/panos/panos_interface.py\", \n  \"ansible/modules/network/panos/panos_lic.py\": \"lib/ansible/modules/network/panos/panos_lic.py\", \n  \"ansible/modules/network/panos/panos_loadcfg.py\": \"lib/ansible/modules/network/panos/panos_loadcfg.py\", \n  \"ansible/modules/network/panos/panos_mgtconfig.py\": \"lib/ansible/modules/network/panos/panos_mgtconfig.py\", \n  \"ansible/modules/network/panos/panos_nat_policy.py\": \"lib/ansible/modules/network/panos/panos_nat_policy.py\", \n  \"ansible/modules/network/panos/panos_nat_rule.py\": \"lib/ansible/modules/network/panos/panos_nat_rule.py\", \n  \"ansible/modules/network/panos/panos_object.py\": \"lib/ansible/modules/network/panos/panos_object.py\", \n  \"ansible/modules/network/panos/panos_pg.py\": \"lib/ansible/modules/network/panos/panos_pg.py\", \n  \"ansible/modules/network/panos/panos_restart.py\": \"lib/ansible/modules/network/panos/panos_restart.py\", \n  \"ansible/modules/network/panos/panos_sag.py\": \"lib/ansible/modules/network/panos/panos_sag.py\", \n  \"ansible/modules/network/panos/panos_security_policy.py\": \"lib/ansible/modules/network/panos/panos_security_policy.py\", \n  \"ansible/modules/network/panos/panos_security_rule.py\": \"lib/ansible/modules/network/panos/panos_security_rule.py\", \n  \"ansible/modules/network/protocol/net_lldp.py\": \"lib/ansible/modules/network/protocol/net_lldp.py\", \n  \"ansible/modules/network/radware/vdirect_file.py\": \"lib/ansible/modules/network/radware/vdirect_file.py\", \n  \"ansible/modules/network/routing/net_static_route.py\": \"lib/ansible/modules/network/routing/net_static_route.py\", \n  \"ansible/modules/network/sros/sros_command.py\": \"lib/ansible/modules/network/sros/sros_command.py\", \n  \"ansible/modules/network/sros/sros_config.py\": \"lib/ansible/modules/network/sros/sros_config.py\", \n  \"ansible/modules/network/sros/sros_rollback.py\": \"lib/ansible/modules/network/sros/sros_rollback.py\", \n  \"ansible/modules/network/system/net_banner.py\": \"lib/ansible/modules/network/system/net_banner.py\", \n  \"ansible/modules/network/system/net_logging.py\": \"lib/ansible/modules/network/system/net_logging.py\", \n  \"ansible/modules/network/system/net_ping.py\": \"lib/ansible/modules/network/system/net_ping.py\", \n  \"ansible/modules/network/system/net_system.py\": \"lib/ansible/modules/network/system/net_system.py\", \n  \"ansible/modules/network/system/net_user.py\": \"lib/ansible/modules/network/system/net_user.py\", \n  \"ansible/modules/network/vyos/vyos_banner.py\": \"lib/ansible/modules/network/vyos/vyos_banner.py\", \n  \"ansible/modules/network/vyos/vyos_command.py\": \"lib/ansible/modules/network/vyos/vyos_command.py\", \n  \"ansible/modules/network/vyos/vyos_config.py\": \"lib/ansible/modules/network/vyos/vyos_config.py\", \n  \"ansible/modules/network/vyos/vyos_facts.py\": \"lib/ansible/modules/network/vyos/vyos_facts.py\", \n  \"ansible/modules/network/vyos/vyos_interface.py\": \"lib/ansible/modules/network/vyos/vyos_interface.py\", \n  \"ansible/modules/network/vyos/vyos_l3_interface.py\": \"lib/ansible/modules/network/vyos/vyos_l3_interface.py\", \n  \"ansible/modules/network/vyos/vyos_linkagg.py\": \"lib/ansible/modules/network/vyos/vyos_linkagg.py\", \n  \"ansible/modules/network/vyos/vyos_lldp.py\": \"lib/ansible/modules/network/vyos/vyos_lldp.py\", \n  \"ansible/modules/network/vyos/vyos_lldp_interface.py\": \"lib/ansible/modules/network/vyos/vyos_lldp_interface.py\", \n  \"ansible/modules/network/vyos/vyos_logging.py\": \"lib/ansible/modules/network/vyos/vyos_logging.py\", \n  \"ansible/modules/network/vyos/vyos_static_route.py\": \"lib/ansible/modules/network/vyos/vyos_static_route.py\", \n  \"ansible/modules/network/vyos/vyos_system.py\": \"lib/ansible/modules/network/vyos/vyos_system.py\", \n  \"ansible/modules/network/vyos/vyos_user.py\": \"lib/ansible/modules/network/vyos/vyos_user.py\", \n  \"ansible/modules/network/vyos/vyos_vlan.py\": \"lib/ansible/modules/network/vyos/vyos_vlan.py\", \n  \"ansible/modules/notification/bearychat.py\": \"lib/ansible/modules/notification/bearychat.py\", \n  \"ansible/modules/notification/campfire.py\": \"lib/ansible/modules/notification/campfire.py\", \n  \"ansible/modules/notification/catapult.py\": \"lib/ansible/modules/notification/catapult.py\", \n  \"ansible/modules/notification/cisco_spark.py\": \"lib/ansible/modules/notification/cisco_spark.py\", \n  \"ansible/modules/notification/flowdock.py\": \"lib/ansible/modules/notification/flowdock.py\", \n  \"ansible/modules/notification/grove.py\": \"lib/ansible/modules/notification/grove.py\", \n  \"ansible/modules/notification/hall.py\": \"lib/ansible/modules/notification/hall.py\", \n  \"ansible/modules/notification/hipchat.py\": \"lib/ansible/modules/notification/hipchat.py\", \n  \"ansible/modules/notification/irc.py\": \"lib/ansible/modules/notification/irc.py\", \n  \"ansible/modules/notification/jabber.py\": \"lib/ansible/modules/notification/jabber.py\", \n  \"ansible/modules/notification/mail.py\": \"lib/ansible/modules/notification/mail.py\", \n  \"ansible/modules/notification/mattermost.py\": \"lib/ansible/modules/notification/mattermost.py\", \n  \"ansible/modules/notification/mqtt.py\": \"lib/ansible/modules/notification/mqtt.py\", \n  \"ansible/modules/notification/nexmo.py\": \"lib/ansible/modules/notification/nexmo.py\", \n  \"ansible/modules/notification/office_365_connector_card.py\": \"lib/ansible/modules/notification/office_365_connector_card.py\", \n  \"ansible/modules/notification/osx_say.py\": \"lib/ansible/modules/notification/osx_say.py\", \n  \"ansible/modules/notification/pushbullet.py\": \"lib/ansible/modules/notification/pushbullet.py\", \n  \"ansible/modules/notification/pushover.py\": \"lib/ansible/modules/notification/pushover.py\", \n  \"ansible/modules/notification/rocketchat.py\": \"lib/ansible/modules/notification/rocketchat.py\", \n  \"ansible/modules/notification/sendgrid.py\": \"lib/ansible/modules/notification/sendgrid.py\", \n  \"ansible/modules/notification/slack.py\": \"lib/ansible/modules/notification/slack.py\", \n  \"ansible/modules/notification/snow_record.py\": \"lib/ansible/modules/notification/snow_record.py\", \n  \"ansible/modules/notification/syslogger.py\": \"lib/ansible/modules/notification/syslogger.py\", \n  \"ansible/modules/notification/telegram.py\": \"lib/ansible/modules/notification/telegram.py\", \n  \"ansible/modules/notification/twilio.py\": \"lib/ansible/modules/notification/twilio.py\", \n  \"ansible/modules/notification/typetalk.py\": \"lib/ansible/modules/notification/typetalk.py\", \n  \"ansible/modules/packaging/language/bower.py\": \"lib/ansible/modules/packaging/language/bower.py\", \n  \"ansible/modules/packaging/language/bundler.py\": \"lib/ansible/modules/packaging/language/bundler.py\", \n  \"ansible/modules/packaging/language/composer.py\": \"lib/ansible/modules/packaging/language/composer.py\", \n  \"ansible/modules/packaging/language/cpanm.py\": \"lib/ansible/modules/packaging/language/cpanm.py\", \n  \"ansible/modules/packaging/language/easy_install.py\": \"lib/ansible/modules/packaging/language/easy_install.py\", \n  \"ansible/modules/packaging/language/gem.py\": \"lib/ansible/modules/packaging/language/gem.py\", \n  \"ansible/modules/packaging/language/maven_artifact.py\": \"lib/ansible/modules/packaging/language/maven_artifact.py\", \n  \"ansible/modules/packaging/language/npm.py\": \"lib/ansible/modules/packaging/language/npm.py\", \n  \"ansible/modules/packaging/language/pear.py\": \"lib/ansible/modules/packaging/language/pear.py\", \n  \"ansible/modules/packaging/language/pip.py\": \"lib/ansible/modules/packaging/language/pip.py\", \n  \"ansible/modules/packaging/os/apk.py\": \"lib/ansible/modules/packaging/os/apk.py\", \n  \"ansible/modules/packaging/os/apt.py\": \"lib/ansible/modules/packaging/os/apt.py\", \n  \"ansible/modules/packaging/os/apt_key.py\": \"lib/ansible/modules/packaging/os/apt_key.py\", \n  \"ansible/modules/packaging/os/apt_repository.py\": \"lib/ansible/modules/packaging/os/apt_repository.py\", \n  \"ansible/modules/packaging/os/apt_rpm.py\": \"lib/ansible/modules/packaging/os/apt_rpm.py\", \n  \"ansible/modules/packaging/os/dnf.py\": \"lib/ansible/modules/packaging/os/dnf.py\", \n  \"ansible/modules/packaging/os/dpkg_selections.py\": \"lib/ansible/modules/packaging/os/dpkg_selections.py\", \n  \"ansible/modules/packaging/os/homebrew.py\": \"lib/ansible/modules/packaging/os/homebrew.py\", \n  \"ansible/modules/packaging/os/homebrew_cask.py\": \"lib/ansible/modules/packaging/os/homebrew_cask.py\", \n  \"ansible/modules/packaging/os/homebrew_tap.py\": \"lib/ansible/modules/packaging/os/homebrew_tap.py\", \n  \"ansible/modules/packaging/os/layman.py\": \"lib/ansible/modules/packaging/os/layman.py\", \n  \"ansible/modules/packaging/os/macports.py\": \"lib/ansible/modules/packaging/os/macports.py\", \n  \"ansible/modules/packaging/os/openbsd_pkg.py\": \"lib/ansible/modules/packaging/os/openbsd_pkg.py\", \n  \"ansible/modules/packaging/os/opkg.py\": \"lib/ansible/modules/packaging/os/opkg.py\", \n  \"ansible/modules/packaging/os/package.py\": \"lib/ansible/modules/packaging/os/package.py\", \n  \"ansible/modules/packaging/os/pacman.py\": \"lib/ansible/modules/packaging/os/pacman.py\", \n  \"ansible/modules/packaging/os/pkg5.py\": \"lib/ansible/modules/packaging/os/pkg5.py\", \n  \"ansible/modules/packaging/os/pkg5_publisher.py\": \"lib/ansible/modules/packaging/os/pkg5_publisher.py\", \n  \"ansible/modules/packaging/os/pkgin.py\": \"lib/ansible/modules/packaging/os/pkgin.py\", \n  \"ansible/modules/packaging/os/pkgng.py\": \"lib/ansible/modules/packaging/os/pkgng.py\", \n  \"ansible/modules/packaging/os/pkgutil.py\": \"lib/ansible/modules/packaging/os/pkgutil.py\", \n  \"ansible/modules/packaging/os/portage.py\": \"lib/ansible/modules/packaging/os/portage.py\", \n  \"ansible/modules/packaging/os/portinstall.py\": \"lib/ansible/modules/packaging/os/portinstall.py\", \n  \"ansible/modules/packaging/os/pulp_repo.py\": \"lib/ansible/modules/packaging/os/pulp_repo.py\", \n  \"ansible/modules/packaging/os/redhat_subscription.py\": \"lib/ansible/modules/packaging/os/redhat_subscription.py\", \n  \"ansible/modules/packaging/os/rhn_channel.py\": \"lib/ansible/modules/packaging/os/rhn_channel.py\", \n  \"ansible/modules/packaging/os/rhn_register.py\": \"lib/ansible/modules/packaging/os/rhn_register.py\", \n  \"ansible/modules/packaging/os/rpm_key.py\": [\n    \"lib/ansible/modules/packaging/os/rpm_key.py\"\n  ], \n  \"ansible/modules/packaging/os/slackpkg.py\": \"lib/ansible/modules/packaging/os/slackpkg.py\", \n  \"ansible/modules/packaging/os/sorcery.py\": \"lib/ansible/modules/packaging/os/sorcery.py\", \n  \"ansible/modules/packaging/os/svr4pkg.py\": \"lib/ansible/modules/packaging/os/svr4pkg.py\", \n  \"ansible/modules/packaging/os/swdepot.py\": \"lib/ansible/modules/packaging/os/swdepot.py\", \n  \"ansible/modules/packaging/os/swupd.py\": \"lib/ansible/modules/packaging/os/swupd.py\", \n  \"ansible/modules/packaging/os/urpmi.py\": \"lib/ansible/modules/packaging/os/urpmi.py\", \n  \"ansible/modules/packaging/os/xbps.py\": \"lib/ansible/modules/packaging/os/xbps.py\", \n  \"ansible/modules/packaging/os/yum.py\": \"lib/ansible/modules/packaging/os/yum.py\", \n  \"ansible/modules/packaging/os/yum_repository.py\": \"lib/ansible/modules/packaging/os/yum_repository.py\", \n  \"ansible/modules/packaging/os/zypper.py\": \"lib/ansible/modules/packaging/os/zypper.py\", \n  \"ansible/modules/packaging/os/zypper_repository.py\": \"lib/ansible/modules/packaging/os/zypper_repository.py\", \n  \"ansible/modules/remote_management/foreman/foreman.py\": \"lib/ansible/modules/remote_management/foreman/foreman.py\", \n  \"ansible/modules/remote_management/foreman/katello.py\": \"lib/ansible/modules/remote_management/foreman/katello.py\", \n  \"ansible/modules/remote_management/hpilo/hpilo_boot.py\": \"lib/ansible/modules/remote_management/hpilo/hpilo_boot.py\", \n  \"ansible/modules/remote_management/hpilo/hpilo_facts.py\": \"lib/ansible/modules/remote_management/hpilo/hpilo_facts.py\", \n  \"ansible/modules/remote_management/hpilo/hponcfg.py\": \"lib/ansible/modules/remote_management/hpilo/hponcfg.py\", \n  \"ansible/modules/remote_management/imc/imc_rest.py\": \"lib/ansible/modules/remote_management/imc/imc_rest.py\", \n  \"ansible/modules/remote_management/ipmi/ipmi_boot.py\": \"lib/ansible/modules/remote_management/ipmi/ipmi_boot.py\", \n  \"ansible/modules/remote_management/ipmi/ipmi_power.py\": \"lib/ansible/modules/remote_management/ipmi/ipmi_power.py\", \n  \"ansible/modules/remote_management/manageiq/manageiq_provider.py\": \"lib/ansible/modules/remote_management/manageiq/manageiq_provider.py\", \n  \"ansible/modules/remote_management/manageiq/manageiq_tags.py\": \"lib/ansible/modules/remote_management/manageiq/manageiq_tags.py\", \n  \"ansible/modules/remote_management/manageiq/manageiq_user.py\": \"lib/ansible/modules/remote_management/manageiq/manageiq_user.py\", \n  \"ansible/modules/remote_management/oneview/oneview_enclosure_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_enclosure_facts.py\", \n  \"ansible/modules/remote_management/oneview/oneview_ethernet_network.py\": \"lib/ansible/modules/remote_management/oneview/oneview_ethernet_network.py\", \n  \"ansible/modules/remote_management/oneview/oneview_ethernet_network_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_ethernet_network_facts.py\", \n  \"ansible/modules/remote_management/oneview/oneview_fc_network.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fc_network.py\", \n  \"ansible/modules/remote_management/oneview/oneview_fc_network_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fc_network_facts.py\", \n  \"ansible/modules/remote_management/oneview/oneview_fcoe_network.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fcoe_network.py\", \n  \"ansible/modules/remote_management/oneview/oneview_fcoe_network_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fcoe_network_facts.py\", \n  \"ansible/modules/remote_management/oneview/oneview_logical_interconnect_group.py\": \"lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group.py\", \n  \"ansible/modules/remote_management/oneview/oneview_logical_interconnect_group_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group_facts.py\", \n  \"ansible/modules/remote_management/oneview/oneview_network_set.py\": \"lib/ansible/modules/remote_management/oneview/oneview_network_set.py\", \n  \"ansible/modules/remote_management/oneview/oneview_network_set_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_network_set_facts.py\", \n  \"ansible/modules/remote_management/oneview/oneview_san_manager.py\": \"lib/ansible/modules/remote_management/oneview/oneview_san_manager.py\", \n  \"ansible/modules/remote_management/oneview/oneview_san_manager_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_san_manager_facts.py\", \n  \"ansible/modules/remote_management/stacki/stacki_host.py\": \"lib/ansible/modules/remote_management/stacki/stacki_host.py\", \n  \"ansible/modules/remote_management/wakeonlan.py\": \"lib/ansible/modules/remote_management/wakeonlan.py\", \n  \"ansible/modules/source_control/bzr.py\": \"lib/ansible/modules/source_control/bzr.py\", \n  \"ansible/modules/source_control/git.py\": \"lib/ansible/modules/source_control/git.py\", \n  \"ansible/modules/source_control/git_config.py\": \"lib/ansible/modules/source_control/git_config.py\", \n  \"ansible/modules/source_control/github_deploy_key.py\": \"lib/ansible/modules/source_control/github_deploy_key.py\", \n  \"ansible/modules/source_control/github_hooks.py\": \"lib/ansible/modules/source_control/github_hooks.py\", \n  \"ansible/modules/source_control/github_issue.py\": \"lib/ansible/modules/source_control/github_issue.py\", \n  \"ansible/modules/source_control/github_key.py\": \"lib/ansible/modules/source_control/github_key.py\", \n  \"ansible/modules/source_control/github_release.py\": \"lib/ansible/modules/source_control/github_release.py\", \n  \"ansible/modules/source_control/gitlab_group.py\": \"lib/ansible/modules/source_control/gitlab_group.py\", \n  \"ansible/modules/source_control/gitlab_project.py\": \"lib/ansible/modules/source_control/gitlab_project.py\", \n  \"ansible/modules/source_control/gitlab_user.py\": \"lib/ansible/modules/source_control/gitlab_user.py\", \n  \"ansible/modules/source_control/hg.py\": \"lib/ansible/modules/source_control/hg.py\", \n  \"ansible/modules/source_control/subversion.py\": \"lib/ansible/modules/source_control/subversion.py\", \n  \"ansible/modules/storage/infinidat/infini_export.py\": \"lib/ansible/modules/storage/infinidat/infini_export.py\", \n  \"ansible/modules/storage/infinidat/infini_export_client.py\": \"lib/ansible/modules/storage/infinidat/infini_export_client.py\", \n  \"ansible/modules/storage/infinidat/infini_fs.py\": \"lib/ansible/modules/storage/infinidat/infini_fs.py\", \n  \"ansible/modules/storage/infinidat/infini_host.py\": \"lib/ansible/modules/storage/infinidat/infini_host.py\", \n  \"ansible/modules/storage/infinidat/infini_pool.py\": \"lib/ansible/modules/storage/infinidat/infini_pool.py\", \n  \"ansible/modules/storage/infinidat/infini_vol.py\": \"lib/ansible/modules/storage/infinidat/infini_vol.py\", \n  \"ansible/modules/storage/netapp/na_cdot_aggregate.py\": \"lib/ansible/modules/storage/netapp/na_cdot_aggregate.py\", \n  \"ansible/modules/storage/netapp/na_cdot_license.py\": \"lib/ansible/modules/storage/netapp/na_cdot_license.py\", \n  \"ansible/modules/storage/netapp/na_cdot_lun.py\": \"lib/ansible/modules/storage/netapp/na_cdot_lun.py\", \n  \"ansible/modules/storage/netapp/na_cdot_qtree.py\": \"lib/ansible/modules/storage/netapp/na_cdot_qtree.py\", \n  \"ansible/modules/storage/netapp/na_cdot_svm.py\": \"lib/ansible/modules/storage/netapp/na_cdot_svm.py\", \n  \"ansible/modules/storage/netapp/na_cdot_user.py\": \"lib/ansible/modules/storage/netapp/na_cdot_user.py\", \n  \"ansible/modules/storage/netapp/na_cdot_user_role.py\": \"lib/ansible/modules/storage/netapp/na_cdot_user_role.py\", \n  \"ansible/modules/storage/netapp/na_cdot_volume.py\": \"lib/ansible/modules/storage/netapp/na_cdot_volume.py\", \n  \"ansible/modules/storage/netapp/netapp_e_amg.py\": \"lib/ansible/modules/storage/netapp/netapp_e_amg.py\", \n  \"ansible/modules/storage/netapp/netapp_e_amg_role.py\": \"lib/ansible/modules/storage/netapp/netapp_e_amg_role.py\", \n  \"ansible/modules/storage/netapp/netapp_e_amg_sync.py\": \"lib/ansible/modules/storage/netapp/netapp_e_amg_sync.py\", \n  \"ansible/modules/storage/netapp/netapp_e_auth.py\": \"lib/ansible/modules/storage/netapp/netapp_e_auth.py\", \n  \"ansible/modules/storage/netapp/netapp_e_facts.py\": \"lib/ansible/modules/storage/netapp/netapp_e_facts.py\", \n  \"ansible/modules/storage/netapp/netapp_e_flashcache.py\": \"lib/ansible/modules/storage/netapp/netapp_e_flashcache.py\", \n  \"ansible/modules/storage/netapp/netapp_e_host.py\": \"lib/ansible/modules/storage/netapp/netapp_e_host.py\", \n  \"ansible/modules/storage/netapp/netapp_e_hostgroup.py\": \"lib/ansible/modules/storage/netapp/netapp_e_hostgroup.py\", \n  \"ansible/modules/storage/netapp/netapp_e_lun_mapping.py\": \"lib/ansible/modules/storage/netapp/netapp_e_lun_mapping.py\", \n  \"ansible/modules/storage/netapp/netapp_e_snapshot_group.py\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_group.py\", \n  \"ansible/modules/storage/netapp/netapp_e_snapshot_images.py\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_images.py\", \n  \"ansible/modules/storage/netapp/netapp_e_snapshot_volume.py\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_volume.py\", \n  \"ansible/modules/storage/netapp/netapp_e_storage_system.py\": \"lib/ansible/modules/storage/netapp/netapp_e_storage_system.py\", \n  \"ansible/modules/storage/netapp/netapp_e_storagepool.py\": \"lib/ansible/modules/storage/netapp/netapp_e_storagepool.py\", \n  \"ansible/modules/storage/netapp/netapp_e_volume.py\": \"lib/ansible/modules/storage/netapp/netapp_e_volume.py\", \n  \"ansible/modules/storage/netapp/netapp_e_volume_copy.py\": \"lib/ansible/modules/storage/netapp/netapp_e_volume_copy.py\", \n  \"ansible/modules/storage/netapp/sf_account_manager.py\": \"lib/ansible/modules/storage/netapp/sf_account_manager.py\", \n  \"ansible/modules/storage/netapp/sf_check_connections.py\": \"lib/ansible/modules/storage/netapp/sf_check_connections.py\", \n  \"ansible/modules/storage/netapp/sf_snapshot_schedule_manager.py\": \"lib/ansible/modules/storage/netapp/sf_snapshot_schedule_manager.py\", \n  \"ansible/modules/storage/netapp/sf_volume_access_group_manager.py\": \"lib/ansible/modules/storage/netapp/sf_volume_access_group_manager.py\", \n  \"ansible/modules/storage/netapp/sf_volume_manager.py\": \"lib/ansible/modules/storage/netapp/sf_volume_manager.py\", \n  \"ansible/modules/storage/purestorage/purefa_hg.py\": \"lib/ansible/modules/storage/purestorage/purefa_hg.py\", \n  \"ansible/modules/storage/purestorage/purefa_host.py\": \"lib/ansible/modules/storage/purestorage/purefa_host.py\", \n  \"ansible/modules/storage/purestorage/purefa_pg.py\": \"lib/ansible/modules/storage/purestorage/purefa_pg.py\", \n  \"ansible/modules/storage/purestorage/purefa_snap.py\": \"lib/ansible/modules/storage/purestorage/purefa_snap.py\", \n  \"ansible/modules/storage/purestorage/purefa_volume.py\": \"lib/ansible/modules/storage/purestorage/purefa_volume.py\", \n  \"ansible/modules/storage/zfs/zfs.py\": \"lib/ansible/modules/storage/zfs/zfs.py\", \n  \"ansible/modules/storage/zfs/zfs_facts.py\": \"lib/ansible/modules/storage/zfs/zfs_facts.py\", \n  \"ansible/modules/storage/zfs/zpool_facts.py\": \"lib/ansible/modules/storage/zfs/zpool_facts.py\", \n  \"ansible/modules/system/aix_inittab.py\": \"lib/ansible/modules/system/aix_inittab.py\", \n  \"ansible/modules/system/aix_lvol.py\": \"lib/ansible/modules/system/aix_lvol.py\", \n  \"ansible/modules/system/alternatives.py\": \"lib/ansible/modules/system/alternatives.py\", \n  \"ansible/modules/system/at.py\": \"lib/ansible/modules/system/at.py\", \n  \"ansible/modules/system/authorized_key.py\": \"lib/ansible/modules/system/authorized_key.py\", \n  \"ansible/modules/system/awall.py\": \"lib/ansible/modules/system/awall.py\", \n  \"ansible/modules/system/beadm.py\": \"lib/ansible/modules/system/beadm.py\", \n  \"ansible/modules/system/capabilities.py\": \"lib/ansible/modules/system/capabilities.py\", \n  \"ansible/modules/system/cron.py\": \"lib/ansible/modules/system/cron.py\", \n  \"ansible/modules/system/cronvar.py\": \"lib/ansible/modules/system/cronvar.py\", \n  \"ansible/modules/system/crypttab.py\": \"lib/ansible/modules/system/crypttab.py\", \n  \"ansible/modules/system/dconf.py\": \"lib/ansible/modules/system/dconf.py\", \n  \"ansible/modules/system/debconf.py\": \"lib/ansible/modules/system/debconf.py\", \n  \"ansible/modules/system/facter.py\": \"lib/ansible/modules/system/facter.py\", \n  \"ansible/modules/system/filesystem.py\": \"lib/ansible/modules/system/filesystem.py\", \n  \"ansible/modules/system/firewalld.py\": \"lib/ansible/modules/system/firewalld.py\", \n  \"ansible/modules/system/gconftool2.py\": \"lib/ansible/modules/system/gconftool2.py\", \n  \"ansible/modules/system/getent.py\": \"lib/ansible/modules/system/getent.py\", \n  \"ansible/modules/system/gluster_volume.py\": \"lib/ansible/modules/system/gluster_volume.py\", \n  \"ansible/modules/system/group.py\": \"lib/ansible/modules/system/group.py\", \n  \"ansible/modules/system/hostname.py\": \"lib/ansible/modules/system/hostname.py\", \n  \"ansible/modules/system/interfaces_file.py\": \"lib/ansible/modules/system/interfaces_file.py\", \n  \"ansible/modules/system/iptables.py\": \"lib/ansible/modules/system/iptables.py\", \n  \"ansible/modules/system/java_cert.py\": \"lib/ansible/modules/system/java_cert.py\", \n  \"ansible/modules/system/kernel_blacklist.py\": \"lib/ansible/modules/system/kernel_blacklist.py\", \n  \"ansible/modules/system/known_hosts.py\": \"lib/ansible/modules/system/known_hosts.py\", \n  \"ansible/modules/system/locale_gen.py\": \"lib/ansible/modules/system/locale_gen.py\", \n  \"ansible/modules/system/lvg.py\": \"lib/ansible/modules/system/lvg.py\", \n  \"ansible/modules/system/lvol.py\": \"lib/ansible/modules/system/lvol.py\", \n  \"ansible/modules/system/make.py\": \"lib/ansible/modules/system/make.py\", \n  \"ansible/modules/system/mksysb.py\": \"lib/ansible/modules/system/mksysb.py\", \n  \"ansible/modules/system/modprobe.py\": \"lib/ansible/modules/system/modprobe.py\", \n  \"ansible/modules/system/mount.py\": \"lib/ansible/modules/system/mount.py\", \n  \"ansible/modules/system/nosh.py\": \"lib/ansible/modules/system/nosh.py\", \n  \"ansible/modules/system/ohai.py\": \"lib/ansible/modules/system/ohai.py\", \n  \"ansible/modules/system/open_iscsi.py\": \"lib/ansible/modules/system/open_iscsi.py\", \n  \"ansible/modules/system/openwrt_init.py\": \"lib/ansible/modules/system/openwrt_init.py\", \n  \"ansible/modules/system/osx_defaults.py\": \"lib/ansible/modules/system/osx_defaults.py\", \n  \"ansible/modules/system/pam_limits.py\": \"lib/ansible/modules/system/pam_limits.py\", \n  \"ansible/modules/system/pamd.py\": \"lib/ansible/modules/system/pamd.py\", \n  \"ansible/modules/system/parted.py\": \"lib/ansible/modules/system/parted.py\", \n  \"ansible/modules/system/ping.py\": \"lib/ansible/modules/system/ping.py\", \n  \"ansible/modules/system/puppet.py\": \"lib/ansible/modules/system/puppet.py\", \n  \"ansible/modules/system/runit.py\": \"lib/ansible/modules/system/runit.py\", \n  \"ansible/modules/system/seboolean.py\": \"lib/ansible/modules/system/seboolean.py\", \n  \"ansible/modules/system/sefcontext.py\": \"lib/ansible/modules/system/sefcontext.py\", \n  \"ansible/modules/system/selinux.py\": \"lib/ansible/modules/system/selinux.py\", \n  \"ansible/modules/system/selinux_permissive.py\": \"lib/ansible/modules/system/selinux_permissive.py\", \n  \"ansible/modules/system/seport.py\": \"lib/ansible/modules/system/seport.py\", \n  \"ansible/modules/system/service.py\": \"lib/ansible/modules/system/service.py\", \n  \"ansible/modules/system/setup.py\": \"lib/ansible/modules/system/setup.py\", \n  \"ansible/modules/system/solaris_zone.py\": \"lib/ansible/modules/system/solaris_zone.py\", \n  \"ansible/modules/system/svc.py\": \"lib/ansible/modules/system/svc.py\", \n  \"ansible/modules/system/sysctl.py\": \"lib/ansible/modules/system/sysctl.py\", \n  \"ansible/modules/system/systemd.py\": \"lib/ansible/modules/system/systemd.py\", \n  \"ansible/modules/system/timezone.py\": \"lib/ansible/modules/system/timezone.py\", \n  \"ansible/modules/system/ufw.py\": \"lib/ansible/modules/system/ufw.py\", \n  \"ansible/modules/system/user.py\": \"lib/ansible/modules/system/user.py\", \n  \"ansible/modules/utilities/helper/_accelerate.py\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n  \"ansible/modules/utilities/helper/accelerate.py\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n  \"ansible/modules/utilities/helper/meta.py\": \"lib/ansible/modules/utilities/helper/meta.py\", \n  \"ansible/modules/utilities/logic/_include.py\": \"lib/ansible/modules/utilities/logic/_include.py\", \n  \"ansible/modules/utilities/logic/assert.py\": \"lib/ansible/modules/utilities/logic/assert.py\", \n  \"ansible/modules/utilities/logic/async_status.py\": \"lib/ansible/modules/utilities/logic/async_status.py\", \n  \"ansible/modules/utilities/logic/async_wrapper.py\": \"lib/ansible/modules/utilities/logic/async_wrapper.py\", \n  \"ansible/modules/utilities/logic/debug.py\": \"lib/ansible/modules/utilities/logic/debug.py\", \n  \"ansible/modules/utilities/logic/fail.py\": \"lib/ansible/modules/utilities/logic/fail.py\", \n  \"ansible/modules/utilities/logic/import_playbook.py\": \"lib/ansible/modules/utilities/logic/import_playbook.py\", \n  \"ansible/modules/utilities/logic/import_role.py\": \"lib/ansible/modules/utilities/logic/import_role.py\", \n  \"ansible/modules/utilities/logic/import_tasks.py\": \"lib/ansible/modules/utilities/logic/import_tasks.py\", \n  \"ansible/modules/utilities/logic/include.py\": \"lib/ansible/modules/utilities/logic/_include.py\", \n  \"ansible/modules/utilities/logic/include_role.py\": \"lib/ansible/modules/utilities/logic/include_role.py\", \n  \"ansible/modules/utilities/logic/include_tasks.py\": \"lib/ansible/modules/utilities/logic/include_tasks.py\", \n  \"ansible/modules/utilities/logic/include_vars.py\": \"lib/ansible/modules/utilities/logic/include_vars.py\", \n  \"ansible/modules/utilities/logic/pause.py\": \"lib/ansible/modules/utilities/logic/pause.py\", \n  \"ansible/modules/utilities/logic/set_fact.py\": \"lib/ansible/modules/utilities/logic/set_fact.py\", \n  \"ansible/modules/utilities/logic/set_stats.py\": \"lib/ansible/modules/utilities/logic/set_stats.py\", \n  \"ansible/modules/utilities/logic/wait_for.py\": \"lib/ansible/modules/utilities/logic/wait_for.py\", \n  \"ansible/modules/utilities/logic/wait_for_connection.py\": \"lib/ansible/modules/utilities/logic/wait_for_connection.py\", \n  \"ansible/modules/web_infrastructure/ansible_tower/tower_credential.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_credential.py\", \n  \"ansible/modules/web_infrastructure/ansible_tower/tower_group.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_group.py\", \n  \"ansible/modules/web_infrastructure/ansible_tower/tower_host.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_host.py\", \n  \"ansible/modules/web_infrastructure/ansible_tower/tower_inventory.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_inventory.py\", \n  \"ansible/modules/web_infrastructure/ansible_tower/tower_job_cancel.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_cancel.py\", \n  \"ansible/modules/web_infrastructure/ansible_tower/tower_job_launch.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_launch.py\", \n  \"ansible/modules/web_infrastructure/ansible_tower/tower_job_list.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_list.py\", \n  \"ansible/modules/web_infrastructure/ansible_tower/tower_job_template.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_template.py\", \n  \"ansible/modules/web_infrastructure/ansible_tower/tower_job_wait.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_wait.py\", \n  \"ansible/modules/web_infrastructure/ansible_tower/tower_label.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_label.py\", \n  \"ansible/modules/web_infrastructure/ansible_tower/tower_organization.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_organization.py\", \n  \"ansible/modules/web_infrastructure/ansible_tower/tower_project.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_project.py\", \n  \"ansible/modules/web_infrastructure/ansible_tower/tower_role.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_role.py\", \n  \"ansible/modules/web_infrastructure/ansible_tower/tower_team.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_team.py\", \n  \"ansible/modules/web_infrastructure/ansible_tower/tower_user.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_user.py\", \n  \"ansible/modules/web_infrastructure/apache2_mod_proxy.py\": \"lib/ansible/modules/web_infrastructure/apache2_mod_proxy.py\", \n  \"ansible/modules/web_infrastructure/apache2_module.py\": \"lib/ansible/modules/web_infrastructure/apache2_module.py\", \n  \"ansible/modules/web_infrastructure/deploy_helper.py\": \"lib/ansible/modules/web_infrastructure/deploy_helper.py\", \n  \"ansible/modules/web_infrastructure/django_manage.py\": \"lib/ansible/modules/web_infrastructure/django_manage.py\", \n  \"ansible/modules/web_infrastructure/ejabberd_user.py\": \"lib/ansible/modules/web_infrastructure/ejabberd_user.py\", \n  \"ansible/modules/web_infrastructure/gunicorn.py\": \"lib/ansible/modules/web_infrastructure/gunicorn.py\", \n  \"ansible/modules/web_infrastructure/htpasswd.py\": \"lib/ansible/modules/web_infrastructure/htpasswd.py\", \n  \"ansible/modules/web_infrastructure/jboss.py\": \"lib/ansible/modules/web_infrastructure/jboss.py\", \n  \"ansible/modules/web_infrastructure/jenkins_job.py\": \"lib/ansible/modules/web_infrastructure/jenkins_job.py\", \n  \"ansible/modules/web_infrastructure/jenkins_plugin.py\": \"lib/ansible/modules/web_infrastructure/jenkins_plugin.py\", \n  \"ansible/modules/web_infrastructure/jenkins_script.py\": \"lib/ansible/modules/web_infrastructure/jenkins_script.py\", \n  \"ansible/modules/web_infrastructure/jira.py\": \"lib/ansible/modules/web_infrastructure/jira.py\", \n  \"ansible/modules/web_infrastructure/letsencrypt.py\": \"lib/ansible/modules/web_infrastructure/letsencrypt.py\", \n  \"ansible/modules/web_infrastructure/nginx_status_facts.py\": \"lib/ansible/modules/web_infrastructure/nginx_status_facts.py\", \n  \"ansible/modules/web_infrastructure/rundeck_acl_policy.py\": \"lib/ansible/modules/web_infrastructure/rundeck_acl_policy.py\", \n  \"ansible/modules/web_infrastructure/rundeck_project.py\": \"lib/ansible/modules/web_infrastructure/rundeck_project.py\", \n  \"ansible/modules/web_infrastructure/supervisorctl.py\": \"lib/ansible/modules/web_infrastructure/supervisorctl.py\", \n  \"ansible/modules/web_infrastructure/taiga_issue.py\": \"lib/ansible/modules/web_infrastructure/taiga_issue.py\", \n  \"ansible/modules/windows/_win_msi.ps1\": \"lib/ansible/modules/windows/_win_msi.ps1\", \n  \"ansible/modules/windows/_win_msi.py\": \"lib/ansible/modules/windows/_win_msi.py\", \n  \"ansible/modules/windows/async_status.ps1\": \"lib/ansible/modules/windows/async_status.ps1\", \n  \"ansible/modules/windows/async_wrapper.ps1\": \"lib/ansible/modules/windows/async_wrapper.ps1\", \n  \"ansible/modules/windows/setup.ps1\": \"lib/ansible/modules/windows/setup.ps1\", \n  \"ansible/modules/windows/slurp.ps1\": \"lib/ansible/modules/windows/slurp.ps1\", \n  \"ansible/modules/windows/win_acl.ps1\": \"lib/ansible/modules/windows/win_acl.ps1\", \n  \"ansible/modules/windows/win_acl.py\": \"lib/ansible/modules/windows/win_acl.py\", \n  \"ansible/modules/windows/win_acl_inheritance.ps1\": \"lib/ansible/modules/windows/win_acl_inheritance.ps1\", \n  \"ansible/modules/windows/win_acl_inheritance.py\": \"lib/ansible/modules/windows/win_acl_inheritance.py\", \n  \"ansible/modules/windows/win_audit_rule.ps1\": \"lib/ansible/modules/windows/win_audit_rule.ps1\", \n  \"ansible/modules/windows/win_audit_rule.py\": \"lib/ansible/modules/windows/win_audit_rule.py\", \n  \"ansible/modules/windows/win_chocolatey.ps1\": \"lib/ansible/modules/windows/win_chocolatey.ps1\", \n  \"ansible/modules/windows/win_chocolatey.py\": \"lib/ansible/modules/windows/win_chocolatey.py\", \n  \"ansible/modules/windows/win_command.ps1\": \"lib/ansible/modules/windows/win_command.ps1\", \n  \"ansible/modules/windows/win_command.py\": \"lib/ansible/modules/windows/win_command.py\", \n  \"ansible/modules/windows/win_copy.ps1\": \"lib/ansible/modules/windows/win_copy.ps1\", \n  \"ansible/modules/windows/win_copy.py\": \"lib/ansible/modules/windows/win_copy.py\", \n  \"ansible/modules/windows/win_defrag.ps1\": \"lib/ansible/modules/windows/win_defrag.ps1\", \n  \"ansible/modules/windows/win_defrag.py\": \"lib/ansible/modules/windows/win_defrag.py\", \n  \"ansible/modules/windows/win_disk_image.ps1\": \"lib/ansible/modules/windows/win_disk_image.ps1\", \n  \"ansible/modules/windows/win_disk_image.py\": \"lib/ansible/modules/windows/win_disk_image.py\", \n  \"ansible/modules/windows/win_dns_client.ps1\": \"lib/ansible/modules/windows/win_dns_client.ps1\", \n  \"ansible/modules/windows/win_dns_client.py\": \"lib/ansible/modules/windows/win_dns_client.py\", \n  \"ansible/modules/windows/win_domain.ps1\": \"lib/ansible/modules/windows/win_domain.ps1\", \n  \"ansible/modules/windows/win_domain.py\": \"lib/ansible/modules/windows/win_domain.py\", \n  \"ansible/modules/windows/win_domain_controller.ps1\": \"lib/ansible/modules/windows/win_domain_controller.ps1\", \n  \"ansible/modules/windows/win_domain_controller.py\": \"lib/ansible/modules/windows/win_domain_controller.py\", \n  \"ansible/modules/windows/win_domain_group.ps1\": \"lib/ansible/modules/windows/win_domain_group.ps1\", \n  \"ansible/modules/windows/win_domain_group.py\": \"lib/ansible/modules/windows/win_domain_group.py\", \n  \"ansible/modules/windows/win_domain_membership.ps1\": \"lib/ansible/modules/windows/win_domain_membership.ps1\", \n  \"ansible/modules/windows/win_domain_membership.py\": \"lib/ansible/modules/windows/win_domain_membership.py\", \n  \"ansible/modules/windows/win_domain_user.ps1\": \"lib/ansible/modules/windows/win_domain_user.ps1\", \n  \"ansible/modules/windows/win_domain_user.py\": \"lib/ansible/modules/windows/win_domain_user.py\", \n  \"ansible/modules/windows/win_dotnet_ngen.ps1\": \"lib/ansible/modules/windows/win_dotnet_ngen.ps1\", \n  \"ansible/modules/windows/win_dotnet_ngen.py\": \"lib/ansible/modules/windows/win_dotnet_ngen.py\", \n  \"ansible/modules/windows/win_dsc.ps1\": \"lib/ansible/modules/windows/win_dsc.ps1\", \n  \"ansible/modules/windows/win_dsc.py\": \"lib/ansible/modules/windows/win_dsc.py\", \n  \"ansible/modules/windows/win_environment.ps1\": \"lib/ansible/modules/windows/win_environment.ps1\", \n  \"ansible/modules/windows/win_environment.py\": \"lib/ansible/modules/windows/win_environment.py\", \n  \"ansible/modules/windows/win_eventlog.ps1\": \"lib/ansible/modules/windows/win_eventlog.ps1\", \n  \"ansible/modules/windows/win_eventlog.py\": \"lib/ansible/modules/windows/win_eventlog.py\", \n  \"ansible/modules/windows/win_eventlog_entry.ps1\": \"lib/ansible/modules/windows/win_eventlog_entry.ps1\", \n  \"ansible/modules/windows/win_eventlog_entry.py\": \"lib/ansible/modules/windows/win_eventlog_entry.py\", \n  \"ansible/modules/windows/win_feature.ps1\": \"lib/ansible/modules/windows/win_feature.ps1\", \n  \"ansible/modules/windows/win_feature.py\": \"lib/ansible/modules/windows/win_feature.py\", \n  \"ansible/modules/windows/win_file.ps1\": \"lib/ansible/modules/windows/win_file.ps1\", \n  \"ansible/modules/windows/win_file.py\": \"lib/ansible/modules/windows/win_file.py\", \n  \"ansible/modules/windows/win_file_version.ps1\": \"lib/ansible/modules/windows/win_file_version.ps1\", \n  \"ansible/modules/windows/win_file_version.py\": \"lib/ansible/modules/windows/win_file_version.py\", \n  \"ansible/modules/windows/win_find.ps1\": \"lib/ansible/modules/windows/win_find.ps1\", \n  \"ansible/modules/windows/win_find.py\": \"lib/ansible/modules/windows/win_find.py\", \n  \"ansible/modules/windows/win_firewall.ps1\": \"lib/ansible/modules/windows/win_firewall.ps1\", \n  \"ansible/modules/windows/win_firewall.py\": \"lib/ansible/modules/windows/win_firewall.py\", \n  \"ansible/modules/windows/win_firewall_rule.ps1\": \"lib/ansible/modules/windows/win_firewall_rule.ps1\", \n  \"ansible/modules/windows/win_firewall_rule.py\": \"lib/ansible/modules/windows/win_firewall_rule.py\", \n  \"ansible/modules/windows/win_get_url.ps1\": [\n    \"lib/ansible/modules/windows/win_get_url.ps1\"\n  ], \n  \"ansible/modules/windows/win_get_url.py\": \"lib/ansible/modules/windows/win_get_url.py\", \n  \"ansible/modules/windows/win_group.ps1\": \"lib/ansible/modules/windows/win_group.ps1\", \n  \"ansible/modules/windows/win_group.py\": \"lib/ansible/modules/windows/win_group.py\", \n  \"ansible/modules/windows/win_group_membership.ps1\": \"lib/ansible/modules/windows/win_group_membership.ps1\", \n  \"ansible/modules/windows/win_group_membership.py\": \"lib/ansible/modules/windows/win_group_membership.py\", \n  \"ansible/modules/windows/win_hotfix.ps1\": \"lib/ansible/modules/windows/win_hotfix.ps1\", \n  \"ansible/modules/windows/win_hotfix.py\": \"lib/ansible/modules/windows/win_hotfix.py\", \n  \"ansible/modules/windows/win_iis_virtualdirectory.ps1\": \"lib/ansible/modules/windows/win_iis_virtualdirectory.ps1\", \n  \"ansible/modules/windows/win_iis_virtualdirectory.py\": \"lib/ansible/modules/windows/win_iis_virtualdirectory.py\", \n  \"ansible/modules/windows/win_iis_webapplication.ps1\": \"lib/ansible/modules/windows/win_iis_webapplication.ps1\", \n  \"ansible/modules/windows/win_iis_webapplication.py\": \"lib/ansible/modules/windows/win_iis_webapplication.py\", \n  \"ansible/modules/windows/win_iis_webapppool.ps1\": \"lib/ansible/modules/windows/win_iis_webapppool.ps1\", \n  \"ansible/modules/windows/win_iis_webapppool.py\": \"lib/ansible/modules/windows/win_iis_webapppool.py\", \n  \"ansible/modules/windows/win_iis_webbinding.ps1\": \"lib/ansible/modules/windows/win_iis_webbinding.ps1\", \n  \"ansible/modules/windows/win_iis_webbinding.py\": \"lib/ansible/modules/windows/win_iis_webbinding.py\", \n  \"ansible/modules/windows/win_iis_website.ps1\": \"lib/ansible/modules/windows/win_iis_website.ps1\", \n  \"ansible/modules/windows/win_iis_website.py\": \"lib/ansible/modules/windows/win_iis_website.py\", \n  \"ansible/modules/windows/win_lineinfile.ps1\": \"lib/ansible/modules/windows/win_lineinfile.ps1\", \n  \"ansible/modules/windows/win_lineinfile.py\": \"lib/ansible/modules/windows/win_lineinfile.py\", \n  \"ansible/modules/windows/win_mapped_drive.ps1\": \"lib/ansible/modules/windows/win_mapped_drive.ps1\", \n  \"ansible/modules/windows/win_mapped_drive.py\": \"lib/ansible/modules/windows/win_mapped_drive.py\", \n  \"ansible/modules/windows/win_msg.ps1\": \"lib/ansible/modules/windows/win_msg.ps1\", \n  \"ansible/modules/windows/win_msg.py\": \"lib/ansible/modules/windows/win_msg.py\", \n  \"ansible/modules/windows/win_msi.ps1\": \"lib/ansible/modules/windows/_win_msi.ps1\", \n  \"ansible/modules/windows/win_msi.py\": \"lib/ansible/modules/windows/_win_msi.py\", \n  \"ansible/modules/windows/win_nssm.ps1\": \"lib/ansible/modules/windows/win_nssm.ps1\", \n  \"ansible/modules/windows/win_nssm.py\": \"lib/ansible/modules/windows/win_nssm.py\", \n  \"ansible/modules/windows/win_owner.ps1\": \"lib/ansible/modules/windows/win_owner.ps1\", \n  \"ansible/modules/windows/win_owner.py\": \"lib/ansible/modules/windows/win_owner.py\", \n  \"ansible/modules/windows/win_package.ps1\": \"lib/ansible/modules/windows/win_package.ps1\", \n  \"ansible/modules/windows/win_package.py\": \"lib/ansible/modules/windows/win_package.py\", \n  \"ansible/modules/windows/win_pagefile.ps1\": \"lib/ansible/modules/windows/win_pagefile.ps1\", \n  \"ansible/modules/windows/win_pagefile.py\": \"lib/ansible/modules/windows/win_pagefile.py\", \n  \"ansible/modules/windows/win_path.ps1\": \"lib/ansible/modules/windows/win_path.ps1\", \n  \"ansible/modules/windows/win_path.py\": \"lib/ansible/modules/windows/win_path.py\", \n  \"ansible/modules/windows/win_ping.ps1\": \"lib/ansible/modules/windows/win_ping.ps1\", \n  \"ansible/modules/windows/win_ping.py\": \"lib/ansible/modules/windows/win_ping.py\", \n  \"ansible/modules/windows/win_power_plan.ps1\": \"lib/ansible/modules/windows/win_power_plan.ps1\", \n  \"ansible/modules/windows/win_power_plan.py\": \"lib/ansible/modules/windows/win_power_plan.py\", \n  \"ansible/modules/windows/win_psexec.ps1\": \"lib/ansible/modules/windows/win_psexec.ps1\", \n  \"ansible/modules/windows/win_psexec.py\": \"lib/ansible/modules/windows/win_psexec.py\", \n  \"ansible/modules/windows/win_psmodule.ps1\": \"lib/ansible/modules/windows/win_psmodule.ps1\", \n  \"ansible/modules/windows/win_psmodule.py\": \"lib/ansible/modules/windows/win_psmodule.py\", \n  \"ansible/modules/windows/win_rabbitmq_plugin.ps1\": \"lib/ansible/modules/windows/win_rabbitmq_plugin.ps1\", \n  \"ansible/modules/windows/win_rabbitmq_plugin.py\": \"lib/ansible/modules/windows/win_rabbitmq_plugin.py\", \n  \"ansible/modules/windows/win_reboot.py\": \"lib/ansible/modules/windows/win_reboot.py\", \n  \"ansible/modules/windows/win_reg_stat.ps1\": \"lib/ansible/modules/windows/win_reg_stat.ps1\", \n  \"ansible/modules/windows/win_reg_stat.py\": \"lib/ansible/modules/windows/win_reg_stat.py\", \n  \"ansible/modules/windows/win_regedit.ps1\": \"lib/ansible/modules/windows/win_regedit.ps1\", \n  \"ansible/modules/windows/win_regedit.py\": \"lib/ansible/modules/windows/win_regedit.py\", \n  \"ansible/modules/windows/win_region.ps1\": \"lib/ansible/modules/windows/win_region.ps1\", \n  \"ansible/modules/windows/win_region.py\": \"lib/ansible/modules/windows/win_region.py\", \n  \"ansible/modules/windows/win_regmerge.ps1\": \"lib/ansible/modules/windows/win_regmerge.ps1\", \n  \"ansible/modules/windows/win_regmerge.py\": \"lib/ansible/modules/windows/win_regmerge.py\", \n  \"ansible/modules/windows/win_robocopy.ps1\": \"lib/ansible/modules/windows/win_robocopy.ps1\", \n  \"ansible/modules/windows/win_robocopy.py\": \"lib/ansible/modules/windows/win_robocopy.py\", \n  \"ansible/modules/windows/win_route.ps1\": \"lib/ansible/modules/windows/win_route.ps1\", \n  \"ansible/modules/windows/win_route.py\": \"lib/ansible/modules/windows/win_route.py\", \n  \"ansible/modules/windows/win_say.ps1\": \"lib/ansible/modules/windows/win_say.ps1\", \n  \"ansible/modules/windows/win_say.py\": \"lib/ansible/modules/windows/win_say.py\", \n  \"ansible/modules/windows/win_scheduled_task.ps1\": \"lib/ansible/modules/windows/win_scheduled_task.ps1\", \n  \"ansible/modules/windows/win_scheduled_task.py\": \"lib/ansible/modules/windows/win_scheduled_task.py\", \n  \"ansible/modules/windows/win_scheduled_task_stat.ps1\": \"lib/ansible/modules/windows/win_scheduled_task_stat.ps1\", \n  \"ansible/modules/windows/win_scheduled_task_stat.py\": \"lib/ansible/modules/windows/win_scheduled_task_stat.py\", \n  \"ansible/modules/windows/win_security_policy.ps1\": \"lib/ansible/modules/windows/win_security_policy.ps1\", \n  \"ansible/modules/windows/win_security_policy.py\": \"lib/ansible/modules/windows/win_security_policy.py\", \n  \"ansible/modules/windows/win_service.ps1\": \"lib/ansible/modules/windows/win_service.ps1\", \n  \"ansible/modules/windows/win_service.py\": \"lib/ansible/modules/windows/win_service.py\", \n  \"ansible/modules/windows/win_share.ps1\": \"lib/ansible/modules/windows/win_share.ps1\", \n  \"ansible/modules/windows/win_share.py\": \"lib/ansible/modules/windows/win_share.py\", \n  \"ansible/modules/windows/win_shell.ps1\": \"lib/ansible/modules/windows/win_shell.ps1\", \n  \"ansible/modules/windows/win_shell.py\": \"lib/ansible/modules/windows/win_shell.py\", \n  \"ansible/modules/windows/win_shortcut.ps1\": \"lib/ansible/modules/windows/win_shortcut.ps1\", \n  \"ansible/modules/windows/win_shortcut.py\": \"lib/ansible/modules/windows/win_shortcut.py\", \n  \"ansible/modules/windows/win_stat.ps1\": \"lib/ansible/modules/windows/win_stat.ps1\", \n  \"ansible/modules/windows/win_stat.py\": \"lib/ansible/modules/windows/win_stat.py\", \n  \"ansible/modules/windows/win_tempfile.ps1\": \"lib/ansible/modules/windows/win_tempfile.ps1\", \n  \"ansible/modules/windows/win_tempfile.py\": \"lib/ansible/modules/windows/win_tempfile.py\", \n  \"ansible/modules/windows/win_template.py\": \"lib/ansible/modules/windows/win_template.py\", \n  \"ansible/modules/windows/win_timezone.ps1\": \"lib/ansible/modules/windows/win_timezone.ps1\", \n  \"ansible/modules/windows/win_timezone.py\": \"lib/ansible/modules/windows/win_timezone.py\", \n  \"ansible/modules/windows/win_toast.ps1\": \"lib/ansible/modules/windows/win_toast.ps1\", \n  \"ansible/modules/windows/win_toast.py\": \"lib/ansible/modules/windows/win_toast.py\", \n  \"ansible/modules/windows/win_unzip.ps1\": \"lib/ansible/modules/windows/win_unzip.ps1\", \n  \"ansible/modules/windows/win_unzip.py\": \"lib/ansible/modules/windows/win_unzip.py\", \n  \"ansible/modules/windows/win_updates.ps1\": \"lib/ansible/modules/windows/win_updates.ps1\", \n  \"ansible/modules/windows/win_updates.py\": \"lib/ansible/modules/windows/win_updates.py\", \n  \"ansible/modules/windows/win_uri.ps1\": \"lib/ansible/modules/windows/win_uri.ps1\", \n  \"ansible/modules/windows/win_uri.py\": \"lib/ansible/modules/windows/win_uri.py\", \n  \"ansible/modules/windows/win_user.ps1\": \"lib/ansible/modules/windows/win_user.ps1\", \n  \"ansible/modules/windows/win_user.py\": \"lib/ansible/modules/windows/win_user.py\", \n  \"ansible/modules/windows/win_user_right.ps1\": \"lib/ansible/modules/windows/win_user_right.ps1\", \n  \"ansible/modules/windows/win_user_right.py\": \"lib/ansible/modules/windows/win_user_right.py\", \n  \"ansible/modules/windows/win_wait_for.ps1\": \"lib/ansible/modules/windows/win_wait_for.ps1\", \n  \"ansible/modules/windows/win_wait_for.py\": \"lib/ansible/modules/windows/win_wait_for.py\", \n  \"ansible/modules/windows/win_wakeonlan.ps1\": \"lib/ansible/modules/windows/win_wakeonlan.ps1\", \n  \"ansible/modules/windows/win_wakeonlan.py\": \"lib/ansible/modules/windows/win_wakeonlan.py\", \n  \"ansible/modules/windows/win_webpicmd.ps1\": \"lib/ansible/modules/windows/win_webpicmd.ps1\", \n  \"ansible/modules/windows/win_webpicmd.py\": \"lib/ansible/modules/windows/win_webpicmd.py\", \n  \"ansible_host var\": [], \n  \"ansible_module_os_server.py\": [\n    \"lib/ansible/modules/cloud/openstack/os_server.py\"\n  ], \n  \"ansible_module_vsphere_guest\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"ansible_ssh_common_args\": [], \n  \"aos_asn_pool\": \"lib/ansible/modules/network/aos/aos_asn_pool.py\", \n  \"aos_asn_pool module\": \"lib/ansible/modules/network/aos/aos_asn_pool.py\", \n  \"aos_blueprint\": \"lib/ansible/modules/network/aos/aos_blueprint.py\", \n  \"aos_blueprint module\": \"lib/ansible/modules/network/aos/aos_blueprint.py\", \n  \"aos_blueprint_param\": \"lib/ansible/modules/network/aos/aos_blueprint_param.py\", \n  \"aos_blueprint_param module\": \"lib/ansible/modules/network/aos/aos_blueprint_param.py\", \n  \"aos_blueprint_virtnet\": \"lib/ansible/modules/network/aos/aos_blueprint_virtnet.py\", \n  \"aos_blueprint_virtnet module\": \"lib/ansible/modules/network/aos/aos_blueprint_virtnet.py\", \n  \"aos_device\": \"lib/ansible/modules/network/aos/aos_device.py\", \n  \"aos_device module\": \"lib/ansible/modules/network/aos/aos_device.py\", \n  \"aos_external_router\": \"lib/ansible/modules/network/aos/aos_external_router.py\", \n  \"aos_external_router module\": \"lib/ansible/modules/network/aos/aos_external_router.py\", \n  \"aos_ip_pool\": \"lib/ansible/modules/network/aos/aos_ip_pool.py\", \n  \"aos_ip_pool module\": \"lib/ansible/modules/network/aos/aos_ip_pool.py\", \n  \"aos_logical_device\": \"lib/ansible/modules/network/aos/aos_logical_device.py\", \n  \"aos_logical_device module\": \"lib/ansible/modules/network/aos/aos_logical_device.py\", \n  \"aos_logical_device_map\": \"lib/ansible/modules/network/aos/aos_logical_device_map.py\", \n  \"aos_logical_device_map module\": \"lib/ansible/modules/network/aos/aos_logical_device_map.py\", \n  \"aos_login\": \"lib/ansible/modules/network/aos/aos_login.py\", \n  \"aos_login module\": \"lib/ansible/modules/network/aos/aos_login.py\", \n  \"aos_rack_type\": \"lib/ansible/modules/network/aos/aos_rack_type.py\", \n  \"aos_rack_type module\": \"lib/ansible/modules/network/aos/aos_rack_type.py\", \n  \"aos_template\": \"lib/ansible/modules/network/aos/aos_template.py\", \n  \"aos_template module\": \"lib/ansible/modules/network/aos/aos_template.py\", \n  \"apache2_mod_proxy\": \"lib/ansible/modules/web_infrastructure/apache2_mod_proxy.py\", \n  \"apache2_mod_proxy module\": \"lib/ansible/modules/web_infrastructure/apache2_mod_proxy.py\", \n  \"apache2_mod_proxy_module\": [\n    \"lib/ansible/modules/web_infrastructure/apache2_mod_proxy.py\"\n  ], \n  \"apache2_module\": [\n    \"lib/ansible/modules/web_infrastructure/apache2_module.py\"\n  ], \n  \"apache2_module module\": \"lib/ansible/modules/web_infrastructure/apache2_module.py\", \n  \"apk\": \"lib/ansible/modules/packaging/os/apk.py\", \n  \"apk module\": \"lib/ansible/modules/packaging/os/apk.py\", \n  \"apt\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"apt module\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"apt module - install .deb packages\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"apt module, potentially other package managing modules\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"apt-key\": [\n    \"lib/ansible/modules/packaging/os/apt_key.py\"\n  ], \n  \"apt-repository\": [\n    \"lib/ansible/modules/packaging/os/apt_repository.py\"\n  ], \n  \"apt_key\": [\n    \"lib/ansible/modules/packaging/os/apt_key.py\"\n  ], \n  \"apt_key module\": \"lib/ansible/modules/packaging/os/apt_key.py\", \n  \"apt_repository\": [\n    \"lib/ansible/modules/packaging/os/apt_repository.py\"\n  ], \n  \"apt_repository module\": [\n    \"lib/ansible/modules/packaging/os/apt_repository.py\"\n  ], \n  \"apt_rpm\": \"lib/ansible/modules/packaging/os/apt_rpm.py\", \n  \"apt_rpm module\": \"lib/ansible/modules/packaging/os/apt_rpm.py\", \n  \"archive\": [\n    \"lib/ansible/modules/files/archive.py\"\n  ], \n  \"archive module\": [\n    \"lib/ansible/modules/files/archive.py\"\n  ], \n  \"aruba_command\": [\n    \"lib/ansible/modules/network/aruba/aruba_command.py\"\n  ], \n  \"aruba_command module\": \"lib/ansible/modules/network/aruba/aruba_command.py\", \n  \"aruba_config\": \"lib/ansible/modules/network/aruba/aruba_config.py\", \n  \"aruba_config module\": \"lib/ansible/modules/network/aruba/aruba_config.py\", \n  \"as_command\": [], \n  \"asa_acl\": [\n    \"lib/ansible/modules/network/asa/asa_acl.py\"\n  ], \n  \"asa_acl module\": \"lib/ansible/modules/network/asa/asa_acl.py\", \n  \"asa_command\": [\n    \"lib/ansible/modules/network/asa/asa_command.py\"\n  ], \n  \"asa_command module\": \"lib/ansible/modules/network/asa/asa_command.py\", \n  \"asa_config\": [\n    \"lib/ansible/modules/network/asa/asa_config.py\"\n  ], \n  \"asa_config\\nasa_acl\": [\n    \"lib/ansible/modules/network/asa/asa_acl.py\", \n    \"lib/ansible/modules/network/asa/asa_config.py\"\n  ], \n  \"asa_config module\": \"lib/ansible/modules/network/asa/asa_config.py\", \n  \"assemble\": \"lib/ansible/modules/files/assemble.py\", \n  \"assemble module\": [\n    \"lib/ansible/modules/files/assemble.py\"\n  ], \n  \"assert\": \"lib/ansible/modules/utilities/logic/assert.py\", \n  \"assert module\": [\n    \"lib/ansible/modules/utilities/logic/assert.py\"\n  ], \n  \"async\": [], \n  \"async module\": [], \n  \"async_status\": \"lib/ansible/modules/windows/async_status.ps1\", \n  \"async_status module\": \"lib/ansible/modules/windows/async_status.ps1\", \n  \"async_wrapper\": \"lib/ansible/modules/windows/async_wrapper.ps1\", \n  \"async_wrapper module\": \"lib/ansible/modules/windows/async_wrapper.ps1\", \n  \"asynchronous tasks\": [], \n  \"at\": \"lib/ansible/modules/system/at.py\", \n  \"at module\": \"lib/ansible/modules/system/at.py\", \n  \"atomic_container\": \"lib/ansible/modules/cloud/atomic/atomic_container.py\", \n  \"atomic_container module\": \"lib/ansible/modules/cloud/atomic/atomic_container.py\", \n  \"atomic_host\": \"lib/ansible/modules/cloud/atomic/atomic_host.py\", \n  \"atomic_host module\": \"lib/ansible/modules/cloud/atomic/atomic_host.py\", \n  \"atomic_image\": \"lib/ansible/modules/cloud/atomic/atomic_image.py\", \n  \"atomic_image module\": \"lib/ansible/modules/cloud/atomic/atomic_image.py\", \n  \"authorized_key\": [\n    \"lib/ansible/modules/system/authorized_key.py\"\n  ], \n  \"authorized_key module\": [\n    \"lib/ansible/modules/system/authorized_key.py\"\n  ], \n  \"authorized_keys\": [], \n  \"avi_actiongroupconfig\": \"lib/ansible/modules/network/avi/avi_actiongroupconfig.py\", \n  \"avi_actiongroupconfig module\": \"lib/ansible/modules/network/avi/avi_actiongroupconfig.py\", \n  \"avi_alertconfig\": \"lib/ansible/modules/network/avi/avi_alertconfig.py\", \n  \"avi_alertconfig module\": \"lib/ansible/modules/network/avi/avi_alertconfig.py\", \n  \"avi_alertemailconfig\": \"lib/ansible/modules/network/avi/avi_alertemailconfig.py\", \n  \"avi_alertemailconfig module\": \"lib/ansible/modules/network/avi/avi_alertemailconfig.py\", \n  \"avi_alertscriptconfig\": \"lib/ansible/modules/network/avi/avi_alertscriptconfig.py\", \n  \"avi_alertscriptconfig module\": \"lib/ansible/modules/network/avi/avi_alertscriptconfig.py\", \n  \"avi_alertsyslogconfig\": \"lib/ansible/modules/network/avi/avi_alertsyslogconfig.py\", \n  \"avi_alertsyslogconfig module\": \"lib/ansible/modules/network/avi/avi_alertsyslogconfig.py\", \n  \"avi_analyticsprofile\": \"lib/ansible/modules/network/avi/avi_analyticsprofile.py\", \n  \"avi_analyticsprofile module\": \"lib/ansible/modules/network/avi/avi_analyticsprofile.py\", \n  \"avi_api_session\": \"lib/ansible/modules/network/avi/avi_api_session.py\", \n  \"avi_api_session module\": \"lib/ansible/modules/network/avi/avi_api_session.py\", \n  \"avi_applicationpersistenceprofile\": \"lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py\", \n  \"avi_applicationpersistenceprofile module\": \"lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py\", \n  \"avi_applicationprofile\": \"lib/ansible/modules/network/avi/avi_applicationprofile.py\", \n  \"avi_applicationprofile module\": \"lib/ansible/modules/network/avi/avi_applicationprofile.py\", \n  \"avi_authprofile\": \"lib/ansible/modules/network/avi/avi_authprofile.py\", \n  \"avi_authprofile module\": \"lib/ansible/modules/network/avi/avi_authprofile.py\", \n  \"avi_backup\": \"lib/ansible/modules/network/avi/avi_backup.py\", \n  \"avi_backup module\": \"lib/ansible/modules/network/avi/avi_backup.py\", \n  \"avi_backupconfiguration\": \"lib/ansible/modules/network/avi/avi_backupconfiguration.py\", \n  \"avi_backupconfiguration module\": \"lib/ansible/modules/network/avi/avi_backupconfiguration.py\", \n  \"avi_certificatemanagementprofile\": \"lib/ansible/modules/network/avi/avi_certificatemanagementprofile.py\", \n  \"avi_certificatemanagementprofile module\": \"lib/ansible/modules/network/avi/avi_certificatemanagementprofile.py\", \n  \"avi_cloud\": \"lib/ansible/modules/network/avi/avi_cloud.py\", \n  \"avi_cloud module\": \"lib/ansible/modules/network/avi/avi_cloud.py\", \n  \"avi_cloudconnectoruser\": \"lib/ansible/modules/network/avi/avi_cloudconnectoruser.py\", \n  \"avi_cloudconnectoruser module\": \"lib/ansible/modules/network/avi/avi_cloudconnectoruser.py\", \n  \"avi_cloudproperties\": \"lib/ansible/modules/network/avi/avi_cloudproperties.py\", \n  \"avi_cloudproperties module\": \"lib/ansible/modules/network/avi/avi_cloudproperties.py\", \n  \"avi_cluster\": \"lib/ansible/modules/network/avi/avi_cluster.py\", \n  \"avi_cluster module\": \"lib/ansible/modules/network/avi/avi_cluster.py\", \n  \"avi_controllerproperties\": \"lib/ansible/modules/network/avi/avi_controllerproperties.py\", \n  \"avi_controllerproperties module\": \"lib/ansible/modules/network/avi/avi_controllerproperties.py\", \n  \"avi_dnspolicy\": \"lib/ansible/modules/network/avi/avi_dnspolicy.py\", \n  \"avi_dnspolicy module\": \"lib/ansible/modules/network/avi/avi_dnspolicy.py\", \n  \"avi_gslb\": \"lib/ansible/modules/network/avi/avi_gslb.py\", \n  \"avi_gslb module\": \"lib/ansible/modules/network/avi/avi_gslb.py\", \n  \"avi_gslbapplicationpersistenceprofile\": \"lib/ansible/modules/network/avi/avi_gslbapplicationpersistenceprofile.py\", \n  \"avi_gslbapplicationpersistenceprofile module\": \"lib/ansible/modules/network/avi/avi_gslbapplicationpersistenceprofile.py\", \n  \"avi_gslbgeodbprofile\": \"lib/ansible/modules/network/avi/avi_gslbgeodbprofile.py\", \n  \"avi_gslbgeodbprofile module\": \"lib/ansible/modules/network/avi/avi_gslbgeodbprofile.py\", \n  \"avi_gslbhealthmonitor\": \"lib/ansible/modules/network/avi/avi_gslbhealthmonitor.py\", \n  \"avi_gslbhealthmonitor module\": \"lib/ansible/modules/network/avi/avi_gslbhealthmonitor.py\", \n  \"avi_gslbservice\": \"lib/ansible/modules/network/avi/avi_gslbservice.py\", \n  \"avi_gslbservice module\": \"lib/ansible/modules/network/avi/avi_gslbservice.py\", \n  \"avi_hardwaresecuritymodulegroup\": \"lib/ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py\", \n  \"avi_hardwaresecuritymodulegroup module\": \"lib/ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py\", \n  \"avi_healthmonitor\": \"lib/ansible/modules/network/avi/avi_healthmonitor.py\", \n  \"avi_healthmonitor module\": \"lib/ansible/modules/network/avi/avi_healthmonitor.py\", \n  \"avi_httppolicyset\": \"lib/ansible/modules/network/avi/avi_httppolicyset.py\", \n  \"avi_httppolicyset module\": \"lib/ansible/modules/network/avi/avi_httppolicyset.py\", \n  \"avi_ipaddrgroup\": \"lib/ansible/modules/network/avi/avi_ipaddrgroup.py\", \n  \"avi_ipaddrgroup module\": \"lib/ansible/modules/network/avi/avi_ipaddrgroup.py\", \n  \"avi_ipamdnsproviderprofile\": \"lib/ansible/modules/network/avi/avi_ipamdnsproviderprofile.py\", \n  \"avi_ipamdnsproviderprofile module\": \"lib/ansible/modules/network/avi/avi_ipamdnsproviderprofile.py\", \n  \"avi_microservicegroup\": \"lib/ansible/modules/network/avi/avi_microservicegroup.py\", \n  \"avi_microservicegroup module\": \"lib/ansible/modules/network/avi/avi_microservicegroup.py\", \n  \"avi_network\": \"lib/ansible/modules/network/avi/avi_network.py\", \n  \"avi_network module\": \"lib/ansible/modules/network/avi/avi_network.py\", \n  \"avi_networkprofile\": \"lib/ansible/modules/network/avi/avi_networkprofile.py\", \n  \"avi_networkprofile module\": \"lib/ansible/modules/network/avi/avi_networkprofile.py\", \n  \"avi_networksecuritypolicy\": \"lib/ansible/modules/network/avi/avi_networksecuritypolicy.py\", \n  \"avi_networksecuritypolicy module\": \"lib/ansible/modules/network/avi/avi_networksecuritypolicy.py\", \n  \"avi_pkiprofile\": \"lib/ansible/modules/network/avi/avi_pkiprofile.py\", \n  \"avi_pkiprofile module\": \"lib/ansible/modules/network/avi/avi_pkiprofile.py\", \n  \"avi_pool\": \"lib/ansible/modules/network/avi/avi_pool.py\", \n  \"avi_pool module\": \"lib/ansible/modules/network/avi/avi_pool.py\", \n  \"avi_poolgroup\": \"lib/ansible/modules/network/avi/avi_poolgroup.py\", \n  \"avi_poolgroup module\": \"lib/ansible/modules/network/avi/avi_poolgroup.py\", \n  \"avi_poolgroupdeploymentpolicy\": \"lib/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py\", \n  \"avi_poolgroupdeploymentpolicy module\": \"lib/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py\", \n  \"avi_prioritylabels\": \"lib/ansible/modules/network/avi/avi_prioritylabels.py\", \n  \"avi_prioritylabels module\": \"lib/ansible/modules/network/avi/avi_prioritylabels.py\", \n  \"avi_role\": \"lib/ansible/modules/network/avi/avi_role.py\", \n  \"avi_role module\": \"lib/ansible/modules/network/avi/avi_role.py\", \n  \"avi_scheduler\": \"lib/ansible/modules/network/avi/avi_scheduler.py\", \n  \"avi_scheduler module\": \"lib/ansible/modules/network/avi/avi_scheduler.py\", \n  \"avi_seproperties\": \"lib/ansible/modules/network/avi/avi_seproperties.py\", \n  \"avi_seproperties module\": \"lib/ansible/modules/network/avi/avi_seproperties.py\", \n  \"avi_serverautoscalepolicy\": \"lib/ansible/modules/network/avi/avi_serverautoscalepolicy.py\", \n  \"avi_serverautoscalepolicy module\": \"lib/ansible/modules/network/avi/avi_serverautoscalepolicy.py\", \n  \"avi_serviceengine\": \"lib/ansible/modules/network/avi/avi_serviceengine.py\", \n  \"avi_serviceengine module\": \"lib/ansible/modules/network/avi/avi_serviceengine.py\", \n  \"avi_serviceenginegroup\": \"lib/ansible/modules/network/avi/avi_serviceenginegroup.py\", \n  \"avi_serviceenginegroup module\": \"lib/ansible/modules/network/avi/avi_serviceenginegroup.py\", \n  \"avi_snmptrapprofile\": \"lib/ansible/modules/network/avi/avi_snmptrapprofile.py\", \n  \"avi_snmptrapprofile module\": \"lib/ansible/modules/network/avi/avi_snmptrapprofile.py\", \n  \"avi_sslkeyandcertificate\": \"lib/ansible/modules/network/avi/avi_sslkeyandcertificate.py\", \n  \"avi_sslkeyandcertificate module\": \"lib/ansible/modules/network/avi/avi_sslkeyandcertificate.py\", \n  \"avi_sslprofile\": \"lib/ansible/modules/network/avi/avi_sslprofile.py\", \n  \"avi_sslprofile module\": \"lib/ansible/modules/network/avi/avi_sslprofile.py\", \n  \"avi_stringgroup\": \"lib/ansible/modules/network/avi/avi_stringgroup.py\", \n  \"avi_stringgroup module\": \"lib/ansible/modules/network/avi/avi_stringgroup.py\", \n  \"avi_systemconfiguration\": \"lib/ansible/modules/network/avi/avi_systemconfiguration.py\", \n  \"avi_systemconfiguration module\": \"lib/ansible/modules/network/avi/avi_systemconfiguration.py\", \n  \"avi_tenant\": \"lib/ansible/modules/network/avi/avi_tenant.py\", \n  \"avi_tenant module\": \"lib/ansible/modules/network/avi/avi_tenant.py\", \n  \"avi_trafficcloneprofile\": \"lib/ansible/modules/network/avi/avi_trafficcloneprofile.py\", \n  \"avi_trafficcloneprofile module\": \"lib/ansible/modules/network/avi/avi_trafficcloneprofile.py\", \n  \"avi_useraccountprofile\": \"lib/ansible/modules/network/avi/avi_useraccountprofile.py\", \n  \"avi_useraccountprofile module\": \"lib/ansible/modules/network/avi/avi_useraccountprofile.py\", \n  \"avi_virtualservice\": \"lib/ansible/modules/network/avi/avi_virtualservice.py\", \n  \"avi_virtualservice module\": \"lib/ansible/modules/network/avi/avi_virtualservice.py\", \n  \"avi_vrfcontext\": \"lib/ansible/modules/network/avi/avi_vrfcontext.py\", \n  \"avi_vrfcontext module\": \"lib/ansible/modules/network/avi/avi_vrfcontext.py\", \n  \"avi_vsdatascriptset\": \"lib/ansible/modules/network/avi/avi_vsdatascriptset.py\", \n  \"avi_vsdatascriptset module\": \"lib/ansible/modules/network/avi/avi_vsdatascriptset.py\", \n  \"avi_vsvip\": \"lib/ansible/modules/network/avi/avi_vsvip.py\", \n  \"avi_vsvip module\": \"lib/ansible/modules/network/avi/avi_vsvip.py\", \n  \"avi_webhook\": \"lib/ansible/modules/network/avi/avi_webhook.py\", \n  \"avi_webhook module\": \"lib/ansible/modules/network/avi/avi_webhook.py\", \n  \"awall\": \"lib/ansible/modules/system/awall.py\", \n  \"awall module\": \"lib/ansible/modules/system/awall.py\", \n  \"aws documentation fragment\": [\n    \"lib/ansible/utils/module_docs_fragments/aws.py\"\n  ], \n  \"aws s3\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"aws/ec2/iam_server_certificate_facts\": [], \n  \"aws_acm_facts\": \"lib/ansible/modules/cloud/amazon/aws_acm_facts.py\", \n  \"aws_acm_facts module\": \"lib/ansible/modules/cloud/amazon/aws_acm_facts.py\", \n  \"aws_api_gateway\": \"lib/ansible/modules/cloud/amazon/aws_api_gateway.py\", \n  \"aws_api_gateway module\": \"lib/ansible/modules/cloud/amazon/aws_api_gateway.py\", \n  \"aws_direct_connect_connection\": \"lib/ansible/modules/cloud/amazon/aws_direct_connect_connection.py\", \n  \"aws_direct_connect_connection module\": \"lib/ansible/modules/cloud/amazon/aws_direct_connect_connection.py\", \n  \"aws_direct_connect_link_aggregation_group\": \"lib/ansible/modules/cloud/amazon/aws_direct_connect_link_aggregation_group.py\", \n  \"aws_direct_connect_link_aggregation_group module\": \"lib/ansible/modules/cloud/amazon/aws_direct_connect_link_aggregation_group.py\", \n  \"aws_kms\": \"lib/ansible/modules/cloud/amazon/aws_kms.py\", \n  \"aws_kms module\": \"lib/ansible/modules/cloud/amazon/aws_kms.py\", \n  \"aws_kms_facts\": \"lib/ansible/modules/cloud/amazon/aws_kms_facts.py\", \n  \"aws_kms_facts module\": \"lib/ansible/modules/cloud/amazon/aws_kms_facts.py\", \n  \"aws_s3\": [\n    \"lib/ansible/modules/cloud/amazon/aws_s3.py\"\n  ], \n  \"aws_s3 module\": \"lib/ansible/modules/cloud/amazon/aws_s3.py\", \n  \"aws_s3_bucket_facts\": [\n    \"lib/ansible/modules/cloud/amazon/aws_s3_bucket_facts.py\"\n  ], \n  \"aws_s3_bucket_facts module\": \"lib/ansible/modules/cloud/amazon/aws_s3_bucket_facts.py\", \n  \"aws_ssm_parameter_store\": \"lib/ansible/modules/cloud/amazon/aws_ssm_parameter_store.py\", \n  \"aws_ssm_parameter_store module\": \"lib/ansible/modules/cloud/amazon/aws_ssm_parameter_store.py\", \n  \"aws_waf_facts\": \"lib/ansible/modules/cloud/amazon/aws_waf_facts.py\", \n  \"aws_waf_facts module\": \"lib/ansible/modules/cloud/amazon/aws_waf_facts.py\", \n  \"aync\": [], \n  \"azure\": \"lib/ansible/modules/cloud/azure/_azure.py\", \n  \"azure module\": [\n    \"lib/ansible/modules/cloud/azure/_azure.py\"\n  ], \n  \"azure/azure_rm_deployment\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\"\n  ], \n  \"azure_rm.py\": [\n    \"contrib/inventory/azure_rm.py\"\n  ], \n  \"azure_rm_acs\": \"lib/ansible/modules/cloud/azure/azure_rm_acs.py\", \n  \"azure_rm_acs module\": \"lib/ansible/modules/cloud/azure/azure_rm_acs.py\", \n  \"azure_rm_availabilityset\": \"lib/ansible/modules/cloud/azure/azure_rm_availabilityset.py\", \n  \"azure_rm_availabilityset module\": \"lib/ansible/modules/cloud/azure/azure_rm_availabilityset.py\", \n  \"azure_rm_availabilityset_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_availabilityset_facts.py\", \n  \"azure_rm_availabilityset_facts module\": \"lib/ansible/modules/cloud/azure/azure_rm_availabilityset_facts.py\", \n  \"azure_rm_common\": [\n    \"lib/ansible/module_utils/azure_rm_common.py\"\n  ], \n  \"azure_rm_common.py\": [\n    \"lib/ansible/module_utils/azure_rm_common.py\"\n  ], \n  \"azure_rm_common.py#L385\": [], \n  \"azure_rm_deployment\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\"\n  ], \n  \"azure_rm_deployment (although azure_rm_common seems to be at work here)\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\"\n  ], \n  \"azure_rm_deployment module\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\"\n  ], \n  \"azure_rm_deployment.py\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\"\n  ], \n  \"azure_rm_dnsrecordset\": \"lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset.py\", \n  \"azure_rm_dnsrecordset module\": \"lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset.py\", \n  \"azure_rm_dnsrecordset_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset_facts.py\", \n  \"azure_rm_dnsrecordset_facts module\": \"lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset_facts.py\", \n  \"azure_rm_dnszone\": \"lib/ansible/modules/cloud/azure/azure_rm_dnszone.py\", \n  \"azure_rm_dnszone module\": \"lib/ansible/modules/cloud/azure/azure_rm_dnszone.py\", \n  \"azure_rm_dnszone_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_dnszone_facts.py\", \n  \"azure_rm_dnszone_facts module\": \"lib/ansible/modules/cloud/azure/azure_rm_dnszone_facts.py\", \n  \"azure_rm_functionapp\": \"lib/ansible/modules/cloud/azure/azure_rm_functionapp.py\", \n  \"azure_rm_functionapp module\": \"lib/ansible/modules/cloud/azure/azure_rm_functionapp.py\", \n  \"azure_rm_functionapp_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_functionapp_facts.py\", \n  \"azure_rm_functionapp_facts module\": \"lib/ansible/modules/cloud/azure/azure_rm_functionapp_facts.py\", \n  \"azure_rm_loadbalancer\": \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer.py\", \n  \"azure_rm_loadbalancer module\": \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer.py\", \n  \"azure_rm_loadbalancer_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer_facts.py\", \n  \"azure_rm_loadbalancer_facts module\": \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer_facts.py\", \n  \"azure_rm_loadbalancer_facts.py\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer_facts.py\"\n  ], \n  \"azure_rm_managed_disk\": \"lib/ansible/modules/cloud/azure/azure_rm_managed_disk.py\", \n  \"azure_rm_managed_disk module\": \"lib/ansible/modules/cloud/azure/azure_rm_managed_disk.py\", \n  \"azure_rm_managed_disk_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_managed_disk_facts.py\", \n  \"azure_rm_managed_disk_facts module\": \"lib/ansible/modules/cloud/azure/azure_rm_managed_disk_facts.py\", \n  \"azure_rm_networkinterface\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface.py\"\n  ], \n  \"azure_rm_networkinterface module\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface.py\"\n  ], \n  \"azure_rm_networkinterface_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface_facts.py\", \n  \"azure_rm_networkinterface_facts module\": \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface_facts.py\", \n  \"azure_rm_publicipaddress\": \"lib/ansible/modules/cloud/azure/azure_rm_publicipaddress.py\", \n  \"azure_rm_publicipaddress module\": \"lib/ansible/modules/cloud/azure/azure_rm_publicipaddress.py\", \n  \"azure_rm_publicipaddress_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_publicipaddress_facts.py\", \n  \"azure_rm_publicipaddress_facts module\": \"lib/ansible/modules/cloud/azure/azure_rm_publicipaddress_facts.py\", \n  \"azure_rm_resourcegroup\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup.py\"\n  ], \n  \"azure_rm_resourcegroup\\nazure_rm_*\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup.py\"\n  ], \n  \"azure_rm_resourcegroup module\": \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup.py\", \n  \"azure_rm_resourcegroup_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup_facts.py\", \n  \"azure_rm_resourcegroup_facts module\": \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup_facts.py\", \n  \"azure_rm_securitygroup\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup.py\"\n  ], \n  \"azure_rm_securitygroup module\": \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup.py\", \n  \"azure_rm_securitygroup_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup_facts.py\", \n  \"azure_rm_securitygroup_facts module\": \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup_facts.py\", \n  \"azure_rm_storageaccount\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount.py\"\n  ], \n  \"azure_rm_storageaccount module\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount.py\"\n  ], \n  \"azure_rm_storageaccount_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount_facts.py\", \n  \"azure_rm_storageaccount_facts module\": \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount_facts.py\", \n  \"azure_rm_storageblob\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_storageblob.py\"\n  ], \n  \"azure_rm_storageblob module\": \"lib/ansible/modules/cloud/azure/azure_rm_storageblob.py\", \n  \"azure_rm_subnet\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_subnet.py\"\n  ], \n  \"azure_rm_subnet module\": \"lib/ansible/modules/cloud/azure/azure_rm_subnet.py\", \n  \"azure_rm_virtualmachine\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"azure_rm_virtualmachine\\n(probably applies to all azure)\": [\n    \"lib/ansible/modules/cloud/azure/_azure.py\", \n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"azure_rm_virtualmachine module\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\", \n  \"azure_rm_virtualmachine_extension\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_extension.py\", \n  \"azure_rm_virtualmachine_extension module\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_extension.py\", \n  \"azure_rm_virtualmachine_scaleset\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset.py\", \n  \"azure_rm_virtualmachine_scaleset module\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset.py\", \n  \"azure_rm_virtualmachine_scaleset_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset_facts.py\", \n  \"azure_rm_virtualmachine_scaleset_facts module\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset_facts.py\", \n  \"azure_rm_virtualmachineimage_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachineimage_facts.py\", \n  \"azure_rm_virtualmachineimage_facts module\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachineimage_facts.py\", \n  \"azure_rm_virtualnetwork\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork.py\", \n  \"azure_rm_virtualnetwork module\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork.py\", \n  \"azure_rm_virtualnetwork_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork_facts.py\", \n  \"azure_rm_virtualnetwork_facts module\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork_facts.py\", \n  \"azurerm modules\": [\n    \"lib/ansible/modules/cloud/azure\"\n  ], \n  \"base\": [\n    \"lib/ansible/module_utils/facts/hardware/base.py\"\n  ], \n  \"basic.py\": [\n    \"lib/ansible/module_utils/basic.py\"\n  ], \n  \"bcf_switch\": \"lib/ansible/modules/network/bigswitch/bcf_switch.py\", \n  \"bcf_switch module\": \"lib/ansible/modules/network/bigswitch/bcf_switch.py\", \n  \"beadm\": \"lib/ansible/modules/system/beadm.py\", \n  \"beadm module\": \"lib/ansible/modules/system/beadm.py\", \n  \"bearychat\": \"lib/ansible/modules/notification/bearychat.py\", \n  \"bearychat module\": \"lib/ansible/modules/notification/bearychat.py\", \n  \"become\": [\n    \"lib/ansible/playbook/become.py\"\n  ], \n  \"become-method become\": [\n    \"lib/ansible/playbook/become.py\"\n  ], \n  \"bigip_asm_policy\": \"lib/ansible/modules/network/f5/bigip_asm_policy.py\", \n  \"bigip_asm_policy module\": \"lib/ansible/modules/network/f5/bigip_asm_policy.py\", \n  \"bigip_command\": \"lib/ansible/modules/network/f5/bigip_command.py\", \n  \"bigip_command module\": \"lib/ansible/modules/network/f5/bigip_command.py\", \n  \"bigip_config\": \"lib/ansible/modules/network/f5/bigip_config.py\", \n  \"bigip_config module\": \"lib/ansible/modules/network/f5/bigip_config.py\", \n  \"bigip_configsync_action\": \"lib/ansible/modules/network/f5/bigip_configsync_action.py\", \n  \"bigip_configsync_action module\": \"lib/ansible/modules/network/f5/bigip_configsync_action.py\", \n  \"bigip_configsync_actions\": \"lib/ansible/modules/network/f5/bigip_configsync_actions.py\", \n  \"bigip_configsync_actions module\": \"lib/ansible/modules/network/f5/bigip_configsync_actions.py\", \n  \"bigip_device_dns\": \"lib/ansible/modules/network/f5/bigip_device_dns.py\", \n  \"bigip_device_dns module\": \"lib/ansible/modules/network/f5/bigip_device_dns.py\", \n  \"bigip_device_ntp\": \"lib/ansible/modules/network/f5/bigip_device_ntp.py\", \n  \"bigip_device_ntp module\": \"lib/ansible/modules/network/f5/bigip_device_ntp.py\", \n  \"bigip_device_sshd\": \"lib/ansible/modules/network/f5/bigip_device_sshd.py\", \n  \"bigip_device_sshd module\": \"lib/ansible/modules/network/f5/bigip_device_sshd.py\", \n  \"bigip_facts\": \"lib/ansible/modules/network/f5/bigip_facts.py\", \n  \"bigip_facts module\": \"lib/ansible/modules/network/f5/bigip_facts.py\", \n  \"bigip_gtm_datacenter\": \"lib/ansible/modules/network/f5/bigip_gtm_datacenter.py\", \n  \"bigip_gtm_datacenter module\": \"lib/ansible/modules/network/f5/bigip_gtm_datacenter.py\", \n  \"bigip_gtm_facts\": \"lib/ansible/modules/network/f5/bigip_gtm_facts.py\", \n  \"bigip_gtm_facts module\": \"lib/ansible/modules/network/f5/bigip_gtm_facts.py\", \n  \"bigip_gtm_pool\": \"lib/ansible/modules/network/f5/bigip_gtm_pool.py\", \n  \"bigip_gtm_pool module\": \"lib/ansible/modules/network/f5/bigip_gtm_pool.py\", \n  \"bigip_gtm_virtual_server\": \"lib/ansible/modules/network/f5/bigip_gtm_virtual_server.py\", \n  \"bigip_gtm_virtual_server module\": \"lib/ansible/modules/network/f5/bigip_gtm_virtual_server.py\", \n  \"bigip_gtm_wide_ip\": \"lib/ansible/modules/network/f5/bigip_gtm_wide_ip.py\", \n  \"bigip_gtm_wide_ip module\": \"lib/ansible/modules/network/f5/bigip_gtm_wide_ip.py\", \n  \"bigip_hostname\": \"lib/ansible/modules/network/f5/bigip_hostname.py\", \n  \"bigip_hostname module\": \"lib/ansible/modules/network/f5/bigip_hostname.py\", \n  \"bigip_iapp_service\": \"lib/ansible/modules/network/f5/bigip_iapp_service.py\", \n  \"bigip_iapp_service module\": \"lib/ansible/modules/network/f5/bigip_iapp_service.py\", \n  \"bigip_iapp_template\": \"lib/ansible/modules/network/f5/bigip_iapp_template.py\", \n  \"bigip_iapp_template module\": \"lib/ansible/modules/network/f5/bigip_iapp_template.py\", \n  \"bigip_iapplx_package\": \"lib/ansible/modules/network/f5/bigip_iapplx_package.py\", \n  \"bigip_iapplx_package module\": \"lib/ansible/modules/network/f5/bigip_iapplx_package.py\", \n  \"bigip_irule\": \"lib/ansible/modules/network/f5/bigip_irule.py\", \n  \"bigip_irule module\": \"lib/ansible/modules/network/f5/bigip_irule.py\", \n  \"bigip_monitor_http\": \"lib/ansible/modules/network/f5/bigip_monitor_http.py\", \n  \"bigip_monitor_http module\": \"lib/ansible/modules/network/f5/bigip_monitor_http.py\", \n  \"bigip_monitor_https\": \"lib/ansible/modules/network/f5/bigip_monitor_https.py\", \n  \"bigip_monitor_https module\": \"lib/ansible/modules/network/f5/bigip_monitor_https.py\", \n  \"bigip_monitor_tcp\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp.py\", \n  \"bigip_monitor_tcp module\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp.py\", \n  \"bigip_monitor_tcp_echo\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp_echo.py\", \n  \"bigip_monitor_tcp_echo module\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp_echo.py\", \n  \"bigip_monitor_tcp_half_open\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp_half_open.py\", \n  \"bigip_monitor_tcp_half_open module\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp_half_open.py\", \n  \"bigip_node\": \"lib/ansible/modules/network/f5/bigip_node.py\", \n  \"bigip_node module\": \"lib/ansible/modules/network/f5/bigip_node.py\", \n  \"bigip_partition\": \"lib/ansible/modules/network/f5/bigip_partition.py\", \n  \"bigip_partition module\": \"lib/ansible/modules/network/f5/bigip_partition.py\", \n  \"bigip_policy\": \"lib/ansible/modules/network/f5/bigip_policy.py\", \n  \"bigip_policy module\": \"lib/ansible/modules/network/f5/bigip_policy.py\", \n  \"bigip_pool\": \"lib/ansible/modules/network/f5/bigip_pool.py\", \n  \"bigip_pool module\": \"lib/ansible/modules/network/f5/bigip_pool.py\", \n  \"bigip_pool_member\": \"lib/ansible/modules/network/f5/bigip_pool_member.py\", \n  \"bigip_pool_member module\": \"lib/ansible/modules/network/f5/bigip_pool_member.py\", \n  \"bigip_provision\": \"lib/ansible/modules/network/f5/bigip_provision.py\", \n  \"bigip_provision module\": \"lib/ansible/modules/network/f5/bigip_provision.py\", \n  \"bigip_qkview\": \"lib/ansible/modules/network/f5/bigip_qkview.py\", \n  \"bigip_qkview module\": \"lib/ansible/modules/network/f5/bigip_qkview.py\", \n  \"bigip_remote_syslog\": \"lib/ansible/modules/network/f5/bigip_remote_syslog.py\", \n  \"bigip_remote_syslog module\": \"lib/ansible/modules/network/f5/bigip_remote_syslog.py\", \n  \"bigip_routedomain\": \"lib/ansible/modules/network/f5/bigip_routedomain.py\", \n  \"bigip_routedomain module\": \"lib/ansible/modules/network/f5/bigip_routedomain.py\", \n  \"bigip_selfip\": \"lib/ansible/modules/network/f5/bigip_selfip.py\", \n  \"bigip_selfip module\": \"lib/ansible/modules/network/f5/bigip_selfip.py\", \n  \"bigip_snat_pool\": \"lib/ansible/modules/network/f5/bigip_snat_pool.py\", \n  \"bigip_snat_pool module\": \"lib/ansible/modules/network/f5/bigip_snat_pool.py\", \n  \"bigip_snmp\": \"lib/ansible/modules/network/f5/bigip_snmp.py\", \n  \"bigip_snmp module\": \"lib/ansible/modules/network/f5/bigip_snmp.py\", \n  \"bigip_snmp_trap\": \"lib/ansible/modules/network/f5/bigip_snmp_trap.py\", \n  \"bigip_snmp_trap module\": \"lib/ansible/modules/network/f5/bigip_snmp_trap.py\", \n  \"bigip_ssl_certificate\": \"lib/ansible/modules/network/f5/bigip_ssl_certificate.py\", \n  \"bigip_ssl_certificate module\": \"lib/ansible/modules/network/f5/bigip_ssl_certificate.py\", \n  \"bigip_ssl_key\": \"lib/ansible/modules/network/f5/bigip_ssl_key.py\", \n  \"bigip_ssl_key module\": \"lib/ansible/modules/network/f5/bigip_ssl_key.py\", \n  \"bigip_sys_db\": \"lib/ansible/modules/network/f5/bigip_sys_db.py\", \n  \"bigip_sys_db module\": \"lib/ansible/modules/network/f5/bigip_sys_db.py\", \n  \"bigip_sys_global\": \"lib/ansible/modules/network/f5/bigip_sys_global.py\", \n  \"bigip_sys_global module\": \"lib/ansible/modules/network/f5/bigip_sys_global.py\", \n  \"bigip_ucs\": \"lib/ansible/modules/network/f5/bigip_ucs.py\", \n  \"bigip_ucs module\": \"lib/ansible/modules/network/f5/bigip_ucs.py\", \n  \"bigip_user\": \"lib/ansible/modules/network/f5/bigip_user.py\", \n  \"bigip_user module\": \"lib/ansible/modules/network/f5/bigip_user.py\", \n  \"bigip_virtual_address\": \"lib/ansible/modules/network/f5/bigip_virtual_address.py\", \n  \"bigip_virtual_address module\": \"lib/ansible/modules/network/f5/bigip_virtual_address.py\", \n  \"bigip_virtual_server\": \"lib/ansible/modules/network/f5/bigip_virtual_server.py\", \n  \"bigip_virtual_server module\": \"lib/ansible/modules/network/f5/bigip_virtual_server.py\", \n  \"bigip_vlan\": \"lib/ansible/modules/network/f5/bigip_vlan.py\", \n  \"bigip_vlan module\": \"lib/ansible/modules/network/f5/bigip_vlan.py\", \n  \"bigip_wait\": \"lib/ansible/modules/network/f5/bigip_wait.py\", \n  \"bigip_wait module\": \"lib/ansible/modules/network/f5/bigip_wait.py\", \n  \"bigmon_chain\": \"lib/ansible/modules/network/bigswitch/bigmon_chain.py\", \n  \"bigmon_chain module\": \"lib/ansible/modules/network/bigswitch/bigmon_chain.py\", \n  \"bigmon_policy\": \"lib/ansible/modules/network/bigswitch/bigmon_policy.py\", \n  \"bigmon_policy module\": \"lib/ansible/modules/network/bigswitch/bigmon_policy.py\", \n  \"bigpanda\": \"lib/ansible/modules/monitoring/bigpanda.py\", \n  \"bigpanda module\": \"lib/ansible/modules/monitoring/bigpanda.py\", \n  \"bin/ansible\": [\n    \"bin/ansible\"\n  ], \n  \"block\": [\n    \"lib/ansible/playbook/block.py\"\n  ], \n  \"block\\ndelegate_to\": [\n    \"lib/ansible/playbook/block.py\", \n    \"lib/ansible/playbook/task.py\"\n  ], \n  \"block/rescue/always\": [], \n  \"blockinfile\": [\n    \"lib/ansible/modules/files/blockinfile.py\"\n  ], \n  \"blockinfile module\": \"lib/ansible/modules/files/blockinfile.py\", \n  \"blockinfile.py\": [\n    \"lib/ansible/modules/files/blockinfile.py\"\n  ], \n  \"blocks\": [\n    \"lib/ansible/playbook/block.py\"\n  ], \n  \"bower\": \"lib/ansible/modules/packaging/language/bower.py\", \n  \"bower module\": [\n    \"lib/ansible/modules/packaging/language/bower.py\"\n  ], \n  \"bower_module\": [\n    \"lib/ansible/modules/packaging/language/bower.py\"\n  ], \n  \"bundler\": \"lib/ansible/modules/packaging/language/bundler.py\", \n  \"bundler module\": \"lib/ansible/modules/packaging/language/bundler.py\", \n  \"bzr\": \"lib/ansible/modules/source_control/bzr.py\", \n  \"bzr module\": \"lib/ansible/modules/source_control/bzr.py\", \n  \"callback plugin\": [\n    \"lib/ansible/plugins/callback\"\n  ], \n  \"callback plugin profile_tasks\": [\n    \"lib/ansible/plugins/callback/profile_tasks.py\"\n  ], \n  \"callback plugins\": [\n    \"lib/ansible/plugins/callback\"\n  ], \n  \"callback_plugins        = plugins\\nstdout_callback         = actionable\": [\n    \"lib/ansible/plugins/callback\"\n  ], \n  \"campfire\": \"lib/ansible/modules/notification/campfire.py\", \n  \"campfire module\": \"lib/ansible/modules/notification/campfire.py\", \n  \"capabilities\": [\n    \"lib/ansible/modules/system/capabilities.py\"\n  ], \n  \"capabilities module\": \"lib/ansible/modules/system/capabilities.py\", \n  \"catapult\": \"lib/ansible/modules/notification/catapult.py\", \n  \"catapult module\": \"lib/ansible/modules/notification/catapult.py\", \n  \"ce_aaa_server\": \"lib/ansible/modules/network/cloudengine/ce_aaa_server.py\", \n  \"ce_aaa_server module\": \"lib/ansible/modules/network/cloudengine/ce_aaa_server.py\", \n  \"ce_aaa_server_host\": \"lib/ansible/modules/network/cloudengine/ce_aaa_server_host.py\", \n  \"ce_aaa_server_host module\": \"lib/ansible/modules/network/cloudengine/ce_aaa_server_host.py\", \n  \"ce_acl\": \"lib/ansible/modules/network/cloudengine/ce_acl.py\", \n  \"ce_acl module\": \"lib/ansible/modules/network/cloudengine/ce_acl.py\", \n  \"ce_acl_advance\": \"lib/ansible/modules/network/cloudengine/ce_acl_advance.py\", \n  \"ce_acl_advance module\": \"lib/ansible/modules/network/cloudengine/ce_acl_advance.py\", \n  \"ce_acl_interface\": \"lib/ansible/modules/network/cloudengine/ce_acl_interface.py\", \n  \"ce_acl_interface module\": \"lib/ansible/modules/network/cloudengine/ce_acl_interface.py\", \n  \"ce_bfd_global\": \"lib/ansible/modules/network/cloudengine/ce_bfd_global.py\", \n  \"ce_bfd_global module\": \"lib/ansible/modules/network/cloudengine/ce_bfd_global.py\", \n  \"ce_bfd_session\": \"lib/ansible/modules/network/cloudengine/ce_bfd_session.py\", \n  \"ce_bfd_session module\": \"lib/ansible/modules/network/cloudengine/ce_bfd_session.py\", \n  \"ce_bfd_view\": \"lib/ansible/modules/network/cloudengine/ce_bfd_view.py\", \n  \"ce_bfd_view module\": \"lib/ansible/modules/network/cloudengine/ce_bfd_view.py\", \n  \"ce_bgp\": \"lib/ansible/modules/network/cloudengine/ce_bgp.py\", \n  \"ce_bgp module\": \"lib/ansible/modules/network/cloudengine/ce_bgp.py\", \n  \"ce_bgp_af\": \"lib/ansible/modules/network/cloudengine/ce_bgp_af.py\", \n  \"ce_bgp_af module\": \"lib/ansible/modules/network/cloudengine/ce_bgp_af.py\", \n  \"ce_bgp_neighbor\": \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor.py\", \n  \"ce_bgp_neighbor module\": \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor.py\", \n  \"ce_bgp_neighbor_af\": \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor_af.py\", \n  \"ce_bgp_neighbor_af module\": \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor_af.py\", \n  \"ce_command\": \"lib/ansible/modules/network/cloudengine/ce_command.py\", \n  \"ce_command module\": \"lib/ansible/modules/network/cloudengine/ce_command.py\", \n  \"ce_config\": \"lib/ansible/modules/network/cloudengine/ce_config.py\", \n  \"ce_config module\": \"lib/ansible/modules/network/cloudengine/ce_config.py\", \n  \"ce_dldp\": \"lib/ansible/modules/network/cloudengine/ce_dldp.py\", \n  \"ce_dldp module\": \"lib/ansible/modules/network/cloudengine/ce_dldp.py\", \n  \"ce_dldp_interface\": \"lib/ansible/modules/network/cloudengine/ce_dldp_interface.py\", \n  \"ce_dldp_interface module\": \"lib/ansible/modules/network/cloudengine/ce_dldp_interface.py\", \n  \"ce_eth_trunk\": \"lib/ansible/modules/network/cloudengine/ce_eth_trunk.py\", \n  \"ce_eth_trunk module\": \"lib/ansible/modules/network/cloudengine/ce_eth_trunk.py\", \n  \"ce_evpn_bd_vni\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bd_vni.py\", \n  \"ce_evpn_bd_vni module\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bd_vni.py\", \n  \"ce_evpn_bgp\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp.py\", \n  \"ce_evpn_bgp module\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp.py\", \n  \"ce_evpn_bgp_rr\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp_rr.py\", \n  \"ce_evpn_bgp_rr module\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp_rr.py\", \n  \"ce_evpn_global\": \"lib/ansible/modules/network/cloudengine/ce_evpn_global.py\", \n  \"ce_evpn_global module\": \"lib/ansible/modules/network/cloudengine/ce_evpn_global.py\", \n  \"ce_facts\": \"lib/ansible/modules/network/cloudengine/ce_facts.py\", \n  \"ce_facts module\": \"lib/ansible/modules/network/cloudengine/ce_facts.py\", \n  \"ce_file_copy\": \"lib/ansible/modules/network/cloudengine/ce_file_copy.py\", \n  \"ce_file_copy module\": \"lib/ansible/modules/network/cloudengine/ce_file_copy.py\", \n  \"ce_info_center_debug\": \"lib/ansible/modules/network/cloudengine/ce_info_center_debug.py\", \n  \"ce_info_center_debug module\": \"lib/ansible/modules/network/cloudengine/ce_info_center_debug.py\", \n  \"ce_info_center_global\": \"lib/ansible/modules/network/cloudengine/ce_info_center_global.py\", \n  \"ce_info_center_global module\": \"lib/ansible/modules/network/cloudengine/ce_info_center_global.py\", \n  \"ce_info_center_log\": \"lib/ansible/modules/network/cloudengine/ce_info_center_log.py\", \n  \"ce_info_center_log module\": \"lib/ansible/modules/network/cloudengine/ce_info_center_log.py\", \n  \"ce_info_center_trap\": \"lib/ansible/modules/network/cloudengine/ce_info_center_trap.py\", \n  \"ce_info_center_trap module\": \"lib/ansible/modules/network/cloudengine/ce_info_center_trap.py\", \n  \"ce_interface\": \"lib/ansible/modules/network/cloudengine/ce_interface.py\", \n  \"ce_interface module\": \"lib/ansible/modules/network/cloudengine/ce_interface.py\", \n  \"ce_interface_ospf\": \"lib/ansible/modules/network/cloudengine/ce_interface_ospf.py\", \n  \"ce_interface_ospf module\": \"lib/ansible/modules/network/cloudengine/ce_interface_ospf.py\", \n  \"ce_ip_interface\": \"lib/ansible/modules/network/cloudengine/ce_ip_interface.py\", \n  \"ce_ip_interface module\": \"lib/ansible/modules/network/cloudengine/ce_ip_interface.py\", \n  \"ce_link_status\": \"lib/ansible/modules/network/cloudengine/ce_link_status.py\", \n  \"ce_link_status module\": \"lib/ansible/modules/network/cloudengine/ce_link_status.py\", \n  \"ce_mlag_config\": \"lib/ansible/modules/network/cloudengine/ce_mlag_config.py\", \n  \"ce_mlag_config module\": \"lib/ansible/modules/network/cloudengine/ce_mlag_config.py\", \n  \"ce_mlag_interface\": \"lib/ansible/modules/network/cloudengine/ce_mlag_interface.py\", \n  \"ce_mlag_interface module\": \"lib/ansible/modules/network/cloudengine/ce_mlag_interface.py\", \n  \"ce_mtu\": \"lib/ansible/modules/network/cloudengine/ce_mtu.py\", \n  \"ce_mtu module\": \"lib/ansible/modules/network/cloudengine/ce_mtu.py\", \n  \"ce_netconf\": \"lib/ansible/modules/network/cloudengine/ce_netconf.py\", \n  \"ce_netconf module\": \"lib/ansible/modules/network/cloudengine/ce_netconf.py\", \n  \"ce_netstream_aging\": \"lib/ansible/modules/network/cloudengine/ce_netstream_aging.py\", \n  \"ce_netstream_aging module\": \"lib/ansible/modules/network/cloudengine/ce_netstream_aging.py\", \n  \"ce_netstream_export\": \"lib/ansible/modules/network/cloudengine/ce_netstream_export.py\", \n  \"ce_netstream_export module\": \"lib/ansible/modules/network/cloudengine/ce_netstream_export.py\", \n  \"ce_netstream_global\": \"lib/ansible/modules/network/cloudengine/ce_netstream_global.py\", \n  \"ce_netstream_global module\": \"lib/ansible/modules/network/cloudengine/ce_netstream_global.py\", \n  \"ce_netstream_template\": \"lib/ansible/modules/network/cloudengine/ce_netstream_template.py\", \n  \"ce_netstream_template module\": \"lib/ansible/modules/network/cloudengine/ce_netstream_template.py\", \n  \"ce_ntp\": \"lib/ansible/modules/network/cloudengine/ce_ntp.py\", \n  \"ce_ntp module\": \"lib/ansible/modules/network/cloudengine/ce_ntp.py\", \n  \"ce_ntp_auth\": \"lib/ansible/modules/network/cloudengine/ce_ntp_auth.py\", \n  \"ce_ntp_auth module\": \"lib/ansible/modules/network/cloudengine/ce_ntp_auth.py\", \n  \"ce_ospf\": \"lib/ansible/modules/network/cloudengine/ce_ospf.py\", \n  \"ce_ospf module\": \"lib/ansible/modules/network/cloudengine/ce_ospf.py\", \n  \"ce_ospf_vrf\": \"lib/ansible/modules/network/cloudengine/ce_ospf_vrf.py\", \n  \"ce_ospf_vrf module\": \"lib/ansible/modules/network/cloudengine/ce_ospf_vrf.py\", \n  \"ce_reboot\": \"lib/ansible/modules/network/cloudengine/ce_reboot.py\", \n  \"ce_reboot module\": \"lib/ansible/modules/network/cloudengine/ce_reboot.py\", \n  \"ce_rollback\": \"lib/ansible/modules/network/cloudengine/ce_rollback.py\", \n  \"ce_rollback module\": \"lib/ansible/modules/network/cloudengine/ce_rollback.py\", \n  \"ce_sflow\": \"lib/ansible/modules/network/cloudengine/ce_sflow.py\", \n  \"ce_sflow module\": \"lib/ansible/modules/network/cloudengine/ce_sflow.py\", \n  \"ce_snmp_community\": \"lib/ansible/modules/network/cloudengine/ce_snmp_community.py\", \n  \"ce_snmp_community module\": \"lib/ansible/modules/network/cloudengine/ce_snmp_community.py\", \n  \"ce_snmp_contact\": \"lib/ansible/modules/network/cloudengine/ce_snmp_contact.py\", \n  \"ce_snmp_contact module\": \"lib/ansible/modules/network/cloudengine/ce_snmp_contact.py\", \n  \"ce_snmp_location\": \"lib/ansible/modules/network/cloudengine/ce_snmp_location.py\", \n  \"ce_snmp_location module\": \"lib/ansible/modules/network/cloudengine/ce_snmp_location.py\", \n  \"ce_snmp_target_host\": \"lib/ansible/modules/network/cloudengine/ce_snmp_target_host.py\", \n  \"ce_snmp_target_host module\": \"lib/ansible/modules/network/cloudengine/ce_snmp_target_host.py\", \n  \"ce_snmp_traps\": \"lib/ansible/modules/network/cloudengine/ce_snmp_traps.py\", \n  \"ce_snmp_traps module\": \"lib/ansible/modules/network/cloudengine/ce_snmp_traps.py\", \n  \"ce_snmp_user\": \"lib/ansible/modules/network/cloudengine/ce_snmp_user.py\", \n  \"ce_snmp_user module\": \"lib/ansible/modules/network/cloudengine/ce_snmp_user.py\", \n  \"ce_startup\": \"lib/ansible/modules/network/cloudengine/ce_startup.py\", \n  \"ce_startup module\": \"lib/ansible/modules/network/cloudengine/ce_startup.py\", \n  \"ce_static_route\": \"lib/ansible/modules/network/cloudengine/ce_static_route.py\", \n  \"ce_static_route module\": \"lib/ansible/modules/network/cloudengine/ce_static_route.py\", \n  \"ce_stp\": \"lib/ansible/modules/network/cloudengine/ce_stp.py\", \n  \"ce_stp module\": \"lib/ansible/modules/network/cloudengine/ce_stp.py\", \n  \"ce_switchport\": \"lib/ansible/modules/network/cloudengine/ce_switchport.py\", \n  \"ce_switchport module\": \"lib/ansible/modules/network/cloudengine/ce_switchport.py\", \n  \"ce_vlan\": \"lib/ansible/modules/network/cloudengine/ce_vlan.py\", \n  \"ce_vlan module\": \"lib/ansible/modules/network/cloudengine/ce_vlan.py\", \n  \"ce_vrf\": \"lib/ansible/modules/network/cloudengine/ce_vrf.py\", \n  \"ce_vrf module\": \"lib/ansible/modules/network/cloudengine/ce_vrf.py\", \n  \"ce_vrf_af\": \"lib/ansible/modules/network/cloudengine/ce_vrf_af.py\", \n  \"ce_vrf_af module\": \"lib/ansible/modules/network/cloudengine/ce_vrf_af.py\", \n  \"ce_vrf_interface\": \"lib/ansible/modules/network/cloudengine/ce_vrf_interface.py\", \n  \"ce_vrf_interface module\": \"lib/ansible/modules/network/cloudengine/ce_vrf_interface.py\", \n  \"ce_vrrp\": \"lib/ansible/modules/network/cloudengine/ce_vrrp.py\", \n  \"ce_vrrp module\": \"lib/ansible/modules/network/cloudengine/ce_vrrp.py\", \n  \"ce_vxlan_arp\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_arp.py\", \n  \"ce_vxlan_arp module\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_arp.py\", \n  \"ce_vxlan_gateway\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_gateway.py\", \n  \"ce_vxlan_gateway module\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_gateway.py\", \n  \"ce_vxlan_global\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_global.py\", \n  \"ce_vxlan_global module\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_global.py\", \n  \"ce_vxlan_tunnel\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_tunnel.py\", \n  \"ce_vxlan_tunnel module\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_tunnel.py\", \n  \"ce_vxlan_vap\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_vap.py\", \n  \"ce_vxlan_vap module\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_vap.py\", \n  \"changed_when\": [], \n  \"circonus_annotation\": \"lib/ansible/modules/monitoring/circonus_annotation.py\", \n  \"circonus_annotation module\": \"lib/ansible/modules/monitoring/circonus_annotation.py\", \n  \"cisco_spark\": \"lib/ansible/modules/notification/cisco_spark.py\", \n  \"cisco_spark module\": \"lib/ansible/modules/notification/cisco_spark.py\", \n  \"cl_bond\": \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n  \"cl_bond module\": \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n  \"cl_bridge\": \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n  \"cl_bridge module\": \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n  \"cl_img_install\": \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n  \"cl_img_install module\": \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n  \"cl_interface\": \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n  \"cl_interface module\": \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n  \"cl_interface_policy\": \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n  \"cl_interface_policy module\": \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n  \"cl_license\": \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n  \"cl_license module\": \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n  \"cl_ports\": \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n  \"cl_ports module\": \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n  \"clc_aa_policy\": \"lib/ansible/modules/cloud/centurylink/clc_aa_policy.py\", \n  \"clc_aa_policy module\": \"lib/ansible/modules/cloud/centurylink/clc_aa_policy.py\", \n  \"clc_alert_policy\": \"lib/ansible/modules/cloud/centurylink/clc_alert_policy.py\", \n  \"clc_alert_policy module\": \"lib/ansible/modules/cloud/centurylink/clc_alert_policy.py\", \n  \"clc_blueprint_package\": \"lib/ansible/modules/cloud/centurylink/clc_blueprint_package.py\", \n  \"clc_blueprint_package module\": \"lib/ansible/modules/cloud/centurylink/clc_blueprint_package.py\", \n  \"clc_firewall_policy\": \"lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py\", \n  \"clc_firewall_policy module\": \"lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py\", \n  \"clc_group\": \"lib/ansible/modules/cloud/centurylink/clc_group.py\", \n  \"clc_group module\": \"lib/ansible/modules/cloud/centurylink/clc_group.py\", \n  \"clc_loadbalancer\": \"lib/ansible/modules/cloud/centurylink/clc_loadbalancer.py\", \n  \"clc_loadbalancer module\": \"lib/ansible/modules/cloud/centurylink/clc_loadbalancer.py\", \n  \"clc_modify_server\": \"lib/ansible/modules/cloud/centurylink/clc_modify_server.py\", \n  \"clc_modify_server module\": \"lib/ansible/modules/cloud/centurylink/clc_modify_server.py\", \n  \"clc_publicip\": \"lib/ansible/modules/cloud/centurylink/clc_publicip.py\", \n  \"clc_publicip module\": \"lib/ansible/modules/cloud/centurylink/clc_publicip.py\", \n  \"clc_server\": \"lib/ansible/modules/cloud/centurylink/clc_server.py\", \n  \"clc_server module\": \"lib/ansible/modules/cloud/centurylink/clc_server.py\", \n  \"clc_server_snapshot\": \"lib/ansible/modules/cloud/centurylink/clc_server_snapshot.py\", \n  \"clc_server_snapshot module\": \"lib/ansible/modules/cloud/centurylink/clc_server_snapshot.py\", \n  \"cli/adhoc\\ncli/playbook\": [\n    \"lib/ansible/cli/adhoc.py\", \n    \"lib/ansible/cli/playbook.py\"\n  ], \n  \"cli/doc, cli/console\": [\n    \"lib/ansible/cli/console.py\", \n    \"lib/ansible/cli/doc.py\"\n  ], \n  \"cloud/amazon/GUIDELINES.md\": \"lib/ansible/modules/cloud/amazon/GUIDELINES.md\", \n  \"cloud/amazon/_ec2_ami_search\": \"lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\", \n  \"cloud/amazon/_ec2_ami_search.py\": \"lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\", \n  \"cloud/amazon/_ec2_facts\": \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\", \n  \"cloud/amazon/_ec2_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\", \n  \"cloud/amazon/_ec2_remote_facts\": \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\", \n  \"cloud/amazon/_ec2_remote_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\", \n  \"cloud/amazon/_ec2_vpc\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n  \"cloud/amazon/_ec2_vpc.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n  \"cloud/amazon/_ec2_vpc_dhcp_options\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\", \n  \"cloud/amazon/_ec2_vpc_dhcp_options.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\", \n  \"cloud/amazon/_ec2_vpc_dhcp_options_facts\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\", \n  \"cloud/amazon/_ec2_vpc_dhcp_options_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\", \n  \"cloud/amazon/_iam_cert_facts\": \"lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\", \n  \"cloud/amazon/_iam_cert_facts.py\": \"lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\", \n  \"cloud/amazon/_s3\": \"lib/ansible/modules/cloud/amazon/_s3.py\", \n  \"cloud/amazon/_s3.py\": \"lib/ansible/modules/cloud/amazon/_s3.py\", \n  \"cloud/amazon/aws_acm_facts\": \"lib/ansible/modules/cloud/amazon/aws_acm_facts.py\", \n  \"cloud/amazon/aws_acm_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_acm_facts.py\", \n  \"cloud/amazon/aws_api_gateway\": \"lib/ansible/modules/cloud/amazon/aws_api_gateway.py\", \n  \"cloud/amazon/aws_api_gateway.py\": \"lib/ansible/modules/cloud/amazon/aws_api_gateway.py\", \n  \"cloud/amazon/aws_direct_connect_connection\": \"lib/ansible/modules/cloud/amazon/aws_direct_connect_connection.py\", \n  \"cloud/amazon/aws_direct_connect_connection.py\": \"lib/ansible/modules/cloud/amazon/aws_direct_connect_connection.py\", \n  \"cloud/amazon/aws_direct_connect_link_aggregation_group\": \"lib/ansible/modules/cloud/amazon/aws_direct_connect_link_aggregation_group.py\", \n  \"cloud/amazon/aws_direct_connect_link_aggregation_group.py\": \"lib/ansible/modules/cloud/amazon/aws_direct_connect_link_aggregation_group.py\", \n  \"cloud/amazon/aws_kms\": \"lib/ansible/modules/cloud/amazon/aws_kms.py\", \n  \"cloud/amazon/aws_kms.py\": \"lib/ansible/modules/cloud/amazon/aws_kms.py\", \n  \"cloud/amazon/aws_kms_facts\": \"lib/ansible/modules/cloud/amazon/aws_kms_facts.py\", \n  \"cloud/amazon/aws_kms_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_kms_facts.py\", \n  \"cloud/amazon/aws_s3\": \"lib/ansible/modules/cloud/amazon/aws_s3.py\", \n  \"cloud/amazon/aws_s3.py\": \"lib/ansible/modules/cloud/amazon/aws_s3.py\", \n  \"cloud/amazon/aws_s3_bucket_facts\": \"lib/ansible/modules/cloud/amazon/aws_s3_bucket_facts.py\", \n  \"cloud/amazon/aws_s3_bucket_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_s3_bucket_facts.py\", \n  \"cloud/amazon/aws_ssm_parameter_store\": \"lib/ansible/modules/cloud/amazon/aws_ssm_parameter_store.py\", \n  \"cloud/amazon/aws_ssm_parameter_store.py\": \"lib/ansible/modules/cloud/amazon/aws_ssm_parameter_store.py\", \n  \"cloud/amazon/aws_waf_facts\": \"lib/ansible/modules/cloud/amazon/aws_waf_facts.py\", \n  \"cloud/amazon/aws_waf_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_waf_facts.py\", \n  \"cloud/amazon/cloudformation\": \"lib/ansible/modules/cloud/amazon/cloudformation.py\", \n  \"cloud/amazon/cloudformation.py\": \"lib/ansible/modules/cloud/amazon/cloudformation.py\", \n  \"cloud/amazon/cloudformation_facts\": \"lib/ansible/modules/cloud/amazon/cloudformation_facts.py\", \n  \"cloud/amazon/cloudformation_facts.py\": \"lib/ansible/modules/cloud/amazon/cloudformation_facts.py\", \n  \"cloud/amazon/cloudfront_facts\": \"lib/ansible/modules/cloud/amazon/cloudfront_facts.py\", \n  \"cloud/amazon/cloudfront_facts.py\": \"lib/ansible/modules/cloud/amazon/cloudfront_facts.py\", \n  \"cloud/amazon/cloudtrail\": \"lib/ansible/modules/cloud/amazon/cloudtrail.py\", \n  \"cloud/amazon/cloudtrail.py\": \"lib/ansible/modules/cloud/amazon/cloudtrail.py\", \n  \"cloud/amazon/cloudwatchevent_rule\": \"lib/ansible/modules/cloud/amazon/cloudwatchevent_rule.py\", \n  \"cloud/amazon/cloudwatchevent_rule.py\": \"lib/ansible/modules/cloud/amazon/cloudwatchevent_rule.py\", \n  \"cloud/amazon/data_pipeline\": \"lib/ansible/modules/cloud/amazon/data_pipeline.py\", \n  \"cloud/amazon/data_pipeline.py\": \"lib/ansible/modules/cloud/amazon/data_pipeline.py\", \n  \"cloud/amazon/dynamodb_table\": \"lib/ansible/modules/cloud/amazon/dynamodb_table.py\", \n  \"cloud/amazon/dynamodb_table.py\": \"lib/ansible/modules/cloud/amazon/dynamodb_table.py\", \n  \"cloud/amazon/dynamodb_ttl\": \"lib/ansible/modules/cloud/amazon/dynamodb_ttl.py\", \n  \"cloud/amazon/dynamodb_ttl.py\": \"lib/ansible/modules/cloud/amazon/dynamodb_ttl.py\", \n  \"cloud/amazon/ec2\": \"lib/ansible/modules/cloud/amazon/ec2.py\", \n  \"cloud/amazon/ec2.py\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"cloud/amazon/ec2_ami\": \"lib/ansible/modules/cloud/amazon/ec2_ami.py\", \n  \"cloud/amazon/ec2_ami.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami.py\", \n  \"cloud/amazon/ec2_ami_copy\": \"lib/ansible/modules/cloud/amazon/ec2_ami_copy.py\", \n  \"cloud/amazon/ec2_ami_copy.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami_copy.py\", \n  \"cloud/amazon/ec2_ami_facts\": \"lib/ansible/modules/cloud/amazon/ec2_ami_facts.py\", \n  \"cloud/amazon/ec2_ami_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami_facts.py\", \n  \"cloud/amazon/ec2_ami_find\": \"lib/ansible/modules/cloud/amazon/ec2_ami_find.py\", \n  \"cloud/amazon/ec2_ami_find.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami_find.py\", \n  \"cloud/amazon/ec2_ami_search\": \"lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\", \n  \"cloud/amazon/ec2_ami_search.py\": \"lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\", \n  \"cloud/amazon/ec2_asg\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"cloud/amazon/ec2_asg.py\": \"lib/ansible/modules/cloud/amazon/ec2_asg.py\", \n  \"cloud/amazon/ec2_asg_facts\": \"lib/ansible/modules/cloud/amazon/ec2_asg_facts.py\", \n  \"cloud/amazon/ec2_asg_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_asg_facts.py\", \n  \"cloud/amazon/ec2_customer_gateway\": \"lib/ansible/modules/cloud/amazon/ec2_customer_gateway.py\", \n  \"cloud/amazon/ec2_customer_gateway.py\": \"lib/ansible/modules/cloud/amazon/ec2_customer_gateway.py\", \n  \"cloud/amazon/ec2_eip\": \"lib/ansible/modules/cloud/amazon/ec2_eip.py\", \n  \"cloud/amazon/ec2_eip.py\": \"lib/ansible/modules/cloud/amazon/ec2_eip.py\", \n  \"cloud/amazon/ec2_elb\": \"lib/ansible/modules/cloud/amazon/ec2_elb.py\", \n  \"cloud/amazon/ec2_elb.py\": \"lib/ansible/modules/cloud/amazon/ec2_elb.py\", \n  \"cloud/amazon/ec2_elb_facts\": \"lib/ansible/modules/cloud/amazon/ec2_elb_facts.py\", \n  \"cloud/amazon/ec2_elb_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_elb_facts.py\", \n  \"cloud/amazon/ec2_elb_lb\": \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\", \n  \"cloud/amazon/ec2_elb_lb.py\": \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\", \n  \"cloud/amazon/ec2_eni\": \"lib/ansible/modules/cloud/amazon/ec2_eni.py\", \n  \"cloud/amazon/ec2_eni.py\": \"lib/ansible/modules/cloud/amazon/ec2_eni.py\", \n  \"cloud/amazon/ec2_eni_facts\": \"lib/ansible/modules/cloud/amazon/ec2_eni_facts.py\", \n  \"cloud/amazon/ec2_eni_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_eni_facts.py\", \n  \"cloud/amazon/ec2_facts\": \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\", \n  \"cloud/amazon/ec2_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\", \n  \"cloud/amazon/ec2_group\": \"lib/ansible/modules/cloud/amazon/ec2_group.py\", \n  \"cloud/amazon/ec2_group.py\": \"lib/ansible/modules/cloud/amazon/ec2_group.py\", \n  \"cloud/amazon/ec2_group_facts\": \"lib/ansible/modules/cloud/amazon/ec2_group_facts.py\", \n  \"cloud/amazon/ec2_group_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_group_facts.py\", \n  \"cloud/amazon/ec2_instance_facts\": \"lib/ansible/modules/cloud/amazon/ec2_instance_facts.py\", \n  \"cloud/amazon/ec2_instance_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_instance_facts.py\", \n  \"cloud/amazon/ec2_key\": \"lib/ansible/modules/cloud/amazon/ec2_key.py\", \n  \"cloud/amazon/ec2_key.py\": \"lib/ansible/modules/cloud/amazon/ec2_key.py\", \n  \"cloud/amazon/ec2_lc\": \"lib/ansible/modules/cloud/amazon/ec2_lc.py\", \n  \"cloud/amazon/ec2_lc.py\": \"lib/ansible/modules/cloud/amazon/ec2_lc.py\", \n  \"cloud/amazon/ec2_lc_facts\": \"lib/ansible/modules/cloud/amazon/ec2_lc_facts.py\", \n  \"cloud/amazon/ec2_lc_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_lc_facts.py\", \n  \"cloud/amazon/ec2_lc_find\": \"lib/ansible/modules/cloud/amazon/ec2_lc_find.py\", \n  \"cloud/amazon/ec2_lc_find.py\": \"lib/ansible/modules/cloud/amazon/ec2_lc_find.py\", \n  \"cloud/amazon/ec2_metadata_facts\": \"lib/ansible/modules/cloud/amazon/ec2_metadata_facts.py\", \n  \"cloud/amazon/ec2_metadata_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_metadata_facts.py\", \n  \"cloud/amazon/ec2_metric_alarm\": \"lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py\", \n  \"cloud/amazon/ec2_metric_alarm.py\": \"lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py\", \n  \"cloud/amazon/ec2_remote_facts\": \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\", \n  \"cloud/amazon/ec2_remote_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\", \n  \"cloud/amazon/ec2_scaling_policy\": \"lib/ansible/modules/cloud/amazon/ec2_scaling_policy.py\", \n  \"cloud/amazon/ec2_scaling_policy.py\": \"lib/ansible/modules/cloud/amazon/ec2_scaling_policy.py\", \n  \"cloud/amazon/ec2_snapshot\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot.py\", \n  \"cloud/amazon/ec2_snapshot.py\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot.py\", \n  \"cloud/amazon/ec2_snapshot_copy\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot_copy.py\", \n  \"cloud/amazon/ec2_snapshot_copy.py\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot_copy.py\", \n  \"cloud/amazon/ec2_snapshot_facts\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot_facts.py\", \n  \"cloud/amazon/ec2_snapshot_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot_facts.py\", \n  \"cloud/amazon/ec2_tag\": \"lib/ansible/modules/cloud/amazon/ec2_tag.py\", \n  \"cloud/amazon/ec2_tag.py\": \"lib/ansible/modules/cloud/amazon/ec2_tag.py\", \n  \"cloud/amazon/ec2_vol\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vol.py\"\n  ], \n  \"cloud/amazon/ec2_vol.py\": \"lib/ansible/modules/cloud/amazon/ec2_vol.py\", \n  \"cloud/amazon/ec2_vol_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vol_facts.py\", \n  \"cloud/amazon/ec2_vol_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vol_facts.py\", \n  \"cloud/amazon/ec2_vpc\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n  \"cloud/amazon/ec2_vpc.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n  \"cloud/amazon/ec2_vpc_dhcp_option\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option.py\", \n  \"cloud/amazon/ec2_vpc_dhcp_option.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option.py\", \n  \"cloud/amazon/ec2_vpc_dhcp_option_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option_facts.py\", \n  \"cloud/amazon/ec2_vpc_dhcp_option_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option_facts.py\", \n  \"cloud/amazon/ec2_vpc_dhcp_options\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\", \n  \"cloud/amazon/ec2_vpc_dhcp_options.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\", \n  \"cloud/amazon/ec2_vpc_dhcp_options_facts\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\", \n  \"cloud/amazon/ec2_vpc_dhcp_options_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\", \n  \"cloud/amazon/ec2_vpc_endpoint\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint.py\", \n  \"cloud/amazon/ec2_vpc_endpoint.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint.py\", \n  \"cloud/amazon/ec2_vpc_endpoint_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint_facts.py\", \n  \"cloud/amazon/ec2_vpc_endpoint_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint_facts.py\", \n  \"cloud/amazon/ec2_vpc_igw\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw.py\", \n  \"cloud/amazon/ec2_vpc_igw.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw.py\", \n  \"cloud/amazon/ec2_vpc_igw_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw_facts.py\", \n  \"cloud/amazon/ec2_vpc_igw_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw_facts.py\", \n  \"cloud/amazon/ec2_vpc_nacl\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl.py\", \n  \"cloud/amazon/ec2_vpc_nacl.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl.py\", \n  \"cloud/amazon/ec2_vpc_nacl_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl_facts.py\", \n  \"cloud/amazon/ec2_vpc_nacl_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl_facts.py\", \n  \"cloud/amazon/ec2_vpc_nat_gateway\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway.py\", \n  \"cloud/amazon/ec2_vpc_nat_gateway.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway.py\", \n  \"cloud/amazon/ec2_vpc_nat_gateway_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway_facts.py\", \n  \"cloud/amazon/ec2_vpc_nat_gateway_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway_facts.py\", \n  \"cloud/amazon/ec2_vpc_net\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_net.py\", \n  \"cloud/amazon/ec2_vpc_net.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_net.py\", \n  \"cloud/amazon/ec2_vpc_net_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_net_facts.py\", \n  \"cloud/amazon/ec2_vpc_net_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_net_facts.py\", \n  \"cloud/amazon/ec2_vpc_peer\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peer.py\", \n  \"cloud/amazon/ec2_vpc_peer.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peer.py\", \n  \"cloud/amazon/ec2_vpc_peering_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peering_facts.py\", \n  \"cloud/amazon/ec2_vpc_peering_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peering_facts.py\", \n  \"cloud/amazon/ec2_vpc_route_table\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\", \n  \"cloud/amazon/ec2_vpc_route_table.py\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\"\n  ], \n  \"cloud/amazon/ec2_vpc_route_table_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table_facts.py\", \n  \"cloud/amazon/ec2_vpc_route_table_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table_facts.py\", \n  \"cloud/amazon/ec2_vpc_subnet\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet.py\", \n  \"cloud/amazon/ec2_vpc_subnet.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet.py\", \n  \"cloud/amazon/ec2_vpc_subnet_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet_facts.py\", \n  \"cloud/amazon/ec2_vpc_subnet_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet_facts.py\", \n  \"cloud/amazon/ec2_vpc_vgw\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw.py\", \n  \"cloud/amazon/ec2_vpc_vgw.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw.py\", \n  \"cloud/amazon/ec2_vpc_vgw_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw_facts.py\", \n  \"cloud/amazon/ec2_vpc_vgw_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw_facts.py\", \n  \"cloud/amazon/ec2_vpc_vpn\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vpn.py\", \n  \"cloud/amazon/ec2_vpc_vpn.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vpn.py\", \n  \"cloud/amazon/ec2_win_password\": \"lib/ansible/modules/cloud/amazon/ec2_win_password.py\", \n  \"cloud/amazon/ec2_win_password.py\": \"lib/ansible/modules/cloud/amazon/ec2_win_password.py\", \n  \"cloud/amazon/ecs_attribute\": \"lib/ansible/modules/cloud/amazon/ecs_attribute.py\", \n  \"cloud/amazon/ecs_attribute.py\": \"lib/ansible/modules/cloud/amazon/ecs_attribute.py\", \n  \"cloud/amazon/ecs_cluster\": \"lib/ansible/modules/cloud/amazon/ecs_cluster.py\", \n  \"cloud/amazon/ecs_cluster.py\": \"lib/ansible/modules/cloud/amazon/ecs_cluster.py\", \n  \"cloud/amazon/ecs_ecr\": \"lib/ansible/modules/cloud/amazon/ecs_ecr.py\", \n  \"cloud/amazon/ecs_ecr.py\": \"lib/ansible/modules/cloud/amazon/ecs_ecr.py\", \n  \"cloud/amazon/ecs_service\": \"lib/ansible/modules/cloud/amazon/ecs_service.py\", \n  \"cloud/amazon/ecs_service.py\": \"lib/ansible/modules/cloud/amazon/ecs_service.py\", \n  \"cloud/amazon/ecs_service_facts\": \"lib/ansible/modules/cloud/amazon/ecs_service_facts.py\", \n  \"cloud/amazon/ecs_service_facts.py\": \"lib/ansible/modules/cloud/amazon/ecs_service_facts.py\", \n  \"cloud/amazon/ecs_task\": \"lib/ansible/modules/cloud/amazon/ecs_task.py\", \n  \"cloud/amazon/ecs_task.py\": \"lib/ansible/modules/cloud/amazon/ecs_task.py\", \n  \"cloud/amazon/ecs_taskdefinition\": \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py\", \n  \"cloud/amazon/ecs_taskdefinition.py\": \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py\", \n  \"cloud/amazon/ecs_taskdefinition_facts\": \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition_facts.py\", \n  \"cloud/amazon/ecs_taskdefinition_facts.py\": \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition_facts.py\", \n  \"cloud/amazon/efs\": \"lib/ansible/modules/cloud/amazon/efs.py\", \n  \"cloud/amazon/efs.py\": \"lib/ansible/modules/cloud/amazon/efs.py\", \n  \"cloud/amazon/efs_facts\": \"lib/ansible/modules/cloud/amazon/efs_facts.py\", \n  \"cloud/amazon/efs_facts.py\": \"lib/ansible/modules/cloud/amazon/efs_facts.py\", \n  \"cloud/amazon/elasticache\": \"lib/ansible/modules/cloud/amazon/elasticache.py\", \n  \"cloud/amazon/elasticache.py\": \"lib/ansible/modules/cloud/amazon/elasticache.py\", \n  \"cloud/amazon/elasticache_parameter_group\": \"lib/ansible/modules/cloud/amazon/elasticache_parameter_group.py\", \n  \"cloud/amazon/elasticache_parameter_group.py\": \"lib/ansible/modules/cloud/amazon/elasticache_parameter_group.py\", \n  \"cloud/amazon/elasticache_snapshot\": \"lib/ansible/modules/cloud/amazon/elasticache_snapshot.py\", \n  \"cloud/amazon/elasticache_snapshot.py\": \"lib/ansible/modules/cloud/amazon/elasticache_snapshot.py\", \n  \"cloud/amazon/elasticache_subnet_group\": \"lib/ansible/modules/cloud/amazon/elasticache_subnet_group.py\", \n  \"cloud/amazon/elasticache_subnet_group.py\": \"lib/ansible/modules/cloud/amazon/elasticache_subnet_group.py\", \n  \"cloud/amazon/elb_application_lb\": \"lib/ansible/modules/cloud/amazon/elb_application_lb.py\", \n  \"cloud/amazon/elb_application_lb.py\": \"lib/ansible/modules/cloud/amazon/elb_application_lb.py\", \n  \"cloud/amazon/elb_application_lb_facts\": \"lib/ansible/modules/cloud/amazon/elb_application_lb_facts.py\", \n  \"cloud/amazon/elb_application_lb_facts.py\": \"lib/ansible/modules/cloud/amazon/elb_application_lb_facts.py\", \n  \"cloud/amazon/elb_classic_lb\": \"lib/ansible/modules/cloud/amazon/elb_classic_lb.py\", \n  \"cloud/amazon/elb_classic_lb.py\": \"lib/ansible/modules/cloud/amazon/elb_classic_lb.py\", \n  \"cloud/amazon/elb_classic_lb_facts\": \"lib/ansible/modules/cloud/amazon/elb_classic_lb_facts.py\", \n  \"cloud/amazon/elb_classic_lb_facts.py\": \"lib/ansible/modules/cloud/amazon/elb_classic_lb_facts.py\", \n  \"cloud/amazon/elb_instance\": \"lib/ansible/modules/cloud/amazon/elb_instance.py\", \n  \"cloud/amazon/elb_instance.py\": \"lib/ansible/modules/cloud/amazon/elb_instance.py\", \n  \"cloud/amazon/elb_target_group\": [\n    \"lib/ansible/modules/cloud/amazon/elb_target_group.py\"\n  ], \n  \"cloud/amazon/elb_target_group.py\": \"lib/ansible/modules/cloud/amazon/elb_target_group.py\", \n  \"cloud/amazon/elb_target_group_facts\": \"lib/ansible/modules/cloud/amazon/elb_target_group_facts.py\", \n  \"cloud/amazon/elb_target_group_facts.py\": \"lib/ansible/modules/cloud/amazon/elb_target_group_facts.py\", \n  \"cloud/amazon/execute_lambda\": \"lib/ansible/modules/cloud/amazon/execute_lambda.py\", \n  \"cloud/amazon/execute_lambda.py\": \"lib/ansible/modules/cloud/amazon/execute_lambda.py\", \n  \"cloud/amazon/iam\": [\n    \"lib/ansible/modules/cloud/amazon/iam.py\"\n  ], \n  \"cloud/amazon/iam.py\": \"lib/ansible/modules/cloud/amazon/iam.py\", \n  \"cloud/amazon/iam_cert\": \"lib/ansible/modules/cloud/amazon/iam_cert.py\", \n  \"cloud/amazon/iam_cert.py\": \"lib/ansible/modules/cloud/amazon/iam_cert.py\", \n  \"cloud/amazon/iam_cert_facts\": \"lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\", \n  \"cloud/amazon/iam_cert_facts.py\": \"lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\", \n  \"cloud/amazon/iam_group\": \"lib/ansible/modules/cloud/amazon/iam_group.py\", \n  \"cloud/amazon/iam_group.py\": \"lib/ansible/modules/cloud/amazon/iam_group.py\", \n  \"cloud/amazon/iam_managed_policy\": \"lib/ansible/modules/cloud/amazon/iam_managed_policy.py\", \n  \"cloud/amazon/iam_managed_policy.py\": \"lib/ansible/modules/cloud/amazon/iam_managed_policy.py\", \n  \"cloud/amazon/iam_mfa_device_facts\": \"lib/ansible/modules/cloud/amazon/iam_mfa_device_facts.py\", \n  \"cloud/amazon/iam_mfa_device_facts.py\": \"lib/ansible/modules/cloud/amazon/iam_mfa_device_facts.py\", \n  \"cloud/amazon/iam_policy\": \"lib/ansible/modules/cloud/amazon/iam_policy.py\", \n  \"cloud/amazon/iam_policy.py\": \"lib/ansible/modules/cloud/amazon/iam_policy.py\", \n  \"cloud/amazon/iam_role\": \"lib/ansible/modules/cloud/amazon/iam_role.py\", \n  \"cloud/amazon/iam_role.py\": \"lib/ansible/modules/cloud/amazon/iam_role.py\", \n  \"cloud/amazon/iam_server_certificate_facts\": \"lib/ansible/modules/cloud/amazon/iam_server_certificate_facts.py\", \n  \"cloud/amazon/iam_server_certificate_facts.py\": \"lib/ansible/modules/cloud/amazon/iam_server_certificate_facts.py\", \n  \"cloud/amazon/kinesis_stream\": \"lib/ansible/modules/cloud/amazon/kinesis_stream.py\", \n  \"cloud/amazon/kinesis_stream.py\": \"lib/ansible/modules/cloud/amazon/kinesis_stream.py\", \n  \"cloud/amazon/lambda\": \"lib/ansible/modules/cloud/amazon/lambda.py\", \n  \"cloud/amazon/lambda.py\": \"lib/ansible/modules/cloud/amazon/lambda.py\", \n  \"cloud/amazon/lambda_alias\": \"lib/ansible/modules/cloud/amazon/lambda_alias.py\", \n  \"cloud/amazon/lambda_alias.py\": \"lib/ansible/modules/cloud/amazon/lambda_alias.py\", \n  \"cloud/amazon/lambda_event\": \"lib/ansible/modules/cloud/amazon/lambda_event.py\", \n  \"cloud/amazon/lambda_event.py\": \"lib/ansible/modules/cloud/amazon/lambda_event.py\", \n  \"cloud/amazon/lambda_facts\": \"lib/ansible/modules/cloud/amazon/lambda_facts.py\", \n  \"cloud/amazon/lambda_facts.py\": \"lib/ansible/modules/cloud/amazon/lambda_facts.py\", \n  \"cloud/amazon/lambda_policy\": \"lib/ansible/modules/cloud/amazon/lambda_policy.py\", \n  \"cloud/amazon/lambda_policy.py\": \"lib/ansible/modules/cloud/amazon/lambda_policy.py\", \n  \"cloud/amazon/lightsail\": \"lib/ansible/modules/cloud/amazon/lightsail.py\", \n  \"cloud/amazon/lightsail.py\": \"lib/ansible/modules/cloud/amazon/lightsail.py\", \n  \"cloud/amazon/rds\": \"lib/ansible/modules/cloud/amazon/rds.py\", \n  \"cloud/amazon/rds.py\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"cloud/amazon/rds_param_group\": \"lib/ansible/modules/cloud/amazon/rds_param_group.py\", \n  \"cloud/amazon/rds_param_group.py\": \"lib/ansible/modules/cloud/amazon/rds_param_group.py\", \n  \"cloud/amazon/rds_subnet_group\": \"lib/ansible/modules/cloud/amazon/rds_subnet_group.py\", \n  \"cloud/amazon/rds_subnet_group.py\": \"lib/ansible/modules/cloud/amazon/rds_subnet_group.py\", \n  \"cloud/amazon/redshift\": \"lib/ansible/modules/cloud/amazon/redshift.py\", \n  \"cloud/amazon/redshift.py\": \"lib/ansible/modules/cloud/amazon/redshift.py\", \n  \"cloud/amazon/redshift_facts\": \"lib/ansible/modules/cloud/amazon/redshift_facts.py\", \n  \"cloud/amazon/redshift_facts.py\": \"lib/ansible/modules/cloud/amazon/redshift_facts.py\", \n  \"cloud/amazon/redshift_subnet_group\": \"lib/ansible/modules/cloud/amazon/redshift_subnet_group.py\", \n  \"cloud/amazon/redshift_subnet_group.py\": \"lib/ansible/modules/cloud/amazon/redshift_subnet_group.py\", \n  \"cloud/amazon/route53\": \"lib/ansible/modules/cloud/amazon/route53.py\", \n  \"cloud/amazon/route53.py\": \"lib/ansible/modules/cloud/amazon/route53.py\", \n  \"cloud/amazon/route53_facts\": \"lib/ansible/modules/cloud/amazon/route53_facts.py\", \n  \"cloud/amazon/route53_facts.py\": \"lib/ansible/modules/cloud/amazon/route53_facts.py\", \n  \"cloud/amazon/route53_health_check\": \"lib/ansible/modules/cloud/amazon/route53_health_check.py\", \n  \"cloud/amazon/route53_health_check.py\": \"lib/ansible/modules/cloud/amazon/route53_health_check.py\", \n  \"cloud/amazon/route53_zone\": \"lib/ansible/modules/cloud/amazon/route53_zone.py\", \n  \"cloud/amazon/route53_zone.py\": \"lib/ansible/modules/cloud/amazon/route53_zone.py\", \n  \"cloud/amazon/s3\": \"lib/ansible/modules/cloud/amazon/_s3.py\", \n  \"cloud/amazon/s3.py\": \"lib/ansible/modules/cloud/amazon/_s3.py\", \n  \"cloud/amazon/s3_bucket\": \"lib/ansible/modules/cloud/amazon/s3_bucket.py\", \n  \"cloud/amazon/s3_bucket.py\": \"lib/ansible/modules/cloud/amazon/s3_bucket.py\", \n  \"cloud/amazon/s3_lifecycle\": \"lib/ansible/modules/cloud/amazon/s3_lifecycle.py\", \n  \"cloud/amazon/s3_lifecycle.py\": \"lib/ansible/modules/cloud/amazon/s3_lifecycle.py\", \n  \"cloud/amazon/s3_logging\": \"lib/ansible/modules/cloud/amazon/s3_logging.py\", \n  \"cloud/amazon/s3_logging.py\": \"lib/ansible/modules/cloud/amazon/s3_logging.py\", \n  \"cloud/amazon/s3_sync\": \"lib/ansible/modules/cloud/amazon/s3_sync.py\", \n  \"cloud/amazon/s3_sync.py\": \"lib/ansible/modules/cloud/amazon/s3_sync.py\", \n  \"cloud/amazon/s3_website\": \"lib/ansible/modules/cloud/amazon/s3_website.py\", \n  \"cloud/amazon/s3_website.py\": \"lib/ansible/modules/cloud/amazon/s3_website.py\", \n  \"cloud/amazon/sns\": \"lib/ansible/modules/cloud/amazon/sns.py\", \n  \"cloud/amazon/sns.py\": \"lib/ansible/modules/cloud/amazon/sns.py\", \n  \"cloud/amazon/sns_topic\": \"lib/ansible/modules/cloud/amazon/sns_topic.py\", \n  \"cloud/amazon/sns_topic.py\": \"lib/ansible/modules/cloud/amazon/sns_topic.py\", \n  \"cloud/amazon/sqs_queue\": \"lib/ansible/modules/cloud/amazon/sqs_queue.py\", \n  \"cloud/amazon/sqs_queue.py\": \"lib/ansible/modules/cloud/amazon/sqs_queue.py\", \n  \"cloud/amazon/sts_assume_role\": \"lib/ansible/modules/cloud/amazon/sts_assume_role.py\", \n  \"cloud/amazon/sts_assume_role.py\": \"lib/ansible/modules/cloud/amazon/sts_assume_role.py\", \n  \"cloud/amazon/sts_session_token\": \"lib/ansible/modules/cloud/amazon/sts_session_token.py\", \n  \"cloud/amazon/sts_session_token.py\": \"lib/ansible/modules/cloud/amazon/sts_session_token.py\", \n  \"cloud/atomic/atomic_container\": \"lib/ansible/modules/cloud/atomic/atomic_container.py\", \n  \"cloud/atomic/atomic_container.py\": \"lib/ansible/modules/cloud/atomic/atomic_container.py\", \n  \"cloud/atomic/atomic_host\": \"lib/ansible/modules/cloud/atomic/atomic_host.py\", \n  \"cloud/atomic/atomic_host.py\": \"lib/ansible/modules/cloud/atomic/atomic_host.py\", \n  \"cloud/atomic/atomic_image\": \"lib/ansible/modules/cloud/atomic/atomic_image.py\", \n  \"cloud/atomic/atomic_image.py\": \"lib/ansible/modules/cloud/atomic/atomic_image.py\", \n  \"cloud/azure/_azure\": \"lib/ansible/modules/cloud/azure/_azure.py\", \n  \"cloud/azure/_azure.py\": \"lib/ansible/modules/cloud/azure/_azure.py\", \n  \"cloud/azure/azure\": \"lib/ansible/modules/cloud/azure/_azure.py\", \n  \"cloud/azure/azure.py\": \"lib/ansible/modules/cloud/azure/_azure.py\", \n  \"cloud/azure/azure_rm_acs\": \"lib/ansible/modules/cloud/azure/azure_rm_acs.py\", \n  \"cloud/azure/azure_rm_acs.py\": \"lib/ansible/modules/cloud/azure/azure_rm_acs.py\", \n  \"cloud/azure/azure_rm_availabilityset\": \"lib/ansible/modules/cloud/azure/azure_rm_availabilityset.py\", \n  \"cloud/azure/azure_rm_availabilityset.py\": \"lib/ansible/modules/cloud/azure/azure_rm_availabilityset.py\", \n  \"cloud/azure/azure_rm_availabilityset_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_availabilityset_facts.py\", \n  \"cloud/azure/azure_rm_availabilityset_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_availabilityset_facts.py\", \n  \"cloud/azure/azure_rm_deployment\": \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\", \n  \"cloud/azure/azure_rm_deployment.py\": \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\", \n  \"cloud/azure/azure_rm_dnsrecordset\": \"lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset.py\", \n  \"cloud/azure/azure_rm_dnsrecordset.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset.py\", \n  \"cloud/azure/azure_rm_dnsrecordset_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset_facts.py\", \n  \"cloud/azure/azure_rm_dnsrecordset_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset_facts.py\", \n  \"cloud/azure/azure_rm_dnszone\": \"lib/ansible/modules/cloud/azure/azure_rm_dnszone.py\", \n  \"cloud/azure/azure_rm_dnszone.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnszone.py\", \n  \"cloud/azure/azure_rm_dnszone_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_dnszone_facts.py\", \n  \"cloud/azure/azure_rm_dnszone_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnszone_facts.py\", \n  \"cloud/azure/azure_rm_functionapp\": \"lib/ansible/modules/cloud/azure/azure_rm_functionapp.py\", \n  \"cloud/azure/azure_rm_functionapp.py\": \"lib/ansible/modules/cloud/azure/azure_rm_functionapp.py\", \n  \"cloud/azure/azure_rm_functionapp_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_functionapp_facts.py\", \n  \"cloud/azure/azure_rm_functionapp_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_functionapp_facts.py\", \n  \"cloud/azure/azure_rm_loadbalancer\": \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer.py\", \n  \"cloud/azure/azure_rm_loadbalancer.py\": \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer.py\", \n  \"cloud/azure/azure_rm_loadbalancer_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer_facts.py\", \n  \"cloud/azure/azure_rm_loadbalancer_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer_facts.py\", \n  \"cloud/azure/azure_rm_managed_disk\": \"lib/ansible/modules/cloud/azure/azure_rm_managed_disk.py\", \n  \"cloud/azure/azure_rm_managed_disk.py\": \"lib/ansible/modules/cloud/azure/azure_rm_managed_disk.py\", \n  \"cloud/azure/azure_rm_managed_disk_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_managed_disk_facts.py\", \n  \"cloud/azure/azure_rm_managed_disk_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_managed_disk_facts.py\", \n  \"cloud/azure/azure_rm_networkinterface\": \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface.py\", \n  \"cloud/azure/azure_rm_networkinterface.py\": \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface.py\", \n  \"cloud/azure/azure_rm_networkinterface_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface_facts.py\", \n  \"cloud/azure/azure_rm_networkinterface_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface_facts.py\", \n  \"cloud/azure/azure_rm_publicipaddress\": \"lib/ansible/modules/cloud/azure/azure_rm_publicipaddress.py\", \n  \"cloud/azure/azure_rm_publicipaddress.py\": \"lib/ansible/modules/cloud/azure/azure_rm_publicipaddress.py\", \n  \"cloud/azure/azure_rm_publicipaddress_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_publicipaddress_facts.py\", \n  \"cloud/azure/azure_rm_publicipaddress_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_publicipaddress_facts.py\", \n  \"cloud/azure/azure_rm_resourcegroup\": \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup.py\", \n  \"cloud/azure/azure_rm_resourcegroup.py\": \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup.py\", \n  \"cloud/azure/azure_rm_resourcegroup_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup_facts.py\", \n  \"cloud/azure/azure_rm_resourcegroup_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup_facts.py\", \n  \"cloud/azure/azure_rm_securitygroup\": \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup.py\", \n  \"cloud/azure/azure_rm_securitygroup.py\": \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup.py\", \n  \"cloud/azure/azure_rm_securitygroup_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup_facts.py\", \n  \"cloud/azure/azure_rm_securitygroup_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup_facts.py\", \n  \"cloud/azure/azure_rm_storageaccount\": \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount.py\", \n  \"cloud/azure/azure_rm_storageaccount.py\": \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount.py\", \n  \"cloud/azure/azure_rm_storageaccount_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount_facts.py\", \n  \"cloud/azure/azure_rm_storageaccount_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount_facts.py\", \n  \"cloud/azure/azure_rm_storageblob\": \"lib/ansible/modules/cloud/azure/azure_rm_storageblob.py\", \n  \"cloud/azure/azure_rm_storageblob.py\": \"lib/ansible/modules/cloud/azure/azure_rm_storageblob.py\", \n  \"cloud/azure/azure_rm_subnet\": \"lib/ansible/modules/cloud/azure/azure_rm_subnet.py\", \n  \"cloud/azure/azure_rm_subnet.py\": \"lib/ansible/modules/cloud/azure/azure_rm_subnet.py\", \n  \"cloud/azure/azure_rm_virtualmachine\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"cloud/azure/azure_rm_virtualmachine.py\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"cloud/azure/azure_rm_virtualmachine_extension\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_extension.py\", \n  \"cloud/azure/azure_rm_virtualmachine_extension.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_extension.py\", \n  \"cloud/azure/azure_rm_virtualmachine_scaleset\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset.py\", \n  \"cloud/azure/azure_rm_virtualmachine_scaleset.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset.py\", \n  \"cloud/azure/azure_rm_virtualmachine_scaleset_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset_facts.py\", \n  \"cloud/azure/azure_rm_virtualmachine_scaleset_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset_facts.py\", \n  \"cloud/azure/azure_rm_virtualmachineimage_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachineimage_facts.py\", \n  \"cloud/azure/azure_rm_virtualmachineimage_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachineimage_facts.py\", \n  \"cloud/azure/azure_rm_virtualnetwork\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork.py\", \n  \"cloud/azure/azure_rm_virtualnetwork.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork.py\", \n  \"cloud/azure/azure_rm_virtualnetwork_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork_facts.py\", \n  \"cloud/azure/azure_rm_virtualnetwork_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork_facts.py\", \n  \"cloud/centurylink/clc_aa_policy\": \"lib/ansible/modules/cloud/centurylink/clc_aa_policy.py\", \n  \"cloud/centurylink/clc_aa_policy.py\": \"lib/ansible/modules/cloud/centurylink/clc_aa_policy.py\", \n  \"cloud/centurylink/clc_alert_policy\": \"lib/ansible/modules/cloud/centurylink/clc_alert_policy.py\", \n  \"cloud/centurylink/clc_alert_policy.py\": \"lib/ansible/modules/cloud/centurylink/clc_alert_policy.py\", \n  \"cloud/centurylink/clc_blueprint_package\": \"lib/ansible/modules/cloud/centurylink/clc_blueprint_package.py\", \n  \"cloud/centurylink/clc_blueprint_package.py\": \"lib/ansible/modules/cloud/centurylink/clc_blueprint_package.py\", \n  \"cloud/centurylink/clc_firewall_policy\": \"lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py\", \n  \"cloud/centurylink/clc_firewall_policy.py\": \"lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py\", \n  \"cloud/centurylink/clc_group\": \"lib/ansible/modules/cloud/centurylink/clc_group.py\", \n  \"cloud/centurylink/clc_group.py\": \"lib/ansible/modules/cloud/centurylink/clc_group.py\", \n  \"cloud/centurylink/clc_loadbalancer\": \"lib/ansible/modules/cloud/centurylink/clc_loadbalancer.py\", \n  \"cloud/centurylink/clc_loadbalancer.py\": \"lib/ansible/modules/cloud/centurylink/clc_loadbalancer.py\", \n  \"cloud/centurylink/clc_modify_server\": \"lib/ansible/modules/cloud/centurylink/clc_modify_server.py\", \n  \"cloud/centurylink/clc_modify_server.py\": \"lib/ansible/modules/cloud/centurylink/clc_modify_server.py\", \n  \"cloud/centurylink/clc_publicip\": \"lib/ansible/modules/cloud/centurylink/clc_publicip.py\", \n  \"cloud/centurylink/clc_publicip.py\": \"lib/ansible/modules/cloud/centurylink/clc_publicip.py\", \n  \"cloud/centurylink/clc_server\": \"lib/ansible/modules/cloud/centurylink/clc_server.py\", \n  \"cloud/centurylink/clc_server.py\": \"lib/ansible/modules/cloud/centurylink/clc_server.py\", \n  \"cloud/centurylink/clc_server_snapshot\": \"lib/ansible/modules/cloud/centurylink/clc_server_snapshot.py\", \n  \"cloud/centurylink/clc_server_snapshot.py\": \"lib/ansible/modules/cloud/centurylink/clc_server_snapshot.py\", \n  \"cloud/cloudscale/cloudscale_server\": \"lib/ansible/modules/cloud/cloudscale/cloudscale_server.py\", \n  \"cloud/cloudscale/cloudscale_server.py\": \"lib/ansible/modules/cloud/cloudscale/cloudscale_server.py\", \n  \"cloud/cloudstack/_cs_nic\": \"lib/ansible/modules/cloud/cloudstack/_cs_nic.py\", \n  \"cloud/cloudstack/_cs_nic.py\": \"lib/ansible/modules/cloud/cloudstack/_cs_nic.py\", \n  \"cloud/cloudstack/cs_account\": \"lib/ansible/modules/cloud/cloudstack/cs_account.py\", \n  \"cloud/cloudstack/cs_account.py\": \"lib/ansible/modules/cloud/cloudstack/cs_account.py\", \n  \"cloud/cloudstack/cs_affinitygroup\": \"lib/ansible/modules/cloud/cloudstack/cs_affinitygroup.py\", \n  \"cloud/cloudstack/cs_affinitygroup.py\": \"lib/ansible/modules/cloud/cloudstack/cs_affinitygroup.py\", \n  \"cloud/cloudstack/cs_cluster\": \"lib/ansible/modules/cloud/cloudstack/cs_cluster.py\", \n  \"cloud/cloudstack/cs_cluster.py\": \"lib/ansible/modules/cloud/cloudstack/cs_cluster.py\", \n  \"cloud/cloudstack/cs_configuration\": \"lib/ansible/modules/cloud/cloudstack/cs_configuration.py\", \n  \"cloud/cloudstack/cs_configuration.py\": \"lib/ansible/modules/cloud/cloudstack/cs_configuration.py\", \n  \"cloud/cloudstack/cs_domain\": \"lib/ansible/modules/cloud/cloudstack/cs_domain.py\", \n  \"cloud/cloudstack/cs_domain.py\": \"lib/ansible/modules/cloud/cloudstack/cs_domain.py\", \n  \"cloud/cloudstack/cs_facts\": \"lib/ansible/modules/cloud/cloudstack/cs_facts.py\", \n  \"cloud/cloudstack/cs_facts.py\": \"lib/ansible/modules/cloud/cloudstack/cs_facts.py\", \n  \"cloud/cloudstack/cs_firewall\": \"lib/ansible/modules/cloud/cloudstack/cs_firewall.py\", \n  \"cloud/cloudstack/cs_firewall.py\": \"lib/ansible/modules/cloud/cloudstack/cs_firewall.py\", \n  \"cloud/cloudstack/cs_host\": \"lib/ansible/modules/cloud/cloudstack/cs_host.py\", \n  \"cloud/cloudstack/cs_host.py\": \"lib/ansible/modules/cloud/cloudstack/cs_host.py\", \n  \"cloud/cloudstack/cs_instance\": \"lib/ansible/modules/cloud/cloudstack/cs_instance.py\", \n  \"cloud/cloudstack/cs_instance.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance.py\", \n  \"cloud/cloudstack/cs_instance_facts\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_facts.py\", \n  \"cloud/cloudstack/cs_instance_facts.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_facts.py\", \n  \"cloud/cloudstack/cs_instance_nic\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_nic.py\", \n  \"cloud/cloudstack/cs_instance_nic.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_nic.py\", \n  \"cloud/cloudstack/cs_instance_nic_secondaryip\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_nic_secondaryip.py\", \n  \"cloud/cloudstack/cs_instance_nic_secondaryip.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_nic_secondaryip.py\", \n  \"cloud/cloudstack/cs_instancegroup\": \"lib/ansible/modules/cloud/cloudstack/cs_instancegroup.py\", \n  \"cloud/cloudstack/cs_instancegroup.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instancegroup.py\", \n  \"cloud/cloudstack/cs_ip_address\": \"lib/ansible/modules/cloud/cloudstack/cs_ip_address.py\", \n  \"cloud/cloudstack/cs_ip_address.py\": \"lib/ansible/modules/cloud/cloudstack/cs_ip_address.py\", \n  \"cloud/cloudstack/cs_iso\": \"lib/ansible/modules/cloud/cloudstack/cs_iso.py\", \n  \"cloud/cloudstack/cs_iso.py\": \"lib/ansible/modules/cloud/cloudstack/cs_iso.py\", \n  \"cloud/cloudstack/cs_loadbalancer_rule\": \"lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule.py\", \n  \"cloud/cloudstack/cs_loadbalancer_rule.py\": \"lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule.py\", \n  \"cloud/cloudstack/cs_loadbalancer_rule_member\": \"lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule_member.py\", \n  \"cloud/cloudstack/cs_loadbalancer_rule_member.py\": \"lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule_member.py\", \n  \"cloud/cloudstack/cs_network\": \"lib/ansible/modules/cloud/cloudstack/cs_network.py\", \n  \"cloud/cloudstack/cs_network.py\": \"lib/ansible/modules/cloud/cloudstack/cs_network.py\", \n  \"cloud/cloudstack/cs_network_acl\": \"lib/ansible/modules/cloud/cloudstack/cs_network_acl.py\", \n  \"cloud/cloudstack/cs_network_acl.py\": \"lib/ansible/modules/cloud/cloudstack/cs_network_acl.py\", \n  \"cloud/cloudstack/cs_network_acl_rule\": \"lib/ansible/modules/cloud/cloudstack/cs_network_acl_rule.py\", \n  \"cloud/cloudstack/cs_network_acl_rule.py\": \"lib/ansible/modules/cloud/cloudstack/cs_network_acl_rule.py\", \n  \"cloud/cloudstack/cs_nic\": \"lib/ansible/modules/cloud/cloudstack/_cs_nic.py\", \n  \"cloud/cloudstack/cs_nic.py\": \"lib/ansible/modules/cloud/cloudstack/_cs_nic.py\", \n  \"cloud/cloudstack/cs_pod\": \"lib/ansible/modules/cloud/cloudstack/cs_pod.py\", \n  \"cloud/cloudstack/cs_pod.py\": \"lib/ansible/modules/cloud/cloudstack/cs_pod.py\", \n  \"cloud/cloudstack/cs_portforward\": \"lib/ansible/modules/cloud/cloudstack/cs_portforward.py\", \n  \"cloud/cloudstack/cs_portforward.py\": \"lib/ansible/modules/cloud/cloudstack/cs_portforward.py\", \n  \"cloud/cloudstack/cs_project\": \"lib/ansible/modules/cloud/cloudstack/cs_project.py\", \n  \"cloud/cloudstack/cs_project.py\": \"lib/ansible/modules/cloud/cloudstack/cs_project.py\", \n  \"cloud/cloudstack/cs_region\": \"lib/ansible/modules/cloud/cloudstack/cs_region.py\", \n  \"cloud/cloudstack/cs_region.py\": \"lib/ansible/modules/cloud/cloudstack/cs_region.py\", \n  \"cloud/cloudstack/cs_resourcelimit\": \"lib/ansible/modules/cloud/cloudstack/cs_resourcelimit.py\", \n  \"cloud/cloudstack/cs_resourcelimit.py\": \"lib/ansible/modules/cloud/cloudstack/cs_resourcelimit.py\", \n  \"cloud/cloudstack/cs_role\": \"lib/ansible/modules/cloud/cloudstack/cs_role.py\", \n  \"cloud/cloudstack/cs_role.py\": \"lib/ansible/modules/cloud/cloudstack/cs_role.py\", \n  \"cloud/cloudstack/cs_router\": \"lib/ansible/modules/cloud/cloudstack/cs_router.py\", \n  \"cloud/cloudstack/cs_router.py\": \"lib/ansible/modules/cloud/cloudstack/cs_router.py\", \n  \"cloud/cloudstack/cs_securitygroup\": \"lib/ansible/modules/cloud/cloudstack/cs_securitygroup.py\", \n  \"cloud/cloudstack/cs_securitygroup.py\": \"lib/ansible/modules/cloud/cloudstack/cs_securitygroup.py\", \n  \"cloud/cloudstack/cs_securitygroup_rule\": \"lib/ansible/modules/cloud/cloudstack/cs_securitygroup_rule.py\", \n  \"cloud/cloudstack/cs_securitygroup_rule.py\": \"lib/ansible/modules/cloud/cloudstack/cs_securitygroup_rule.py\", \n  \"cloud/cloudstack/cs_snapshot_policy\": \"lib/ansible/modules/cloud/cloudstack/cs_snapshot_policy.py\", \n  \"cloud/cloudstack/cs_snapshot_policy.py\": \"lib/ansible/modules/cloud/cloudstack/cs_snapshot_policy.py\", \n  \"cloud/cloudstack/cs_sshkeypair\": \"lib/ansible/modules/cloud/cloudstack/cs_sshkeypair.py\", \n  \"cloud/cloudstack/cs_sshkeypair.py\": \"lib/ansible/modules/cloud/cloudstack/cs_sshkeypair.py\", \n  \"cloud/cloudstack/cs_staticnat\": \"lib/ansible/modules/cloud/cloudstack/cs_staticnat.py\", \n  \"cloud/cloudstack/cs_staticnat.py\": \"lib/ansible/modules/cloud/cloudstack/cs_staticnat.py\", \n  \"cloud/cloudstack/cs_storage_pool\": \"lib/ansible/modules/cloud/cloudstack/cs_storage_pool.py\", \n  \"cloud/cloudstack/cs_storage_pool.py\": \"lib/ansible/modules/cloud/cloudstack/cs_storage_pool.py\", \n  \"cloud/cloudstack/cs_template\": \"lib/ansible/modules/cloud/cloudstack/cs_template.py\", \n  \"cloud/cloudstack/cs_template.py\": \"lib/ansible/modules/cloud/cloudstack/cs_template.py\", \n  \"cloud/cloudstack/cs_user\": \"lib/ansible/modules/cloud/cloudstack/cs_user.py\", \n  \"cloud/cloudstack/cs_user.py\": \"lib/ansible/modules/cloud/cloudstack/cs_user.py\", \n  \"cloud/cloudstack/cs_vmsnapshot\": \"lib/ansible/modules/cloud/cloudstack/cs_vmsnapshot.py\", \n  \"cloud/cloudstack/cs_vmsnapshot.py\": \"lib/ansible/modules/cloud/cloudstack/cs_vmsnapshot.py\", \n  \"cloud/cloudstack/cs_volume\": \"lib/ansible/modules/cloud/cloudstack/cs_volume.py\", \n  \"cloud/cloudstack/cs_volume.py\": \"lib/ansible/modules/cloud/cloudstack/cs_volume.py\", \n  \"cloud/cloudstack/cs_vpc\": \"lib/ansible/modules/cloud/cloudstack/cs_vpc.py\", \n  \"cloud/cloudstack/cs_vpc.py\": \"lib/ansible/modules/cloud/cloudstack/cs_vpc.py\", \n  \"cloud/cloudstack/cs_vpn_gateway\": \"lib/ansible/modules/cloud/cloudstack/cs_vpn_gateway.py\", \n  \"cloud/cloudstack/cs_vpn_gateway.py\": \"lib/ansible/modules/cloud/cloudstack/cs_vpn_gateway.py\", \n  \"cloud/cloudstack/cs_zone\": \"lib/ansible/modules/cloud/cloudstack/cs_zone.py\", \n  \"cloud/cloudstack/cs_zone.py\": \"lib/ansible/modules/cloud/cloudstack/cs_zone.py\", \n  \"cloud/cloudstack/cs_zone_facts\": \"lib/ansible/modules/cloud/cloudstack/cs_zone_facts.py\", \n  \"cloud/cloudstack/cs_zone_facts.py\": \"lib/ansible/modules/cloud/cloudstack/cs_zone_facts.py\", \n  \"cloud/digital_ocean/digital_ocean\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean.py\", \n  \"cloud/digital_ocean/digital_ocean.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean.py\", \n  \"cloud/digital_ocean/digital_ocean_block_storage\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_block_storage.py\", \n  \"cloud/digital_ocean/digital_ocean_block_storage.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_block_storage.py\", \n  \"cloud/digital_ocean/digital_ocean_domain\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_domain.py\", \n  \"cloud/digital_ocean/digital_ocean_domain.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_domain.py\", \n  \"cloud/digital_ocean/digital_ocean_floating_ip\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_floating_ip.py\", \n  \"cloud/digital_ocean/digital_ocean_floating_ip.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_floating_ip.py\", \n  \"cloud/digital_ocean/digital_ocean_sshkey\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey.py\", \n  \"cloud/digital_ocean/digital_ocean_sshkey.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey.py\", \n  \"cloud/digital_ocean/digital_ocean_sshkey_facts\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey_facts.py\", \n  \"cloud/digital_ocean/digital_ocean_sshkey_facts.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey_facts.py\", \n  \"cloud/digital_ocean/digital_ocean_tag\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_tag.py\", \n  \"cloud/digital_ocean/digital_ocean_tag.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_tag.py\", \n  \"cloud/dimensiondata/dimensiondata_network\": \"lib/ansible/modules/cloud/dimensiondata/dimensiondata_network.py\", \n  \"cloud/dimensiondata/dimensiondata_network.py\": \"lib/ansible/modules/cloud/dimensiondata/dimensiondata_network.py\", \n  \"cloud/docker/_docker\": \"lib/ansible/modules/cloud/docker/_docker.py\", \n  \"cloud/docker/_docker.py\": \"lib/ansible/modules/cloud/docker/_docker.py\", \n  \"cloud/docker/docker\": \"lib/ansible/modules/cloud/docker/_docker.py\", \n  \"cloud/docker/docker.py\": \"lib/ansible/modules/cloud/docker/_docker.py\", \n  \"cloud/docker/docker_container\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n  \"cloud/docker/docker_container.py\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n  \"cloud/docker/docker_image\": \"lib/ansible/modules/cloud/docker/docker_image.py\", \n  \"cloud/docker/docker_image.py\": \"lib/ansible/modules/cloud/docker/docker_image.py\", \n  \"cloud/docker/docker_image_facts\": \"lib/ansible/modules/cloud/docker/docker_image_facts.py\", \n  \"cloud/docker/docker_image_facts.py\": \"lib/ansible/modules/cloud/docker/docker_image_facts.py\", \n  \"cloud/docker/docker_login\": \"lib/ansible/modules/cloud/docker/docker_login.py\", \n  \"cloud/docker/docker_login.py\": \"lib/ansible/modules/cloud/docker/docker_login.py\", \n  \"cloud/docker/docker_network\": \"lib/ansible/modules/cloud/docker/docker_network.py\", \n  \"cloud/docker/docker_network.py\": \"lib/ansible/modules/cloud/docker/docker_network.py\", \n  \"cloud/docker/docker_secret\": \"lib/ansible/modules/cloud/docker/docker_secret.py\", \n  \"cloud/docker/docker_secret.py\": \"lib/ansible/modules/cloud/docker/docker_secret.py\", \n  \"cloud/docker/docker_service\": \"lib/ansible/modules/cloud/docker/docker_service.py\", \n  \"cloud/docker/docker_service.py\": \"lib/ansible/modules/cloud/docker/docker_service.py\", \n  \"cloud/docker/docker_volume\": \"lib/ansible/modules/cloud/docker/docker_volume.py\", \n  \"cloud/docker/docker_volume.py\": \"lib/ansible/modules/cloud/docker/docker_volume.py\", \n  \"cloud/docker_container\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"cloud/google/gc_storage\": \"lib/ansible/modules/cloud/google/gc_storage.py\", \n  \"cloud/google/gc_storage.py\": \"lib/ansible/modules/cloud/google/gc_storage.py\", \n  \"cloud/google/gcdns_record\": \"lib/ansible/modules/cloud/google/gcdns_record.py\", \n  \"cloud/google/gcdns_record.py\": \"lib/ansible/modules/cloud/google/gcdns_record.py\", \n  \"cloud/google/gcdns_zone\": \"lib/ansible/modules/cloud/google/gcdns_zone.py\", \n  \"cloud/google/gcdns_zone.py\": \"lib/ansible/modules/cloud/google/gcdns_zone.py\", \n  \"cloud/google/gce\": \"lib/ansible/modules/cloud/google/gce.py\", \n  \"cloud/google/gce.py\": \"lib/ansible/modules/cloud/google/gce.py\", \n  \"cloud/google/gce_eip\": \"lib/ansible/modules/cloud/google/gce_eip.py\", \n  \"cloud/google/gce_eip.py\": \"lib/ansible/modules/cloud/google/gce_eip.py\", \n  \"cloud/google/gce_img\": \"lib/ansible/modules/cloud/google/gce_img.py\", \n  \"cloud/google/gce_img.py\": \"lib/ansible/modules/cloud/google/gce_img.py\", \n  \"cloud/google/gce_instance_template\": \"lib/ansible/modules/cloud/google/gce_instance_template.py\", \n  \"cloud/google/gce_instance_template.py\": \"lib/ansible/modules/cloud/google/gce_instance_template.py\", \n  \"cloud/google/gce_labels\": \"lib/ansible/modules/cloud/google/gce_labels.py\", \n  \"cloud/google/gce_labels.py\": \"lib/ansible/modules/cloud/google/gce_labels.py\", \n  \"cloud/google/gce_lb\": \"lib/ansible/modules/cloud/google/gce_lb.py\", \n  \"cloud/google/gce_lb.py\": \"lib/ansible/modules/cloud/google/gce_lb.py\", \n  \"cloud/google/gce_mig\": \"lib/ansible/modules/cloud/google/gce_mig.py\", \n  \"cloud/google/gce_mig.py\": \"lib/ansible/modules/cloud/google/gce_mig.py\", \n  \"cloud/google/gce_net\": \"lib/ansible/modules/cloud/google/gce_net.py\", \n  \"cloud/google/gce_net.py\": \"lib/ansible/modules/cloud/google/gce_net.py\", \n  \"cloud/google/gce_pd\": \"lib/ansible/modules/cloud/google/gce_pd.py\", \n  \"cloud/google/gce_pd.py\": \"lib/ansible/modules/cloud/google/gce_pd.py\", \n  \"cloud/google/gce_snapshot\": \"lib/ansible/modules/cloud/google/gce_snapshot.py\", \n  \"cloud/google/gce_snapshot.py\": \"lib/ansible/modules/cloud/google/gce_snapshot.py\", \n  \"cloud/google/gce_tag\": \"lib/ansible/modules/cloud/google/gce_tag.py\", \n  \"cloud/google/gce_tag.py\": \"lib/ansible/modules/cloud/google/gce_tag.py\", \n  \"cloud/google/gcp_backend_service\": \"lib/ansible/modules/cloud/google/gcp_backend_service.py\", \n  \"cloud/google/gcp_backend_service.py\": \"lib/ansible/modules/cloud/google/gcp_backend_service.py\", \n  \"cloud/google/gcp_forwarding_rule\": \"lib/ansible/modules/cloud/google/gcp_forwarding_rule.py\", \n  \"cloud/google/gcp_forwarding_rule.py\": \"lib/ansible/modules/cloud/google/gcp_forwarding_rule.py\", \n  \"cloud/google/gcp_healthcheck\": \"lib/ansible/modules/cloud/google/gcp_healthcheck.py\", \n  \"cloud/google/gcp_healthcheck.py\": \"lib/ansible/modules/cloud/google/gcp_healthcheck.py\", \n  \"cloud/google/gcp_target_proxy\": \"lib/ansible/modules/cloud/google/gcp_target_proxy.py\", \n  \"cloud/google/gcp_target_proxy.py\": \"lib/ansible/modules/cloud/google/gcp_target_proxy.py\", \n  \"cloud/google/gcp_url_map\": \"lib/ansible/modules/cloud/google/gcp_url_map.py\", \n  \"cloud/google/gcp_url_map.py\": \"lib/ansible/modules/cloud/google/gcp_url_map.py\", \n  \"cloud/google/gcpubsub\": \"lib/ansible/modules/cloud/google/gcpubsub.py\", \n  \"cloud/google/gcpubsub.py\": \"lib/ansible/modules/cloud/google/gcpubsub.py\", \n  \"cloud/google/gcpubsub_facts\": \"lib/ansible/modules/cloud/google/gcpubsub_facts.py\", \n  \"cloud/google/gcpubsub_facts.py\": \"lib/ansible/modules/cloud/google/gcpubsub_facts.py\", \n  \"cloud/google/gcspanner\": \"lib/ansible/modules/cloud/google/gcspanner.py\", \n  \"cloud/google/gcspanner.py\": \"lib/ansible/modules/cloud/google/gcspanner.py\", \n  \"cloud/linode/linode\": \"lib/ansible/modules/cloud/linode/linode.py\", \n  \"cloud/linode/linode.py\": \"lib/ansible/modules/cloud/linode/linode.py\", \n  \"cloud/lxc/lxc_container\": \"lib/ansible/modules/cloud/lxc/lxc_container.py\", \n  \"cloud/lxc/lxc_container.py\": [\n    \"lib/ansible/modules/cloud/lxc/lxc_container.py\"\n  ], \n  \"cloud/lxd/lxd_container\": \"lib/ansible/modules/cloud/lxd/lxd_container.py\", \n  \"cloud/lxd/lxd_container.py\": \"lib/ansible/modules/cloud/lxd/lxd_container.py\", \n  \"cloud/lxd/lxd_profile\": \"lib/ansible/modules/cloud/lxd/lxd_profile.py\", \n  \"cloud/lxd/lxd_profile.py\": \"lib/ansible/modules/cloud/lxd/lxd_profile.py\", \n  \"cloud/misc/helm\": \"lib/ansible/modules/cloud/misc/helm.py\", \n  \"cloud/misc/helm.py\": \"lib/ansible/modules/cloud/misc/helm.py\", \n  \"cloud/misc/ovirt\": \"lib/ansible/modules/cloud/misc/ovirt.py\", \n  \"cloud/misc/ovirt.py\": \"lib/ansible/modules/cloud/misc/ovirt.py\", \n  \"cloud/misc/ovirt.py\\ncloud/misc/rhevm.py (new in 2.2)\\ncloud/ovirt/ovirt_vms.py (new in 2.2)\": [\n    \"lib/ansible/modules/cloud/misc/ovirt.py\"\n  ], \n  \"cloud/misc/proxmox\": \"lib/ansible/modules/cloud/misc/proxmox.py\", \n  \"cloud/misc/proxmox.py\": \"lib/ansible/modules/cloud/misc/proxmox.py\", \n  \"cloud/misc/proxmox_kvm\": \"lib/ansible/modules/cloud/misc/proxmox_kvm.py\", \n  \"cloud/misc/proxmox_kvm.py\": \"lib/ansible/modules/cloud/misc/proxmox_kvm.py\", \n  \"cloud/misc/proxmox_template\": \"lib/ansible/modules/cloud/misc/proxmox_template.py\", \n  \"cloud/misc/proxmox_template.py\": \"lib/ansible/modules/cloud/misc/proxmox_template.py\", \n  \"cloud/misc/rhevm\": \"lib/ansible/modules/cloud/misc/rhevm.py\", \n  \"cloud/misc/rhevm.py\": \"lib/ansible/modules/cloud/misc/rhevm.py\", \n  \"cloud/misc/serverless\": \"lib/ansible/modules/cloud/misc/serverless.py\", \n  \"cloud/misc/serverless.py\": \"lib/ansible/modules/cloud/misc/serverless.py\", \n  \"cloud/misc/virt\": \"lib/ansible/modules/cloud/misc/virt.py\", \n  \"cloud/misc/virt.py\": [\n    \"lib/ansible/modules/cloud/misc/virt.py\"\n  ], \n  \"cloud/misc/virt_net\": \"lib/ansible/modules/cloud/misc/virt_net.py\", \n  \"cloud/misc/virt_net.py\": \"lib/ansible/modules/cloud/misc/virt_net.py\", \n  \"cloud/misc/virt_pool\": \"lib/ansible/modules/cloud/misc/virt_pool.py\", \n  \"cloud/misc/virt_pool.py\": \"lib/ansible/modules/cloud/misc/virt_pool.py\", \n  \"cloud/misc/xenserver_facts\": \"lib/ansible/modules/cloud/misc/xenserver_facts.py\", \n  \"cloud/misc/xenserver_facts.py\": \"lib/ansible/modules/cloud/misc/xenserver_facts.py\", \n  \"cloud/openstack/README.md\": \"lib/ansible/modules/cloud/openstack/README.md\", \n  \"cloud/openstack/_os_server_actions\": \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n  \"cloud/openstack/_os_server_actions.py\": \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n  \"cloud/openstack/os_auth\": \"lib/ansible/modules/cloud/openstack/os_auth.py\", \n  \"cloud/openstack/os_auth.py\": \"lib/ansible/modules/cloud/openstack/os_auth.py\", \n  \"cloud/openstack/os_client_config\": \"lib/ansible/modules/cloud/openstack/os_client_config.py\", \n  \"cloud/openstack/os_client_config.py\": \"lib/ansible/modules/cloud/openstack/os_client_config.py\", \n  \"cloud/openstack/os_flavor_facts\": \"lib/ansible/modules/cloud/openstack/os_flavor_facts.py\", \n  \"cloud/openstack/os_flavor_facts.py\": \"lib/ansible/modules/cloud/openstack/os_flavor_facts.py\", \n  \"cloud/openstack/os_floating_ip\": \"lib/ansible/modules/cloud/openstack/os_floating_ip.py\", \n  \"cloud/openstack/os_floating_ip.py\": \"lib/ansible/modules/cloud/openstack/os_floating_ip.py\", \n  \"cloud/openstack/os_group\": \"lib/ansible/modules/cloud/openstack/os_group.py\", \n  \"cloud/openstack/os_group.py\": \"lib/ansible/modules/cloud/openstack/os_group.py\", \n  \"cloud/openstack/os_image\": \"lib/ansible/modules/cloud/openstack/os_image.py\", \n  \"cloud/openstack/os_image.py\": \"lib/ansible/modules/cloud/openstack/os_image.py\", \n  \"cloud/openstack/os_image_facts\": \"lib/ansible/modules/cloud/openstack/os_image_facts.py\", \n  \"cloud/openstack/os_image_facts.py\": \"lib/ansible/modules/cloud/openstack/os_image_facts.py\", \n  \"cloud/openstack/os_ironic\": \"lib/ansible/modules/cloud/openstack/os_ironic.py\", \n  \"cloud/openstack/os_ironic.py\": \"lib/ansible/modules/cloud/openstack/os_ironic.py\", \n  \"cloud/openstack/os_ironic_inspect\": \"lib/ansible/modules/cloud/openstack/os_ironic_inspect.py\", \n  \"cloud/openstack/os_ironic_inspect.py\": \"lib/ansible/modules/cloud/openstack/os_ironic_inspect.py\", \n  \"cloud/openstack/os_ironic_node\": \"lib/ansible/modules/cloud/openstack/os_ironic_node.py\", \n  \"cloud/openstack/os_ironic_node.py\": \"lib/ansible/modules/cloud/openstack/os_ironic_node.py\", \n  \"cloud/openstack/os_keypair\": \"lib/ansible/modules/cloud/openstack/os_keypair.py\", \n  \"cloud/openstack/os_keypair.py\": \"lib/ansible/modules/cloud/openstack/os_keypair.py\", \n  \"cloud/openstack/os_keystone_domain\": \"lib/ansible/modules/cloud/openstack/os_keystone_domain.py\", \n  \"cloud/openstack/os_keystone_domain.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_domain.py\", \n  \"cloud/openstack/os_keystone_domain_facts\": \"lib/ansible/modules/cloud/openstack/os_keystone_domain_facts.py\", \n  \"cloud/openstack/os_keystone_domain_facts.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_domain_facts.py\", \n  \"cloud/openstack/os_keystone_endpoint\": \"lib/ansible/modules/cloud/openstack/os_keystone_endpoint.py\", \n  \"cloud/openstack/os_keystone_endpoint.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_endpoint.py\", \n  \"cloud/openstack/os_keystone_role\": \"lib/ansible/modules/cloud/openstack/os_keystone_role.py\", \n  \"cloud/openstack/os_keystone_role.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_role.py\", \n  \"cloud/openstack/os_keystone_service\": \"lib/ansible/modules/cloud/openstack/os_keystone_service.py\", \n  \"cloud/openstack/os_keystone_service.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_service.py\", \n  \"cloud/openstack/os_network\": \"lib/ansible/modules/cloud/openstack/os_network.py\", \n  \"cloud/openstack/os_network.py\": \"lib/ansible/modules/cloud/openstack/os_network.py\", \n  \"cloud/openstack/os_networks_facts\": \"lib/ansible/modules/cloud/openstack/os_networks_facts.py\", \n  \"cloud/openstack/os_networks_facts.py\": \"lib/ansible/modules/cloud/openstack/os_networks_facts.py\", \n  \"cloud/openstack/os_nova_flavor\": \"lib/ansible/modules/cloud/openstack/os_nova_flavor.py\", \n  \"cloud/openstack/os_nova_flavor.py\": \"lib/ansible/modules/cloud/openstack/os_nova_flavor.py\", \n  \"cloud/openstack/os_nova_host_aggregate\": \"lib/ansible/modules/cloud/openstack/os_nova_host_aggregate.py\", \n  \"cloud/openstack/os_nova_host_aggregate.py\": \"lib/ansible/modules/cloud/openstack/os_nova_host_aggregate.py\", \n  \"cloud/openstack/os_object\": \"lib/ansible/modules/cloud/openstack/os_object.py\", \n  \"cloud/openstack/os_object.py\": \"lib/ansible/modules/cloud/openstack/os_object.py\", \n  \"cloud/openstack/os_port\": \"lib/ansible/modules/cloud/openstack/os_port.py\", \n  \"cloud/openstack/os_port.py\": \"lib/ansible/modules/cloud/openstack/os_port.py\", \n  \"cloud/openstack/os_port_facts\": \"lib/ansible/modules/cloud/openstack/os_port_facts.py\", \n  \"cloud/openstack/os_port_facts.py\": \"lib/ansible/modules/cloud/openstack/os_port_facts.py\", \n  \"cloud/openstack/os_project\": \"lib/ansible/modules/cloud/openstack/os_project.py\", \n  \"cloud/openstack/os_project.py\": \"lib/ansible/modules/cloud/openstack/os_project.py\", \n  \"cloud/openstack/os_project_facts\": \"lib/ansible/modules/cloud/openstack/os_project_facts.py\", \n  \"cloud/openstack/os_project_facts.py\": \"lib/ansible/modules/cloud/openstack/os_project_facts.py\", \n  \"cloud/openstack/os_quota\": \"lib/ansible/modules/cloud/openstack/os_quota.py\", \n  \"cloud/openstack/os_quota.py\": \"lib/ansible/modules/cloud/openstack/os_quota.py\", \n  \"cloud/openstack/os_recordset\": \"lib/ansible/modules/cloud/openstack/os_recordset.py\", \n  \"cloud/openstack/os_recordset.py\": \"lib/ansible/modules/cloud/openstack/os_recordset.py\", \n  \"cloud/openstack/os_router\": \"lib/ansible/modules/cloud/openstack/os_router.py\", \n  \"cloud/openstack/os_router.py\": \"lib/ansible/modules/cloud/openstack/os_router.py\", \n  \"cloud/openstack/os_security_group\": \"lib/ansible/modules/cloud/openstack/os_security_group.py\", \n  \"cloud/openstack/os_security_group.py\": \"lib/ansible/modules/cloud/openstack/os_security_group.py\", \n  \"cloud/openstack/os_security_group_rule\": \"lib/ansible/modules/cloud/openstack/os_security_group_rule.py\", \n  \"cloud/openstack/os_security_group_rule.py\": \"lib/ansible/modules/cloud/openstack/os_security_group_rule.py\", \n  \"cloud/openstack/os_server\": \"lib/ansible/modules/cloud/openstack/os_server.py\", \n  \"cloud/openstack/os_server.py\": [\n    \"lib/ansible/modules/cloud/openstack/os_server.py\"\n  ], \n  \"cloud/openstack/os_server_action\": \"lib/ansible/modules/cloud/openstack/os_server_action.py\", \n  \"cloud/openstack/os_server_action.py\": \"lib/ansible/modules/cloud/openstack/os_server_action.py\", \n  \"cloud/openstack/os_server_actions\": \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n  \"cloud/openstack/os_server_actions.py\": \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n  \"cloud/openstack/os_server_facts\": \"lib/ansible/modules/cloud/openstack/os_server_facts.py\", \n  \"cloud/openstack/os_server_facts.py\": \"lib/ansible/modules/cloud/openstack/os_server_facts.py\", \n  \"cloud/openstack/os_server_group\": \"lib/ansible/modules/cloud/openstack/os_server_group.py\", \n  \"cloud/openstack/os_server_group.py\": \"lib/ansible/modules/cloud/openstack/os_server_group.py\", \n  \"cloud/openstack/os_server_volume\": \"lib/ansible/modules/cloud/openstack/os_server_volume.py\", \n  \"cloud/openstack/os_server_volume.py\": \"lib/ansible/modules/cloud/openstack/os_server_volume.py\", \n  \"cloud/openstack/os_stack\": \"lib/ansible/modules/cloud/openstack/os_stack.py\", \n  \"cloud/openstack/os_stack.py\": \"lib/ansible/modules/cloud/openstack/os_stack.py\", \n  \"cloud/openstack/os_subnet\": \"lib/ansible/modules/cloud/openstack/os_subnet.py\", \n  \"cloud/openstack/os_subnet.py\": \"lib/ansible/modules/cloud/openstack/os_subnet.py\", \n  \"cloud/openstack/os_subnets_facts\": \"lib/ansible/modules/cloud/openstack/os_subnets_facts.py\", \n  \"cloud/openstack/os_subnets_facts.py\": \"lib/ansible/modules/cloud/openstack/os_subnets_facts.py\", \n  \"cloud/openstack/os_user\": \"lib/ansible/modules/cloud/openstack/os_user.py\", \n  \"cloud/openstack/os_user.py\": \"lib/ansible/modules/cloud/openstack/os_user.py\", \n  \"cloud/openstack/os_user_facts\": \"lib/ansible/modules/cloud/openstack/os_user_facts.py\", \n  \"cloud/openstack/os_user_facts.py\": \"lib/ansible/modules/cloud/openstack/os_user_facts.py\", \n  \"cloud/openstack/os_user_group\": \"lib/ansible/modules/cloud/openstack/os_user_group.py\", \n  \"cloud/openstack/os_user_group.py\": \"lib/ansible/modules/cloud/openstack/os_user_group.py\", \n  \"cloud/openstack/os_user_role\": \"lib/ansible/modules/cloud/openstack/os_user_role.py\", \n  \"cloud/openstack/os_user_role.py\": \"lib/ansible/modules/cloud/openstack/os_user_role.py\", \n  \"cloud/openstack/os_volume\": \"lib/ansible/modules/cloud/openstack/os_volume.py\", \n  \"cloud/openstack/os_volume.py\": \"lib/ansible/modules/cloud/openstack/os_volume.py\", \n  \"cloud/openstack/os_zone\": \"lib/ansible/modules/cloud/openstack/os_zone.py\", \n  \"cloud/openstack/os_zone.py\": \"lib/ansible/modules/cloud/openstack/os_zone.py\", \n  \"cloud/ovh/ovh_ip_loadbalancing_backend\": \"lib/ansible/modules/cloud/ovh/ovh_ip_loadbalancing_backend.py\", \n  \"cloud/ovh/ovh_ip_loadbalancing_backend.py\": \"lib/ansible/modules/cloud/ovh/ovh_ip_loadbalancing_backend.py\", \n  \"cloud/ovirt/README.rst\": \"lib/ansible/modules/cloud/ovirt/README.rst\", \n  \"cloud/ovirt/_ovirt_affinity_groups\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\", \n  \"cloud/ovirt/_ovirt_affinity_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\", \n  \"cloud/ovirt/_ovirt_affinity_labels\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\", \n  \"cloud/ovirt/_ovirt_affinity_labels.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\", \n  \"cloud/ovirt/_ovirt_affinity_labels_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\", \n  \"cloud/ovirt/_ovirt_affinity_labels_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\", \n  \"cloud/ovirt/_ovirt_clusters\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\", \n  \"cloud/ovirt/_ovirt_clusters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\", \n  \"cloud/ovirt/_ovirt_clusters_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\", \n  \"cloud/ovirt/_ovirt_clusters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\", \n  \"cloud/ovirt/_ovirt_datacenters\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\", \n  \"cloud/ovirt/_ovirt_datacenters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\", \n  \"cloud/ovirt/_ovirt_datacenters_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\", \n  \"cloud/ovirt/_ovirt_datacenters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\", \n  \"cloud/ovirt/_ovirt_disks\": \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\", \n  \"cloud/ovirt/_ovirt_disks.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\", \n  \"cloud/ovirt/_ovirt_external_providers\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\", \n  \"cloud/ovirt/_ovirt_external_providers.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\", \n  \"cloud/ovirt/_ovirt_external_providers_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\", \n  \"cloud/ovirt/_ovirt_external_providers_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\", \n  \"cloud/ovirt/_ovirt_groups\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\", \n  \"cloud/ovirt/_ovirt_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\", \n  \"cloud/ovirt/_ovirt_groups_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\", \n  \"cloud/ovirt/_ovirt_groups_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\", \n  \"cloud/ovirt/ovirt_affinity_group\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_group.py\", \n  \"cloud/ovirt/ovirt_affinity_group.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_group.py\", \n  \"cloud/ovirt/ovirt_affinity_groups\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\", \n  \"cloud/ovirt/ovirt_affinity_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\", \n  \"cloud/ovirt/ovirt_affinity_label\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_label.py\", \n  \"cloud/ovirt/ovirt_affinity_label.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_label.py\", \n  \"cloud/ovirt/ovirt_affinity_label_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_label_facts.py\", \n  \"cloud/ovirt/ovirt_affinity_label_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_label_facts.py\", \n  \"cloud/ovirt/ovirt_affinity_labels\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\", \n  \"cloud/ovirt/ovirt_affinity_labels.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\", \n  \"cloud/ovirt/ovirt_affinity_labels_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\", \n  \"cloud/ovirt/ovirt_affinity_labels_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\", \n  \"cloud/ovirt/ovirt_api_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_api_facts.py\", \n  \"cloud/ovirt/ovirt_api_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_api_facts.py\", \n  \"cloud/ovirt/ovirt_auth\": \"lib/ansible/modules/cloud/ovirt/ovirt_auth.py\", \n  \"cloud/ovirt/ovirt_auth.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_auth.py\", \n  \"cloud/ovirt/ovirt_cluster\": \"lib/ansible/modules/cloud/ovirt/ovirt_cluster.py\", \n  \"cloud/ovirt/ovirt_cluster.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_cluster.py\", \n  \"cloud/ovirt/ovirt_cluster_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_cluster_facts.py\", \n  \"cloud/ovirt/ovirt_cluster_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_cluster_facts.py\", \n  \"cloud/ovirt/ovirt_clusters\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\", \n  \"cloud/ovirt/ovirt_clusters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\", \n  \"cloud/ovirt/ovirt_clusters_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\", \n  \"cloud/ovirt/ovirt_clusters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\", \n  \"cloud/ovirt/ovirt_datacenter\": \"lib/ansible/modules/cloud/ovirt/ovirt_datacenter.py\", \n  \"cloud/ovirt/ovirt_datacenter.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_datacenter.py\", \n  \"cloud/ovirt/ovirt_datacenter_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_datacenter_facts.py\", \n  \"cloud/ovirt/ovirt_datacenter_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_datacenter_facts.py\", \n  \"cloud/ovirt/ovirt_datacenters\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\", \n  \"cloud/ovirt/ovirt_datacenters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\", \n  \"cloud/ovirt/ovirt_datacenters_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\", \n  \"cloud/ovirt/ovirt_datacenters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\", \n  \"cloud/ovirt/ovirt_disk\": \"lib/ansible/modules/cloud/ovirt/ovirt_disk.py\", \n  \"cloud/ovirt/ovirt_disk.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_disk.py\", \n  \"cloud/ovirt/ovirt_disk_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_disk_facts.py\", \n  \"cloud/ovirt/ovirt_disk_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_disk_facts.py\", \n  \"cloud/ovirt/ovirt_disks\": \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\", \n  \"cloud/ovirt/ovirt_disks.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\", \n  \"cloud/ovirt/ovirt_external_provider\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_provider.py\", \n  \"cloud/ovirt/ovirt_external_provider.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_provider.py\", \n  \"cloud/ovirt/ovirt_external_provider_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_provider_facts.py\", \n  \"cloud/ovirt/ovirt_external_provider_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_provider_facts.py\", \n  \"cloud/ovirt/ovirt_external_providers\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\", \n  \"cloud/ovirt/ovirt_external_providers.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\", \n  \"cloud/ovirt/ovirt_external_providers_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\", \n  \"cloud/ovirt/ovirt_external_providers_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\", \n  \"cloud/ovirt/ovirt_group\": \"lib/ansible/modules/cloud/ovirt/ovirt_group.py\", \n  \"cloud/ovirt/ovirt_group.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_group.py\", \n  \"cloud/ovirt/ovirt_group_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_group_facts.py\", \n  \"cloud/ovirt/ovirt_group_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_group_facts.py\", \n  \"cloud/ovirt/ovirt_groups\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\", \n  \"cloud/ovirt/ovirt_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\", \n  \"cloud/ovirt/ovirt_groups_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\", \n  \"cloud/ovirt/ovirt_groups_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\", \n  \"cloud/ovirt/ovirt_host_networks\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_networks.py\", \n  \"cloud/ovirt/ovirt_host_networks.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_networks.py\", \n  \"cloud/ovirt/ovirt_host_pm\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_pm.py\", \n  \"cloud/ovirt/ovirt_host_pm.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_pm.py\", \n  \"cloud/ovirt/ovirt_host_storage_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_storage_facts.py\", \n  \"cloud/ovirt/ovirt_host_storage_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_storage_facts.py\", \n  \"cloud/ovirt/ovirt_hosts\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts.py\", \n  \"cloud/ovirt/ovirt_hosts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts.py\", \n  \"cloud/ovirt/ovirt_hosts_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts_facts.py\", \n  \"cloud/ovirt/ovirt_hosts_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts_facts.py\", \n  \"cloud/ovirt/ovirt_mac_pools\": \"lib/ansible/modules/cloud/ovirt/ovirt_mac_pools.py\", \n  \"cloud/ovirt/ovirt_mac_pools.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_mac_pools.py\", \n  \"cloud/ovirt/ovirt_networks\": \"lib/ansible/modules/cloud/ovirt/ovirt_networks.py\", \n  \"cloud/ovirt/ovirt_networks.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_networks.py\", \n  \"cloud/ovirt/ovirt_networks_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_networks_facts.py\", \n  \"cloud/ovirt/ovirt_networks_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_networks_facts.py\", \n  \"cloud/ovirt/ovirt_nics\": \"lib/ansible/modules/cloud/ovirt/ovirt_nics.py\", \n  \"cloud/ovirt/ovirt_nics.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_nics.py\", \n  \"cloud/ovirt/ovirt_nics_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_nics_facts.py\", \n  \"cloud/ovirt/ovirt_nics_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_nics_facts.py\", \n  \"cloud/ovirt/ovirt_permissions\": \"lib/ansible/modules/cloud/ovirt/ovirt_permissions.py\", \n  \"cloud/ovirt/ovirt_permissions.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_permissions.py\", \n  \"cloud/ovirt/ovirt_permissions_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_permissions_facts.py\", \n  \"cloud/ovirt/ovirt_permissions_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_permissions_facts.py\", \n  \"cloud/ovirt/ovirt_quotas\": \"lib/ansible/modules/cloud/ovirt/ovirt_quotas.py\", \n  \"cloud/ovirt/ovirt_quotas.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_quotas.py\", \n  \"cloud/ovirt/ovirt_quotas_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_quotas_facts.py\", \n  \"cloud/ovirt/ovirt_quotas_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_quotas_facts.py\", \n  \"cloud/ovirt/ovirt_scheduling_policies_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_scheduling_policies_facts.py\", \n  \"cloud/ovirt/ovirt_scheduling_policies_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_scheduling_policies_facts.py\", \n  \"cloud/ovirt/ovirt_snapshots\": \"lib/ansible/modules/cloud/ovirt/ovirt_snapshots.py\", \n  \"cloud/ovirt/ovirt_snapshots.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_snapshots.py\", \n  \"cloud/ovirt/ovirt_snapshots_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_snapshots_facts.py\", \n  \"cloud/ovirt/ovirt_snapshots_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_snapshots_facts.py\", \n  \"cloud/ovirt/ovirt_storage_connections\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_connections.py\", \n  \"cloud/ovirt/ovirt_storage_connections.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_connections.py\", \n  \"cloud/ovirt/ovirt_storage_domains\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains.py\", \n  \"cloud/ovirt/ovirt_storage_domains.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains.py\", \n  \"cloud/ovirt/ovirt_storage_domains_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains_facts.py\", \n  \"cloud/ovirt/ovirt_storage_domains_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains_facts.py\", \n  \"cloud/ovirt/ovirt_storage_templates_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_templates_facts.py\", \n  \"cloud/ovirt/ovirt_storage_templates_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_templates_facts.py\", \n  \"cloud/ovirt/ovirt_storage_vms_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_vms_facts.py\", \n  \"cloud/ovirt/ovirt_storage_vms_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_vms_facts.py\", \n  \"cloud/ovirt/ovirt_tags\": \"lib/ansible/modules/cloud/ovirt/ovirt_tags.py\", \n  \"cloud/ovirt/ovirt_tags.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_tags.py\", \n  \"cloud/ovirt/ovirt_tags_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_tags_facts.py\", \n  \"cloud/ovirt/ovirt_tags_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_tags_facts.py\", \n  \"cloud/ovirt/ovirt_templates\": \"lib/ansible/modules/cloud/ovirt/ovirt_templates.py\", \n  \"cloud/ovirt/ovirt_templates.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_templates.py\", \n  \"cloud/ovirt/ovirt_templates_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_templates_facts.py\", \n  \"cloud/ovirt/ovirt_templates_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_templates_facts.py\", \n  \"cloud/ovirt/ovirt_users\": \"lib/ansible/modules/cloud/ovirt/ovirt_users.py\", \n  \"cloud/ovirt/ovirt_users.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_users.py\", \n  \"cloud/ovirt/ovirt_users_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_users_facts.py\", \n  \"cloud/ovirt/ovirt_users_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_users_facts.py\", \n  \"cloud/ovirt/ovirt_vmpools\": \"lib/ansible/modules/cloud/ovirt/ovirt_vmpools.py\", \n  \"cloud/ovirt/ovirt_vmpools.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vmpools.py\", \n  \"cloud/ovirt/ovirt_vmpools_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_vmpools_facts.py\", \n  \"cloud/ovirt/ovirt_vmpools_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vmpools_facts.py\", \n  \"cloud/ovirt/ovirt_vms\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms.py\", \n  \"cloud/ovirt/ovirt_vms.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms.py\", \n  \"cloud/ovirt/ovirt_vms_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms_facts.py\", \n  \"cloud/ovirt/ovirt_vms_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms_facts.py\", \n  \"cloud/packet/packet_device\": \"lib/ansible/modules/cloud/packet/packet_device.py\", \n  \"cloud/packet/packet_device.py\": \"lib/ansible/modules/cloud/packet/packet_device.py\", \n  \"cloud/packet/packet_sshkey\": \"lib/ansible/modules/cloud/packet/packet_sshkey.py\", \n  \"cloud/packet/packet_sshkey.py\": \"lib/ansible/modules/cloud/packet/packet_sshkey.py\", \n  \"cloud/profitbricks\": [\n    \"lib/ansible/modules/cloud/profitbricks\"\n  ], \n  \"cloud/profitbricks/profitbricks\": \"lib/ansible/modules/cloud/profitbricks/profitbricks.py\", \n  \"cloud/profitbricks/profitbricks.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks.py\", \n  \"cloud/profitbricks/profitbricks_datacenter\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_datacenter.py\", \n  \"cloud/profitbricks/profitbricks_datacenter.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_datacenter.py\", \n  \"cloud/profitbricks/profitbricks_nic\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_nic.py\", \n  \"cloud/profitbricks/profitbricks_nic.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_nic.py\", \n  \"cloud/profitbricks/profitbricks_volume\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume.py\", \n  \"cloud/profitbricks/profitbricks_volume.py\": [\n    \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume.py\"\n  ], \n  \"cloud/profitbricks/profitbricks_volume_attachments\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume_attachments.py\", \n  \"cloud/profitbricks/profitbricks_volume_attachments.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume_attachments.py\", \n  \"cloud/pubnub/pubnub_blocks\": \"lib/ansible/modules/cloud/pubnub/pubnub_blocks.py\", \n  \"cloud/pubnub/pubnub_blocks.py\": \"lib/ansible/modules/cloud/pubnub/pubnub_blocks.py\", \n  \"cloud/rackspace/rax\": \"lib/ansible/modules/cloud/rackspace/rax.py\", \n  \"cloud/rackspace/rax.py\": \"lib/ansible/modules/cloud/rackspace/rax.py\", \n  \"cloud/rackspace/rax_cbs\": \"lib/ansible/modules/cloud/rackspace/rax_cbs.py\", \n  \"cloud/rackspace/rax_cbs.py\": \"lib/ansible/modules/cloud/rackspace/rax_cbs.py\", \n  \"cloud/rackspace/rax_cbs_attachments\": \"lib/ansible/modules/cloud/rackspace/rax_cbs_attachments.py\", \n  \"cloud/rackspace/rax_cbs_attachments.py\": \"lib/ansible/modules/cloud/rackspace/rax_cbs_attachments.py\", \n  \"cloud/rackspace/rax_cdb\": \"lib/ansible/modules/cloud/rackspace/rax_cdb.py\", \n  \"cloud/rackspace/rax_cdb.py\": \"lib/ansible/modules/cloud/rackspace/rax_cdb.py\", \n  \"cloud/rackspace/rax_cdb_database\": \"lib/ansible/modules/cloud/rackspace/rax_cdb_database.py\", \n  \"cloud/rackspace/rax_cdb_database.py\": \"lib/ansible/modules/cloud/rackspace/rax_cdb_database.py\", \n  \"cloud/rackspace/rax_cdb_user\": \"lib/ansible/modules/cloud/rackspace/rax_cdb_user.py\", \n  \"cloud/rackspace/rax_cdb_user.py\": \"lib/ansible/modules/cloud/rackspace/rax_cdb_user.py\", \n  \"cloud/rackspace/rax_clb\": \"lib/ansible/modules/cloud/rackspace/rax_clb.py\", \n  \"cloud/rackspace/rax_clb.py\": \"lib/ansible/modules/cloud/rackspace/rax_clb.py\", \n  \"cloud/rackspace/rax_clb_nodes\": \"lib/ansible/modules/cloud/rackspace/rax_clb_nodes.py\", \n  \"cloud/rackspace/rax_clb_nodes.py\": \"lib/ansible/modules/cloud/rackspace/rax_clb_nodes.py\", \n  \"cloud/rackspace/rax_clb_ssl\": \"lib/ansible/modules/cloud/rackspace/rax_clb_ssl.py\", \n  \"cloud/rackspace/rax_clb_ssl.py\": \"lib/ansible/modules/cloud/rackspace/rax_clb_ssl.py\", \n  \"cloud/rackspace/rax_dns\": \"lib/ansible/modules/cloud/rackspace/rax_dns.py\", \n  \"cloud/rackspace/rax_dns.py\": \"lib/ansible/modules/cloud/rackspace/rax_dns.py\", \n  \"cloud/rackspace/rax_dns_record\": \"lib/ansible/modules/cloud/rackspace/rax_dns_record.py\", \n  \"cloud/rackspace/rax_dns_record.py\": \"lib/ansible/modules/cloud/rackspace/rax_dns_record.py\", \n  \"cloud/rackspace/rax_facts\": \"lib/ansible/modules/cloud/rackspace/rax_facts.py\", \n  \"cloud/rackspace/rax_facts.py\": \"lib/ansible/modules/cloud/rackspace/rax_facts.py\", \n  \"cloud/rackspace/rax_files\": \"lib/ansible/modules/cloud/rackspace/rax_files.py\", \n  \"cloud/rackspace/rax_files.py\": \"lib/ansible/modules/cloud/rackspace/rax_files.py\", \n  \"cloud/rackspace/rax_files_objects\": \"lib/ansible/modules/cloud/rackspace/rax_files_objects.py\", \n  \"cloud/rackspace/rax_files_objects.py\": \"lib/ansible/modules/cloud/rackspace/rax_files_objects.py\", \n  \"cloud/rackspace/rax_identity\": \"lib/ansible/modules/cloud/rackspace/rax_identity.py\", \n  \"cloud/rackspace/rax_identity.py\": \"lib/ansible/modules/cloud/rackspace/rax_identity.py\", \n  \"cloud/rackspace/rax_keypair\": \"lib/ansible/modules/cloud/rackspace/rax_keypair.py\", \n  \"cloud/rackspace/rax_keypair.py\": \"lib/ansible/modules/cloud/rackspace/rax_keypair.py\", \n  \"cloud/rackspace/rax_meta\": \"lib/ansible/modules/cloud/rackspace/rax_meta.py\", \n  \"cloud/rackspace/rax_meta.py\": \"lib/ansible/modules/cloud/rackspace/rax_meta.py\", \n  \"cloud/rackspace/rax_mon_alarm\": \"lib/ansible/modules/cloud/rackspace/rax_mon_alarm.py\", \n  \"cloud/rackspace/rax_mon_alarm.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_alarm.py\", \n  \"cloud/rackspace/rax_mon_check\": \"lib/ansible/modules/cloud/rackspace/rax_mon_check.py\", \n  \"cloud/rackspace/rax_mon_check.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_check.py\", \n  \"cloud/rackspace/rax_mon_entity\": \"lib/ansible/modules/cloud/rackspace/rax_mon_entity.py\", \n  \"cloud/rackspace/rax_mon_entity.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_entity.py\", \n  \"cloud/rackspace/rax_mon_notification\": \"lib/ansible/modules/cloud/rackspace/rax_mon_notification.py\", \n  \"cloud/rackspace/rax_mon_notification.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_notification.py\", \n  \"cloud/rackspace/rax_mon_notification_plan\": \"lib/ansible/modules/cloud/rackspace/rax_mon_notification_plan.py\", \n  \"cloud/rackspace/rax_mon_notification_plan.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_notification_plan.py\", \n  \"cloud/rackspace/rax_network\": \"lib/ansible/modules/cloud/rackspace/rax_network.py\", \n  \"cloud/rackspace/rax_network.py\": \"lib/ansible/modules/cloud/rackspace/rax_network.py\", \n  \"cloud/rackspace/rax_queue\": \"lib/ansible/modules/cloud/rackspace/rax_queue.py\", \n  \"cloud/rackspace/rax_queue.py\": \"lib/ansible/modules/cloud/rackspace/rax_queue.py\", \n  \"cloud/rackspace/rax_scaling_group\": \"lib/ansible/modules/cloud/rackspace/rax_scaling_group.py\", \n  \"cloud/rackspace/rax_scaling_group.py\": \"lib/ansible/modules/cloud/rackspace/rax_scaling_group.py\", \n  \"cloud/rackspace/rax_scaling_policy\": \"lib/ansible/modules/cloud/rackspace/rax_scaling_policy.py\", \n  \"cloud/rackspace/rax_scaling_policy.py\": \"lib/ansible/modules/cloud/rackspace/rax_scaling_policy.py\", \n  \"cloud/smartos/imgadm\": \"lib/ansible/modules/cloud/smartos/imgadm.py\", \n  \"cloud/smartos/imgadm.py\": \"lib/ansible/modules/cloud/smartos/imgadm.py\", \n  \"cloud/smartos/smartos_image_facts\": \"lib/ansible/modules/cloud/smartos/smartos_image_facts.py\", \n  \"cloud/smartos/smartos_image_facts.py\": \"lib/ansible/modules/cloud/smartos/smartos_image_facts.py\", \n  \"cloud/smartos/vmadm\": \"lib/ansible/modules/cloud/smartos/vmadm.py\", \n  \"cloud/smartos/vmadm.py\": \"lib/ansible/modules/cloud/smartos/vmadm.py\", \n  \"cloud/softlayer/sl_vm\": \"lib/ansible/modules/cloud/softlayer/sl_vm.py\", \n  \"cloud/softlayer/sl_vm.py\": \"lib/ansible/modules/cloud/softlayer/sl_vm.py\", \n  \"cloud/univention/udm_dns_record\": \"lib/ansible/modules/cloud/univention/udm_dns_record.py\", \n  \"cloud/univention/udm_dns_record.py\": \"lib/ansible/modules/cloud/univention/udm_dns_record.py\", \n  \"cloud/univention/udm_dns_zone\": \"lib/ansible/modules/cloud/univention/udm_dns_zone.py\", \n  \"cloud/univention/udm_dns_zone.py\": \"lib/ansible/modules/cloud/univention/udm_dns_zone.py\", \n  \"cloud/univention/udm_group\": \"lib/ansible/modules/cloud/univention/udm_group.py\", \n  \"cloud/univention/udm_group.py\": \"lib/ansible/modules/cloud/univention/udm_group.py\", \n  \"cloud/univention/udm_share\": \"lib/ansible/modules/cloud/univention/udm_share.py\", \n  \"cloud/univention/udm_share.py\": \"lib/ansible/modules/cloud/univention/udm_share.py\", \n  \"cloud/univention/udm_user\": \"lib/ansible/modules/cloud/univention/udm_user.py\", \n  \"cloud/univention/udm_user.py\": \"lib/ansible/modules/cloud/univention/udm_user.py\", \n  \"cloud/vmware/vca_fw\": \"lib/ansible/modules/cloud/vmware/vca_fw.py\", \n  \"cloud/vmware/vca_fw.py\": [\n    \"lib/ansible/modules/cloud/vmware/vca_fw.py\"\n  ], \n  \"cloud/vmware/vca_nat\": \"lib/ansible/modules/cloud/vmware/vca_nat.py\", \n  \"cloud/vmware/vca_nat.py\": \"lib/ansible/modules/cloud/vmware/vca_nat.py\", \n  \"cloud/vmware/vca_vapp\": \"lib/ansible/modules/cloud/vmware/vca_vapp.py\", \n  \"cloud/vmware/vca_vapp.py\": [\n    \"lib/ansible/modules/cloud/vmware/vca_vapp.py\"\n  ], \n  \"cloud/vmware/vcenter_license\": \"lib/ansible/modules/cloud/vmware/vcenter_license.py\", \n  \"cloud/vmware/vcenter_license.py\": \"lib/ansible/modules/cloud/vmware/vcenter_license.py\", \n  \"cloud/vmware/vmware_cluster\": \"lib/ansible/modules/cloud/vmware/vmware_cluster.py\", \n  \"cloud/vmware/vmware_cluster.py\": \"lib/ansible/modules/cloud/vmware/vmware_cluster.py\", \n  \"cloud/vmware/vmware_datacenter\": \"lib/ansible/modules/cloud/vmware/vmware_datacenter.py\", \n  \"cloud/vmware/vmware_datacenter.py\": \"lib/ansible/modules/cloud/vmware/vmware_datacenter.py\", \n  \"cloud/vmware/vmware_dns_config\": \"lib/ansible/modules/cloud/vmware/vmware_dns_config.py\", \n  \"cloud/vmware/vmware_dns_config.py\": \"lib/ansible/modules/cloud/vmware/vmware_dns_config.py\", \n  \"cloud/vmware/vmware_dvs_host\": \"lib/ansible/modules/cloud/vmware/vmware_dvs_host.py\", \n  \"cloud/vmware/vmware_dvs_host.py\": \"lib/ansible/modules/cloud/vmware/vmware_dvs_host.py\", \n  \"cloud/vmware/vmware_dvs_portgroup\": \"lib/ansible/modules/cloud/vmware/vmware_dvs_portgroup.py\", \n  \"cloud/vmware/vmware_dvs_portgroup.py\": \"lib/ansible/modules/cloud/vmware/vmware_dvs_portgroup.py\", \n  \"cloud/vmware/vmware_dvswitch\": \"lib/ansible/modules/cloud/vmware/vmware_dvswitch.py\", \n  \"cloud/vmware/vmware_dvswitch.py\": \"lib/ansible/modules/cloud/vmware/vmware_dvswitch.py\", \n  \"cloud/vmware/vmware_guest\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n  \"cloud/vmware/vmware_guest.py\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"cloud/vmware/vmware_guest_facts\": \"lib/ansible/modules/cloud/vmware/vmware_guest_facts.py\", \n  \"cloud/vmware/vmware_guest_facts.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_facts.py\", \n  \"cloud/vmware/vmware_guest_find\": \"lib/ansible/modules/cloud/vmware/vmware_guest_find.py\", \n  \"cloud/vmware/vmware_guest_find.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_find.py\", \n  \"cloud/vmware/vmware_guest_powerstate\": \"lib/ansible/modules/cloud/vmware/vmware_guest_powerstate.py\", \n  \"cloud/vmware/vmware_guest_powerstate.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_powerstate.py\", \n  \"cloud/vmware/vmware_guest_snapshot\": \"lib/ansible/modules/cloud/vmware/vmware_guest_snapshot.py\", \n  \"cloud/vmware/vmware_guest_snapshot.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_snapshot.py\", \n  \"cloud/vmware/vmware_guest_tools_wait\": \"lib/ansible/modules/cloud/vmware/vmware_guest_tools_wait.py\", \n  \"cloud/vmware/vmware_guest_tools_wait.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_tools_wait.py\", \n  \"cloud/vmware/vmware_host\": \"lib/ansible/modules/cloud/vmware/vmware_host.py\", \n  \"cloud/vmware/vmware_host.py\": \"lib/ansible/modules/cloud/vmware/vmware_host.py\", \n  \"cloud/vmware/vmware_local_user_manager\": \"lib/ansible/modules/cloud/vmware/vmware_local_user_manager.py\", \n  \"cloud/vmware/vmware_local_user_manager.py\": \"lib/ansible/modules/cloud/vmware/vmware_local_user_manager.py\", \n  \"cloud/vmware/vmware_maintenancemode\": \"lib/ansible/modules/cloud/vmware/vmware_maintenancemode.py\", \n  \"cloud/vmware/vmware_maintenancemode.py\": \"lib/ansible/modules/cloud/vmware/vmware_maintenancemode.py\", \n  \"cloud/vmware/vmware_migrate_vmk\": \"lib/ansible/modules/cloud/vmware/vmware_migrate_vmk.py\", \n  \"cloud/vmware/vmware_migrate_vmk.py\": \"lib/ansible/modules/cloud/vmware/vmware_migrate_vmk.py\", \n  \"cloud/vmware/vmware_portgroup\": \"lib/ansible/modules/cloud/vmware/vmware_portgroup.py\", \n  \"cloud/vmware/vmware_portgroup.py\": \"lib/ansible/modules/cloud/vmware/vmware_portgroup.py\", \n  \"cloud/vmware/vmware_resource_pool\": \"lib/ansible/modules/cloud/vmware/vmware_resource_pool.py\", \n  \"cloud/vmware/vmware_resource_pool.py\": \"lib/ansible/modules/cloud/vmware/vmware_resource_pool.py\", \n  \"cloud/vmware/vmware_target_canonical_facts\": \"lib/ansible/modules/cloud/vmware/vmware_target_canonical_facts.py\", \n  \"cloud/vmware/vmware_target_canonical_facts.py\": \"lib/ansible/modules/cloud/vmware/vmware_target_canonical_facts.py\", \n  \"cloud/vmware/vmware_vm_facts\": \"lib/ansible/modules/cloud/vmware/vmware_vm_facts.py\", \n  \"cloud/vmware/vmware_vm_facts.py\": \"lib/ansible/modules/cloud/vmware/vmware_vm_facts.py\", \n  \"cloud/vmware/vmware_vm_shell\": \"lib/ansible/modules/cloud/vmware/vmware_vm_shell.py\", \n  \"cloud/vmware/vmware_vm_shell.py\": \"lib/ansible/modules/cloud/vmware/vmware_vm_shell.py\", \n  \"cloud/vmware/vmware_vm_vss_dvs_migrate\": \"lib/ansible/modules/cloud/vmware/vmware_vm_vss_dvs_migrate.py\", \n  \"cloud/vmware/vmware_vm_vss_dvs_migrate.py\": \"lib/ansible/modules/cloud/vmware/vmware_vm_vss_dvs_migrate.py\", \n  \"cloud/vmware/vmware_vmkernel\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel.py\", \n  \"cloud/vmware/vmware_vmkernel.py\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel.py\", \n  \"cloud/vmware/vmware_vmkernel_ip_config\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel_ip_config.py\", \n  \"cloud/vmware/vmware_vmkernel_ip_config.py\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel_ip_config.py\", \n  \"cloud/vmware/vmware_vmotion\": \"lib/ansible/modules/cloud/vmware/vmware_vmotion.py\", \n  \"cloud/vmware/vmware_vmotion.py\": \"lib/ansible/modules/cloud/vmware/vmware_vmotion.py\", \n  \"cloud/vmware/vmware_vsan_cluster\": \"lib/ansible/modules/cloud/vmware/vmware_vsan_cluster.py\", \n  \"cloud/vmware/vmware_vsan_cluster.py\": \"lib/ansible/modules/cloud/vmware/vmware_vsan_cluster.py\", \n  \"cloud/vmware/vmware_vswitch\": \"lib/ansible/modules/cloud/vmware/vmware_vswitch.py\", \n  \"cloud/vmware/vmware_vswitch.py\": \"lib/ansible/modules/cloud/vmware/vmware_vswitch.py\", \n  \"cloud/vmware/vsphere_copy\": \"lib/ansible/modules/cloud/vmware/vsphere_copy.py\", \n  \"cloud/vmware/vsphere_copy.py\": \"lib/ansible/modules/cloud/vmware/vsphere_copy.py\", \n  \"cloud/vmware/vsphere_guest\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"cloud/vmware/vsphere_guest.py\": \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\", \n  \"cloud/vmware_guest.py\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"cloud/webfaction/webfaction_app\": \"lib/ansible/modules/cloud/webfaction/webfaction_app.py\", \n  \"cloud/webfaction/webfaction_app.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_app.py\", \n  \"cloud/webfaction/webfaction_db\": \"lib/ansible/modules/cloud/webfaction/webfaction_db.py\", \n  \"cloud/webfaction/webfaction_db.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_db.py\", \n  \"cloud/webfaction/webfaction_domain\": \"lib/ansible/modules/cloud/webfaction/webfaction_domain.py\", \n  \"cloud/webfaction/webfaction_domain.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_domain.py\", \n  \"cloud/webfaction/webfaction_mailbox\": \"lib/ansible/modules/cloud/webfaction/webfaction_mailbox.py\", \n  \"cloud/webfaction/webfaction_mailbox.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_mailbox.py\", \n  \"cloud/webfaction/webfaction_site\": \"lib/ansible/modules/cloud/webfaction/webfaction_site.py\", \n  \"cloud/webfaction/webfaction_site.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_site.py\", \n  \"cloudflare_dns\": [\n    \"lib/ansible/modules/net_tools/cloudflare_dns.py\"\n  ], \n  \"cloudflare_dns - manage Cloudflare DNS records\": [], \n  \"cloudflare_dns module\": \"lib/ansible/modules/net_tools/cloudflare_dns.py\", \n  \"cloudformation\": [\n    \"lib/ansible/modules/cloud/amazon/cloudformation.py\"\n  ], \n  \"cloudformation module\": [\n    \"lib/ansible/modules/cloud/amazon/cloudformation.py\"\n  ], \n  \"cloudformation.py\": [\n    \"lib/ansible/modules/cloud/amazon/cloudformation.py\"\n  ], \n  \"cloudformation_facts\": \"lib/ansible/modules/cloud/amazon/cloudformation_facts.py\", \n  \"cloudformation_facts module\": [\n    \"lib/ansible/modules/cloud/amazon/cloudformation_facts.py\"\n  ], \n  \"cloudfront_facts\": \"lib/ansible/modules/cloud/amazon/cloudfront_facts.py\", \n  \"cloudfront_facts module\": \"lib/ansible/modules/cloud/amazon/cloudfront_facts.py\", \n  \"cloudfront_facts module documentation\": [\n    \"lib/ansible/modules/cloud/amazon/cloudfront_facts.py\"\n  ], \n  \"cloudscale_server\": \"lib/ansible/modules/cloud/cloudscale/cloudscale_server.py\", \n  \"cloudscale_server module\": \"lib/ansible/modules/cloud/cloudscale/cloudscale_server.py\", \n  \"cloudtrail\": \"lib/ansible/modules/cloud/amazon/cloudtrail.py\", \n  \"cloudtrail module\": \"lib/ansible/modules/cloud/amazon/cloudtrail.py\", \n  \"cloudwatchevent_rule\": [\n    \"lib/ansible/modules/cloud/amazon/cloudwatchevent_rule.py\"\n  ], \n  \"cloudwatchevent_rule module\": \"lib/ansible/modules/cloud/amazon/cloudwatchevent_rule.py\", \n  \"clustering/consul\": \"lib/ansible/modules/clustering/consul.py\", \n  \"clustering/consul.py\": \"lib/ansible/modules/clustering/consul.py\", \n  \"clustering/consul_acl\": \"lib/ansible/modules/clustering/consul_acl.py\", \n  \"clustering/consul_acl.py\": \"lib/ansible/modules/clustering/consul_acl.py\", \n  \"clustering/consul_kv\": \"lib/ansible/modules/clustering/consul_kv.py\", \n  \"clustering/consul_kv.py\": [\n    \"lib/ansible/modules/clustering/consul_kv.py\"\n  ], \n  \"clustering/consul_session\": \"lib/ansible/modules/clustering/consul_session.py\", \n  \"clustering/consul_session.py\": \"lib/ansible/modules/clustering/consul_session.py\", \n  \"clustering/kubernetes\": [\n    \"lib/ansible/modules/clustering/kubernetes.py\"\n  ], \n  \"clustering/kubernetes.py\": \"lib/ansible/modules/clustering/kubernetes.py\", \n  \"clustering/oc\": \"lib/ansible/modules/clustering/oc.py\", \n  \"clustering/oc.py\": \"lib/ansible/modules/clustering/oc.py\", \n  \"clustering/pacemaker_cluster\": \"lib/ansible/modules/clustering/pacemaker_cluster.py\", \n  \"clustering/pacemaker_cluster.py\": \"lib/ansible/modules/clustering/pacemaker_cluster.py\", \n  \"clustering/znode\": \"lib/ansible/modules/clustering/znode.py\", \n  \"clustering/znode.py\": \"lib/ansible/modules/clustering/znode.py\", \n  \"cnos_backup\": \"lib/ansible/modules/network/lenovo/cnos_backup.py\", \n  \"cnos_backup module\": \"lib/ansible/modules/network/lenovo/cnos_backup.py\", \n  \"cnos_bgp\": \"lib/ansible/modules/network/lenovo/cnos_bgp.py\", \n  \"cnos_bgp module\": \"lib/ansible/modules/network/lenovo/cnos_bgp.py\", \n  \"cnos_command\": \"lib/ansible/modules/network/lenovo/cnos_command.py\", \n  \"cnos_command module\": \"lib/ansible/modules/network/lenovo/cnos_command.py\", \n  \"cnos_conditional_command\": \"lib/ansible/modules/network/lenovo/cnos_conditional_command.py\", \n  \"cnos_conditional_command module\": \"lib/ansible/modules/network/lenovo/cnos_conditional_command.py\", \n  \"cnos_conditional_template\": \"lib/ansible/modules/network/lenovo/cnos_conditional_template.py\", \n  \"cnos_conditional_template module\": \"lib/ansible/modules/network/lenovo/cnos_conditional_template.py\", \n  \"cnos_factory\": \"lib/ansible/modules/network/lenovo/cnos_factory.py\", \n  \"cnos_factory module\": \"lib/ansible/modules/network/lenovo/cnos_factory.py\", \n  \"cnos_facts\": \"lib/ansible/modules/network/lenovo/cnos_facts.py\", \n  \"cnos_facts module\": \"lib/ansible/modules/network/lenovo/cnos_facts.py\", \n  \"cnos_image\": \"lib/ansible/modules/network/lenovo/cnos_image.py\", \n  \"cnos_image module\": \"lib/ansible/modules/network/lenovo/cnos_image.py\", \n  \"cnos_interface\": \"lib/ansible/modules/network/lenovo/cnos_interface.py\", \n  \"cnos_interface module\": \"lib/ansible/modules/network/lenovo/cnos_interface.py\", \n  \"cnos_portchannel\": \"lib/ansible/modules/network/lenovo/cnos_portchannel.py\", \n  \"cnos_portchannel module\": \"lib/ansible/modules/network/lenovo/cnos_portchannel.py\", \n  \"cnos_reload\": \"lib/ansible/modules/network/lenovo/cnos_reload.py\", \n  \"cnos_reload module\": \"lib/ansible/modules/network/lenovo/cnos_reload.py\", \n  \"cnos_rollback\": \"lib/ansible/modules/network/lenovo/cnos_rollback.py\", \n  \"cnos_rollback module\": \"lib/ansible/modules/network/lenovo/cnos_rollback.py\", \n  \"cnos_save\": \"lib/ansible/modules/network/lenovo/cnos_save.py\", \n  \"cnos_save module\": \"lib/ansible/modules/network/lenovo/cnos_save.py\", \n  \"cnos_showrun\": \"lib/ansible/modules/network/lenovo/cnos_showrun.py\", \n  \"cnos_showrun module\": \"lib/ansible/modules/network/lenovo/cnos_showrun.py\", \n  \"cnos_template\": \"lib/ansible/modules/network/lenovo/cnos_template.py\", \n  \"cnos_template module\": \"lib/ansible/modules/network/lenovo/cnos_template.py\", \n  \"cnos_vlag\": \"lib/ansible/modules/network/lenovo/cnos_vlag.py\", \n  \"cnos_vlag module\": \"lib/ansible/modules/network/lenovo/cnos_vlag.py\", \n  \"cnos_vlan\": \"lib/ansible/modules/network/lenovo/cnos_vlan.py\", \n  \"cnos_vlan module\": \"lib/ansible/modules/network/lenovo/cnos_vlan.py\", \n  \"command\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"command\\nhttps://github.com/ansible/ansible-modules-core/blob/devel/commands/command.py\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"command module\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"command.py\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"commands/command\": \"lib/ansible/modules/commands/command.py\", \n  \"commands/command.py\": \"lib/ansible/modules/commands/command.py\", \n  \"commands/expect\": \"lib/ansible/modules/commands/expect.py\", \n  \"commands/expect.py\": \"lib/ansible/modules/commands/expect.py\", \n  \"commands/raw\": \"lib/ansible/modules/commands/raw.py\", \n  \"commands/raw.py\": \"lib/ansible/modules/commands/raw.py\", \n  \"commands/script\": \"lib/ansible/modules/commands/script.py\", \n  \"commands/script.py\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"commands/shell\": \"lib/ansible/modules/commands/shell.py\", \n  \"commands/shell.py\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"commands/telnet\": \"lib/ansible/modules/commands/telnet.py\", \n  \"commands/telnet.py\": \"lib/ansible/modules/commands/telnet.py\", \n  \"component: ec2_ami\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_ami.py\"\n  ], \n  \"components which use \\\"show running-config all\\\" etc.\": [], \n  \"composer\": [\n    \"lib/ansible/modules/packaging/language/composer.py\"\n  ], \n  \"composer module\": \"lib/ansible/modules/packaging/language/composer.py\", \n  \"configuration\": [], \n  \"connection\": [\n    \"lib/ansible/module_utils/connection.py\"\n  ], \n  \"constants.py\": [\n    \"lib/ansible/constants.py\", \n    \"test/units/test_constants.py\"\n  ], \n  \"constructed\": [\n    \"lib/ansible/plugins/inventory/constructed.py\"\n  ], \n  \"consul\": [\n    \"lib/ansible/modules/clustering/consul.py\"\n  ], \n  \"consul - http://docs.ansible.com/ansible/consul_module.html\": [\n    \"lib/ansible/modules/clustering/consul.py\"\n  ], \n  \"consul module\": \"lib/ansible/modules/clustering/consul.py\", \n  \"consul_acl\": \"lib/ansible/modules/clustering/consul_acl.py\", \n  \"consul_acl (http://docs.ansible.com/ansible/consul_acl_module.html)\": [\n    \"lib/ansible/modules/clustering/consul_acl.py\"\n  ], \n  \"consul_acl module\": \"lib/ansible/modules/clustering/consul_acl.py\", \n  \"consul_kv\": [\n    \"lib/ansible/modules/clustering/consul_kv.py\"\n  ], \n  \"consul_kv module\": \"lib/ansible/modules/clustering/consul_kv.py\", \n  \"consul_session\": [\n    \"lib/ansible/modules/clustering/consul_session.py\"\n  ], \n  \"consul_session module\": \"lib/ansible/modules/clustering/consul_session.py\", \n  \"contrib/inventory/azure_rm.py\": [\n    \"contrib/inventory/azure_rm.py\"\n  ], \n  \"contrib/inventory/azure_rm.py\\nlib/ansible/module_utils/azure_rm_common.py\": [\n    \"contrib/inventory/azure_rm.py\"\n  ], \n  \"contrib/inventory/ec2.py\": [\n    \"contrib/inventory/ec2.py\"\n  ], \n  \"contrib/inventory/gce.py\": [\n    \"contrib/inventory/gce.py\"\n  ], \n  \"contrib/inventory/proxmox.py\": [\n    \"contrib/inventory/proxmox.py\"\n  ], \n  \"copy\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"copy\\nOr playbook\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"copy\\ntemplate\": [\n    \"lib/ansible/modules/files/copy.py\", \n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"copy module\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"copy module: method to inhibit automatic creation of target directory and its parents.\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"copy shell  modules\": [\n    \"lib/ansible/modules/commands/shell.py\", \n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"copy_module\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"core\": [], \n  \"core\\n1.9\": [], \n  \"core\\nfilters\": [], \n  \"core (?)\": [], \n  \"core - Loops\": [], \n  \"core / vars expansion\": [], \n  \"core ?\": [], \n  \"core documentation\": [], \n  \"core, I believe\": [], \n  \"core, I think?\": [], \n  \"core.py plugins\": [\n    \"lib/ansible/plugins/filter/core.py\", \n    \"lib/ansible/plugins/test/core.py\"\n  ], \n  \"core/include\": [], \n  \"core: meta\": [\n    \"lib/ansible/modules/utilities/helper/meta.py\"\n  ], \n  \"cpanm\": \"lib/ansible/modules/packaging/language/cpanm.py\", \n  \"cpanm module\": [\n    \"lib/ansible/modules/packaging/language/cpanm.py\"\n  ], \n  \"credstash lookup\": [\n    \"lib/ansible/plugins/lookup/credstash.py\"\n  ], \n  \"cron\": [\n    \"lib/ansible/modules/system/cron.py\"\n  ], \n  \"cron module\": [\n    \"lib/ansible/modules/system/cron.py\"\n  ], \n  \"cron_module\": [\n    \"lib/ansible/modules/system/cron.py\"\n  ], \n  \"cronvar\": [\n    \"lib/ansible/modules/system/cronvar.py\"\n  ], \n  \"cronvar module\": \"lib/ansible/modules/system/cronvar.py\", \n  \"crypto/openssl_certificate\": \"lib/ansible/modules/crypto/openssl_certificate.py\", \n  \"crypto/openssl_certificate.py\": \"lib/ansible/modules/crypto/openssl_certificate.py\", \n  \"crypto/openssl_csr\": \"lib/ansible/modules/crypto/openssl_csr.py\", \n  \"crypto/openssl_csr.py\": [\n    \"lib/ansible/modules/crypto/openssl_csr.py\"\n  ], \n  \"crypto/openssl_privatekey\": \"lib/ansible/modules/crypto/openssl_privatekey.py\", \n  \"crypto/openssl_privatekey.py\": \"lib/ansible/modules/crypto/openssl_privatekey.py\", \n  \"crypto/openssl_publickey\": \"lib/ansible/modules/crypto/openssl_publickey.py\", \n  \"crypto/openssl_publickey.py\": \"lib/ansible/modules/crypto/openssl_publickey.py\", \n  \"crypttab\": \"lib/ansible/modules/system/crypttab.py\", \n  \"crypttab module\": \"lib/ansible/modules/system/crypttab.py\", \n  \"cs_account\": \"lib/ansible/modules/cloud/cloudstack/cs_account.py\", \n  \"cs_account module\": \"lib/ansible/modules/cloud/cloudstack/cs_account.py\", \n  \"cs_affinitygroup\": \"lib/ansible/modules/cloud/cloudstack/cs_affinitygroup.py\", \n  \"cs_affinitygroup module\": \"lib/ansible/modules/cloud/cloudstack/cs_affinitygroup.py\", \n  \"cs_cluster\": \"lib/ansible/modules/cloud/cloudstack/cs_cluster.py\", \n  \"cs_cluster module\": \"lib/ansible/modules/cloud/cloudstack/cs_cluster.py\", \n  \"cs_configuration\": \"lib/ansible/modules/cloud/cloudstack/cs_configuration.py\", \n  \"cs_configuration module\": \"lib/ansible/modules/cloud/cloudstack/cs_configuration.py\", \n  \"cs_domain\": \"lib/ansible/modules/cloud/cloudstack/cs_domain.py\", \n  \"cs_domain module\": \"lib/ansible/modules/cloud/cloudstack/cs_domain.py\", \n  \"cs_facts\": \"lib/ansible/modules/cloud/cloudstack/cs_facts.py\", \n  \"cs_facts module\": \"lib/ansible/modules/cloud/cloudstack/cs_facts.py\", \n  \"cs_firewall\": \"lib/ansible/modules/cloud/cloudstack/cs_firewall.py\", \n  \"cs_firewall module\": \"lib/ansible/modules/cloud/cloudstack/cs_firewall.py\", \n  \"cs_host\": \"lib/ansible/modules/cloud/cloudstack/cs_host.py\", \n  \"cs_host module\": \"lib/ansible/modules/cloud/cloudstack/cs_host.py\", \n  \"cs_instance\": \"lib/ansible/modules/cloud/cloudstack/cs_instance.py\", \n  \"cs_instance module\": \"lib/ansible/modules/cloud/cloudstack/cs_instance.py\", \n  \"cs_instance_facts\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_facts.py\", \n  \"cs_instance_facts module\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_facts.py\", \n  \"cs_instance_nic\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_nic.py\", \n  \"cs_instance_nic module\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_nic.py\", \n  \"cs_instance_nic_secondaryip\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_nic_secondaryip.py\", \n  \"cs_instance_nic_secondaryip module\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_nic_secondaryip.py\", \n  \"cs_instancegroup\": \"lib/ansible/modules/cloud/cloudstack/cs_instancegroup.py\", \n  \"cs_instancegroup module\": \"lib/ansible/modules/cloud/cloudstack/cs_instancegroup.py\", \n  \"cs_ip_address\": \"lib/ansible/modules/cloud/cloudstack/cs_ip_address.py\", \n  \"cs_ip_address module\": \"lib/ansible/modules/cloud/cloudstack/cs_ip_address.py\", \n  \"cs_iso\": \"lib/ansible/modules/cloud/cloudstack/cs_iso.py\", \n  \"cs_iso module\": \"lib/ansible/modules/cloud/cloudstack/cs_iso.py\", \n  \"cs_loadbalancer_rule\": \"lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule.py\", \n  \"cs_loadbalancer_rule module\": \"lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule.py\", \n  \"cs_loadbalancer_rule_member\": \"lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule_member.py\", \n  \"cs_loadbalancer_rule_member module\": \"lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule_member.py\", \n  \"cs_network\": \"lib/ansible/modules/cloud/cloudstack/cs_network.py\", \n  \"cs_network module\": \"lib/ansible/modules/cloud/cloudstack/cs_network.py\", \n  \"cs_network_acl\": \"lib/ansible/modules/cloud/cloudstack/cs_network_acl.py\", \n  \"cs_network_acl module\": \"lib/ansible/modules/cloud/cloudstack/cs_network_acl.py\", \n  \"cs_network_acl_rule\": \"lib/ansible/modules/cloud/cloudstack/cs_network_acl_rule.py\", \n  \"cs_network_acl_rule module\": \"lib/ansible/modules/cloud/cloudstack/cs_network_acl_rule.py\", \n  \"cs_nic\": \"lib/ansible/modules/cloud/cloudstack/_cs_nic.py\", \n  \"cs_nic module\": \"lib/ansible/modules/cloud/cloudstack/_cs_nic.py\", \n  \"cs_pod\": \"lib/ansible/modules/cloud/cloudstack/cs_pod.py\", \n  \"cs_pod module\": \"lib/ansible/modules/cloud/cloudstack/cs_pod.py\", \n  \"cs_portforward\": \"lib/ansible/modules/cloud/cloudstack/cs_portforward.py\", \n  \"cs_portforward module\": \"lib/ansible/modules/cloud/cloudstack/cs_portforward.py\", \n  \"cs_project\": \"lib/ansible/modules/cloud/cloudstack/cs_project.py\", \n  \"cs_project module\": \"lib/ansible/modules/cloud/cloudstack/cs_project.py\", \n  \"cs_region\": \"lib/ansible/modules/cloud/cloudstack/cs_region.py\", \n  \"cs_region module\": \"lib/ansible/modules/cloud/cloudstack/cs_region.py\", \n  \"cs_resourcelimit\": \"lib/ansible/modules/cloud/cloudstack/cs_resourcelimit.py\", \n  \"cs_resourcelimit module\": \"lib/ansible/modules/cloud/cloudstack/cs_resourcelimit.py\", \n  \"cs_role\": \"lib/ansible/modules/cloud/cloudstack/cs_role.py\", \n  \"cs_role module\": \"lib/ansible/modules/cloud/cloudstack/cs_role.py\", \n  \"cs_router\": \"lib/ansible/modules/cloud/cloudstack/cs_router.py\", \n  \"cs_router module\": \"lib/ansible/modules/cloud/cloudstack/cs_router.py\", \n  \"cs_securitygroup\": \"lib/ansible/modules/cloud/cloudstack/cs_securitygroup.py\", \n  \"cs_securitygroup module\": \"lib/ansible/modules/cloud/cloudstack/cs_securitygroup.py\", \n  \"cs_securitygroup_rule\": \"lib/ansible/modules/cloud/cloudstack/cs_securitygroup_rule.py\", \n  \"cs_securitygroup_rule module\": \"lib/ansible/modules/cloud/cloudstack/cs_securitygroup_rule.py\", \n  \"cs_snapshot_policy\": \"lib/ansible/modules/cloud/cloudstack/cs_snapshot_policy.py\", \n  \"cs_snapshot_policy module\": \"lib/ansible/modules/cloud/cloudstack/cs_snapshot_policy.py\", \n  \"cs_sshkeypair\": \"lib/ansible/modules/cloud/cloudstack/cs_sshkeypair.py\", \n  \"cs_sshkeypair module\": \"lib/ansible/modules/cloud/cloudstack/cs_sshkeypair.py\", \n  \"cs_staticnat\": \"lib/ansible/modules/cloud/cloudstack/cs_staticnat.py\", \n  \"cs_staticnat module\": \"lib/ansible/modules/cloud/cloudstack/cs_staticnat.py\", \n  \"cs_storage_pool\": \"lib/ansible/modules/cloud/cloudstack/cs_storage_pool.py\", \n  \"cs_storage_pool module\": \"lib/ansible/modules/cloud/cloudstack/cs_storage_pool.py\", \n  \"cs_template\": \"lib/ansible/modules/cloud/cloudstack/cs_template.py\", \n  \"cs_template module\": \"lib/ansible/modules/cloud/cloudstack/cs_template.py\", \n  \"cs_user\": \"lib/ansible/modules/cloud/cloudstack/cs_user.py\", \n  \"cs_user module\": \"lib/ansible/modules/cloud/cloudstack/cs_user.py\", \n  \"cs_vmsnapshot\": \"lib/ansible/modules/cloud/cloudstack/cs_vmsnapshot.py\", \n  \"cs_vmsnapshot module\": \"lib/ansible/modules/cloud/cloudstack/cs_vmsnapshot.py\", \n  \"cs_volume\": \"lib/ansible/modules/cloud/cloudstack/cs_volume.py\", \n  \"cs_volume module\": \"lib/ansible/modules/cloud/cloudstack/cs_volume.py\", \n  \"cs_vpc\": \"lib/ansible/modules/cloud/cloudstack/cs_vpc.py\", \n  \"cs_vpc module\": \"lib/ansible/modules/cloud/cloudstack/cs_vpc.py\", \n  \"cs_vpn_gateway\": \"lib/ansible/modules/cloud/cloudstack/cs_vpn_gateway.py\", \n  \"cs_vpn_gateway module\": \"lib/ansible/modules/cloud/cloudstack/cs_vpn_gateway.py\", \n  \"cs_zone\": \"lib/ansible/modules/cloud/cloudstack/cs_zone.py\", \n  \"cs_zone module\": \"lib/ansible/modules/cloud/cloudstack/cs_zone.py\", \n  \"cs_zone_facts\": \"lib/ansible/modules/cloud/cloudstack/cs_zone_facts.py\", \n  \"cs_zone_facts module\": \"lib/ansible/modules/cloud/cloudstack/cs_zone_facts.py\", \n  \"custom filter plugin\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"cv_server_provision\": \"lib/ansible/modules/network/cloudvision/cv_server_provision.py\", \n  \"cv_server_provision module\": \"lib/ansible/modules/network/cloudvision/cv_server_provision.py\", \n  \"cyberark_authentication\": \"lib/ansible/modules/identity/cyberark/cyberark_authentication.py\", \n  \"cyberark_authentication module\": \"lib/ansible/modules/identity/cyberark/cyberark_authentication.py\", \n  \"cyberark_user\": \"lib/ansible/modules/identity/cyberark/cyberark_user.py\", \n  \"cyberark_user module\": \"lib/ansible/modules/identity/cyberark/cyberark_user.py\", \n  \"data_pipeline\": \"lib/ansible/modules/cloud/amazon/data_pipeline.py\", \n  \"data_pipeline module\": \"lib/ansible/modules/cloud/amazon/data_pipeline.py\", \n  \"database/influxdb/influxdb_database\": \"lib/ansible/modules/database/influxdb/influxdb_database.py\", \n  \"database/influxdb/influxdb_database.py\": \"lib/ansible/modules/database/influxdb/influxdb_database.py\", \n  \"database/influxdb/influxdb_retention_policy\": \"lib/ansible/modules/database/influxdb/influxdb_retention_policy.py\", \n  \"database/influxdb/influxdb_retention_policy.py\": \"lib/ansible/modules/database/influxdb/influxdb_retention_policy.py\", \n  \"database/misc/elasticsearch_plugin\": \"lib/ansible/modules/database/misc/elasticsearch_plugin.py\", \n  \"database/misc/elasticsearch_plugin.py\": \"lib/ansible/modules/database/misc/elasticsearch_plugin.py\", \n  \"database/misc/kibana_plugin\": \"lib/ansible/modules/database/misc/kibana_plugin.py\", \n  \"database/misc/kibana_plugin.py\": \"lib/ansible/modules/database/misc/kibana_plugin.py\", \n  \"database/misc/redis\": \"lib/ansible/modules/database/misc/redis.py\", \n  \"database/misc/redis.py\": \"lib/ansible/modules/database/misc/redis.py\", \n  \"database/misc/riak\": \"lib/ansible/modules/database/misc/riak.py\", \n  \"database/misc/riak.py\": \"lib/ansible/modules/database/misc/riak.py\", \n  \"database/mongodb/mongodb_parameter\": \"lib/ansible/modules/database/mongodb/mongodb_parameter.py\", \n  \"database/mongodb/mongodb_parameter.py\": \"lib/ansible/modules/database/mongodb/mongodb_parameter.py\", \n  \"database/mongodb/mongodb_user\": \"lib/ansible/modules/database/mongodb/mongodb_user.py\", \n  \"database/mongodb/mongodb_user.py\": \"lib/ansible/modules/database/mongodb/mongodb_user.py\", \n  \"database/mssql/mssql_db\": \"lib/ansible/modules/database/mssql/mssql_db.py\", \n  \"database/mssql/mssql_db.py\": \"lib/ansible/modules/database/mssql/mssql_db.py\", \n  \"database/mysql/mysql_db\": \"lib/ansible/modules/database/mysql/mysql_db.py\", \n  \"database/mysql/mysql_db.py\": \"lib/ansible/modules/database/mysql/mysql_db.py\", \n  \"database/mysql/mysql_replication\": \"lib/ansible/modules/database/mysql/mysql_replication.py\", \n  \"database/mysql/mysql_replication.py\": \"lib/ansible/modules/database/mysql/mysql_replication.py\", \n  \"database/mysql/mysql_user\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"database/mysql/mysql_user.py\": \"lib/ansible/modules/database/mysql/mysql_user.py\", \n  \"database/mysql/mysql_variables\": \"lib/ansible/modules/database/mysql/mysql_variables.py\", \n  \"database/mysql/mysql_variables.py\": \"lib/ansible/modules/database/mysql/mysql_variables.py\", \n  \"database/postgresql/postgresql_db\": \"lib/ansible/modules/database/postgresql/postgresql_db.py\", \n  \"database/postgresql/postgresql_db.py\": \"lib/ansible/modules/database/postgresql/postgresql_db.py\", \n  \"database/postgresql/postgresql_ext\": \"lib/ansible/modules/database/postgresql/postgresql_ext.py\", \n  \"database/postgresql/postgresql_ext.py\": \"lib/ansible/modules/database/postgresql/postgresql_ext.py\", \n  \"database/postgresql/postgresql_lang\": \"lib/ansible/modules/database/postgresql/postgresql_lang.py\", \n  \"database/postgresql/postgresql_lang.py\": \"lib/ansible/modules/database/postgresql/postgresql_lang.py\", \n  \"database/postgresql/postgresql_privs\": \"lib/ansible/modules/database/postgresql/postgresql_privs.py\", \n  \"database/postgresql/postgresql_privs.py\": \"lib/ansible/modules/database/postgresql/postgresql_privs.py\", \n  \"database/postgresql/postgresql_schema\": \"lib/ansible/modules/database/postgresql/postgresql_schema.py\", \n  \"database/postgresql/postgresql_schema.py\": \"lib/ansible/modules/database/postgresql/postgresql_schema.py\", \n  \"database/postgresql/postgresql_user\": \"lib/ansible/modules/database/postgresql/postgresql_user.py\", \n  \"database/postgresql/postgresql_user.py\": \"lib/ansible/modules/database/postgresql/postgresql_user.py\", \n  \"database/proxysql/proxysql_backend_servers\": \"lib/ansible/modules/database/proxysql/proxysql_backend_servers.py\", \n  \"database/proxysql/proxysql_backend_servers.py\": \"lib/ansible/modules/database/proxysql/proxysql_backend_servers.py\", \n  \"database/proxysql/proxysql_global_variables\": \"lib/ansible/modules/database/proxysql/proxysql_global_variables.py\", \n  \"database/proxysql/proxysql_global_variables.py\": \"lib/ansible/modules/database/proxysql/proxysql_global_variables.py\", \n  \"database/proxysql/proxysql_manage_config\": \"lib/ansible/modules/database/proxysql/proxysql_manage_config.py\", \n  \"database/proxysql/proxysql_manage_config.py\": \"lib/ansible/modules/database/proxysql/proxysql_manage_config.py\", \n  \"database/proxysql/proxysql_mysql_users\": \"lib/ansible/modules/database/proxysql/proxysql_mysql_users.py\", \n  \"database/proxysql/proxysql_mysql_users.py\": \"lib/ansible/modules/database/proxysql/proxysql_mysql_users.py\", \n  \"database/proxysql/proxysql_query_rules\": \"lib/ansible/modules/database/proxysql/proxysql_query_rules.py\", \n  \"database/proxysql/proxysql_query_rules.py\": \"lib/ansible/modules/database/proxysql/proxysql_query_rules.py\", \n  \"database/proxysql/proxysql_replication_hostgroups\": \"lib/ansible/modules/database/proxysql/proxysql_replication_hostgroups.py\", \n  \"database/proxysql/proxysql_replication_hostgroups.py\": \"lib/ansible/modules/database/proxysql/proxysql_replication_hostgroups.py\", \n  \"database/proxysql/proxysql_scheduler\": \"lib/ansible/modules/database/proxysql/proxysql_scheduler.py\", \n  \"database/proxysql/proxysql_scheduler.py\": \"lib/ansible/modules/database/proxysql/proxysql_scheduler.py\", \n  \"database/vertica/vertica_configuration\": \"lib/ansible/modules/database/vertica/vertica_configuration.py\", \n  \"database/vertica/vertica_configuration.py\": \"lib/ansible/modules/database/vertica/vertica_configuration.py\", \n  \"database/vertica/vertica_facts\": \"lib/ansible/modules/database/vertica/vertica_facts.py\", \n  \"database/vertica/vertica_facts.py\": \"lib/ansible/modules/database/vertica/vertica_facts.py\", \n  \"database/vertica/vertica_role\": \"lib/ansible/modules/database/vertica/vertica_role.py\", \n  \"database/vertica/vertica_role.py\": \"lib/ansible/modules/database/vertica/vertica_role.py\", \n  \"database/vertica/vertica_schema\": \"lib/ansible/modules/database/vertica/vertica_schema.py\", \n  \"database/vertica/vertica_schema.py\": \"lib/ansible/modules/database/vertica/vertica_schema.py\", \n  \"database/vertica/vertica_user\": \"lib/ansible/modules/database/vertica/vertica_user.py\", \n  \"database/vertica/vertica_user.py\": \"lib/ansible/modules/database/vertica/vertica_user.py\", \n  \"datadog_event\": [\n    \"lib/ansible/modules/monitoring/datadog_event.py\"\n  ], \n  \"datadog_event module\": \"lib/ansible/modules/monitoring/datadog_event.py\", \n  \"datadog_monitor\": [\n    \"lib/ansible/modules/monitoring/datadog_monitor.py\"\n  ], \n  \"datadog_monitor module\": \"lib/ansible/modules/monitoring/datadog_monitor.py\", \n  \"dconf\": [\n    \"lib/ansible/modules/system/dconf.py\"\n  ], \n  \"dconf module\": \"lib/ansible/modules/system/dconf.py\", \n  \"debconf\": [\n    \"lib/ansible/modules/system/debconf.py\"\n  ], \n  \"debconf module\": [\n    \"lib/ansible/modules/system/debconf.py\"\n  ], \n  \"debug\": \"lib/ansible/modules/utilities/logic/debug.py\", \n  \"debug\\nhaproxy\": [\n    \"lib/ansible/modules/net_tools/haproxy.py\", \n    \"lib/ansible/modules/utilities/logic/debug.py\"\n  ], \n  \"debug callback plugin\": [\n    \"lib/ansible/plugins/callback/debug.py\"\n  ], \n  \"debug module\": \"lib/ansible/modules/utilities/logic/debug.py\", \n  \"debug var\": [\n    \"lib/ansible/modules/utilities/logic/debug.py\"\n  ], \n  \"default vars, ternary\": [\n    \"lib/ansible/galaxy/data/default/vars\"\n  ], \n  \"delegate_to\": [\n    \"lib/ansible/playbook/task.py\"\n  ], \n  \"delegate_to\\nHave tested using as an option for the `shell` & `debug` tasks\": [\n    \"lib/ansible/playbook/task.py\"\n  ], \n  \"delegate_to + windows\": [], \n  \"delegate_to / lineinfile\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"delegated_facts\": [], \n  \"dellos*_* network modules\": [\n    \"lib/ansible/modules/network\"\n  ], \n  \"dellos10_command\": \"lib/ansible/modules/network/dellos10/dellos10_command.py\", \n  \"dellos10_command module\": \"lib/ansible/modules/network/dellos10/dellos10_command.py\", \n  \"dellos10_config\": \"lib/ansible/modules/network/dellos10/dellos10_config.py\", \n  \"dellos10_config module\": \"lib/ansible/modules/network/dellos10/dellos10_config.py\", \n  \"dellos10_facts\": \"lib/ansible/modules/network/dellos10/dellos10_facts.py\", \n  \"dellos10_facts module\": \"lib/ansible/modules/network/dellos10/dellos10_facts.py\", \n  \"dellos6_command\": \"lib/ansible/modules/network/dellos6/dellos6_command.py\", \n  \"dellos6_command module\": \"lib/ansible/modules/network/dellos6/dellos6_command.py\", \n  \"dellos6_config\": [\n    \"lib/ansible/modules/network/dellos6/dellos6_config.py\"\n  ], \n  \"dellos6_config module\": \"lib/ansible/modules/network/dellos6/dellos6_config.py\", \n  \"dellos6_facts\": \"lib/ansible/modules/network/dellos6/dellos6_facts.py\", \n  \"dellos6_facts module\": \"lib/ansible/modules/network/dellos6/dellos6_facts.py\", \n  \"dellos9_command\": [\n    \"lib/ansible/modules/network/dellos9/dellos9_command.py\"\n  ], \n  \"dellos9_command module\": \"lib/ansible/modules/network/dellos9/dellos9_command.py\", \n  \"dellos9_config\": \"lib/ansible/modules/network/dellos9/dellos9_config.py\", \n  \"dellos9_config module\": \"lib/ansible/modules/network/dellos9/dellos9_config.py\", \n  \"dellos9_facts\": \"lib/ansible/modules/network/dellos9/dellos9_facts.py\", \n  \"dellos9_facts module\": \"lib/ansible/modules/network/dellos9/dellos9_facts.py\", \n  \"dependency\": [], \n  \"deploy_helper\": [\n    \"lib/ansible/modules/web_infrastructure/deploy_helper.py\"\n  ], \n  \"deploy_helper module\": \"lib/ansible/modules/web_infrastructure/deploy_helper.py\", \n  \"developer documentation\": [], \n  \"digital_ocean\": [\n    \"lib/ansible/modules/cloud/digital_ocean/digital_ocean.py\"\n  ], \n  \"digital_ocean module\": [\n    \"lib/ansible/modules/cloud/digital_ocean/digital_ocean.py\"\n  ], \n  \"digital_ocean.py inventory script\": [\n    \"lib/ansible/modules/cloud/digital_ocean/digital_ocean.py\"\n  ], \n  \"digital_ocean_block_storage\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_block_storage.py\", \n  \"digital_ocean_block_storage module\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_block_storage.py\", \n  \"digital_ocean_domain\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_domain.py\", \n  \"digital_ocean_domain module\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_domain.py\", \n  \"digital_ocean_floating_ip\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_floating_ip.py\", \n  \"digital_ocean_floating_ip module\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_floating_ip.py\", \n  \"digital_ocean_sshkey\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey.py\", \n  \"digital_ocean_sshkey module\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey.py\", \n  \"digital_ocean_sshkey.py\": [\n    \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey.py\"\n  ], \n  \"digital_ocean_sshkey_facts\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey_facts.py\", \n  \"digital_ocean_sshkey_facts module\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey_facts.py\", \n  \"digital_ocean_tag\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_tag.py\", \n  \"digital_ocean_tag module\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_tag.py\", \n  \"dimensiondata_network\": \"lib/ansible/modules/cloud/dimensiondata/dimensiondata_network.py\", \n  \"dimensiondata_network module\": \"lib/ansible/modules/cloud/dimensiondata/dimensiondata_network.py\", \n  \"django_manage\": [\n    \"lib/ansible/modules/web_infrastructure/django_manage.py\"\n  ], \n  \"django_manage module\": [\n    \"lib/ansible/modules/web_infrastructure/django_manage.py\"\n  ], \n  \"dladm_etherstub\": \"lib/ansible/modules/network/illumos/dladm_etherstub.py\", \n  \"dladm_etherstub module\": \"lib/ansible/modules/network/illumos/dladm_etherstub.py\", \n  \"dladm_iptun\": \"lib/ansible/modules/network/illumos/dladm_iptun.py\", \n  \"dladm_iptun module\": \"lib/ansible/modules/network/illumos/dladm_iptun.py\", \n  \"dladm_linkprop\": \"lib/ansible/modules/network/illumos/dladm_linkprop.py\", \n  \"dladm_linkprop module\": \"lib/ansible/modules/network/illumos/dladm_linkprop.py\", \n  \"dladm_vlan\": \"lib/ansible/modules/network/illumos/dladm_vlan.py\", \n  \"dladm_vlan module\": \"lib/ansible/modules/network/illumos/dladm_vlan.py\", \n  \"dladm_vnic\": \"lib/ansible/modules/network/illumos/dladm_vnic.py\", \n  \"dladm_vnic module\": \"lib/ansible/modules/network/illumos/dladm_vnic.py\", \n  \"dnf\": [\n    \"lib/ansible/modules/packaging/os/dnf.py\"\n  ], \n  \"dnf module\": [\n    \"lib/ansible/modules/packaging/os/dnf.py\"\n  ], \n  \"dnsimple\": [\n    \"lib/ansible/modules/net_tools/dnsimple.py\"\n  ], \n  \"dnsimple module\": \"lib/ansible/modules/net_tools/dnsimple.py\", \n  \"dnsmadeeasy\": [\n    \"lib/ansible/modules/net_tools/dnsmadeeasy.py\"\n  ], \n  \"dnsmadeeasy module\": \"lib/ansible/modules/net_tools/dnsmadeeasy.py\", \n  \"docker\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"docker connection module, docker detailed guide.\": [\n    \"lib/ansible/plugins/connection/docker.py\"\n  ], \n  \"docker connection plugin\": [\n    \"lib/ansible/plugins/connection/docker.py\"\n  ], \n  \"docker dynamic inventory\": [\n    \"contrib/inventory/docker.py\"\n  ], \n  \"docker inventory plugin\": [\n    \"lib/ansible/plugins/inventory\"\n  ], \n  \"docker module\": [\n    \"lib/ansible/modules/cloud/docker/_docker.py\"\n  ], \n  \"docker-container\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"docker_container\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"docker_container\\ndocker_image\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"lib/ansible/modules/cloud/docker/docker_image.py\"\n  ], \n  \"docker_container module\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"docker_container/\": [], \n  \"docker_image\": [\n    \"lib/ansible/modules/cloud/docker/docker_image.py\"\n  ], \n  \"docker_image module\": [\n    \"lib/ansible/modules/cloud/docker/docker_image.py\"\n  ], \n  \"docker_image_facts\": [\n    \"lib/ansible/modules/cloud/docker/docker_image_facts.py\"\n  ], \n  \"docker_image_facts module\": \"lib/ansible/modules/cloud/docker/docker_image_facts.py\", \n  \"docker_images\": [], \n  \"docker_login\": [\n    \"lib/ansible/modules/cloud/docker/docker_login.py\"\n  ], \n  \"docker_login\\n```\\nlib/ansible/modules/docker/docker_login.py\\n```\": [\n    \"lib/ansible/modules/cloud/docker/docker_login.py\"\n  ], \n  \"docker_login module\": \"lib/ansible/modules/cloud/docker/docker_login.py\", \n  \"docker_login, docker_service\": [\n    \"lib/ansible/modules/cloud/docker/docker_login.py\", \n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"docker_network\": [\n    \"lib/ansible/modules/cloud/docker/docker_network.py\"\n  ], \n  \"docker_network module\": \"lib/ansible/modules/cloud/docker/docker_network.py\", \n  \"docker_secret\": \"lib/ansible/modules/cloud/docker/docker_secret.py\", \n  \"docker_secret module\": \"lib/ansible/modules/cloud/docker/docker_secret.py\", \n  \"docker_service\": [\n    \"lib/ansible/modules/cloud/docker/docker_service.py\"\n  ], \n  \"docker_service module\": \"lib/ansible/modules/cloud/docker/docker_service.py\", \n  \"docker_volume\": \"lib/ansible/modules/cloud/docker/docker_volume.py\", \n  \"docker_volume module\": \"lib/ansible/modules/cloud/docker/docker_volume.py\", \n  \"docs\": [], \n  \"docs / website\": [\n    \"docs\"\n  ], \n  \"docs.ansible.com, man page\": [\n    \"docs\"\n  ], \n  \"documentation\": [], \n  \"dpkg_selections\": \"lib/ansible/modules/packaging/os/dpkg_selections.py\", \n  \"dpkg_selections module\": \"lib/ansible/modules/packaging/os/dpkg_selections.py\", \n  \"dynamic inventory script\": [\n    \"contrib/inventory\"\n  ], \n  \"dynamodb_table\": [\n    \"lib/ansible/modules/cloud/amazon/dynamodb_table.py\"\n  ], \n  \"dynamodb_table module\": \"lib/ansible/modules/cloud/amazon/dynamodb_table.py\", \n  \"dynamodb_ttl\": \"lib/ansible/modules/cloud/amazon/dynamodb_ttl.py\", \n  \"dynamodb_ttl module\": \"lib/ansible/modules/cloud/amazon/dynamodb_ttl.py\", \n  \"easy_install\": [\n    \"lib/ansible/modules/packaging/language/easy_install.py\"\n  ], \n  \"easy_install module\": [\n    \"lib/ansible/modules/packaging/language/easy_install.py\"\n  ], \n  \"ec2\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"ec2 - create, terminate, start or stop an instance in ec2\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"ec2 dynamic inventory\": [\n    \"contrib/inventory/ec2\"\n  ], \n  \"ec2 module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"ec2 module, probably needs its own action, such as `rds_option_group`\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"ec2 modules\": [\n    \"lib/ansible/modules/cloud/amazon\"\n  ], \n  \"ec2-asg-facts\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg_facts.py\"\n  ], \n  \"ec2.py\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"ec2.py dynamic inventory file for AWS\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"ec2.py dynamic inventory script\": [\n    \"contrib/inventory/ec2\"\n  ], \n  \"ec2.py inventory script\": [\n    \"contrib/inventory/ec2\"\n  ], \n  \"ec2_ami\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_ami.py\"\n  ], \n  \"ec2_ami   - adding AWS ENA support.\": [], \n  \"ec2_ami module\": \"lib/ansible/modules/cloud/amazon/ec2_ami.py\", \n  \"ec2_ami_copy\": \"lib/ansible/modules/cloud/amazon/ec2_ami_copy.py\", \n  \"ec2_ami_copy module\": \"lib/ansible/modules/cloud/amazon/ec2_ami_copy.py\", \n  \"ec2_ami_facts\": \"lib/ansible/modules/cloud/amazon/ec2_ami_facts.py\", \n  \"ec2_ami_facts module\": \"lib/ansible/modules/cloud/amazon/ec2_ami_facts.py\", \n  \"ec2_ami_find\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_ami_find.py\"\n  ], \n  \"ec2_ami_find module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_ami_find.py\"\n  ], \n  \"ec2_ami_search\": \"lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\", \n  \"ec2_ami_search module\": \"lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\", \n  \"ec2_asg\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"ec2_asg Module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"ec2_asg module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"ec2_asg.py\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_asg.py\"\n  ], \n  \"ec2_asg_facts\": \"lib/ansible/modules/cloud/amazon/ec2_asg_facts.py\", \n  \"ec2_asg_facts module\": \"lib/ansible/modules/cloud/amazon/ec2_asg_facts.py\", \n  \"ec2_customer_gateway\": \"lib/ansible/modules/cloud/amazon/ec2_customer_gateway.py\", \n  \"ec2_customer_gateway module\": \"lib/ansible/modules/cloud/amazon/ec2_customer_gateway.py\", \n  \"ec2_eip\": \"lib/ansible/modules/cloud/amazon/ec2_eip.py\", \n  \"ec2_eip module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_eip.py\"\n  ], \n  \"ec2_elb\": \"lib/ansible/modules/cloud/amazon/ec2_elb.py\", \n  \"ec2_elb module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb.py\"\n  ], \n  \"ec2_elb, ec2_elb_lb, ec2_elb_facts\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb.py\", \n    \"lib/ansible/modules/cloud/amazon/ec2_elb_facts.py\", \n    \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\"\n  ], \n  \"ec2_elb_facts\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb_facts.py\"\n  ], \n  \"ec2_elb_facts module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb_facts.py\"\n  ], \n  \"ec2_elb_lb\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\"\n  ], \n  \"ec2_elb_lb module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\"\n  ], \n  \"ec2_elb_lb.py\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\"\n  ], \n  \"ec2_eni\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_eni.py\"\n  ], \n  \"ec2_eni module\": \"lib/ansible/modules/cloud/amazon/ec2_eni.py\", \n  \"ec2_eni_facts\": \"lib/ansible/modules/cloud/amazon/ec2_eni_facts.py\", \n  \"ec2_eni_facts module\": \"lib/ansible/modules/cloud/amazon/ec2_eni_facts.py\", \n  \"ec2_facts\": [\n    \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\"\n  ], \n  \"ec2_facts module\": \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\", \n  \"ec2_group\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"ec2_group / ec2\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"ec2_group module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_group.py\"\n  ], \n  \"ec2_group_facts\": \"lib/ansible/modules/cloud/amazon/ec2_group_facts.py\", \n  \"ec2_group_facts module\": \"lib/ansible/modules/cloud/amazon/ec2_group_facts.py\", \n  \"ec2_instance_facts\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_instance_facts.py\"\n  ], \n  \"ec2_instance_facts module\": \"lib/ansible/modules/cloud/amazon/ec2_instance_facts.py\", \n  \"ec2_instance_facts.py\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_instance_facts.py\"\n  ], \n  \"ec2_key\": \"lib/ansible/modules/cloud/amazon/ec2_key.py\", \n  \"ec2_key module\": \"lib/ansible/modules/cloud/amazon/ec2_key.py\", \n  \"ec2_lc\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_lc.py\"\n  ], \n  \"ec2_lc module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_lc.py\"\n  ], \n  \"ec2_lc_facts\": \"lib/ansible/modules/cloud/amazon/ec2_lc_facts.py\", \n  \"ec2_lc_facts module\": \"lib/ansible/modules/cloud/amazon/ec2_lc_facts.py\", \n  \"ec2_lc_find\": \"lib/ansible/modules/cloud/amazon/ec2_lc_find.py\", \n  \"ec2_lc_find module\": \"lib/ansible/modules/cloud/amazon/ec2_lc_find.py\", \n  \"ec2_metadata_facts\": \"lib/ansible/modules/cloud/amazon/ec2_metadata_facts.py\", \n  \"ec2_metadata_facts module\": \"lib/ansible/modules/cloud/amazon/ec2_metadata_facts.py\", \n  \"ec2_metric_alarm\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py\"\n  ], \n  \"ec2_metric_alarm module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py\"\n  ], \n  \"ec2_remote_facts\": [\n    \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\"\n  ], \n  \"ec2_remote_facts module\": \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\", \n  \"ec2_scaling_policy\": \"lib/ansible/modules/cloud/amazon/ec2_scaling_policy.py\", \n  \"ec2_scaling_policy module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_scaling_policy.py\"\n  ], \n  \"ec2_snapshot\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot.py\", \n  \"ec2_snapshot module\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot.py\", \n  \"ec2_snapshot module currently does not support cross region snapshot copy.\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_snapshot.py\"\n  ], \n  \"ec2_snapshot_copy\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot_copy.py\", \n  \"ec2_snapshot_copy module\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot_copy.py\", \n  \"ec2_snapshot_facts\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot_facts.py\", \n  \"ec2_snapshot_facts module\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot_facts.py\", \n  \"ec2_tag\": \"lib/ansible/modules/cloud/amazon/ec2_tag.py\", \n  \"ec2_tag module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_tag.py\"\n  ], \n  \"ec2_vol\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vol.py\"\n  ], \n  \"ec2_vol module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vol.py\"\n  ], \n  \"ec2_vol: https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/cloud/amazon/ec2_vol.py\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vol.py\"\n  ], \n  \"ec2_vol_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vol_facts.py\", \n  \"ec2_vol_facts module\": \"lib/ansible/modules/cloud/amazon/ec2_vol_facts.py\", \n  \"ec2_vpc\": [\n    \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\"\n  ], \n  \"ec2_vpc module\": [\n    \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\"\n  ], \n  \"ec2_vpc_dhcp_option\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option.py\", \n  \"ec2_vpc_dhcp_option module\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option.py\", \n  \"ec2_vpc_dhcp_option_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option_facts.py\", \n  \"ec2_vpc_dhcp_option_facts module\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option_facts.py\", \n  \"ec2_vpc_dhcp_options\": [\n    \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\"\n  ], \n  \"ec2_vpc_dhcp_options module\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\", \n  \"ec2_vpc_dhcp_options_facts\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\", \n  \"ec2_vpc_dhcp_options_facts module\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\", \n  \"ec2_vpc_endpoint\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint.py\", \n  \"ec2_vpc_endpoint module\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint.py\", \n  \"ec2_vpc_endpoint_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint_facts.py\", \n  \"ec2_vpc_endpoint_facts module\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint_facts.py\", \n  \"ec2_vpc_igw\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw.py\"\n  ], \n  \"ec2_vpc_igw module\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw.py\", \n  \"ec2_vpc_igw_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw_facts.py\", \n  \"ec2_vpc_igw_facts module\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw_facts.py\", \n  \"ec2_vpc_nacl\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl.py\", \n  \"ec2_vpc_nacl module\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl.py\", \n  \"ec2_vpc_nacl_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl_facts.py\", \n  \"ec2_vpc_nacl_facts module\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl_facts.py\", \n  \"ec2_vpc_nat_gateway\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway.py\"\n  ], \n  \"ec2_vpc_nat_gateway module\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway.py\", \n  \"ec2_vpc_nat_gateway_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway_facts.py\", \n  \"ec2_vpc_nat_gateway_facts module\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway_facts.py\", \n  \"ec2_vpc_net\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_net.py\"\n  ], \n  \"ec2_vpc_net module\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_net.py\", \n  \"ec2_vpc_net_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_net_facts.py\", \n  \"ec2_vpc_net_facts module\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_net_facts.py\", \n  \"ec2_vpc_peer\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peer.py\", \n  \"ec2_vpc_peer module\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peer.py\", \n  \"ec2_vpc_peering_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peering_facts.py\", \n  \"ec2_vpc_peering_facts module\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peering_facts.py\", \n  \"ec2_vpc_route_table\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\"\n  ], \n  \"ec2_vpc_route_table module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\"\n  ], \n  \"ec2_vpc_route_table.py\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\"\n  ], \n  \"ec2_vpc_route_table_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table_facts.py\", \n  \"ec2_vpc_route_table_facts module\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table_facts.py\", \n  \"ec2_vpc_subnet\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet.py\"\n  ], \n  \"ec2_vpc_subnet module\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet.py\", \n  \"ec2_vpc_subnet_facts\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet_facts.py\"\n  ], \n  \"ec2_vpc_subnet_facts module\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet_facts.py\", \n  \"ec2_vpc_vgw\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw.py\", \n  \"ec2_vpc_vgw module\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw.py\", \n  \"ec2_vpc_vgw_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw_facts.py\", \n  \"ec2_vpc_vgw_facts module\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw_facts.py\", \n  \"ec2_vpc_vpn\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vpn.py\", \n  \"ec2_vpc_vpn module\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vpn.py\", \n  \"ec2_win_password\": \"lib/ansible/modules/cloud/amazon/ec2_win_password.py\", \n  \"ec2_win_password module\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_win_password.py\"\n  ], \n  \"ecs_attribute\": \"lib/ansible/modules/cloud/amazon/ecs_attribute.py\", \n  \"ecs_attribute module\": \"lib/ansible/modules/cloud/amazon/ecs_attribute.py\", \n  \"ecs_cluster\": \"lib/ansible/modules/cloud/amazon/ecs_cluster.py\", \n  \"ecs_cluster module\": \"lib/ansible/modules/cloud/amazon/ecs_cluster.py\", \n  \"ecs_ecr\": \"lib/ansible/modules/cloud/amazon/ecs_ecr.py\", \n  \"ecs_ecr module\": \"lib/ansible/modules/cloud/amazon/ecs_ecr.py\", \n  \"ecs_service\": [\n    \"lib/ansible/modules/cloud/amazon/ecs_service.py\"\n  ], \n  \"ecs_service module\": \"lib/ansible/modules/cloud/amazon/ecs_service.py\", \n  \"ecs_service_facts\": [\n    \"lib/ansible/modules/cloud/amazon/ecs_service_facts.py\"\n  ], \n  \"ecs_service_facts module\": \"lib/ansible/modules/cloud/amazon/ecs_service_facts.py\", \n  \"ecs_task\": \"lib/ansible/modules/cloud/amazon/ecs_task.py\", \n  \"ecs_task module\": \"lib/ansible/modules/cloud/amazon/ecs_task.py\", \n  \"ecs_taskdefinition\": [\n    \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py\"\n  ], \n  \"ecs_taskdefinition module\": [\n    \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py\"\n  ], \n  \"ecs_taskdefinition.py\": [\n    \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py\"\n  ], \n  \"ecs_taskdefinition_facts\": \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition_facts.py\", \n  \"ecs_taskdefinition_facts module\": \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition_facts.py\", \n  \"efs\": \"lib/ansible/modules/cloud/amazon/efs.py\", \n  \"efs module\": [\n    \"lib/ansible/modules/cloud/amazon/efs.py\"\n  ], \n  \"efs_facts\": [\n    \"lib/ansible/modules/cloud/amazon/efs_facts.py\"\n  ], \n  \"efs_facts module\": [\n    \"lib/ansible/modules/cloud/amazon/efs_facts.py\"\n  ], \n  \"efs_facts.py\": [\n    \"lib/ansible/modules/cloud/amazon/efs_facts.py\"\n  ], \n  \"ejabberd_user\": \"lib/ansible/modules/web_infrastructure/ejabberd_user.py\", \n  \"ejabberd_user module\": \"lib/ansible/modules/web_infrastructure/ejabberd_user.py\", \n  \"elasticache\": [\n    \"lib/ansible/modules/cloud/amazon/elasticache.py\"\n  ], \n  \"elasticache module\": [\n    \"lib/ansible/modules/cloud/amazon/elasticache.py\"\n  ], \n  \"elasticache modules\": [\n    \"lib/ansible/modules/cloud/amazon/elasticache.py\"\n  ], \n  \"elasticache_parameter_group\": [\n    \"lib/ansible/modules/cloud/amazon/elasticache_parameter_group.py\"\n  ], \n  \"elasticache_parameter_group module\": \"lib/ansible/modules/cloud/amazon/elasticache_parameter_group.py\", \n  \"elasticache_snapshot\": \"lib/ansible/modules/cloud/amazon/elasticache_snapshot.py\", \n  \"elasticache_snapshot module\": \"lib/ansible/modules/cloud/amazon/elasticache_snapshot.py\", \n  \"elasticache_subnet_group\": \"lib/ansible/modules/cloud/amazon/elasticache_subnet_group.py\", \n  \"elasticache_subnet_group module\": \"lib/ansible/modules/cloud/amazon/elasticache_subnet_group.py\", \n  \"elasticsearch_plugin\": \"lib/ansible/modules/database/misc/elasticsearch_plugin.py\", \n  \"elasticsearch_plugin module\": [\n    \"lib/ansible/modules/database/misc/elasticsearch_plugin.py\"\n  ], \n  \"elb_application_lb\": [\n    \"lib/ansible/modules/cloud/amazon/elb_application_lb.py\"\n  ], \n  \"elb_application_lb module\": \"lib/ansible/modules/cloud/amazon/elb_application_lb.py\", \n  \"elb_application_lb_facts\": \"lib/ansible/modules/cloud/amazon/elb_application_lb_facts.py\", \n  \"elb_application_lb_facts module\": \"lib/ansible/modules/cloud/amazon/elb_application_lb_facts.py\", \n  \"elb_classic_lb\": \"lib/ansible/modules/cloud/amazon/elb_classic_lb.py\", \n  \"elb_classic_lb et al.\": [], \n  \"elb_classic_lb module\": \"lib/ansible/modules/cloud/amazon/elb_classic_lb.py\", \n  \"elb_classic_lb_facts\": \"lib/ansible/modules/cloud/amazon/elb_classic_lb_facts.py\", \n  \"elb_classic_lb_facts module\": \"lib/ansible/modules/cloud/amazon/elb_classic_lb_facts.py\", \n  \"elb_instance\": \"lib/ansible/modules/cloud/amazon/elb_instance.py\", \n  \"elb_instance module\": \"lib/ansible/modules/cloud/amazon/elb_instance.py\", \n  \"elb_target_group\": [\n    \"lib/ansible/modules/cloud/amazon/elb_target_group.py\"\n  ], \n  \"elb_target_group module\": \"lib/ansible/modules/cloud/amazon/elb_target_group.py\", \n  \"elb_target_group_facts\": [\n    \"lib/ansible/modules/cloud/amazon/elb_target_group_facts.py\"\n  ], \n  \"elb_target_group_facts module\": \"lib/ansible/modules/cloud/amazon/elb_target_group_facts.py\", \n  \"environment specific modules\": [], \n  \"environment variables\": [], \n  \"eos_*\\nnxos_*\": [], \n  \"eos_banner\": [\n    \"lib/ansible/modules/network/eos/eos_banner.py\"\n  ], \n  \"eos_banner module\": \"lib/ansible/modules/network/eos/eos_banner.py\", \n  \"eos_command\": [\n    \"lib/ansible/modules/network/eos/eos_command.py\"\n  ], \n  \"eos_command module\": \"lib/ansible/modules/network/eos/eos_command.py\", \n  \"eos_config\": [\n    \"lib/ansible/modules/network/eos/eos_config.py\"\n  ], \n  \"eos_config module\": \"lib/ansible/modules/network/eos/eos_config.py\", \n  \"eos_eapi\": \"lib/ansible/modules/network/eos/eos_eapi.py\", \n  \"eos_eapi module\": \"lib/ansible/modules/network/eos/eos_eapi.py\", \n  \"eos_facts\": \"lib/ansible/modules/network/eos/eos_facts.py\", \n  \"eos_facts module\": \"lib/ansible/modules/network/eos/eos_facts.py\", \n  \"eos_logging\": [\n    \"lib/ansible/modules/network/eos/eos_logging.py\"\n  ], \n  \"eos_logging module\": \"lib/ansible/modules/network/eos/eos_logging.py\", \n  \"eos_system\": \"lib/ansible/modules/network/eos/eos_system.py\", \n  \"eos_system module\": \"lib/ansible/modules/network/eos/eos_system.py\", \n  \"eos_user\": [\n    \"lib/ansible/modules/network/eos/eos_user.py\"\n  ], \n  \"eos_user module\": \"lib/ansible/modules/network/eos/eos_user.py\", \n  \"eos_vlan\": \"lib/ansible/modules/network/eos/eos_vlan.py\", \n  \"eos_vlan module\": \"lib/ansible/modules/network/eos/eos_vlan.py\", \n  \"eos_vrf\": \"lib/ansible/modules/network/eos/eos_vrf.py\", \n  \"eos_vrf\\neos_eapi\": [\n    \"lib/ansible/modules/network/eos/eos_eapi.py\", \n    \"lib/ansible/modules/network/eos/eos_vrf.py\"\n  ], \n  \"eos_vrf module\": \"lib/ansible/modules/network/eos/eos_vrf.py\", \n  \"examples/scripts/ConfigureRemotingForAnsible.ps1\\nSee https://github.com/ansible/ansible/pull/23684\": [\n    \"examples/scripts/ConfigureRemotingForAnsible.ps1\"\n  ], \n  \"execute_lambda\": \"lib/ansible/modules/cloud/amazon/execute_lambda.py\", \n  \"execute_lambda module\": \"lib/ansible/modules/cloud/amazon/execute_lambda.py\", \n  \"exo_dns_domain\": \"lib/ansible/modules/net_tools/exoscale/exo_dns_domain.py\", \n  \"exo_dns_domain module\": \"lib/ansible/modules/net_tools/exoscale/exo_dns_domain.py\", \n  \"exo_dns_record\": \"lib/ansible/modules/net_tools/exoscale/exo_dns_record.py\", \n  \"exo_dns_record module\": \"lib/ansible/modules/net_tools/exoscale/exo_dns_record.py\", \n  \"expect\": [\n    \"lib/ansible/modules/commands/expect.py\"\n  ], \n  \"expect module\": [\n    \"lib/ansible/modules/commands/expect.py\"\n  ], \n  \"expect_module\": [\n    \"lib/ansible/modules/commands/expect.py\"\n  ], \n  \"fact module?\": [], \n  \"fact related modules\": [], \n  \"facter\": \"lib/ansible/modules/system/facter.py\", \n  \"facter module\": \"lib/ansible/modules/system/facter.py\", \n  \"facts\": [\n    \"lib/ansible/module_utils/facts\"\n  ], \n  \"facts  'virtualization_type' and 'virtualization_role'\": [], \n  \"facts collection\": [], \n  \"facts plugin\": [], \n  \"fail\": \"lib/ansible/modules/utilities/logic/fail.py\", \n  \"fail module\": \"lib/ansible/modules/utilities/logic/fail.py\", \n  \"feature\": [], \n  \"fetch\": [\n    \"lib/ansible/modules/files/fetch.py\"\n  ], \n  \"fetch module\": \"lib/ansible/modules/files/fetch.py\", \n  \"fetch_url helper in module utils\": [\n    \"lib/ansible/module_utils\"\n  ], \n  \"file\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"file module\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"files/acl\": \"lib/ansible/modules/files/acl.py\", \n  \"files/acl.py\": \"lib/ansible/modules/files/acl.py\", \n  \"files/archive\": \"lib/ansible/modules/files/archive.py\", \n  \"files/archive.py\": \"lib/ansible/modules/files/archive.py\", \n  \"files/assemble\": \"lib/ansible/modules/files/assemble.py\", \n  \"files/assemble.py\": \"lib/ansible/modules/files/assemble.py\", \n  \"files/blockinfile\": \"lib/ansible/modules/files/blockinfile.py\", \n  \"files/blockinfile.py\": \"lib/ansible/modules/files/blockinfile.py\", \n  \"files/copy\": \"lib/ansible/modules/files/copy.py\", \n  \"files/copy.py\": \"lib/ansible/modules/files/copy.py\", \n  \"files/fetch\": \"lib/ansible/modules/files/fetch.py\", \n  \"files/fetch.py\": \"lib/ansible/modules/files/fetch.py\", \n  \"files/file\": \"lib/ansible/modules/files/file.py\", \n  \"files/file.py\": \"lib/ansible/modules/files/file.py\", \n  \"files/find\": \"lib/ansible/modules/files/find.py\", \n  \"files/find.py\": \"lib/ansible/modules/files/find.py\", \n  \"files/ini_file\": \"lib/ansible/modules/files/ini_file.py\", \n  \"files/ini_file.py\": \"lib/ansible/modules/files/ini_file.py\", \n  \"files/iso_extract\": \"lib/ansible/modules/files/iso_extract.py\", \n  \"files/iso_extract.py\": \"lib/ansible/modules/files/iso_extract.py\", \n  \"files/lineinfile\": \"lib/ansible/modules/files/lineinfile.py\", \n  \"files/lineinfile.py\": \"lib/ansible/modules/files/lineinfile.py\", \n  \"files/patch\": \"lib/ansible/modules/files/patch.py\", \n  \"files/patch.py\": \"lib/ansible/modules/files/patch.py\", \n  \"files/replace\": \"lib/ansible/modules/files/replace.py\", \n  \"files/replace module\": [\n    \"lib/ansible/modules/files/replace.py\"\n  ], \n  \"files/replace.py\": \"lib/ansible/modules/files/replace.py\", \n  \"files/stat\": \"lib/ansible/modules/files/stat.py\", \n  \"files/stat.py\": \"lib/ansible/modules/files/stat.py\", \n  \"files/synchronize\": \"lib/ansible/modules/files/synchronize.py\", \n  \"files/synchronize.py\": \"lib/ansible/modules/files/synchronize.py\", \n  \"files/tempfile\": \"lib/ansible/modules/files/tempfile.py\", \n  \"files/tempfile.py\": \"lib/ansible/modules/files/tempfile.py\", \n  \"files/template\": \"lib/ansible/modules/files/template.py\", \n  \"files/template.py\": \"lib/ansible/modules/files/template.py\", \n  \"files/unarchive\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"files/unarchive.py\": \"lib/ansible/modules/files/unarchive.py\", \n  \"files/xattr\": \"lib/ansible/modules/files/xattr.py\", \n  \"files/xattr.py\": \"lib/ansible/modules/files/xattr.py\", \n  \"files/xml\": \"lib/ansible/modules/files/xml.py\", \n  \"files/xml.py\": \"lib/ansible/modules/files/xml.py\", \n  \"filesystem\": [\n    \"lib/ansible/modules/system/filesystem.py\"\n  ], \n  \"filesystem module\": [\n    \"lib/ansible/modules/system/filesystem.py\"\n  ], \n  \"filter_plugins/core\": [], \n  \"filters\": [], \n  \"find\": \"lib/ansible/modules/files/find.py\", \n  \"find module\": [\n    \"lib/ansible/modules/files/find.py\"\n  ], \n  \"find module, stat module\": [\n    \"lib/ansible/modules/files/find.py\"\n  ], \n  \"firewalld\": [\n    \"lib/ansible/modules/system/firewalld.py\"\n  ], \n  \"firewalld module\": [\n    \"lib/ansible/modules/system/firewalld.py\"\n  ], \n  \"first_found lookup\": [\n    \"lib/ansible/plugins/lookup/first_found.py\"\n  ], \n  \"flowadm\": \"lib/ansible/modules/network/illumos/flowadm.py\", \n  \"flowadm module\": \"lib/ansible/modules/network/illumos/flowadm.py\", \n  \"flowdock\": \"lib/ansible/modules/notification/flowdock.py\", \n  \"flowdock module\": \"lib/ansible/modules/notification/flowdock.py\", \n  \"foreman\": \"lib/ansible/modules/remote_management/foreman/foreman.py\", \n  \"foreman module\": [\n    \"lib/ansible/modules/remote_management/foreman/foreman.py\"\n  ], \n  \"foreman.py callback\": [\n    \"lib/ansible/modules/remote_management/foreman/foreman.py\"\n  ], \n  \"fortios_*\": [], \n  \"fortios_address\": \"lib/ansible/modules/network/fortios/fortios_address.py\", \n  \"fortios_address module\": \"lib/ansible/modules/network/fortios/fortios_address.py\", \n  \"fortios_config\": \"lib/ansible/modules/network/fortios/fortios_config.py\", \n  \"fortios_config module\": \"lib/ansible/modules/network/fortios/fortios_config.py\", \n  \"fortios_ipv4_policy\": \"lib/ansible/modules/network/fortios/fortios_ipv4_policy.py\", \n  \"fortios_ipv4_policy module\": \"lib/ansible/modules/network/fortios/fortios_ipv4_policy.py\", \n  \"galaxy\": [\n    \"lib/ansible/galaxy\"\n  ], \n  \"gather facts inside roles/tasks/.yml\": [\n    \"lib/ansible/module_utils/facts\"\n  ], \n  \"gather_facts\": [], \n  \"gather_facts, hostvars\": [\n    \"lib/ansible/vars/hostvars.py\"\n  ], \n  \"gc_storage\": \"lib/ansible/modules/cloud/google/gc_storage.py\", \n  \"gc_storage module\": \"lib/ansible/modules/cloud/google/gc_storage.py\", \n  \"gcdns_record\": \"lib/ansible/modules/cloud/google/gcdns_record.py\", \n  \"gcdns_record module\": \"lib/ansible/modules/cloud/google/gcdns_record.py\", \n  \"gcdns_zone\": \"lib/ansible/modules/cloud/google/gcdns_zone.py\", \n  \"gcdns_zone module\": \"lib/ansible/modules/cloud/google/gcdns_zone.py\", \n  \"gce\": [\n    \"lib/ansible/modules/cloud/google/gce.py\"\n  ], \n  \"gce module\": [\n    \"lib/ansible/modules/cloud/google/gce.py\"\n  ], \n  \"gce module_util\": [\n    \"lib/ansible/modules/cloud/google/gce.py\"\n  ], \n  \"gce_eip\": \"lib/ansible/modules/cloud/google/gce_eip.py\", \n  \"gce_eip module\": \"lib/ansible/modules/cloud/google/gce_eip.py\", \n  \"gce_img\": \"lib/ansible/modules/cloud/google/gce_img.py\", \n  \"gce_img module\": \"lib/ansible/modules/cloud/google/gce_img.py\", \n  \"gce_instance_template\": [\n    \"lib/ansible/modules/cloud/google/gce_instance_template.py\"\n  ], \n  \"gce_instance_template module\": \"lib/ansible/modules/cloud/google/gce_instance_template.py\", \n  \"gce_labels\": \"lib/ansible/modules/cloud/google/gce_labels.py\", \n  \"gce_labels module\": \"lib/ansible/modules/cloud/google/gce_labels.py\", \n  \"gce_lb\": [\n    \"lib/ansible/modules/cloud/google/gce_lb.py\"\n  ], \n  \"gce_lb module\": \"lib/ansible/modules/cloud/google/gce_lb.py\", \n  \"gce_mig\": [\n    \"lib/ansible/modules/cloud/google/gce_mig.py\"\n  ], \n  \"gce_mig module\": \"lib/ansible/modules/cloud/google/gce_mig.py\", \n  \"gce_net\": \"lib/ansible/modules/cloud/google/gce_net.py\", \n  \"gce_net module\": \"lib/ansible/modules/cloud/google/gce_net.py\", \n  \"gce_pd\": [\n    \"lib/ansible/modules/cloud/google/gce_pd.py\"\n  ], \n  \"gce_pd module\": [\n    \"lib/ansible/modules/cloud/google/gce_pd.py\"\n  ], \n  \"gce_snapshot\": \"lib/ansible/modules/cloud/google/gce_snapshot.py\", \n  \"gce_snapshot module\": \"lib/ansible/modules/cloud/google/gce_snapshot.py\", \n  \"gce_tag\": \"lib/ansible/modules/cloud/google/gce_tag.py\", \n  \"gce_tag module\": \"lib/ansible/modules/cloud/google/gce_tag.py\", \n  \"gconftool2\": \"lib/ansible/modules/system/gconftool2.py\", \n  \"gconftool2 module\": \"lib/ansible/modules/system/gconftool2.py\", \n  \"gcp_backend_service\": \"lib/ansible/modules/cloud/google/gcp_backend_service.py\", \n  \"gcp_backend_service module\": \"lib/ansible/modules/cloud/google/gcp_backend_service.py\", \n  \"gcp_forwarding_rule\": \"lib/ansible/modules/cloud/google/gcp_forwarding_rule.py\", \n  \"gcp_forwarding_rule module\": \"lib/ansible/modules/cloud/google/gcp_forwarding_rule.py\", \n  \"gcp_healthcheck\": [\n    \"lib/ansible/modules/cloud/google/gcp_healthcheck.py\"\n  ], \n  \"gcp_healthcheck module\": \"lib/ansible/modules/cloud/google/gcp_healthcheck.py\", \n  \"gcp_target_proxy\": \"lib/ansible/modules/cloud/google/gcp_target_proxy.py\", \n  \"gcp_target_proxy module\": \"lib/ansible/modules/cloud/google/gcp_target_proxy.py\", \n  \"gcp_url_map\": \"lib/ansible/modules/cloud/google/gcp_url_map.py\", \n  \"gcp_url_map module\": \"lib/ansible/modules/cloud/google/gcp_url_map.py\", \n  \"gcpubsub\": [\n    \"lib/ansible/modules/cloud/google/gcpubsub.py\"\n  ], \n  \"gcpubsub module\": \"lib/ansible/modules/cloud/google/gcpubsub.py\", \n  \"gcpubsub_facts\": \"lib/ansible/modules/cloud/google/gcpubsub_facts.py\", \n  \"gcpubsub_facts module\": \"lib/ansible/modules/cloud/google/gcpubsub_facts.py\", \n  \"gcspanner\": \"lib/ansible/modules/cloud/google/gcspanner.py\", \n  \"gcspanner module\": \"lib/ansible/modules/cloud/google/gcspanner.py\", \n  \"gem\": [\n    \"lib/ansible/modules/packaging/language/gem.py\"\n  ], \n  \"gem module\": [\n    \"lib/ansible/modules/packaging/language/gem.py\"\n  ], \n  \"gem:\": [\n    \"lib/ansible/modules/packaging/language/gem.py\"\n  ], \n  \"get_url\": [\n    \"lib/ansible/modules/net_tools/basics/get_url.py\"\n  ], \n  \"get_url module\": [\n    \"lib/ansible/modules/net_tools/basics/get_url.py\"\n  ], \n  \"getent\": \"lib/ansible/modules/system/getent.py\", \n  \"getent module\": \"lib/ansible/modules/system/getent.py\", \n  \"git\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"git module\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"git_config\": [\n    \"lib/ansible/modules/source_control/git_config.py\"\n  ], \n  \"git_config module\": \"lib/ansible/modules/source_control/git_config.py\", \n  \"github_deploy_key\": [\n    \"lib/ansible/modules/source_control/github_deploy_key.py\"\n  ], \n  \"github_deploy_key module\": \"lib/ansible/modules/source_control/github_deploy_key.py\", \n  \"github_hooks\": \"lib/ansible/modules/source_control/github_hooks.py\", \n  \"github_hooks module\": \"lib/ansible/modules/source_control/github_hooks.py\", \n  \"github_issue\": \"lib/ansible/modules/source_control/github_issue.py\", \n  \"github_issue module\": \"lib/ansible/modules/source_control/github_issue.py\", \n  \"github_key\": \"lib/ansible/modules/source_control/github_key.py\", \n  \"github_key module\": \"lib/ansible/modules/source_control/github_key.py\", \n  \"github_release\": \"lib/ansible/modules/source_control/github_release.py\", \n  \"github_release module\": \"lib/ansible/modules/source_control/github_release.py\", \n  \"gitlab_group\": \"lib/ansible/modules/source_control/gitlab_group.py\", \n  \"gitlab_group module\": \"lib/ansible/modules/source_control/gitlab_group.py\", \n  \"gitlab_project\": \"lib/ansible/modules/source_control/gitlab_project.py\", \n  \"gitlab_project module\": \"lib/ansible/modules/source_control/gitlab_project.py\", \n  \"gitlab_user\": [\n    \"lib/ansible/modules/source_control/gitlab_user.py\"\n  ], \n  \"gitlab_user\\ngitlab_project\\ngitlab_group\": [\n    \"lib/ansible/modules/source_control/gitlab_group.py\", \n    \"lib/ansible/modules/source_control/gitlab_project.py\", \n    \"lib/ansible/modules/source_control/gitlab_user.py\"\n  ], \n  \"gitlab_user module\": \"lib/ansible/modules/source_control/gitlab_user.py\", \n  \"gluster_volume\": [\n    \"lib/ansible/modules/system/gluster_volume.py\"\n  ], \n  \"gluster_volume module\": \"lib/ansible/modules/system/gluster_volume.py\", \n  \"group\": \"lib/ansible/modules/system/group.py\", \n  \"group module\": [\n    \"lib/ansible/modules/system/group.py\"\n  ], \n  \"group vars\": [\n    \"lib/ansible/vars/hostvars.py\"\n  ], \n  \"group_by\": [\n    \"lib/ansible/modules/inventory/group_by.py\"\n  ], \n  \"group_by module\": [\n    \"lib/ansible/modules/inventory/group_by.py\"\n  ], \n  \"group_by module docs\": [\n    \"lib/ansible/modules/inventory/group_by.py\"\n  ], \n  \"group_names variable\": [], \n  \"group_vars\": [], \n  \"grove\": \"lib/ansible/modules/notification/grove.py\", \n  \"grove module\": \"lib/ansible/modules/notification/grove.py\", \n  \"gunicorn\": \"lib/ansible/modules/web_infrastructure/gunicorn.py\", \n  \"gunicorn module\": \"lib/ansible/modules/web_infrastructure/gunicorn.py\", \n  \"hacking/README.md\": [\n    \"hacking/README.md\"\n  ], \n  \"hacking/aws_config/setup-iam.yml\": [\n    \"hacking/aws_config/setup-iam.yml\"\n  ], \n  \"hall\": \"lib/ansible/modules/notification/hall.py\", \n  \"hall module\": \"lib/ansible/modules/notification/hall.py\", \n  \"handlers\": [\n    \"lib/ansible/playbook/handler.py\"\n  ], \n  \"haproxy\": [\n    \"lib/ansible/modules/net_tools/haproxy.py\"\n  ], \n  \"haproxy module\": [\n    \"lib/ansible/modules/net_tools/haproxy.py\"\n  ], \n  \"helm\": [\n    \"lib/ansible/modules/cloud/misc/helm.py\"\n  ], \n  \"helm module\": \"lib/ansible/modules/cloud/misc/helm.py\", \n  \"hg\": [\n    \"lib/ansible/modules/source_control/hg.py\"\n  ], \n  \"hg module\": [\n    \"lib/ansible/modules/source_control/hg.py\"\n  ], \n  \"hipchat\": \"lib/ansible/modules/notification/hipchat.py\", \n  \"hipchat module\": \"lib/ansible/modules/notification/hipchat.py\", \n  \"homebrew\": [\n    \"lib/ansible/modules/packaging/os/homebrew.py\"\n  ], \n  \"homebrew module\": \"lib/ansible/modules/packaging/os/homebrew.py\", \n  \"homebrew_cask\": [\n    \"lib/ansible/modules/packaging/os/homebrew_cask.py\"\n  ], \n  \"homebrew_cask module\": [\n    \"lib/ansible/modules/packaging/os/homebrew_cask.py\"\n  ], \n  \"homebrew_tap\": \"lib/ansible/modules/packaging/os/homebrew_tap.py\", \n  \"homebrew_tap module\": \"lib/ansible/modules/packaging/os/homebrew_tap.py\", \n  \"honeybadger_deployment\": \"lib/ansible/modules/monitoring/honeybadger_deployment.py\", \n  \"honeybadger_deployment module\": \"lib/ansible/modules/monitoring/honeybadger_deployment.py\", \n  \"hostname\": [\n    \"lib/ansible/modules/system/hostname.py\"\n  ], \n  \"hostname module\": [\n    \"lib/ansible/modules/system/hostname.py\"\n  ], \n  \"hostname_module\": [\n    \"lib/ansible/modules/system/hostname.py\"\n  ], \n  \"hostvars\": [\n    \"lib/ansible/vars/hostvars.py\"\n  ], \n  \"hostvars\\n(I guess?)\": [\n    \"lib/ansible/vars/hostvars.py\"\n  ], \n  \"hpilo_boot\": \"lib/ansible/modules/remote_management/hpilo/hpilo_boot.py\", \n  \"hpilo_boot module\": \"lib/ansible/modules/remote_management/hpilo/hpilo_boot.py\", \n  \"hpilo_facts\": \"lib/ansible/modules/remote_management/hpilo/hpilo_facts.py\", \n  \"hpilo_facts module\": \"lib/ansible/modules/remote_management/hpilo/hpilo_facts.py\", \n  \"hponcfg\": \"lib/ansible/modules/remote_management/hpilo/hponcfg.py\", \n  \"hponcfg module\": \"lib/ansible/modules/remote_management/hpilo/hponcfg.py\", \n  \"htdigest\": [], \n  \"htpasswd\": [\n    \"lib/ansible/modules/web_infrastructure/htpasswd.py\"\n  ], \n  \"htpasswd module\": [\n    \"lib/ansible/modules/web_infrastructure/htpasswd.py\"\n  ], \n  \"http://docs.ansible.com/ansible/azure_module.html\": [\n    \"lib/ansible/modules/cloud/azure/_azure.py\"\n  ], \n  \"http://docs.ansible.com/ansible/azure_rm_securitygroup_module.html\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup.py\"\n  ], \n  \"http://docs.ansible.com/ansible/latest/copy_module.html\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"http://docs.ansible.com/ansible/latest/dev_guide/developing_modules.html\": [], \n  \"http://docs.ansible.com/ansible/latest/postgresql_db_module.html\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_db.py\"\n  ], \n  \"https//docs.ansible.com/ansible/include_role_module.html\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"https://docs.ansible.com/ansible/azure_rm_deployment_module.html\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\"\n  ], \n  \"https://docs.ansible.com/ansible/gitlab_project_module.html\": [\n    \"lib/ansible/modules/source_control/gitlab_project.py\"\n  ], \n  \"https://docs.ansible.com/ansible/junos_rpc_module.html\": [\n    \"lib/ansible/modules/network/junos/junos_rpc.py\"\n  ], \n  \"https://docs.ansible.com/ansible/lxd_container_module.html\": [\n    \"lib/ansible/modules/cloud/lxd/lxd_container.py\"\n  ], \n  \"https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/cloud/amazon/ec2.py\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"https://github.com/ansible/ansible/blob/devel/lib/ansible/playbook/task.py#L86\": [\n    \"lib/ansible/playbook/task.py\"\n  ], \n  \"https://github.com/ansible/ansible/blob/devel/lib/ansible/plugins/filter/core.py#L436\": [\n    \"lib/ansible/plugins/filter/core.py\"\n  ], \n  \"iOS_config\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"iam\": [\n    \"lib/ansible/modules/cloud/amazon/iam.py\"\n  ], \n  \"iam core module\": [\n    \"lib/ansible/modules/cloud/amazon/iam.py\"\n  ], \n  \"iam module\": [\n    \"lib/ansible/modules/cloud/amazon/iam.py\"\n  ], \n  \"iam plugin (from ansible 2.0)\": [], \n  \"iam-group module\": [], \n  \"iam_cert\": \"lib/ansible/modules/cloud/amazon/iam_cert.py\", \n  \"iam_cert module\": \"lib/ansible/modules/cloud/amazon/iam_cert.py\", \n  \"iam_cert_facts\": \"lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\", \n  \"iam_cert_facts module\": \"lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\", \n  \"iam_group\": \"lib/ansible/modules/cloud/amazon/iam_group.py\", \n  \"iam_group module\": \"lib/ansible/modules/cloud/amazon/iam_group.py\", \n  \"iam_managed_policy\": [\n    \"lib/ansible/modules/cloud/amazon/iam_managed_policy.py\"\n  ], \n  \"iam_managed_policy module\": \"lib/ansible/modules/cloud/amazon/iam_managed_policy.py\", \n  \"iam_mfa_device_facts\": \"lib/ansible/modules/cloud/amazon/iam_mfa_device_facts.py\", \n  \"iam_mfa_device_facts module\": \"lib/ansible/modules/cloud/amazon/iam_mfa_device_facts.py\", \n  \"iam_policy\": [\n    \"lib/ansible/modules/cloud/amazon/iam_policy.py\"\n  ], \n  \"iam_policy module\": [\n    \"lib/ansible/modules/cloud/amazon/iam_policy.py\"\n  ], \n  \"iam_role\": [\n    \"lib/ansible/modules/cloud/amazon/iam_role.py\"\n  ], \n  \"iam_role module\": \"lib/ansible/modules/cloud/amazon/iam_role.py\", \n  \"iam_server_certificate_facts\": \"lib/ansible/modules/cloud/amazon/iam_server_certificate_facts.py\", \n  \"iam_server_certificate_facts module\": \"lib/ansible/modules/cloud/amazon/iam_server_certificate_facts.py\", \n  \"icinga2_feature\": \"lib/ansible/modules/monitoring/icinga2_feature.py\", \n  \"icinga2_feature module\": \"lib/ansible/modules/monitoring/icinga2_feature.py\", \n  \"identity/cyberark/cyberark_authentication\": \"lib/ansible/modules/identity/cyberark/cyberark_authentication.py\", \n  \"identity/cyberark/cyberark_authentication.py\": \"lib/ansible/modules/identity/cyberark/cyberark_authentication.py\", \n  \"identity/cyberark/cyberark_user\": \"lib/ansible/modules/identity/cyberark/cyberark_user.py\", \n  \"identity/cyberark/cyberark_user.py\": \"lib/ansible/modules/identity/cyberark/cyberark_user.py\", \n  \"identity/ipa/ipa_dnsrecord\": \"lib/ansible/modules/identity/ipa/ipa_dnsrecord.py\", \n  \"identity/ipa/ipa_dnsrecord.py\": \"lib/ansible/modules/identity/ipa/ipa_dnsrecord.py\", \n  \"identity/ipa/ipa_dnszone\": \"lib/ansible/modules/identity/ipa/ipa_dnszone.py\", \n  \"identity/ipa/ipa_dnszone.py\": \"lib/ansible/modules/identity/ipa/ipa_dnszone.py\", \n  \"identity/ipa/ipa_group\": \"lib/ansible/modules/identity/ipa/ipa_group.py\", \n  \"identity/ipa/ipa_group.py\": \"lib/ansible/modules/identity/ipa/ipa_group.py\", \n  \"identity/ipa/ipa_hbacrule\": \"lib/ansible/modules/identity/ipa/ipa_hbacrule.py\", \n  \"identity/ipa/ipa_hbacrule.py\": \"lib/ansible/modules/identity/ipa/ipa_hbacrule.py\", \n  \"identity/ipa/ipa_host\": \"lib/ansible/modules/identity/ipa/ipa_host.py\", \n  \"identity/ipa/ipa_host.py\": \"lib/ansible/modules/identity/ipa/ipa_host.py\", \n  \"identity/ipa/ipa_hostgroup\": \"lib/ansible/modules/identity/ipa/ipa_hostgroup.py\", \n  \"identity/ipa/ipa_hostgroup.py\": \"lib/ansible/modules/identity/ipa/ipa_hostgroup.py\", \n  \"identity/ipa/ipa_role\": \"lib/ansible/modules/identity/ipa/ipa_role.py\", \n  \"identity/ipa/ipa_role.py\": \"lib/ansible/modules/identity/ipa/ipa_role.py\", \n  \"identity/ipa/ipa_sudocmd\": \"lib/ansible/modules/identity/ipa/ipa_sudocmd.py\", \n  \"identity/ipa/ipa_sudocmd.py\": \"lib/ansible/modules/identity/ipa/ipa_sudocmd.py\", \n  \"identity/ipa/ipa_sudocmdgroup\": \"lib/ansible/modules/identity/ipa/ipa_sudocmdgroup.py\", \n  \"identity/ipa/ipa_sudocmdgroup.py\": \"lib/ansible/modules/identity/ipa/ipa_sudocmdgroup.py\", \n  \"identity/ipa/ipa_sudorule\": \"lib/ansible/modules/identity/ipa/ipa_sudorule.py\", \n  \"identity/ipa/ipa_sudorule.py\": \"lib/ansible/modules/identity/ipa/ipa_sudorule.py\", \n  \"identity/ipa/ipa_user\": \"lib/ansible/modules/identity/ipa/ipa_user.py\", \n  \"identity/ipa/ipa_user.py\": \"lib/ansible/modules/identity/ipa/ipa_user.py\", \n  \"identity/opendj/opendj_backendprop\": \"lib/ansible/modules/identity/opendj/opendj_backendprop.py\", \n  \"identity/opendj/opendj_backendprop.py\": \"lib/ansible/modules/identity/opendj/opendj_backendprop.py\", \n  \"imc_rest\": \"lib/ansible/modules/remote_management/imc/imc_rest.py\", \n  \"imc_rest module\": \"lib/ansible/modules/remote_management/imc/imc_rest.py\", \n  \"imgadm\": \"lib/ansible/modules/cloud/smartos/imgadm.py\", \n  \"imgadm module\": \"lib/ansible/modules/cloud/smartos/imgadm.py\", \n  \"implicit localhost\": [], \n  \"import_playbook\": [\n    \"lib/ansible/modules/utilities/logic/import_playbook.py\"\n  ], \n  \"import_playbook module\": \"lib/ansible/modules/utilities/logic/import_playbook.py\", \n  \"import_playbook, probably\": [\n    \"lib/ansible/modules/utilities/logic/import_playbook.py\"\n  ], \n  \"import_role\": \"lib/ansible/modules/utilities/logic/import_role.py\", \n  \"import_role module\": \"lib/ansible/modules/utilities/logic/import_role.py\", \n  \"import_tasks\": \"lib/ansible/modules/utilities/logic/import_tasks.py\", \n  \"import_tasks module\": \"lib/ansible/modules/utilities/logic/import_tasks.py\", \n  \"import_tasks.py\": [\n    \"lib/ansible/modules/utilities/logic/import_tasks.py\"\n  ], \n  \"include\": [\n    \"lib/ansible/modules/utilities/logic/_include.py\"\n  ], \n  \"include (but probably any task as well)\": [\n    \"lib/ansible/modules/utilities/logic/_include.py\"\n  ], \n  \"include and include_role\": [\n    \"lib/ansible/playbook/role/include.py\", \n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"include module\": [\n    \"lib/ansible/modules/utilities/logic/_include.py\"\n  ], \n  \"include, or tags, or maybe it's a problem with the core functionality\": [\n    \"lib/ansible/modules/utilities/logic/_include.py\"\n  ], \n  \"include_role\": [\n    \"lib/ansible/playbook/role/include.py\"\n  ], \n  \"include_role\\nblock\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\", \n    \"lib/ansible/playbook/block.py\"\n  ], \n  \"include_role\\nimport_role\": [\n    \"lib/ansible/modules/utilities/logic/import_role.py\", \n    \"lib/ansible/playbook/role/include.py\"\n  ], \n  \"include_role module\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"include_role module - Dynamic includes inside roles\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"include_role:\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"include_task:\\nwhen:\\ninclude_role:\\nwhen:\": [\n    \"lib/ansible/modules/utilities/logic/include_role.py\"\n  ], \n  \"include_tasks\": [\n    \"lib/ansible/modules/utilities/logic/include_tasks.py\"\n  ], \n  \"include_tasks module\": \"lib/ansible/modules/utilities/logic/include_tasks.py\", \n  \"include_vars\": [\n    \"lib/ansible/modules/utilities/logic/include_vars.py\"\n  ], \n  \"include_vars module\": \"lib/ansible/modules/utilities/logic/include_vars.py\", \n  \"includes / when\": [], \n  \"infini_export\": \"lib/ansible/modules/storage/infinidat/infini_export.py\", \n  \"infini_export module\": \"lib/ansible/modules/storage/infinidat/infini_export.py\", \n  \"infini_export_client\": \"lib/ansible/modules/storage/infinidat/infini_export_client.py\", \n  \"infini_export_client module\": \"lib/ansible/modules/storage/infinidat/infini_export_client.py\", \n  \"infini_fs\": \"lib/ansible/modules/storage/infinidat/infini_fs.py\", \n  \"infini_fs module\": \"lib/ansible/modules/storage/infinidat/infini_fs.py\", \n  \"infini_host\": \"lib/ansible/modules/storage/infinidat/infini_host.py\", \n  \"infini_host module\": \"lib/ansible/modules/storage/infinidat/infini_host.py\", \n  \"infini_pool\": \"lib/ansible/modules/storage/infinidat/infini_pool.py\", \n  \"infini_pool module\": \"lib/ansible/modules/storage/infinidat/infini_pool.py\", \n  \"infini_vol\": \"lib/ansible/modules/storage/infinidat/infini_vol.py\", \n  \"infini_vol module\": \"lib/ansible/modules/storage/infinidat/infini_vol.py\", \n  \"infinity\": \"lib/ansible/modules/net_tools/infinity/infinity.py\", \n  \"infinity module\": \"lib/ansible/modules/net_tools/infinity/infinity.py\", \n  \"influxdb_database\": \"lib/ansible/modules/database/influxdb/influxdb_database.py\", \n  \"influxdb_database module\": \"lib/ansible/modules/database/influxdb/influxdb_database.py\", \n  \"influxdb_retention_policy\": \"lib/ansible/modules/database/influxdb/influxdb_retention_policy.py\", \n  \"influxdb_retention_policy module\": \"lib/ansible/modules/database/influxdb/influxdb_retention_policy.py\", \n  \"ini_file\": [\n    \"lib/ansible/modules/files/ini_file.py\"\n  ], \n  \"ini_file module\": [\n    \"lib/ansible/modules/files/ini_file.py\"\n  ], \n  \"integration test for lookups\": [\n    \"lib/ansible/plugins/lookup\"\n  ], \n  \"integration test for unarchive\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"integration tests\": [\n    \"test/integration\"\n  ], \n  \"interfaces_file\": [\n    \"lib/ansible/modules/system/interfaces_file.py\"\n  ], \n  \"interfaces_file module\": \"lib/ansible/modules/system/interfaces_file.py\", \n  \"internal module_utils.\": [], \n  \"intersect filter\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"inventory\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"inventory manager\": [\n    \"lib/ansible/inventory/manager.py\"\n  ], \n  \"inventory parsing\": [\n    \"lib/ansible/inventory\"\n  ], \n  \"inventory/add_host\": \"lib/ansible/modules/inventory/add_host.py\", \n  \"inventory/add_host.py\": \"lib/ansible/modules/inventory/add_host.py\", \n  \"inventory/group_by\": \"lib/ansible/modules/inventory/group_by.py\", \n  \"inventory/group_by.py\": \"lib/ansible/modules/inventory/group_by.py\", \n  \"ios_*\\nnxos_*\": [], \n  \"ios_banner\": \"lib/ansible/modules/network/ios/ios_banner.py\", \n  \"ios_banner module\": \"lib/ansible/modules/network/ios/ios_banner.py\", \n  \"ios_command\": [\n    \"lib/ansible/modules/network/ios/ios_command.py\"\n  ], \n  \"ios_command\\nbut I suspect all commands are impacted\": [\n    \"lib/ansible/modules/network/ios/ios_command.py\"\n  ], \n  \"ios_command\\nbut the issue might be caused by another module such as \\\"include_role\\\" for instance.\": [\n    \"lib/ansible/modules/network/ios/ios_command.py\"\n  ], \n  \"ios_command\\nnxos_command\": [\n    \"lib/ansible/modules/network/ios/ios_command.py\", \n    \"lib/ansible/modules/network/nxos/nxos_command.py\"\n  ], \n  \"ios_command and ios_config\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"ios_command module\": \"lib/ansible/modules/network/ios/ios_command.py\", \n  \"ios_config\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"ios_config\\neos_config\\nnxos_config\\nvyos_config\": [\n    \"lib/ansible/modules/network/eos/eos_config.py\", \n    \"lib/ansible/modules/network/ios/ios_config.py\", \n    \"lib/ansible/modules/network/nxos/nxos_config.py\", \n    \"lib/ansible/modules/network/vyos/vyos_config.py\"\n  ], \n  \"ios_config module\": [\n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"ios_facts\": [\n    \"lib/ansible/modules/network/ios/ios_facts.py\"\n  ], \n  \"ios_facts\\nios_command\\netc\": [\n    \"lib/ansible/modules/network/ios/ios_command.py\", \n    \"lib/ansible/modules/network/ios/ios_facts.py\"\n  ], \n  \"ios_facts module\": \"lib/ansible/modules/network/ios/ios_facts.py\", \n  \"ios_interface\": [\n    \"lib/ansible/modules/network/ios/ios_interface.py\"\n  ], \n  \"ios_interface module\": \"lib/ansible/modules/network/ios/ios_interface.py\", \n  \"ios_logging\": \"lib/ansible/modules/network/ios/ios_logging.py\", \n  \"ios_logging\\nCisco IOS - \\\"flash:c2600-ipbasek9-mz.124-18c.bin\\\"\": [\n    \"lib/ansible/modules/network/ios/ios_logging.py\"\n  ], \n  \"ios_logging module\": \"lib/ansible/modules/network/ios/ios_logging.py\", \n  \"ios_ping\": \"lib/ansible/modules/network/ios/ios_ping.py\", \n  \"ios_ping module\": \"lib/ansible/modules/network/ios/ios_ping.py\", \n  \"ios_static_route\": \"lib/ansible/modules/network/ios/ios_static_route.py\", \n  \"ios_static_route module\": \"lib/ansible/modules/network/ios/ios_static_route.py\", \n  \"ios_system\": \"lib/ansible/modules/network/ios/ios_system.py\", \n  \"ios_system module\": \"lib/ansible/modules/network/ios/ios_system.py\", \n  \"ios_template & ios_command\": [\n    \"lib/ansible/modules/network/ios/ios_command.py\"\n  ], \n  \"ios_user\": [\n    \"lib/ansible/modules/network/ios/ios_user.py\"\n  ], \n  \"ios_user module\": \"lib/ansible/modules/network/ios/ios_user.py\", \n  \"ios_vrf\": [\n    \"lib/ansible/modules/network/ios/ios_vrf.py\"\n  ], \n  \"ios_vrf module\": \"lib/ansible/modules/network/ios/ios_vrf.py\", \n  \"iosxr_\\nmodule_utils/iosxr.py\": [\n    \"lib/ansible/module_utils/iosxr.py\"\n  ], \n  \"iosxr_banner\": \"lib/ansible/modules/network/iosxr/iosxr_banner.py\", \n  \"iosxr_banner module\": \"lib/ansible/modules/network/iosxr/iosxr_banner.py\", \n  \"iosxr_command\": \"lib/ansible/modules/network/iosxr/iosxr_command.py\", \n  \"iosxr_command module\": \"lib/ansible/modules/network/iosxr/iosxr_command.py\", \n  \"iosxr_config\": \"lib/ansible/modules/network/iosxr/iosxr_config.py\", \n  \"iosxr_config module\": \"lib/ansible/modules/network/iosxr/iosxr_config.py\", \n  \"iosxr_facts\": [\n    \"lib/ansible/modules/network/iosxr/iosxr_facts.py\"\n  ], \n  \"iosxr_facts module\": \"lib/ansible/modules/network/iosxr/iosxr_facts.py\", \n  \"iosxr_interface\": \"lib/ansible/modules/network/iosxr/iosxr_interface.py\", \n  \"iosxr_interface module\": \"lib/ansible/modules/network/iosxr/iosxr_interface.py\", \n  \"iosxr_logging\": \"lib/ansible/modules/network/iosxr/iosxr_logging.py\", \n  \"iosxr_logging module\": \"lib/ansible/modules/network/iosxr/iosxr_logging.py\", \n  \"iosxr_netconf\": \"lib/ansible/modules/network/iosxr/iosxr_netconf.py\", \n  \"iosxr_netconf module\": \"lib/ansible/modules/network/iosxr/iosxr_netconf.py\", \n  \"iosxr_system\": \"lib/ansible/modules/network/iosxr/iosxr_system.py\", \n  \"iosxr_system module\": \"lib/ansible/modules/network/iosxr/iosxr_system.py\", \n  \"iosxr_user\": \"lib/ansible/modules/network/iosxr/iosxr_user.py\", \n  \"iosxr_user module\": \"lib/ansible/modules/network/iosxr/iosxr_user.py\", \n  \"ipa\": [], \n  \"ipa-hbacrule\": [\n    \"lib/ansible/modules/identity/ipa/ipa_hbacrule.py\"\n  ], \n  \"ipa_dnsrecord\": [\n    \"lib/ansible/modules/identity/ipa/ipa_dnsrecord.py\"\n  ], \n  \"ipa_dnsrecord module\": \"lib/ansible/modules/identity/ipa/ipa_dnsrecord.py\", \n  \"ipa_dnszone\": \"lib/ansible/modules/identity/ipa/ipa_dnszone.py\", \n  \"ipa_dnszone module\": \"lib/ansible/modules/identity/ipa/ipa_dnszone.py\", \n  \"ipa_group\": \"lib/ansible/modules/identity/ipa/ipa_group.py\", \n  \"ipa_group module\": \"lib/ansible/modules/identity/ipa/ipa_group.py\", \n  \"ipa_hbacrule\": \"lib/ansible/modules/identity/ipa/ipa_hbacrule.py\", \n  \"ipa_hbacrule module\": \"lib/ansible/modules/identity/ipa/ipa_hbacrule.py\", \n  \"ipa_host\": [\n    \"lib/ansible/modules/identity/ipa/ipa_host.py\"\n  ], \n  \"ipa_host module\": [\n    \"lib/ansible/modules/identity/ipa/ipa_host.py\"\n  ], \n  \"ipa_hostgroup\": \"lib/ansible/modules/identity/ipa/ipa_hostgroup.py\", \n  \"ipa_hostgroup module\": \"lib/ansible/modules/identity/ipa/ipa_hostgroup.py\", \n  \"ipa_role\": \"lib/ansible/modules/identity/ipa/ipa_role.py\", \n  \"ipa_role module\": \"lib/ansible/modules/identity/ipa/ipa_role.py\", \n  \"ipa_sudocmd\": \"lib/ansible/modules/identity/ipa/ipa_sudocmd.py\", \n  \"ipa_sudocmd module\": \"lib/ansible/modules/identity/ipa/ipa_sudocmd.py\", \n  \"ipa_sudocmdgroup\": \"lib/ansible/modules/identity/ipa/ipa_sudocmdgroup.py\", \n  \"ipa_sudocmdgroup module\": \"lib/ansible/modules/identity/ipa/ipa_sudocmdgroup.py\", \n  \"ipa_sudorule\": [\n    \"lib/ansible/modules/identity/ipa/ipa_sudorule.py\"\n  ], \n  \"ipa_sudorule module\": \"lib/ansible/modules/identity/ipa/ipa_sudorule.py\", \n  \"ipa_user\": \"lib/ansible/modules/identity/ipa/ipa_user.py\", \n  \"ipa_user module\": \"lib/ansible/modules/identity/ipa/ipa_user.py\", \n  \"ipaddr filter\": [\n    \"lib/ansible/plugins/filter/ipaddr.py\"\n  ], \n  \"ipadm_addr\": \"lib/ansible/modules/network/illumos/ipadm_addr.py\", \n  \"ipadm_addr module\": \"lib/ansible/modules/network/illumos/ipadm_addr.py\", \n  \"ipadm_addrprop\": \"lib/ansible/modules/network/illumos/ipadm_addrprop.py\", \n  \"ipadm_addrprop module\": \"lib/ansible/modules/network/illumos/ipadm_addrprop.py\", \n  \"ipadm_if\": \"lib/ansible/modules/network/illumos/ipadm_if.py\", \n  \"ipadm_if module\": \"lib/ansible/modules/network/illumos/ipadm_if.py\", \n  \"ipadm_ifprop\": \"lib/ansible/modules/network/illumos/ipadm_ifprop.py\", \n  \"ipadm_ifprop module\": \"lib/ansible/modules/network/illumos/ipadm_ifprop.py\", \n  \"ipadm_prop\": \"lib/ansible/modules/network/illumos/ipadm_prop.py\", \n  \"ipadm_prop module\": \"lib/ansible/modules/network/illumos/ipadm_prop.py\", \n  \"ipify_facts\": \"lib/ansible/modules/net_tools/ipify_facts.py\", \n  \"ipify_facts module\": \"lib/ansible/modules/net_tools/ipify_facts.py\", \n  \"ipinfoio_facts\": \"lib/ansible/modules/net_tools/ipinfoio_facts.py\", \n  \"ipinfoio_facts module\": \"lib/ansible/modules/net_tools/ipinfoio_facts.py\", \n  \"ipmi_boot\": \"lib/ansible/modules/remote_management/ipmi/ipmi_boot.py\", \n  \"ipmi_boot module\": \"lib/ansible/modules/remote_management/ipmi/ipmi_boot.py\", \n  \"ipmi_power\": \"lib/ansible/modules/remote_management/ipmi/ipmi_power.py\", \n  \"ipmi_power module\": \"lib/ansible/modules/remote_management/ipmi/ipmi_power.py\", \n  \"iptables\": [\n    \"lib/ansible/modules/system/iptables.py\"\n  ], \n  \"iptables module\": [\n    \"lib/ansible/modules/system/iptables.py\"\n  ], \n  \"irc\": \"lib/ansible/modules/notification/irc.py\", \n  \"irc module\": \"lib/ansible/modules/notification/irc.py\", \n  \"irc.py\": [\n    \"lib/ansible/modules/notification/irc.py\"\n  ], \n  \"ironware_command\": \"lib/ansible/modules/network/ironware/ironware_command.py\", \n  \"ironware_command module\": \"lib/ansible/modules/network/ironware/ironware_command.py\", \n  \"iso_extract\": \"lib/ansible/modules/files/iso_extract.py\", \n  \"iso_extract module\": \"lib/ansible/modules/files/iso_extract.py\", \n  \"jabber\": \"lib/ansible/modules/notification/jabber.py\", \n  \"jabber module\": \"lib/ansible/modules/notification/jabber.py\", \n  \"java_cert\": [\n    \"lib/ansible/modules/system/java_cert.py\"\n  ], \n  \"java_cert module\": \"lib/ansible/modules/system/java_cert.py\", \n  \"jboss\": \"lib/ansible/modules/web_infrastructure/jboss.py\", \n  \"jboss module\": [\n    \"lib/ansible/modules/web_infrastructure/jboss.py\"\n  ], \n  \"jenkins\": [], \n  \"jenkins_job\": [\n    \"lib/ansible/modules/web_infrastructure/jenkins_job.py\"\n  ], \n  \"jenkins_job module\": \"lib/ansible/modules/web_infrastructure/jenkins_job.py\", \n  \"jenkins_plugin\": [\n    \"lib/ansible/modules/web_infrastructure/jenkins_plugin.py\"\n  ], \n  \"jenkins_plugin\\nor main ansible http_proxy\": [\n    \"lib/ansible/modules/web_infrastructure/jenkins_plugin.py\"\n  ], \n  \"jenkins_plugin module\": \"lib/ansible/modules/web_infrastructure/jenkins_plugin.py\", \n  \"jenkins_script\": [\n    \"lib/ansible/modules/web_infrastructure/jenkins_script.py\"\n  ], \n  \"jenkins_script module\": \"lib/ansible/modules/web_infrastructure/jenkins_script.py\", \n  \"jinja2 template system\": [\n    \"lib/ansible/template\"\n  ], \n  \"jinja2 templating\": [], \n  \"jinja2 yaml filter\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"jira\": [\n    \"lib/ansible/modules/web_infrastructure/jira.py\"\n  ], \n  \"jira (module)\": [\n    \"lib/ansible/modules/web_infrastructure/jira.py\"\n  ], \n  \"jira module\": \"lib/ansible/modules/web_infrastructure/jira.py\", \n  \"jira.py\": [\n    \"lib/ansible/modules/web_infrastructure/jira.py\"\n  ], \n  \"json stdout callback\": [\n    \"lib/ansible/plugins/callback/json.py\"\n  ], \n  \"json_query\": [\n    \"lib/ansible/plugins/filter/json_query.py\"\n  ], \n  \"junit\": [\n    \"lib/ansible/plugins/callback/junit.py\"\n  ], \n  \"junos_*\\nmodule_utils/junos\": [\n    \"lib/ansible/module_utils/junos.py\"\n  ], \n  \"junos_banner\": \"lib/ansible/modules/network/junos/junos_banner.py\", \n  \"junos_banner module\": \"lib/ansible/modules/network/junos/junos_banner.py\", \n  \"junos_command\": [\n    \"lib/ansible/modules/network/junos/junos_command.py\"\n  ], \n  \"junos_command (but not only !)\": [\n    \"lib/ansible/modules/network/junos/junos_command.py\"\n  ], \n  \"junos_command core module\": [\n    \"lib/ansible/modules/network/junos/junos_command.py\"\n  ], \n  \"junos_command module\": \"lib/ansible/modules/network/junos/junos_command.py\", \n  \"junos_config\": [\n    \"lib/ansible/modules/network/junos/junos_config.py\"\n  ], \n  \"junos_config module\": \"lib/ansible/modules/network/junos/junos_config.py\", \n  \"junos_facts\": [\n    \"lib/ansible/modules/network/junos/junos_facts.py\"\n  ], \n  \"junos_facts module\": \"lib/ansible/modules/network/junos/junos_facts.py\", \n  \"junos_facts or any module that uses netconf and persistent connection\": [\n    \"lib/ansible/modules/network/junos/junos_facts.py\"\n  ], \n  \"junos_interface\": \"lib/ansible/modules/network/junos/junos_interface.py\", \n  \"junos_interface module\": \"lib/ansible/modules/network/junos/junos_interface.py\", \n  \"junos_l3_interface\": \"lib/ansible/modules/network/junos/junos_l3_interface.py\", \n  \"junos_l3_interface module\": \"lib/ansible/modules/network/junos/junos_l3_interface.py\", \n  \"junos_linkagg\": \"lib/ansible/modules/network/junos/junos_linkagg.py\", \n  \"junos_linkagg module\": \"lib/ansible/modules/network/junos/junos_linkagg.py\", \n  \"junos_lldp\": \"lib/ansible/modules/network/junos/junos_lldp.py\", \n  \"junos_lldp module\": \"lib/ansible/modules/network/junos/junos_lldp.py\", \n  \"junos_lldp_interface\": \"lib/ansible/modules/network/junos/junos_lldp_interface.py\", \n  \"junos_lldp_interface module\": \"lib/ansible/modules/network/junos/junos_lldp_interface.py\", \n  \"junos_logging\": \"lib/ansible/modules/network/junos/junos_logging.py\", \n  \"junos_logging module\": \"lib/ansible/modules/network/junos/junos_logging.py\", \n  \"junos_netconf\": [\n    \"lib/ansible/modules/network/junos/junos_netconf.py\"\n  ], \n  \"junos_netconf\\njunos_command\": [\n    \"lib/ansible/modules/network/junos/junos_command.py\", \n    \"lib/ansible/modules/network/junos/junos_netconf.py\"\n  ], \n  \"junos_netconf module\": \"lib/ansible/modules/network/junos/junos_netconf.py\", \n  \"junos_package\": \"lib/ansible/modules/network/junos/junos_package.py\", \n  \"junos_package module\": \"lib/ansible/modules/network/junos/junos_package.py\", \n  \"junos_rpc\": [\n    \"lib/ansible/modules/network/junos/junos_rpc.py\"\n  ], \n  \"junos_rpc module\": \"lib/ansible/modules/network/junos/junos_rpc.py\", \n  \"junos_static_route\": \"lib/ansible/modules/network/junos/junos_static_route.py\", \n  \"junos_static_route module\": \"lib/ansible/modules/network/junos/junos_static_route.py\", \n  \"junos_system\": \"lib/ansible/modules/network/junos/junos_system.py\", \n  \"junos_system module\": \"lib/ansible/modules/network/junos/junos_system.py\", \n  \"junos_user\": [\n    \"lib/ansible/modules/network/junos/junos_user.py\"\n  ], \n  \"junos_user module\": \"lib/ansible/modules/network/junos/junos_user.py\", \n  \"junos_vlan\": \"lib/ansible/modules/network/junos/junos_vlan.py\", \n  \"junos_vlan module\": \"lib/ansible/modules/network/junos/junos_vlan.py\", \n  \"junos_vrf\": [\n    \"lib/ansible/modules/network/junos/junos_vrf.py\"\n  ], \n  \"junos_vrf module\": \"lib/ansible/modules/network/junos/junos_vrf.py\", \n  \"katello\": \"lib/ansible/modules/remote_management/foreman/katello.py\", \n  \"katello module\": \"lib/ansible/modules/remote_management/foreman/katello.py\", \n  \"kernel_blacklist\": \"lib/ansible/modules/system/kernel_blacklist.py\", \n  \"kernel_blacklist module\": \"lib/ansible/modules/system/kernel_blacklist.py\", \n  \"keystone_user module\": [], \n  \"kibana_plugin\": [\n    \"lib/ansible/modules/database/misc/kibana_plugin.py\"\n  ], \n  \"kibana_plugin module\": \"lib/ansible/modules/database/misc/kibana_plugin.py\", \n  \"kinesis delivery stream module\": [], \n  \"kinesis_stream\": \"lib/ansible/modules/cloud/amazon/kinesis_stream.py\", \n  \"kinesis_stream module\": [\n    \"lib/ansible/modules/cloud/amazon/kinesis_stream.py\"\n  ], \n  \"kinesis_stream_encryption\": [], \n  \"known_hosts\": [\n    \"lib/ansible/modules/system/known_hosts.py\"\n  ], \n  \"known_hosts module\": [\n    \"lib/ansible/modules/system/known_hosts.py\"\n  ], \n  \"kubernetes\": [\n    \"lib/ansible/modules/clustering/kubernetes.py\"\n  ], \n  \"kubernetes module\": \"lib/ansible/modules/clustering/kubernetes.py\", \n  \"lambda\": \"lib/ansible/modules/cloud/amazon/lambda.py\", \n  \"lambda module\": [\n    \"lib/ansible/modules/cloud/amazon/lambda.py\"\n  ], \n  \"lambda_alias\": \"lib/ansible/modules/cloud/amazon/lambda_alias.py\", \n  \"lambda_alias module\": \"lib/ansible/modules/cloud/amazon/lambda_alias.py\", \n  \"lambda_event\": \"lib/ansible/modules/cloud/amazon/lambda_event.py\", \n  \"lambda_event module\": \"lib/ansible/modules/cloud/amazon/lambda_event.py\", \n  \"lambda_facts\": \"lib/ansible/modules/cloud/amazon/lambda_facts.py\", \n  \"lambda_facts module\": \"lib/ansible/modules/cloud/amazon/lambda_facts.py\", \n  \"lambda_policy\": \"lib/ansible/modules/cloud/amazon/lambda_policy.py\", \n  \"lambda_policy module\": \"lib/ansible/modules/cloud/amazon/lambda_policy.py\", \n  \"layman\": \"lib/ansible/modules/packaging/os/layman.py\", \n  \"layman module\": \"lib/ansible/modules/packaging/os/layman.py\", \n  \"ldap_attr\": [\n    \"lib/ansible/modules/net_tools/ldap/ldap_attr.py\"\n  ], \n  \"ldap_attr module\": \"lib/ansible/modules/net_tools/ldap/ldap_attr.py\", \n  \"ldap_entry\": \"lib/ansible/modules/net_tools/ldap/ldap_entry.py\", \n  \"ldap_entry module\": \"lib/ansible/modules/net_tools/ldap/ldap_entry.py\", \n  \"letsencrypt\": [\n    \"lib/ansible/modules/web_infrastructure/letsencrypt.py\"\n  ], \n  \"letsencrypt module\": \"lib/ansible/modules/web_infrastructure/letsencrypt.py\", \n  \"lib/ansible/cli\\nlib/ansible/constants.py\": [\n    \"lib/ansible/cli\", \n    \"lib/ansible/constants.py\"\n  ], \n  \"lib/ansible/cli/vault.py\\nlib/ansible/parsing/vault\": [\n    \"lib/ansible/cli/vault.py\", \n    \"lib/ansible/parsing/vault\"\n  ], \n  \"lib/ansible/clin\\nlib/ansible/constants\\nlib/ansible/playbook/play_context.py\": [\n    \"lib/ansible/cli\", \n    \"lib/ansible/playbook/play_context.py\"\n  ], \n  \"lib/ansible/constants.py\\nlib/ansible/cli/\": [\n    \"lib/ansible/cli\", \n    \"lib/ansible/constants.py\"\n  ], \n  \"lib/ansible/inventory/hostsvars.py\": [], \n  \"lib/ansible/module_utils/api.py\": [\n    \"lib/ansible/module_utils/api.py\"\n  ], \n  \"lib/ansible/module_utils/basic.py\": [\n    \"lib/ansible/module_utils/basic.py\"\n  ], \n  \"lib/ansible/module_utils/basic.py - get_bin_path(self, arg, required=False, opt_dirs=[]) function\": [], \n  \"lib/ansible/module_utils/facts\": [\n    \"lib/ansible/module_utils/facts\"\n  ], \n  \"lib/ansible/module_utils/facts.py\": [], \n  \"lib/ansible/module_utils/facts/\": [], \n  \"lib/ansible/module_utils/facts/system/ssh_pub_keys.py\": [\n    \"lib/ansible/module_utils/facts/system/ssh_pub_keys.py\"\n  ], \n  \"lib/ansible/module_utils/urls.py\": [\n    \"lib/ansible/module_utils/urls.py\"\n  ], \n  \"lib/ansible/modules/cloud/amazon\": [\n    \"lib/ansible/modules/cloud/amazon\"\n  ], \n  \"lib/ansible/modules/cloud/amazon/aws_direct_connect_connection.py\": [\n    \"lib/ansible/modules/cloud/amazon/aws_direct_connect_connection.py\"\n  ], \n  \"lib/ansible/modules/cloud/amazon/ec2.py\": [\n    \"lib/ansible/modules/cloud/amazon/ec2.py\"\n  ], \n  \"lib/ansible/modules/cloud/amazon/iam.py\": [\n    \"lib/ansible/modules/cloud/amazon/iam.py\"\n  ], \n  \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\": [\n    \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\"\n  ], \n  \"lib/ansible/modules/cloud/google/gce.py\": [\n    \"lib/ansible/modules/cloud/google/gce.py\"\n  ], \n  \"lib/ansible/modules/cloud/ovirt/ovirt_clusters.py\": [\n    \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\"\n  ], \n  \"lib/ansible/modules/clustering/consul_kv.py\": [\n    \"lib/ansible/modules/clustering/consul_kv.py\"\n  ], \n  \"lib/ansible/modules/files/unarchive.py\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"lib/ansible/modules/files/xml.py\": [\n    \"lib/ansible/modules/files/xml.py\"\n  ], \n  \"lib/ansible/modules/network/enos/enos_facts.py\\nlib/ansible/module_util/enos/enos.py\": [], \n  \"lib/ansible/modules/network/netconf\": [\n    \"lib/ansible/modules/network/netconf\"\n  ], \n  \"lib/ansible/modules/network/netconf/netconf_config.py\": [\n    \"lib/ansible/modules/network/netconf/netconf_config.py\"\n  ], \n  \"lib/ansible/modules/packaging/language/pip.py\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \"lib/ansible/modules/source_control/git_config.py\": [\n    \"lib/ansible/modules/source_control/git_config.py\"\n  ], \n  \"lib/ansible/modules/storage/netapp/sf_volume-manager.py\\nqos dict should be of type dict\": [\n    \"lib/ansible/modules/storage/netapp\"\n  ], \n  \"lib/ansible/modules/system/systemd.py\": [\n    \"lib/ansible/modules/system/systemd.py\"\n  ], \n  \"lib/ansible/modules/utilities/helper/_accelerate.py\": [\n    \"lib/ansible/modules/utilities/helper/_accelerate.py\"\n  ], \n  \"lib/ansible/modules/web_infrastructure/jenkins_plugin.py\": [\n    \"lib/ansible/modules/web_infrastructure/jenkins_plugin.py\"\n  ], \n  \"lib/ansible/modules/web_infrastructure/letsencrypt.py\": [\n    \"lib/ansible/modules/web_infrastructure/letsencrypt.py\"\n  ], \n  \"lib/ansible/modules/windows/setup.ps1\": [\n    \"lib/ansible/modules/windows/setup.ps1\"\n  ], \n  \"lib/ansible/parsing/mod_args.py\\nlib/ansible/plugins/\": [\n    \"lib/ansible/parsing/mod_args.py\", \n    \"lib/ansible/plugins\"\n  ], \n  \"lib/ansible/parsing/vault\\nlib/ansible/parsing/dataloader\": [\n    \"lib/ansible/parsing/dataloader.py\", \n    \"lib/ansible/parsing/vault\"\n  ], \n  \"lib/ansible/playbook/base.py\": [\n    \"lib/ansible/playbook/base.py\"\n  ], \n  \"lib/ansible/plugins/callback/logstash.py\": [\n    \"lib/ansible/plugins/callback/logstash.py\"\n  ], \n  \"lib/ansible/plugins/connection/ssh.py\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"lib/ansible/plugins/lookup/dig.py\": [\n    \"lib/ansible/plugins/lookup/dig.py\"\n  ], \n  \"lib/ansible/plugins/lookup/password.py\": [\n    \"lib/ansible/plugins/lookup/password.py\"\n  ], \n  \"lib/ansible/template/init.pyL477\": [\n    \"lib/ansible/template\"\n  ], \n  \"lib/ansible/utils/display.py\": [\n    \"lib/ansible/utils/display.py\"\n  ], \n  \"librato_annotation\": \"lib/ansible/modules/monitoring/librato_annotation.py\", \n  \"librato_annotation module\": \"lib/ansible/modules/monitoring/librato_annotation.py\", \n  \"lightsail\": \"lib/ansible/modules/cloud/amazon/lightsail.py\", \n  \"lightsail module\": \"lib/ansible/modules/cloud/amazon/lightsail.py\", \n  \"limit\": [], \n  \"linefinfile module\": [], \n  \"lineinfile\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"lineinfile in combination with_items\": [\n    \"lib/ansible/playbook/loop_control.py\"\n  ], \n  \"lineinfile module\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"lineinfile module\\nhttp://docs.ansible.com/ansible/lineinfile_module.html\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"linode\": \"lib/ansible/modules/cloud/linode/linode.py\", \n  \"linode module\": [\n    \"lib/ansible/modules/cloud/linode/linode.py\"\n  ], \n  \"lldp\": \"lib/ansible/modules/net_tools/lldp.py\", \n  \"lldp module\": \"lib/ansible/modules/net_tools/lldp.py\", \n  \"load_role\": [], \n  \"local_action: iclude_role\": [], \n  \"locale_gen\": [\n    \"lib/ansible/modules/system/locale_gen.py\"\n  ], \n  \"locale_gen module\": \"lib/ansible/modules/system/locale_gen.py\", \n  \"logentries\": \"lib/ansible/modules/monitoring/logentries.py\", \n  \"logentries module\": [\n    \"lib/ansible/modules/monitoring/logentries.py\"\n  ], \n  \"logicmonitor\": \"lib/ansible/modules/monitoring/logicmonitor.py\", \n  \"logicmonitor module\": \"lib/ansible/modules/monitoring/logicmonitor.py\", \n  \"logicmonitor_facts\": \"lib/ansible/modules/monitoring/logicmonitor_facts.py\", \n  \"logicmonitor_facts module\": \"lib/ansible/modules/monitoring/logicmonitor_facts.py\", \n  \"logstash callback plugin\": [\n    \"lib/ansible/plugins/callback/logstash.py\"\n  ], \n  \"logstash_plugin\": \"lib/ansible/modules/monitoring/logstash_plugin.py\", \n  \"logstash_plugin module\": \"lib/ansible/modules/monitoring/logstash_plugin.py\", \n  \"logstash_plugin to have option for installing offline plugin\": [], \n  \"lookup plugin, credstash\": [\n    \"lib/ansible/plugins/lookup/credstash.py\"\n  ], \n  \"lookup-password, passwordstore\": [\n    \"lib/ansible/plugins/lookup/passwordstore.py\"\n  ], \n  \"lookup/file.py\": [\n    \"lib/ansible/plugins/lookup/file.py\"\n  ], \n  \"lookup_plugins\": [], \n  \"loop\": [], \n  \"loop-until\": [], \n  \"loop_control -> pause\": [\n    \"lib/ansible/modules/utilities/logic/pause.py\"\n  ], \n  \"lvg\": [\n    \"lib/ansible/modules/system/lvg.py\"\n  ], \n  \"lvg module\": [\n    \"lib/ansible/modules/system/lvg.py\"\n  ], \n  \"lvol\": [\n    \"lib/ansible/modules/system/lvol.py\"\n  ], \n  \"lvol module\": [\n    \"lib/ansible/modules/system/lvol.py\"\n  ], \n  \"lxc_container\": [\n    \"lib/ansible/modules/cloud/lxc/lxc_container.py\"\n  ], \n  \"lxc_container module\": [\n    \"lib/ansible/modules/cloud/lxc/lxc_container.py\"\n  ], \n  \"lxd_container\": [\n    \"lib/ansible/modules/cloud/lxd/lxd_container.py\"\n  ], \n  \"lxd_container module\": \"lib/ansible/modules/cloud/lxd/lxd_container.py\", \n  \"lxd_container module and lxd connection plugin\": [\n    \"lib/ansible/modules/cloud/lxd/lxd_container.py\"\n  ], \n  \"lxd_profile\": \"lib/ansible/modules/cloud/lxd/lxd_profile.py\", \n  \"lxd_profile module\": \"lib/ansible/modules/cloud/lxd/lxd_profile.py\", \n  \"macports\": [\n    \"lib/ansible/modules/packaging/os/macports.py\"\n  ], \n  \"macports module\": \"lib/ansible/modules/packaging/os/macports.py\", \n  \"macports, package modules\": [\n    \"lib/ansible/modules/cloud/centurylink/clc_blueprint_package.py\", \n    \"lib/ansible/modules/network/junos/junos_package.py\", \n    \"lib/ansible/modules/packaging/os/macports.py\", \n    \"lib/ansible/modules/packaging/os/package.py\", \n    \"lib/ansible/modules/windows/win_package.ps1\", \n    \"lib/ansible/modules/windows/win_package.py\"\n  ], \n  \"mail\": [\n    \"lib/ansible/modules/notification/mail.py\"\n  ], \n  \"mail module\": \"lib/ansible/modules/notification/mail.py\", \n  \"main.yml inside vars folder of roles\": [\n    \"lib/ansible/playbook/role\"\n  ], \n  \"make\": \"lib/ansible/modules/system/make.py\", \n  \"make deb\": [], \n  \"make module\": \"lib/ansible/modules/system/make.py\", \n  \"manageiq_provider\": \"lib/ansible/modules/remote_management/manageiq/manageiq_provider.py\", \n  \"manageiq_provider module\": \"lib/ansible/modules/remote_management/manageiq/manageiq_provider.py\", \n  \"manageiq_tags\": \"lib/ansible/modules/remote_management/manageiq/manageiq_tags.py\", \n  \"manageiq_tags module\": \"lib/ansible/modules/remote_management/manageiq/manageiq_tags.py\", \n  \"manageiq_user\": \"lib/ansible/modules/remote_management/manageiq/manageiq_user.py\", \n  \"manageiq_user module\": \"lib/ansible/modules/remote_management/manageiq/manageiq_user.py\", \n  \"mattermost\": \"lib/ansible/modules/notification/mattermost.py\", \n  \"mattermost module\": \"lib/ansible/modules/notification/mattermost.py\", \n  \"maven_artifact\": [\n    \"lib/ansible/modules/packaging/language/maven_artifact.py\"\n  ], \n  \"maven_artifact module\": [\n    \"lib/ansible/modules/packaging/language/maven_artifact.py\"\n  ], \n  \"merge_hash\": [], \n  \"messaging/rabbitmq_binding\": \"lib/ansible/modules/messaging/rabbitmq_binding.py\", \n  \"messaging/rabbitmq_binding.py\": \"lib/ansible/modules/messaging/rabbitmq_binding.py\", \n  \"messaging/rabbitmq_exchange\": \"lib/ansible/modules/messaging/rabbitmq_exchange.py\", \n  \"messaging/rabbitmq_exchange.py\": \"lib/ansible/modules/messaging/rabbitmq_exchange.py\", \n  \"messaging/rabbitmq_parameter\": \"lib/ansible/modules/messaging/rabbitmq_parameter.py\", \n  \"messaging/rabbitmq_parameter.py\": \"lib/ansible/modules/messaging/rabbitmq_parameter.py\", \n  \"messaging/rabbitmq_plugin\": \"lib/ansible/modules/messaging/rabbitmq_plugin.py\", \n  \"messaging/rabbitmq_plugin.py\": \"lib/ansible/modules/messaging/rabbitmq_plugin.py\", \n  \"messaging/rabbitmq_policy\": \"lib/ansible/modules/messaging/rabbitmq_policy.py\", \n  \"messaging/rabbitmq_policy.py\": \"lib/ansible/modules/messaging/rabbitmq_policy.py\", \n  \"messaging/rabbitmq_queue\": \"lib/ansible/modules/messaging/rabbitmq_queue.py\", \n  \"messaging/rabbitmq_queue.py\": \"lib/ansible/modules/messaging/rabbitmq_queue.py\", \n  \"messaging/rabbitmq_user\": \"lib/ansible/modules/messaging/rabbitmq_user.py\", \n  \"messaging/rabbitmq_user.py\": \"lib/ansible/modules/messaging/rabbitmq_user.py\", \n  \"messaging/rabbitmq_vhost\": \"lib/ansible/modules/messaging/rabbitmq_vhost.py\", \n  \"messaging/rabbitmq_vhost.py\": \"lib/ansible/modules/messaging/rabbitmq_vhost.py\", \n  \"meta\": \"meta\", \n  \"meta module\": \"lib/ansible/modules/utilities/helper/meta.py\", \n  \"meta: end_play\": [], \n  \"meta: reset_connection\": [], \n  \"mksysb\": \"lib/ansible/modules/system/mksysb.py\", \n  \"mksysb module\": \"lib/ansible/modules/system/mksysb.py\", \n  \"modprobe\": \"lib/ansible/modules/system/modprobe.py\", \n  \"modprobe module\": \"lib/ansible/modules/system/modprobe.py\", \n  \"module\": [], \n  \"module\\n- nxos_config\": [\n    \"lib/ansible/modules/network/nxos/nxos_config.py\"\n  ], \n  \"module  lineinfile\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"module GUIDELINES.md\": \"lib/ansible/modules/cloud/amazon/GUIDELINES.md\", \n  \"module README.md\": \"lib/ansible/modules/cloud/openstack/README.md\", \n  \"module README.rst\": \"lib/ansible/modules/cloud/ovirt/README.rst\", \n  \"module _accelerate\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n  \"module _azure\": \"lib/ansible/modules/cloud/azure/_azure.py\", \n  \"module _cl_bond\": \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n  \"module _cl_bridge\": \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n  \"module _cl_img_install\": \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n  \"module _cl_interface\": \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n  \"module _cl_interface_policy\": \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n  \"module _cl_license\": \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n  \"module _cl_ports\": \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n  \"module _cs_nic\": \"lib/ansible/modules/cloud/cloudstack/_cs_nic.py\", \n  \"module _docker\": \"lib/ansible/modules/cloud/docker/_docker.py\", \n  \"module _ec2_ami_search\": \"lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\", \n  \"module _ec2_facts\": \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\", \n  \"module _ec2_remote_facts\": \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\", \n  \"module _ec2_vpc\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n  \"module _ec2_vpc_dhcp_options\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\", \n  \"module _ec2_vpc_dhcp_options_facts\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\", \n  \"module _iam_cert_facts\": \"lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\", \n  \"module _include\": \"lib/ansible/modules/utilities/logic/_include.py\", \n  \"module _netscaler\": \"lib/ansible/modules/network/citrix/_netscaler.py\", \n  \"module _nxos_mtu\": \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n  \"module _os_server_actions\": \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n  \"module _ovirt_affinity_groups\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\", \n  \"module _ovirt_affinity_labels\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\", \n  \"module _ovirt_affinity_labels_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\", \n  \"module _ovirt_clusters\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\", \n  \"module _ovirt_clusters_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\", \n  \"module _ovirt_datacenters\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\", \n  \"module _ovirt_datacenters_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\", \n  \"module _ovirt_disks\": \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\", \n  \"module _ovirt_external_providers\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\", \n  \"module _ovirt_external_providers_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\", \n  \"module _ovirt_groups\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\", \n  \"module _ovirt_groups_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\", \n  \"module _s3\": \"lib/ansible/modules/cloud/amazon/_s3.py\", \n  \"module _win_msi\": \"lib/ansible/modules/windows/_win_msi.py\", \n  \"module `service`/`systemd`\": [], \n  \"module `setup`\\nin a playbook as `gather_facts: yes`\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"module a10_server\": \"lib/ansible/modules/network/a10/a10_server.py\", \n  \"module a10_server_axapi3\": \"lib/ansible/modules/network/a10/a10_server_axapi3.py\", \n  \"module a10_service_group\": \"lib/ansible/modules/network/a10/a10_service_group.py\", \n  \"module a10_virtual_server\": \"lib/ansible/modules/network/a10/a10_virtual_server.py\", \n  \"module accelerate\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n  \"module aci_aep\": \"lib/ansible/modules/network/aci/aci_aep.py\", \n  \"module aci_ap\": \"lib/ansible/modules/network/aci/aci_ap.py\", \n  \"module aci_bd\": \"lib/ansible/modules/network/aci/aci_bd.py\", \n  \"module aci_bd_subnet\": \"lib/ansible/modules/network/aci/aci_bd_subnet.py\", \n  \"module aci_bd_to_l3out\": \"lib/ansible/modules/network/aci/aci_bd_to_l3out.py\", \n  \"module aci_config_rollback\": \"lib/ansible/modules/network/aci/aci_config_rollback.py\", \n  \"module aci_config_snapshot\": \"lib/ansible/modules/network/aci/aci_config_snapshot.py\", \n  \"module aci_contract\": \"lib/ansible/modules/network/aci/aci_contract.py\", \n  \"module aci_contract_subject\": \"lib/ansible/modules/network/aci/aci_contract_subject.py\", \n  \"module aci_contract_subject_to_filter\": \"lib/ansible/modules/network/aci/aci_contract_subject_to_filter.py\", \n  \"module aci_epg\": \"lib/ansible/modules/network/aci/aci_epg.py\", \n  \"module aci_epg_monitoring_policy\": \"lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py\", \n  \"module aci_epg_to_contract\": \"lib/ansible/modules/network/aci/aci_epg_to_contract.py\", \n  \"module aci_epg_to_domain\": \"lib/ansible/modules/network/aci/aci_epg_to_domain.py\", \n  \"module aci_filter\": \"lib/ansible/modules/network/aci/aci_filter.py\", \n  \"module aci_filter_entry\": \"lib/ansible/modules/network/aci/aci_filter_entry.py\", \n  \"module aci_intf_policy_fc\": \"lib/ansible/modules/network/aci/aci_intf_policy_fc.py\", \n  \"module aci_intf_policy_l2\": \"lib/ansible/modules/network/aci/aci_intf_policy_l2.py\", \n  \"module aci_intf_policy_lldp\": \"lib/ansible/modules/network/aci/aci_intf_policy_lldp.py\", \n  \"module aci_intf_policy_mcp\": \"lib/ansible/modules/network/aci/aci_intf_policy_mcp.py\", \n  \"module aci_intf_policy_port_channel\": \"lib/ansible/modules/network/aci/aci_intf_policy_port_channel.py\", \n  \"module aci_intf_policy_port_security\": \"lib/ansible/modules/network/aci/aci_intf_policy_port_security.py\", \n  \"module aci_l3out_route_tag_policy\": \"lib/ansible/modules/network/aci/aci_l3out_route_tag_policy.py\", \n  \"module aci_rest\": \"lib/ansible/modules/network/aci/aci_rest.py\", \n  \"module aci_taboo_contract\": \"lib/ansible/modules/network/aci/aci_taboo_contract.py\", \n  \"module aci_tenant\": \"lib/ansible/modules/network/aci/aci_tenant.py\", \n  \"module aci_tenant_action_rule_profile\": \"lib/ansible/modules/network/aci/aci_tenant_action_rule_profile.py\", \n  \"module aci_tenant_ep_retention_policy\": \"lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py\", \n  \"module aci_tenant_span_dst_group\": \"lib/ansible/modules/network/aci/aci_tenant_span_dst_group.py\", \n  \"module aci_tenant_span_src_group\": \"lib/ansible/modules/network/aci/aci_tenant_span_src_group.py\", \n  \"module aci_tenant_span_src_group_to_dst_group\": \"lib/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py\", \n  \"module aci_vrf\": \"lib/ansible/modules/network/aci/aci_vrf.py\", \n  \"module acl\": \"lib/ansible/modules/files/acl.py\", \n  \"module add_host\": \"lib/ansible/modules/inventory/add_host.py\", \n  \"module airbrake_deployment\": \"lib/ansible/modules/monitoring/airbrake_deployment.py\", \n  \"module aireos_command\": \"lib/ansible/modules/network/aireos/aireos_command.py\", \n  \"module aireos_config\": \"lib/ansible/modules/network/aireos/aireos_config.py\", \n  \"module aix_inittab\": \"lib/ansible/modules/system/aix_inittab.py\", \n  \"module aix_lvol\": \"lib/ansible/modules/system/aix_lvol.py\", \n  \"module alternatives\": \"lib/ansible/modules/system/alternatives.py\", \n  \"module aos_asn_pool\": \"lib/ansible/modules/network/aos/aos_asn_pool.py\", \n  \"module aos_blueprint\": \"lib/ansible/modules/network/aos/aos_blueprint.py\", \n  \"module aos_blueprint_param\": \"lib/ansible/modules/network/aos/aos_blueprint_param.py\", \n  \"module aos_blueprint_virtnet\": \"lib/ansible/modules/network/aos/aos_blueprint_virtnet.py\", \n  \"module aos_device\": \"lib/ansible/modules/network/aos/aos_device.py\", \n  \"module aos_external_router\": \"lib/ansible/modules/network/aos/aos_external_router.py\", \n  \"module aos_ip_pool\": \"lib/ansible/modules/network/aos/aos_ip_pool.py\", \n  \"module aos_logical_device\": \"lib/ansible/modules/network/aos/aos_logical_device.py\", \n  \"module aos_logical_device_map\": \"lib/ansible/modules/network/aos/aos_logical_device_map.py\", \n  \"module aos_login\": \"lib/ansible/modules/network/aos/aos_login.py\", \n  \"module aos_rack_type\": \"lib/ansible/modules/network/aos/aos_rack_type.py\", \n  \"module aos_template\": \"lib/ansible/modules/network/aos/aos_template.py\", \n  \"module apache2_mod_proxy\": \"lib/ansible/modules/web_infrastructure/apache2_mod_proxy.py\", \n  \"module apache2_module\": \"lib/ansible/modules/web_infrastructure/apache2_module.py\", \n  \"module apk\": \"lib/ansible/modules/packaging/os/apk.py\", \n  \"module apt\": \"lib/ansible/modules/packaging/os/apt.py\", \n  \"module apt_key\": \"lib/ansible/modules/packaging/os/apt_key.py\", \n  \"module apt_repository\": \"lib/ansible/modules/packaging/os/apt_repository.py\", \n  \"module apt_rpm\": \"lib/ansible/modules/packaging/os/apt_rpm.py\", \n  \"module archive\": \"lib/ansible/modules/files/archive.py\", \n  \"module aruba_command\": \"lib/ansible/modules/network/aruba/aruba_command.py\", \n  \"module aruba_config\": \"lib/ansible/modules/network/aruba/aruba_config.py\", \n  \"module asa_acl\": \"lib/ansible/modules/network/asa/asa_acl.py\", \n  \"module asa_command\": \"lib/ansible/modules/network/asa/asa_command.py\", \n  \"module asa_config\": \"lib/ansible/modules/network/asa/asa_config.py\", \n  \"module assemble\": \"lib/ansible/modules/files/assemble.py\", \n  \"module assert\": \"lib/ansible/modules/utilities/logic/assert.py\", \n  \"module async_status\": \"lib/ansible/modules/utilities/logic/async_status.py\", \n  \"module async_wrapper\": \"lib/ansible/modules/utilities/logic/async_wrapper.py\", \n  \"module at\": \"lib/ansible/modules/system/at.py\", \n  \"module atomic_container\": \"lib/ansible/modules/cloud/atomic/atomic_container.py\", \n  \"module atomic_host\": \"lib/ansible/modules/cloud/atomic/atomic_host.py\", \n  \"module atomic_image\": \"lib/ansible/modules/cloud/atomic/atomic_image.py\", \n  \"module authorized_key\": \"lib/ansible/modules/system/authorized_key.py\", \n  \"module avi_actiongroupconfig\": \"lib/ansible/modules/network/avi/avi_actiongroupconfig.py\", \n  \"module avi_alertconfig\": \"lib/ansible/modules/network/avi/avi_alertconfig.py\", \n  \"module avi_alertemailconfig\": \"lib/ansible/modules/network/avi/avi_alertemailconfig.py\", \n  \"module avi_alertscriptconfig\": \"lib/ansible/modules/network/avi/avi_alertscriptconfig.py\", \n  \"module avi_alertsyslogconfig\": \"lib/ansible/modules/network/avi/avi_alertsyslogconfig.py\", \n  \"module avi_analyticsprofile\": \"lib/ansible/modules/network/avi/avi_analyticsprofile.py\", \n  \"module avi_api_session\": \"lib/ansible/modules/network/avi/avi_api_session.py\", \n  \"module avi_applicationpersistenceprofile\": \"lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py\", \n  \"module avi_applicationprofile\": \"lib/ansible/modules/network/avi/avi_applicationprofile.py\", \n  \"module avi_authprofile\": \"lib/ansible/modules/network/avi/avi_authprofile.py\", \n  \"module avi_backup\": \"lib/ansible/modules/network/avi/avi_backup.py\", \n  \"module avi_backupconfiguration\": \"lib/ansible/modules/network/avi/avi_backupconfiguration.py\", \n  \"module avi_certificatemanagementprofile\": \"lib/ansible/modules/network/avi/avi_certificatemanagementprofile.py\", \n  \"module avi_cloud\": \"lib/ansible/modules/network/avi/avi_cloud.py\", \n  \"module avi_cloudconnectoruser\": \"lib/ansible/modules/network/avi/avi_cloudconnectoruser.py\", \n  \"module avi_cloudproperties\": \"lib/ansible/modules/network/avi/avi_cloudproperties.py\", \n  \"module avi_cluster\": \"lib/ansible/modules/network/avi/avi_cluster.py\", \n  \"module avi_controllerproperties\": \"lib/ansible/modules/network/avi/avi_controllerproperties.py\", \n  \"module avi_dnspolicy\": \"lib/ansible/modules/network/avi/avi_dnspolicy.py\", \n  \"module avi_gslb\": \"lib/ansible/modules/network/avi/avi_gslb.py\", \n  \"module avi_gslbapplicationpersistenceprofile\": \"lib/ansible/modules/network/avi/avi_gslbapplicationpersistenceprofile.py\", \n  \"module avi_gslbgeodbprofile\": \"lib/ansible/modules/network/avi/avi_gslbgeodbprofile.py\", \n  \"module avi_gslbhealthmonitor\": \"lib/ansible/modules/network/avi/avi_gslbhealthmonitor.py\", \n  \"module avi_gslbservice\": \"lib/ansible/modules/network/avi/avi_gslbservice.py\", \n  \"module avi_hardwaresecuritymodulegroup\": \"lib/ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py\", \n  \"module avi_healthmonitor\": \"lib/ansible/modules/network/avi/avi_healthmonitor.py\", \n  \"module avi_httppolicyset\": \"lib/ansible/modules/network/avi/avi_httppolicyset.py\", \n  \"module avi_ipaddrgroup\": \"lib/ansible/modules/network/avi/avi_ipaddrgroup.py\", \n  \"module avi_ipamdnsproviderprofile\": \"lib/ansible/modules/network/avi/avi_ipamdnsproviderprofile.py\", \n  \"module avi_microservicegroup\": \"lib/ansible/modules/network/avi/avi_microservicegroup.py\", \n  \"module avi_network\": \"lib/ansible/modules/network/avi/avi_network.py\", \n  \"module avi_networkprofile\": \"lib/ansible/modules/network/avi/avi_networkprofile.py\", \n  \"module avi_networksecuritypolicy\": \"lib/ansible/modules/network/avi/avi_networksecuritypolicy.py\", \n  \"module avi_pkiprofile\": \"lib/ansible/modules/network/avi/avi_pkiprofile.py\", \n  \"module avi_pool\": \"lib/ansible/modules/network/avi/avi_pool.py\", \n  \"module avi_poolgroup\": \"lib/ansible/modules/network/avi/avi_poolgroup.py\", \n  \"module avi_poolgroupdeploymentpolicy\": \"lib/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py\", \n  \"module avi_prioritylabels\": \"lib/ansible/modules/network/avi/avi_prioritylabels.py\", \n  \"module avi_role\": \"lib/ansible/modules/network/avi/avi_role.py\", \n  \"module avi_scheduler\": \"lib/ansible/modules/network/avi/avi_scheduler.py\", \n  \"module avi_seproperties\": \"lib/ansible/modules/network/avi/avi_seproperties.py\", \n  \"module avi_serverautoscalepolicy\": \"lib/ansible/modules/network/avi/avi_serverautoscalepolicy.py\", \n  \"module avi_serviceengine\": \"lib/ansible/modules/network/avi/avi_serviceengine.py\", \n  \"module avi_serviceenginegroup\": \"lib/ansible/modules/network/avi/avi_serviceenginegroup.py\", \n  \"module avi_snmptrapprofile\": \"lib/ansible/modules/network/avi/avi_snmptrapprofile.py\", \n  \"module avi_sslkeyandcertificate\": \"lib/ansible/modules/network/avi/avi_sslkeyandcertificate.py\", \n  \"module avi_sslprofile\": \"lib/ansible/modules/network/avi/avi_sslprofile.py\", \n  \"module avi_stringgroup\": \"lib/ansible/modules/network/avi/avi_stringgroup.py\", \n  \"module avi_systemconfiguration\": \"lib/ansible/modules/network/avi/avi_systemconfiguration.py\", \n  \"module avi_tenant\": \"lib/ansible/modules/network/avi/avi_tenant.py\", \n  \"module avi_trafficcloneprofile\": \"lib/ansible/modules/network/avi/avi_trafficcloneprofile.py\", \n  \"module avi_useraccountprofile\": \"lib/ansible/modules/network/avi/avi_useraccountprofile.py\", \n  \"module avi_virtualservice\": \"lib/ansible/modules/network/avi/avi_virtualservice.py\", \n  \"module avi_vrfcontext\": \"lib/ansible/modules/network/avi/avi_vrfcontext.py\", \n  \"module avi_vsdatascriptset\": \"lib/ansible/modules/network/avi/avi_vsdatascriptset.py\", \n  \"module avi_vsvip\": \"lib/ansible/modules/network/avi/avi_vsvip.py\", \n  \"module avi_webhook\": \"lib/ansible/modules/network/avi/avi_webhook.py\", \n  \"module awall\": \"lib/ansible/modules/system/awall.py\", \n  \"module aws_acm_facts\": \"lib/ansible/modules/cloud/amazon/aws_acm_facts.py\", \n  \"module aws_api_gateway\": \"lib/ansible/modules/cloud/amazon/aws_api_gateway.py\", \n  \"module aws_direct_connect_connection\": \"lib/ansible/modules/cloud/amazon/aws_direct_connect_connection.py\", \n  \"module aws_direct_connect_link_aggregation_group\": \"lib/ansible/modules/cloud/amazon/aws_direct_connect_link_aggregation_group.py\", \n  \"module aws_kms\": \"lib/ansible/modules/cloud/amazon/aws_kms.py\", \n  \"module aws_kms_facts\": \"lib/ansible/modules/cloud/amazon/aws_kms_facts.py\", \n  \"module aws_s3\": \"lib/ansible/modules/cloud/amazon/aws_s3.py\", \n  \"module aws_s3_bucket_facts\": \"lib/ansible/modules/cloud/amazon/aws_s3_bucket_facts.py\", \n  \"module aws_ssm_parameter_store\": \"lib/ansible/modules/cloud/amazon/aws_ssm_parameter_store.py\", \n  \"module aws_waf_facts\": \"lib/ansible/modules/cloud/amazon/aws_waf_facts.py\", \n  \"module azure\": \"lib/ansible/modules/cloud/azure/_azure.py\", \n  \"module azure_rm_acs\": \"lib/ansible/modules/cloud/azure/azure_rm_acs.py\", \n  \"module azure_rm_availabilityset\": \"lib/ansible/modules/cloud/azure/azure_rm_availabilityset.py\", \n  \"module azure_rm_availabilityset_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_availabilityset_facts.py\", \n  \"module azure_rm_deployment\": \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\", \n  \"module azure_rm_dnsrecordset\": \"lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset.py\", \n  \"module azure_rm_dnsrecordset_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset_facts.py\", \n  \"module azure_rm_dnszone\": \"lib/ansible/modules/cloud/azure/azure_rm_dnszone.py\", \n  \"module azure_rm_dnszone_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_dnszone_facts.py\", \n  \"module azure_rm_functionapp\": \"lib/ansible/modules/cloud/azure/azure_rm_functionapp.py\", \n  \"module azure_rm_functionapp_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_functionapp_facts.py\", \n  \"module azure_rm_loadbalancer\": \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer.py\", \n  \"module azure_rm_loadbalancer_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer_facts.py\", \n  \"module azure_rm_managed_disk\": \"lib/ansible/modules/cloud/azure/azure_rm_managed_disk.py\", \n  \"module azure_rm_managed_disk_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_managed_disk_facts.py\", \n  \"module azure_rm_networkinterface\": \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface.py\", \n  \"module azure_rm_networkinterface_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface_facts.py\", \n  \"module azure_rm_publicipaddress\": \"lib/ansible/modules/cloud/azure/azure_rm_publicipaddress.py\", \n  \"module azure_rm_publicipaddress_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_publicipaddress_facts.py\", \n  \"module azure_rm_resourcegroup\": \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup.py\", \n  \"module azure_rm_resourcegroup_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup_facts.py\", \n  \"module azure_rm_securitygroup\": \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup.py\", \n  \"module azure_rm_securitygroup_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup_facts.py\", \n  \"module azure_rm_storageaccount\": \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount.py\", \n  \"module azure_rm_storageaccount_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount_facts.py\", \n  \"module azure_rm_storageblob\": \"lib/ansible/modules/cloud/azure/azure_rm_storageblob.py\", \n  \"module azure_rm_subnet\": \"lib/ansible/modules/cloud/azure/azure_rm_subnet.py\", \n  \"module azure_rm_virtualmachine\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\", \n  \"module azure_rm_virtualmachine_extension\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_extension.py\", \n  \"module azure_rm_virtualmachine_scaleset\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset.py\", \n  \"module azure_rm_virtualmachine_scaleset_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset_facts.py\", \n  \"module azure_rm_virtualmachineimage_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachineimage_facts.py\", \n  \"module azure_rm_virtualnetwork\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork.py\", \n  \"module azure_rm_virtualnetwork_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork_facts.py\", \n  \"module bcf_switch\": \"lib/ansible/modules/network/bigswitch/bcf_switch.py\", \n  \"module beadm\": \"lib/ansible/modules/system/beadm.py\", \n  \"module bearychat\": \"lib/ansible/modules/notification/bearychat.py\", \n  \"module bigip_asm_policy\": \"lib/ansible/modules/network/f5/bigip_asm_policy.py\", \n  \"module bigip_command\": \"lib/ansible/modules/network/f5/bigip_command.py\", \n  \"module bigip_config\": \"lib/ansible/modules/network/f5/bigip_config.py\", \n  \"module bigip_configsync_action\": \"lib/ansible/modules/network/f5/bigip_configsync_action.py\", \n  \"module bigip_configsync_actions\": \"lib/ansible/modules/network/f5/bigip_configsync_actions.py\", \n  \"module bigip_device_dns\": \"lib/ansible/modules/network/f5/bigip_device_dns.py\", \n  \"module bigip_device_ntp\": \"lib/ansible/modules/network/f5/bigip_device_ntp.py\", \n  \"module bigip_device_sshd\": \"lib/ansible/modules/network/f5/bigip_device_sshd.py\", \n  \"module bigip_facts\": \"lib/ansible/modules/network/f5/bigip_facts.py\", \n  \"module bigip_gtm_datacenter\": \"lib/ansible/modules/network/f5/bigip_gtm_datacenter.py\", \n  \"module bigip_gtm_facts\": \"lib/ansible/modules/network/f5/bigip_gtm_facts.py\", \n  \"module bigip_gtm_pool\": \"lib/ansible/modules/network/f5/bigip_gtm_pool.py\", \n  \"module bigip_gtm_virtual_server\": \"lib/ansible/modules/network/f5/bigip_gtm_virtual_server.py\", \n  \"module bigip_gtm_wide_ip\": \"lib/ansible/modules/network/f5/bigip_gtm_wide_ip.py\", \n  \"module bigip_hostname\": \"lib/ansible/modules/network/f5/bigip_hostname.py\", \n  \"module bigip_iapp_service\": \"lib/ansible/modules/network/f5/bigip_iapp_service.py\", \n  \"module bigip_iapp_template\": \"lib/ansible/modules/network/f5/bigip_iapp_template.py\", \n  \"module bigip_iapplx_package\": \"lib/ansible/modules/network/f5/bigip_iapplx_package.py\", \n  \"module bigip_irule\": \"lib/ansible/modules/network/f5/bigip_irule.py\", \n  \"module bigip_monitor_http\": \"lib/ansible/modules/network/f5/bigip_monitor_http.py\", \n  \"module bigip_monitor_https\": \"lib/ansible/modules/network/f5/bigip_monitor_https.py\", \n  \"module bigip_monitor_tcp\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp.py\", \n  \"module bigip_monitor_tcp_echo\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp_echo.py\", \n  \"module bigip_monitor_tcp_half_open\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp_half_open.py\", \n  \"module bigip_node\": \"lib/ansible/modules/network/f5/bigip_node.py\", \n  \"module bigip_partition\": \"lib/ansible/modules/network/f5/bigip_partition.py\", \n  \"module bigip_policy\": \"lib/ansible/modules/network/f5/bigip_policy.py\", \n  \"module bigip_pool\": \"lib/ansible/modules/network/f5/bigip_pool.py\", \n  \"module bigip_pool_member\": \"lib/ansible/modules/network/f5/bigip_pool_member.py\", \n  \"module bigip_provision\": \"lib/ansible/modules/network/f5/bigip_provision.py\", \n  \"module bigip_qkview\": \"lib/ansible/modules/network/f5/bigip_qkview.py\", \n  \"module bigip_remote_syslog\": \"lib/ansible/modules/network/f5/bigip_remote_syslog.py\", \n  \"module bigip_routedomain\": \"lib/ansible/modules/network/f5/bigip_routedomain.py\", \n  \"module bigip_selfip\": \"lib/ansible/modules/network/f5/bigip_selfip.py\", \n  \"module bigip_snat_pool\": \"lib/ansible/modules/network/f5/bigip_snat_pool.py\", \n  \"module bigip_snmp\": \"lib/ansible/modules/network/f5/bigip_snmp.py\", \n  \"module bigip_snmp_trap\": \"lib/ansible/modules/network/f5/bigip_snmp_trap.py\", \n  \"module bigip_ssl_certificate\": \"lib/ansible/modules/network/f5/bigip_ssl_certificate.py\", \n  \"module bigip_ssl_key\": \"lib/ansible/modules/network/f5/bigip_ssl_key.py\", \n  \"module bigip_sys_db\": \"lib/ansible/modules/network/f5/bigip_sys_db.py\", \n  \"module bigip_sys_global\": \"lib/ansible/modules/network/f5/bigip_sys_global.py\", \n  \"module bigip_ucs\": \"lib/ansible/modules/network/f5/bigip_ucs.py\", \n  \"module bigip_user\": \"lib/ansible/modules/network/f5/bigip_user.py\", \n  \"module bigip_virtual_address\": \"lib/ansible/modules/network/f5/bigip_virtual_address.py\", \n  \"module bigip_virtual_server\": \"lib/ansible/modules/network/f5/bigip_virtual_server.py\", \n  \"module bigip_vlan\": \"lib/ansible/modules/network/f5/bigip_vlan.py\", \n  \"module bigip_wait\": \"lib/ansible/modules/network/f5/bigip_wait.py\", \n  \"module bigmon_chain\": \"lib/ansible/modules/network/bigswitch/bigmon_chain.py\", \n  \"module bigmon_policy\": \"lib/ansible/modules/network/bigswitch/bigmon_policy.py\", \n  \"module bigpanda\": \"lib/ansible/modules/monitoring/bigpanda.py\", \n  \"module blockinfile\": \"lib/ansible/modules/files/blockinfile.py\", \n  \"module bower\": \"lib/ansible/modules/packaging/language/bower.py\", \n  \"module bundler\": \"lib/ansible/modules/packaging/language/bundler.py\", \n  \"module bzr\": \"lib/ansible/modules/source_control/bzr.py\", \n  \"module campfire\": \"lib/ansible/modules/notification/campfire.py\", \n  \"module capabilities\": \"lib/ansible/modules/system/capabilities.py\", \n  \"module catapult\": \"lib/ansible/modules/notification/catapult.py\", \n  \"module ce_aaa_server\": \"lib/ansible/modules/network/cloudengine/ce_aaa_server.py\", \n  \"module ce_aaa_server_host\": \"lib/ansible/modules/network/cloudengine/ce_aaa_server_host.py\", \n  \"module ce_acl\": \"lib/ansible/modules/network/cloudengine/ce_acl.py\", \n  \"module ce_acl_advance\": \"lib/ansible/modules/network/cloudengine/ce_acl_advance.py\", \n  \"module ce_acl_interface\": \"lib/ansible/modules/network/cloudengine/ce_acl_interface.py\", \n  \"module ce_bfd_global\": \"lib/ansible/modules/network/cloudengine/ce_bfd_global.py\", \n  \"module ce_bfd_session\": \"lib/ansible/modules/network/cloudengine/ce_bfd_session.py\", \n  \"module ce_bfd_view\": \"lib/ansible/modules/network/cloudengine/ce_bfd_view.py\", \n  \"module ce_bgp\": \"lib/ansible/modules/network/cloudengine/ce_bgp.py\", \n  \"module ce_bgp_af\": \"lib/ansible/modules/network/cloudengine/ce_bgp_af.py\", \n  \"module ce_bgp_neighbor\": \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor.py\", \n  \"module ce_bgp_neighbor_af\": \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor_af.py\", \n  \"module ce_command\": \"lib/ansible/modules/network/cloudengine/ce_command.py\", \n  \"module ce_config\": \"lib/ansible/modules/network/cloudengine/ce_config.py\", \n  \"module ce_dldp\": \"lib/ansible/modules/network/cloudengine/ce_dldp.py\", \n  \"module ce_dldp_interface\": \"lib/ansible/modules/network/cloudengine/ce_dldp_interface.py\", \n  \"module ce_eth_trunk\": \"lib/ansible/modules/network/cloudengine/ce_eth_trunk.py\", \n  \"module ce_evpn_bd_vni\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bd_vni.py\", \n  \"module ce_evpn_bgp\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp.py\", \n  \"module ce_evpn_bgp_rr\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp_rr.py\", \n  \"module ce_evpn_global\": \"lib/ansible/modules/network/cloudengine/ce_evpn_global.py\", \n  \"module ce_facts\": \"lib/ansible/modules/network/cloudengine/ce_facts.py\", \n  \"module ce_file_copy\": \"lib/ansible/modules/network/cloudengine/ce_file_copy.py\", \n  \"module ce_info_center_debug\": \"lib/ansible/modules/network/cloudengine/ce_info_center_debug.py\", \n  \"module ce_info_center_global\": \"lib/ansible/modules/network/cloudengine/ce_info_center_global.py\", \n  \"module ce_info_center_log\": \"lib/ansible/modules/network/cloudengine/ce_info_center_log.py\", \n  \"module ce_info_center_trap\": \"lib/ansible/modules/network/cloudengine/ce_info_center_trap.py\", \n  \"module ce_interface\": \"lib/ansible/modules/network/cloudengine/ce_interface.py\", \n  \"module ce_interface_ospf\": \"lib/ansible/modules/network/cloudengine/ce_interface_ospf.py\", \n  \"module ce_ip_interface\": \"lib/ansible/modules/network/cloudengine/ce_ip_interface.py\", \n  \"module ce_link_status\": \"lib/ansible/modules/network/cloudengine/ce_link_status.py\", \n  \"module ce_mlag_config\": \"lib/ansible/modules/network/cloudengine/ce_mlag_config.py\", \n  \"module ce_mlag_interface\": \"lib/ansible/modules/network/cloudengine/ce_mlag_interface.py\", \n  \"module ce_mtu\": \"lib/ansible/modules/network/cloudengine/ce_mtu.py\", \n  \"module ce_netconf\": \"lib/ansible/modules/network/cloudengine/ce_netconf.py\", \n  \"module ce_netstream_aging\": \"lib/ansible/modules/network/cloudengine/ce_netstream_aging.py\", \n  \"module ce_netstream_export\": \"lib/ansible/modules/network/cloudengine/ce_netstream_export.py\", \n  \"module ce_netstream_global\": \"lib/ansible/modules/network/cloudengine/ce_netstream_global.py\", \n  \"module ce_netstream_template\": \"lib/ansible/modules/network/cloudengine/ce_netstream_template.py\", \n  \"module ce_ntp\": \"lib/ansible/modules/network/cloudengine/ce_ntp.py\", \n  \"module ce_ntp_auth\": \"lib/ansible/modules/network/cloudengine/ce_ntp_auth.py\", \n  \"module ce_ospf\": \"lib/ansible/modules/network/cloudengine/ce_ospf.py\", \n  \"module ce_ospf_vrf\": \"lib/ansible/modules/network/cloudengine/ce_ospf_vrf.py\", \n  \"module ce_reboot\": \"lib/ansible/modules/network/cloudengine/ce_reboot.py\", \n  \"module ce_rollback\": \"lib/ansible/modules/network/cloudengine/ce_rollback.py\", \n  \"module ce_sflow\": \"lib/ansible/modules/network/cloudengine/ce_sflow.py\", \n  \"module ce_snmp_community\": \"lib/ansible/modules/network/cloudengine/ce_snmp_community.py\", \n  \"module ce_snmp_contact\": \"lib/ansible/modules/network/cloudengine/ce_snmp_contact.py\", \n  \"module ce_snmp_location\": \"lib/ansible/modules/network/cloudengine/ce_snmp_location.py\", \n  \"module ce_snmp_target_host\": \"lib/ansible/modules/network/cloudengine/ce_snmp_target_host.py\", \n  \"module ce_snmp_traps\": \"lib/ansible/modules/network/cloudengine/ce_snmp_traps.py\", \n  \"module ce_snmp_user\": \"lib/ansible/modules/network/cloudengine/ce_snmp_user.py\", \n  \"module ce_startup\": \"lib/ansible/modules/network/cloudengine/ce_startup.py\", \n  \"module ce_static_route\": \"lib/ansible/modules/network/cloudengine/ce_static_route.py\", \n  \"module ce_stp\": \"lib/ansible/modules/network/cloudengine/ce_stp.py\", \n  \"module ce_switchport\": \"lib/ansible/modules/network/cloudengine/ce_switchport.py\", \n  \"module ce_vlan\": \"lib/ansible/modules/network/cloudengine/ce_vlan.py\", \n  \"module ce_vrf\": \"lib/ansible/modules/network/cloudengine/ce_vrf.py\", \n  \"module ce_vrf_af\": \"lib/ansible/modules/network/cloudengine/ce_vrf_af.py\", \n  \"module ce_vrf_interface\": \"lib/ansible/modules/network/cloudengine/ce_vrf_interface.py\", \n  \"module ce_vrrp\": \"lib/ansible/modules/network/cloudengine/ce_vrrp.py\", \n  \"module ce_vxlan_arp\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_arp.py\", \n  \"module ce_vxlan_gateway\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_gateway.py\", \n  \"module ce_vxlan_global\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_global.py\", \n  \"module ce_vxlan_tunnel\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_tunnel.py\", \n  \"module ce_vxlan_vap\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_vap.py\", \n  \"module circonus_annotation\": \"lib/ansible/modules/monitoring/circonus_annotation.py\", \n  \"module cisco_spark\": \"lib/ansible/modules/notification/cisco_spark.py\", \n  \"module cl_bond\": \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n  \"module cl_bridge\": \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n  \"module cl_img_install\": \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n  \"module cl_interface\": \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n  \"module cl_interface_policy\": \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n  \"module cl_license\": \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n  \"module cl_ports\": \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n  \"module clc_aa_policy\": \"lib/ansible/modules/cloud/centurylink/clc_aa_policy.py\", \n  \"module clc_alert_policy\": \"lib/ansible/modules/cloud/centurylink/clc_alert_policy.py\", \n  \"module clc_blueprint_package\": \"lib/ansible/modules/cloud/centurylink/clc_blueprint_package.py\", \n  \"module clc_firewall_policy\": \"lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py\", \n  \"module clc_group\": \"lib/ansible/modules/cloud/centurylink/clc_group.py\", \n  \"module clc_loadbalancer\": \"lib/ansible/modules/cloud/centurylink/clc_loadbalancer.py\", \n  \"module clc_modify_server\": \"lib/ansible/modules/cloud/centurylink/clc_modify_server.py\", \n  \"module clc_publicip\": \"lib/ansible/modules/cloud/centurylink/clc_publicip.py\", \n  \"module clc_server\": \"lib/ansible/modules/cloud/centurylink/clc_server.py\", \n  \"module clc_server_snapshot\": \"lib/ansible/modules/cloud/centurylink/clc_server_snapshot.py\", \n  \"module cloudflare_dns\": \"lib/ansible/modules/net_tools/cloudflare_dns.py\", \n  \"module cloudformation\": \"lib/ansible/modules/cloud/amazon/cloudformation.py\", \n  \"module cloudformation_facts\": \"lib/ansible/modules/cloud/amazon/cloudformation_facts.py\", \n  \"module cloudfront_facts\": \"lib/ansible/modules/cloud/amazon/cloudfront_facts.py\", \n  \"module cloudscale_server\": \"lib/ansible/modules/cloud/cloudscale/cloudscale_server.py\", \n  \"module cloudtrail\": \"lib/ansible/modules/cloud/amazon/cloudtrail.py\", \n  \"module cloudwatchevent_rule\": \"lib/ansible/modules/cloud/amazon/cloudwatchevent_rule.py\", \n  \"module clustering/consul_acl\": [\n    \"lib/ansible/modules/clustering/consul_acl.py\"\n  ], \n  \"module cnos_backup\": \"lib/ansible/modules/network/lenovo/cnos_backup.py\", \n  \"module cnos_bgp\": \"lib/ansible/modules/network/lenovo/cnos_bgp.py\", \n  \"module cnos_command\": \"lib/ansible/modules/network/lenovo/cnos_command.py\", \n  \"module cnos_conditional_command\": \"lib/ansible/modules/network/lenovo/cnos_conditional_command.py\", \n  \"module cnos_conditional_template\": \"lib/ansible/modules/network/lenovo/cnos_conditional_template.py\", \n  \"module cnos_factory\": \"lib/ansible/modules/network/lenovo/cnos_factory.py\", \n  \"module cnos_facts\": \"lib/ansible/modules/network/lenovo/cnos_facts.py\", \n  \"module cnos_image\": \"lib/ansible/modules/network/lenovo/cnos_image.py\", \n  \"module cnos_interface\": \"lib/ansible/modules/network/lenovo/cnos_interface.py\", \n  \"module cnos_portchannel\": \"lib/ansible/modules/network/lenovo/cnos_portchannel.py\", \n  \"module cnos_reload\": \"lib/ansible/modules/network/lenovo/cnos_reload.py\", \n  \"module cnos_rollback\": \"lib/ansible/modules/network/lenovo/cnos_rollback.py\", \n  \"module cnos_save\": \"lib/ansible/modules/network/lenovo/cnos_save.py\", \n  \"module cnos_showrun\": \"lib/ansible/modules/network/lenovo/cnos_showrun.py\", \n  \"module cnos_template\": \"lib/ansible/modules/network/lenovo/cnos_template.py\", \n  \"module cnos_vlag\": \"lib/ansible/modules/network/lenovo/cnos_vlag.py\", \n  \"module cnos_vlan\": \"lib/ansible/modules/network/lenovo/cnos_vlan.py\", \n  \"module command\": \"lib/ansible/modules/commands/command.py\", \n  \"module composer\": \"lib/ansible/modules/packaging/language/composer.py\", \n  \"module consul\": \"lib/ansible/modules/clustering/consul.py\", \n  \"module consul_acl\": \"lib/ansible/modules/clustering/consul_acl.py\", \n  \"module consul_kv\": \"lib/ansible/modules/clustering/consul_kv.py\", \n  \"module consul_session\": \"lib/ansible/modules/clustering/consul_session.py\", \n  \"module copy\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"module cpanm\": \"lib/ansible/modules/packaging/language/cpanm.py\", \n  \"module cron\": \"lib/ansible/modules/system/cron.py\", \n  \"module cronvar\": \"lib/ansible/modules/system/cronvar.py\", \n  \"module crypttab\": \"lib/ansible/modules/system/crypttab.py\", \n  \"module cs_account\": \"lib/ansible/modules/cloud/cloudstack/cs_account.py\", \n  \"module cs_affinitygroup\": \"lib/ansible/modules/cloud/cloudstack/cs_affinitygroup.py\", \n  \"module cs_cluster\": \"lib/ansible/modules/cloud/cloudstack/cs_cluster.py\", \n  \"module cs_configuration\": \"lib/ansible/modules/cloud/cloudstack/cs_configuration.py\", \n  \"module cs_domain\": \"lib/ansible/modules/cloud/cloudstack/cs_domain.py\", \n  \"module cs_facts\": \"lib/ansible/modules/cloud/cloudstack/cs_facts.py\", \n  \"module cs_firewall\": \"lib/ansible/modules/cloud/cloudstack/cs_firewall.py\", \n  \"module cs_host\": \"lib/ansible/modules/cloud/cloudstack/cs_host.py\", \n  \"module cs_instance\": \"lib/ansible/modules/cloud/cloudstack/cs_instance.py\", \n  \"module cs_instance_facts\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_facts.py\", \n  \"module cs_instance_nic\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_nic.py\", \n  \"module cs_instance_nic_secondaryip\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_nic_secondaryip.py\", \n  \"module cs_instancegroup\": \"lib/ansible/modules/cloud/cloudstack/cs_instancegroup.py\", \n  \"module cs_ip_address\": \"lib/ansible/modules/cloud/cloudstack/cs_ip_address.py\", \n  \"module cs_iso\": \"lib/ansible/modules/cloud/cloudstack/cs_iso.py\", \n  \"module cs_loadbalancer_rule\": \"lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule.py\", \n  \"module cs_loadbalancer_rule_member\": \"lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule_member.py\", \n  \"module cs_network\": \"lib/ansible/modules/cloud/cloudstack/cs_network.py\", \n  \"module cs_network_acl\": \"lib/ansible/modules/cloud/cloudstack/cs_network_acl.py\", \n  \"module cs_network_acl_rule\": \"lib/ansible/modules/cloud/cloudstack/cs_network_acl_rule.py\", \n  \"module cs_nic\": \"lib/ansible/modules/cloud/cloudstack/_cs_nic.py\", \n  \"module cs_pod\": \"lib/ansible/modules/cloud/cloudstack/cs_pod.py\", \n  \"module cs_portforward\": \"lib/ansible/modules/cloud/cloudstack/cs_portforward.py\", \n  \"module cs_project\": \"lib/ansible/modules/cloud/cloudstack/cs_project.py\", \n  \"module cs_region\": \"lib/ansible/modules/cloud/cloudstack/cs_region.py\", \n  \"module cs_resourcelimit\": \"lib/ansible/modules/cloud/cloudstack/cs_resourcelimit.py\", \n  \"module cs_role\": \"lib/ansible/modules/cloud/cloudstack/cs_role.py\", \n  \"module cs_router\": \"lib/ansible/modules/cloud/cloudstack/cs_router.py\", \n  \"module cs_securitygroup\": \"lib/ansible/modules/cloud/cloudstack/cs_securitygroup.py\", \n  \"module cs_securitygroup_rule\": \"lib/ansible/modules/cloud/cloudstack/cs_securitygroup_rule.py\", \n  \"module cs_snapshot_policy\": \"lib/ansible/modules/cloud/cloudstack/cs_snapshot_policy.py\", \n  \"module cs_sshkeypair\": \"lib/ansible/modules/cloud/cloudstack/cs_sshkeypair.py\", \n  \"module cs_staticnat\": \"lib/ansible/modules/cloud/cloudstack/cs_staticnat.py\", \n  \"module cs_storage_pool\": \"lib/ansible/modules/cloud/cloudstack/cs_storage_pool.py\", \n  \"module cs_template\": \"lib/ansible/modules/cloud/cloudstack/cs_template.py\", \n  \"module cs_user\": \"lib/ansible/modules/cloud/cloudstack/cs_user.py\", \n  \"module cs_vmsnapshot\": \"lib/ansible/modules/cloud/cloudstack/cs_vmsnapshot.py\", \n  \"module cs_volume\": \"lib/ansible/modules/cloud/cloudstack/cs_volume.py\", \n  \"module cs_vpc\": \"lib/ansible/modules/cloud/cloudstack/cs_vpc.py\", \n  \"module cs_vpn_gateway\": \"lib/ansible/modules/cloud/cloudstack/cs_vpn_gateway.py\", \n  \"module cs_zone\": \"lib/ansible/modules/cloud/cloudstack/cs_zone.py\", \n  \"module cs_zone_facts\": \"lib/ansible/modules/cloud/cloudstack/cs_zone_facts.py\", \n  \"module cv_server_provision\": \"lib/ansible/modules/network/cloudvision/cv_server_provision.py\", \n  \"module cyberark_authentication\": \"lib/ansible/modules/identity/cyberark/cyberark_authentication.py\", \n  \"module cyberark_user\": \"lib/ansible/modules/identity/cyberark/cyberark_user.py\", \n  \"module data_pipeline\": \"lib/ansible/modules/cloud/amazon/data_pipeline.py\", \n  \"module datadog_event\": \"lib/ansible/modules/monitoring/datadog_event.py\", \n  \"module datadog_monitor\": \"lib/ansible/modules/monitoring/datadog_monitor.py\", \n  \"module dconf\": \"lib/ansible/modules/system/dconf.py\", \n  \"module debconf\": \"lib/ansible/modules/system/debconf.py\", \n  \"module debug\": \"lib/ansible/modules/utilities/logic/debug.py\", \n  \"module dellos10_command\": \"lib/ansible/modules/network/dellos10/dellos10_command.py\", \n  \"module dellos10_config\": \"lib/ansible/modules/network/dellos10/dellos10_config.py\", \n  \"module dellos10_facts\": \"lib/ansible/modules/network/dellos10/dellos10_facts.py\", \n  \"module dellos6_command\": \"lib/ansible/modules/network/dellos6/dellos6_command.py\", \n  \"module dellos6_config\": \"lib/ansible/modules/network/dellos6/dellos6_config.py\", \n  \"module dellos6_facts\": \"lib/ansible/modules/network/dellos6/dellos6_facts.py\", \n  \"module dellos9_command\": \"lib/ansible/modules/network/dellos9/dellos9_command.py\", \n  \"module dellos9_config\": \"lib/ansible/modules/network/dellos9/dellos9_config.py\", \n  \"module dellos9_facts\": \"lib/ansible/modules/network/dellos9/dellos9_facts.py\", \n  \"module deploy_helper\": \"lib/ansible/modules/web_infrastructure/deploy_helper.py\", \n  \"module digital_ocean\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean.py\", \n  \"module digital_ocean_block_storage\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_block_storage.py\", \n  \"module digital_ocean_domain\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_domain.py\", \n  \"module digital_ocean_floating_ip\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_floating_ip.py\", \n  \"module digital_ocean_sshkey\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey.py\", \n  \"module digital_ocean_sshkey_facts\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey_facts.py\", \n  \"module digital_ocean_tag\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_tag.py\", \n  \"module dimensiondata_network\": \"lib/ansible/modules/cloud/dimensiondata/dimensiondata_network.py\", \n  \"module django_manage\": \"lib/ansible/modules/web_infrastructure/django_manage.py\", \n  \"module dladm_etherstub\": \"lib/ansible/modules/network/illumos/dladm_etherstub.py\", \n  \"module dladm_iptun\": \"lib/ansible/modules/network/illumos/dladm_iptun.py\", \n  \"module dladm_linkprop\": \"lib/ansible/modules/network/illumos/dladm_linkprop.py\", \n  \"module dladm_vlan\": \"lib/ansible/modules/network/illumos/dladm_vlan.py\", \n  \"module dladm_vnic\": \"lib/ansible/modules/network/illumos/dladm_vnic.py\", \n  \"module dnf\": \"lib/ansible/modules/packaging/os/dnf.py\", \n  \"module dnsimple\": \"lib/ansible/modules/net_tools/dnsimple.py\", \n  \"module dnsmadeeasy\": \"lib/ansible/modules/net_tools/dnsmadeeasy.py\", \n  \"module docker\": \"lib/ansible/modules/cloud/docker/_docker.py\", \n  \"module docker_container\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n  \"module docker_image\": \"lib/ansible/modules/cloud/docker/docker_image.py\", \n  \"module docker_image_facts\": \"lib/ansible/modules/cloud/docker/docker_image_facts.py\", \n  \"module docker_login\": \"lib/ansible/modules/cloud/docker/docker_login.py\", \n  \"module docker_network\": \"lib/ansible/modules/cloud/docker/docker_network.py\", \n  \"module docker_secret\": \"lib/ansible/modules/cloud/docker/docker_secret.py\", \n  \"module docker_service\": \"lib/ansible/modules/cloud/docker/docker_service.py\", \n  \"module docker_volume\": \"lib/ansible/modules/cloud/docker/docker_volume.py\", \n  \"module dpkg_selections\": \"lib/ansible/modules/packaging/os/dpkg_selections.py\", \n  \"module dynamodb_table\": \"lib/ansible/modules/cloud/amazon/dynamodb_table.py\", \n  \"module dynamodb_ttl\": \"lib/ansible/modules/cloud/amazon/dynamodb_ttl.py\", \n  \"module easy_install\": \"lib/ansible/modules/packaging/language/easy_install.py\", \n  \"module ec2\": \"lib/ansible/modules/cloud/amazon/ec2.py\", \n  \"module ec2_ami\": \"lib/ansible/modules/cloud/amazon/ec2_ami.py\", \n  \"module ec2_ami_copy\": \"lib/ansible/modules/cloud/amazon/ec2_ami_copy.py\", \n  \"module ec2_ami_facts\": \"lib/ansible/modules/cloud/amazon/ec2_ami_facts.py\", \n  \"module ec2_ami_find\": \"lib/ansible/modules/cloud/amazon/ec2_ami_find.py\", \n  \"module ec2_ami_search\": \"lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\", \n  \"module ec2_asg\": \"lib/ansible/modules/cloud/amazon/ec2_asg.py\", \n  \"module ec2_asg_facts\": \"lib/ansible/modules/cloud/amazon/ec2_asg_facts.py\", \n  \"module ec2_customer_gateway\": \"lib/ansible/modules/cloud/amazon/ec2_customer_gateway.py\", \n  \"module ec2_eip\": \"lib/ansible/modules/cloud/amazon/ec2_eip.py\", \n  \"module ec2_elb\": \"lib/ansible/modules/cloud/amazon/ec2_elb.py\", \n  \"module ec2_elb_facts\": \"lib/ansible/modules/cloud/amazon/ec2_elb_facts.py\", \n  \"module ec2_elb_lb\": \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\", \n  \"module ec2_eni\": \"lib/ansible/modules/cloud/amazon/ec2_eni.py\", \n  \"module ec2_eni_facts\": \"lib/ansible/modules/cloud/amazon/ec2_eni_facts.py\", \n  \"module ec2_facts\": \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\", \n  \"module ec2_group\": \"lib/ansible/modules/cloud/amazon/ec2_group.py\", \n  \"module ec2_group_facts\": \"lib/ansible/modules/cloud/amazon/ec2_group_facts.py\", \n  \"module ec2_instance_facts\": \"lib/ansible/modules/cloud/amazon/ec2_instance_facts.py\", \n  \"module ec2_key\": \"lib/ansible/modules/cloud/amazon/ec2_key.py\", \n  \"module ec2_lc\": \"lib/ansible/modules/cloud/amazon/ec2_lc.py\", \n  \"module ec2_lc_facts\": \"lib/ansible/modules/cloud/amazon/ec2_lc_facts.py\", \n  \"module ec2_lc_find\": \"lib/ansible/modules/cloud/amazon/ec2_lc_find.py\", \n  \"module ec2_metadata_facts\": \"lib/ansible/modules/cloud/amazon/ec2_metadata_facts.py\", \n  \"module ec2_metric_alarm\": \"lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py\", \n  \"module ec2_remote_facts\": \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\", \n  \"module ec2_scaling_policy\": \"lib/ansible/modules/cloud/amazon/ec2_scaling_policy.py\", \n  \"module ec2_snapshot\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot.py\", \n  \"module ec2_snapshot_copy\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot_copy.py\", \n  \"module ec2_snapshot_facts\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot_facts.py\", \n  \"module ec2_tag\": \"lib/ansible/modules/cloud/amazon/ec2_tag.py\", \n  \"module ec2_vol\": \"lib/ansible/modules/cloud/amazon/ec2_vol.py\", \n  \"module ec2_vol_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vol_facts.py\", \n  \"module ec2_vpc\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n  \"module ec2_vpc_dhcp_option\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option.py\", \n  \"module ec2_vpc_dhcp_option_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option_facts.py\", \n  \"module ec2_vpc_dhcp_options\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\", \n  \"module ec2_vpc_dhcp_options_facts\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\", \n  \"module ec2_vpc_endpoint\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint.py\", \n  \"module ec2_vpc_endpoint_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint_facts.py\", \n  \"module ec2_vpc_igw\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw.py\", \n  \"module ec2_vpc_igw_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw_facts.py\", \n  \"module ec2_vpc_nacl\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl.py\", \n  \"module ec2_vpc_nacl_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl_facts.py\", \n  \"module ec2_vpc_nat_gateway\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway.py\", \n  \"module ec2_vpc_nat_gateway_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway_facts.py\", \n  \"module ec2_vpc_net\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_net.py\", \n  \"module ec2_vpc_net_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_net_facts.py\", \n  \"module ec2_vpc_peer\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peer.py\", \n  \"module ec2_vpc_peering_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peering_facts.py\", \n  \"module ec2_vpc_route_table\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\", \n  \"module ec2_vpc_route_table_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table_facts.py\", \n  \"module ec2_vpc_subnet\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet.py\", \n  \"module ec2_vpc_subnet_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet_facts.py\", \n  \"module ec2_vpc_vgw\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw.py\", \n  \"module ec2_vpc_vgw_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw_facts.py\", \n  \"module ec2_vpc_vpn\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vpn.py\", \n  \"module ec2_win_password\": \"lib/ansible/modules/cloud/amazon/ec2_win_password.py\", \n  \"module ecs_attribute\": \"lib/ansible/modules/cloud/amazon/ecs_attribute.py\", \n  \"module ecs_cluster\": \"lib/ansible/modules/cloud/amazon/ecs_cluster.py\", \n  \"module ecs_ecr\": \"lib/ansible/modules/cloud/amazon/ecs_ecr.py\", \n  \"module ecs_service\": \"lib/ansible/modules/cloud/amazon/ecs_service.py\", \n  \"module ecs_service_facts\": \"lib/ansible/modules/cloud/amazon/ecs_service_facts.py\", \n  \"module ecs_task\": \"lib/ansible/modules/cloud/amazon/ecs_task.py\", \n  \"module ecs_taskdefinition\": \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py\", \n  \"module ecs_taskdefinition_facts\": \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition_facts.py\", \n  \"module efs\": \"lib/ansible/modules/cloud/amazon/efs.py\", \n  \"module efs_facts\": \"lib/ansible/modules/cloud/amazon/efs_facts.py\", \n  \"module ejabberd_user\": \"lib/ansible/modules/web_infrastructure/ejabberd_user.py\", \n  \"module elasticache\": \"lib/ansible/modules/cloud/amazon/elasticache.py\", \n  \"module elasticache_parameter_group\": \"lib/ansible/modules/cloud/amazon/elasticache_parameter_group.py\", \n  \"module elasticache_snapshot\": \"lib/ansible/modules/cloud/amazon/elasticache_snapshot.py\", \n  \"module elasticache_subnet_group\": \"lib/ansible/modules/cloud/amazon/elasticache_subnet_group.py\", \n  \"module elasticsearch_plugin\": \"lib/ansible/modules/database/misc/elasticsearch_plugin.py\", \n  \"module elb_application_lb\": \"lib/ansible/modules/cloud/amazon/elb_application_lb.py\", \n  \"module elb_application_lb_facts\": \"lib/ansible/modules/cloud/amazon/elb_application_lb_facts.py\", \n  \"module elb_classic_lb\": \"lib/ansible/modules/cloud/amazon/elb_classic_lb.py\", \n  \"module elb_classic_lb_facts\": \"lib/ansible/modules/cloud/amazon/elb_classic_lb_facts.py\", \n  \"module elb_instance\": \"lib/ansible/modules/cloud/amazon/elb_instance.py\", \n  \"module elb_target_group\": \"lib/ansible/modules/cloud/amazon/elb_target_group.py\", \n  \"module elb_target_group_facts\": \"lib/ansible/modules/cloud/amazon/elb_target_group_facts.py\", \n  \"module environment\": [], \n  \"module eos_banner\": \"lib/ansible/modules/network/eos/eos_banner.py\", \n  \"module eos_command\": \"lib/ansible/modules/network/eos/eos_command.py\", \n  \"module eos_config\": \"lib/ansible/modules/network/eos/eos_config.py\", \n  \"module eos_eapi\": \"lib/ansible/modules/network/eos/eos_eapi.py\", \n  \"module eos_facts\": \"lib/ansible/modules/network/eos/eos_facts.py\", \n  \"module eos_logging\": \"lib/ansible/modules/network/eos/eos_logging.py\", \n  \"module eos_system\": \"lib/ansible/modules/network/eos/eos_system.py\", \n  \"module eos_user\": \"lib/ansible/modules/network/eos/eos_user.py\", \n  \"module eos_vlan\": \"lib/ansible/modules/network/eos/eos_vlan.py\", \n  \"module eos_vrf\": \"lib/ansible/modules/network/eos/eos_vrf.py\", \n  \"module execute_lambda\": \"lib/ansible/modules/cloud/amazon/execute_lambda.py\", \n  \"module exo_dns_domain\": \"lib/ansible/modules/net_tools/exoscale/exo_dns_domain.py\", \n  \"module exo_dns_record\": \"lib/ansible/modules/net_tools/exoscale/exo_dns_record.py\", \n  \"module expect\": \"lib/ansible/modules/commands/expect.py\", \n  \"module extra for windows: `win_scheduled_task`\": [\n    \"lib/ansible/modules/windows/win_scheduled_task.ps1\"\n  ], \n  \"module facter\": \"lib/ansible/modules/system/facter.py\", \n  \"module fail\": \"lib/ansible/modules/utilities/logic/fail.py\", \n  \"module fetch\": \"lib/ansible/modules/files/fetch.py\", \n  \"module file\": \"lib/ansible/modules/files/file.py\", \n  \"module filesystem\": \"lib/ansible/modules/system/filesystem.py\", \n  \"module find\": \"lib/ansible/modules/files/find.py\", \n  \"module firewalld\": \"lib/ansible/modules/system/firewalld.py\", \n  \"module flowadm\": \"lib/ansible/modules/network/illumos/flowadm.py\", \n  \"module flowdock\": \"lib/ansible/modules/notification/flowdock.py\", \n  \"module foreman\": \"lib/ansible/modules/remote_management/foreman/foreman.py\", \n  \"module fortios_address\": \"lib/ansible/modules/network/fortios/fortios_address.py\", \n  \"module fortios_config\": \"lib/ansible/modules/network/fortios/fortios_config.py\", \n  \"module fortios_ipv4_policy\": \"lib/ansible/modules/network/fortios/fortios_ipv4_policy.py\", \n  \"module gc_storage\": \"lib/ansible/modules/cloud/google/gc_storage.py\", \n  \"module gcdns_record\": \"lib/ansible/modules/cloud/google/gcdns_record.py\", \n  \"module gcdns_zone\": \"lib/ansible/modules/cloud/google/gcdns_zone.py\", \n  \"module gce\": \"lib/ansible/modules/cloud/google/gce.py\", \n  \"module gce_eip\": \"lib/ansible/modules/cloud/google/gce_eip.py\", \n  \"module gce_img\": \"lib/ansible/modules/cloud/google/gce_img.py\", \n  \"module gce_instance_template\": \"lib/ansible/modules/cloud/google/gce_instance_template.py\", \n  \"module gce_labels\": \"lib/ansible/modules/cloud/google/gce_labels.py\", \n  \"module gce_lb\": \"lib/ansible/modules/cloud/google/gce_lb.py\", \n  \"module gce_mig\": \"lib/ansible/modules/cloud/google/gce_mig.py\", \n  \"module gce_net\": \"lib/ansible/modules/cloud/google/gce_net.py\", \n  \"module gce_pd\": \"lib/ansible/modules/cloud/google/gce_pd.py\", \n  \"module gce_snapshot\": \"lib/ansible/modules/cloud/google/gce_snapshot.py\", \n  \"module gce_tag\": \"lib/ansible/modules/cloud/google/gce_tag.py\", \n  \"module gconftool2\": \"lib/ansible/modules/system/gconftool2.py\", \n  \"module gcp_backend_service\": \"lib/ansible/modules/cloud/google/gcp_backend_service.py\", \n  \"module gcp_forwarding_rule\": \"lib/ansible/modules/cloud/google/gcp_forwarding_rule.py\", \n  \"module gcp_healthcheck\": \"lib/ansible/modules/cloud/google/gcp_healthcheck.py\", \n  \"module gcp_target_proxy\": \"lib/ansible/modules/cloud/google/gcp_target_proxy.py\", \n  \"module gcp_url_map\": \"lib/ansible/modules/cloud/google/gcp_url_map.py\", \n  \"module gcpubsub\": \"lib/ansible/modules/cloud/google/gcpubsub.py\", \n  \"module gcpubsub_facts\": \"lib/ansible/modules/cloud/google/gcpubsub_facts.py\", \n  \"module gcspanner\": \"lib/ansible/modules/cloud/google/gcspanner.py\", \n  \"module gem\": \"lib/ansible/modules/packaging/language/gem.py\", \n  \"module get_url\": \"lib/ansible/modules/net_tools/basics/get_url.py\", \n  \"module getent\": \"lib/ansible/modules/system/getent.py\", \n  \"module git\": [\n    \"lib/ansible/modules/source_control/git.py\"\n  ], \n  \"module git_config\": \"lib/ansible/modules/source_control/git_config.py\", \n  \"module github_deploy_key\": \"lib/ansible/modules/source_control/github_deploy_key.py\", \n  \"module github_hooks\": \"lib/ansible/modules/source_control/github_hooks.py\", \n  \"module github_issue\": \"lib/ansible/modules/source_control/github_issue.py\", \n  \"module github_key\": \"lib/ansible/modules/source_control/github_key.py\", \n  \"module github_release\": \"lib/ansible/modules/source_control/github_release.py\", \n  \"module gitlab_group\": \"lib/ansible/modules/source_control/gitlab_group.py\", \n  \"module gitlab_project\": \"lib/ansible/modules/source_control/gitlab_project.py\", \n  \"module gitlab_user\": \"lib/ansible/modules/source_control/gitlab_user.py\", \n  \"module gluster_volume\": \"lib/ansible/modules/system/gluster_volume.py\", \n  \"module group\": \"lib/ansible/modules/system/group.py\", \n  \"module group_by\": \"lib/ansible/modules/inventory/group_by.py\", \n  \"module grove\": \"lib/ansible/modules/notification/grove.py\", \n  \"module gunicorn\": \"lib/ansible/modules/web_infrastructure/gunicorn.py\", \n  \"module hall\": \"lib/ansible/modules/notification/hall.py\", \n  \"module haproxy\": \"lib/ansible/modules/net_tools/haproxy.py\", \n  \"module helm\": \"lib/ansible/modules/cloud/misc/helm.py\", \n  \"module hg\": \"lib/ansible/modules/source_control/hg.py\", \n  \"module hipchat\": \"lib/ansible/modules/notification/hipchat.py\", \n  \"module homebrew\": \"lib/ansible/modules/packaging/os/homebrew.py\", \n  \"module homebrew_cask\": \"lib/ansible/modules/packaging/os/homebrew_cask.py\", \n  \"module homebrew_tap\": \"lib/ansible/modules/packaging/os/homebrew_tap.py\", \n  \"module honeybadger_deployment\": \"lib/ansible/modules/monitoring/honeybadger_deployment.py\", \n  \"module hostname\": \"lib/ansible/modules/system/hostname.py\", \n  \"module hpilo_boot\": \"lib/ansible/modules/remote_management/hpilo/hpilo_boot.py\", \n  \"module hpilo_facts\": \"lib/ansible/modules/remote_management/hpilo/hpilo_facts.py\", \n  \"module hponcfg\": \"lib/ansible/modules/remote_management/hpilo/hponcfg.py\", \n  \"module htpasswd\": \"lib/ansible/modules/web_infrastructure/htpasswd.py\", \n  \"module iam\": \"lib/ansible/modules/cloud/amazon/iam.py\", \n  \"module iam_cert\": \"lib/ansible/modules/cloud/amazon/iam_cert.py\", \n  \"module iam_cert_facts\": \"lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\", \n  \"module iam_group\": \"lib/ansible/modules/cloud/amazon/iam_group.py\", \n  \"module iam_managed_policy\": \"lib/ansible/modules/cloud/amazon/iam_managed_policy.py\", \n  \"module iam_mfa_device_facts\": \"lib/ansible/modules/cloud/amazon/iam_mfa_device_facts.py\", \n  \"module iam_policy\": \"lib/ansible/modules/cloud/amazon/iam_policy.py\", \n  \"module iam_role\": \"lib/ansible/modules/cloud/amazon/iam_role.py\", \n  \"module iam_server_certificate_facts\": \"lib/ansible/modules/cloud/amazon/iam_server_certificate_facts.py\", \n  \"module icinga2_feature\": \"lib/ansible/modules/monitoring/icinga2_feature.py\", \n  \"module imc_rest\": \"lib/ansible/modules/remote_management/imc/imc_rest.py\", \n  \"module imgadm\": \"lib/ansible/modules/cloud/smartos/imgadm.py\", \n  \"module import_playbook\": \"lib/ansible/modules/utilities/logic/import_playbook.py\", \n  \"module import_role\": \"lib/ansible/modules/utilities/logic/import_role.py\", \n  \"module import_tasks\": \"lib/ansible/modules/utilities/logic/import_tasks.py\", \n  \"module include\": \"lib/ansible/modules/utilities/logic/_include.py\", \n  \"module include_role\": \"lib/ansible/modules/utilities/logic/include_role.py\", \n  \"module include_tasks\": \"lib/ansible/modules/utilities/logic/include_tasks.py\", \n  \"module include_vars\": \"lib/ansible/modules/utilities/logic/include_vars.py\", \n  \"module infini_export\": \"lib/ansible/modules/storage/infinidat/infini_export.py\", \n  \"module infini_export_client\": \"lib/ansible/modules/storage/infinidat/infini_export_client.py\", \n  \"module infini_fs\": \"lib/ansible/modules/storage/infinidat/infini_fs.py\", \n  \"module infini_host\": \"lib/ansible/modules/storage/infinidat/infini_host.py\", \n  \"module infini_pool\": \"lib/ansible/modules/storage/infinidat/infini_pool.py\", \n  \"module infini_vol\": \"lib/ansible/modules/storage/infinidat/infini_vol.py\", \n  \"module infinity\": \"lib/ansible/modules/net_tools/infinity/infinity.py\", \n  \"module influxdb_database\": \"lib/ansible/modules/database/influxdb/influxdb_database.py\", \n  \"module influxdb_retention_policy\": \"lib/ansible/modules/database/influxdb/influxdb_retention_policy.py\", \n  \"module ini_file\": \"lib/ansible/modules/files/ini_file.py\", \n  \"module interfaces_file\": \"lib/ansible/modules/system/interfaces_file.py\", \n  \"module ios_banner\": \"lib/ansible/modules/network/ios/ios_banner.py\", \n  \"module ios_command\": \"lib/ansible/modules/network/ios/ios_command.py\", \n  \"module ios_config\": \"lib/ansible/modules/network/ios/ios_config.py\", \n  \"module ios_facts\": \"lib/ansible/modules/network/ios/ios_facts.py\", \n  \"module ios_interface\": \"lib/ansible/modules/network/ios/ios_interface.py\", \n  \"module ios_logging\": \"lib/ansible/modules/network/ios/ios_logging.py\", \n  \"module ios_ping\": \"lib/ansible/modules/network/ios/ios_ping.py\", \n  \"module ios_static_route\": \"lib/ansible/modules/network/ios/ios_static_route.py\", \n  \"module ios_system\": \"lib/ansible/modules/network/ios/ios_system.py\", \n  \"module ios_user\": \"lib/ansible/modules/network/ios/ios_user.py\", \n  \"module ios_vrf\": \"lib/ansible/modules/network/ios/ios_vrf.py\", \n  \"module iosxr_banner\": \"lib/ansible/modules/network/iosxr/iosxr_banner.py\", \n  \"module iosxr_command\": \"lib/ansible/modules/network/iosxr/iosxr_command.py\", \n  \"module iosxr_config\": \"lib/ansible/modules/network/iosxr/iosxr_config.py\", \n  \"module iosxr_facts\": \"lib/ansible/modules/network/iosxr/iosxr_facts.py\", \n  \"module iosxr_interface\": \"lib/ansible/modules/network/iosxr/iosxr_interface.py\", \n  \"module iosxr_logging\": \"lib/ansible/modules/network/iosxr/iosxr_logging.py\", \n  \"module iosxr_netconf\": \"lib/ansible/modules/network/iosxr/iosxr_netconf.py\", \n  \"module iosxr_system\": \"lib/ansible/modules/network/iosxr/iosxr_system.py\", \n  \"module iosxr_user\": \"lib/ansible/modules/network/iosxr/iosxr_user.py\", \n  \"module ipa_dnsrecord\": \"lib/ansible/modules/identity/ipa/ipa_dnsrecord.py\", \n  \"module ipa_dnszone\": \"lib/ansible/modules/identity/ipa/ipa_dnszone.py\", \n  \"module ipa_group\": \"lib/ansible/modules/identity/ipa/ipa_group.py\", \n  \"module ipa_hbacrule\": \"lib/ansible/modules/identity/ipa/ipa_hbacrule.py\", \n  \"module ipa_host\": \"lib/ansible/modules/identity/ipa/ipa_host.py\", \n  \"module ipa_hostgroup\": \"lib/ansible/modules/identity/ipa/ipa_hostgroup.py\", \n  \"module ipa_role\": \"lib/ansible/modules/identity/ipa/ipa_role.py\", \n  \"module ipa_sudocmd\": \"lib/ansible/modules/identity/ipa/ipa_sudocmd.py\", \n  \"module ipa_sudocmdgroup\": \"lib/ansible/modules/identity/ipa/ipa_sudocmdgroup.py\", \n  \"module ipa_sudorule\": \"lib/ansible/modules/identity/ipa/ipa_sudorule.py\", \n  \"module ipa_user\": \"lib/ansible/modules/identity/ipa/ipa_user.py\", \n  \"module ipadm_addr\": \"lib/ansible/modules/network/illumos/ipadm_addr.py\", \n  \"module ipadm_addrprop\": \"lib/ansible/modules/network/illumos/ipadm_addrprop.py\", \n  \"module ipadm_if\": \"lib/ansible/modules/network/illumos/ipadm_if.py\", \n  \"module ipadm_ifprop\": \"lib/ansible/modules/network/illumos/ipadm_ifprop.py\", \n  \"module ipadm_prop\": \"lib/ansible/modules/network/illumos/ipadm_prop.py\", \n  \"module ipify_facts\": \"lib/ansible/modules/net_tools/ipify_facts.py\", \n  \"module ipinfoio_facts\": \"lib/ansible/modules/net_tools/ipinfoio_facts.py\", \n  \"module ipmi_boot\": \"lib/ansible/modules/remote_management/ipmi/ipmi_boot.py\", \n  \"module ipmi_power\": \"lib/ansible/modules/remote_management/ipmi/ipmi_power.py\", \n  \"module iptables\": \"lib/ansible/modules/system/iptables.py\", \n  \"module irc\": \"lib/ansible/modules/notification/irc.py\", \n  \"module ironware_command\": \"lib/ansible/modules/network/ironware/ironware_command.py\", \n  \"module iso_extract\": \"lib/ansible/modules/files/iso_extract.py\", \n  \"module jabber\": \"lib/ansible/modules/notification/jabber.py\", \n  \"module java_cert\": \"lib/ansible/modules/system/java_cert.py\", \n  \"module jboss\": \"lib/ansible/modules/web_infrastructure/jboss.py\", \n  \"module jenkins_job\": \"lib/ansible/modules/web_infrastructure/jenkins_job.py\", \n  \"module jenkins_plugin\": \"lib/ansible/modules/web_infrastructure/jenkins_plugin.py\", \n  \"module jenkins_script\": \"lib/ansible/modules/web_infrastructure/jenkins_script.py\", \n  \"module jira\": \"lib/ansible/modules/web_infrastructure/jira.py\", \n  \"module junos_banner\": \"lib/ansible/modules/network/junos/junos_banner.py\", \n  \"module junos_command\": \"lib/ansible/modules/network/junos/junos_command.py\", \n  \"module junos_config\": \"lib/ansible/modules/network/junos/junos_config.py\", \n  \"module junos_facts\": \"lib/ansible/modules/network/junos/junos_facts.py\", \n  \"module junos_interface\": \"lib/ansible/modules/network/junos/junos_interface.py\", \n  \"module junos_l3_interface\": \"lib/ansible/modules/network/junos/junos_l3_interface.py\", \n  \"module junos_linkagg\": \"lib/ansible/modules/network/junos/junos_linkagg.py\", \n  \"module junos_lldp\": \"lib/ansible/modules/network/junos/junos_lldp.py\", \n  \"module junos_lldp_interface\": \"lib/ansible/modules/network/junos/junos_lldp_interface.py\", \n  \"module junos_logging\": \"lib/ansible/modules/network/junos/junos_logging.py\", \n  \"module junos_netconf\": \"lib/ansible/modules/network/junos/junos_netconf.py\", \n  \"module junos_package\": \"lib/ansible/modules/network/junos/junos_package.py\", \n  \"module junos_rpc\": \"lib/ansible/modules/network/junos/junos_rpc.py\", \n  \"module junos_static_route\": \"lib/ansible/modules/network/junos/junos_static_route.py\", \n  \"module junos_system\": \"lib/ansible/modules/network/junos/junos_system.py\", \n  \"module junos_user\": \"lib/ansible/modules/network/junos/junos_user.py\", \n  \"module junos_vlan\": \"lib/ansible/modules/network/junos/junos_vlan.py\", \n  \"module junos_vrf\": \"lib/ansible/modules/network/junos/junos_vrf.py\", \n  \"module katello\": \"lib/ansible/modules/remote_management/foreman/katello.py\", \n  \"module kernel_blacklist\": \"lib/ansible/modules/system/kernel_blacklist.py\", \n  \"module kibana_plugin\": \"lib/ansible/modules/database/misc/kibana_plugin.py\", \n  \"module kinesis_stream\": \"lib/ansible/modules/cloud/amazon/kinesis_stream.py\", \n  \"module known_hosts\": \"lib/ansible/modules/system/known_hosts.py\", \n  \"module kubernetes\": \"lib/ansible/modules/clustering/kubernetes.py\", \n  \"module lambda\": \"lib/ansible/modules/cloud/amazon/lambda.py\", \n  \"module lambda_alias\": \"lib/ansible/modules/cloud/amazon/lambda_alias.py\", \n  \"module lambda_event\": \"lib/ansible/modules/cloud/amazon/lambda_event.py\", \n  \"module lambda_facts\": \"lib/ansible/modules/cloud/amazon/lambda_facts.py\", \n  \"module lambda_policy\": \"lib/ansible/modules/cloud/amazon/lambda_policy.py\", \n  \"module layman\": \"lib/ansible/modules/packaging/os/layman.py\", \n  \"module ldap_attr\": \"lib/ansible/modules/net_tools/ldap/ldap_attr.py\", \n  \"module ldap_entry\": \"lib/ansible/modules/net_tools/ldap/ldap_entry.py\", \n  \"module letsencrypt\": \"lib/ansible/modules/web_infrastructure/letsencrypt.py\", \n  \"module librato_annotation\": \"lib/ansible/modules/monitoring/librato_annotation.py\", \n  \"module lightsail\": \"lib/ansible/modules/cloud/amazon/lightsail.py\", \n  \"module lineinfile\": [\n    \"lib/ansible/modules/files/lineinfile.py\"\n  ], \n  \"module linode\": \"lib/ansible/modules/cloud/linode/linode.py\", \n  \"module lldp\": \"lib/ansible/modules/net_tools/lldp.py\", \n  \"module locale_gen\": \"lib/ansible/modules/system/locale_gen.py\", \n  \"module logentries\": \"lib/ansible/modules/monitoring/logentries.py\", \n  \"module logicmonitor\": \"lib/ansible/modules/monitoring/logicmonitor.py\", \n  \"module logicmonitor_facts\": \"lib/ansible/modules/monitoring/logicmonitor_facts.py\", \n  \"module logstash_plugin\": \"lib/ansible/modules/monitoring/logstash_plugin.py\", \n  \"module lvg\": \"lib/ansible/modules/system/lvg.py\", \n  \"module lvol\": \"lib/ansible/modules/system/lvol.py\", \n  \"module lxc_container\": \"lib/ansible/modules/cloud/lxc/lxc_container.py\", \n  \"module lxd_container\": \"lib/ansible/modules/cloud/lxd/lxd_container.py\", \n  \"module lxd_profile\": \"lib/ansible/modules/cloud/lxd/lxd_profile.py\", \n  \"module macports\": \"lib/ansible/modules/packaging/os/macports.py\", \n  \"module mail\": \"lib/ansible/modules/notification/mail.py\", \n  \"module make\": \"lib/ansible/modules/system/make.py\", \n  \"module manageiq_provider\": \"lib/ansible/modules/remote_management/manageiq/manageiq_provider.py\", \n  \"module manageiq_tags\": \"lib/ansible/modules/remote_management/manageiq/manageiq_tags.py\", \n  \"module manageiq_user\": \"lib/ansible/modules/remote_management/manageiq/manageiq_user.py\", \n  \"module mattermost\": \"lib/ansible/modules/notification/mattermost.py\", \n  \"module maven_artifact\": \"lib/ansible/modules/packaging/language/maven_artifact.py\", \n  \"module meta\": \"meta\", \n  \"module mksysb\": \"lib/ansible/modules/system/mksysb.py\", \n  \"module modprobe\": \"lib/ansible/modules/system/modprobe.py\", \n  \"module mongodb_parameter\": \"lib/ansible/modules/database/mongodb/mongodb_parameter.py\", \n  \"module mongodb_user\": \"lib/ansible/modules/database/mongodb/mongodb_user.py\", \n  \"module monit\": \"lib/ansible/modules/monitoring/monit.py\", \n  \"module mount\": \"lib/ansible/modules/system/mount.py\", \n  \"module mqtt\": \"lib/ansible/modules/notification/mqtt.py\", \n  \"module mssql_db\": \"lib/ansible/modules/database/mssql/mssql_db.py\", \n  \"module mysql_db\": \"lib/ansible/modules/database/mysql/mysql_db.py\", \n  \"module mysql_replication\": \"lib/ansible/modules/database/mysql/mysql_replication.py\", \n  \"module mysql_user\": \"lib/ansible/modules/database/mysql/mysql_user.py\", \n  \"module mysql_variables\": \"lib/ansible/modules/database/mysql/mysql_variables.py\", \n  \"module na_cdot_aggregate\": \"lib/ansible/modules/storage/netapp/na_cdot_aggregate.py\", \n  \"module na_cdot_license\": \"lib/ansible/modules/storage/netapp/na_cdot_license.py\", \n  \"module na_cdot_lun\": \"lib/ansible/modules/storage/netapp/na_cdot_lun.py\", \n  \"module na_cdot_qtree\": \"lib/ansible/modules/storage/netapp/na_cdot_qtree.py\", \n  \"module na_cdot_svm\": \"lib/ansible/modules/storage/netapp/na_cdot_svm.py\", \n  \"module na_cdot_user\": \"lib/ansible/modules/storage/netapp/na_cdot_user.py\", \n  \"module na_cdot_user_role\": \"lib/ansible/modules/storage/netapp/na_cdot_user_role.py\", \n  \"module na_cdot_volume\": \"lib/ansible/modules/storage/netapp/na_cdot_volume.py\", \n  \"module nagios\": \"lib/ansible/modules/monitoring/nagios.py\", \n  \"module nclu\": \"lib/ansible/modules/network/cumulus/nclu.py\", \n  \"module net_banner\": \"lib/ansible/modules/network/system/net_banner.py\", \n  \"module net_interface\": \"lib/ansible/modules/network/interface/net_interface.py\", \n  \"module net_l2_interface\": \"lib/ansible/modules/network/layer2/net_l2_interface.py\", \n  \"module net_l3_interface\": \"lib/ansible/modules/network/layer3/net_l3_interface.py\", \n  \"module net_linkagg\": \"lib/ansible/modules/network/interface/net_linkagg.py\", \n  \"module net_lldp\": \"lib/ansible/modules/network/protocol/net_lldp.py\", \n  \"module net_lldp_interface\": \"lib/ansible/modules/network/interface/net_lldp_interface.py\", \n  \"module net_logging\": \"lib/ansible/modules/network/system/net_logging.py\", \n  \"module net_ping\": \"lib/ansible/modules/network/system/net_ping.py\", \n  \"module net_static_route\": \"lib/ansible/modules/network/routing/net_static_route.py\", \n  \"module net_system\": \"lib/ansible/modules/network/system/net_system.py\", \n  \"module net_user\": \"lib/ansible/modules/network/system/net_user.py\", \n  \"module net_vlan\": \"lib/ansible/modules/network/layer2/net_vlan.py\", \n  \"module net_vrf\": \"lib/ansible/modules/network/layer3/net_vrf.py\", \n  \"module netapp_e_amg\": \"lib/ansible/modules/storage/netapp/netapp_e_amg.py\", \n  \"module netapp_e_amg_role\": \"lib/ansible/modules/storage/netapp/netapp_e_amg_role.py\", \n  \"module netapp_e_amg_sync\": \"lib/ansible/modules/storage/netapp/netapp_e_amg_sync.py\", \n  \"module netapp_e_auth\": \"lib/ansible/modules/storage/netapp/netapp_e_auth.py\", \n  \"module netapp_e_facts\": \"lib/ansible/modules/storage/netapp/netapp_e_facts.py\", \n  \"module netapp_e_flashcache\": \"lib/ansible/modules/storage/netapp/netapp_e_flashcache.py\", \n  \"module netapp_e_host\": \"lib/ansible/modules/storage/netapp/netapp_e_host.py\", \n  \"module netapp_e_hostgroup\": \"lib/ansible/modules/storage/netapp/netapp_e_hostgroup.py\", \n  \"module netapp_e_lun_mapping\": \"lib/ansible/modules/storage/netapp/netapp_e_lun_mapping.py\", \n  \"module netapp_e_snapshot_group\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_group.py\", \n  \"module netapp_e_snapshot_images\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_images.py\", \n  \"module netapp_e_snapshot_volume\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_volume.py\", \n  \"module netapp_e_storage_system\": \"lib/ansible/modules/storage/netapp/netapp_e_storage_system.py\", \n  \"module netapp_e_storagepool\": \"lib/ansible/modules/storage/netapp/netapp_e_storagepool.py\", \n  \"module netapp_e_volume\": \"lib/ansible/modules/storage/netapp/netapp_e_volume.py\", \n  \"module netapp_e_volume_copy\": \"lib/ansible/modules/storage/netapp/netapp_e_volume_copy.py\", \n  \"module netconf_config\": \"lib/ansible/modules/network/netconf/netconf_config.py\", \n  \"module netscaler\": \"lib/ansible/modules/network/citrix/_netscaler.py\", \n  \"module netscaler_cs_action\": \"lib/ansible/modules/network/netscaler/netscaler_cs_action.py\", \n  \"module netscaler_cs_policy\": \"lib/ansible/modules/network/netscaler/netscaler_cs_policy.py\", \n  \"module netscaler_cs_vserver\": \"lib/ansible/modules/network/netscaler/netscaler_cs_vserver.py\", \n  \"module netscaler_gslb_service\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_service.py\", \n  \"module netscaler_gslb_site\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_site.py\", \n  \"module netscaler_gslb_vserver\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_vserver.py\", \n  \"module netscaler_lb_monitor\": \"lib/ansible/modules/network/netscaler/netscaler_lb_monitor.py\", \n  \"module netscaler_lb_vserver\": \"lib/ansible/modules/network/netscaler/netscaler_lb_vserver.py\", \n  \"module netscaler_save_config\": \"lib/ansible/modules/network/netscaler/netscaler_save_config.py\", \n  \"module netscaler_server\": \"lib/ansible/modules/network/netscaler/netscaler_server.py\", \n  \"module netscaler_service\": \"lib/ansible/modules/network/netscaler/netscaler_service.py\", \n  \"module netscaler_servicegroup\": \"lib/ansible/modules/network/netscaler/netscaler_servicegroup.py\", \n  \"module netscaler_ssl_certkey\": \"lib/ansible/modules/network/netscaler/netscaler_ssl_certkey.py\", \n  \"module newrelic_deployment\": \"lib/ansible/modules/monitoring/newrelic_deployment.py\", \n  \"module nexmo\": \"lib/ansible/modules/notification/nexmo.py\", \n  \"module nginx_status_facts\": \"lib/ansible/modules/web_infrastructure/nginx_status_facts.py\", \n  \"module nmcli\": \"lib/ansible/modules/net_tools/nmcli.py\", \n  \"module nosh\": \"lib/ansible/modules/system/nosh.py\", \n  \"module npm\": \"lib/ansible/modules/packaging/language/npm.py\", \n  \"module nsupdate\": \"lib/ansible/modules/net_tools/nsupdate.py\", \n  \"module nuage_vspk\": \"lib/ansible/modules/network/nuage/nuage_vspk.py\", \n  \"module nxos_aaa_server\": \"lib/ansible/modules/network/nxos/nxos_aaa_server.py\", \n  \"module nxos_aaa_server_host\": \"lib/ansible/modules/network/nxos/nxos_aaa_server_host.py\", \n  \"module nxos_acl\": \"lib/ansible/modules/network/nxos/nxos_acl.py\", \n  \"module nxos_acl_interface\": \"lib/ansible/modules/network/nxos/nxos_acl_interface.py\", \n  \"module nxos_banner\": \"lib/ansible/modules/network/nxos/nxos_banner.py\", \n  \"module nxos_bgp\": \"lib/ansible/modules/network/nxos/nxos_bgp.py\", \n  \"module nxos_bgp_af\": \"lib/ansible/modules/network/nxos/nxos_bgp_af.py\", \n  \"module nxos_bgp_neighbor\": \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor.py\", \n  \"module nxos_bgp_neighbor_af\": \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor_af.py\", \n  \"module nxos_command\": \"lib/ansible/modules/network/nxos/nxos_command.py\", \n  \"module nxos_config\": \"lib/ansible/modules/network/nxos/nxos_config.py\", \n  \"module nxos_evpn_global\": \"lib/ansible/modules/network/nxos/nxos_evpn_global.py\", \n  \"module nxos_evpn_vni\": \"lib/ansible/modules/network/nxos/nxos_evpn_vni.py\", \n  \"module nxos_facts\": \"lib/ansible/modules/network/nxos/nxos_facts.py\", \n  \"module nxos_feature\": \"lib/ansible/modules/network/nxos/nxos_feature.py\", \n  \"module nxos_file_copy\": \"lib/ansible/modules/network/nxos/nxos_file_copy.py\", \n  \"module nxos_gir\": \"lib/ansible/modules/network/nxos/nxos_gir.py\", \n  \"module nxos_gir_profile_management\": \"lib/ansible/modules/network/nxos/nxos_gir_profile_management.py\", \n  \"module nxos_hsrp\": \"lib/ansible/modules/network/nxos/nxos_hsrp.py\", \n  \"module nxos_igmp\": \"lib/ansible/modules/network/nxos/nxos_igmp.py\", \n  \"module nxos_igmp_interface\": \"lib/ansible/modules/network/nxos/nxos_igmp_interface.py\", \n  \"module nxos_igmp_snooping\": \"lib/ansible/modules/network/nxos/nxos_igmp_snooping.py\", \n  \"module nxos_install_os\": \"lib/ansible/modules/network/nxos/nxos_install_os.py\", \n  \"module nxos_interface\": \"lib/ansible/modules/network/nxos/nxos_interface.py\", \n  \"module nxos_interface_ospf\": \"lib/ansible/modules/network/nxos/nxos_interface_ospf.py\", \n  \"module nxos_ip_interface\": \"lib/ansible/modules/network/nxos/nxos_ip_interface.py\", \n  \"module nxos_logging\": \"lib/ansible/modules/network/nxos/nxos_logging.py\", \n  \"module nxos_mtu\": \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n  \"module nxos_ntp\": \"lib/ansible/modules/network/nxos/nxos_ntp.py\", \n  \"module nxos_ntp_auth\": \"lib/ansible/modules/network/nxos/nxos_ntp_auth.py\", \n  \"module nxos_ntp_options\": \"lib/ansible/modules/network/nxos/nxos_ntp_options.py\", \n  \"module nxos_nxapi\": \"lib/ansible/modules/network/nxos/nxos_nxapi.py\", \n  \"module nxos_ospf\": \"lib/ansible/modules/network/nxos/nxos_ospf.py\", \n  \"module nxos_ospf_vrf\": \"lib/ansible/modules/network/nxos/nxos_ospf_vrf.py\", \n  \"module nxos_overlay_global\": \"lib/ansible/modules/network/nxos/nxos_overlay_global.py\", \n  \"module nxos_pim\": \"lib/ansible/modules/network/nxos/nxos_pim.py\", \n  \"module nxos_pim_interface\": \"lib/ansible/modules/network/nxos/nxos_pim_interface.py\", \n  \"module nxos_pim_rp_address\": \"lib/ansible/modules/network/nxos/nxos_pim_rp_address.py\", \n  \"module nxos_ping\": \"lib/ansible/modules/network/nxos/nxos_ping.py\", \n  \"module nxos_portchannel\": \"lib/ansible/modules/network/nxos/nxos_portchannel.py\", \n  \"module nxos_reboot\": \"lib/ansible/modules/network/nxos/nxos_reboot.py\", \n  \"module nxos_rollback\": \"lib/ansible/modules/network/nxos/nxos_rollback.py\", \n  \"module nxos_smu\": \"lib/ansible/modules/network/nxos/nxos_smu.py\", \n  \"module nxos_snapshot\": \"lib/ansible/modules/network/nxos/nxos_snapshot.py\", \n  \"module nxos_snmp_community\": \"lib/ansible/modules/network/nxos/nxos_snmp_community.py\", \n  \"module nxos_snmp_contact\": \"lib/ansible/modules/network/nxos/nxos_snmp_contact.py\", \n  \"module nxos_snmp_host\": \"lib/ansible/modules/network/nxos/nxos_snmp_host.py\", \n  \"module nxos_snmp_location\": \"lib/ansible/modules/network/nxos/nxos_snmp_location.py\", \n  \"module nxos_snmp_traps\": \"lib/ansible/modules/network/nxos/nxos_snmp_traps.py\", \n  \"module nxos_snmp_user\": \"lib/ansible/modules/network/nxos/nxos_snmp_user.py\", \n  \"module nxos_static_route\": \"lib/ansible/modules/network/nxos/nxos_static_route.py\", \n  \"module nxos_switchport\": \"lib/ansible/modules/network/nxos/nxos_switchport.py\", \n  \"module nxos_system\": \"lib/ansible/modules/network/nxos/nxos_system.py\", \n  \"module nxos_udld\": \"lib/ansible/modules/network/nxos/nxos_udld.py\", \n  \"module nxos_udld_interface\": \"lib/ansible/modules/network/nxos/nxos_udld_interface.py\", \n  \"module nxos_user\": \"lib/ansible/modules/network/nxos/nxos_user.py\", \n  \"module nxos_vlan\": \"lib/ansible/modules/network/nxos/nxos_vlan.py\", \n  \"module nxos_vpc\": \"lib/ansible/modules/network/nxos/nxos_vpc.py\", \n  \"module nxos_vpc_interface\": \"lib/ansible/modules/network/nxos/nxos_vpc_interface.py\", \n  \"module nxos_vrf\": \"lib/ansible/modules/network/nxos/nxos_vrf.py\", \n  \"module nxos_vrf_af\": \"lib/ansible/modules/network/nxos/nxos_vrf_af.py\", \n  \"module nxos_vrf_interface\": \"lib/ansible/modules/network/nxos/nxos_vrf_interface.py\", \n  \"module nxos_vrrp\": \"lib/ansible/modules/network/nxos/nxos_vrrp.py\", \n  \"module nxos_vtp_domain\": \"lib/ansible/modules/network/nxos/nxos_vtp_domain.py\", \n  \"module nxos_vtp_password\": \"lib/ansible/modules/network/nxos/nxos_vtp_password.py\", \n  \"module nxos_vtp_version\": \"lib/ansible/modules/network/nxos/nxos_vtp_version.py\", \n  \"module nxos_vxlan_vtep\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep.py\", \n  \"module nxos_vxlan_vtep_vni\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\", \n  \"module oc\": \"lib/ansible/modules/clustering/oc.py\", \n  \"module office_365_connector_card\": \"lib/ansible/modules/notification/office_365_connector_card.py\", \n  \"module ohai\": \"lib/ansible/modules/system/ohai.py\", \n  \"module omapi_host\": \"lib/ansible/modules/net_tools/omapi_host.py\", \n  \"module oneview_enclosure_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_enclosure_facts.py\", \n  \"module oneview_ethernet_network\": \"lib/ansible/modules/remote_management/oneview/oneview_ethernet_network.py\", \n  \"module oneview_ethernet_network_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_ethernet_network_facts.py\", \n  \"module oneview_fc_network\": \"lib/ansible/modules/remote_management/oneview/oneview_fc_network.py\", \n  \"module oneview_fc_network_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_fc_network_facts.py\", \n  \"module oneview_fcoe_network\": \"lib/ansible/modules/remote_management/oneview/oneview_fcoe_network.py\", \n  \"module oneview_fcoe_network_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_fcoe_network_facts.py\", \n  \"module oneview_logical_interconnect_group\": \"lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group.py\", \n  \"module oneview_logical_interconnect_group_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group_facts.py\", \n  \"module oneview_network_set\": \"lib/ansible/modules/remote_management/oneview/oneview_network_set.py\", \n  \"module oneview_network_set_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_network_set_facts.py\", \n  \"module oneview_san_manager\": \"lib/ansible/modules/remote_management/oneview/oneview_san_manager.py\", \n  \"module oneview_san_manager_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_san_manager_facts.py\", \n  \"module open_iscsi\": \"lib/ansible/modules/system/open_iscsi.py\", \n  \"module openbsd_pkg\": \"lib/ansible/modules/packaging/os/openbsd_pkg.py\", \n  \"module opendj_backendprop\": \"lib/ansible/modules/identity/opendj/opendj_backendprop.py\", \n  \"module openssl_certificate\": \"lib/ansible/modules/crypto/openssl_certificate.py\", \n  \"module openssl_csr\": \"lib/ansible/modules/crypto/openssl_csr.py\", \n  \"module openssl_privatekey\": \"lib/ansible/modules/crypto/openssl_privatekey.py\", \n  \"module openssl_publickey\": \"lib/ansible/modules/crypto/openssl_publickey.py\", \n  \"module openvswitch_bridge\": \"lib/ansible/modules/network/ovs/openvswitch_bridge.py\", \n  \"module openvswitch_db\": \"lib/ansible/modules/network/ovs/openvswitch_db.py\", \n  \"module openvswitch_port\": \"lib/ansible/modules/network/ovs/openvswitch_port.py\", \n  \"module openwrt_init\": \"lib/ansible/modules/system/openwrt_init.py\", \n  \"module opkg\": \"lib/ansible/modules/packaging/os/opkg.py\", \n  \"module ordnance_config\": \"lib/ansible/modules/network/ordnance/ordnance_config.py\", \n  \"module ordnance_facts\": \"lib/ansible/modules/network/ordnance/ordnance_facts.py\", \n  \"module os_auth\": \"lib/ansible/modules/cloud/openstack/os_auth.py\", \n  \"module os_client_config\": \"lib/ansible/modules/cloud/openstack/os_client_config.py\", \n  \"module os_flavor_facts\": \"lib/ansible/modules/cloud/openstack/os_flavor_facts.py\", \n  \"module os_floating_ip\": \"lib/ansible/modules/cloud/openstack/os_floating_ip.py\", \n  \"module os_group\": \"lib/ansible/modules/cloud/openstack/os_group.py\", \n  \"module os_image\": \"lib/ansible/modules/cloud/openstack/os_image.py\", \n  \"module os_image_facts\": \"lib/ansible/modules/cloud/openstack/os_image_facts.py\", \n  \"module os_ironic\": \"lib/ansible/modules/cloud/openstack/os_ironic.py\", \n  \"module os_ironic_inspect\": \"lib/ansible/modules/cloud/openstack/os_ironic_inspect.py\", \n  \"module os_ironic_node\": \"lib/ansible/modules/cloud/openstack/os_ironic_node.py\", \n  \"module os_keypair\": \"lib/ansible/modules/cloud/openstack/os_keypair.py\", \n  \"module os_keystone_domain\": \"lib/ansible/modules/cloud/openstack/os_keystone_domain.py\", \n  \"module os_keystone_domain_facts\": \"lib/ansible/modules/cloud/openstack/os_keystone_domain_facts.py\", \n  \"module os_keystone_endpoint\": \"lib/ansible/modules/cloud/openstack/os_keystone_endpoint.py\", \n  \"module os_keystone_role\": \"lib/ansible/modules/cloud/openstack/os_keystone_role.py\", \n  \"module os_keystone_service\": \"lib/ansible/modules/cloud/openstack/os_keystone_service.py\", \n  \"module os_network\": \"lib/ansible/modules/cloud/openstack/os_network.py\", \n  \"module os_networks_facts\": \"lib/ansible/modules/cloud/openstack/os_networks_facts.py\", \n  \"module os_nova_flavor\": \"lib/ansible/modules/cloud/openstack/os_nova_flavor.py\", \n  \"module os_nova_host_aggregate\": \"lib/ansible/modules/cloud/openstack/os_nova_host_aggregate.py\", \n  \"module os_object\": \"lib/ansible/modules/cloud/openstack/os_object.py\", \n  \"module os_port\": \"lib/ansible/modules/cloud/openstack/os_port.py\", \n  \"module os_port_facts\": \"lib/ansible/modules/cloud/openstack/os_port_facts.py\", \n  \"module os_project\": \"lib/ansible/modules/cloud/openstack/os_project.py\", \n  \"module os_project_facts\": \"lib/ansible/modules/cloud/openstack/os_project_facts.py\", \n  \"module os_quota\": \"lib/ansible/modules/cloud/openstack/os_quota.py\", \n  \"module os_recordset\": \"lib/ansible/modules/cloud/openstack/os_recordset.py\", \n  \"module os_router\": \"lib/ansible/modules/cloud/openstack/os_router.py\", \n  \"module os_security_group\": \"lib/ansible/modules/cloud/openstack/os_security_group.py\", \n  \"module os_security_group_rule\": \"lib/ansible/modules/cloud/openstack/os_security_group_rule.py\", \n  \"module os_server\": \"lib/ansible/modules/cloud/openstack/os_server.py\", \n  \"module os_server_action\": \"lib/ansible/modules/cloud/openstack/os_server_action.py\", \n  \"module os_server_actions\": \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n  \"module os_server_facts\": \"lib/ansible/modules/cloud/openstack/os_server_facts.py\", \n  \"module os_server_group\": \"lib/ansible/modules/cloud/openstack/os_server_group.py\", \n  \"module os_server_volume\": \"lib/ansible/modules/cloud/openstack/os_server_volume.py\", \n  \"module os_stack\": \"lib/ansible/modules/cloud/openstack/os_stack.py\", \n  \"module os_subnet\": \"lib/ansible/modules/cloud/openstack/os_subnet.py\", \n  \"module os_subnets_facts\": \"lib/ansible/modules/cloud/openstack/os_subnets_facts.py\", \n  \"module os_user\": \"lib/ansible/modules/cloud/openstack/os_user.py\", \n  \"module os_user_facts\": \"lib/ansible/modules/cloud/openstack/os_user_facts.py\", \n  \"module os_user_group\": \"lib/ansible/modules/cloud/openstack/os_user_group.py\", \n  \"module os_user_role\": \"lib/ansible/modules/cloud/openstack/os_user_role.py\", \n  \"module os_volume\": \"lib/ansible/modules/cloud/openstack/os_volume.py\", \n  \"module os_zone\": \"lib/ansible/modules/cloud/openstack/os_zone.py\", \n  \"module osx_defaults\": \"lib/ansible/modules/system/osx_defaults.py\", \n  \"module osx_say\": \"lib/ansible/modules/notification/osx_say.py\", \n  \"module ovh_ip_loadbalancing_backend\": \"lib/ansible/modules/cloud/ovh/ovh_ip_loadbalancing_backend.py\", \n  \"module ovirt\": \"lib/ansible/modules/cloud/misc/ovirt.py\", \n  \"module ovirt_affinity_group\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_group.py\", \n  \"module ovirt_affinity_groups\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\", \n  \"module ovirt_affinity_label\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_label.py\", \n  \"module ovirt_affinity_label_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_label_facts.py\", \n  \"module ovirt_affinity_labels\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\", \n  \"module ovirt_affinity_labels_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\", \n  \"module ovirt_api_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_api_facts.py\", \n  \"module ovirt_auth\": \"lib/ansible/modules/cloud/ovirt/ovirt_auth.py\", \n  \"module ovirt_cluster\": \"lib/ansible/modules/cloud/ovirt/ovirt_cluster.py\", \n  \"module ovirt_cluster_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_cluster_facts.py\", \n  \"module ovirt_clusters\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\", \n  \"module ovirt_clusters_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\", \n  \"module ovirt_datacenter\": \"lib/ansible/modules/cloud/ovirt/ovirt_datacenter.py\", \n  \"module ovirt_datacenter_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_datacenter_facts.py\", \n  \"module ovirt_datacenters\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\", \n  \"module ovirt_datacenters_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\", \n  \"module ovirt_disk\": \"lib/ansible/modules/cloud/ovirt/ovirt_disk.py\", \n  \"module ovirt_disk_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_disk_facts.py\", \n  \"module ovirt_disks\": \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\", \n  \"module ovirt_external_provider\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_provider.py\", \n  \"module ovirt_external_provider_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_provider_facts.py\", \n  \"module ovirt_external_providers\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\", \n  \"module ovirt_external_providers_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\", \n  \"module ovirt_group\": \"lib/ansible/modules/cloud/ovirt/ovirt_group.py\", \n  \"module ovirt_group_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_group_facts.py\", \n  \"module ovirt_groups\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\", \n  \"module ovirt_groups_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\", \n  \"module ovirt_host_networks\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_networks.py\", \n  \"module ovirt_host_pm\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_pm.py\", \n  \"module ovirt_host_storage_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_storage_facts.py\", \n  \"module ovirt_hosts\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts.py\", \n  \"module ovirt_hosts_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts_facts.py\", \n  \"module ovirt_mac_pools\": \"lib/ansible/modules/cloud/ovirt/ovirt_mac_pools.py\", \n  \"module ovirt_networks\": \"lib/ansible/modules/cloud/ovirt/ovirt_networks.py\", \n  \"module ovirt_networks_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_networks_facts.py\", \n  \"module ovirt_nics\": \"lib/ansible/modules/cloud/ovirt/ovirt_nics.py\", \n  \"module ovirt_nics_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_nics_facts.py\", \n  \"module ovirt_permissions\": \"lib/ansible/modules/cloud/ovirt/ovirt_permissions.py\", \n  \"module ovirt_permissions_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_permissions_facts.py\", \n  \"module ovirt_quotas\": \"lib/ansible/modules/cloud/ovirt/ovirt_quotas.py\", \n  \"module ovirt_quotas_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_quotas_facts.py\", \n  \"module ovirt_scheduling_policies_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_scheduling_policies_facts.py\", \n  \"module ovirt_snapshots\": \"lib/ansible/modules/cloud/ovirt/ovirt_snapshots.py\", \n  \"module ovirt_snapshots_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_snapshots_facts.py\", \n  \"module ovirt_storage_connections\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_connections.py\", \n  \"module ovirt_storage_domains\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains.py\", \n  \"module ovirt_storage_domains_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains_facts.py\", \n  \"module ovirt_storage_templates_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_templates_facts.py\", \n  \"module ovirt_storage_vms_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_vms_facts.py\", \n  \"module ovirt_tags\": \"lib/ansible/modules/cloud/ovirt/ovirt_tags.py\", \n  \"module ovirt_tags_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_tags_facts.py\", \n  \"module ovirt_templates\": \"lib/ansible/modules/cloud/ovirt/ovirt_templates.py\", \n  \"module ovirt_templates_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_templates_facts.py\", \n  \"module ovirt_users\": \"lib/ansible/modules/cloud/ovirt/ovirt_users.py\", \n  \"module ovirt_users_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_users_facts.py\", \n  \"module ovirt_vmpools\": \"lib/ansible/modules/cloud/ovirt/ovirt_vmpools.py\", \n  \"module ovirt_vmpools_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_vmpools_facts.py\", \n  \"module ovirt_vms\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms.py\", \n  \"module ovirt_vms_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms_facts.py\", \n  \"module pacemaker_cluster\": \"lib/ansible/modules/clustering/pacemaker_cluster.py\", \n  \"module package\": \"lib/ansible/modules/packaging/os/package.py\", \n  \"module packet_device\": \"lib/ansible/modules/cloud/packet/packet_device.py\", \n  \"module packet_sshkey\": \"lib/ansible/modules/cloud/packet/packet_sshkey.py\", \n  \"module pacman\": \"lib/ansible/modules/packaging/os/pacman.py\", \n  \"module pagerduty\": \"lib/ansible/modules/monitoring/pagerduty.py\", \n  \"module pagerduty_alert\": \"lib/ansible/modules/monitoring/pagerduty_alert.py\", \n  \"module pam_limits\": \"lib/ansible/modules/system/pam_limits.py\", \n  \"module pamd\": \"lib/ansible/modules/system/pamd.py\", \n  \"module panos_admin\": \"lib/ansible/modules/network/panos/panos_admin.py\", \n  \"module panos_admpwd\": \"lib/ansible/modules/network/panos/panos_admpwd.py\", \n  \"module panos_cert_gen_ssh\": \"lib/ansible/modules/network/panos/panos_cert_gen_ssh.py\", \n  \"module panos_check\": \"lib/ansible/modules/network/panos/panos_check.py\", \n  \"module panos_commit\": \"lib/ansible/modules/network/panos/panos_commit.py\", \n  \"module panos_dag\": \"lib/ansible/modules/network/panos/panos_dag.py\", \n  \"module panos_import\": \"lib/ansible/modules/network/panos/panos_import.py\", \n  \"module panos_interface\": \"lib/ansible/modules/network/panos/panos_interface.py\", \n  \"module panos_lic\": \"lib/ansible/modules/network/panos/panos_lic.py\", \n  \"module panos_loadcfg\": \"lib/ansible/modules/network/panos/panos_loadcfg.py\", \n  \"module panos_mgtconfig\": \"lib/ansible/modules/network/panos/panos_mgtconfig.py\", \n  \"module panos_nat_policy\": \"lib/ansible/modules/network/panos/panos_nat_policy.py\", \n  \"module panos_nat_rule\": \"lib/ansible/modules/network/panos/panos_nat_rule.py\", \n  \"module panos_object\": \"lib/ansible/modules/network/panos/panos_object.py\", \n  \"module panos_pg\": \"lib/ansible/modules/network/panos/panos_pg.py\", \n  \"module panos_restart\": \"lib/ansible/modules/network/panos/panos_restart.py\", \n  \"module panos_sag\": \"lib/ansible/modules/network/panos/panos_sag.py\", \n  \"module panos_security_policy\": \"lib/ansible/modules/network/panos/panos_security_policy.py\", \n  \"module panos_security_rule\": \"lib/ansible/modules/network/panos/panos_security_rule.py\", \n  \"module parted\": \"lib/ansible/modules/system/parted.py\", \n  \"module patch\": \"lib/ansible/modules/files/patch.py\", \n  \"module pause\": \"lib/ansible/modules/utilities/logic/pause.py\", \n  \"module pear\": \"lib/ansible/modules/packaging/language/pear.py\", \n  \"module ping\": \"lib/ansible/modules/system/ping.py\", \n  \"module pingdom\": \"lib/ansible/modules/monitoring/pingdom.py\", \n  \"module pip\": \"lib/ansible/modules/packaging/language/pip.py\", \n  \"module pkg5\": \"lib/ansible/modules/packaging/os/pkg5.py\", \n  \"module pkg5_publisher\": \"lib/ansible/modules/packaging/os/pkg5_publisher.py\", \n  \"module pkgin\": \"lib/ansible/modules/packaging/os/pkgin.py\", \n  \"module pkgng\": \"lib/ansible/modules/packaging/os/pkgng.py\", \n  \"module pkgutil\": \"lib/ansible/modules/packaging/os/pkgutil.py\", \n  \"module pn_cluster\": \"lib/ansible/modules/network/netvisor/pn_cluster.py\", \n  \"module pn_ospf\": \"lib/ansible/modules/network/netvisor/pn_ospf.py\", \n  \"module pn_ospfarea\": \"lib/ansible/modules/network/netvisor/pn_ospfarea.py\", \n  \"module pn_show\": \"lib/ansible/modules/network/netvisor/pn_show.py\", \n  \"module pn_trunk\": \"lib/ansible/modules/network/netvisor/pn_trunk.py\", \n  \"module pn_vlag\": \"lib/ansible/modules/network/netvisor/pn_vlag.py\", \n  \"module pn_vlan\": \"lib/ansible/modules/network/netvisor/pn_vlan.py\", \n  \"module pn_vrouter\": \"lib/ansible/modules/network/netvisor/pn_vrouter.py\", \n  \"module pn_vrouterbgp\": \"lib/ansible/modules/network/netvisor/pn_vrouterbgp.py\", \n  \"module pn_vrouterif\": \"lib/ansible/modules/network/netvisor/pn_vrouterif.py\", \n  \"module pn_vrouterlbif\": \"lib/ansible/modules/network/netvisor/pn_vrouterlbif.py\", \n  \"module portage\": \"lib/ansible/modules/packaging/os/portage.py\", \n  \"module portinstall\": \"lib/ansible/modules/packaging/os/portinstall.py\", \n  \"module postgresql_db\": \"lib/ansible/modules/database/postgresql/postgresql_db.py\", \n  \"module postgresql_ext\": \"lib/ansible/modules/database/postgresql/postgresql_ext.py\", \n  \"module postgresql_lang\": \"lib/ansible/modules/database/postgresql/postgresql_lang.py\", \n  \"module postgresql_privs\": \"lib/ansible/modules/database/postgresql/postgresql_privs.py\", \n  \"module postgresql_schema\": \"lib/ansible/modules/database/postgresql/postgresql_schema.py\", \n  \"module postgresql_user\": \"lib/ansible/modules/database/postgresql/postgresql_user.py\", \n  \"module profitbricks\": \"lib/ansible/modules/cloud/profitbricks/profitbricks.py\", \n  \"module profitbricks_datacenter\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_datacenter.py\", \n  \"module profitbricks_nic\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_nic.py\", \n  \"module profitbricks_volume\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume.py\", \n  \"module profitbricks_volume_attachments\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume_attachments.py\", \n  \"module proxmox\": \"lib/ansible/modules/cloud/misc/proxmox.py\", \n  \"module proxmox_kvm\": \"lib/ansible/modules/cloud/misc/proxmox_kvm.py\", \n  \"module proxmox_template\": \"lib/ansible/modules/cloud/misc/proxmox_template.py\", \n  \"module proxysql_backend_servers\": \"lib/ansible/modules/database/proxysql/proxysql_backend_servers.py\", \n  \"module proxysql_global_variables\": \"lib/ansible/modules/database/proxysql/proxysql_global_variables.py\", \n  \"module proxysql_manage_config\": \"lib/ansible/modules/database/proxysql/proxysql_manage_config.py\", \n  \"module proxysql_mysql_users\": \"lib/ansible/modules/database/proxysql/proxysql_mysql_users.py\", \n  \"module proxysql_query_rules\": \"lib/ansible/modules/database/proxysql/proxysql_query_rules.py\", \n  \"module proxysql_replication_hostgroups\": \"lib/ansible/modules/database/proxysql/proxysql_replication_hostgroups.py\", \n  \"module proxysql_scheduler\": \"lib/ansible/modules/database/proxysql/proxysql_scheduler.py\", \n  \"module pubnub_blocks\": \"lib/ansible/modules/cloud/pubnub/pubnub_blocks.py\", \n  \"module pulp_repo\": \"lib/ansible/modules/packaging/os/pulp_repo.py\", \n  \"module puppet\": \"lib/ansible/modules/system/puppet.py\", \n  \"module purefa_hg\": \"lib/ansible/modules/storage/purestorage/purefa_hg.py\", \n  \"module purefa_host\": \"lib/ansible/modules/storage/purestorage/purefa_host.py\", \n  \"module purefa_pg\": \"lib/ansible/modules/storage/purestorage/purefa_pg.py\", \n  \"module purefa_snap\": \"lib/ansible/modules/storage/purestorage/purefa_snap.py\", \n  \"module purefa_volume\": \"lib/ansible/modules/storage/purestorage/purefa_volume.py\", \n  \"module pushbullet\": \"lib/ansible/modules/notification/pushbullet.py\", \n  \"module pushover\": \"lib/ansible/modules/notification/pushover.py\", \n  \"module rabbitmq_binding\": \"lib/ansible/modules/messaging/rabbitmq_binding.py\", \n  \"module rabbitmq_exchange\": \"lib/ansible/modules/messaging/rabbitmq_exchange.py\", \n  \"module rabbitmq_parameter\": \"lib/ansible/modules/messaging/rabbitmq_parameter.py\", \n  \"module rabbitmq_plugin\": \"lib/ansible/modules/messaging/rabbitmq_plugin.py\", \n  \"module rabbitmq_policy\": \"lib/ansible/modules/messaging/rabbitmq_policy.py\", \n  \"module rabbitmq_queue\": \"lib/ansible/modules/messaging/rabbitmq_queue.py\", \n  \"module rabbitmq_user\": \"lib/ansible/modules/messaging/rabbitmq_user.py\", \n  \"module rabbitmq_vhost\": \"lib/ansible/modules/messaging/rabbitmq_vhost.py\", \n  \"module raw\": \"lib/ansible/modules/commands/raw.py\", \n  \"module rax\": \"lib/ansible/modules/cloud/rackspace/rax.py\", \n  \"module rax_cbs\": \"lib/ansible/modules/cloud/rackspace/rax_cbs.py\", \n  \"module rax_cbs_attachments\": \"lib/ansible/modules/cloud/rackspace/rax_cbs_attachments.py\", \n  \"module rax_cdb\": \"lib/ansible/modules/cloud/rackspace/rax_cdb.py\", \n  \"module rax_cdb_database\": \"lib/ansible/modules/cloud/rackspace/rax_cdb_database.py\", \n  \"module rax_cdb_user\": \"lib/ansible/modules/cloud/rackspace/rax_cdb_user.py\", \n  \"module rax_clb\": \"lib/ansible/modules/cloud/rackspace/rax_clb.py\", \n  \"module rax_clb_nodes\": \"lib/ansible/modules/cloud/rackspace/rax_clb_nodes.py\", \n  \"module rax_clb_ssl\": \"lib/ansible/modules/cloud/rackspace/rax_clb_ssl.py\", \n  \"module rax_dns\": \"lib/ansible/modules/cloud/rackspace/rax_dns.py\", \n  \"module rax_dns_record\": \"lib/ansible/modules/cloud/rackspace/rax_dns_record.py\", \n  \"module rax_facts\": \"lib/ansible/modules/cloud/rackspace/rax_facts.py\", \n  \"module rax_files\": \"lib/ansible/modules/cloud/rackspace/rax_files.py\", \n  \"module rax_files_objects\": \"lib/ansible/modules/cloud/rackspace/rax_files_objects.py\", \n  \"module rax_identity\": \"lib/ansible/modules/cloud/rackspace/rax_identity.py\", \n  \"module rax_keypair\": \"lib/ansible/modules/cloud/rackspace/rax_keypair.py\", \n  \"module rax_meta\": \"lib/ansible/modules/cloud/rackspace/rax_meta.py\", \n  \"module rax_mon_alarm\": \"lib/ansible/modules/cloud/rackspace/rax_mon_alarm.py\", \n  \"module rax_mon_check\": \"lib/ansible/modules/cloud/rackspace/rax_mon_check.py\", \n  \"module rax_mon_entity\": \"lib/ansible/modules/cloud/rackspace/rax_mon_entity.py\", \n  \"module rax_mon_notification\": \"lib/ansible/modules/cloud/rackspace/rax_mon_notification.py\", \n  \"module rax_mon_notification_plan\": \"lib/ansible/modules/cloud/rackspace/rax_mon_notification_plan.py\", \n  \"module rax_network\": \"lib/ansible/modules/cloud/rackspace/rax_network.py\", \n  \"module rax_queue\": \"lib/ansible/modules/cloud/rackspace/rax_queue.py\", \n  \"module rax_scaling_group\": \"lib/ansible/modules/cloud/rackspace/rax_scaling_group.py\", \n  \"module rax_scaling_policy\": \"lib/ansible/modules/cloud/rackspace/rax_scaling_policy.py\", \n  \"module rds\": \"lib/ansible/modules/cloud/amazon/rds.py\", \n  \"module rds_param_group\": \"lib/ansible/modules/cloud/amazon/rds_param_group.py\", \n  \"module rds_subnet_group\": \"lib/ansible/modules/cloud/amazon/rds_subnet_group.py\", \n  \"module redhat_subscription\": \"lib/ansible/modules/packaging/os/redhat_subscription.py\", \n  \"module redis\": \"lib/ansible/modules/database/misc/redis.py\", \n  \"module redshift\": [\n    \"lib/ansible/modules/cloud/amazon/redshift.py\"\n  ], \n  \"module redshift_facts\": \"lib/ansible/modules/cloud/amazon/redshift_facts.py\", \n  \"module redshift_subnet_group\": \"lib/ansible/modules/cloud/amazon/redshift_subnet_group.py\", \n  \"module replace\": \"lib/ansible/modules/files/replace.py\", \n  \"module rhevm\": \"lib/ansible/modules/cloud/misc/rhevm.py\", \n  \"module rhn_channel\": \"lib/ansible/modules/packaging/os/rhn_channel.py\", \n  \"module rhn_register\": \"lib/ansible/modules/packaging/os/rhn_register.py\", \n  \"module riak\": \"lib/ansible/modules/database/misc/riak.py\", \n  \"module rocketchat\": \"lib/ansible/modules/notification/rocketchat.py\", \n  \"module rollbar_deployment\": \"lib/ansible/modules/monitoring/rollbar_deployment.py\", \n  \"module route53\": \"lib/ansible/modules/cloud/amazon/route53.py\", \n  \"module route53_facts\": \"lib/ansible/modules/cloud/amazon/route53_facts.py\", \n  \"module route53_health_check\": \"lib/ansible/modules/cloud/amazon/route53_health_check.py\", \n  \"module route53_zone\": \"lib/ansible/modules/cloud/amazon/route53_zone.py\", \n  \"module rpm_key\": \"lib/ansible/modules/packaging/os/rpm_key.py\", \n  \"module rundeck_acl_policy\": \"lib/ansible/modules/web_infrastructure/rundeck_acl_policy.py\", \n  \"module rundeck_project\": \"lib/ansible/modules/web_infrastructure/rundeck_project.py\", \n  \"module runit\": \"lib/ansible/modules/system/runit.py\", \n  \"module s3\": \"lib/ansible/modules/cloud/amazon/_s3.py\", \n  \"module s3_bucket\": \"lib/ansible/modules/cloud/amazon/s3_bucket.py\", \n  \"module s3_lifecycle\": \"lib/ansible/modules/cloud/amazon/s3_lifecycle.py\", \n  \"module s3_logging\": \"lib/ansible/modules/cloud/amazon/s3_logging.py\", \n  \"module s3_sync\": \"lib/ansible/modules/cloud/amazon/s3_sync.py\", \n  \"module s3_website\": \"lib/ansible/modules/cloud/amazon/s3_website.py\", \n  \"module script\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"module seboolean\": \"lib/ansible/modules/system/seboolean.py\", \n  \"module sefcontext\": \"lib/ansible/modules/system/sefcontext.py\", \n  \"module selinux\": \"lib/ansible/modules/system/selinux.py\", \n  \"module selinux_permissive\": \"lib/ansible/modules/system/selinux_permissive.py\", \n  \"module sendgrid\": \"lib/ansible/modules/notification/sendgrid.py\", \n  \"module sensu_check\": \"lib/ansible/modules/monitoring/sensu_check.py\", \n  \"module sensu_client\": \"lib/ansible/modules/monitoring/sensu_client.py\", \n  \"module sensu_handler\": \"lib/ansible/modules/monitoring/sensu_handler.py\", \n  \"module sensu_silence\": \"lib/ansible/modules/monitoring/sensu_silence.py\", \n  \"module sensu_subscription\": \"lib/ansible/modules/monitoring/sensu_subscription.py\", \n  \"module seport\": \"lib/ansible/modules/system/seport.py\", \n  \"module serverless\": \"lib/ansible/modules/cloud/misc/serverless.py\", \n  \"module service\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"module set_fact\": \"lib/ansible/modules/utilities/logic/set_fact.py\", \n  \"module set_stats\": \"lib/ansible/modules/utilities/logic/set_stats.py\", \n  \"module setup\": \"lib/ansible/modules/system/setup.py\", \n  \"module setup/ansible_mounts fact\": [], \n  \"module sf_account_manager\": \"lib/ansible/modules/storage/netapp/sf_account_manager.py\", \n  \"module sf_check_connections\": \"lib/ansible/modules/storage/netapp/sf_check_connections.py\", \n  \"module sf_snapshot_schedule_manager\": \"lib/ansible/modules/storage/netapp/sf_snapshot_schedule_manager.py\", \n  \"module sf_volume_access_group_manager\": \"lib/ansible/modules/storage/netapp/sf_volume_access_group_manager.py\", \n  \"module sf_volume_manager\": \"lib/ansible/modules/storage/netapp/sf_volume_manager.py\", \n  \"module shell\": \"lib/ansible/modules/commands/shell.py\", \n  \"module shell && command\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"module sl_vm\": \"lib/ansible/modules/cloud/softlayer/sl_vm.py\", \n  \"module slack\": \"lib/ansible/modules/notification/slack.py\", \n  \"module slackpkg\": \"lib/ansible/modules/packaging/os/slackpkg.py\", \n  \"module slurp\": \"lib/ansible/modules/net_tools/basics/slurp.py\", \n  \"module smartos_image_facts\": \"lib/ansible/modules/cloud/smartos/smartos_image_facts.py\", \n  \"module snmp_facts\": \"lib/ansible/modules/net_tools/snmp_facts.py\", \n  \"module snow_record\": \"lib/ansible/modules/notification/snow_record.py\", \n  \"module sns\": \"lib/ansible/modules/cloud/amazon/sns.py\", \n  \"module sns_topic\": \"lib/ansible/modules/cloud/amazon/sns_topic.py\", \n  \"module solaris_zone\": \"lib/ansible/modules/system/solaris_zone.py\", \n  \"module sorcery\": \"lib/ansible/modules/packaging/os/sorcery.py\", \n  \"module sqs_queue\": \"lib/ansible/modules/cloud/amazon/sqs_queue.py\", \n  \"module sros_command\": \"lib/ansible/modules/network/sros/sros_command.py\", \n  \"module sros_config\": [\n    \"lib/ansible/modules/network/sros/sros_config.py\"\n  ], \n  \"module sros_rollback\": \"lib/ansible/modules/network/sros/sros_rollback.py\", \n  \"module stackdriver\": \"lib/ansible/modules/monitoring/stackdriver.py\", \n  \"module stacki_host\": \"lib/ansible/modules/remote_management/stacki/stacki_host.py\", \n  \"module stat\": \"lib/ansible/modules/files/stat.py\", \n  \"module statusio_maintenance\": \"lib/ansible/modules/monitoring/statusio_maintenance.py\", \n  \"module sts_assume_role\": \"lib/ansible/modules/cloud/amazon/sts_assume_role.py\", \n  \"module sts_session_token\": \"lib/ansible/modules/cloud/amazon/sts_session_token.py\", \n  \"module subversion\": \"lib/ansible/modules/source_control/subversion.py\", \n  \"module supervisorctl\": \"lib/ansible/modules/web_infrastructure/supervisorctl.py\", \n  \"module svc\": \"lib/ansible/modules/system/svc.py\", \n  \"module svr4pkg\": \"lib/ansible/modules/packaging/os/svr4pkg.py\", \n  \"module swdepot\": \"lib/ansible/modules/packaging/os/swdepot.py\", \n  \"module swupd\": \"lib/ansible/modules/packaging/os/swupd.py\", \n  \"module synchronize\": \"lib/ansible/modules/files/synchronize.py\", \n  \"module sysctl\": \"lib/ansible/modules/system/sysctl.py\", \n  \"module syslogger\": \"lib/ansible/modules/notification/syslogger.py\", \n  \"module system/zfs\": [\n    \"lib/ansible/modules/storage/zfs/zfs.py\"\n  ], \n  \"module systemd\": [\n    \"lib/ansible/modules/system/systemd.py\"\n  ], \n  \"module taiga_issue\": \"lib/ansible/modules/web_infrastructure/taiga_issue.py\", \n  \"module telegram\": \"lib/ansible/modules/notification/telegram.py\", \n  \"module telnet\": \"lib/ansible/modules/commands/telnet.py\", \n  \"module tempfile\": \"lib/ansible/modules/files/tempfile.py\", \n  \"module template\": \"lib/ansible/modules/files/template.py\", \n  \"module timezone\": \"lib/ansible/modules/system/timezone.py\", \n  \"module tower_credential\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_credential.py\", \n  \"module tower_group\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_group.py\", \n  \"module tower_host\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_host.py\", \n  \"module tower_inventory\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_inventory.py\", \n  \"module tower_job_cancel\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_cancel.py\", \n  \"module tower_job_launch\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_launch.py\", \n  \"module tower_job_list\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_list.py\", \n  \"module tower_job_template\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_template.py\", \n  \"module tower_job_wait\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_wait.py\", \n  \"module tower_label\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_label.py\", \n  \"module tower_organization\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_organization.py\", \n  \"module tower_project\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_project.py\", \n  \"module tower_role\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_role.py\", \n  \"module tower_team\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_team.py\", \n  \"module tower_user\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_user.py\", \n  \"module twilio\": \"lib/ansible/modules/notification/twilio.py\", \n  \"module typetalk\": \"lib/ansible/modules/notification/typetalk.py\", \n  \"module udm_dns_record\": \"lib/ansible/modules/cloud/univention/udm_dns_record.py\", \n  \"module udm_dns_zone\": \"lib/ansible/modules/cloud/univention/udm_dns_zone.py\", \n  \"module udm_group\": \"lib/ansible/modules/cloud/univention/udm_group.py\", \n  \"module udm_share\": \"lib/ansible/modules/cloud/univention/udm_share.py\", \n  \"module udm_user\": \"lib/ansible/modules/cloud/univention/udm_user.py\", \n  \"module ufw\": \"lib/ansible/modules/system/ufw.py\", \n  \"module unarchive\": \"lib/ansible/modules/files/unarchive.py\", \n  \"module uptimerobot\": \"lib/ansible/modules/monitoring/uptimerobot.py\", \n  \"module uri\": \"lib/ansible/modules/net_tools/basics/uri.py\", \n  \"module urpmi\": \"lib/ansible/modules/packaging/os/urpmi.py\", \n  \"module user\": \"lib/ansible/modules/system/user.py\", \n  \"module vca_fw\": \"lib/ansible/modules/cloud/vmware/vca_fw.py\", \n  \"module vca_nat\": \"lib/ansible/modules/cloud/vmware/vca_nat.py\", \n  \"module vca_vapp\": \"lib/ansible/modules/cloud/vmware/vca_vapp.py\", \n  \"module vcenter_license\": \"lib/ansible/modules/cloud/vmware/vcenter_license.py\", \n  \"module vdirect_file\": \"lib/ansible/modules/network/radware/vdirect_file.py\", \n  \"module vertica_configuration\": \"lib/ansible/modules/database/vertica/vertica_configuration.py\", \n  \"module vertica_facts\": \"lib/ansible/modules/database/vertica/vertica_facts.py\", \n  \"module vertica_role\": \"lib/ansible/modules/database/vertica/vertica_role.py\", \n  \"module vertica_schema\": \"lib/ansible/modules/database/vertica/vertica_schema.py\", \n  \"module vertica_user\": \"lib/ansible/modules/database/vertica/vertica_user.py\", \n  \"module virt\": \"lib/ansible/modules/cloud/misc/virt.py\", \n  \"module virt_net\": \"lib/ansible/modules/cloud/misc/virt_net.py\", \n  \"module virt_pool\": \"lib/ansible/modules/cloud/misc/virt_pool.py\", \n  \"module vmadm\": \"lib/ansible/modules/cloud/smartos/vmadm.py\", \n  \"module vmware_cluster\": \"lib/ansible/modules/cloud/vmware/vmware_cluster.py\", \n  \"module vmware_datacenter\": \"lib/ansible/modules/cloud/vmware/vmware_datacenter.py\", \n  \"module vmware_dns_config\": \"lib/ansible/modules/cloud/vmware/vmware_dns_config.py\", \n  \"module vmware_dvs_host\": \"lib/ansible/modules/cloud/vmware/vmware_dvs_host.py\", \n  \"module vmware_dvs_portgroup\": \"lib/ansible/modules/cloud/vmware/vmware_dvs_portgroup.py\", \n  \"module vmware_dvswitch\": \"lib/ansible/modules/cloud/vmware/vmware_dvswitch.py\", \n  \"module vmware_guest\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"module vmware_guest_facts\": \"lib/ansible/modules/cloud/vmware/vmware_guest_facts.py\", \n  \"module vmware_guest_find\": \"lib/ansible/modules/cloud/vmware/vmware_guest_find.py\", \n  \"module vmware_guest_powerstate\": \"lib/ansible/modules/cloud/vmware/vmware_guest_powerstate.py\", \n  \"module vmware_guest_snapshot\": \"lib/ansible/modules/cloud/vmware/vmware_guest_snapshot.py\", \n  \"module vmware_guest_tools_wait\": \"lib/ansible/modules/cloud/vmware/vmware_guest_tools_wait.py\", \n  \"module vmware_host\": \"lib/ansible/modules/cloud/vmware/vmware_host.py\", \n  \"module vmware_local_user_manager\": \"lib/ansible/modules/cloud/vmware/vmware_local_user_manager.py\", \n  \"module vmware_maintenancemode\": \"lib/ansible/modules/cloud/vmware/vmware_maintenancemode.py\", \n  \"module vmware_migrate_vmk\": \"lib/ansible/modules/cloud/vmware/vmware_migrate_vmk.py\", \n  \"module vmware_portgroup\": \"lib/ansible/modules/cloud/vmware/vmware_portgroup.py\", \n  \"module vmware_resource_pool\": \"lib/ansible/modules/cloud/vmware/vmware_resource_pool.py\", \n  \"module vmware_target_canonical_facts\": \"lib/ansible/modules/cloud/vmware/vmware_target_canonical_facts.py\", \n  \"module vmware_vm_facts\": \"lib/ansible/modules/cloud/vmware/vmware_vm_facts.py\", \n  \"module vmware_vm_shell\": \"lib/ansible/modules/cloud/vmware/vmware_vm_shell.py\", \n  \"module vmware_vm_vss_dvs_migrate\": \"lib/ansible/modules/cloud/vmware/vmware_vm_vss_dvs_migrate.py\", \n  \"module vmware_vmkernel\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel.py\", \n  \"module vmware_vmkernel_ip_config\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel_ip_config.py\", \n  \"module vmware_vmotion\": \"lib/ansible/modules/cloud/vmware/vmware_vmotion.py\", \n  \"module vmware_vsan_cluster\": \"lib/ansible/modules/cloud/vmware/vmware_vsan_cluster.py\", \n  \"module vmware_vswitch\": \"lib/ansible/modules/cloud/vmware/vmware_vswitch.py\", \n  \"module vsphere_copy\": \"lib/ansible/modules/cloud/vmware/vsphere_copy.py\", \n  \"module vsphere_guest\": \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\", \n  \"module vyos_banner\": \"lib/ansible/modules/network/vyos/vyos_banner.py\", \n  \"module vyos_command\": \"lib/ansible/modules/network/vyos/vyos_command.py\", \n  \"module vyos_config\": \"lib/ansible/modules/network/vyos/vyos_config.py\", \n  \"module vyos_facts\": \"lib/ansible/modules/network/vyos/vyos_facts.py\", \n  \"module vyos_interface\": \"lib/ansible/modules/network/vyos/vyos_interface.py\", \n  \"module vyos_l3_interface\": \"lib/ansible/modules/network/vyos/vyos_l3_interface.py\", \n  \"module vyos_linkagg\": \"lib/ansible/modules/network/vyos/vyos_linkagg.py\", \n  \"module vyos_lldp\": \"lib/ansible/modules/network/vyos/vyos_lldp.py\", \n  \"module vyos_lldp_interface\": \"lib/ansible/modules/network/vyos/vyos_lldp_interface.py\", \n  \"module vyos_logging\": \"lib/ansible/modules/network/vyos/vyos_logging.py\", \n  \"module vyos_static_route\": \"lib/ansible/modules/network/vyos/vyos_static_route.py\", \n  \"module vyos_system\": \"lib/ansible/modules/network/vyos/vyos_system.py\", \n  \"module vyos_user\": \"lib/ansible/modules/network/vyos/vyos_user.py\", \n  \"module vyos_vlan\": \"lib/ansible/modules/network/vyos/vyos_vlan.py\", \n  \"module wait_for\": \"lib/ansible/modules/utilities/logic/wait_for.py\", \n  \"module wait_for_connection\": \"lib/ansible/modules/utilities/logic/wait_for_connection.py\", \n  \"module wakeonlan\": \"lib/ansible/modules/remote_management/wakeonlan.py\", \n  \"module webfaction_app\": \"lib/ansible/modules/cloud/webfaction/webfaction_app.py\", \n  \"module webfaction_db\": \"lib/ansible/modules/cloud/webfaction/webfaction_db.py\", \n  \"module webfaction_domain\": \"lib/ansible/modules/cloud/webfaction/webfaction_domain.py\", \n  \"module webfaction_mailbox\": \"lib/ansible/modules/cloud/webfaction/webfaction_mailbox.py\", \n  \"module webfaction_site\": \"lib/ansible/modules/cloud/webfaction/webfaction_site.py\", \n  \"module win_acl\": \"lib/ansible/modules/windows/win_acl.py\", \n  \"module win_acl_inheritance\": \"lib/ansible/modules/windows/win_acl_inheritance.ps1\", \n  \"module win_audit_rule\": \"lib/ansible/modules/windows/win_audit_rule.ps1\", \n  \"module win_chocolatey\": \"lib/ansible/modules/windows/win_chocolatey.py\", \n  \"module win_command\": \"lib/ansible/modules/windows/win_command.py\", \n  \"module win_copy\": \"lib/ansible/modules/windows/win_copy.ps1\", \n  \"module win_defrag\": \"lib/ansible/modules/windows/win_defrag.ps1\", \n  \"module win_disk_image\": \"lib/ansible/modules/windows/win_disk_image.ps1\", \n  \"module win_dns_client\": \"lib/ansible/modules/windows/win_dns_client.ps1\", \n  \"module win_domain\": \"lib/ansible/modules/windows/win_domain.py\", \n  \"module win_domain_controller\": \"lib/ansible/modules/windows/win_domain_controller.ps1\", \n  \"module win_domain_group\": \"lib/ansible/modules/windows/win_domain_group.ps1\", \n  \"module win_domain_membership\": \"lib/ansible/modules/windows/win_domain_membership.ps1\", \n  \"module win_domain_user\": \"lib/ansible/modules/windows/win_domain_user.py\", \n  \"module win_dotnet_ngen\": \"lib/ansible/modules/windows/win_dotnet_ngen.py\", \n  \"module win_dsc\": \"lib/ansible/modules/windows/win_dsc.ps1\", \n  \"module win_environment\": \"lib/ansible/modules/windows/win_environment.ps1\", \n  \"module win_eventlog\": \"lib/ansible/modules/windows/win_eventlog.ps1\", \n  \"module win_eventlog_entry\": \"lib/ansible/modules/windows/win_eventlog_entry.py\", \n  \"module win_feature\": \"lib/ansible/modules/windows/win_feature.ps1\", \n  \"module win_file\": \"lib/ansible/modules/windows/win_file.py\", \n  \"module win_file_version\": \"lib/ansible/modules/windows/win_file_version.py\", \n  \"module win_find\": \"lib/ansible/modules/windows/win_find.py\", \n  \"module win_firewall\": \"lib/ansible/modules/windows/win_firewall.py\", \n  \"module win_firewall_rule\": \"lib/ansible/modules/windows/win_firewall_rule.py\", \n  \"module win_get_url\": \"lib/ansible/modules/windows/win_get_url.py\", \n  \"module win_group\": \"lib/ansible/modules/windows/win_group.py\", \n  \"module win_group_membership\": \"lib/ansible/modules/windows/win_group_membership.ps1\", \n  \"module win_hotfix\": \"lib/ansible/modules/windows/win_hotfix.ps1\", \n  \"module win_iis_virtualdirectory\": \"lib/ansible/modules/windows/win_iis_virtualdirectory.ps1\", \n  \"module win_iis_webapplication\": \"lib/ansible/modules/windows/win_iis_webapplication.ps1\", \n  \"module win_iis_webapppool\": \"lib/ansible/modules/windows/win_iis_webapppool.ps1\", \n  \"module win_iis_webbinding\": \"lib/ansible/modules/windows/win_iis_webbinding.py\", \n  \"module win_iis_website\": \"lib/ansible/modules/windows/win_iis_website.ps1\", \n  \"module win_lineinfile\": \"lib/ansible/modules/windows/win_lineinfile.py\", \n  \"module win_mapped_drive\": \"lib/ansible/modules/windows/win_mapped_drive.py\", \n  \"module win_msg\": \"lib/ansible/modules/windows/win_msg.py\", \n  \"module win_msi\": \"lib/ansible/modules/windows/_win_msi.ps1\", \n  \"module win_nssm\": \"lib/ansible/modules/windows/win_nssm.ps1\", \n  \"module win_owner\": \"lib/ansible/modules/windows/win_owner.ps1\", \n  \"module win_package\": \"lib/ansible/modules/windows/win_package.py\", \n  \"module win_pagefile\": \"lib/ansible/modules/windows/win_pagefile.py\", \n  \"module win_path\": \"lib/ansible/modules/windows/win_path.ps1\", \n  \"module win_ping\": \"lib/ansible/modules/windows/win_ping.ps1\", \n  \"module win_power_plan\": \"lib/ansible/modules/windows/win_power_plan.ps1\", \n  \"module win_psexec\": \"lib/ansible/modules/windows/win_psexec.ps1\", \n  \"module win_psmodule\": \"lib/ansible/modules/windows/win_psmodule.ps1\", \n  \"module win_rabbitmq_plugin\": \"lib/ansible/modules/windows/win_rabbitmq_plugin.ps1\", \n  \"module win_reboot\": \"lib/ansible/modules/windows/win_reboot.py\", \n  \"module win_reg_stat\": \"lib/ansible/modules/windows/win_reg_stat.ps1\", \n  \"module win_regedit\": \"lib/ansible/modules/windows/win_regedit.py\", \n  \"module win_region\": \"lib/ansible/modules/windows/win_region.py\", \n  \"module win_regmerge\": \"lib/ansible/modules/windows/win_regmerge.ps1\", \n  \"module win_robocopy\": \"lib/ansible/modules/windows/win_robocopy.ps1\", \n  \"module win_route\": \"lib/ansible/modules/windows/win_route.ps1\", \n  \"module win_say\": \"lib/ansible/modules/windows/win_say.ps1\", \n  \"module win_scheduled_task\": \"lib/ansible/modules/windows/win_scheduled_task.py\", \n  \"module win_scheduled_task_stat\": \"lib/ansible/modules/windows/win_scheduled_task_stat.py\", \n  \"module win_security_policy\": \"lib/ansible/modules/windows/win_security_policy.ps1\", \n  \"module win_service\": \"lib/ansible/modules/windows/win_service.ps1\", \n  \"module win_share\": \"lib/ansible/modules/windows/win_share.py\", \n  \"module win_shell\": \"lib/ansible/modules/windows/win_shell.py\", \n  \"module win_shortcut\": \"lib/ansible/modules/windows/win_shortcut.py\", \n  \"module win_stat\": \"lib/ansible/modules/windows/win_stat.py\", \n  \"module win_tempfile\": \"lib/ansible/modules/windows/win_tempfile.ps1\", \n  \"module win_template\": \"lib/ansible/modules/windows/win_template.py\", \n  \"module win_timezone\": \"lib/ansible/modules/windows/win_timezone.ps1\", \n  \"module win_toast\": \"lib/ansible/modules/windows/win_toast.py\", \n  \"module win_unzip\": \"lib/ansible/modules/windows/win_unzip.py\", \n  \"module win_updates\": \"lib/ansible/modules/windows/win_updates.py\", \n  \"module win_uri\": \"lib/ansible/modules/windows/win_uri.ps1\", \n  \"module win_user\": \"lib/ansible/modules/windows/win_user.ps1\", \n  \"module win_user_right\": \"lib/ansible/modules/windows/win_user_right.py\", \n  \"module win_wait_for\": \"lib/ansible/modules/windows/win_wait_for.ps1\", \n  \"module win_wakeonlan\": \"lib/ansible/modules/windows/win_wakeonlan.py\", \n  \"module win_webpicmd\": \"lib/ansible/modules/windows/win_webpicmd.ps1\", \n  \"module xattr\": \"lib/ansible/modules/files/xattr.py\", \n  \"module xbps\": \"lib/ansible/modules/packaging/os/xbps.py\", \n  \"module xenserver_facts\": \"lib/ansible/modules/cloud/misc/xenserver_facts.py\", \n  \"module xml\": \"lib/ansible/modules/files/xml.py\", \n  \"module yum\": \"lib/ansible/modules/packaging/os/yum.py\", \n  \"module yum_repository\": \"lib/ansible/modules/packaging/os/yum_repository.py\", \n  \"module zabbix_group\": \"lib/ansible/modules/monitoring/zabbix/zabbix_group.py\", \n  \"module zabbix_host\": \"lib/ansible/modules/monitoring/zabbix/zabbix_host.py\", \n  \"module zabbix_hostmacro\": \"lib/ansible/modules/monitoring/zabbix/zabbix_hostmacro.py\", \n  \"module zabbix_maintenance\": \"lib/ansible/modules/monitoring/zabbix/zabbix_maintenance.py\", \n  \"module zabbix_proxy\": \"lib/ansible/modules/monitoring/zabbix/zabbix_proxy.py\", \n  \"module zabbix_screen\": \"lib/ansible/modules/monitoring/zabbix/zabbix_screen.py\", \n  \"module zabbix_template\": \"lib/ansible/modules/monitoring/zabbix/zabbix_template.py\", \n  \"module zfs\": \"lib/ansible/modules/storage/zfs/zfs.py\", \n  \"module zfs_facts\": \"lib/ansible/modules/storage/zfs/zfs_facts.py\", \n  \"module znode\": \"lib/ansible/modules/clustering/znode.py\", \n  \"module zpool_facts\": \"lib/ansible/modules/storage/zfs/zpool_facts.py\", \n  \"module zypper\": \"lib/ansible/modules/packaging/os/zypper.py\", \n  \"module zypper_repository\": \"lib/ansible/modules/packaging/os/zypper_repository.py\", \n  \"module/cloud/amazon/cloudformation\": [\n    \"lib/ansible/modules/cloud/amazon/cloudformation.py\"\n  ], \n  \"module/cloud/digital_ocean/digital_ocean.py\": [\n    \"lib/ansible/modules/cloud/digital_ocean/digital_ocean.py\"\n  ], \n  \"module/file\\ndevel/lib/ansible/modules/files/file.py\": [\n    \"lib/ansible/modules/files/file.py\"\n  ], \n  \"module/gce\": [\n    \"lib/ansible/modules/cloud/google/gce.py\"\n  ], \n  \"module/ipa_groups\": [], \n  \"module/iptables\": [\n    \"lib/ansible/modules/system/iptables.py\"\n  ], \n  \"module/network/lenovo/enos_facts.py\\nplugins/action/enos_facts.py\": [], \n  \"module/plugin/connection/winrm.py\": [], \n  \"module: GUIDELINES.md\": \"lib/ansible/modules/cloud/amazon/GUIDELINES.md\", \n  \"module: README.md\": \"lib/ansible/modules/cloud/openstack/README.md\", \n  \"module: README.rst\": \"lib/ansible/modules/cloud/ovirt/README.rst\", \n  \"module: _accelerate\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n  \"module: _azure\": \"lib/ansible/modules/cloud/azure/_azure.py\", \n  \"module: _cl_bond\": \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n  \"module: _cl_bridge\": \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n  \"module: _cl_img_install\": \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n  \"module: _cl_interface\": \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n  \"module: _cl_interface_policy\": \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n  \"module: _cl_license\": \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n  \"module: _cl_ports\": \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n  \"module: _cs_nic\": \"lib/ansible/modules/cloud/cloudstack/_cs_nic.py\", \n  \"module: _docker\": \"lib/ansible/modules/cloud/docker/_docker.py\", \n  \"module: _ec2_ami_search\": \"lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\", \n  \"module: _ec2_facts\": \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\", \n  \"module: _ec2_remote_facts\": \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\", \n  \"module: _ec2_vpc\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n  \"module: _ec2_vpc_dhcp_options\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\", \n  \"module: _ec2_vpc_dhcp_options_facts\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\", \n  \"module: _iam_cert_facts\": \"lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\", \n  \"module: _include\": \"lib/ansible/modules/utilities/logic/_include.py\", \n  \"module: _netscaler\": \"lib/ansible/modules/network/citrix/_netscaler.py\", \n  \"module: _nxos_mtu\": \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n  \"module: _os_server_actions\": \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n  \"module: _ovirt_affinity_groups\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\", \n  \"module: _ovirt_affinity_labels\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\", \n  \"module: _ovirt_affinity_labels_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\", \n  \"module: _ovirt_clusters\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\", \n  \"module: _ovirt_clusters_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\", \n  \"module: _ovirt_datacenters\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\", \n  \"module: _ovirt_datacenters_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\", \n  \"module: _ovirt_disks\": \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\", \n  \"module: _ovirt_external_providers\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\", \n  \"module: _ovirt_external_providers_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\", \n  \"module: _ovirt_groups\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\", \n  \"module: _ovirt_groups_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\", \n  \"module: _s3\": \"lib/ansible/modules/cloud/amazon/_s3.py\", \n  \"module: _win_msi\": \"lib/ansible/modules/windows/_win_msi.py\", \n  \"module: `include_vars `\": [\n    \"lib/ansible/modules/utilities/logic/include_vars.py\"\n  ], \n  \"module: `vsphere_guest`\\nusing: `vm_disk`\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"module: a10_server\": \"lib/ansible/modules/network/a10/a10_server.py\", \n  \"module: a10_server_axapi3\": \"lib/ansible/modules/network/a10/a10_server_axapi3.py\", \n  \"module: a10_service_group\": \"lib/ansible/modules/network/a10/a10_service_group.py\", \n  \"module: a10_virtual_server\": \"lib/ansible/modules/network/a10/a10_virtual_server.py\", \n  \"module: accelerate\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n  \"module: aci_aep\": \"lib/ansible/modules/network/aci/aci_aep.py\", \n  \"module: aci_ap\": \"lib/ansible/modules/network/aci/aci_ap.py\", \n  \"module: aci_bd\": \"lib/ansible/modules/network/aci/aci_bd.py\", \n  \"module: aci_bd_subnet\": \"lib/ansible/modules/network/aci/aci_bd_subnet.py\", \n  \"module: aci_bd_to_l3out\": \"lib/ansible/modules/network/aci/aci_bd_to_l3out.py\", \n  \"module: aci_config_rollback\": \"lib/ansible/modules/network/aci/aci_config_rollback.py\", \n  \"module: aci_config_snapshot\": \"lib/ansible/modules/network/aci/aci_config_snapshot.py\", \n  \"module: aci_contract\": \"lib/ansible/modules/network/aci/aci_contract.py\", \n  \"module: aci_contract_subject\": \"lib/ansible/modules/network/aci/aci_contract_subject.py\", \n  \"module: aci_contract_subject_to_filter\": \"lib/ansible/modules/network/aci/aci_contract_subject_to_filter.py\", \n  \"module: aci_epg\": \"lib/ansible/modules/network/aci/aci_epg.py\", \n  \"module: aci_epg_monitoring_policy\": \"lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py\", \n  \"module: aci_epg_to_contract\": \"lib/ansible/modules/network/aci/aci_epg_to_contract.py\", \n  \"module: aci_epg_to_domain\": \"lib/ansible/modules/network/aci/aci_epg_to_domain.py\", \n  \"module: aci_filter\": \"lib/ansible/modules/network/aci/aci_filter.py\", \n  \"module: aci_filter_entry\": \"lib/ansible/modules/network/aci/aci_filter_entry.py\", \n  \"module: aci_intf_policy_fc\": \"lib/ansible/modules/network/aci/aci_intf_policy_fc.py\", \n  \"module: aci_intf_policy_l2\": \"lib/ansible/modules/network/aci/aci_intf_policy_l2.py\", \n  \"module: aci_intf_policy_lldp\": \"lib/ansible/modules/network/aci/aci_intf_policy_lldp.py\", \n  \"module: aci_intf_policy_mcp\": \"lib/ansible/modules/network/aci/aci_intf_policy_mcp.py\", \n  \"module: aci_intf_policy_port_channel\": \"lib/ansible/modules/network/aci/aci_intf_policy_port_channel.py\", \n  \"module: aci_intf_policy_port_security\": \"lib/ansible/modules/network/aci/aci_intf_policy_port_security.py\", \n  \"module: aci_l3out_route_tag_policy\": \"lib/ansible/modules/network/aci/aci_l3out_route_tag_policy.py\", \n  \"module: aci_rest\": \"lib/ansible/modules/network/aci/aci_rest.py\", \n  \"module: aci_taboo_contract\": \"lib/ansible/modules/network/aci/aci_taboo_contract.py\", \n  \"module: aci_tenant\": \"lib/ansible/modules/network/aci/aci_tenant.py\", \n  \"module: aci_tenant_action_rule_profile\": \"lib/ansible/modules/network/aci/aci_tenant_action_rule_profile.py\", \n  \"module: aci_tenant_ep_retention_policy\": \"lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py\", \n  \"module: aci_tenant_span_dst_group\": \"lib/ansible/modules/network/aci/aci_tenant_span_dst_group.py\", \n  \"module: aci_tenant_span_src_group\": \"lib/ansible/modules/network/aci/aci_tenant_span_src_group.py\", \n  \"module: aci_tenant_span_src_group_to_dst_group\": \"lib/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py\", \n  \"module: aci_vrf\": \"lib/ansible/modules/network/aci/aci_vrf.py\", \n  \"module: acl\": [\n    \"lib/ansible/modules/files/acl.py\"\n  ], \n  \"module: add_host\": \"lib/ansible/modules/inventory/add_host.py\", \n  \"module: airbrake_deployment\": \"lib/ansible/modules/monitoring/airbrake_deployment.py\", \n  \"module: aireos_command\": \"lib/ansible/modules/network/aireos/aireos_command.py\", \n  \"module: aireos_config\": \"lib/ansible/modules/network/aireos/aireos_config.py\", \n  \"module: aix_inittab\": \"lib/ansible/modules/system/aix_inittab.py\", \n  \"module: aix_lvol\": \"lib/ansible/modules/system/aix_lvol.py\", \n  \"module: alternatives\": \"lib/ansible/modules/system/alternatives.py\", \n  \"module: aos_asn_pool\": \"lib/ansible/modules/network/aos/aos_asn_pool.py\", \n  \"module: aos_blueprint\": \"lib/ansible/modules/network/aos/aos_blueprint.py\", \n  \"module: aos_blueprint_param\": \"lib/ansible/modules/network/aos/aos_blueprint_param.py\", \n  \"module: aos_blueprint_virtnet\": \"lib/ansible/modules/network/aos/aos_blueprint_virtnet.py\", \n  \"module: aos_device\": \"lib/ansible/modules/network/aos/aos_device.py\", \n  \"module: aos_external_router\": \"lib/ansible/modules/network/aos/aos_external_router.py\", \n  \"module: aos_ip_pool\": \"lib/ansible/modules/network/aos/aos_ip_pool.py\", \n  \"module: aos_logical_device\": \"lib/ansible/modules/network/aos/aos_logical_device.py\", \n  \"module: aos_logical_device_map\": \"lib/ansible/modules/network/aos/aos_logical_device_map.py\", \n  \"module: aos_login\": \"lib/ansible/modules/network/aos/aos_login.py\", \n  \"module: aos_rack_type\": \"lib/ansible/modules/network/aos/aos_rack_type.py\", \n  \"module: aos_template\": \"lib/ansible/modules/network/aos/aos_template.py\", \n  \"module: apache2_mod_proxy\": \"lib/ansible/modules/web_infrastructure/apache2_mod_proxy.py\", \n  \"module: apache2_module\": \"lib/ansible/modules/web_infrastructure/apache2_module.py\", \n  \"module: apk\": \"lib/ansible/modules/packaging/os/apk.py\", \n  \"module: apt\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"module: apt_key\": \"lib/ansible/modules/packaging/os/apt_key.py\", \n  \"module: apt_repository\": \"lib/ansible/modules/packaging/os/apt_repository.py\", \n  \"module: apt_rpm\": \"lib/ansible/modules/packaging/os/apt_rpm.py\", \n  \"module: archive\": \"lib/ansible/modules/files/archive.py\", \n  \"module: aruba_command\": \"lib/ansible/modules/network/aruba/aruba_command.py\", \n  \"module: aruba_config\": \"lib/ansible/modules/network/aruba/aruba_config.py\", \n  \"module: asa_acl\": \"lib/ansible/modules/network/asa/asa_acl.py\", \n  \"module: asa_command\": \"lib/ansible/modules/network/asa/asa_command.py\", \n  \"module: asa_config\": \"lib/ansible/modules/network/asa/asa_config.py\", \n  \"module: assemble\": \"lib/ansible/modules/files/assemble.py\", \n  \"module: assert\": \"lib/ansible/modules/utilities/logic/assert.py\", \n  \"module: async_status\": \"lib/ansible/modules/utilities/logic/async_status.py\", \n  \"module: async_wrapper\": \"lib/ansible/modules/utilities/logic/async_wrapper.py\", \n  \"module: at\": \"lib/ansible/modules/system/at.py\", \n  \"module: atomic_container\": \"lib/ansible/modules/cloud/atomic/atomic_container.py\", \n  \"module: atomic_host\": \"lib/ansible/modules/cloud/atomic/atomic_host.py\", \n  \"module: atomic_image\": \"lib/ansible/modules/cloud/atomic/atomic_image.py\", \n  \"module: authorized_key\": \"lib/ansible/modules/system/authorized_key.py\", \n  \"module: avi_actiongroupconfig\": \"lib/ansible/modules/network/avi/avi_actiongroupconfig.py\", \n  \"module: avi_alertconfig\": \"lib/ansible/modules/network/avi/avi_alertconfig.py\", \n  \"module: avi_alertemailconfig\": \"lib/ansible/modules/network/avi/avi_alertemailconfig.py\", \n  \"module: avi_alertscriptconfig\": \"lib/ansible/modules/network/avi/avi_alertscriptconfig.py\", \n  \"module: avi_alertsyslogconfig\": \"lib/ansible/modules/network/avi/avi_alertsyslogconfig.py\", \n  \"module: avi_analyticsprofile\": \"lib/ansible/modules/network/avi/avi_analyticsprofile.py\", \n  \"module: avi_api_session\": \"lib/ansible/modules/network/avi/avi_api_session.py\", \n  \"module: avi_applicationpersistenceprofile\": \"lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py\", \n  \"module: avi_applicationprofile\": \"lib/ansible/modules/network/avi/avi_applicationprofile.py\", \n  \"module: avi_authprofile\": \"lib/ansible/modules/network/avi/avi_authprofile.py\", \n  \"module: avi_backup\": \"lib/ansible/modules/network/avi/avi_backup.py\", \n  \"module: avi_backupconfiguration\": \"lib/ansible/modules/network/avi/avi_backupconfiguration.py\", \n  \"module: avi_certificatemanagementprofile\": \"lib/ansible/modules/network/avi/avi_certificatemanagementprofile.py\", \n  \"module: avi_cloud\": \"lib/ansible/modules/network/avi/avi_cloud.py\", \n  \"module: avi_cloudconnectoruser\": \"lib/ansible/modules/network/avi/avi_cloudconnectoruser.py\", \n  \"module: avi_cloudproperties\": \"lib/ansible/modules/network/avi/avi_cloudproperties.py\", \n  \"module: avi_cluster\": \"lib/ansible/modules/network/avi/avi_cluster.py\", \n  \"module: avi_controllerproperties\": \"lib/ansible/modules/network/avi/avi_controllerproperties.py\", \n  \"module: avi_dnspolicy\": \"lib/ansible/modules/network/avi/avi_dnspolicy.py\", \n  \"module: avi_gslb\": \"lib/ansible/modules/network/avi/avi_gslb.py\", \n  \"module: avi_gslbapplicationpersistenceprofile\": \"lib/ansible/modules/network/avi/avi_gslbapplicationpersistenceprofile.py\", \n  \"module: avi_gslbgeodbprofile\": \"lib/ansible/modules/network/avi/avi_gslbgeodbprofile.py\", \n  \"module: avi_gslbhealthmonitor\": \"lib/ansible/modules/network/avi/avi_gslbhealthmonitor.py\", \n  \"module: avi_gslbservice\": \"lib/ansible/modules/network/avi/avi_gslbservice.py\", \n  \"module: avi_hardwaresecuritymodulegroup\": \"lib/ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py\", \n  \"module: avi_healthmonitor\": \"lib/ansible/modules/network/avi/avi_healthmonitor.py\", \n  \"module: avi_httppolicyset\": \"lib/ansible/modules/network/avi/avi_httppolicyset.py\", \n  \"module: avi_ipaddrgroup\": \"lib/ansible/modules/network/avi/avi_ipaddrgroup.py\", \n  \"module: avi_ipamdnsproviderprofile\": \"lib/ansible/modules/network/avi/avi_ipamdnsproviderprofile.py\", \n  \"module: avi_microservicegroup\": \"lib/ansible/modules/network/avi/avi_microservicegroup.py\", \n  \"module: avi_network\": \"lib/ansible/modules/network/avi/avi_network.py\", \n  \"module: avi_networkprofile\": \"lib/ansible/modules/network/avi/avi_networkprofile.py\", \n  \"module: avi_networksecuritypolicy\": \"lib/ansible/modules/network/avi/avi_networksecuritypolicy.py\", \n  \"module: avi_pkiprofile\": \"lib/ansible/modules/network/avi/avi_pkiprofile.py\", \n  \"module: avi_pool\": \"lib/ansible/modules/network/avi/avi_pool.py\", \n  \"module: avi_poolgroup\": \"lib/ansible/modules/network/avi/avi_poolgroup.py\", \n  \"module: avi_poolgroupdeploymentpolicy\": \"lib/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py\", \n  \"module: avi_prioritylabels\": \"lib/ansible/modules/network/avi/avi_prioritylabels.py\", \n  \"module: avi_role\": \"lib/ansible/modules/network/avi/avi_role.py\", \n  \"module: avi_scheduler\": \"lib/ansible/modules/network/avi/avi_scheduler.py\", \n  \"module: avi_seproperties\": \"lib/ansible/modules/network/avi/avi_seproperties.py\", \n  \"module: avi_serverautoscalepolicy\": \"lib/ansible/modules/network/avi/avi_serverautoscalepolicy.py\", \n  \"module: avi_serviceengine\": \"lib/ansible/modules/network/avi/avi_serviceengine.py\", \n  \"module: avi_serviceenginegroup\": \"lib/ansible/modules/network/avi/avi_serviceenginegroup.py\", \n  \"module: avi_snmptrapprofile\": \"lib/ansible/modules/network/avi/avi_snmptrapprofile.py\", \n  \"module: avi_sslkeyandcertificate\": \"lib/ansible/modules/network/avi/avi_sslkeyandcertificate.py\", \n  \"module: avi_sslprofile\": \"lib/ansible/modules/network/avi/avi_sslprofile.py\", \n  \"module: avi_stringgroup\": \"lib/ansible/modules/network/avi/avi_stringgroup.py\", \n  \"module: avi_systemconfiguration\": \"lib/ansible/modules/network/avi/avi_systemconfiguration.py\", \n  \"module: avi_tenant\": \"lib/ansible/modules/network/avi/avi_tenant.py\", \n  \"module: avi_trafficcloneprofile\": \"lib/ansible/modules/network/avi/avi_trafficcloneprofile.py\", \n  \"module: avi_useraccountprofile\": \"lib/ansible/modules/network/avi/avi_useraccountprofile.py\", \n  \"module: avi_virtualservice\": \"lib/ansible/modules/network/avi/avi_virtualservice.py\", \n  \"module: avi_vrfcontext\": \"lib/ansible/modules/network/avi/avi_vrfcontext.py\", \n  \"module: avi_vsdatascriptset\": \"lib/ansible/modules/network/avi/avi_vsdatascriptset.py\", \n  \"module: avi_vsvip\": \"lib/ansible/modules/network/avi/avi_vsvip.py\", \n  \"module: avi_webhook\": \"lib/ansible/modules/network/avi/avi_webhook.py\", \n  \"module: awall\": \"lib/ansible/modules/system/awall.py\", \n  \"module: aws_acm_facts\": \"lib/ansible/modules/cloud/amazon/aws_acm_facts.py\", \n  \"module: aws_api_gateway\": \"lib/ansible/modules/cloud/amazon/aws_api_gateway.py\", \n  \"module: aws_direct_connect_connection\": \"lib/ansible/modules/cloud/amazon/aws_direct_connect_connection.py\", \n  \"module: aws_direct_connect_link_aggregation_group\": \"lib/ansible/modules/cloud/amazon/aws_direct_connect_link_aggregation_group.py\", \n  \"module: aws_kms\": \"lib/ansible/modules/cloud/amazon/aws_kms.py\", \n  \"module: aws_kms_facts\": \"lib/ansible/modules/cloud/amazon/aws_kms_facts.py\", \n  \"module: aws_s3\": \"lib/ansible/modules/cloud/amazon/aws_s3.py\", \n  \"module: aws_s3_bucket_facts\": \"lib/ansible/modules/cloud/amazon/aws_s3_bucket_facts.py\", \n  \"module: aws_ssm_parameter_store\": \"lib/ansible/modules/cloud/amazon/aws_ssm_parameter_store.py\", \n  \"module: aws_waf_facts\": \"lib/ansible/modules/cloud/amazon/aws_waf_facts.py\", \n  \"module: azure\": \"lib/ansible/modules/cloud/azure/_azure.py\", \n  \"module: azure_rm_acs\": \"lib/ansible/modules/cloud/azure/azure_rm_acs.py\", \n  \"module: azure_rm_availabilityset\": \"lib/ansible/modules/cloud/azure/azure_rm_availabilityset.py\", \n  \"module: azure_rm_availabilityset_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_availabilityset_facts.py\", \n  \"module: azure_rm_deployment\": \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\", \n  \"module: azure_rm_dnsrecordset\": \"lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset.py\", \n  \"module: azure_rm_dnsrecordset_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset_facts.py\", \n  \"module: azure_rm_dnszone\": \"lib/ansible/modules/cloud/azure/azure_rm_dnszone.py\", \n  \"module: azure_rm_dnszone_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_dnszone_facts.py\", \n  \"module: azure_rm_functionapp\": \"lib/ansible/modules/cloud/azure/azure_rm_functionapp.py\", \n  \"module: azure_rm_functionapp_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_functionapp_facts.py\", \n  \"module: azure_rm_loadbalancer\": \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer.py\", \n  \"module: azure_rm_loadbalancer_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer_facts.py\", \n  \"module: azure_rm_managed_disk\": \"lib/ansible/modules/cloud/azure/azure_rm_managed_disk.py\", \n  \"module: azure_rm_managed_disk_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_managed_disk_facts.py\", \n  \"module: azure_rm_networkinterface\": \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface.py\", \n  \"module: azure_rm_networkinterface_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface_facts.py\", \n  \"module: azure_rm_publicipaddress\": \"lib/ansible/modules/cloud/azure/azure_rm_publicipaddress.py\", \n  \"module: azure_rm_publicipaddress_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_publicipaddress_facts.py\", \n  \"module: azure_rm_resourcegroup\": \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup.py\", \n  \"module: azure_rm_resourcegroup_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup_facts.py\", \n  \"module: azure_rm_securitygroup\": \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup.py\", \n  \"module: azure_rm_securitygroup_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup_facts.py\", \n  \"module: azure_rm_storageaccount\": \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount.py\", \n  \"module: azure_rm_storageaccount_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount_facts.py\", \n  \"module: azure_rm_storageblob\": \"lib/ansible/modules/cloud/azure/azure_rm_storageblob.py\", \n  \"module: azure_rm_subnet\": \"lib/ansible/modules/cloud/azure/azure_rm_subnet.py\", \n  \"module: azure_rm_virtualmachine\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\", \n  \"module: azure_rm_virtualmachine_extension\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_extension.py\", \n  \"module: azure_rm_virtualmachine_scaleset\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset.py\", \n  \"module: azure_rm_virtualmachine_scaleset_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset_facts.py\", \n  \"module: azure_rm_virtualmachineimage_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachineimage_facts.py\", \n  \"module: azure_rm_virtualnetwork\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork.py\", \n  \"module: azure_rm_virtualnetwork_facts\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork_facts.py\", \n  \"module: bcf_switch\": \"lib/ansible/modules/network/bigswitch/bcf_switch.py\", \n  \"module: beadm\": \"lib/ansible/modules/system/beadm.py\", \n  \"module: bearychat\": \"lib/ansible/modules/notification/bearychat.py\", \n  \"module: bigip_asm_policy\": \"lib/ansible/modules/network/f5/bigip_asm_policy.py\", \n  \"module: bigip_command\": \"lib/ansible/modules/network/f5/bigip_command.py\", \n  \"module: bigip_config\": \"lib/ansible/modules/network/f5/bigip_config.py\", \n  \"module: bigip_configsync_action\": \"lib/ansible/modules/network/f5/bigip_configsync_action.py\", \n  \"module: bigip_configsync_actions\": \"lib/ansible/modules/network/f5/bigip_configsync_actions.py\", \n  \"module: bigip_device_dns\": \"lib/ansible/modules/network/f5/bigip_device_dns.py\", \n  \"module: bigip_device_ntp\": \"lib/ansible/modules/network/f5/bigip_device_ntp.py\", \n  \"module: bigip_device_sshd\": \"lib/ansible/modules/network/f5/bigip_device_sshd.py\", \n  \"module: bigip_facts\": \"lib/ansible/modules/network/f5/bigip_facts.py\", \n  \"module: bigip_gtm_datacenter\": \"lib/ansible/modules/network/f5/bigip_gtm_datacenter.py\", \n  \"module: bigip_gtm_facts\": \"lib/ansible/modules/network/f5/bigip_gtm_facts.py\", \n  \"module: bigip_gtm_pool\": \"lib/ansible/modules/network/f5/bigip_gtm_pool.py\", \n  \"module: bigip_gtm_virtual_server\": \"lib/ansible/modules/network/f5/bigip_gtm_virtual_server.py\", \n  \"module: bigip_gtm_wide_ip\": \"lib/ansible/modules/network/f5/bigip_gtm_wide_ip.py\", \n  \"module: bigip_hostname\": \"lib/ansible/modules/network/f5/bigip_hostname.py\", \n  \"module: bigip_iapp_service\": \"lib/ansible/modules/network/f5/bigip_iapp_service.py\", \n  \"module: bigip_iapp_template\": \"lib/ansible/modules/network/f5/bigip_iapp_template.py\", \n  \"module: bigip_iapplx_package\": \"lib/ansible/modules/network/f5/bigip_iapplx_package.py\", \n  \"module: bigip_irule\": \"lib/ansible/modules/network/f5/bigip_irule.py\", \n  \"module: bigip_monitor_http\": \"lib/ansible/modules/network/f5/bigip_monitor_http.py\", \n  \"module: bigip_monitor_https\": \"lib/ansible/modules/network/f5/bigip_monitor_https.py\", \n  \"module: bigip_monitor_tcp\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp.py\", \n  \"module: bigip_monitor_tcp_echo\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp_echo.py\", \n  \"module: bigip_monitor_tcp_half_open\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp_half_open.py\", \n  \"module: bigip_node\": \"lib/ansible/modules/network/f5/bigip_node.py\", \n  \"module: bigip_partition\": \"lib/ansible/modules/network/f5/bigip_partition.py\", \n  \"module: bigip_policy\": \"lib/ansible/modules/network/f5/bigip_policy.py\", \n  \"module: bigip_pool\": \"lib/ansible/modules/network/f5/bigip_pool.py\", \n  \"module: bigip_pool_member\": \"lib/ansible/modules/network/f5/bigip_pool_member.py\", \n  \"module: bigip_provision\": \"lib/ansible/modules/network/f5/bigip_provision.py\", \n  \"module: bigip_qkview\": \"lib/ansible/modules/network/f5/bigip_qkview.py\", \n  \"module: bigip_remote_syslog\": \"lib/ansible/modules/network/f5/bigip_remote_syslog.py\", \n  \"module: bigip_routedomain\": \"lib/ansible/modules/network/f5/bigip_routedomain.py\", \n  \"module: bigip_selfip\": \"lib/ansible/modules/network/f5/bigip_selfip.py\", \n  \"module: bigip_snat_pool\": \"lib/ansible/modules/network/f5/bigip_snat_pool.py\", \n  \"module: bigip_snmp\": \"lib/ansible/modules/network/f5/bigip_snmp.py\", \n  \"module: bigip_snmp_trap\": \"lib/ansible/modules/network/f5/bigip_snmp_trap.py\", \n  \"module: bigip_ssl_certificate\": \"lib/ansible/modules/network/f5/bigip_ssl_certificate.py\", \n  \"module: bigip_ssl_key\": \"lib/ansible/modules/network/f5/bigip_ssl_key.py\", \n  \"module: bigip_sys_db\": \"lib/ansible/modules/network/f5/bigip_sys_db.py\", \n  \"module: bigip_sys_global\": \"lib/ansible/modules/network/f5/bigip_sys_global.py\", \n  \"module: bigip_ucs\": \"lib/ansible/modules/network/f5/bigip_ucs.py\", \n  \"module: bigip_user\": \"lib/ansible/modules/network/f5/bigip_user.py\", \n  \"module: bigip_virtual_address\": \"lib/ansible/modules/network/f5/bigip_virtual_address.py\", \n  \"module: bigip_virtual_server\": \"lib/ansible/modules/network/f5/bigip_virtual_server.py\", \n  \"module: bigip_vlan\": \"lib/ansible/modules/network/f5/bigip_vlan.py\", \n  \"module: bigip_wait\": \"lib/ansible/modules/network/f5/bigip_wait.py\", \n  \"module: bigmon_chain\": \"lib/ansible/modules/network/bigswitch/bigmon_chain.py\", \n  \"module: bigmon_policy\": \"lib/ansible/modules/network/bigswitch/bigmon_policy.py\", \n  \"module: bigpanda\": \"lib/ansible/modules/monitoring/bigpanda.py\", \n  \"module: blockinfile\": \"lib/ansible/modules/files/blockinfile.py\", \n  \"module: bower\": \"lib/ansible/modules/packaging/language/bower.py\", \n  \"module: bundler\": \"lib/ansible/modules/packaging/language/bundler.py\", \n  \"module: bzr\": \"lib/ansible/modules/source_control/bzr.py\", \n  \"module: campfire\": \"lib/ansible/modules/notification/campfire.py\", \n  \"module: capabilities\": \"lib/ansible/modules/system/capabilities.py\", \n  \"module: catapult\": \"lib/ansible/modules/notification/catapult.py\", \n  \"module: ce_aaa_server\": \"lib/ansible/modules/network/cloudengine/ce_aaa_server.py\", \n  \"module: ce_aaa_server_host\": \"lib/ansible/modules/network/cloudengine/ce_aaa_server_host.py\", \n  \"module: ce_acl\": \"lib/ansible/modules/network/cloudengine/ce_acl.py\", \n  \"module: ce_acl_advance\": \"lib/ansible/modules/network/cloudengine/ce_acl_advance.py\", \n  \"module: ce_acl_interface\": \"lib/ansible/modules/network/cloudengine/ce_acl_interface.py\", \n  \"module: ce_bfd_global\": \"lib/ansible/modules/network/cloudengine/ce_bfd_global.py\", \n  \"module: ce_bfd_session\": \"lib/ansible/modules/network/cloudengine/ce_bfd_session.py\", \n  \"module: ce_bfd_view\": \"lib/ansible/modules/network/cloudengine/ce_bfd_view.py\", \n  \"module: ce_bgp\": \"lib/ansible/modules/network/cloudengine/ce_bgp.py\", \n  \"module: ce_bgp_af\": \"lib/ansible/modules/network/cloudengine/ce_bgp_af.py\", \n  \"module: ce_bgp_neighbor\": \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor.py\", \n  \"module: ce_bgp_neighbor_af\": \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor_af.py\", \n  \"module: ce_command\": \"lib/ansible/modules/network/cloudengine/ce_command.py\", \n  \"module: ce_config\": \"lib/ansible/modules/network/cloudengine/ce_config.py\", \n  \"module: ce_dldp\": \"lib/ansible/modules/network/cloudengine/ce_dldp.py\", \n  \"module: ce_dldp_interface\": \"lib/ansible/modules/network/cloudengine/ce_dldp_interface.py\", \n  \"module: ce_eth_trunk\": \"lib/ansible/modules/network/cloudengine/ce_eth_trunk.py\", \n  \"module: ce_evpn_bd_vni\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bd_vni.py\", \n  \"module: ce_evpn_bgp\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp.py\", \n  \"module: ce_evpn_bgp_rr\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp_rr.py\", \n  \"module: ce_evpn_global\": \"lib/ansible/modules/network/cloudengine/ce_evpn_global.py\", \n  \"module: ce_facts\": \"lib/ansible/modules/network/cloudengine/ce_facts.py\", \n  \"module: ce_file_copy\": \"lib/ansible/modules/network/cloudengine/ce_file_copy.py\", \n  \"module: ce_info_center_debug\": \"lib/ansible/modules/network/cloudengine/ce_info_center_debug.py\", \n  \"module: ce_info_center_global\": \"lib/ansible/modules/network/cloudengine/ce_info_center_global.py\", \n  \"module: ce_info_center_log\": \"lib/ansible/modules/network/cloudengine/ce_info_center_log.py\", \n  \"module: ce_info_center_trap\": \"lib/ansible/modules/network/cloudengine/ce_info_center_trap.py\", \n  \"module: ce_interface\": \"lib/ansible/modules/network/cloudengine/ce_interface.py\", \n  \"module: ce_interface_ospf\": \"lib/ansible/modules/network/cloudengine/ce_interface_ospf.py\", \n  \"module: ce_ip_interface\": \"lib/ansible/modules/network/cloudengine/ce_ip_interface.py\", \n  \"module: ce_link_status\": \"lib/ansible/modules/network/cloudengine/ce_link_status.py\", \n  \"module: ce_mlag_config\": \"lib/ansible/modules/network/cloudengine/ce_mlag_config.py\", \n  \"module: ce_mlag_interface\": \"lib/ansible/modules/network/cloudengine/ce_mlag_interface.py\", \n  \"module: ce_mtu\": \"lib/ansible/modules/network/cloudengine/ce_mtu.py\", \n  \"module: ce_netconf\": \"lib/ansible/modules/network/cloudengine/ce_netconf.py\", \n  \"module: ce_netstream_aging\": \"lib/ansible/modules/network/cloudengine/ce_netstream_aging.py\", \n  \"module: ce_netstream_export\": \"lib/ansible/modules/network/cloudengine/ce_netstream_export.py\", \n  \"module: ce_netstream_global\": \"lib/ansible/modules/network/cloudengine/ce_netstream_global.py\", \n  \"module: ce_netstream_template\": \"lib/ansible/modules/network/cloudengine/ce_netstream_template.py\", \n  \"module: ce_ntp\": \"lib/ansible/modules/network/cloudengine/ce_ntp.py\", \n  \"module: ce_ntp_auth\": \"lib/ansible/modules/network/cloudengine/ce_ntp_auth.py\", \n  \"module: ce_ospf\": \"lib/ansible/modules/network/cloudengine/ce_ospf.py\", \n  \"module: ce_ospf_vrf\": \"lib/ansible/modules/network/cloudengine/ce_ospf_vrf.py\", \n  \"module: ce_reboot\": \"lib/ansible/modules/network/cloudengine/ce_reboot.py\", \n  \"module: ce_rollback\": \"lib/ansible/modules/network/cloudengine/ce_rollback.py\", \n  \"module: ce_sflow\": \"lib/ansible/modules/network/cloudengine/ce_sflow.py\", \n  \"module: ce_snmp_community\": \"lib/ansible/modules/network/cloudengine/ce_snmp_community.py\", \n  \"module: ce_snmp_contact\": \"lib/ansible/modules/network/cloudengine/ce_snmp_contact.py\", \n  \"module: ce_snmp_location\": \"lib/ansible/modules/network/cloudengine/ce_snmp_location.py\", \n  \"module: ce_snmp_target_host\": \"lib/ansible/modules/network/cloudengine/ce_snmp_target_host.py\", \n  \"module: ce_snmp_traps\": \"lib/ansible/modules/network/cloudengine/ce_snmp_traps.py\", \n  \"module: ce_snmp_user\": \"lib/ansible/modules/network/cloudengine/ce_snmp_user.py\", \n  \"module: ce_startup\": \"lib/ansible/modules/network/cloudengine/ce_startup.py\", \n  \"module: ce_static_route\": \"lib/ansible/modules/network/cloudengine/ce_static_route.py\", \n  \"module: ce_stp\": \"lib/ansible/modules/network/cloudengine/ce_stp.py\", \n  \"module: ce_switchport\": \"lib/ansible/modules/network/cloudengine/ce_switchport.py\", \n  \"module: ce_vlan\": \"lib/ansible/modules/network/cloudengine/ce_vlan.py\", \n  \"module: ce_vrf\": \"lib/ansible/modules/network/cloudengine/ce_vrf.py\", \n  \"module: ce_vrf_af\": \"lib/ansible/modules/network/cloudengine/ce_vrf_af.py\", \n  \"module: ce_vrf_interface\": \"lib/ansible/modules/network/cloudengine/ce_vrf_interface.py\", \n  \"module: ce_vrrp\": \"lib/ansible/modules/network/cloudengine/ce_vrrp.py\", \n  \"module: ce_vxlan_arp\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_arp.py\", \n  \"module: ce_vxlan_gateway\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_gateway.py\", \n  \"module: ce_vxlan_global\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_global.py\", \n  \"module: ce_vxlan_tunnel\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_tunnel.py\", \n  \"module: ce_vxlan_vap\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_vap.py\", \n  \"module: circonus_annotation\": \"lib/ansible/modules/monitoring/circonus_annotation.py\", \n  \"module: cisco_spark\": \"lib/ansible/modules/notification/cisco_spark.py\", \n  \"module: cl_bond\": \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n  \"module: cl_bridge\": \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n  \"module: cl_img_install\": \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n  \"module: cl_interface\": \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n  \"module: cl_interface_policy\": \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n  \"module: cl_license\": \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n  \"module: cl_ports\": \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n  \"module: clc_aa_policy\": \"lib/ansible/modules/cloud/centurylink/clc_aa_policy.py\", \n  \"module: clc_alert_policy\": \"lib/ansible/modules/cloud/centurylink/clc_alert_policy.py\", \n  \"module: clc_blueprint_package\": \"lib/ansible/modules/cloud/centurylink/clc_blueprint_package.py\", \n  \"module: clc_firewall_policy\": \"lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py\", \n  \"module: clc_group\": \"lib/ansible/modules/cloud/centurylink/clc_group.py\", \n  \"module: clc_loadbalancer\": \"lib/ansible/modules/cloud/centurylink/clc_loadbalancer.py\", \n  \"module: clc_modify_server\": \"lib/ansible/modules/cloud/centurylink/clc_modify_server.py\", \n  \"module: clc_publicip\": \"lib/ansible/modules/cloud/centurylink/clc_publicip.py\", \n  \"module: clc_server\": \"lib/ansible/modules/cloud/centurylink/clc_server.py\", \n  \"module: clc_server_snapshot\": \"lib/ansible/modules/cloud/centurylink/clc_server_snapshot.py\", \n  \"module: cloudflare_dns\": \"lib/ansible/modules/net_tools/cloudflare_dns.py\", \n  \"module: cloudformation\": \"lib/ansible/modules/cloud/amazon/cloudformation.py\", \n  \"module: cloudformation_facts\": \"lib/ansible/modules/cloud/amazon/cloudformation_facts.py\", \n  \"module: cloudfront_facts\": \"lib/ansible/modules/cloud/amazon/cloudfront_facts.py\", \n  \"module: cloudscale_server\": \"lib/ansible/modules/cloud/cloudscale/cloudscale_server.py\", \n  \"module: cloudtrail\": \"lib/ansible/modules/cloud/amazon/cloudtrail.py\", \n  \"module: cloudwatchevent_rule\": \"lib/ansible/modules/cloud/amazon/cloudwatchevent_rule.py\", \n  \"module: cnos_backup\": \"lib/ansible/modules/network/lenovo/cnos_backup.py\", \n  \"module: cnos_bgp\": \"lib/ansible/modules/network/lenovo/cnos_bgp.py\", \n  \"module: cnos_command\": \"lib/ansible/modules/network/lenovo/cnos_command.py\", \n  \"module: cnos_conditional_command\": \"lib/ansible/modules/network/lenovo/cnos_conditional_command.py\", \n  \"module: cnos_conditional_template\": \"lib/ansible/modules/network/lenovo/cnos_conditional_template.py\", \n  \"module: cnos_factory\": \"lib/ansible/modules/network/lenovo/cnos_factory.py\", \n  \"module: cnos_facts\": \"lib/ansible/modules/network/lenovo/cnos_facts.py\", \n  \"module: cnos_image\": \"lib/ansible/modules/network/lenovo/cnos_image.py\", \n  \"module: cnos_interface\": \"lib/ansible/modules/network/lenovo/cnos_interface.py\", \n  \"module: cnos_portchannel\": \"lib/ansible/modules/network/lenovo/cnos_portchannel.py\", \n  \"module: cnos_reload\": \"lib/ansible/modules/network/lenovo/cnos_reload.py\", \n  \"module: cnos_rollback\": \"lib/ansible/modules/network/lenovo/cnos_rollback.py\", \n  \"module: cnos_save\": \"lib/ansible/modules/network/lenovo/cnos_save.py\", \n  \"module: cnos_showrun\": \"lib/ansible/modules/network/lenovo/cnos_showrun.py\", \n  \"module: cnos_template\": \"lib/ansible/modules/network/lenovo/cnos_template.py\", \n  \"module: cnos_vlag\": \"lib/ansible/modules/network/lenovo/cnos_vlag.py\", \n  \"module: cnos_vlan\": \"lib/ansible/modules/network/lenovo/cnos_vlan.py\", \n  \"module: command\": \"lib/ansible/modules/commands/command.py\", \n  \"module: composer\": \"lib/ansible/modules/packaging/language/composer.py\", \n  \"module: consul\": \"lib/ansible/modules/clustering/consul.py\", \n  \"module: consul_acl\": \"lib/ansible/modules/clustering/consul_acl.py\", \n  \"module: consul_kv\": \"lib/ansible/modules/clustering/consul_kv.py\", \n  \"module: consul_session\": \"lib/ansible/modules/clustering/consul_session.py\", \n  \"module: copy\": \"lib/ansible/modules/files/copy.py\", \n  \"module: cpanm\": \"lib/ansible/modules/packaging/language/cpanm.py\", \n  \"module: cron\": \"lib/ansible/modules/system/cron.py\", \n  \"module: cronvar\": \"lib/ansible/modules/system/cronvar.py\", \n  \"module: crypttab\": \"lib/ansible/modules/system/crypttab.py\", \n  \"module: cs_account\": \"lib/ansible/modules/cloud/cloudstack/cs_account.py\", \n  \"module: cs_affinitygroup\": \"lib/ansible/modules/cloud/cloudstack/cs_affinitygroup.py\", \n  \"module: cs_cluster\": \"lib/ansible/modules/cloud/cloudstack/cs_cluster.py\", \n  \"module: cs_configuration\": \"lib/ansible/modules/cloud/cloudstack/cs_configuration.py\", \n  \"module: cs_domain\": \"lib/ansible/modules/cloud/cloudstack/cs_domain.py\", \n  \"module: cs_facts\": \"lib/ansible/modules/cloud/cloudstack/cs_facts.py\", \n  \"module: cs_firewall\": \"lib/ansible/modules/cloud/cloudstack/cs_firewall.py\", \n  \"module: cs_host\": \"lib/ansible/modules/cloud/cloudstack/cs_host.py\", \n  \"module: cs_instance\": \"lib/ansible/modules/cloud/cloudstack/cs_instance.py\", \n  \"module: cs_instance_facts\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_facts.py\", \n  \"module: cs_instance_nic\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_nic.py\", \n  \"module: cs_instance_nic_secondaryip\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_nic_secondaryip.py\", \n  \"module: cs_instancegroup\": \"lib/ansible/modules/cloud/cloudstack/cs_instancegroup.py\", \n  \"module: cs_ip_address\": \"lib/ansible/modules/cloud/cloudstack/cs_ip_address.py\", \n  \"module: cs_iso\": \"lib/ansible/modules/cloud/cloudstack/cs_iso.py\", \n  \"module: cs_loadbalancer_rule\": \"lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule.py\", \n  \"module: cs_loadbalancer_rule_member\": \"lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule_member.py\", \n  \"module: cs_network\": \"lib/ansible/modules/cloud/cloudstack/cs_network.py\", \n  \"module: cs_network_acl\": \"lib/ansible/modules/cloud/cloudstack/cs_network_acl.py\", \n  \"module: cs_network_acl_rule\": \"lib/ansible/modules/cloud/cloudstack/cs_network_acl_rule.py\", \n  \"module: cs_nic\": \"lib/ansible/modules/cloud/cloudstack/_cs_nic.py\", \n  \"module: cs_pod\": \"lib/ansible/modules/cloud/cloudstack/cs_pod.py\", \n  \"module: cs_portforward\": \"lib/ansible/modules/cloud/cloudstack/cs_portforward.py\", \n  \"module: cs_project\": \"lib/ansible/modules/cloud/cloudstack/cs_project.py\", \n  \"module: cs_region\": \"lib/ansible/modules/cloud/cloudstack/cs_region.py\", \n  \"module: cs_resourcelimit\": \"lib/ansible/modules/cloud/cloudstack/cs_resourcelimit.py\", \n  \"module: cs_role\": \"lib/ansible/modules/cloud/cloudstack/cs_role.py\", \n  \"module: cs_router\": \"lib/ansible/modules/cloud/cloudstack/cs_router.py\", \n  \"module: cs_securitygroup\": \"lib/ansible/modules/cloud/cloudstack/cs_securitygroup.py\", \n  \"module: cs_securitygroup_rule\": \"lib/ansible/modules/cloud/cloudstack/cs_securitygroup_rule.py\", \n  \"module: cs_snapshot_policy\": \"lib/ansible/modules/cloud/cloudstack/cs_snapshot_policy.py\", \n  \"module: cs_sshkeypair\": \"lib/ansible/modules/cloud/cloudstack/cs_sshkeypair.py\", \n  \"module: cs_staticnat\": \"lib/ansible/modules/cloud/cloudstack/cs_staticnat.py\", \n  \"module: cs_storage_pool\": \"lib/ansible/modules/cloud/cloudstack/cs_storage_pool.py\", \n  \"module: cs_template\": \"lib/ansible/modules/cloud/cloudstack/cs_template.py\", \n  \"module: cs_user\": \"lib/ansible/modules/cloud/cloudstack/cs_user.py\", \n  \"module: cs_vmsnapshot\": \"lib/ansible/modules/cloud/cloudstack/cs_vmsnapshot.py\", \n  \"module: cs_volume\": \"lib/ansible/modules/cloud/cloudstack/cs_volume.py\", \n  \"module: cs_vpc\": \"lib/ansible/modules/cloud/cloudstack/cs_vpc.py\", \n  \"module: cs_vpn_gateway\": \"lib/ansible/modules/cloud/cloudstack/cs_vpn_gateway.py\", \n  \"module: cs_zone\": \"lib/ansible/modules/cloud/cloudstack/cs_zone.py\", \n  \"module: cs_zone_facts\": \"lib/ansible/modules/cloud/cloudstack/cs_zone_facts.py\", \n  \"module: cv_server_provision\": \"lib/ansible/modules/network/cloudvision/cv_server_provision.py\", \n  \"module: cyberark_authentication\": \"lib/ansible/modules/identity/cyberark/cyberark_authentication.py\", \n  \"module: cyberark_user\": \"lib/ansible/modules/identity/cyberark/cyberark_user.py\", \n  \"module: data_pipeline\": \"lib/ansible/modules/cloud/amazon/data_pipeline.py\", \n  \"module: datadog_event\": \"lib/ansible/modules/monitoring/datadog_event.py\", \n  \"module: datadog_monitor\": \"lib/ansible/modules/monitoring/datadog_monitor.py\", \n  \"module: dconf\": \"lib/ansible/modules/system/dconf.py\", \n  \"module: debconf\": \"lib/ansible/modules/system/debconf.py\", \n  \"module: debug\": \"lib/ansible/modules/utilities/logic/debug.py\", \n  \"module: dellos10_command\": \"lib/ansible/modules/network/dellos10/dellos10_command.py\", \n  \"module: dellos10_config\": \"lib/ansible/modules/network/dellos10/dellos10_config.py\", \n  \"module: dellos10_facts\": \"lib/ansible/modules/network/dellos10/dellos10_facts.py\", \n  \"module: dellos6_command\": \"lib/ansible/modules/network/dellos6/dellos6_command.py\", \n  \"module: dellos6_config\": \"lib/ansible/modules/network/dellos6/dellos6_config.py\", \n  \"module: dellos6_facts\": [\n    \"lib/ansible/modules/network/dellos6/dellos6_facts.py\"\n  ], \n  \"module: dellos9_command\": \"lib/ansible/modules/network/dellos9/dellos9_command.py\", \n  \"module: dellos9_config\": \"lib/ansible/modules/network/dellos9/dellos9_config.py\", \n  \"module: dellos9_facts\": \"lib/ansible/modules/network/dellos9/dellos9_facts.py\", \n  \"module: deploy_helper\": \"lib/ansible/modules/web_infrastructure/deploy_helper.py\", \n  \"module: digital_ocean\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean.py\", \n  \"module: digital_ocean_block_storage\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_block_storage.py\", \n  \"module: digital_ocean_domain\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_domain.py\", \n  \"module: digital_ocean_floating_ip\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_floating_ip.py\", \n  \"module: digital_ocean_sshkey\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey.py\", \n  \"module: digital_ocean_sshkey_facts\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey_facts.py\", \n  \"module: digital_ocean_tag\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_tag.py\", \n  \"module: dimensiondata_network\": \"lib/ansible/modules/cloud/dimensiondata/dimensiondata_network.py\", \n  \"module: django_manage\": \"lib/ansible/modules/web_infrastructure/django_manage.py\", \n  \"module: dladm_etherstub\": \"lib/ansible/modules/network/illumos/dladm_etherstub.py\", \n  \"module: dladm_iptun\": \"lib/ansible/modules/network/illumos/dladm_iptun.py\", \n  \"module: dladm_linkprop\": \"lib/ansible/modules/network/illumos/dladm_linkprop.py\", \n  \"module: dladm_vlan\": \"lib/ansible/modules/network/illumos/dladm_vlan.py\", \n  \"module: dladm_vnic\": \"lib/ansible/modules/network/illumos/dladm_vnic.py\", \n  \"module: dnf\": \"lib/ansible/modules/packaging/os/dnf.py\", \n  \"module: dnsimple\": \"lib/ansible/modules/net_tools/dnsimple.py\", \n  \"module: dnsmadeeasy\": \"lib/ansible/modules/net_tools/dnsmadeeasy.py\", \n  \"module: docker\": \"lib/ansible/modules/cloud/docker/_docker.py\", \n  \"module: docker_container\": [\n    \"lib/ansible/modules/cloud/docker/docker_container.py\"\n  ], \n  \"module: docker_image\": \"lib/ansible/modules/cloud/docker/docker_image.py\", \n  \"module: docker_image_facts\": \"lib/ansible/modules/cloud/docker/docker_image_facts.py\", \n  \"module: docker_login\": \"lib/ansible/modules/cloud/docker/docker_login.py\", \n  \"module: docker_network\": \"lib/ansible/modules/cloud/docker/docker_network.py\", \n  \"module: docker_secret\": \"lib/ansible/modules/cloud/docker/docker_secret.py\", \n  \"module: docker_service\": \"lib/ansible/modules/cloud/docker/docker_service.py\", \n  \"module: docker_volume\": \"lib/ansible/modules/cloud/docker/docker_volume.py\", \n  \"module: dpkg_selections\": \"lib/ansible/modules/packaging/os/dpkg_selections.py\", \n  \"module: dynamodb_table\": \"lib/ansible/modules/cloud/amazon/dynamodb_table.py\", \n  \"module: dynamodb_ttl\": \"lib/ansible/modules/cloud/amazon/dynamodb_ttl.py\", \n  \"module: easy_install\": \"lib/ansible/modules/packaging/language/easy_install.py\", \n  \"module: ec2\": \"lib/ansible/modules/cloud/amazon/ec2.py\", \n  \"module: ec2_ami\": \"lib/ansible/modules/cloud/amazon/ec2_ami.py\", \n  \"module: ec2_ami_copy\": \"lib/ansible/modules/cloud/amazon/ec2_ami_copy.py\", \n  \"module: ec2_ami_facts\": \"lib/ansible/modules/cloud/amazon/ec2_ami_facts.py\", \n  \"module: ec2_ami_find\": \"lib/ansible/modules/cloud/amazon/ec2_ami_find.py\", \n  \"module: ec2_ami_search\": \"lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\", \n  \"module: ec2_asg\": \"lib/ansible/modules/cloud/amazon/ec2_asg.py\", \n  \"module: ec2_asg_facts\": \"lib/ansible/modules/cloud/amazon/ec2_asg_facts.py\", \n  \"module: ec2_customer_gateway\": \"lib/ansible/modules/cloud/amazon/ec2_customer_gateway.py\", \n  \"module: ec2_eip\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_eip.py\"\n  ], \n  \"module: ec2_elb\": \"lib/ansible/modules/cloud/amazon/ec2_elb.py\", \n  \"module: ec2_elb_facts\": \"lib/ansible/modules/cloud/amazon/ec2_elb_facts.py\", \n  \"module: ec2_elb_lb\": \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\", \n  \"module: ec2_eni\": \"lib/ansible/modules/cloud/amazon/ec2_eni.py\", \n  \"module: ec2_eni_facts\": \"lib/ansible/modules/cloud/amazon/ec2_eni_facts.py\", \n  \"module: ec2_facts\": \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\", \n  \"module: ec2_group\": \"lib/ansible/modules/cloud/amazon/ec2_group.py\", \n  \"module: ec2_group_facts\": \"lib/ansible/modules/cloud/amazon/ec2_group_facts.py\", \n  \"module: ec2_instance_facts\": \"lib/ansible/modules/cloud/amazon/ec2_instance_facts.py\", \n  \"module: ec2_key\": \"lib/ansible/modules/cloud/amazon/ec2_key.py\", \n  \"module: ec2_lc\": \"lib/ansible/modules/cloud/amazon/ec2_lc.py\", \n  \"module: ec2_lc_facts\": \"lib/ansible/modules/cloud/amazon/ec2_lc_facts.py\", \n  \"module: ec2_lc_find\": \"lib/ansible/modules/cloud/amazon/ec2_lc_find.py\", \n  \"module: ec2_metadata_facts\": \"lib/ansible/modules/cloud/amazon/ec2_metadata_facts.py\", \n  \"module: ec2_metric_alarm\": \"lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py\", \n  \"module: ec2_remote_facts\": \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\", \n  \"module: ec2_scaling_policy\": \"lib/ansible/modules/cloud/amazon/ec2_scaling_policy.py\", \n  \"module: ec2_snapshot\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot.py\", \n  \"module: ec2_snapshot_copy\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot_copy.py\", \n  \"module: ec2_snapshot_facts\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot_facts.py\", \n  \"module: ec2_tag\": \"lib/ansible/modules/cloud/amazon/ec2_tag.py\", \n  \"module: ec2_vol\": \"lib/ansible/modules/cloud/amazon/ec2_vol.py\", \n  \"module: ec2_vol_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vol_facts.py\", \n  \"module: ec2_vpc\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n  \"module: ec2_vpc_dhcp_option\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option.py\", \n  \"module: ec2_vpc_dhcp_option_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option_facts.py\", \n  \"module: ec2_vpc_dhcp_options\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\", \n  \"module: ec2_vpc_dhcp_options_facts\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\", \n  \"module: ec2_vpc_endpoint\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint.py\", \n  \"module: ec2_vpc_endpoint_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint_facts.py\", \n  \"module: ec2_vpc_igw\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw.py\", \n  \"module: ec2_vpc_igw_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw_facts.py\", \n  \"module: ec2_vpc_nacl\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl.py\", \n  \"module: ec2_vpc_nacl_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl_facts.py\", \n  \"module: ec2_vpc_nat_gateway\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway.py\", \n  \"module: ec2_vpc_nat_gateway_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway_facts.py\", \n  \"module: ec2_vpc_net\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_net.py\", \n  \"module: ec2_vpc_net_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_net_facts.py\", \n  \"module: ec2_vpc_peer\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peer.py\", \n  \"module: ec2_vpc_peering_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peering_facts.py\", \n  \"module: ec2_vpc_route_table\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\", \n  \"module: ec2_vpc_route_table_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table_facts.py\", \n  \"module: ec2_vpc_subnet\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet.py\", \n  \"module: ec2_vpc_subnet_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet_facts.py\", \n  \"module: ec2_vpc_vgw\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw.py\", \n  \"module: ec2_vpc_vgw_facts\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw_facts.py\", \n  \"module: ec2_vpc_vpn\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vpn.py\", \n  \"module: ec2_win_password\": \"lib/ansible/modules/cloud/amazon/ec2_win_password.py\", \n  \"module: ecs_attribute\": \"lib/ansible/modules/cloud/amazon/ecs_attribute.py\", \n  \"module: ecs_cluster\": \"lib/ansible/modules/cloud/amazon/ecs_cluster.py\", \n  \"module: ecs_ecr\": \"lib/ansible/modules/cloud/amazon/ecs_ecr.py\", \n  \"module: ecs_service\": \"lib/ansible/modules/cloud/amazon/ecs_service.py\", \n  \"module: ecs_service_facts\": \"lib/ansible/modules/cloud/amazon/ecs_service_facts.py\", \n  \"module: ecs_task\": \"lib/ansible/modules/cloud/amazon/ecs_task.py\", \n  \"module: ecs_taskdefinition\": \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py\", \n  \"module: ecs_taskdefinition_facts\": \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition_facts.py\", \n  \"module: efs\": \"lib/ansible/modules/cloud/amazon/efs.py\", \n  \"module: efs_facts\": \"lib/ansible/modules/cloud/amazon/efs_facts.py\", \n  \"module: ejabberd_user\": \"lib/ansible/modules/web_infrastructure/ejabberd_user.py\", \n  \"module: elasticache\": \"lib/ansible/modules/cloud/amazon/elasticache.py\", \n  \"module: elasticache_parameter_group\": \"lib/ansible/modules/cloud/amazon/elasticache_parameter_group.py\", \n  \"module: elasticache_snapshot\": \"lib/ansible/modules/cloud/amazon/elasticache_snapshot.py\", \n  \"module: elasticache_subnet_group\": \"lib/ansible/modules/cloud/amazon/elasticache_subnet_group.py\", \n  \"module: elasticsearch_plugin\": \"lib/ansible/modules/database/misc/elasticsearch_plugin.py\", \n  \"module: elb_application_lb\": \"lib/ansible/modules/cloud/amazon/elb_application_lb.py\", \n  \"module: elb_application_lb_facts\": \"lib/ansible/modules/cloud/amazon/elb_application_lb_facts.py\", \n  \"module: elb_classic_lb\": \"lib/ansible/modules/cloud/amazon/elb_classic_lb.py\", \n  \"module: elb_classic_lb_facts\": \"lib/ansible/modules/cloud/amazon/elb_classic_lb_facts.py\", \n  \"module: elb_instance\": \"lib/ansible/modules/cloud/amazon/elb_instance.py\", \n  \"module: elb_target_group\": \"lib/ansible/modules/cloud/amazon/elb_target_group.py\", \n  \"module: elb_target_group_facts\": \"lib/ansible/modules/cloud/amazon/elb_target_group_facts.py\", \n  \"module: eos_banner\": \"lib/ansible/modules/network/eos/eos_banner.py\", \n  \"module: eos_command\": \"lib/ansible/modules/network/eos/eos_command.py\", \n  \"module: eos_config\": \"lib/ansible/modules/network/eos/eos_config.py\", \n  \"module: eos_eapi\": \"lib/ansible/modules/network/eos/eos_eapi.py\", \n  \"module: eos_facts\": \"lib/ansible/modules/network/eos/eos_facts.py\", \n  \"module: eos_logging\": \"lib/ansible/modules/network/eos/eos_logging.py\", \n  \"module: eos_system\": \"lib/ansible/modules/network/eos/eos_system.py\", \n  \"module: eos_user\": \"lib/ansible/modules/network/eos/eos_user.py\", \n  \"module: eos_vlan\": \"lib/ansible/modules/network/eos/eos_vlan.py\", \n  \"module: eos_vrf\": \"lib/ansible/modules/network/eos/eos_vrf.py\", \n  \"module: execute_lambda\": \"lib/ansible/modules/cloud/amazon/execute_lambda.py\", \n  \"module: exo_dns_domain\": \"lib/ansible/modules/net_tools/exoscale/exo_dns_domain.py\", \n  \"module: exo_dns_record\": \"lib/ansible/modules/net_tools/exoscale/exo_dns_record.py\", \n  \"module: expect\": \"lib/ansible/modules/commands/expect.py\", \n  \"module: facter\": \"lib/ansible/modules/system/facter.py\", \n  \"module: facts.py\": [], \n  \"module: fail\": \"lib/ansible/modules/utilities/logic/fail.py\", \n  \"module: fetch\": \"lib/ansible/modules/files/fetch.py\", \n  \"module: file\": \"lib/ansible/modules/files/file.py\", \n  \"module: filesystem\": \"lib/ansible/modules/system/filesystem.py\", \n  \"module: find\": \"lib/ansible/modules/files/find.py\", \n  \"module: firewalld\": \"lib/ansible/modules/system/firewalld.py\", \n  \"module: flowadm\": \"lib/ansible/modules/network/illumos/flowadm.py\", \n  \"module: flowdock\": \"lib/ansible/modules/notification/flowdock.py\", \n  \"module: foreman\": \"lib/ansible/modules/remote_management/foreman/foreman.py\", \n  \"module: fortios_address\": \"lib/ansible/modules/network/fortios/fortios_address.py\", \n  \"module: fortios_config\": \"lib/ansible/modules/network/fortios/fortios_config.py\", \n  \"module: fortios_ipv4_policy\": \"lib/ansible/modules/network/fortios/fortios_ipv4_policy.py\", \n  \"module: gc_storage\": \"lib/ansible/modules/cloud/google/gc_storage.py\", \n  \"module: gcdns_record\": \"lib/ansible/modules/cloud/google/gcdns_record.py\", \n  \"module: gcdns_zone\": \"lib/ansible/modules/cloud/google/gcdns_zone.py\", \n  \"module: gce\": \"lib/ansible/modules/cloud/google/gce.py\", \n  \"module: gce_eip\": \"lib/ansible/modules/cloud/google/gce_eip.py\", \n  \"module: gce_img\": \"lib/ansible/modules/cloud/google/gce_img.py\", \n  \"module: gce_instance_template\": \"lib/ansible/modules/cloud/google/gce_instance_template.py\", \n  \"module: gce_labels\": \"lib/ansible/modules/cloud/google/gce_labels.py\", \n  \"module: gce_lb\": \"lib/ansible/modules/cloud/google/gce_lb.py\", \n  \"module: gce_mig\": \"lib/ansible/modules/cloud/google/gce_mig.py\", \n  \"module: gce_net\": \"lib/ansible/modules/cloud/google/gce_net.py\", \n  \"module: gce_pd\": \"lib/ansible/modules/cloud/google/gce_pd.py\", \n  \"module: gce_snapshot\": \"lib/ansible/modules/cloud/google/gce_snapshot.py\", \n  \"module: gce_tag\": \"lib/ansible/modules/cloud/google/gce_tag.py\", \n  \"module: gconftool2\": \"lib/ansible/modules/system/gconftool2.py\", \n  \"module: gcp_backend_service\": \"lib/ansible/modules/cloud/google/gcp_backend_service.py\", \n  \"module: gcp_forwarding_rule\": \"lib/ansible/modules/cloud/google/gcp_forwarding_rule.py\", \n  \"module: gcp_healthcheck\": \"lib/ansible/modules/cloud/google/gcp_healthcheck.py\", \n  \"module: gcp_target_proxy\": \"lib/ansible/modules/cloud/google/gcp_target_proxy.py\", \n  \"module: gcp_url_map\": \"lib/ansible/modules/cloud/google/gcp_url_map.py\", \n  \"module: gcpubsub\": \"lib/ansible/modules/cloud/google/gcpubsub.py\", \n  \"module: gcpubsub_facts\": \"lib/ansible/modules/cloud/google/gcpubsub_facts.py\", \n  \"module: gcspanner\": \"lib/ansible/modules/cloud/google/gcspanner.py\", \n  \"module: gem\": \"lib/ansible/modules/packaging/language/gem.py\", \n  \"module: get_url\": \"lib/ansible/modules/net_tools/basics/get_url.py\", \n  \"module: getent\": \"lib/ansible/modules/system/getent.py\", \n  \"module: git\": \"lib/ansible/modules/source_control/git.py\", \n  \"module: git_config\": \"lib/ansible/modules/source_control/git_config.py\", \n  \"module: github_deploy_key\": \"lib/ansible/modules/source_control/github_deploy_key.py\", \n  \"module: github_hooks\": \"lib/ansible/modules/source_control/github_hooks.py\", \n  \"module: github_issue\": \"lib/ansible/modules/source_control/github_issue.py\", \n  \"module: github_key\": \"lib/ansible/modules/source_control/github_key.py\", \n  \"module: github_release\": \"lib/ansible/modules/source_control/github_release.py\", \n  \"module: gitlab_group\": \"lib/ansible/modules/source_control/gitlab_group.py\", \n  \"module: gitlab_project\": \"lib/ansible/modules/source_control/gitlab_project.py\", \n  \"module: gitlab_user\": \"lib/ansible/modules/source_control/gitlab_user.py\", \n  \"module: gluster_volume\": \"lib/ansible/modules/system/gluster_volume.py\", \n  \"module: group\": \"lib/ansible/modules/system/group.py\", \n  \"module: group_by\": \"lib/ansible/modules/inventory/group_by.py\", \n  \"module: grove\": \"lib/ansible/modules/notification/grove.py\", \n  \"module: gunicorn\": \"lib/ansible/modules/web_infrastructure/gunicorn.py\", \n  \"module: hall\": \"lib/ansible/modules/notification/hall.py\", \n  \"module: haproxy\": \"lib/ansible/modules/net_tools/haproxy.py\", \n  \"module: helm\": \"lib/ansible/modules/cloud/misc/helm.py\", \n  \"module: hg\": \"lib/ansible/modules/source_control/hg.py\", \n  \"module: hipchat\": \"lib/ansible/modules/notification/hipchat.py\", \n  \"module: homebrew\": \"lib/ansible/modules/packaging/os/homebrew.py\", \n  \"module: homebrew_cask\": \"lib/ansible/modules/packaging/os/homebrew_cask.py\", \n  \"module: homebrew_tap\": \"lib/ansible/modules/packaging/os/homebrew_tap.py\", \n  \"module: honeybadger_deployment\": \"lib/ansible/modules/monitoring/honeybadger_deployment.py\", \n  \"module: hostname\": \"lib/ansible/modules/system/hostname.py\", \n  \"module: hpilo_boot\": \"lib/ansible/modules/remote_management/hpilo/hpilo_boot.py\", \n  \"module: hpilo_facts\": \"lib/ansible/modules/remote_management/hpilo/hpilo_facts.py\", \n  \"module: hponcfg\": \"lib/ansible/modules/remote_management/hpilo/hponcfg.py\", \n  \"module: htpasswd\": \"lib/ansible/modules/web_infrastructure/htpasswd.py\", \n  \"module: iam\": \"lib/ansible/modules/cloud/amazon/iam.py\", \n  \"module: iam_cert\": \"lib/ansible/modules/cloud/amazon/iam_cert.py\", \n  \"module: iam_cert_facts\": \"lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\", \n  \"module: iam_group\": \"lib/ansible/modules/cloud/amazon/iam_group.py\", \n  \"module: iam_managed_policy\": \"lib/ansible/modules/cloud/amazon/iam_managed_policy.py\", \n  \"module: iam_mfa_device_facts\": \"lib/ansible/modules/cloud/amazon/iam_mfa_device_facts.py\", \n  \"module: iam_policy\": \"lib/ansible/modules/cloud/amazon/iam_policy.py\", \n  \"module: iam_role\": \"lib/ansible/modules/cloud/amazon/iam_role.py\", \n  \"module: iam_server_certificate_facts\": \"lib/ansible/modules/cloud/amazon/iam_server_certificate_facts.py\", \n  \"module: icinga2_feature\": \"lib/ansible/modules/monitoring/icinga2_feature.py\", \n  \"module: imc_rest\": \"lib/ansible/modules/remote_management/imc/imc_rest.py\", \n  \"module: imgadm\": \"lib/ansible/modules/cloud/smartos/imgadm.py\", \n  \"module: import_playbook\": \"lib/ansible/modules/utilities/logic/import_playbook.py\", \n  \"module: import_role\": \"lib/ansible/modules/utilities/logic/import_role.py\", \n  \"module: import_tasks\": \"lib/ansible/modules/utilities/logic/import_tasks.py\", \n  \"module: include\": \"lib/ansible/modules/utilities/logic/_include.py\", \n  \"module: include_role\": \"lib/ansible/modules/utilities/logic/include_role.py\", \n  \"module: include_tasks\": \"lib/ansible/modules/utilities/logic/include_tasks.py\", \n  \"module: include_vars\": \"lib/ansible/modules/utilities/logic/include_vars.py\", \n  \"module: infini_export\": \"lib/ansible/modules/storage/infinidat/infini_export.py\", \n  \"module: infini_export_client\": \"lib/ansible/modules/storage/infinidat/infini_export_client.py\", \n  \"module: infini_fs\": \"lib/ansible/modules/storage/infinidat/infini_fs.py\", \n  \"module: infini_host\": \"lib/ansible/modules/storage/infinidat/infini_host.py\", \n  \"module: infini_pool\": \"lib/ansible/modules/storage/infinidat/infini_pool.py\", \n  \"module: infini_vol\": \"lib/ansible/modules/storage/infinidat/infini_vol.py\", \n  \"module: infinity\": \"lib/ansible/modules/net_tools/infinity/infinity.py\", \n  \"module: influxdb_database\": \"lib/ansible/modules/database/influxdb/influxdb_database.py\", \n  \"module: influxdb_retention_policy\": \"lib/ansible/modules/database/influxdb/influxdb_retention_policy.py\", \n  \"module: ini_file\": \"lib/ansible/modules/files/ini_file.py\", \n  \"module: interfaces_file\": \"lib/ansible/modules/system/interfaces_file.py\", \n  \"module: ios_banner\": \"lib/ansible/modules/network/ios/ios_banner.py\", \n  \"module: ios_command\": \"lib/ansible/modules/network/ios/ios_command.py\", \n  \"module: ios_config\": \"lib/ansible/modules/network/ios/ios_config.py\", \n  \"module: ios_facts\": \"lib/ansible/modules/network/ios/ios_facts.py\", \n  \"module: ios_interface\": \"lib/ansible/modules/network/ios/ios_interface.py\", \n  \"module: ios_logging\": \"lib/ansible/modules/network/ios/ios_logging.py\", \n  \"module: ios_ping\": \"lib/ansible/modules/network/ios/ios_ping.py\", \n  \"module: ios_static_route\": \"lib/ansible/modules/network/ios/ios_static_route.py\", \n  \"module: ios_system\": [\n    \"lib/ansible/modules/network/ios/ios_system.py\"\n  ], \n  \"module: ios_user\": \"lib/ansible/modules/network/ios/ios_user.py\", \n  \"module: ios_vrf\": \"lib/ansible/modules/network/ios/ios_vrf.py\", \n  \"module: iosxr_banner\": \"lib/ansible/modules/network/iosxr/iosxr_banner.py\", \n  \"module: iosxr_command\": \"lib/ansible/modules/network/iosxr/iosxr_command.py\", \n  \"module: iosxr_config\": \"lib/ansible/modules/network/iosxr/iosxr_config.py\", \n  \"module: iosxr_facts\": \"lib/ansible/modules/network/iosxr/iosxr_facts.py\", \n  \"module: iosxr_interface\": \"lib/ansible/modules/network/iosxr/iosxr_interface.py\", \n  \"module: iosxr_logging\": \"lib/ansible/modules/network/iosxr/iosxr_logging.py\", \n  \"module: iosxr_netconf\": \"lib/ansible/modules/network/iosxr/iosxr_netconf.py\", \n  \"module: iosxr_system\": \"lib/ansible/modules/network/iosxr/iosxr_system.py\", \n  \"module: iosxr_user\": \"lib/ansible/modules/network/iosxr/iosxr_user.py\", \n  \"module: ipa_dnsrecord\": \"lib/ansible/modules/identity/ipa/ipa_dnsrecord.py\", \n  \"module: ipa_dnszone\": \"lib/ansible/modules/identity/ipa/ipa_dnszone.py\", \n  \"module: ipa_group\": \"lib/ansible/modules/identity/ipa/ipa_group.py\", \n  \"module: ipa_hbacrule\": \"lib/ansible/modules/identity/ipa/ipa_hbacrule.py\", \n  \"module: ipa_host\": \"lib/ansible/modules/identity/ipa/ipa_host.py\", \n  \"module: ipa_hostgroup\": \"lib/ansible/modules/identity/ipa/ipa_hostgroup.py\", \n  \"module: ipa_role\": \"lib/ansible/modules/identity/ipa/ipa_role.py\", \n  \"module: ipa_sudocmd\": \"lib/ansible/modules/identity/ipa/ipa_sudocmd.py\", \n  \"module: ipa_sudocmdgroup\": \"lib/ansible/modules/identity/ipa/ipa_sudocmdgroup.py\", \n  \"module: ipa_sudorule\": \"lib/ansible/modules/identity/ipa/ipa_sudorule.py\", \n  \"module: ipa_user\": \"lib/ansible/modules/identity/ipa/ipa_user.py\", \n  \"module: ipadm_addr\": \"lib/ansible/modules/network/illumos/ipadm_addr.py\", \n  \"module: ipadm_addrprop\": \"lib/ansible/modules/network/illumos/ipadm_addrprop.py\", \n  \"module: ipadm_if\": \"lib/ansible/modules/network/illumos/ipadm_if.py\", \n  \"module: ipadm_ifprop\": \"lib/ansible/modules/network/illumos/ipadm_ifprop.py\", \n  \"module: ipadm_prop\": \"lib/ansible/modules/network/illumos/ipadm_prop.py\", \n  \"module: ipify_facts\": \"lib/ansible/modules/net_tools/ipify_facts.py\", \n  \"module: ipinfoio_facts\": \"lib/ansible/modules/net_tools/ipinfoio_facts.py\", \n  \"module: ipmi_boot\": \"lib/ansible/modules/remote_management/ipmi/ipmi_boot.py\", \n  \"module: ipmi_power\": \"lib/ansible/modules/remote_management/ipmi/ipmi_power.py\", \n  \"module: iptables\": \"lib/ansible/modules/system/iptables.py\", \n  \"module: irc\": \"lib/ansible/modules/notification/irc.py\", \n  \"module: ironware_command\": \"lib/ansible/modules/network/ironware/ironware_command.py\", \n  \"module: iso_extract\": \"lib/ansible/modules/files/iso_extract.py\", \n  \"module: jabber\": \"lib/ansible/modules/notification/jabber.py\", \n  \"module: java_cert\": \"lib/ansible/modules/system/java_cert.py\", \n  \"module: jboss\": \"lib/ansible/modules/web_infrastructure/jboss.py\", \n  \"module: jenkins_job\": \"lib/ansible/modules/web_infrastructure/jenkins_job.py\", \n  \"module: jenkins_plugin\": \"lib/ansible/modules/web_infrastructure/jenkins_plugin.py\", \n  \"module: jenkins_script\": \"lib/ansible/modules/web_infrastructure/jenkins_script.py\", \n  \"module: jira\": \"lib/ansible/modules/web_infrastructure/jira.py\", \n  \"module: junos_banner\": \"lib/ansible/modules/network/junos/junos_banner.py\", \n  \"module: junos_command\": \"lib/ansible/modules/network/junos/junos_command.py\", \n  \"module: junos_config\": \"lib/ansible/modules/network/junos/junos_config.py\", \n  \"module: junos_facts\": \"lib/ansible/modules/network/junos/junos_facts.py\", \n  \"module: junos_interface\": \"lib/ansible/modules/network/junos/junos_interface.py\", \n  \"module: junos_l3_interface\": \"lib/ansible/modules/network/junos/junos_l3_interface.py\", \n  \"module: junos_linkagg\": \"lib/ansible/modules/network/junos/junos_linkagg.py\", \n  \"module: junos_lldp\": \"lib/ansible/modules/network/junos/junos_lldp.py\", \n  \"module: junos_lldp_interface\": \"lib/ansible/modules/network/junos/junos_lldp_interface.py\", \n  \"module: junos_logging\": \"lib/ansible/modules/network/junos/junos_logging.py\", \n  \"module: junos_netconf\": \"lib/ansible/modules/network/junos/junos_netconf.py\", \n  \"module: junos_package\": \"lib/ansible/modules/network/junos/junos_package.py\", \n  \"module: junos_rpc\": \"lib/ansible/modules/network/junos/junos_rpc.py\", \n  \"module: junos_static_route\": \"lib/ansible/modules/network/junos/junos_static_route.py\", \n  \"module: junos_system\": \"lib/ansible/modules/network/junos/junos_system.py\", \n  \"module: junos_user\": \"lib/ansible/modules/network/junos/junos_user.py\", \n  \"module: junos_vlan\": \"lib/ansible/modules/network/junos/junos_vlan.py\", \n  \"module: junos_vrf\": \"lib/ansible/modules/network/junos/junos_vrf.py\", \n  \"module: katello\": \"lib/ansible/modules/remote_management/foreman/katello.py\", \n  \"module: kernel_blacklist\": \"lib/ansible/modules/system/kernel_blacklist.py\", \n  \"module: kibana_plugin\": \"lib/ansible/modules/database/misc/kibana_plugin.py\", \n  \"module: kinesis_stream\": \"lib/ansible/modules/cloud/amazon/kinesis_stream.py\", \n  \"module: known_hosts\": \"lib/ansible/modules/system/known_hosts.py\", \n  \"module: kubernetes\": \"lib/ansible/modules/clustering/kubernetes.py\", \n  \"module: lambda\": \"lib/ansible/modules/cloud/amazon/lambda.py\", \n  \"module: lambda_alias\": \"lib/ansible/modules/cloud/amazon/lambda_alias.py\", \n  \"module: lambda_event\": \"lib/ansible/modules/cloud/amazon/lambda_event.py\", \n  \"module: lambda_facts\": \"lib/ansible/modules/cloud/amazon/lambda_facts.py\", \n  \"module: lambda_policy\": \"lib/ansible/modules/cloud/amazon/lambda_policy.py\", \n  \"module: layman\": \"lib/ansible/modules/packaging/os/layman.py\", \n  \"module: ldap_attr\": \"lib/ansible/modules/net_tools/ldap/ldap_attr.py\", \n  \"module: ldap_entry\": \"lib/ansible/modules/net_tools/ldap/ldap_entry.py\", \n  \"module: letsencrypt\": \"lib/ansible/modules/web_infrastructure/letsencrypt.py\", \n  \"module: librato_annotation\": \"lib/ansible/modules/monitoring/librato_annotation.py\", \n  \"module: lightsail\": \"lib/ansible/modules/cloud/amazon/lightsail.py\", \n  \"module: lineinfile\": \"lib/ansible/modules/files/lineinfile.py\", \n  \"module: linode\": \"lib/ansible/modules/cloud/linode/linode.py\", \n  \"module: lldp\": \"lib/ansible/modules/net_tools/lldp.py\", \n  \"module: locale_gen\": \"lib/ansible/modules/system/locale_gen.py\", \n  \"module: logentries\": \"lib/ansible/modules/monitoring/logentries.py\", \n  \"module: logicmonitor\": \"lib/ansible/modules/monitoring/logicmonitor.py\", \n  \"module: logicmonitor_facts\": \"lib/ansible/modules/monitoring/logicmonitor_facts.py\", \n  \"module: logstash_plugin\": \"lib/ansible/modules/monitoring/logstash_plugin.py\", \n  \"module: lvg\": [\n    \"lib/ansible/modules/system/lvg.py\"\n  ], \n  \"module: lvol\": \"lib/ansible/modules/system/lvol.py\", \n  \"module: lxc_container\": \"lib/ansible/modules/cloud/lxc/lxc_container.py\", \n  \"module: lxd_container\": \"lib/ansible/modules/cloud/lxd/lxd_container.py\", \n  \"module: lxd_profile\": \"lib/ansible/modules/cloud/lxd/lxd_profile.py\", \n  \"module: macports\": \"lib/ansible/modules/packaging/os/macports.py\", \n  \"module: mail\": \"lib/ansible/modules/notification/mail.py\", \n  \"module: make\": \"lib/ansible/modules/system/make.py\", \n  \"module: manageiq_provider\": \"lib/ansible/modules/remote_management/manageiq/manageiq_provider.py\", \n  \"module: manageiq_tags\": \"lib/ansible/modules/remote_management/manageiq/manageiq_tags.py\", \n  \"module: manageiq_user\": \"lib/ansible/modules/remote_management/manageiq/manageiq_user.py\", \n  \"module: mattermost\": \"lib/ansible/modules/notification/mattermost.py\", \n  \"module: maven_artifact\": \"lib/ansible/modules/packaging/language/maven_artifact.py\", \n  \"module: meta\": \"meta\", \n  \"module: mksysb\": \"lib/ansible/modules/system/mksysb.py\", \n  \"module: modprobe\": \"lib/ansible/modules/system/modprobe.py\", \n  \"module: mongodb_parameter\": \"lib/ansible/modules/database/mongodb/mongodb_parameter.py\", \n  \"module: mongodb_user\": \"lib/ansible/modules/database/mongodb/mongodb_user.py\", \n  \"module: monit\": \"lib/ansible/modules/monitoring/monit.py\", \n  \"module: mount\": \"lib/ansible/modules/system/mount.py\", \n  \"module: mqtt\": \"lib/ansible/modules/notification/mqtt.py\", \n  \"module: mssql_db\": \"lib/ansible/modules/database/mssql/mssql_db.py\", \n  \"module: mysql_db\": \"lib/ansible/modules/database/mysql/mysql_db.py\", \n  \"module: mysql_replication\": \"lib/ansible/modules/database/mysql/mysql_replication.py\", \n  \"module: mysql_user\": \"lib/ansible/modules/database/mysql/mysql_user.py\", \n  \"module: mysql_variables\": \"lib/ansible/modules/database/mysql/mysql_variables.py\", \n  \"module: na_cdot_aggregate\": \"lib/ansible/modules/storage/netapp/na_cdot_aggregate.py\", \n  \"module: na_cdot_license\": \"lib/ansible/modules/storage/netapp/na_cdot_license.py\", \n  \"module: na_cdot_lun\": \"lib/ansible/modules/storage/netapp/na_cdot_lun.py\", \n  \"module: na_cdot_qtree\": \"lib/ansible/modules/storage/netapp/na_cdot_qtree.py\", \n  \"module: na_cdot_svm\": \"lib/ansible/modules/storage/netapp/na_cdot_svm.py\", \n  \"module: na_cdot_user\": \"lib/ansible/modules/storage/netapp/na_cdot_user.py\", \n  \"module: na_cdot_user_role\": \"lib/ansible/modules/storage/netapp/na_cdot_user_role.py\", \n  \"module: na_cdot_volume\": \"lib/ansible/modules/storage/netapp/na_cdot_volume.py\", \n  \"module: nagios\": \"lib/ansible/modules/monitoring/nagios.py\", \n  \"module: nclu\": \"lib/ansible/modules/network/cumulus/nclu.py\", \n  \"module: net_banner\": \"lib/ansible/modules/network/system/net_banner.py\", \n  \"module: net_interface\": \"lib/ansible/modules/network/interface/net_interface.py\", \n  \"module: net_l2_interface\": \"lib/ansible/modules/network/layer2/net_l2_interface.py\", \n  \"module: net_l3_interface\": \"lib/ansible/modules/network/layer3/net_l3_interface.py\", \n  \"module: net_linkagg\": \"lib/ansible/modules/network/interface/net_linkagg.py\", \n  \"module: net_lldp\": \"lib/ansible/modules/network/protocol/net_lldp.py\", \n  \"module: net_lldp_interface\": \"lib/ansible/modules/network/interface/net_lldp_interface.py\", \n  \"module: net_logging\": \"lib/ansible/modules/network/system/net_logging.py\", \n  \"module: net_ping\": \"lib/ansible/modules/network/system/net_ping.py\", \n  \"module: net_static_route\": \"lib/ansible/modules/network/routing/net_static_route.py\", \n  \"module: net_system\": \"lib/ansible/modules/network/system/net_system.py\", \n  \"module: net_user\": \"lib/ansible/modules/network/system/net_user.py\", \n  \"module: net_vlan\": \"lib/ansible/modules/network/layer2/net_vlan.py\", \n  \"module: net_vrf\": \"lib/ansible/modules/network/layer3/net_vrf.py\", \n  \"module: netapp_e_amg\": \"lib/ansible/modules/storage/netapp/netapp_e_amg.py\", \n  \"module: netapp_e_amg_role\": \"lib/ansible/modules/storage/netapp/netapp_e_amg_role.py\", \n  \"module: netapp_e_amg_sync\": \"lib/ansible/modules/storage/netapp/netapp_e_amg_sync.py\", \n  \"module: netapp_e_auth\": \"lib/ansible/modules/storage/netapp/netapp_e_auth.py\", \n  \"module: netapp_e_facts\": \"lib/ansible/modules/storage/netapp/netapp_e_facts.py\", \n  \"module: netapp_e_flashcache\": \"lib/ansible/modules/storage/netapp/netapp_e_flashcache.py\", \n  \"module: netapp_e_host\": \"lib/ansible/modules/storage/netapp/netapp_e_host.py\", \n  \"module: netapp_e_hostgroup\": \"lib/ansible/modules/storage/netapp/netapp_e_hostgroup.py\", \n  \"module: netapp_e_lun_mapping\": \"lib/ansible/modules/storage/netapp/netapp_e_lun_mapping.py\", \n  \"module: netapp_e_snapshot_group\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_group.py\", \n  \"module: netapp_e_snapshot_images\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_images.py\", \n  \"module: netapp_e_snapshot_volume\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_volume.py\", \n  \"module: netapp_e_storage_system\": \"lib/ansible/modules/storage/netapp/netapp_e_storage_system.py\", \n  \"module: netapp_e_storagepool\": \"lib/ansible/modules/storage/netapp/netapp_e_storagepool.py\", \n  \"module: netapp_e_volume\": \"lib/ansible/modules/storage/netapp/netapp_e_volume.py\", \n  \"module: netapp_e_volume_copy\": \"lib/ansible/modules/storage/netapp/netapp_e_volume_copy.py\", \n  \"module: netconf_config\": \"lib/ansible/modules/network/netconf/netconf_config.py\", \n  \"module: netscaler\": \"lib/ansible/modules/network/citrix/_netscaler.py\", \n  \"module: netscaler_cs_action\": \"lib/ansible/modules/network/netscaler/netscaler_cs_action.py\", \n  \"module: netscaler_cs_policy\": \"lib/ansible/modules/network/netscaler/netscaler_cs_policy.py\", \n  \"module: netscaler_cs_vserver\": \"lib/ansible/modules/network/netscaler/netscaler_cs_vserver.py\", \n  \"module: netscaler_gslb_service\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_service.py\", \n  \"module: netscaler_gslb_site\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_site.py\", \n  \"module: netscaler_gslb_vserver\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_vserver.py\", \n  \"module: netscaler_lb_monitor\": \"lib/ansible/modules/network/netscaler/netscaler_lb_monitor.py\", \n  \"module: netscaler_lb_vserver\": \"lib/ansible/modules/network/netscaler/netscaler_lb_vserver.py\", \n  \"module: netscaler_save_config\": \"lib/ansible/modules/network/netscaler/netscaler_save_config.py\", \n  \"module: netscaler_server\": \"lib/ansible/modules/network/netscaler/netscaler_server.py\", \n  \"module: netscaler_service\": \"lib/ansible/modules/network/netscaler/netscaler_service.py\", \n  \"module: netscaler_servicegroup\": \"lib/ansible/modules/network/netscaler/netscaler_servicegroup.py\", \n  \"module: netscaler_ssl_certkey\": \"lib/ansible/modules/network/netscaler/netscaler_ssl_certkey.py\", \n  \"module: newrelic_deployment\": \"lib/ansible/modules/monitoring/newrelic_deployment.py\", \n  \"module: nexmo\": \"lib/ansible/modules/notification/nexmo.py\", \n  \"module: nginx_status_facts\": \"lib/ansible/modules/web_infrastructure/nginx_status_facts.py\", \n  \"module: nmcli\": \"lib/ansible/modules/net_tools/nmcli.py\", \n  \"module: nosh\": \"lib/ansible/modules/system/nosh.py\", \n  \"module: npm\": \"lib/ansible/modules/packaging/language/npm.py\", \n  \"module: nsupdate\": \"lib/ansible/modules/net_tools/nsupdate.py\", \n  \"module: nuage_vspk\": \"lib/ansible/modules/network/nuage/nuage_vspk.py\", \n  \"module: nxos_aaa_server\": \"lib/ansible/modules/network/nxos/nxos_aaa_server.py\", \n  \"module: nxos_aaa_server_host\": \"lib/ansible/modules/network/nxos/nxos_aaa_server_host.py\", \n  \"module: nxos_acl\": \"lib/ansible/modules/network/nxos/nxos_acl.py\", \n  \"module: nxos_acl_interface\": \"lib/ansible/modules/network/nxos/nxos_acl_interface.py\", \n  \"module: nxos_banner\": \"lib/ansible/modules/network/nxos/nxos_banner.py\", \n  \"module: nxos_bgp\": \"lib/ansible/modules/network/nxos/nxos_bgp.py\", \n  \"module: nxos_bgp_af\": \"lib/ansible/modules/network/nxos/nxos_bgp_af.py\", \n  \"module: nxos_bgp_neighbor\": \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor.py\", \n  \"module: nxos_bgp_neighbor_af\": \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor_af.py\", \n  \"module: nxos_command\": \"lib/ansible/modules/network/nxos/nxos_command.py\", \n  \"module: nxos_config\": \"lib/ansible/modules/network/nxos/nxos_config.py\", \n  \"module: nxos_evpn_global\": \"lib/ansible/modules/network/nxos/nxos_evpn_global.py\", \n  \"module: nxos_evpn_vni\": \"lib/ansible/modules/network/nxos/nxos_evpn_vni.py\", \n  \"module: nxos_facts\": \"lib/ansible/modules/network/nxos/nxos_facts.py\", \n  \"module: nxos_feature\": \"lib/ansible/modules/network/nxos/nxos_feature.py\", \n  \"module: nxos_file_copy\": \"lib/ansible/modules/network/nxos/nxos_file_copy.py\", \n  \"module: nxos_gir\": \"lib/ansible/modules/network/nxos/nxos_gir.py\", \n  \"module: nxos_gir_profile_management\": \"lib/ansible/modules/network/nxos/nxos_gir_profile_management.py\", \n  \"module: nxos_hsrp\": \"lib/ansible/modules/network/nxos/nxos_hsrp.py\", \n  \"module: nxos_igmp\": \"lib/ansible/modules/network/nxos/nxos_igmp.py\", \n  \"module: nxos_igmp_interface\": \"lib/ansible/modules/network/nxos/nxos_igmp_interface.py\", \n  \"module: nxos_igmp_snooping\": \"lib/ansible/modules/network/nxos/nxos_igmp_snooping.py\", \n  \"module: nxos_install_os\": \"lib/ansible/modules/network/nxos/nxos_install_os.py\", \n  \"module: nxos_interface\": \"lib/ansible/modules/network/nxos/nxos_interface.py\", \n  \"module: nxos_interface_ospf\": \"lib/ansible/modules/network/nxos/nxos_interface_ospf.py\", \n  \"module: nxos_ip_interface\": \"lib/ansible/modules/network/nxos/nxos_ip_interface.py\", \n  \"module: nxos_logging\": \"lib/ansible/modules/network/nxos/nxos_logging.py\", \n  \"module: nxos_mtu\": \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n  \"module: nxos_ntp\": \"lib/ansible/modules/network/nxos/nxos_ntp.py\", \n  \"module: nxos_ntp_auth\": \"lib/ansible/modules/network/nxos/nxos_ntp_auth.py\", \n  \"module: nxos_ntp_options\": \"lib/ansible/modules/network/nxos/nxos_ntp_options.py\", \n  \"module: nxos_nxapi\": \"lib/ansible/modules/network/nxos/nxos_nxapi.py\", \n  \"module: nxos_ospf\": \"lib/ansible/modules/network/nxos/nxos_ospf.py\", \n  \"module: nxos_ospf_vrf\": \"lib/ansible/modules/network/nxos/nxos_ospf_vrf.py\", \n  \"module: nxos_overlay_global\": \"lib/ansible/modules/network/nxos/nxos_overlay_global.py\", \n  \"module: nxos_pim\": \"lib/ansible/modules/network/nxos/nxos_pim.py\", \n  \"module: nxos_pim_interface\": \"lib/ansible/modules/network/nxos/nxos_pim_interface.py\", \n  \"module: nxos_pim_rp_address\": \"lib/ansible/modules/network/nxos/nxos_pim_rp_address.py\", \n  \"module: nxos_ping\": \"lib/ansible/modules/network/nxos/nxos_ping.py\", \n  \"module: nxos_portchannel\": \"lib/ansible/modules/network/nxos/nxos_portchannel.py\", \n  \"module: nxos_reboot\": \"lib/ansible/modules/network/nxos/nxos_reboot.py\", \n  \"module: nxos_rollback\": \"lib/ansible/modules/network/nxos/nxos_rollback.py\", \n  \"module: nxos_smu\": \"lib/ansible/modules/network/nxos/nxos_smu.py\", \n  \"module: nxos_snapshot\": \"lib/ansible/modules/network/nxos/nxos_snapshot.py\", \n  \"module: nxos_snmp_community\": \"lib/ansible/modules/network/nxos/nxos_snmp_community.py\", \n  \"module: nxos_snmp_contact\": \"lib/ansible/modules/network/nxos/nxos_snmp_contact.py\", \n  \"module: nxos_snmp_host\": \"lib/ansible/modules/network/nxos/nxos_snmp_host.py\", \n  \"module: nxos_snmp_location\": \"lib/ansible/modules/network/nxos/nxos_snmp_location.py\", \n  \"module: nxos_snmp_traps\": \"lib/ansible/modules/network/nxos/nxos_snmp_traps.py\", \n  \"module: nxos_snmp_user\": \"lib/ansible/modules/network/nxos/nxos_snmp_user.py\", \n  \"module: nxos_static_route\": \"lib/ansible/modules/network/nxos/nxos_static_route.py\", \n  \"module: nxos_switchport\": \"lib/ansible/modules/network/nxos/nxos_switchport.py\", \n  \"module: nxos_system\": \"lib/ansible/modules/network/nxos/nxos_system.py\", \n  \"module: nxos_udld\": \"lib/ansible/modules/network/nxos/nxos_udld.py\", \n  \"module: nxos_udld_interface\": \"lib/ansible/modules/network/nxos/nxos_udld_interface.py\", \n  \"module: nxos_user\": \"lib/ansible/modules/network/nxos/nxos_user.py\", \n  \"module: nxos_vlan\": \"lib/ansible/modules/network/nxos/nxos_vlan.py\", \n  \"module: nxos_vpc\": \"lib/ansible/modules/network/nxos/nxos_vpc.py\", \n  \"module: nxos_vpc_interface\": \"lib/ansible/modules/network/nxos/nxos_vpc_interface.py\", \n  \"module: nxos_vrf\": \"lib/ansible/modules/network/nxos/nxos_vrf.py\", \n  \"module: nxos_vrf_af\": \"lib/ansible/modules/network/nxos/nxos_vrf_af.py\", \n  \"module: nxos_vrf_interface\": \"lib/ansible/modules/network/nxos/nxos_vrf_interface.py\", \n  \"module: nxos_vrrp\": \"lib/ansible/modules/network/nxos/nxos_vrrp.py\", \n  \"module: nxos_vtp_domain\": \"lib/ansible/modules/network/nxos/nxos_vtp_domain.py\", \n  \"module: nxos_vtp_password\": \"lib/ansible/modules/network/nxos/nxos_vtp_password.py\", \n  \"module: nxos_vtp_version\": \"lib/ansible/modules/network/nxos/nxos_vtp_version.py\", \n  \"module: nxos_vxlan_vtep\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep.py\", \n  \"module: nxos_vxlan_vtep_vni\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\", \n  \"module: oc\": \"lib/ansible/modules/clustering/oc.py\", \n  \"module: office_365_connector_card\": \"lib/ansible/modules/notification/office_365_connector_card.py\", \n  \"module: ohai\": \"lib/ansible/modules/system/ohai.py\", \n  \"module: omapi_host\": \"lib/ansible/modules/net_tools/omapi_host.py\", \n  \"module: oneview_enclosure_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_enclosure_facts.py\", \n  \"module: oneview_ethernet_network\": \"lib/ansible/modules/remote_management/oneview/oneview_ethernet_network.py\", \n  \"module: oneview_ethernet_network_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_ethernet_network_facts.py\", \n  \"module: oneview_fc_network\": \"lib/ansible/modules/remote_management/oneview/oneview_fc_network.py\", \n  \"module: oneview_fc_network_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_fc_network_facts.py\", \n  \"module: oneview_fcoe_network\": \"lib/ansible/modules/remote_management/oneview/oneview_fcoe_network.py\", \n  \"module: oneview_fcoe_network_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_fcoe_network_facts.py\", \n  \"module: oneview_logical_interconnect_group\": \"lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group.py\", \n  \"module: oneview_logical_interconnect_group_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group_facts.py\", \n  \"module: oneview_network_set\": \"lib/ansible/modules/remote_management/oneview/oneview_network_set.py\", \n  \"module: oneview_network_set_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_network_set_facts.py\", \n  \"module: oneview_san_manager\": \"lib/ansible/modules/remote_management/oneview/oneview_san_manager.py\", \n  \"module: oneview_san_manager_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_san_manager_facts.py\", \n  \"module: open_iscsi\": \"lib/ansible/modules/system/open_iscsi.py\", \n  \"module: openbsd_pkg\": \"lib/ansible/modules/packaging/os/openbsd_pkg.py\", \n  \"module: opendj_backendprop\": \"lib/ansible/modules/identity/opendj/opendj_backendprop.py\", \n  \"module: openssl_certificate\": \"lib/ansible/modules/crypto/openssl_certificate.py\", \n  \"module: openssl_csr\": \"lib/ansible/modules/crypto/openssl_csr.py\", \n  \"module: openssl_privatekey\": \"lib/ansible/modules/crypto/openssl_privatekey.py\", \n  \"module: openssl_publickey\": \"lib/ansible/modules/crypto/openssl_publickey.py\", \n  \"module: openvswitch_bridge\": \"lib/ansible/modules/network/ovs/openvswitch_bridge.py\", \n  \"module: openvswitch_db\": \"lib/ansible/modules/network/ovs/openvswitch_db.py\", \n  \"module: openvswitch_port\": \"lib/ansible/modules/network/ovs/openvswitch_port.py\", \n  \"module: openwrt_init\": \"lib/ansible/modules/system/openwrt_init.py\", \n  \"module: opkg\": \"lib/ansible/modules/packaging/os/opkg.py\", \n  \"module: ordnance_config\": \"lib/ansible/modules/network/ordnance/ordnance_config.py\", \n  \"module: ordnance_facts\": \"lib/ansible/modules/network/ordnance/ordnance_facts.py\", \n  \"module: os_auth\": \"lib/ansible/modules/cloud/openstack/os_auth.py\", \n  \"module: os_client_config\": \"lib/ansible/modules/cloud/openstack/os_client_config.py\", \n  \"module: os_flavor_facts\": \"lib/ansible/modules/cloud/openstack/os_flavor_facts.py\", \n  \"module: os_floating_ip\": \"lib/ansible/modules/cloud/openstack/os_floating_ip.py\", \n  \"module: os_group\": \"lib/ansible/modules/cloud/openstack/os_group.py\", \n  \"module: os_image\": \"lib/ansible/modules/cloud/openstack/os_image.py\", \n  \"module: os_image_facts\": \"lib/ansible/modules/cloud/openstack/os_image_facts.py\", \n  \"module: os_ironic\": \"lib/ansible/modules/cloud/openstack/os_ironic.py\", \n  \"module: os_ironic_inspect\": \"lib/ansible/modules/cloud/openstack/os_ironic_inspect.py\", \n  \"module: os_ironic_node\": \"lib/ansible/modules/cloud/openstack/os_ironic_node.py\", \n  \"module: os_keypair\": \"lib/ansible/modules/cloud/openstack/os_keypair.py\", \n  \"module: os_keystone_domain\": \"lib/ansible/modules/cloud/openstack/os_keystone_domain.py\", \n  \"module: os_keystone_domain_facts\": \"lib/ansible/modules/cloud/openstack/os_keystone_domain_facts.py\", \n  \"module: os_keystone_endpoint\": \"lib/ansible/modules/cloud/openstack/os_keystone_endpoint.py\", \n  \"module: os_keystone_role\": \"lib/ansible/modules/cloud/openstack/os_keystone_role.py\", \n  \"module: os_keystone_service\": \"lib/ansible/modules/cloud/openstack/os_keystone_service.py\", \n  \"module: os_network\": \"lib/ansible/modules/cloud/openstack/os_network.py\", \n  \"module: os_networks_facts\": \"lib/ansible/modules/cloud/openstack/os_networks_facts.py\", \n  \"module: os_nova_flavor\": \"lib/ansible/modules/cloud/openstack/os_nova_flavor.py\", \n  \"module: os_nova_host_aggregate\": \"lib/ansible/modules/cloud/openstack/os_nova_host_aggregate.py\", \n  \"module: os_object\": \"lib/ansible/modules/cloud/openstack/os_object.py\", \n  \"module: os_port\": \"lib/ansible/modules/cloud/openstack/os_port.py\", \n  \"module: os_port_facts\": \"lib/ansible/modules/cloud/openstack/os_port_facts.py\", \n  \"module: os_project\": \"lib/ansible/modules/cloud/openstack/os_project.py\", \n  \"module: os_project_facts\": \"lib/ansible/modules/cloud/openstack/os_project_facts.py\", \n  \"module: os_quota\": \"lib/ansible/modules/cloud/openstack/os_quota.py\", \n  \"module: os_recordset\": \"lib/ansible/modules/cloud/openstack/os_recordset.py\", \n  \"module: os_router\": \"lib/ansible/modules/cloud/openstack/os_router.py\", \n  \"module: os_security_group\": \"lib/ansible/modules/cloud/openstack/os_security_group.py\", \n  \"module: os_security_group_rule\": \"lib/ansible/modules/cloud/openstack/os_security_group_rule.py\", \n  \"module: os_server\": \"lib/ansible/modules/cloud/openstack/os_server.py\", \n  \"module: os_server_action\": \"lib/ansible/modules/cloud/openstack/os_server_action.py\", \n  \"module: os_server_actions\": \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n  \"module: os_server_facts\": \"lib/ansible/modules/cloud/openstack/os_server_facts.py\", \n  \"module: os_server_group\": \"lib/ansible/modules/cloud/openstack/os_server_group.py\", \n  \"module: os_server_volume\": \"lib/ansible/modules/cloud/openstack/os_server_volume.py\", \n  \"module: os_stack\": \"lib/ansible/modules/cloud/openstack/os_stack.py\", \n  \"module: os_subnet\": \"lib/ansible/modules/cloud/openstack/os_subnet.py\", \n  \"module: os_subnets_facts\": \"lib/ansible/modules/cloud/openstack/os_subnets_facts.py\", \n  \"module: os_user\": \"lib/ansible/modules/cloud/openstack/os_user.py\", \n  \"module: os_user_facts\": \"lib/ansible/modules/cloud/openstack/os_user_facts.py\", \n  \"module: os_user_group\": \"lib/ansible/modules/cloud/openstack/os_user_group.py\", \n  \"module: os_user_role\": \"lib/ansible/modules/cloud/openstack/os_user_role.py\", \n  \"module: os_volume\": \"lib/ansible/modules/cloud/openstack/os_volume.py\", \n  \"module: os_zone\": \"lib/ansible/modules/cloud/openstack/os_zone.py\", \n  \"module: osx_defaults\": \"lib/ansible/modules/system/osx_defaults.py\", \n  \"module: osx_say\": \"lib/ansible/modules/notification/osx_say.py\", \n  \"module: ovh_ip_loadbalancing_backend\": \"lib/ansible/modules/cloud/ovh/ovh_ip_loadbalancing_backend.py\", \n  \"module: ovirt\": \"lib/ansible/modules/cloud/misc/ovirt.py\", \n  \"module: ovirt_affinity_group\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_group.py\", \n  \"module: ovirt_affinity_groups\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\", \n  \"module: ovirt_affinity_label\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_label.py\", \n  \"module: ovirt_affinity_label_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_label_facts.py\", \n  \"module: ovirt_affinity_labels\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\", \n  \"module: ovirt_affinity_labels_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\", \n  \"module: ovirt_api_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_api_facts.py\", \n  \"module: ovirt_auth\": \"lib/ansible/modules/cloud/ovirt/ovirt_auth.py\", \n  \"module: ovirt_cluster\": \"lib/ansible/modules/cloud/ovirt/ovirt_cluster.py\", \n  \"module: ovirt_cluster_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_cluster_facts.py\", \n  \"module: ovirt_clusters\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\", \n  \"module: ovirt_clusters_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\", \n  \"module: ovirt_datacenter\": \"lib/ansible/modules/cloud/ovirt/ovirt_datacenter.py\", \n  \"module: ovirt_datacenter_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_datacenter_facts.py\", \n  \"module: ovirt_datacenters\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\", \n  \"module: ovirt_datacenters_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\", \n  \"module: ovirt_disk\": \"lib/ansible/modules/cloud/ovirt/ovirt_disk.py\", \n  \"module: ovirt_disk_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_disk_facts.py\", \n  \"module: ovirt_disks\": \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\", \n  \"module: ovirt_external_provider\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_provider.py\", \n  \"module: ovirt_external_provider_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_provider_facts.py\", \n  \"module: ovirt_external_providers\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\", \n  \"module: ovirt_external_providers_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\", \n  \"module: ovirt_group\": \"lib/ansible/modules/cloud/ovirt/ovirt_group.py\", \n  \"module: ovirt_group_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_group_facts.py\", \n  \"module: ovirt_groups\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\", \n  \"module: ovirt_groups_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\", \n  \"module: ovirt_host_networks\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_networks.py\", \n  \"module: ovirt_host_pm\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_pm.py\", \n  \"module: ovirt_host_storage_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_storage_facts.py\", \n  \"module: ovirt_hosts\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts.py\", \n  \"module: ovirt_hosts_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts_facts.py\", \n  \"module: ovirt_mac_pools\": \"lib/ansible/modules/cloud/ovirt/ovirt_mac_pools.py\", \n  \"module: ovirt_networks\": \"lib/ansible/modules/cloud/ovirt/ovirt_networks.py\", \n  \"module: ovirt_networks_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_networks_facts.py\", \n  \"module: ovirt_nics\": \"lib/ansible/modules/cloud/ovirt/ovirt_nics.py\", \n  \"module: ovirt_nics_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_nics_facts.py\", \n  \"module: ovirt_permissions\": \"lib/ansible/modules/cloud/ovirt/ovirt_permissions.py\", \n  \"module: ovirt_permissions_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_permissions_facts.py\", \n  \"module: ovirt_quotas\": \"lib/ansible/modules/cloud/ovirt/ovirt_quotas.py\", \n  \"module: ovirt_quotas_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_quotas_facts.py\", \n  \"module: ovirt_scheduling_policies_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_scheduling_policies_facts.py\", \n  \"module: ovirt_snapshots\": \"lib/ansible/modules/cloud/ovirt/ovirt_snapshots.py\", \n  \"module: ovirt_snapshots_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_snapshots_facts.py\", \n  \"module: ovirt_storage_connections\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_connections.py\", \n  \"module: ovirt_storage_domains\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains.py\", \n  \"module: ovirt_storage_domains_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains_facts.py\", \n  \"module: ovirt_storage_templates_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_templates_facts.py\", \n  \"module: ovirt_storage_vms_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_vms_facts.py\", \n  \"module: ovirt_tags\": \"lib/ansible/modules/cloud/ovirt/ovirt_tags.py\", \n  \"module: ovirt_tags_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_tags_facts.py\", \n  \"module: ovirt_templates\": \"lib/ansible/modules/cloud/ovirt/ovirt_templates.py\", \n  \"module: ovirt_templates_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_templates_facts.py\", \n  \"module: ovirt_users\": \"lib/ansible/modules/cloud/ovirt/ovirt_users.py\", \n  \"module: ovirt_users_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_users_facts.py\", \n  \"module: ovirt_vmpools\": \"lib/ansible/modules/cloud/ovirt/ovirt_vmpools.py\", \n  \"module: ovirt_vmpools_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_vmpools_facts.py\", \n  \"module: ovirt_vms\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms.py\", \n  \"module: ovirt_vms_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms_facts.py\", \n  \"module: pacemaker_cluster\": \"lib/ansible/modules/clustering/pacemaker_cluster.py\", \n  \"module: package\": \"lib/ansible/modules/packaging/os/package.py\", \n  \"module: packet_device\": \"lib/ansible/modules/cloud/packet/packet_device.py\", \n  \"module: packet_sshkey\": \"lib/ansible/modules/cloud/packet/packet_sshkey.py\", \n  \"module: pacman\": \"lib/ansible/modules/packaging/os/pacman.py\", \n  \"module: pagerduty\": \"lib/ansible/modules/monitoring/pagerduty.py\", \n  \"module: pagerduty_alert\": \"lib/ansible/modules/monitoring/pagerduty_alert.py\", \n  \"module: pam_limits\": \"lib/ansible/modules/system/pam_limits.py\", \n  \"module: pamd\": \"lib/ansible/modules/system/pamd.py\", \n  \"module: panos_admin\": \"lib/ansible/modules/network/panos/panos_admin.py\", \n  \"module: panos_admpwd\": \"lib/ansible/modules/network/panos/panos_admpwd.py\", \n  \"module: panos_cert_gen_ssh\": \"lib/ansible/modules/network/panos/panos_cert_gen_ssh.py\", \n  \"module: panos_check\": \"lib/ansible/modules/network/panos/panos_check.py\", \n  \"module: panos_commit\": \"lib/ansible/modules/network/panos/panos_commit.py\", \n  \"module: panos_dag\": \"lib/ansible/modules/network/panos/panos_dag.py\", \n  \"module: panos_import\": \"lib/ansible/modules/network/panos/panos_import.py\", \n  \"module: panos_interface\": \"lib/ansible/modules/network/panos/panos_interface.py\", \n  \"module: panos_lic\": \"lib/ansible/modules/network/panos/panos_lic.py\", \n  \"module: panos_loadcfg\": \"lib/ansible/modules/network/panos/panos_loadcfg.py\", \n  \"module: panos_mgtconfig\": \"lib/ansible/modules/network/panos/panos_mgtconfig.py\", \n  \"module: panos_nat_policy\": \"lib/ansible/modules/network/panos/panos_nat_policy.py\", \n  \"module: panos_nat_rule\": \"lib/ansible/modules/network/panos/panos_nat_rule.py\", \n  \"module: panos_object\": \"lib/ansible/modules/network/panos/panos_object.py\", \n  \"module: panos_pg\": \"lib/ansible/modules/network/panos/panos_pg.py\", \n  \"module: panos_restart\": \"lib/ansible/modules/network/panos/panos_restart.py\", \n  \"module: panos_sag\": \"lib/ansible/modules/network/panos/panos_sag.py\", \n  \"module: panos_security_policy\": \"lib/ansible/modules/network/panos/panos_security_policy.py\", \n  \"module: panos_security_rule\": \"lib/ansible/modules/network/panos/panos_security_rule.py\", \n  \"module: parted\": \"lib/ansible/modules/system/parted.py\", \n  \"module: patch\": \"lib/ansible/modules/files/patch.py\", \n  \"module: pause\": \"lib/ansible/modules/utilities/logic/pause.py\", \n  \"module: pear\": \"lib/ansible/modules/packaging/language/pear.py\", \n  \"module: ping\": \"lib/ansible/modules/system/ping.py\", \n  \"module: pingdom\": \"lib/ansible/modules/monitoring/pingdom.py\", \n  \"module: pip\": \"lib/ansible/modules/packaging/language/pip.py\", \n  \"module: pkg5\": \"lib/ansible/modules/packaging/os/pkg5.py\", \n  \"module: pkg5_publisher\": \"lib/ansible/modules/packaging/os/pkg5_publisher.py\", \n  \"module: pkgin\": \"lib/ansible/modules/packaging/os/pkgin.py\", \n  \"module: pkgng\": \"lib/ansible/modules/packaging/os/pkgng.py\", \n  \"module: pkgutil\": \"lib/ansible/modules/packaging/os/pkgutil.py\", \n  \"module: pn_cluster\": \"lib/ansible/modules/network/netvisor/pn_cluster.py\", \n  \"module: pn_ospf\": \"lib/ansible/modules/network/netvisor/pn_ospf.py\", \n  \"module: pn_ospfarea\": \"lib/ansible/modules/network/netvisor/pn_ospfarea.py\", \n  \"module: pn_show\": \"lib/ansible/modules/network/netvisor/pn_show.py\", \n  \"module: pn_trunk\": \"lib/ansible/modules/network/netvisor/pn_trunk.py\", \n  \"module: pn_vlag\": \"lib/ansible/modules/network/netvisor/pn_vlag.py\", \n  \"module: pn_vlan\": \"lib/ansible/modules/network/netvisor/pn_vlan.py\", \n  \"module: pn_vrouter\": \"lib/ansible/modules/network/netvisor/pn_vrouter.py\", \n  \"module: pn_vrouterbgp\": \"lib/ansible/modules/network/netvisor/pn_vrouterbgp.py\", \n  \"module: pn_vrouterif\": \"lib/ansible/modules/network/netvisor/pn_vrouterif.py\", \n  \"module: pn_vrouterlbif\": \"lib/ansible/modules/network/netvisor/pn_vrouterlbif.py\", \n  \"module: portage\": \"lib/ansible/modules/packaging/os/portage.py\", \n  \"module: portinstall\": \"lib/ansible/modules/packaging/os/portinstall.py\", \n  \"module: postgresql_db\": \"lib/ansible/modules/database/postgresql/postgresql_db.py\", \n  \"module: postgresql_ext\": \"lib/ansible/modules/database/postgresql/postgresql_ext.py\", \n  \"module: postgresql_lang\": \"lib/ansible/modules/database/postgresql/postgresql_lang.py\", \n  \"module: postgresql_privs\": \"lib/ansible/modules/database/postgresql/postgresql_privs.py\", \n  \"module: postgresql_schema\": \"lib/ansible/modules/database/postgresql/postgresql_schema.py\", \n  \"module: postgresql_user\": \"lib/ansible/modules/database/postgresql/postgresql_user.py\", \n  \"module: profitbricks\": \"lib/ansible/modules/cloud/profitbricks/profitbricks.py\", \n  \"module: profitbricks_datacenter\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_datacenter.py\", \n  \"module: profitbricks_nic\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_nic.py\", \n  \"module: profitbricks_volume\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume.py\", \n  \"module: profitbricks_volume_attachments\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume_attachments.py\", \n  \"module: proxmox\": \"lib/ansible/modules/cloud/misc/proxmox.py\", \n  \"module: proxmox_kvm\": \"lib/ansible/modules/cloud/misc/proxmox_kvm.py\", \n  \"module: proxmox_template\": \"lib/ansible/modules/cloud/misc/proxmox_template.py\", \n  \"module: proxysql_backend_servers\": \"lib/ansible/modules/database/proxysql/proxysql_backend_servers.py\", \n  \"module: proxysql_global_variables\": \"lib/ansible/modules/database/proxysql/proxysql_global_variables.py\", \n  \"module: proxysql_manage_config\": \"lib/ansible/modules/database/proxysql/proxysql_manage_config.py\", \n  \"module: proxysql_mysql_users\": \"lib/ansible/modules/database/proxysql/proxysql_mysql_users.py\", \n  \"module: proxysql_query_rules\": \"lib/ansible/modules/database/proxysql/proxysql_query_rules.py\", \n  \"module: proxysql_replication_hostgroups\": \"lib/ansible/modules/database/proxysql/proxysql_replication_hostgroups.py\", \n  \"module: proxysql_scheduler\": \"lib/ansible/modules/database/proxysql/proxysql_scheduler.py\", \n  \"module: pubnub_blocks\": \"lib/ansible/modules/cloud/pubnub/pubnub_blocks.py\", \n  \"module: pulp_repo\": \"lib/ansible/modules/packaging/os/pulp_repo.py\", \n  \"module: puppet\": \"lib/ansible/modules/system/puppet.py\", \n  \"module: purefa_hg\": \"lib/ansible/modules/storage/purestorage/purefa_hg.py\", \n  \"module: purefa_host\": \"lib/ansible/modules/storage/purestorage/purefa_host.py\", \n  \"module: purefa_pg\": \"lib/ansible/modules/storage/purestorage/purefa_pg.py\", \n  \"module: purefa_snap\": \"lib/ansible/modules/storage/purestorage/purefa_snap.py\", \n  \"module: purefa_volume\": \"lib/ansible/modules/storage/purestorage/purefa_volume.py\", \n  \"module: pushbullet\": \"lib/ansible/modules/notification/pushbullet.py\", \n  \"module: pushover\": \"lib/ansible/modules/notification/pushover.py\", \n  \"module: rabbitmq_binding\": \"lib/ansible/modules/messaging/rabbitmq_binding.py\", \n  \"module: rabbitmq_exchange\": \"lib/ansible/modules/messaging/rabbitmq_exchange.py\", \n  \"module: rabbitmq_parameter\": \"lib/ansible/modules/messaging/rabbitmq_parameter.py\", \n  \"module: rabbitmq_plugin\": \"lib/ansible/modules/messaging/rabbitmq_plugin.py\", \n  \"module: rabbitmq_policy\": \"lib/ansible/modules/messaging/rabbitmq_policy.py\", \n  \"module: rabbitmq_queue\": \"lib/ansible/modules/messaging/rabbitmq_queue.py\", \n  \"module: rabbitmq_user\": \"lib/ansible/modules/messaging/rabbitmq_user.py\", \n  \"module: rabbitmq_vhost\": \"lib/ansible/modules/messaging/rabbitmq_vhost.py\", \n  \"module: raw\": \"lib/ansible/modules/commands/raw.py\", \n  \"module: rax\": \"lib/ansible/modules/cloud/rackspace/rax.py\", \n  \"module: rax_cbs\": \"lib/ansible/modules/cloud/rackspace/rax_cbs.py\", \n  \"module: rax_cbs_attachments\": \"lib/ansible/modules/cloud/rackspace/rax_cbs_attachments.py\", \n  \"module: rax_cdb\": \"lib/ansible/modules/cloud/rackspace/rax_cdb.py\", \n  \"module: rax_cdb_database\": \"lib/ansible/modules/cloud/rackspace/rax_cdb_database.py\", \n  \"module: rax_cdb_user\": \"lib/ansible/modules/cloud/rackspace/rax_cdb_user.py\", \n  \"module: rax_clb\": \"lib/ansible/modules/cloud/rackspace/rax_clb.py\", \n  \"module: rax_clb_nodes\": \"lib/ansible/modules/cloud/rackspace/rax_clb_nodes.py\", \n  \"module: rax_clb_ssl\": \"lib/ansible/modules/cloud/rackspace/rax_clb_ssl.py\", \n  \"module: rax_dns\": \"lib/ansible/modules/cloud/rackspace/rax_dns.py\", \n  \"module: rax_dns_record\": \"lib/ansible/modules/cloud/rackspace/rax_dns_record.py\", \n  \"module: rax_facts\": \"lib/ansible/modules/cloud/rackspace/rax_facts.py\", \n  \"module: rax_files\": \"lib/ansible/modules/cloud/rackspace/rax_files.py\", \n  \"module: rax_files_objects\": \"lib/ansible/modules/cloud/rackspace/rax_files_objects.py\", \n  \"module: rax_identity\": \"lib/ansible/modules/cloud/rackspace/rax_identity.py\", \n  \"module: rax_keypair\": \"lib/ansible/modules/cloud/rackspace/rax_keypair.py\", \n  \"module: rax_meta\": \"lib/ansible/modules/cloud/rackspace/rax_meta.py\", \n  \"module: rax_mon_alarm\": \"lib/ansible/modules/cloud/rackspace/rax_mon_alarm.py\", \n  \"module: rax_mon_check\": \"lib/ansible/modules/cloud/rackspace/rax_mon_check.py\", \n  \"module: rax_mon_entity\": \"lib/ansible/modules/cloud/rackspace/rax_mon_entity.py\", \n  \"module: rax_mon_notification\": \"lib/ansible/modules/cloud/rackspace/rax_mon_notification.py\", \n  \"module: rax_mon_notification_plan\": \"lib/ansible/modules/cloud/rackspace/rax_mon_notification_plan.py\", \n  \"module: rax_network\": \"lib/ansible/modules/cloud/rackspace/rax_network.py\", \n  \"module: rax_queue\": \"lib/ansible/modules/cloud/rackspace/rax_queue.py\", \n  \"module: rax_scaling_group\": \"lib/ansible/modules/cloud/rackspace/rax_scaling_group.py\", \n  \"module: rax_scaling_policy\": \"lib/ansible/modules/cloud/rackspace/rax_scaling_policy.py\", \n  \"module: rds\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"module: rds_param_group\": \"lib/ansible/modules/cloud/amazon/rds_param_group.py\", \n  \"module: rds_subnet_group\": \"lib/ansible/modules/cloud/amazon/rds_subnet_group.py\", \n  \"module: redhat_subscription\": \"lib/ansible/modules/packaging/os/redhat_subscription.py\", \n  \"module: redis\": \"lib/ansible/modules/database/misc/redis.py\", \n  \"module: redshift\": \"lib/ansible/modules/cloud/amazon/redshift.py\", \n  \"module: redshift_facts\": \"lib/ansible/modules/cloud/amazon/redshift_facts.py\", \n  \"module: redshift_subnet_group\": \"lib/ansible/modules/cloud/amazon/redshift_subnet_group.py\", \n  \"module: replace\": \"lib/ansible/modules/files/replace.py\", \n  \"module: rhevm\": \"lib/ansible/modules/cloud/misc/rhevm.py\", \n  \"module: rhn_channel\": \"lib/ansible/modules/packaging/os/rhn_channel.py\", \n  \"module: rhn_register\": \"lib/ansible/modules/packaging/os/rhn_register.py\", \n  \"module: riak\": \"lib/ansible/modules/database/misc/riak.py\", \n  \"module: rocketchat\": \"lib/ansible/modules/notification/rocketchat.py\", \n  \"module: rollbar_deployment\": \"lib/ansible/modules/monitoring/rollbar_deployment.py\", \n  \"module: route53\": \"lib/ansible/modules/cloud/amazon/route53.py\", \n  \"module: route53_facts\": \"lib/ansible/modules/cloud/amazon/route53_facts.py\", \n  \"module: route53_health_check\": \"lib/ansible/modules/cloud/amazon/route53_health_check.py\", \n  \"module: route53_zone\": \"lib/ansible/modules/cloud/amazon/route53_zone.py\", \n  \"module: rpm_key\": \"lib/ansible/modules/packaging/os/rpm_key.py\", \n  \"module: rundeck_acl_policy\": \"lib/ansible/modules/web_infrastructure/rundeck_acl_policy.py\", \n  \"module: rundeck_project\": \"lib/ansible/modules/web_infrastructure/rundeck_project.py\", \n  \"module: runit\": \"lib/ansible/modules/system/runit.py\", \n  \"module: s3\": \"lib/ansible/modules/cloud/amazon/_s3.py\", \n  \"module: s3_bucket\": \"lib/ansible/modules/cloud/amazon/s3_bucket.py\", \n  \"module: s3_lifecycle\": \"lib/ansible/modules/cloud/amazon/s3_lifecycle.py\", \n  \"module: s3_logging\": \"lib/ansible/modules/cloud/amazon/s3_logging.py\", \n  \"module: s3_sync\": \"lib/ansible/modules/cloud/amazon/s3_sync.py\", \n  \"module: s3_website\": \"lib/ansible/modules/cloud/amazon/s3_website.py\", \n  \"module: script\": \"lib/ansible/modules/commands/script.py\", \n  \"module: seboolean\": \"lib/ansible/modules/system/seboolean.py\", \n  \"module: sefcontext\": \"lib/ansible/modules/system/sefcontext.py\", \n  \"module: selinux\": \"lib/ansible/modules/system/selinux.py\", \n  \"module: selinux_permissive\": \"lib/ansible/modules/system/selinux_permissive.py\", \n  \"module: sendgrid\": \"lib/ansible/modules/notification/sendgrid.py\", \n  \"module: sensu_check\": \"lib/ansible/modules/monitoring/sensu_check.py\", \n  \"module: sensu_client\": \"lib/ansible/modules/monitoring/sensu_client.py\", \n  \"module: sensu_handler\": \"lib/ansible/modules/monitoring/sensu_handler.py\", \n  \"module: sensu_silence\": \"lib/ansible/modules/monitoring/sensu_silence.py\", \n  \"module: sensu_subscription\": \"lib/ansible/modules/monitoring/sensu_subscription.py\", \n  \"module: seport\": \"lib/ansible/modules/system/seport.py\", \n  \"module: serverless\": \"lib/ansible/modules/cloud/misc/serverless.py\", \n  \"module: service\": \"lib/ansible/modules/system/service.py\", \n  \"module: set_fact\": [\n    \"lib/ansible/modules/utilities/logic/set_fact.py\"\n  ], \n  \"module: set_stats\": \"lib/ansible/modules/utilities/logic/set_stats.py\", \n  \"module: setup\": \"lib/ansible/modules/system/setup.py\", \n  \"module: sf_account_manager\": \"lib/ansible/modules/storage/netapp/sf_account_manager.py\", \n  \"module: sf_check_connections\": \"lib/ansible/modules/storage/netapp/sf_check_connections.py\", \n  \"module: sf_snapshot_schedule_manager\": \"lib/ansible/modules/storage/netapp/sf_snapshot_schedule_manager.py\", \n  \"module: sf_volume_access_group_manager\": \"lib/ansible/modules/storage/netapp/sf_volume_access_group_manager.py\", \n  \"module: sf_volume_manager\": \"lib/ansible/modules/storage/netapp/sf_volume_manager.py\", \n  \"module: shell\": \"lib/ansible/modules/commands/shell.py\", \n  \"module: sl_vm\": \"lib/ansible/modules/cloud/softlayer/sl_vm.py\", \n  \"module: slack\": \"lib/ansible/modules/notification/slack.py\", \n  \"module: slackpkg\": \"lib/ansible/modules/packaging/os/slackpkg.py\", \n  \"module: slurp\": \"lib/ansible/modules/net_tools/basics/slurp.py\", \n  \"module: smartos_image_facts\": \"lib/ansible/modules/cloud/smartos/smartos_image_facts.py\", \n  \"module: snmp_facts\": \"lib/ansible/modules/net_tools/snmp_facts.py\", \n  \"module: snow_record\": \"lib/ansible/modules/notification/snow_record.py\", \n  \"module: sns\": \"lib/ansible/modules/cloud/amazon/sns.py\", \n  \"module: sns_topic\": \"lib/ansible/modules/cloud/amazon/sns_topic.py\", \n  \"module: solaris_zone\": \"lib/ansible/modules/system/solaris_zone.py\", \n  \"module: sorcery\": \"lib/ansible/modules/packaging/os/sorcery.py\", \n  \"module: sqs_queue\": \"lib/ansible/modules/cloud/amazon/sqs_queue.py\", \n  \"module: sros_command\": \"lib/ansible/modules/network/sros/sros_command.py\", \n  \"module: sros_config\": \"lib/ansible/modules/network/sros/sros_config.py\", \n  \"module: sros_rollback\": \"lib/ansible/modules/network/sros/sros_rollback.py\", \n  \"module: stackdriver\": \"lib/ansible/modules/monitoring/stackdriver.py\", \n  \"module: stacki_host\": \"lib/ansible/modules/remote_management/stacki/stacki_host.py\", \n  \"module: stat\": \"lib/ansible/modules/files/stat.py\", \n  \"module: statusio_maintenance\": \"lib/ansible/modules/monitoring/statusio_maintenance.py\", \n  \"module: sts_assume_role\": \"lib/ansible/modules/cloud/amazon/sts_assume_role.py\", \n  \"module: sts_session_token\": \"lib/ansible/modules/cloud/amazon/sts_session_token.py\", \n  \"module: subversion\": \"lib/ansible/modules/source_control/subversion.py\", \n  \"module: supervisorctl\": \"lib/ansible/modules/web_infrastructure/supervisorctl.py\", \n  \"module: svc\": \"lib/ansible/modules/system/svc.py\", \n  \"module: svr4pkg\": \"lib/ansible/modules/packaging/os/svr4pkg.py\", \n  \"module: swdepot\": \"lib/ansible/modules/packaging/os/swdepot.py\", \n  \"module: swupd\": \"lib/ansible/modules/packaging/os/swupd.py\", \n  \"module: synchronize\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"module: sysctl\": \"lib/ansible/modules/system/sysctl.py\", \n  \"module: syslogger\": \"lib/ansible/modules/notification/syslogger.py\", \n  \"module: systemd\": \"lib/ansible/modules/system/systemd.py\", \n  \"module: taiga_issue\": \"lib/ansible/modules/web_infrastructure/taiga_issue.py\", \n  \"module: telegram\": \"lib/ansible/modules/notification/telegram.py\", \n  \"module: telnet\": \"lib/ansible/modules/commands/telnet.py\", \n  \"module: tempfile\": \"lib/ansible/modules/files/tempfile.py\", \n  \"module: template\": \"lib/ansible/modules/files/template.py\", \n  \"module: timezone\": [\n    \"lib/ansible/modules/system/timezone.py\"\n  ], \n  \"module: tower_credential\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_credential.py\", \n  \"module: tower_group\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_group.py\", \n  \"module: tower_host\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_host.py\", \n  \"module: tower_inventory\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_inventory.py\", \n  \"module: tower_job_cancel\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_cancel.py\", \n  \"module: tower_job_launch\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_launch.py\", \n  \"module: tower_job_list\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_list.py\", \n  \"module: tower_job_template\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_template.py\", \n  \"module: tower_job_wait\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_wait.py\", \n  \"module: tower_label\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_label.py\", \n  \"module: tower_organization\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_organization.py\", \n  \"module: tower_project\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_project.py\", \n  \"module: tower_role\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_role.py\", \n  \"module: tower_team\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_team.py\", \n  \"module: tower_user\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_user.py\", \n  \"module: twilio\": \"lib/ansible/modules/notification/twilio.py\", \n  \"module: typetalk\": \"lib/ansible/modules/notification/typetalk.py\", \n  \"module: udm_dns_record\": \"lib/ansible/modules/cloud/univention/udm_dns_record.py\", \n  \"module: udm_dns_zone\": \"lib/ansible/modules/cloud/univention/udm_dns_zone.py\", \n  \"module: udm_group\": \"lib/ansible/modules/cloud/univention/udm_group.py\", \n  \"module: udm_share\": \"lib/ansible/modules/cloud/univention/udm_share.py\", \n  \"module: udm_user\": \"lib/ansible/modules/cloud/univention/udm_user.py\", \n  \"module: ufw\": \"lib/ansible/modules/system/ufw.py\", \n  \"module: unarchive\": \"lib/ansible/modules/files/unarchive.py\", \n  \"module: uptimerobot\": \"lib/ansible/modules/monitoring/uptimerobot.py\", \n  \"module: uri\": \"lib/ansible/modules/net_tools/basics/uri.py\", \n  \"module: urpmi\": \"lib/ansible/modules/packaging/os/urpmi.py\", \n  \"module: user\": \"lib/ansible/modules/system/user.py\", \n  \"module: vca_fw\": \"lib/ansible/modules/cloud/vmware/vca_fw.py\", \n  \"module: vca_nat\": \"lib/ansible/modules/cloud/vmware/vca_nat.py\", \n  \"module: vca_vapp\": \"lib/ansible/modules/cloud/vmware/vca_vapp.py\", \n  \"module: vcenter_license\": \"lib/ansible/modules/cloud/vmware/vcenter_license.py\", \n  \"module: vdirect_file\": \"lib/ansible/modules/network/radware/vdirect_file.py\", \n  \"module: vertica_configuration\": \"lib/ansible/modules/database/vertica/vertica_configuration.py\", \n  \"module: vertica_facts\": \"lib/ansible/modules/database/vertica/vertica_facts.py\", \n  \"module: vertica_role\": \"lib/ansible/modules/database/vertica/vertica_role.py\", \n  \"module: vertica_schema\": \"lib/ansible/modules/database/vertica/vertica_schema.py\", \n  \"module: vertica_user\": \"lib/ansible/modules/database/vertica/vertica_user.py\", \n  \"module: virt\": \"lib/ansible/modules/cloud/misc/virt.py\", \n  \"module: virt_net\": \"lib/ansible/modules/cloud/misc/virt_net.py\", \n  \"module: virt_pool\": \"lib/ansible/modules/cloud/misc/virt_pool.py\", \n  \"module: vmadm\": \"lib/ansible/modules/cloud/smartos/vmadm.py\", \n  \"module: vmware_cluster\": \"lib/ansible/modules/cloud/vmware/vmware_cluster.py\", \n  \"module: vmware_datacenter\": \"lib/ansible/modules/cloud/vmware/vmware_datacenter.py\", \n  \"module: vmware_dns_config\": \"lib/ansible/modules/cloud/vmware/vmware_dns_config.py\", \n  \"module: vmware_dvs_host\": \"lib/ansible/modules/cloud/vmware/vmware_dvs_host.py\", \n  \"module: vmware_dvs_portgroup\": \"lib/ansible/modules/cloud/vmware/vmware_dvs_portgroup.py\", \n  \"module: vmware_dvswitch\": \"lib/ansible/modules/cloud/vmware/vmware_dvswitch.py\", \n  \"module: vmware_guest\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n  \"module: vmware_guest_facts\": \"lib/ansible/modules/cloud/vmware/vmware_guest_facts.py\", \n  \"module: vmware_guest_find\": \"lib/ansible/modules/cloud/vmware/vmware_guest_find.py\", \n  \"module: vmware_guest_powerstate\": \"lib/ansible/modules/cloud/vmware/vmware_guest_powerstate.py\", \n  \"module: vmware_guest_snapshot\": \"lib/ansible/modules/cloud/vmware/vmware_guest_snapshot.py\", \n  \"module: vmware_guest_tools_wait\": \"lib/ansible/modules/cloud/vmware/vmware_guest_tools_wait.py\", \n  \"module: vmware_host\": \"lib/ansible/modules/cloud/vmware/vmware_host.py\", \n  \"module: vmware_local_user_manager\": \"lib/ansible/modules/cloud/vmware/vmware_local_user_manager.py\", \n  \"module: vmware_maintenancemode\": \"lib/ansible/modules/cloud/vmware/vmware_maintenancemode.py\", \n  \"module: vmware_migrate_vmk\": \"lib/ansible/modules/cloud/vmware/vmware_migrate_vmk.py\", \n  \"module: vmware_portgroup\": \"lib/ansible/modules/cloud/vmware/vmware_portgroup.py\", \n  \"module: vmware_resource_pool\": \"lib/ansible/modules/cloud/vmware/vmware_resource_pool.py\", \n  \"module: vmware_target_canonical_facts\": \"lib/ansible/modules/cloud/vmware/vmware_target_canonical_facts.py\", \n  \"module: vmware_vm_facts\": \"lib/ansible/modules/cloud/vmware/vmware_vm_facts.py\", \n  \"module: vmware_vm_shell\": \"lib/ansible/modules/cloud/vmware/vmware_vm_shell.py\", \n  \"module: vmware_vm_vss_dvs_migrate\": \"lib/ansible/modules/cloud/vmware/vmware_vm_vss_dvs_migrate.py\", \n  \"module: vmware_vmkernel\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel.py\", \n  \"module: vmware_vmkernel_ip_config\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel_ip_config.py\", \n  \"module: vmware_vmotion\": \"lib/ansible/modules/cloud/vmware/vmware_vmotion.py\", \n  \"module: vmware_vsan_cluster\": \"lib/ansible/modules/cloud/vmware/vmware_vsan_cluster.py\", \n  \"module: vmware_vswitch\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_vswitch.py\"\n  ], \n  \"module: vsphere_copy\": \"lib/ansible/modules/cloud/vmware/vsphere_copy.py\", \n  \"module: vsphere_guest\": \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\", \n  \"module: vyos_banner\": \"lib/ansible/modules/network/vyos/vyos_banner.py\", \n  \"module: vyos_command\": \"lib/ansible/modules/network/vyos/vyos_command.py\", \n  \"module: vyos_config\": \"lib/ansible/modules/network/vyos/vyos_config.py\", \n  \"module: vyos_facts\": \"lib/ansible/modules/network/vyos/vyos_facts.py\", \n  \"module: vyos_interface\": \"lib/ansible/modules/network/vyos/vyos_interface.py\", \n  \"module: vyos_l3_interface\": \"lib/ansible/modules/network/vyos/vyos_l3_interface.py\", \n  \"module: vyos_linkagg\": \"lib/ansible/modules/network/vyos/vyos_linkagg.py\", \n  \"module: vyos_lldp\": \"lib/ansible/modules/network/vyos/vyos_lldp.py\", \n  \"module: vyos_lldp_interface\": \"lib/ansible/modules/network/vyos/vyos_lldp_interface.py\", \n  \"module: vyos_logging\": \"lib/ansible/modules/network/vyos/vyos_logging.py\", \n  \"module: vyos_static_route\": \"lib/ansible/modules/network/vyos/vyos_static_route.py\", \n  \"module: vyos_system\": \"lib/ansible/modules/network/vyos/vyos_system.py\", \n  \"module: vyos_user\": \"lib/ansible/modules/network/vyos/vyos_user.py\", \n  \"module: vyos_vlan\": \"lib/ansible/modules/network/vyos/vyos_vlan.py\", \n  \"module: wait_for\": \"lib/ansible/modules/utilities/logic/wait_for.py\", \n  \"module: wait_for_connection\": \"lib/ansible/modules/utilities/logic/wait_for_connection.py\", \n  \"module: wakeonlan\": \"lib/ansible/modules/remote_management/wakeonlan.py\", \n  \"module: webfaction_app\": \"lib/ansible/modules/cloud/webfaction/webfaction_app.py\", \n  \"module: webfaction_db\": \"lib/ansible/modules/cloud/webfaction/webfaction_db.py\", \n  \"module: webfaction_domain\": \"lib/ansible/modules/cloud/webfaction/webfaction_domain.py\", \n  \"module: webfaction_mailbox\": \"lib/ansible/modules/cloud/webfaction/webfaction_mailbox.py\", \n  \"module: webfaction_site\": \"lib/ansible/modules/cloud/webfaction/webfaction_site.py\", \n  \"module: win_acl\": \"lib/ansible/modules/windows/win_acl.py\", \n  \"module: win_acl_inheritance\": \"lib/ansible/modules/windows/win_acl_inheritance.ps1\", \n  \"module: win_audit_rule\": \"lib/ansible/modules/windows/win_audit_rule.ps1\", \n  \"module: win_chocolatey\": \"lib/ansible/modules/windows/win_chocolatey.py\", \n  \"module: win_command\": \"lib/ansible/modules/windows/win_command.py\", \n  \"module: win_copy\": \"lib/ansible/modules/windows/win_copy.ps1\", \n  \"module: win_defrag\": \"lib/ansible/modules/windows/win_defrag.ps1\", \n  \"module: win_disk_image\": \"lib/ansible/modules/windows/win_disk_image.ps1\", \n  \"module: win_dns_client\": \"lib/ansible/modules/windows/win_dns_client.ps1\", \n  \"module: win_domain\": \"lib/ansible/modules/windows/win_domain.py\", \n  \"module: win_domain_controller\": \"lib/ansible/modules/windows/win_domain_controller.ps1\", \n  \"module: win_domain_group\": \"lib/ansible/modules/windows/win_domain_group.ps1\", \n  \"module: win_domain_membership\": \"lib/ansible/modules/windows/win_domain_membership.ps1\", \n  \"module: win_domain_user\": \"lib/ansible/modules/windows/win_domain_user.py\", \n  \"module: win_dotnet_ngen\": \"lib/ansible/modules/windows/win_dotnet_ngen.py\", \n  \"module: win_dsc\": \"lib/ansible/modules/windows/win_dsc.ps1\", \n  \"module: win_environment\": \"lib/ansible/modules/windows/win_environment.ps1\", \n  \"module: win_eventlog\": \"lib/ansible/modules/windows/win_eventlog.ps1\", \n  \"module: win_eventlog_entry\": \"lib/ansible/modules/windows/win_eventlog_entry.py\", \n  \"module: win_feature\": \"lib/ansible/modules/windows/win_feature.ps1\", \n  \"module: win_file\": \"lib/ansible/modules/windows/win_file.py\", \n  \"module: win_file_version\": \"lib/ansible/modules/windows/win_file_version.py\", \n  \"module: win_find\": \"lib/ansible/modules/windows/win_find.py\", \n  \"module: win_firewall\": \"lib/ansible/modules/windows/win_firewall.py\", \n  \"module: win_firewall_rule\": [\n    \"lib/ansible/modules/windows/win_firewall_rule.ps1\"\n  ], \n  \"module: win_get_url\": \"lib/ansible/modules/windows/win_get_url.py\", \n  \"module: win_group\": \"lib/ansible/modules/windows/win_group.py\", \n  \"module: win_group_membership\": \"lib/ansible/modules/windows/win_group_membership.ps1\", \n  \"module: win_hotfix\": \"lib/ansible/modules/windows/win_hotfix.ps1\", \n  \"module: win_iis_virtualdirectory\": \"lib/ansible/modules/windows/win_iis_virtualdirectory.ps1\", \n  \"module: win_iis_webapplication\": \"lib/ansible/modules/windows/win_iis_webapplication.ps1\", \n  \"module: win_iis_webapppool\": \"lib/ansible/modules/windows/win_iis_webapppool.ps1\", \n  \"module: win_iis_webbinding\": \"lib/ansible/modules/windows/win_iis_webbinding.py\", \n  \"module: win_iis_website\": \"lib/ansible/modules/windows/win_iis_website.ps1\", \n  \"module: win_lineinfile\": \"lib/ansible/modules/windows/win_lineinfile.py\", \n  \"module: win_mapped_drive\": \"lib/ansible/modules/windows/win_mapped_drive.py\", \n  \"module: win_msg\": \"lib/ansible/modules/windows/win_msg.py\", \n  \"module: win_msi\": \"lib/ansible/modules/windows/_win_msi.ps1\", \n  \"module: win_nssm\": \"lib/ansible/modules/windows/win_nssm.ps1\", \n  \"module: win_owner\": \"lib/ansible/modules/windows/win_owner.ps1\", \n  \"module: win_package\": \"lib/ansible/modules/windows/win_package.py\", \n  \"module: win_pagefile\": \"lib/ansible/modules/windows/win_pagefile.py\", \n  \"module: win_path\": \"lib/ansible/modules/windows/win_path.ps1\", \n  \"module: win_ping\": \"lib/ansible/modules/windows/win_ping.ps1\", \n  \"module: win_power_plan\": \"lib/ansible/modules/windows/win_power_plan.ps1\", \n  \"module: win_psexec\": \"lib/ansible/modules/windows/win_psexec.ps1\", \n  \"module: win_psmodule\": \"lib/ansible/modules/windows/win_psmodule.ps1\", \n  \"module: win_rabbitmq_plugin\": \"lib/ansible/modules/windows/win_rabbitmq_plugin.ps1\", \n  \"module: win_reboot\": \"lib/ansible/modules/windows/win_reboot.py\", \n  \"module: win_reg_stat\": \"lib/ansible/modules/windows/win_reg_stat.ps1\", \n  \"module: win_regedit\": \"lib/ansible/modules/windows/win_regedit.py\", \n  \"module: win_region\": \"lib/ansible/modules/windows/win_region.py\", \n  \"module: win_regmerge\": \"lib/ansible/modules/windows/win_regmerge.ps1\", \n  \"module: win_robocopy\": \"lib/ansible/modules/windows/win_robocopy.ps1\", \n  \"module: win_route\": \"lib/ansible/modules/windows/win_route.ps1\", \n  \"module: win_say\": \"lib/ansible/modules/windows/win_say.ps1\", \n  \"module: win_scheduled_task\": \"lib/ansible/modules/windows/win_scheduled_task.py\", \n  \"module: win_scheduled_task_stat\": \"lib/ansible/modules/windows/win_scheduled_task_stat.py\", \n  \"module: win_security_policy\": \"lib/ansible/modules/windows/win_security_policy.ps1\", \n  \"module: win_service\": \"lib/ansible/modules/windows/win_service.ps1\", \n  \"module: win_share\": \"lib/ansible/modules/windows/win_share.py\", \n  \"module: win_shell\": \"lib/ansible/modules/windows/win_shell.py\", \n  \"module: win_shortcut\": \"lib/ansible/modules/windows/win_shortcut.py\", \n  \"module: win_stat\": \"lib/ansible/modules/windows/win_stat.py\", \n  \"module: win_tempfile\": \"lib/ansible/modules/windows/win_tempfile.ps1\", \n  \"module: win_template\": \"lib/ansible/modules/windows/win_template.py\", \n  \"module: win_timezone\": \"lib/ansible/modules/windows/win_timezone.ps1\", \n  \"module: win_toast\": \"lib/ansible/modules/windows/win_toast.py\", \n  \"module: win_unzip\": \"lib/ansible/modules/windows/win_unzip.py\", \n  \"module: win_updates\": \"lib/ansible/modules/windows/win_updates.py\", \n  \"module: win_uri\": \"lib/ansible/modules/windows/win_uri.ps1\", \n  \"module: win_user\": \"lib/ansible/modules/windows/win_user.ps1\", \n  \"module: win_user_right\": \"lib/ansible/modules/windows/win_user_right.py\", \n  \"module: win_wait_for\": \"lib/ansible/modules/windows/win_wait_for.ps1\", \n  \"module: win_wakeonlan\": \"lib/ansible/modules/windows/win_wakeonlan.py\", \n  \"module: win_webpicmd\": \"lib/ansible/modules/windows/win_webpicmd.ps1\", \n  \"module: xattr\": \"lib/ansible/modules/files/xattr.py\", \n  \"module: xbps\": \"lib/ansible/modules/packaging/os/xbps.py\", \n  \"module: xenserver_facts\": \"lib/ansible/modules/cloud/misc/xenserver_facts.py\", \n  \"module: xml\": \"lib/ansible/modules/files/xml.py\", \n  \"module: yum\": \"lib/ansible/modules/packaging/os/yum.py\", \n  \"module: yum_repository\": \"lib/ansible/modules/packaging/os/yum_repository.py\", \n  \"module: zabbix_group\": \"lib/ansible/modules/monitoring/zabbix/zabbix_group.py\", \n  \"module: zabbix_host\": \"lib/ansible/modules/monitoring/zabbix/zabbix_host.py\", \n  \"module: zabbix_hostmacro\": \"lib/ansible/modules/monitoring/zabbix/zabbix_hostmacro.py\", \n  \"module: zabbix_maintenance\": \"lib/ansible/modules/monitoring/zabbix/zabbix_maintenance.py\", \n  \"module: zabbix_proxy\": \"lib/ansible/modules/monitoring/zabbix/zabbix_proxy.py\", \n  \"module: zabbix_screen\": \"lib/ansible/modules/monitoring/zabbix/zabbix_screen.py\", \n  \"module: zabbix_template\": \"lib/ansible/modules/monitoring/zabbix/zabbix_template.py\", \n  \"module: zfs\": \"lib/ansible/modules/storage/zfs/zfs.py\", \n  \"module: zfs_facts\": \"lib/ansible/modules/storage/zfs/zfs_facts.py\", \n  \"module: znode\": \"lib/ansible/modules/clustering/znode.py\", \n  \"module: zpool_facts\": \"lib/ansible/modules/storage/zfs/zpool_facts.py\", \n  \"module: zypper\": \"lib/ansible/modules/packaging/os/zypper.py\", \n  \"module: zypper_repository\": \"lib/ansible/modules/packaging/os/zypper_repository.py\", \n  \"module:pacman\": [], \n  \"module_common.py\": [\n    \"lib/ansible/executor/module_common.py\"\n  ], \n  \"module_utils\": [\n    \"lib/ansible/module_utils\"\n  ], \n  \"module_utils/basic\": [\n    \"lib/ansible/module_utils/basic.py\"\n  ], \n  \"module_utils/basic.py\": [\n    \"lib/ansible/module_utils/basic.py\"\n  ], \n  \"module_utils/basic.py\\nassorted others\": [\n    \"lib/ansible/module_utils/basic.py\"\n  ], \n  \"module_utils/digital_ocean.py\": [\n    \"lib/ansible/module_utils/digital_ocean.py\"\n  ], \n  \"module_utils/ec2.py\": [\n    \"lib/ansible/module_utils/ec2.py\"\n  ], \n  \"module_utils/eos\": [\n    \"lib/ansible/module_utils/eos.py\"\n  ], \n  \"module_utils/facts\": [\n    \"lib/ansible/module_utils/facts\"\n  ], \n  \"module_utils/facts/network/linux.py\": [\n    \"lib/ansible/module_utils/facts/network/linux.py\"\n  ], \n  \"module_utils/gcp.py\": [\n    \"lib/ansible/module_utils/gcp.py\"\n  ], \n  \"module_utils/ios\": [\n    \"lib/ansible/module_utils/ios.py\"\n  ], \n  \"module_utils/iosxr\": [\n    \"lib/ansible/module_utils/iosxr.py\"\n  ], \n  \"module_utils/junos\": [\n    \"lib/ansible/module_utils/junos.py\"\n  ], \n  \"module_utils/nxos\": [\n    \"lib/ansible/module_utils/nxos.py\"\n  ], \n  \"module_utils/powershell.ps1\": [], \n  \"module_utils/urls.py\": [], \n  \"module_utils/vmware and vmware_guest\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"module_utils/vmware.py\\nvmware_guest\": [\n    \"lib/ansible/module_utils/vmware.py\", \n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"module_utils/vyos\": [\n    \"lib/ansible/module_utils/vyos.py\"\n  ], \n  \"modules and roles\": [\n    \"lib/ansible/playbook/role\"\n  ], \n  \"modules.system.known_hosts\": [], \n  \"modules/cloud/amazon/GUIDELINES.md\": \"lib/ansible/modules/cloud/amazon/GUIDELINES.md\", \n  \"modules/cloud/amazon/_ec2_ami_search.py\": \"lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\", \n  \"modules/cloud/amazon/_ec2_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\", \n  \"modules/cloud/amazon/_ec2_remote_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\", \n  \"modules/cloud/amazon/_ec2_vpc.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n  \"modules/cloud/amazon/_ec2_vpc_dhcp_options.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\", \n  \"modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\", \n  \"modules/cloud/amazon/_iam_cert_facts.py\": \"lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\", \n  \"modules/cloud/amazon/_s3.py\": \"lib/ansible/modules/cloud/amazon/_s3.py\", \n  \"modules/cloud/amazon/aws_acm_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_acm_facts.py\", \n  \"modules/cloud/amazon/aws_api_gateway.py\": \"lib/ansible/modules/cloud/amazon/aws_api_gateway.py\", \n  \"modules/cloud/amazon/aws_direct_connect_connection.py\": \"lib/ansible/modules/cloud/amazon/aws_direct_connect_connection.py\", \n  \"modules/cloud/amazon/aws_direct_connect_link_aggregation_group.py\": \"lib/ansible/modules/cloud/amazon/aws_direct_connect_link_aggregation_group.py\", \n  \"modules/cloud/amazon/aws_kms.py\": \"lib/ansible/modules/cloud/amazon/aws_kms.py\", \n  \"modules/cloud/amazon/aws_kms_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_kms_facts.py\", \n  \"modules/cloud/amazon/aws_s3.py\": \"lib/ansible/modules/cloud/amazon/aws_s3.py\", \n  \"modules/cloud/amazon/aws_s3_bucket_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_s3_bucket_facts.py\", \n  \"modules/cloud/amazon/aws_ssm_parameter_store.py\": \"lib/ansible/modules/cloud/amazon/aws_ssm_parameter_store.py\", \n  \"modules/cloud/amazon/aws_waf_facts.py\": \"lib/ansible/modules/cloud/amazon/aws_waf_facts.py\", \n  \"modules/cloud/amazon/cloudformation.py\": \"lib/ansible/modules/cloud/amazon/cloudformation.py\", \n  \"modules/cloud/amazon/cloudformation_facts.py\": \"lib/ansible/modules/cloud/amazon/cloudformation_facts.py\", \n  \"modules/cloud/amazon/cloudfront_facts.py\": \"lib/ansible/modules/cloud/amazon/cloudfront_facts.py\", \n  \"modules/cloud/amazon/cloudtrail.py\": \"lib/ansible/modules/cloud/amazon/cloudtrail.py\", \n  \"modules/cloud/amazon/cloudwatchevent_rule.py\": \"lib/ansible/modules/cloud/amazon/cloudwatchevent_rule.py\", \n  \"modules/cloud/amazon/data_pipeline.py\": \"lib/ansible/modules/cloud/amazon/data_pipeline.py\", \n  \"modules/cloud/amazon/dynamodb_table.py\": \"lib/ansible/modules/cloud/amazon/dynamodb_table.py\", \n  \"modules/cloud/amazon/dynamodb_ttl.py\": \"lib/ansible/modules/cloud/amazon/dynamodb_ttl.py\", \n  \"modules/cloud/amazon/ec2.py\": \"lib/ansible/modules/cloud/amazon/ec2.py\", \n  \"modules/cloud/amazon/ec2_ami.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami.py\", \n  \"modules/cloud/amazon/ec2_ami_copy.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami_copy.py\", \n  \"modules/cloud/amazon/ec2_ami_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami_facts.py\", \n  \"modules/cloud/amazon/ec2_ami_find.py\": \"lib/ansible/modules/cloud/amazon/ec2_ami_find.py\", \n  \"modules/cloud/amazon/ec2_ami_search.py\": \"lib/ansible/modules/cloud/amazon/_ec2_ami_search.py\", \n  \"modules/cloud/amazon/ec2_asg.py\": \"lib/ansible/modules/cloud/amazon/ec2_asg.py\", \n  \"modules/cloud/amazon/ec2_asg_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_asg_facts.py\", \n  \"modules/cloud/amazon/ec2_customer_gateway.py\": \"lib/ansible/modules/cloud/amazon/ec2_customer_gateway.py\", \n  \"modules/cloud/amazon/ec2_eip.py\": \"lib/ansible/modules/cloud/amazon/ec2_eip.py\", \n  \"modules/cloud/amazon/ec2_elb.py\": \"lib/ansible/modules/cloud/amazon/ec2_elb.py\", \n  \"modules/cloud/amazon/ec2_elb_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_elb_facts.py\", \n  \"modules/cloud/amazon/ec2_elb_lb.py\": \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\", \n  \"modules/cloud/amazon/ec2_eni.py\": \"lib/ansible/modules/cloud/amazon/ec2_eni.py\", \n  \"modules/cloud/amazon/ec2_eni_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_eni_facts.py\", \n  \"modules/cloud/amazon/ec2_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_facts.py\", \n  \"modules/cloud/amazon/ec2_group.py\": \"lib/ansible/modules/cloud/amazon/ec2_group.py\", \n  \"modules/cloud/amazon/ec2_group_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_group_facts.py\", \n  \"modules/cloud/amazon/ec2_instance_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_instance_facts.py\", \n  \"modules/cloud/amazon/ec2_key.py\": \"lib/ansible/modules/cloud/amazon/ec2_key.py\", \n  \"modules/cloud/amazon/ec2_lc\": [\n    \"lib/ansible/modules/cloud/amazon/ec2_lc.py\"\n  ], \n  \"modules/cloud/amazon/ec2_lc.py\": \"lib/ansible/modules/cloud/amazon/ec2_lc.py\", \n  \"modules/cloud/amazon/ec2_lc_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_lc_facts.py\", \n  \"modules/cloud/amazon/ec2_lc_find.py\": \"lib/ansible/modules/cloud/amazon/ec2_lc_find.py\", \n  \"modules/cloud/amazon/ec2_metadata_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_metadata_facts.py\", \n  \"modules/cloud/amazon/ec2_metric_alarm.py\": \"lib/ansible/modules/cloud/amazon/ec2_metric_alarm.py\", \n  \"modules/cloud/amazon/ec2_remote_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_remote_facts.py\", \n  \"modules/cloud/amazon/ec2_scaling_policy.py\": \"lib/ansible/modules/cloud/amazon/ec2_scaling_policy.py\", \n  \"modules/cloud/amazon/ec2_snapshot.py\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot.py\", \n  \"modules/cloud/amazon/ec2_snapshot_copy.py\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot_copy.py\", \n  \"modules/cloud/amazon/ec2_snapshot_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_snapshot_facts.py\", \n  \"modules/cloud/amazon/ec2_tag.py\": \"lib/ansible/modules/cloud/amazon/ec2_tag.py\", \n  \"modules/cloud/amazon/ec2_vol.py\": \"lib/ansible/modules/cloud/amazon/ec2_vol.py\", \n  \"modules/cloud/amazon/ec2_vol_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vol_facts.py\", \n  \"modules/cloud/amazon/ec2_vpc.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n  \"modules/cloud/amazon/ec2_vpc_dhcp_option.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option.py\", \n  \"modules/cloud/amazon/ec2_vpc_dhcp_option_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_option_facts.py\", \n  \"modules/cloud/amazon/ec2_vpc_dhcp_options.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options.py\", \n  \"modules/cloud/amazon/ec2_vpc_dhcp_options_facts.py\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc_dhcp_options_facts.py\", \n  \"modules/cloud/amazon/ec2_vpc_endpoint.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint.py\", \n  \"modules/cloud/amazon/ec2_vpc_endpoint_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_endpoint_facts.py\", \n  \"modules/cloud/amazon/ec2_vpc_igw.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw.py\", \n  \"modules/cloud/amazon/ec2_vpc_igw_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw_facts.py\", \n  \"modules/cloud/amazon/ec2_vpc_nacl.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl.py\", \n  \"modules/cloud/amazon/ec2_vpc_nacl_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl_facts.py\", \n  \"modules/cloud/amazon/ec2_vpc_nat_gateway.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway.py\", \n  \"modules/cloud/amazon/ec2_vpc_nat_gateway_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway_facts.py\", \n  \"modules/cloud/amazon/ec2_vpc_net.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_net.py\", \n  \"modules/cloud/amazon/ec2_vpc_net_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_net_facts.py\", \n  \"modules/cloud/amazon/ec2_vpc_peer.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peer.py\", \n  \"modules/cloud/amazon/ec2_vpc_peering_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peering_facts.py\", \n  \"modules/cloud/amazon/ec2_vpc_route_table.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\", \n  \"modules/cloud/amazon/ec2_vpc_route_table_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table_facts.py\", \n  \"modules/cloud/amazon/ec2_vpc_subnet.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet.py\", \n  \"modules/cloud/amazon/ec2_vpc_subnet_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_subnet_facts.py\", \n  \"modules/cloud/amazon/ec2_vpc_vgw.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw.py\", \n  \"modules/cloud/amazon/ec2_vpc_vgw_facts.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw_facts.py\", \n  \"modules/cloud/amazon/ec2_vpc_vpn.py\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vpn.py\", \n  \"modules/cloud/amazon/ec2_win_password.py\": \"lib/ansible/modules/cloud/amazon/ec2_win_password.py\", \n  \"modules/cloud/amazon/ecs_attribute.py\": \"lib/ansible/modules/cloud/amazon/ecs_attribute.py\", \n  \"modules/cloud/amazon/ecs_cluster.py\": \"lib/ansible/modules/cloud/amazon/ecs_cluster.py\", \n  \"modules/cloud/amazon/ecs_ecr.py\": \"lib/ansible/modules/cloud/amazon/ecs_ecr.py\", \n  \"modules/cloud/amazon/ecs_service.py\": \"lib/ansible/modules/cloud/amazon/ecs_service.py\", \n  \"modules/cloud/amazon/ecs_service_facts.py\": \"lib/ansible/modules/cloud/amazon/ecs_service_facts.py\", \n  \"modules/cloud/amazon/ecs_task.py\": \"lib/ansible/modules/cloud/amazon/ecs_task.py\", \n  \"modules/cloud/amazon/ecs_taskdefinition.py\": \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py\", \n  \"modules/cloud/amazon/ecs_taskdefinition_facts.py\": \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition_facts.py\", \n  \"modules/cloud/amazon/efs.py\": \"lib/ansible/modules/cloud/amazon/efs.py\", \n  \"modules/cloud/amazon/efs_facts.py\": \"lib/ansible/modules/cloud/amazon/efs_facts.py\", \n  \"modules/cloud/amazon/elasticache.py\": \"lib/ansible/modules/cloud/amazon/elasticache.py\", \n  \"modules/cloud/amazon/elasticache_parameter_group.py\": \"lib/ansible/modules/cloud/amazon/elasticache_parameter_group.py\", \n  \"modules/cloud/amazon/elasticache_snapshot.py\": \"lib/ansible/modules/cloud/amazon/elasticache_snapshot.py\", \n  \"modules/cloud/amazon/elasticache_subnet_group.py\": \"lib/ansible/modules/cloud/amazon/elasticache_subnet_group.py\", \n  \"modules/cloud/amazon/elb_application_lb.py\": \"lib/ansible/modules/cloud/amazon/elb_application_lb.py\", \n  \"modules/cloud/amazon/elb_application_lb_facts.py\": \"lib/ansible/modules/cloud/amazon/elb_application_lb_facts.py\", \n  \"modules/cloud/amazon/elb_classic_lb.py\": \"lib/ansible/modules/cloud/amazon/elb_classic_lb.py\", \n  \"modules/cloud/amazon/elb_classic_lb_facts.py\": \"lib/ansible/modules/cloud/amazon/elb_classic_lb_facts.py\", \n  \"modules/cloud/amazon/elb_instance.py\": \"lib/ansible/modules/cloud/amazon/elb_instance.py\", \n  \"modules/cloud/amazon/elb_target_group.py\": \"lib/ansible/modules/cloud/amazon/elb_target_group.py\", \n  \"modules/cloud/amazon/elb_target_group_facts.py\": \"lib/ansible/modules/cloud/amazon/elb_target_group_facts.py\", \n  \"modules/cloud/amazon/execute_lambda.py\": \"lib/ansible/modules/cloud/amazon/execute_lambda.py\", \n  \"modules/cloud/amazon/iam.py\": \"lib/ansible/modules/cloud/amazon/iam.py\", \n  \"modules/cloud/amazon/iam_cert.py\": \"lib/ansible/modules/cloud/amazon/iam_cert.py\", \n  \"modules/cloud/amazon/iam_cert_facts.py\": \"lib/ansible/modules/cloud/amazon/_iam_cert_facts.py\", \n  \"modules/cloud/amazon/iam_group.py\": \"lib/ansible/modules/cloud/amazon/iam_group.py\", \n  \"modules/cloud/amazon/iam_managed_policy.py\": \"lib/ansible/modules/cloud/amazon/iam_managed_policy.py\", \n  \"modules/cloud/amazon/iam_mfa_device_facts.py\": \"lib/ansible/modules/cloud/amazon/iam_mfa_device_facts.py\", \n  \"modules/cloud/amazon/iam_policy.py\": \"lib/ansible/modules/cloud/amazon/iam_policy.py\", \n  \"modules/cloud/amazon/iam_role.py\": \"lib/ansible/modules/cloud/amazon/iam_role.py\", \n  \"modules/cloud/amazon/iam_server_certificate_facts.py\": \"lib/ansible/modules/cloud/amazon/iam_server_certificate_facts.py\", \n  \"modules/cloud/amazon/kinesis_stream.py\": \"lib/ansible/modules/cloud/amazon/kinesis_stream.py\", \n  \"modules/cloud/amazon/lambda.py\": [\n    \"lib/ansible/modules/cloud/amazon/lambda.py\"\n  ], \n  \"modules/cloud/amazon/lambda_alias.py\": \"lib/ansible/modules/cloud/amazon/lambda_alias.py\", \n  \"modules/cloud/amazon/lambda_event.py\": \"lib/ansible/modules/cloud/amazon/lambda_event.py\", \n  \"modules/cloud/amazon/lambda_facts.py\": \"lib/ansible/modules/cloud/amazon/lambda_facts.py\", \n  \"modules/cloud/amazon/lambda_policy.py\": \"lib/ansible/modules/cloud/amazon/lambda_policy.py\", \n  \"modules/cloud/amazon/lightsail.py\": \"lib/ansible/modules/cloud/amazon/lightsail.py\", \n  \"modules/cloud/amazon/rds.py\": \"lib/ansible/modules/cloud/amazon/rds.py\", \n  \"modules/cloud/amazon/rds_param_group.py\": \"lib/ansible/modules/cloud/amazon/rds_param_group.py\", \n  \"modules/cloud/amazon/rds_subnet_group.py\": \"lib/ansible/modules/cloud/amazon/rds_subnet_group.py\", \n  \"modules/cloud/amazon/redshift.py\": \"lib/ansible/modules/cloud/amazon/redshift.py\", \n  \"modules/cloud/amazon/redshift_facts.py\": \"lib/ansible/modules/cloud/amazon/redshift_facts.py\", \n  \"modules/cloud/amazon/redshift_subnet_group.py\": \"lib/ansible/modules/cloud/amazon/redshift_subnet_group.py\", \n  \"modules/cloud/amazon/route53.py\": \"lib/ansible/modules/cloud/amazon/route53.py\", \n  \"modules/cloud/amazon/route53_facts.py\": \"lib/ansible/modules/cloud/amazon/route53_facts.py\", \n  \"modules/cloud/amazon/route53_health_check.py\": \"lib/ansible/modules/cloud/amazon/route53_health_check.py\", \n  \"modules/cloud/amazon/route53_zone.py\": \"lib/ansible/modules/cloud/amazon/route53_zone.py\", \n  \"modules/cloud/amazon/s3\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"modules/cloud/amazon/s3.py\": \"lib/ansible/modules/cloud/amazon/_s3.py\", \n  \"modules/cloud/amazon/s3_bucket.py\": \"lib/ansible/modules/cloud/amazon/s3_bucket.py\", \n  \"modules/cloud/amazon/s3_lifecycle.py\": \"lib/ansible/modules/cloud/amazon/s3_lifecycle.py\", \n  \"modules/cloud/amazon/s3_logging.py\": \"lib/ansible/modules/cloud/amazon/s3_logging.py\", \n  \"modules/cloud/amazon/s3_sync.py\": \"lib/ansible/modules/cloud/amazon/s3_sync.py\", \n  \"modules/cloud/amazon/s3_website.py\": \"lib/ansible/modules/cloud/amazon/s3_website.py\", \n  \"modules/cloud/amazon/sns.py\": \"lib/ansible/modules/cloud/amazon/sns.py\", \n  \"modules/cloud/amazon/sns_topic.py\": \"lib/ansible/modules/cloud/amazon/sns_topic.py\", \n  \"modules/cloud/amazon/sqs_queue.py\": \"lib/ansible/modules/cloud/amazon/sqs_queue.py\", \n  \"modules/cloud/amazon/sts_assume_role.py\": \"lib/ansible/modules/cloud/amazon/sts_assume_role.py\", \n  \"modules/cloud/amazon/sts_session_token.py\": \"lib/ansible/modules/cloud/amazon/sts_session_token.py\", \n  \"modules/cloud/atomic/atomic_container.py\": \"lib/ansible/modules/cloud/atomic/atomic_container.py\", \n  \"modules/cloud/atomic/atomic_host.py\": \"lib/ansible/modules/cloud/atomic/atomic_host.py\", \n  \"modules/cloud/atomic/atomic_image.py\": \"lib/ansible/modules/cloud/atomic/atomic_image.py\", \n  \"modules/cloud/azure/_azure.py\": \"lib/ansible/modules/cloud/azure/_azure.py\", \n  \"modules/cloud/azure/azure.py\": \"lib/ansible/modules/cloud/azure/_azure.py\", \n  \"modules/cloud/azure/azure_rm_acs.py\": \"lib/ansible/modules/cloud/azure/azure_rm_acs.py\", \n  \"modules/cloud/azure/azure_rm_availabilityset.py\": \"lib/ansible/modules/cloud/azure/azure_rm_availabilityset.py\", \n  \"modules/cloud/azure/azure_rm_availabilityset_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_availabilityset_facts.py\", \n  \"modules/cloud/azure/azure_rm_deployment.py\": \"lib/ansible/modules/cloud/azure/azure_rm_deployment.py\", \n  \"modules/cloud/azure/azure_rm_dnsrecordset.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset.py\", \n  \"modules/cloud/azure/azure_rm_dnsrecordset_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset_facts.py\", \n  \"modules/cloud/azure/azure_rm_dnszone.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnszone.py\", \n  \"modules/cloud/azure/azure_rm_dnszone_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_dnszone_facts.py\", \n  \"modules/cloud/azure/azure_rm_functionapp.py\": \"lib/ansible/modules/cloud/azure/azure_rm_functionapp.py\", \n  \"modules/cloud/azure/azure_rm_functionapp_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_functionapp_facts.py\", \n  \"modules/cloud/azure/azure_rm_loadbalancer.py\": \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer.py\", \n  \"modules/cloud/azure/azure_rm_loadbalancer_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_loadbalancer_facts.py\", \n  \"modules/cloud/azure/azure_rm_managed_disk.py\": \"lib/ansible/modules/cloud/azure/azure_rm_managed_disk.py\", \n  \"modules/cloud/azure/azure_rm_managed_disk_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_managed_disk_facts.py\", \n  \"modules/cloud/azure/azure_rm_networkinterface.py\": \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface.py\", \n  \"modules/cloud/azure/azure_rm_networkinterface_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_networkinterface_facts.py\", \n  \"modules/cloud/azure/azure_rm_publicipaddress.py\": \"lib/ansible/modules/cloud/azure/azure_rm_publicipaddress.py\", \n  \"modules/cloud/azure/azure_rm_publicipaddress_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_publicipaddress_facts.py\", \n  \"modules/cloud/azure/azure_rm_resourcegroup.py\": \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup.py\", \n  \"modules/cloud/azure/azure_rm_resourcegroup_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_resourcegroup_facts.py\", \n  \"modules/cloud/azure/azure_rm_securitygroup.py\": \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup.py\", \n  \"modules/cloud/azure/azure_rm_securitygroup_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_securitygroup_facts.py\", \n  \"modules/cloud/azure/azure_rm_storageaccount.py\": \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount.py\", \n  \"modules/cloud/azure/azure_rm_storageaccount_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount_facts.py\", \n  \"modules/cloud/azure/azure_rm_storageblob.py\": \"lib/ansible/modules/cloud/azure/azure_rm_storageblob.py\", \n  \"modules/cloud/azure/azure_rm_subnet.py\": \"lib/ansible/modules/cloud/azure/azure_rm_subnet.py\", \n  \"modules/cloud/azure/azure_rm_virtualmachine.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\", \n  \"modules/cloud/azure/azure_rm_virtualmachine_extension.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_extension.py\", \n  \"modules/cloud/azure/azure_rm_virtualmachine_scaleset.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset.py\", \n  \"modules/cloud/azure/azure_rm_virtualmachine_scaleset_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine_scaleset_facts.py\", \n  \"modules/cloud/azure/azure_rm_virtualmachineimage_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachineimage_facts.py\", \n  \"modules/cloud/azure/azure_rm_virtualnetwork.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork.py\", \n  \"modules/cloud/azure/azure_rm_virtualnetwork_facts.py\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualnetwork_facts.py\", \n  \"modules/cloud/centurylink/clc_aa_policy.py\": \"lib/ansible/modules/cloud/centurylink/clc_aa_policy.py\", \n  \"modules/cloud/centurylink/clc_alert_policy.py\": \"lib/ansible/modules/cloud/centurylink/clc_alert_policy.py\", \n  \"modules/cloud/centurylink/clc_blueprint_package.py\": \"lib/ansible/modules/cloud/centurylink/clc_blueprint_package.py\", \n  \"modules/cloud/centurylink/clc_firewall_policy.py\": \"lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py\", \n  \"modules/cloud/centurylink/clc_group.py\": \"lib/ansible/modules/cloud/centurylink/clc_group.py\", \n  \"modules/cloud/centurylink/clc_loadbalancer.py\": \"lib/ansible/modules/cloud/centurylink/clc_loadbalancer.py\", \n  \"modules/cloud/centurylink/clc_modify_server.py\": \"lib/ansible/modules/cloud/centurylink/clc_modify_server.py\", \n  \"modules/cloud/centurylink/clc_publicip.py\": \"lib/ansible/modules/cloud/centurylink/clc_publicip.py\", \n  \"modules/cloud/centurylink/clc_server.py\": \"lib/ansible/modules/cloud/centurylink/clc_server.py\", \n  \"modules/cloud/centurylink/clc_server_snapshot.py\": \"lib/ansible/modules/cloud/centurylink/clc_server_snapshot.py\", \n  \"modules/cloud/cloudscale/cloudscale_server.py\": \"lib/ansible/modules/cloud/cloudscale/cloudscale_server.py\", \n  \"modules/cloud/cloudstack/_cs_nic.py\": \"lib/ansible/modules/cloud/cloudstack/_cs_nic.py\", \n  \"modules/cloud/cloudstack/cs_account.py\": \"lib/ansible/modules/cloud/cloudstack/cs_account.py\", \n  \"modules/cloud/cloudstack/cs_affinitygroup.py\": \"lib/ansible/modules/cloud/cloudstack/cs_affinitygroup.py\", \n  \"modules/cloud/cloudstack/cs_cluster.py\": \"lib/ansible/modules/cloud/cloudstack/cs_cluster.py\", \n  \"modules/cloud/cloudstack/cs_configuration.py\": \"lib/ansible/modules/cloud/cloudstack/cs_configuration.py\", \n  \"modules/cloud/cloudstack/cs_domain.py\": \"lib/ansible/modules/cloud/cloudstack/cs_domain.py\", \n  \"modules/cloud/cloudstack/cs_facts.py\": \"lib/ansible/modules/cloud/cloudstack/cs_facts.py\", \n  \"modules/cloud/cloudstack/cs_firewall.py\": \"lib/ansible/modules/cloud/cloudstack/cs_firewall.py\", \n  \"modules/cloud/cloudstack/cs_host.py\": \"lib/ansible/modules/cloud/cloudstack/cs_host.py\", \n  \"modules/cloud/cloudstack/cs_instance.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance.py\", \n  \"modules/cloud/cloudstack/cs_instance_facts.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_facts.py\", \n  \"modules/cloud/cloudstack/cs_instance_nic.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_nic.py\", \n  \"modules/cloud/cloudstack/cs_instance_nic_secondaryip.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instance_nic_secondaryip.py\", \n  \"modules/cloud/cloudstack/cs_instancegroup.py\": \"lib/ansible/modules/cloud/cloudstack/cs_instancegroup.py\", \n  \"modules/cloud/cloudstack/cs_ip_address.py\": \"lib/ansible/modules/cloud/cloudstack/cs_ip_address.py\", \n  \"modules/cloud/cloudstack/cs_iso.py\": \"lib/ansible/modules/cloud/cloudstack/cs_iso.py\", \n  \"modules/cloud/cloudstack/cs_loadbalancer_rule.py\": \"lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule.py\", \n  \"modules/cloud/cloudstack/cs_loadbalancer_rule_member.py\": \"lib/ansible/modules/cloud/cloudstack/cs_loadbalancer_rule_member.py\", \n  \"modules/cloud/cloudstack/cs_network.py\": \"lib/ansible/modules/cloud/cloudstack/cs_network.py\", \n  \"modules/cloud/cloudstack/cs_network_acl.py\": \"lib/ansible/modules/cloud/cloudstack/cs_network_acl.py\", \n  \"modules/cloud/cloudstack/cs_network_acl_rule.py\": \"lib/ansible/modules/cloud/cloudstack/cs_network_acl_rule.py\", \n  \"modules/cloud/cloudstack/cs_nic.py\": \"lib/ansible/modules/cloud/cloudstack/_cs_nic.py\", \n  \"modules/cloud/cloudstack/cs_pod.py\": \"lib/ansible/modules/cloud/cloudstack/cs_pod.py\", \n  \"modules/cloud/cloudstack/cs_portforward.py\": \"lib/ansible/modules/cloud/cloudstack/cs_portforward.py\", \n  \"modules/cloud/cloudstack/cs_project.py\": \"lib/ansible/modules/cloud/cloudstack/cs_project.py\", \n  \"modules/cloud/cloudstack/cs_region.py\": \"lib/ansible/modules/cloud/cloudstack/cs_region.py\", \n  \"modules/cloud/cloudstack/cs_resourcelimit.py\": \"lib/ansible/modules/cloud/cloudstack/cs_resourcelimit.py\", \n  \"modules/cloud/cloudstack/cs_role.py\": \"lib/ansible/modules/cloud/cloudstack/cs_role.py\", \n  \"modules/cloud/cloudstack/cs_router.py\": \"lib/ansible/modules/cloud/cloudstack/cs_router.py\", \n  \"modules/cloud/cloudstack/cs_securitygroup.py\": \"lib/ansible/modules/cloud/cloudstack/cs_securitygroup.py\", \n  \"modules/cloud/cloudstack/cs_securitygroup_rule.py\": \"lib/ansible/modules/cloud/cloudstack/cs_securitygroup_rule.py\", \n  \"modules/cloud/cloudstack/cs_snapshot_policy.py\": \"lib/ansible/modules/cloud/cloudstack/cs_snapshot_policy.py\", \n  \"modules/cloud/cloudstack/cs_sshkeypair.py\": \"lib/ansible/modules/cloud/cloudstack/cs_sshkeypair.py\", \n  \"modules/cloud/cloudstack/cs_staticnat.py\": \"lib/ansible/modules/cloud/cloudstack/cs_staticnat.py\", \n  \"modules/cloud/cloudstack/cs_storage_pool.py\": \"lib/ansible/modules/cloud/cloudstack/cs_storage_pool.py\", \n  \"modules/cloud/cloudstack/cs_template.py\": \"lib/ansible/modules/cloud/cloudstack/cs_template.py\", \n  \"modules/cloud/cloudstack/cs_user.py\": \"lib/ansible/modules/cloud/cloudstack/cs_user.py\", \n  \"modules/cloud/cloudstack/cs_vmsnapshot.py\": \"lib/ansible/modules/cloud/cloudstack/cs_vmsnapshot.py\", \n  \"modules/cloud/cloudstack/cs_volume.py\": \"lib/ansible/modules/cloud/cloudstack/cs_volume.py\", \n  \"modules/cloud/cloudstack/cs_vpc.py\": \"lib/ansible/modules/cloud/cloudstack/cs_vpc.py\", \n  \"modules/cloud/cloudstack/cs_vpn_gateway.py\": \"lib/ansible/modules/cloud/cloudstack/cs_vpn_gateway.py\", \n  \"modules/cloud/cloudstack/cs_zone.py\": \"lib/ansible/modules/cloud/cloudstack/cs_zone.py\", \n  \"modules/cloud/cloudstack/cs_zone_facts.py\": \"lib/ansible/modules/cloud/cloudstack/cs_zone_facts.py\", \n  \"modules/cloud/digital_ocean/digital_ocean.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean.py\", \n  \"modules/cloud/digital_ocean/digital_ocean_block_storage.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_block_storage.py\", \n  \"modules/cloud/digital_ocean/digital_ocean_domain.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_domain.py\", \n  \"modules/cloud/digital_ocean/digital_ocean_floating_ip.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_floating_ip.py\", \n  \"modules/cloud/digital_ocean/digital_ocean_sshkey.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey.py\", \n  \"modules/cloud/digital_ocean/digital_ocean_sshkey_facts.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_sshkey_facts.py\", \n  \"modules/cloud/digital_ocean/digital_ocean_tag.py\": \"lib/ansible/modules/cloud/digital_ocean/digital_ocean_tag.py\", \n  \"modules/cloud/dimensiondata/dimensiondata_network.py\": \"lib/ansible/modules/cloud/dimensiondata/dimensiondata_network.py\", \n  \"modules/cloud/docker/_docker.py\": \"lib/ansible/modules/cloud/docker/_docker.py\", \n  \"modules/cloud/docker/docker.py\": \"lib/ansible/modules/cloud/docker/_docker.py\", \n  \"modules/cloud/docker/docker_container.py\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n  \"modules/cloud/docker/docker_image.py\": \"lib/ansible/modules/cloud/docker/docker_image.py\", \n  \"modules/cloud/docker/docker_image_facts.py\": \"lib/ansible/modules/cloud/docker/docker_image_facts.py\", \n  \"modules/cloud/docker/docker_login.py\": \"lib/ansible/modules/cloud/docker/docker_login.py\", \n  \"modules/cloud/docker/docker_network.py\": \"lib/ansible/modules/cloud/docker/docker_network.py\", \n  \"modules/cloud/docker/docker_secret.py\": \"lib/ansible/modules/cloud/docker/docker_secret.py\", \n  \"modules/cloud/docker/docker_service.py\": \"lib/ansible/modules/cloud/docker/docker_service.py\", \n  \"modules/cloud/docker/docker_volume.py\": \"lib/ansible/modules/cloud/docker/docker_volume.py\", \n  \"modules/cloud/google/gc_storage.py\": \"lib/ansible/modules/cloud/google/gc_storage.py\", \n  \"modules/cloud/google/gcdns_record.py\": \"lib/ansible/modules/cloud/google/gcdns_record.py\", \n  \"modules/cloud/google/gcdns_zone.py\": \"lib/ansible/modules/cloud/google/gcdns_zone.py\", \n  \"modules/cloud/google/gce.py\": \"lib/ansible/modules/cloud/google/gce.py\", \n  \"modules/cloud/google/gce_eip.py\": \"lib/ansible/modules/cloud/google/gce_eip.py\", \n  \"modules/cloud/google/gce_img.py\": [\n    \"lib/ansible/modules/cloud/google/gce_img.py\"\n  ], \n  \"modules/cloud/google/gce_instance_template.py\": \"lib/ansible/modules/cloud/google/gce_instance_template.py\", \n  \"modules/cloud/google/gce_labels.py\": \"lib/ansible/modules/cloud/google/gce_labels.py\", \n  \"modules/cloud/google/gce_lb.py\": \"lib/ansible/modules/cloud/google/gce_lb.py\", \n  \"modules/cloud/google/gce_mig.py\": \"lib/ansible/modules/cloud/google/gce_mig.py\", \n  \"modules/cloud/google/gce_net.py\": \"lib/ansible/modules/cloud/google/gce_net.py\", \n  \"modules/cloud/google/gce_pd.py\": \"lib/ansible/modules/cloud/google/gce_pd.py\", \n  \"modules/cloud/google/gce_snapshot.py\": \"lib/ansible/modules/cloud/google/gce_snapshot.py\", \n  \"modules/cloud/google/gce_tag.py\": \"lib/ansible/modules/cloud/google/gce_tag.py\", \n  \"modules/cloud/google/gcp_backend_service.py\": \"lib/ansible/modules/cloud/google/gcp_backend_service.py\", \n  \"modules/cloud/google/gcp_forwarding_rule.py\": \"lib/ansible/modules/cloud/google/gcp_forwarding_rule.py\", \n  \"modules/cloud/google/gcp_healthcheck.py\": \"lib/ansible/modules/cloud/google/gcp_healthcheck.py\", \n  \"modules/cloud/google/gcp_target_proxy.py\": \"lib/ansible/modules/cloud/google/gcp_target_proxy.py\", \n  \"modules/cloud/google/gcp_url_map.py\": \"lib/ansible/modules/cloud/google/gcp_url_map.py\", \n  \"modules/cloud/google/gcpubsub.py\": \"lib/ansible/modules/cloud/google/gcpubsub.py\", \n  \"modules/cloud/google/gcpubsub_facts.py\": \"lib/ansible/modules/cloud/google/gcpubsub_facts.py\", \n  \"modules/cloud/google/gcspanner.py\": \"lib/ansible/modules/cloud/google/gcspanner.py\", \n  \"modules/cloud/linode/linode.py\": \"lib/ansible/modules/cloud/linode/linode.py\", \n  \"modules/cloud/lxc/lxc_container.py\": \"lib/ansible/modules/cloud/lxc/lxc_container.py\", \n  \"modules/cloud/lxd/lxd_container.py\": \"lib/ansible/modules/cloud/lxd/lxd_container.py\", \n  \"modules/cloud/lxd/lxd_profile.py\": \"lib/ansible/modules/cloud/lxd/lxd_profile.py\", \n  \"modules/cloud/misc/helm.py\": \"lib/ansible/modules/cloud/misc/helm.py\", \n  \"modules/cloud/misc/ovirt.py\": \"lib/ansible/modules/cloud/misc/ovirt.py\", \n  \"modules/cloud/misc/proxmox.py\": \"lib/ansible/modules/cloud/misc/proxmox.py\", \n  \"modules/cloud/misc/proxmox_kvm.py\": \"lib/ansible/modules/cloud/misc/proxmox_kvm.py\", \n  \"modules/cloud/misc/proxmox_template.py\": \"lib/ansible/modules/cloud/misc/proxmox_template.py\", \n  \"modules/cloud/misc/rhevm.py\": \"lib/ansible/modules/cloud/misc/rhevm.py\", \n  \"modules/cloud/misc/serverless.py\": \"lib/ansible/modules/cloud/misc/serverless.py\", \n  \"modules/cloud/misc/virt.py\": \"lib/ansible/modules/cloud/misc/virt.py\", \n  \"modules/cloud/misc/virt_net.py\": \"lib/ansible/modules/cloud/misc/virt_net.py\", \n  \"modules/cloud/misc/virt_pool.py\": \"lib/ansible/modules/cloud/misc/virt_pool.py\", \n  \"modules/cloud/misc/xenserver_facts.py\": \"lib/ansible/modules/cloud/misc/xenserver_facts.py\", \n  \"modules/cloud/openstack/README.md\": \"lib/ansible/modules/cloud/openstack/README.md\", \n  \"modules/cloud/openstack/_os_server_actions.py\": \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n  \"modules/cloud/openstack/os_auth.py\": \"lib/ansible/modules/cloud/openstack/os_auth.py\", \n  \"modules/cloud/openstack/os_client_config.py\": \"lib/ansible/modules/cloud/openstack/os_client_config.py\", \n  \"modules/cloud/openstack/os_flavor_facts.py\": \"lib/ansible/modules/cloud/openstack/os_flavor_facts.py\", \n  \"modules/cloud/openstack/os_floating_ip.py\": \"lib/ansible/modules/cloud/openstack/os_floating_ip.py\", \n  \"modules/cloud/openstack/os_group.py\": \"lib/ansible/modules/cloud/openstack/os_group.py\", \n  \"modules/cloud/openstack/os_image.py\": \"lib/ansible/modules/cloud/openstack/os_image.py\", \n  \"modules/cloud/openstack/os_image_facts.py\": \"lib/ansible/modules/cloud/openstack/os_image_facts.py\", \n  \"modules/cloud/openstack/os_ironic.py\": \"lib/ansible/modules/cloud/openstack/os_ironic.py\", \n  \"modules/cloud/openstack/os_ironic_inspect.py\": \"lib/ansible/modules/cloud/openstack/os_ironic_inspect.py\", \n  \"modules/cloud/openstack/os_ironic_node.py\": \"lib/ansible/modules/cloud/openstack/os_ironic_node.py\", \n  \"modules/cloud/openstack/os_keypair.py\": \"lib/ansible/modules/cloud/openstack/os_keypair.py\", \n  \"modules/cloud/openstack/os_keystone_domain.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_domain.py\", \n  \"modules/cloud/openstack/os_keystone_domain_facts.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_domain_facts.py\", \n  \"modules/cloud/openstack/os_keystone_endpoint.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_endpoint.py\", \n  \"modules/cloud/openstack/os_keystone_role.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_role.py\", \n  \"modules/cloud/openstack/os_keystone_service.py\": \"lib/ansible/modules/cloud/openstack/os_keystone_service.py\", \n  \"modules/cloud/openstack/os_network.py\": \"lib/ansible/modules/cloud/openstack/os_network.py\", \n  \"modules/cloud/openstack/os_networks_facts.py\": \"lib/ansible/modules/cloud/openstack/os_networks_facts.py\", \n  \"modules/cloud/openstack/os_nova_flavor.py\": \"lib/ansible/modules/cloud/openstack/os_nova_flavor.py\", \n  \"modules/cloud/openstack/os_nova_host_aggregate.py\": \"lib/ansible/modules/cloud/openstack/os_nova_host_aggregate.py\", \n  \"modules/cloud/openstack/os_object.py\": \"lib/ansible/modules/cloud/openstack/os_object.py\", \n  \"modules/cloud/openstack/os_port.py\": \"lib/ansible/modules/cloud/openstack/os_port.py\", \n  \"modules/cloud/openstack/os_port_facts.py\": \"lib/ansible/modules/cloud/openstack/os_port_facts.py\", \n  \"modules/cloud/openstack/os_project.py\": \"lib/ansible/modules/cloud/openstack/os_project.py\", \n  \"modules/cloud/openstack/os_project_facts.py\": \"lib/ansible/modules/cloud/openstack/os_project_facts.py\", \n  \"modules/cloud/openstack/os_quota.py\": \"lib/ansible/modules/cloud/openstack/os_quota.py\", \n  \"modules/cloud/openstack/os_recordset.py\": \"lib/ansible/modules/cloud/openstack/os_recordset.py\", \n  \"modules/cloud/openstack/os_router.py\": \"lib/ansible/modules/cloud/openstack/os_router.py\", \n  \"modules/cloud/openstack/os_security_group.py\": \"lib/ansible/modules/cloud/openstack/os_security_group.py\", \n  \"modules/cloud/openstack/os_security_group_rule.py\": \"lib/ansible/modules/cloud/openstack/os_security_group_rule.py\", \n  \"modules/cloud/openstack/os_server.py\": \"lib/ansible/modules/cloud/openstack/os_server.py\", \n  \"modules/cloud/openstack/os_server_action.py\": \"lib/ansible/modules/cloud/openstack/os_server_action.py\", \n  \"modules/cloud/openstack/os_server_actions.py\": \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n  \"modules/cloud/openstack/os_server_facts.py\": \"lib/ansible/modules/cloud/openstack/os_server_facts.py\", \n  \"modules/cloud/openstack/os_server_group.py\": \"lib/ansible/modules/cloud/openstack/os_server_group.py\", \n  \"modules/cloud/openstack/os_server_volume.py\": \"lib/ansible/modules/cloud/openstack/os_server_volume.py\", \n  \"modules/cloud/openstack/os_stack.py\": \"lib/ansible/modules/cloud/openstack/os_stack.py\", \n  \"modules/cloud/openstack/os_subnet.py\": \"lib/ansible/modules/cloud/openstack/os_subnet.py\", \n  \"modules/cloud/openstack/os_subnets_facts.py\": \"lib/ansible/modules/cloud/openstack/os_subnets_facts.py\", \n  \"modules/cloud/openstack/os_user.py\": \"lib/ansible/modules/cloud/openstack/os_user.py\", \n  \"modules/cloud/openstack/os_user_facts.py\": \"lib/ansible/modules/cloud/openstack/os_user_facts.py\", \n  \"modules/cloud/openstack/os_user_group.py\": \"lib/ansible/modules/cloud/openstack/os_user_group.py\", \n  \"modules/cloud/openstack/os_user_role.py\": \"lib/ansible/modules/cloud/openstack/os_user_role.py\", \n  \"modules/cloud/openstack/os_volume.py\": \"lib/ansible/modules/cloud/openstack/os_volume.py\", \n  \"modules/cloud/openstack/os_zone.py\": \"lib/ansible/modules/cloud/openstack/os_zone.py\", \n  \"modules/cloud/ovh/ovh_ip_loadbalancing_backend.py\": \"lib/ansible/modules/cloud/ovh/ovh_ip_loadbalancing_backend.py\", \n  \"modules/cloud/ovirt/README.rst\": \"lib/ansible/modules/cloud/ovirt/README.rst\", \n  \"modules/cloud/ovirt/_ovirt_affinity_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\", \n  \"modules/cloud/ovirt/_ovirt_affinity_labels.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\", \n  \"modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\", \n  \"modules/cloud/ovirt/_ovirt_clusters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\", \n  \"modules/cloud/ovirt/_ovirt_clusters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\", \n  \"modules/cloud/ovirt/_ovirt_datacenters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\", \n  \"modules/cloud/ovirt/_ovirt_datacenters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\", \n  \"modules/cloud/ovirt/_ovirt_disks.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\", \n  \"modules/cloud/ovirt/_ovirt_external_providers.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\", \n  \"modules/cloud/ovirt/_ovirt_external_providers_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\", \n  \"modules/cloud/ovirt/_ovirt_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\", \n  \"modules/cloud/ovirt/_ovirt_groups_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\", \n  \"modules/cloud/ovirt/ovirt_affinity_group.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_group.py\", \n  \"modules/cloud/ovirt/ovirt_affinity_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\", \n  \"modules/cloud/ovirt/ovirt_affinity_label.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_label.py\", \n  \"modules/cloud/ovirt/ovirt_affinity_label_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_label_facts.py\", \n  \"modules/cloud/ovirt/ovirt_affinity_labels.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\", \n  \"modules/cloud/ovirt/ovirt_affinity_labels_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\", \n  \"modules/cloud/ovirt/ovirt_api_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_api_facts.py\", \n  \"modules/cloud/ovirt/ovirt_auth.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_auth.py\", \n  \"modules/cloud/ovirt/ovirt_cluster.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_cluster.py\", \n  \"modules/cloud/ovirt/ovirt_cluster_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_cluster_facts.py\", \n  \"modules/cloud/ovirt/ovirt_clusters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\", \n  \"modules/cloud/ovirt/ovirt_clusters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\", \n  \"modules/cloud/ovirt/ovirt_datacenter.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_datacenter.py\", \n  \"modules/cloud/ovirt/ovirt_datacenter_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_datacenter_facts.py\", \n  \"modules/cloud/ovirt/ovirt_datacenters.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\", \n  \"modules/cloud/ovirt/ovirt_datacenters_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\", \n  \"modules/cloud/ovirt/ovirt_disk.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_disk.py\", \n  \"modules/cloud/ovirt/ovirt_disk_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_disk_facts.py\", \n  \"modules/cloud/ovirt/ovirt_disks.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\", \n  \"modules/cloud/ovirt/ovirt_external_provider.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_provider.py\", \n  \"modules/cloud/ovirt/ovirt_external_provider_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_provider_facts.py\", \n  \"modules/cloud/ovirt/ovirt_external_providers.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\", \n  \"modules/cloud/ovirt/ovirt_external_providers_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\", \n  \"modules/cloud/ovirt/ovirt_group.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_group.py\", \n  \"modules/cloud/ovirt/ovirt_group_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_group_facts.py\", \n  \"modules/cloud/ovirt/ovirt_groups.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\", \n  \"modules/cloud/ovirt/ovirt_groups_facts.py\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\", \n  \"modules/cloud/ovirt/ovirt_host_networks.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_networks.py\", \n  \"modules/cloud/ovirt/ovirt_host_pm.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_pm.py\", \n  \"modules/cloud/ovirt/ovirt_host_storage_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_storage_facts.py\", \n  \"modules/cloud/ovirt/ovirt_hosts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts.py\", \n  \"modules/cloud/ovirt/ovirt_hosts_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts_facts.py\", \n  \"modules/cloud/ovirt/ovirt_mac_pools.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_mac_pools.py\", \n  \"modules/cloud/ovirt/ovirt_networks.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_networks.py\", \n  \"modules/cloud/ovirt/ovirt_networks_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_networks_facts.py\", \n  \"modules/cloud/ovirt/ovirt_nics.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_nics.py\", \n  \"modules/cloud/ovirt/ovirt_nics_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_nics_facts.py\", \n  \"modules/cloud/ovirt/ovirt_permissions.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_permissions.py\", \n  \"modules/cloud/ovirt/ovirt_permissions_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_permissions_facts.py\", \n  \"modules/cloud/ovirt/ovirt_quotas.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_quotas.py\", \n  \"modules/cloud/ovirt/ovirt_quotas_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_quotas_facts.py\", \n  \"modules/cloud/ovirt/ovirt_scheduling_policies_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_scheduling_policies_facts.py\", \n  \"modules/cloud/ovirt/ovirt_snapshots.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_snapshots.py\", \n  \"modules/cloud/ovirt/ovirt_snapshots_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_snapshots_facts.py\", \n  \"modules/cloud/ovirt/ovirt_storage_connections.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_connections.py\", \n  \"modules/cloud/ovirt/ovirt_storage_domains.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains.py\", \n  \"modules/cloud/ovirt/ovirt_storage_domains_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains_facts.py\", \n  \"modules/cloud/ovirt/ovirt_storage_templates_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_templates_facts.py\", \n  \"modules/cloud/ovirt/ovirt_storage_vms_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_vms_facts.py\", \n  \"modules/cloud/ovirt/ovirt_tags.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_tags.py\", \n  \"modules/cloud/ovirt/ovirt_tags_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_tags_facts.py\", \n  \"modules/cloud/ovirt/ovirt_templates.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_templates.py\", \n  \"modules/cloud/ovirt/ovirt_templates_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_templates_facts.py\", \n  \"modules/cloud/ovirt/ovirt_users.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_users.py\", \n  \"modules/cloud/ovirt/ovirt_users_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_users_facts.py\", \n  \"modules/cloud/ovirt/ovirt_vmpools.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vmpools.py\", \n  \"modules/cloud/ovirt/ovirt_vmpools_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vmpools_facts.py\", \n  \"modules/cloud/ovirt/ovirt_vms.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms.py\", \n  \"modules/cloud/ovirt/ovirt_vms_facts.py\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms_facts.py\", \n  \"modules/cloud/packet/packet_device.py\": \"lib/ansible/modules/cloud/packet/packet_device.py\", \n  \"modules/cloud/packet/packet_sshkey.py\": \"lib/ansible/modules/cloud/packet/packet_sshkey.py\", \n  \"modules/cloud/profitbricks/profitbricks.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks.py\", \n  \"modules/cloud/profitbricks/profitbricks_datacenter.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_datacenter.py\", \n  \"modules/cloud/profitbricks/profitbricks_nic.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_nic.py\", \n  \"modules/cloud/profitbricks/profitbricks_volume.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume.py\", \n  \"modules/cloud/profitbricks/profitbricks_volume_attachments.py\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume_attachments.py\", \n  \"modules/cloud/pubnub/pubnub_blocks.py\": \"lib/ansible/modules/cloud/pubnub/pubnub_blocks.py\", \n  \"modules/cloud/rackspace/rax.py\": \"lib/ansible/modules/cloud/rackspace/rax.py\", \n  \"modules/cloud/rackspace/rax_cbs.py\": \"lib/ansible/modules/cloud/rackspace/rax_cbs.py\", \n  \"modules/cloud/rackspace/rax_cbs_attachments.py\": \"lib/ansible/modules/cloud/rackspace/rax_cbs_attachments.py\", \n  \"modules/cloud/rackspace/rax_cdb.py\": \"lib/ansible/modules/cloud/rackspace/rax_cdb.py\", \n  \"modules/cloud/rackspace/rax_cdb_database.py\": \"lib/ansible/modules/cloud/rackspace/rax_cdb_database.py\", \n  \"modules/cloud/rackspace/rax_cdb_user.py\": \"lib/ansible/modules/cloud/rackspace/rax_cdb_user.py\", \n  \"modules/cloud/rackspace/rax_clb.py\": \"lib/ansible/modules/cloud/rackspace/rax_clb.py\", \n  \"modules/cloud/rackspace/rax_clb_nodes.py\": \"lib/ansible/modules/cloud/rackspace/rax_clb_nodes.py\", \n  \"modules/cloud/rackspace/rax_clb_ssl.py\": \"lib/ansible/modules/cloud/rackspace/rax_clb_ssl.py\", \n  \"modules/cloud/rackspace/rax_dns.py\": \"lib/ansible/modules/cloud/rackspace/rax_dns.py\", \n  \"modules/cloud/rackspace/rax_dns_record.py\": \"lib/ansible/modules/cloud/rackspace/rax_dns_record.py\", \n  \"modules/cloud/rackspace/rax_facts.py\": \"lib/ansible/modules/cloud/rackspace/rax_facts.py\", \n  \"modules/cloud/rackspace/rax_files.py\": \"lib/ansible/modules/cloud/rackspace/rax_files.py\", \n  \"modules/cloud/rackspace/rax_files_objects.py\": \"lib/ansible/modules/cloud/rackspace/rax_files_objects.py\", \n  \"modules/cloud/rackspace/rax_identity.py\": \"lib/ansible/modules/cloud/rackspace/rax_identity.py\", \n  \"modules/cloud/rackspace/rax_keypair.py\": \"lib/ansible/modules/cloud/rackspace/rax_keypair.py\", \n  \"modules/cloud/rackspace/rax_meta.py\": \"lib/ansible/modules/cloud/rackspace/rax_meta.py\", \n  \"modules/cloud/rackspace/rax_mon_alarm.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_alarm.py\", \n  \"modules/cloud/rackspace/rax_mon_check.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_check.py\", \n  \"modules/cloud/rackspace/rax_mon_entity.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_entity.py\", \n  \"modules/cloud/rackspace/rax_mon_notification.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_notification.py\", \n  \"modules/cloud/rackspace/rax_mon_notification_plan.py\": \"lib/ansible/modules/cloud/rackspace/rax_mon_notification_plan.py\", \n  \"modules/cloud/rackspace/rax_network.py\": \"lib/ansible/modules/cloud/rackspace/rax_network.py\", \n  \"modules/cloud/rackspace/rax_queue.py\": \"lib/ansible/modules/cloud/rackspace/rax_queue.py\", \n  \"modules/cloud/rackspace/rax_scaling_group.py\": \"lib/ansible/modules/cloud/rackspace/rax_scaling_group.py\", \n  \"modules/cloud/rackspace/rax_scaling_policy.py\": \"lib/ansible/modules/cloud/rackspace/rax_scaling_policy.py\", \n  \"modules/cloud/smartos/imgadm.py\": \"lib/ansible/modules/cloud/smartos/imgadm.py\", \n  \"modules/cloud/smartos/smartos_image_facts.py\": \"lib/ansible/modules/cloud/smartos/smartos_image_facts.py\", \n  \"modules/cloud/smartos/vmadm.py\": \"lib/ansible/modules/cloud/smartos/vmadm.py\", \n  \"modules/cloud/softlayer/sl_vm.py\": \"lib/ansible/modules/cloud/softlayer/sl_vm.py\", \n  \"modules/cloud/univention/udm_dns_record.py\": \"lib/ansible/modules/cloud/univention/udm_dns_record.py\", \n  \"modules/cloud/univention/udm_dns_zone.py\": \"lib/ansible/modules/cloud/univention/udm_dns_zone.py\", \n  \"modules/cloud/univention/udm_group.py\": \"lib/ansible/modules/cloud/univention/udm_group.py\", \n  \"modules/cloud/univention/udm_share.py\": \"lib/ansible/modules/cloud/univention/udm_share.py\", \n  \"modules/cloud/univention/udm_user.py\": \"lib/ansible/modules/cloud/univention/udm_user.py\", \n  \"modules/cloud/vmware/vca_fw.py\": \"lib/ansible/modules/cloud/vmware/vca_fw.py\", \n  \"modules/cloud/vmware/vca_nat.py\": \"lib/ansible/modules/cloud/vmware/vca_nat.py\", \n  \"modules/cloud/vmware/vca_vapp.py\": \"lib/ansible/modules/cloud/vmware/vca_vapp.py\", \n  \"modules/cloud/vmware/vcenter_license.py\": \"lib/ansible/modules/cloud/vmware/vcenter_license.py\", \n  \"modules/cloud/vmware/vmware_cluster.py\": \"lib/ansible/modules/cloud/vmware/vmware_cluster.py\", \n  \"modules/cloud/vmware/vmware_datacenter.py\": \"lib/ansible/modules/cloud/vmware/vmware_datacenter.py\", \n  \"modules/cloud/vmware/vmware_dns_config.py\": \"lib/ansible/modules/cloud/vmware/vmware_dns_config.py\", \n  \"modules/cloud/vmware/vmware_dvs_host.py\": \"lib/ansible/modules/cloud/vmware/vmware_dvs_host.py\", \n  \"modules/cloud/vmware/vmware_dvs_portgroup.py\": \"lib/ansible/modules/cloud/vmware/vmware_dvs_portgroup.py\", \n  \"modules/cloud/vmware/vmware_dvswitch.py\": \"lib/ansible/modules/cloud/vmware/vmware_dvswitch.py\", \n  \"modules/cloud/vmware/vmware_guest.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n  \"modules/cloud/vmware/vmware_guest_facts.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_facts.py\", \n  \"modules/cloud/vmware/vmware_guest_find.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_find.py\", \n  \"modules/cloud/vmware/vmware_guest_powerstate.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_powerstate.py\", \n  \"modules/cloud/vmware/vmware_guest_snapshot.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_snapshot.py\", \n  \"modules/cloud/vmware/vmware_guest_tools_wait.py\": \"lib/ansible/modules/cloud/vmware/vmware_guest_tools_wait.py\", \n  \"modules/cloud/vmware/vmware_host\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_host.py\"\n  ], \n  \"modules/cloud/vmware/vmware_host.py\": \"lib/ansible/modules/cloud/vmware/vmware_host.py\", \n  \"modules/cloud/vmware/vmware_local_user_manager.py\": \"lib/ansible/modules/cloud/vmware/vmware_local_user_manager.py\", \n  \"modules/cloud/vmware/vmware_maintenancemode.py\": \"lib/ansible/modules/cloud/vmware/vmware_maintenancemode.py\", \n  \"modules/cloud/vmware/vmware_migrate_vmk.py\": \"lib/ansible/modules/cloud/vmware/vmware_migrate_vmk.py\", \n  \"modules/cloud/vmware/vmware_portgroup.py\": \"lib/ansible/modules/cloud/vmware/vmware_portgroup.py\", \n  \"modules/cloud/vmware/vmware_resource_pool.py\": \"lib/ansible/modules/cloud/vmware/vmware_resource_pool.py\", \n  \"modules/cloud/vmware/vmware_target_canonical_facts.py\": \"lib/ansible/modules/cloud/vmware/vmware_target_canonical_facts.py\", \n  \"modules/cloud/vmware/vmware_vm_facts.py\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_vm_facts.py\"\n  ], \n  \"modules/cloud/vmware/vmware_vm_shell.py\": \"lib/ansible/modules/cloud/vmware/vmware_vm_shell.py\", \n  \"modules/cloud/vmware/vmware_vm_vss_dvs_migrate.py\": \"lib/ansible/modules/cloud/vmware/vmware_vm_vss_dvs_migrate.py\", \n  \"modules/cloud/vmware/vmware_vmkernel.py\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel.py\", \n  \"modules/cloud/vmware/vmware_vmkernel_ip_config.py\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel_ip_config.py\", \n  \"modules/cloud/vmware/vmware_vmotion.py\": \"lib/ansible/modules/cloud/vmware/vmware_vmotion.py\", \n  \"modules/cloud/vmware/vmware_vsan_cluster.py\": \"lib/ansible/modules/cloud/vmware/vmware_vsan_cluster.py\", \n  \"modules/cloud/vmware/vmware_vswitch.py\": \"lib/ansible/modules/cloud/vmware/vmware_vswitch.py\", \n  \"modules/cloud/vmware/vsphere_copy.py\": \"lib/ansible/modules/cloud/vmware/vsphere_copy.py\", \n  \"modules/cloud/vmware/vsphere_guest.py\": \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\", \n  \"modules/cloud/webfaction/webfaction_app.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_app.py\", \n  \"modules/cloud/webfaction/webfaction_db.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_db.py\", \n  \"modules/cloud/webfaction/webfaction_domain.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_domain.py\", \n  \"modules/cloud/webfaction/webfaction_mailbox.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_mailbox.py\", \n  \"modules/cloud/webfaction/webfaction_site.py\": \"lib/ansible/modules/cloud/webfaction/webfaction_site.py\", \n  \"modules/clustering/consul.py\": \"lib/ansible/modules/clustering/consul.py\", \n  \"modules/clustering/consul_acl.py\": \"lib/ansible/modules/clustering/consul_acl.py\", \n  \"modules/clustering/consul_kv.py\": \"lib/ansible/modules/clustering/consul_kv.py\", \n  \"modules/clustering/consul_session.py\": \"lib/ansible/modules/clustering/consul_session.py\", \n  \"modules/clustering/kubernetes.py\": \"lib/ansible/modules/clustering/kubernetes.py\", \n  \"modules/clustering/oc.py\": \"lib/ansible/modules/clustering/oc.py\", \n  \"modules/clustering/pacemaker_cluster.py\": \"lib/ansible/modules/clustering/pacemaker_cluster.py\", \n  \"modules/clustering/znode.py\": \"lib/ansible/modules/clustering/znode.py\", \n  \"modules/commands/command.py\": \"lib/ansible/modules/commands/command.py\", \n  \"modules/commands/expect.py\": \"lib/ansible/modules/commands/expect.py\", \n  \"modules/commands/raw.py\": \"lib/ansible/modules/commands/raw.py\", \n  \"modules/commands/script.py\": \"lib/ansible/modules/commands/script.py\", \n  \"modules/commands/shell.py\": \"lib/ansible/modules/commands/shell.py\", \n  \"modules/commands/telnet.py\": \"lib/ansible/modules/commands/telnet.py\", \n  \"modules/core/cloud/amazon/iam.py\": [\n    \"lib/ansible/modules/cloud/amazon/iam.py\"\n  ], \n  \"modules/core/system/setup.py\": [\n    \"lib/ansible/modules/windows/setup.ps1\"\n  ], \n  \"modules/core/system/user\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"modules/crypto/openssl_certificate.py\": \"lib/ansible/modules/crypto/openssl_certificate.py\", \n  \"modules/crypto/openssl_csr.py\": \"lib/ansible/modules/crypto/openssl_csr.py\", \n  \"modules/crypto/openssl_privatekey.py\": \"lib/ansible/modules/crypto/openssl_privatekey.py\", \n  \"modules/crypto/openssl_publickey.py\": \"lib/ansible/modules/crypto/openssl_publickey.py\", \n  \"modules/database/influxdb/influxdb_database.py\": \"lib/ansible/modules/database/influxdb/influxdb_database.py\", \n  \"modules/database/influxdb/influxdb_retention_policy.py\": \"lib/ansible/modules/database/influxdb/influxdb_retention_policy.py\", \n  \"modules/database/misc/elasticsearch_plugin.py\": \"lib/ansible/modules/database/misc/elasticsearch_plugin.py\", \n  \"modules/database/misc/kibana_plugin.py\": \"lib/ansible/modules/database/misc/kibana_plugin.py\", \n  \"modules/database/misc/redis.py\": \"lib/ansible/modules/database/misc/redis.py\", \n  \"modules/database/misc/riak.py\": \"lib/ansible/modules/database/misc/riak.py\", \n  \"modules/database/mongodb/mongodb_parameter.py\": \"lib/ansible/modules/database/mongodb/mongodb_parameter.py\", \n  \"modules/database/mongodb/mongodb_user.py\": \"lib/ansible/modules/database/mongodb/mongodb_user.py\", \n  \"modules/database/mssql/mssql_db.py\": \"lib/ansible/modules/database/mssql/mssql_db.py\", \n  \"modules/database/mysql/mysql_db.py\": \"lib/ansible/modules/database/mysql/mysql_db.py\", \n  \"modules/database/mysql/mysql_replication.py\": \"lib/ansible/modules/database/mysql/mysql_replication.py\", \n  \"modules/database/mysql/mysql_user.py\": \"lib/ansible/modules/database/mysql/mysql_user.py\", \n  \"modules/database/mysql/mysql_variables.py\": \"lib/ansible/modules/database/mysql/mysql_variables.py\", \n  \"modules/database/postgresql/postgresql_db.py\": \"lib/ansible/modules/database/postgresql/postgresql_db.py\", \n  \"modules/database/postgresql/postgresql_ext.py\": \"lib/ansible/modules/database/postgresql/postgresql_ext.py\", \n  \"modules/database/postgresql/postgresql_lang.py\": \"lib/ansible/modules/database/postgresql/postgresql_lang.py\", \n  \"modules/database/postgresql/postgresql_privs.py\": \"lib/ansible/modules/database/postgresql/postgresql_privs.py\", \n  \"modules/database/postgresql/postgresql_schema.py\": \"lib/ansible/modules/database/postgresql/postgresql_schema.py\", \n  \"modules/database/postgresql/postgresql_user.py\": \"lib/ansible/modules/database/postgresql/postgresql_user.py\", \n  \"modules/database/proxysql/proxysql_backend_servers.py\": \"lib/ansible/modules/database/proxysql/proxysql_backend_servers.py\", \n  \"modules/database/proxysql/proxysql_global_variables.py\": \"lib/ansible/modules/database/proxysql/proxysql_global_variables.py\", \n  \"modules/database/proxysql/proxysql_manage_config.py\": \"lib/ansible/modules/database/proxysql/proxysql_manage_config.py\", \n  \"modules/database/proxysql/proxysql_mysql_users.py\": \"lib/ansible/modules/database/proxysql/proxysql_mysql_users.py\", \n  \"modules/database/proxysql/proxysql_query_rules.py\": \"lib/ansible/modules/database/proxysql/proxysql_query_rules.py\", \n  \"modules/database/proxysql/proxysql_replication_hostgroups.py\": \"lib/ansible/modules/database/proxysql/proxysql_replication_hostgroups.py\", \n  \"modules/database/proxysql/proxysql_scheduler.py\": \"lib/ansible/modules/database/proxysql/proxysql_scheduler.py\", \n  \"modules/database/vertica/vertica_configuration.py\": \"lib/ansible/modules/database/vertica/vertica_configuration.py\", \n  \"modules/database/vertica/vertica_facts.py\": \"lib/ansible/modules/database/vertica/vertica_facts.py\", \n  \"modules/database/vertica/vertica_role.py\": \"lib/ansible/modules/database/vertica/vertica_role.py\", \n  \"modules/database/vertica/vertica_schema.py\": \"lib/ansible/modules/database/vertica/vertica_schema.py\", \n  \"modules/database/vertica/vertica_user.py\": \"lib/ansible/modules/database/vertica/vertica_user.py\", \n  \"modules/expect\": [\n    \"lib/ansible/modules/commands/expect.py\"\n  ], \n  \"modules/files/acl.py\": \"lib/ansible/modules/files/acl.py\", \n  \"modules/files/archive.py\": \"lib/ansible/modules/files/archive.py\", \n  \"modules/files/assemble.py\": \"lib/ansible/modules/files/assemble.py\", \n  \"modules/files/blockinfile.py\": \"lib/ansible/modules/files/blockinfile.py\", \n  \"modules/files/copy.py\": \"lib/ansible/modules/files/copy.py\", \n  \"modules/files/fetch.py\": \"lib/ansible/modules/files/fetch.py\", \n  \"modules/files/file.py\": \"lib/ansible/modules/files/file.py\", \n  \"modules/files/find.py\": \"lib/ansible/modules/files/find.py\", \n  \"modules/files/ini_file.py\": \"lib/ansible/modules/files/ini_file.py\", \n  \"modules/files/iso_extract.py\": \"lib/ansible/modules/files/iso_extract.py\", \n  \"modules/files/lineinfile.py\": \"lib/ansible/modules/files/lineinfile.py\", \n  \"modules/files/patch.py\": \"lib/ansible/modules/files/patch.py\", \n  \"modules/files/replace.py\": \"lib/ansible/modules/files/replace.py\", \n  \"modules/files/stat.py\": \"lib/ansible/modules/files/stat.py\", \n  \"modules/files/synchronize.py\": \"lib/ansible/modules/files/synchronize.py\", \n  \"modules/files/tempfile.py\": \"lib/ansible/modules/files/tempfile.py\", \n  \"modules/files/template.py\": \"lib/ansible/modules/files/template.py\", \n  \"modules/files/unarchive.py\": \"lib/ansible/modules/files/unarchive.py\", \n  \"modules/files/xattr.py\": \"lib/ansible/modules/files/xattr.py\", \n  \"modules/files/xml.py\": \"lib/ansible/modules/files/xml.py\", \n  \"modules/identity/cyberark/cyberark_authentication.py\": \"lib/ansible/modules/identity/cyberark/cyberark_authentication.py\", \n  \"modules/identity/cyberark/cyberark_user.py\": \"lib/ansible/modules/identity/cyberark/cyberark_user.py\", \n  \"modules/identity/ipa/ipa_dnsrecord.py\": \"lib/ansible/modules/identity/ipa/ipa_dnsrecord.py\", \n  \"modules/identity/ipa/ipa_dnszone.py\": \"lib/ansible/modules/identity/ipa/ipa_dnszone.py\", \n  \"modules/identity/ipa/ipa_group.py\": \"lib/ansible/modules/identity/ipa/ipa_group.py\", \n  \"modules/identity/ipa/ipa_hbacrule.py\": \"lib/ansible/modules/identity/ipa/ipa_hbacrule.py\", \n  \"modules/identity/ipa/ipa_host.py\": \"lib/ansible/modules/identity/ipa/ipa_host.py\", \n  \"modules/identity/ipa/ipa_hostgroup.py\": \"lib/ansible/modules/identity/ipa/ipa_hostgroup.py\", \n  \"modules/identity/ipa/ipa_role.py\": \"lib/ansible/modules/identity/ipa/ipa_role.py\", \n  \"modules/identity/ipa/ipa_sudocmd.py\": \"lib/ansible/modules/identity/ipa/ipa_sudocmd.py\", \n  \"modules/identity/ipa/ipa_sudocmdgroup.py\": \"lib/ansible/modules/identity/ipa/ipa_sudocmdgroup.py\", \n  \"modules/identity/ipa/ipa_sudorule.py\": \"lib/ansible/modules/identity/ipa/ipa_sudorule.py\", \n  \"modules/identity/ipa/ipa_user.py\": \"lib/ansible/modules/identity/ipa/ipa_user.py\", \n  \"modules/identity/opendj/opendj_backendprop.py\": \"lib/ansible/modules/identity/opendj/opendj_backendprop.py\", \n  \"modules/inventory/add_host.py\": \"lib/ansible/modules/inventory/add_host.py\", \n  \"modules/inventory/group_by.py\": \"lib/ansible/modules/inventory/group_by.py\", \n  \"modules/messaging/rabbitmq_binding.py\": \"lib/ansible/modules/messaging/rabbitmq_binding.py\", \n  \"modules/messaging/rabbitmq_exchange.py\": \"lib/ansible/modules/messaging/rabbitmq_exchange.py\", \n  \"modules/messaging/rabbitmq_parameter.py\": \"lib/ansible/modules/messaging/rabbitmq_parameter.py\", \n  \"modules/messaging/rabbitmq_plugin.py\": \"lib/ansible/modules/messaging/rabbitmq_plugin.py\", \n  \"modules/messaging/rabbitmq_policy.py\": \"lib/ansible/modules/messaging/rabbitmq_policy.py\", \n  \"modules/messaging/rabbitmq_queue.py\": \"lib/ansible/modules/messaging/rabbitmq_queue.py\", \n  \"modules/messaging/rabbitmq_user.py\": \"lib/ansible/modules/messaging/rabbitmq_user.py\", \n  \"modules/messaging/rabbitmq_vhost.py\": \"lib/ansible/modules/messaging/rabbitmq_vhost.py\", \n  \"modules/monitoring/airbrake_deployment.py\": \"lib/ansible/modules/monitoring/airbrake_deployment.py\", \n  \"modules/monitoring/bigpanda.py\": \"lib/ansible/modules/monitoring/bigpanda.py\", \n  \"modules/monitoring/circonus_annotation.py\": \"lib/ansible/modules/monitoring/circonus_annotation.py\", \n  \"modules/monitoring/datadog_event.py\": \"lib/ansible/modules/monitoring/datadog_event.py\", \n  \"modules/monitoring/datadog_monitor.py\": \"lib/ansible/modules/monitoring/datadog_monitor.py\", \n  \"modules/monitoring/honeybadger_deployment.py\": \"lib/ansible/modules/monitoring/honeybadger_deployment.py\", \n  \"modules/monitoring/icinga2_feature.py\": \"lib/ansible/modules/monitoring/icinga2_feature.py\", \n  \"modules/monitoring/librato_annotation.py\": \"lib/ansible/modules/monitoring/librato_annotation.py\", \n  \"modules/monitoring/logentries.py\": \"lib/ansible/modules/monitoring/logentries.py\", \n  \"modules/monitoring/logicmonitor.py\": \"lib/ansible/modules/monitoring/logicmonitor.py\", \n  \"modules/monitoring/logicmonitor_facts.py\": \"lib/ansible/modules/monitoring/logicmonitor_facts.py\", \n  \"modules/monitoring/logstash_plugin.py\": \"lib/ansible/modules/monitoring/logstash_plugin.py\", \n  \"modules/monitoring/monit.py\": \"lib/ansible/modules/monitoring/monit.py\", \n  \"modules/monitoring/nagios.py\": \"lib/ansible/modules/monitoring/nagios.py\", \n  \"modules/monitoring/newrelic_deployment.py\": \"lib/ansible/modules/monitoring/newrelic_deployment.py\", \n  \"modules/monitoring/pagerduty.py\": \"lib/ansible/modules/monitoring/pagerduty.py\", \n  \"modules/monitoring/pagerduty_alert.py\": \"lib/ansible/modules/monitoring/pagerduty_alert.py\", \n  \"modules/monitoring/pingdom.py\": \"lib/ansible/modules/monitoring/pingdom.py\", \n  \"modules/monitoring/rollbar_deployment.py\": \"lib/ansible/modules/monitoring/rollbar_deployment.py\", \n  \"modules/monitoring/sensu_check.py\": \"lib/ansible/modules/monitoring/sensu_check.py\", \n  \"modules/monitoring/sensu_client.py\": \"lib/ansible/modules/monitoring/sensu_client.py\", \n  \"modules/monitoring/sensu_handler.py\": \"lib/ansible/modules/monitoring/sensu_handler.py\", \n  \"modules/monitoring/sensu_silence.py\": \"lib/ansible/modules/monitoring/sensu_silence.py\", \n  \"modules/monitoring/sensu_subscription.py\": \"lib/ansible/modules/monitoring/sensu_subscription.py\", \n  \"modules/monitoring/stackdriver.py\": \"lib/ansible/modules/monitoring/stackdriver.py\", \n  \"modules/monitoring/statusio_maintenance.py\": \"lib/ansible/modules/monitoring/statusio_maintenance.py\", \n  \"modules/monitoring/uptimerobot.py\": \"lib/ansible/modules/monitoring/uptimerobot.py\", \n  \"modules/monitoring/zabbix/zabbix_group.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_group.py\", \n  \"modules/monitoring/zabbix/zabbix_host.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_host.py\", \n  \"modules/monitoring/zabbix/zabbix_hostmacro.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_hostmacro.py\", \n  \"modules/monitoring/zabbix/zabbix_maintenance.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_maintenance.py\", \n  \"modules/monitoring/zabbix/zabbix_proxy.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_proxy.py\", \n  \"modules/monitoring/zabbix/zabbix_screen.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_screen.py\", \n  \"modules/monitoring/zabbix/zabbix_template.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_template.py\", \n  \"modules/net_tools/basics/get_url.py\": \"lib/ansible/modules/net_tools/basics/get_url.py\", \n  \"modules/net_tools/basics/slurp.py\": \"lib/ansible/modules/net_tools/basics/slurp.py\", \n  \"modules/net_tools/basics/uri.py\": \"lib/ansible/modules/net_tools/basics/uri.py\", \n  \"modules/net_tools/cloudflare_dns.py\": \"lib/ansible/modules/net_tools/cloudflare_dns.py\", \n  \"modules/net_tools/dnsimple.py\": \"lib/ansible/modules/net_tools/dnsimple.py\", \n  \"modules/net_tools/dnsmadeeasy.py\": \"lib/ansible/modules/net_tools/dnsmadeeasy.py\", \n  \"modules/net_tools/exoscale/exo_dns_domain.py\": \"lib/ansible/modules/net_tools/exoscale/exo_dns_domain.py\", \n  \"modules/net_tools/exoscale/exo_dns_record.py\": \"lib/ansible/modules/net_tools/exoscale/exo_dns_record.py\", \n  \"modules/net_tools/haproxy.py\": \"lib/ansible/modules/net_tools/haproxy.py\", \n  \"modules/net_tools/infinity/infinity.py\": \"lib/ansible/modules/net_tools/infinity/infinity.py\", \n  \"modules/net_tools/ipify_facts.py\": \"lib/ansible/modules/net_tools/ipify_facts.py\", \n  \"modules/net_tools/ipinfoio_facts.py\": \"lib/ansible/modules/net_tools/ipinfoio_facts.py\", \n  \"modules/net_tools/ldap/ldap_attr.py\": \"lib/ansible/modules/net_tools/ldap/ldap_attr.py\", \n  \"modules/net_tools/ldap/ldap_entry.py\": \"lib/ansible/modules/net_tools/ldap/ldap_entry.py\", \n  \"modules/net_tools/lldp.py\": \"lib/ansible/modules/net_tools/lldp.py\", \n  \"modules/net_tools/nmcli.py\": \"lib/ansible/modules/net_tools/nmcli.py\", \n  \"modules/net_tools/nsupdate.py\": \"lib/ansible/modules/net_tools/nsupdate.py\", \n  \"modules/net_tools/omapi_host.py\": \"lib/ansible/modules/net_tools/omapi_host.py\", \n  \"modules/net_tools/snmp_facts.py\": \"lib/ansible/modules/net_tools/snmp_facts.py\", \n  \"modules/network/\\n- [ ] eos/eos_linkagg\\n- [ ] iosxr/iosxr_linkagg\\n- [ ] ios/ios_linkagg\": [], \n  \"modules/network/\\n- [ ] eos/eos_lldp\\n- [ ] iosxr/iosxr_lldp\\n- [ ] ios/ios_lldp\\n- [ ] nxos/nxos_lldp\": [], \n  \"modules/network/\\n- [ ] eos/eos_static_route\\n- [ ] iosxr/iosxr_static_route\": [], \n  \"modules/network/\\n- [ ] iosxr/iosxr_vrf\\n- [ ] vyos/vyos_vrf\": [], \n  \"modules/network/\\n- [ ] nxos/nxos_vlan\\n- [ ] ios/ios_vlan\\n- [ ] iosxr/iosxr_vlan\\n- [ ] vyos/vyos_vlan\": [], \n  \"modules/network/a10/a10_server.py\": \"lib/ansible/modules/network/a10/a10_server.py\", \n  \"modules/network/a10/a10_server_axapi3.py\": \"lib/ansible/modules/network/a10/a10_server_axapi3.py\", \n  \"modules/network/a10/a10_service_group.py\": \"lib/ansible/modules/network/a10/a10_service_group.py\", \n  \"modules/network/a10/a10_virtual_server.py\": \"lib/ansible/modules/network/a10/a10_virtual_server.py\", \n  \"modules/network/aci/aci_aep.py\": \"lib/ansible/modules/network/aci/aci_aep.py\", \n  \"modules/network/aci/aci_ap.py\": \"lib/ansible/modules/network/aci/aci_ap.py\", \n  \"modules/network/aci/aci_bd.py\": \"lib/ansible/modules/network/aci/aci_bd.py\", \n  \"modules/network/aci/aci_bd_subnet.py\": \"lib/ansible/modules/network/aci/aci_bd_subnet.py\", \n  \"modules/network/aci/aci_bd_to_l3out.py\": \"lib/ansible/modules/network/aci/aci_bd_to_l3out.py\", \n  \"modules/network/aci/aci_config_rollback.py\": \"lib/ansible/modules/network/aci/aci_config_rollback.py\", \n  \"modules/network/aci/aci_config_snapshot.py\": \"lib/ansible/modules/network/aci/aci_config_snapshot.py\", \n  \"modules/network/aci/aci_contract.py\": \"lib/ansible/modules/network/aci/aci_contract.py\", \n  \"modules/network/aci/aci_contract_subject.py\": \"lib/ansible/modules/network/aci/aci_contract_subject.py\", \n  \"modules/network/aci/aci_contract_subject_to_filter.py\": \"lib/ansible/modules/network/aci/aci_contract_subject_to_filter.py\", \n  \"modules/network/aci/aci_epg.py\": \"lib/ansible/modules/network/aci/aci_epg.py\", \n  \"modules/network/aci/aci_epg_monitoring_policy.py\": \"lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py\", \n  \"modules/network/aci/aci_epg_to_contract.py\": \"lib/ansible/modules/network/aci/aci_epg_to_contract.py\", \n  \"modules/network/aci/aci_epg_to_domain.py\": \"lib/ansible/modules/network/aci/aci_epg_to_domain.py\", \n  \"modules/network/aci/aci_filter.py\": \"lib/ansible/modules/network/aci/aci_filter.py\", \n  \"modules/network/aci/aci_filter_entry.py\": \"lib/ansible/modules/network/aci/aci_filter_entry.py\", \n  \"modules/network/aci/aci_intf_policy_fc.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_fc.py\", \n  \"modules/network/aci/aci_intf_policy_l2.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_l2.py\", \n  \"modules/network/aci/aci_intf_policy_lldp.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_lldp.py\", \n  \"modules/network/aci/aci_intf_policy_mcp.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_mcp.py\", \n  \"modules/network/aci/aci_intf_policy_port_channel.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_port_channel.py\", \n  \"modules/network/aci/aci_intf_policy_port_security.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_port_security.py\", \n  \"modules/network/aci/aci_l3out_route_tag_policy.py\": \"lib/ansible/modules/network/aci/aci_l3out_route_tag_policy.py\", \n  \"modules/network/aci/aci_rest.py\": \"lib/ansible/modules/network/aci/aci_rest.py\", \n  \"modules/network/aci/aci_taboo_contract.py\": \"lib/ansible/modules/network/aci/aci_taboo_contract.py\", \n  \"modules/network/aci/aci_tenant.py\": \"lib/ansible/modules/network/aci/aci_tenant.py\", \n  \"modules/network/aci/aci_tenant_action_rule_profile.py\": \"lib/ansible/modules/network/aci/aci_tenant_action_rule_profile.py\", \n  \"modules/network/aci/aci_tenant_ep_retention_policy.py\": \"lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py\", \n  \"modules/network/aci/aci_tenant_span_dst_group.py\": \"lib/ansible/modules/network/aci/aci_tenant_span_dst_group.py\", \n  \"modules/network/aci/aci_tenant_span_src_group.py\": \"lib/ansible/modules/network/aci/aci_tenant_span_src_group.py\", \n  \"modules/network/aci/aci_tenant_span_src_group_to_dst_group.py\": \"lib/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py\", \n  \"modules/network/aci/aci_vrf.py\": \"lib/ansible/modules/network/aci/aci_vrf.py\", \n  \"modules/network/aireos/aireos_command.py\": \"lib/ansible/modules/network/aireos/aireos_command.py\", \n  \"modules/network/aireos/aireos_config.py\": \"lib/ansible/modules/network/aireos/aireos_config.py\", \n  \"modules/network/aos/aos_asn_pool.py\": \"lib/ansible/modules/network/aos/aos_asn_pool.py\", \n  \"modules/network/aos/aos_blueprint.py\": \"lib/ansible/modules/network/aos/aos_blueprint.py\", \n  \"modules/network/aos/aos_blueprint_param.py\": \"lib/ansible/modules/network/aos/aos_blueprint_param.py\", \n  \"modules/network/aos/aos_blueprint_virtnet.py\": \"lib/ansible/modules/network/aos/aos_blueprint_virtnet.py\", \n  \"modules/network/aos/aos_device.py\": \"lib/ansible/modules/network/aos/aos_device.py\", \n  \"modules/network/aos/aos_external_router.py\": \"lib/ansible/modules/network/aos/aos_external_router.py\", \n  \"modules/network/aos/aos_ip_pool.py\": \"lib/ansible/modules/network/aos/aos_ip_pool.py\", \n  \"modules/network/aos/aos_logical_device.py\": \"lib/ansible/modules/network/aos/aos_logical_device.py\", \n  \"modules/network/aos/aos_logical_device_map.py\": \"lib/ansible/modules/network/aos/aos_logical_device_map.py\", \n  \"modules/network/aos/aos_login.py\": \"lib/ansible/modules/network/aos/aos_login.py\", \n  \"modules/network/aos/aos_rack_type.py\": \"lib/ansible/modules/network/aos/aos_rack_type.py\", \n  \"modules/network/aos/aos_template.py\": \"lib/ansible/modules/network/aos/aos_template.py\", \n  \"modules/network/aruba/aruba_command.py\": \"lib/ansible/modules/network/aruba/aruba_command.py\", \n  \"modules/network/aruba/aruba_config.py\": \"lib/ansible/modules/network/aruba/aruba_config.py\", \n  \"modules/network/asa/asa_acl.py\": \"lib/ansible/modules/network/asa/asa_acl.py\", \n  \"modules/network/asa/asa_command.py\": \"lib/ansible/modules/network/asa/asa_command.py\", \n  \"modules/network/asa/asa_config.py\": \"lib/ansible/modules/network/asa/asa_config.py\", \n  \"modules/network/avi/avi_actiongroupconfig.py\": \"lib/ansible/modules/network/avi/avi_actiongroupconfig.py\", \n  \"modules/network/avi/avi_alertconfig.py\": \"lib/ansible/modules/network/avi/avi_alertconfig.py\", \n  \"modules/network/avi/avi_alertemailconfig.py\": \"lib/ansible/modules/network/avi/avi_alertemailconfig.py\", \n  \"modules/network/avi/avi_alertscriptconfig.py\": \"lib/ansible/modules/network/avi/avi_alertscriptconfig.py\", \n  \"modules/network/avi/avi_alertsyslogconfig.py\": \"lib/ansible/modules/network/avi/avi_alertsyslogconfig.py\", \n  \"modules/network/avi/avi_analyticsprofile.py\": \"lib/ansible/modules/network/avi/avi_analyticsprofile.py\", \n  \"modules/network/avi/avi_api_session.py\": \"lib/ansible/modules/network/avi/avi_api_session.py\", \n  \"modules/network/avi/avi_applicationpersistenceprofile.py\": \"lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py\", \n  \"modules/network/avi/avi_applicationprofile.py\": \"lib/ansible/modules/network/avi/avi_applicationprofile.py\", \n  \"modules/network/avi/avi_authprofile.py\": \"lib/ansible/modules/network/avi/avi_authprofile.py\", \n  \"modules/network/avi/avi_backup.py\": \"lib/ansible/modules/network/avi/avi_backup.py\", \n  \"modules/network/avi/avi_backupconfiguration.py\": \"lib/ansible/modules/network/avi/avi_backupconfiguration.py\", \n  \"modules/network/avi/avi_certificatemanagementprofile.py\": \"lib/ansible/modules/network/avi/avi_certificatemanagementprofile.py\", \n  \"modules/network/avi/avi_cloud.py\": \"lib/ansible/modules/network/avi/avi_cloud.py\", \n  \"modules/network/avi/avi_cloudconnectoruser.py\": \"lib/ansible/modules/network/avi/avi_cloudconnectoruser.py\", \n  \"modules/network/avi/avi_cloudproperties.py\": \"lib/ansible/modules/network/avi/avi_cloudproperties.py\", \n  \"modules/network/avi/avi_cluster.py\": \"lib/ansible/modules/network/avi/avi_cluster.py\", \n  \"modules/network/avi/avi_controllerproperties.py\": \"lib/ansible/modules/network/avi/avi_controllerproperties.py\", \n  \"modules/network/avi/avi_dnspolicy.py\": \"lib/ansible/modules/network/avi/avi_dnspolicy.py\", \n  \"modules/network/avi/avi_gslb.py\": \"lib/ansible/modules/network/avi/avi_gslb.py\", \n  \"modules/network/avi/avi_gslbapplicationpersistenceprofile.py\": \"lib/ansible/modules/network/avi/avi_gslbapplicationpersistenceprofile.py\", \n  \"modules/network/avi/avi_gslbgeodbprofile.py\": \"lib/ansible/modules/network/avi/avi_gslbgeodbprofile.py\", \n  \"modules/network/avi/avi_gslbhealthmonitor.py\": \"lib/ansible/modules/network/avi/avi_gslbhealthmonitor.py\", \n  \"modules/network/avi/avi_gslbservice.py\": \"lib/ansible/modules/network/avi/avi_gslbservice.py\", \n  \"modules/network/avi/avi_hardwaresecuritymodulegroup.py\": \"lib/ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py\", \n  \"modules/network/avi/avi_healthmonitor.py\": \"lib/ansible/modules/network/avi/avi_healthmonitor.py\", \n  \"modules/network/avi/avi_httppolicyset.py\": \"lib/ansible/modules/network/avi/avi_httppolicyset.py\", \n  \"modules/network/avi/avi_ipaddrgroup.py\": \"lib/ansible/modules/network/avi/avi_ipaddrgroup.py\", \n  \"modules/network/avi/avi_ipamdnsproviderprofile.py\": \"lib/ansible/modules/network/avi/avi_ipamdnsproviderprofile.py\", \n  \"modules/network/avi/avi_microservicegroup.py\": \"lib/ansible/modules/network/avi/avi_microservicegroup.py\", \n  \"modules/network/avi/avi_network.py\": \"lib/ansible/modules/network/avi/avi_network.py\", \n  \"modules/network/avi/avi_networkprofile.py\": \"lib/ansible/modules/network/avi/avi_networkprofile.py\", \n  \"modules/network/avi/avi_networksecuritypolicy.py\": \"lib/ansible/modules/network/avi/avi_networksecuritypolicy.py\", \n  \"modules/network/avi/avi_pkiprofile.py\": \"lib/ansible/modules/network/avi/avi_pkiprofile.py\", \n  \"modules/network/avi/avi_pool.py\": \"lib/ansible/modules/network/avi/avi_pool.py\", \n  \"modules/network/avi/avi_poolgroup.py\": \"lib/ansible/modules/network/avi/avi_poolgroup.py\", \n  \"modules/network/avi/avi_poolgroupdeploymentpolicy.py\": \"lib/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py\", \n  \"modules/network/avi/avi_prioritylabels.py\": \"lib/ansible/modules/network/avi/avi_prioritylabels.py\", \n  \"modules/network/avi/avi_role.py\": \"lib/ansible/modules/network/avi/avi_role.py\", \n  \"modules/network/avi/avi_scheduler.py\": \"lib/ansible/modules/network/avi/avi_scheduler.py\", \n  \"modules/network/avi/avi_seproperties.py\": \"lib/ansible/modules/network/avi/avi_seproperties.py\", \n  \"modules/network/avi/avi_serverautoscalepolicy.py\": \"lib/ansible/modules/network/avi/avi_serverautoscalepolicy.py\", \n  \"modules/network/avi/avi_serviceengine.py\": \"lib/ansible/modules/network/avi/avi_serviceengine.py\", \n  \"modules/network/avi/avi_serviceenginegroup.py\": \"lib/ansible/modules/network/avi/avi_serviceenginegroup.py\", \n  \"modules/network/avi/avi_snmptrapprofile.py\": \"lib/ansible/modules/network/avi/avi_snmptrapprofile.py\", \n  \"modules/network/avi/avi_sslkeyandcertificate.py\": \"lib/ansible/modules/network/avi/avi_sslkeyandcertificate.py\", \n  \"modules/network/avi/avi_sslprofile.py\": \"lib/ansible/modules/network/avi/avi_sslprofile.py\", \n  \"modules/network/avi/avi_stringgroup.py\": \"lib/ansible/modules/network/avi/avi_stringgroup.py\", \n  \"modules/network/avi/avi_systemconfiguration.py\": \"lib/ansible/modules/network/avi/avi_systemconfiguration.py\", \n  \"modules/network/avi/avi_tenant.py\": \"lib/ansible/modules/network/avi/avi_tenant.py\", \n  \"modules/network/avi/avi_trafficcloneprofile.py\": \"lib/ansible/modules/network/avi/avi_trafficcloneprofile.py\", \n  \"modules/network/avi/avi_useraccountprofile.py\": \"lib/ansible/modules/network/avi/avi_useraccountprofile.py\", \n  \"modules/network/avi/avi_virtualservice.py\": \"lib/ansible/modules/network/avi/avi_virtualservice.py\", \n  \"modules/network/avi/avi_vrfcontext.py\": \"lib/ansible/modules/network/avi/avi_vrfcontext.py\", \n  \"modules/network/avi/avi_vsdatascriptset.py\": \"lib/ansible/modules/network/avi/avi_vsdatascriptset.py\", \n  \"modules/network/avi/avi_vsvip.py\": \"lib/ansible/modules/network/avi/avi_vsvip.py\", \n  \"modules/network/avi/avi_webhook.py\": \"lib/ansible/modules/network/avi/avi_webhook.py\", \n  \"modules/network/bigswitch/bcf_switch.py\": \"lib/ansible/modules/network/bigswitch/bcf_switch.py\", \n  \"modules/network/bigswitch/bigmon_chain.py\": \"lib/ansible/modules/network/bigswitch/bigmon_chain.py\", \n  \"modules/network/bigswitch/bigmon_policy.py\": \"lib/ansible/modules/network/bigswitch/bigmon_policy.py\", \n  \"modules/network/citrix/_netscaler.py\": \"lib/ansible/modules/network/citrix/_netscaler.py\", \n  \"modules/network/citrix/netscaler.py\": \"lib/ansible/modules/network/citrix/_netscaler.py\", \n  \"modules/network/cloudengine/ce_aaa_server.py\": \"lib/ansible/modules/network/cloudengine/ce_aaa_server.py\", \n  \"modules/network/cloudengine/ce_aaa_server_host.py\": \"lib/ansible/modules/network/cloudengine/ce_aaa_server_host.py\", \n  \"modules/network/cloudengine/ce_acl.py\": \"lib/ansible/modules/network/cloudengine/ce_acl.py\", \n  \"modules/network/cloudengine/ce_acl_advance.py\": \"lib/ansible/modules/network/cloudengine/ce_acl_advance.py\", \n  \"modules/network/cloudengine/ce_acl_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_acl_interface.py\", \n  \"modules/network/cloudengine/ce_bfd_global.py\": \"lib/ansible/modules/network/cloudengine/ce_bfd_global.py\", \n  \"modules/network/cloudengine/ce_bfd_session.py\": \"lib/ansible/modules/network/cloudengine/ce_bfd_session.py\", \n  \"modules/network/cloudengine/ce_bfd_view.py\": \"lib/ansible/modules/network/cloudengine/ce_bfd_view.py\", \n  \"modules/network/cloudengine/ce_bgp.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp.py\", \n  \"modules/network/cloudengine/ce_bgp_af.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp_af.py\", \n  \"modules/network/cloudengine/ce_bgp_neighbor.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor.py\", \n  \"modules/network/cloudengine/ce_bgp_neighbor_af.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor_af.py\", \n  \"modules/network/cloudengine/ce_command.py\": \"lib/ansible/modules/network/cloudengine/ce_command.py\", \n  \"modules/network/cloudengine/ce_config.py\": \"lib/ansible/modules/network/cloudengine/ce_config.py\", \n  \"modules/network/cloudengine/ce_dldp.py\": \"lib/ansible/modules/network/cloudengine/ce_dldp.py\", \n  \"modules/network/cloudengine/ce_dldp_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_dldp_interface.py\", \n  \"modules/network/cloudengine/ce_eth_trunk.py\": \"lib/ansible/modules/network/cloudengine/ce_eth_trunk.py\", \n  \"modules/network/cloudengine/ce_evpn_bd_vni.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bd_vni.py\", \n  \"modules/network/cloudengine/ce_evpn_bgp.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp.py\", \n  \"modules/network/cloudengine/ce_evpn_bgp_rr.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp_rr.py\", \n  \"modules/network/cloudengine/ce_evpn_global.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_global.py\", \n  \"modules/network/cloudengine/ce_facts.py\": \"lib/ansible/modules/network/cloudengine/ce_facts.py\", \n  \"modules/network/cloudengine/ce_file_copy.py\": \"lib/ansible/modules/network/cloudengine/ce_file_copy.py\", \n  \"modules/network/cloudengine/ce_info_center_debug.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_debug.py\", \n  \"modules/network/cloudengine/ce_info_center_global.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_global.py\", \n  \"modules/network/cloudengine/ce_info_center_log.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_log.py\", \n  \"modules/network/cloudengine/ce_info_center_trap.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_trap.py\", \n  \"modules/network/cloudengine/ce_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_interface.py\", \n  \"modules/network/cloudengine/ce_interface_ospf.py\": \"lib/ansible/modules/network/cloudengine/ce_interface_ospf.py\", \n  \"modules/network/cloudengine/ce_ip_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_ip_interface.py\", \n  \"modules/network/cloudengine/ce_link_status.py\": \"lib/ansible/modules/network/cloudengine/ce_link_status.py\", \n  \"modules/network/cloudengine/ce_mlag_config.py\": \"lib/ansible/modules/network/cloudengine/ce_mlag_config.py\", \n  \"modules/network/cloudengine/ce_mlag_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_mlag_interface.py\", \n  \"modules/network/cloudengine/ce_mtu.py\": \"lib/ansible/modules/network/cloudengine/ce_mtu.py\", \n  \"modules/network/cloudengine/ce_netconf.py\": \"lib/ansible/modules/network/cloudengine/ce_netconf.py\", \n  \"modules/network/cloudengine/ce_netstream_aging.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_aging.py\", \n  \"modules/network/cloudengine/ce_netstream_export.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_export.py\", \n  \"modules/network/cloudengine/ce_netstream_global.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_global.py\", \n  \"modules/network/cloudengine/ce_netstream_template.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_template.py\", \n  \"modules/network/cloudengine/ce_ntp.py\": \"lib/ansible/modules/network/cloudengine/ce_ntp.py\", \n  \"modules/network/cloudengine/ce_ntp_auth.py\": \"lib/ansible/modules/network/cloudengine/ce_ntp_auth.py\", \n  \"modules/network/cloudengine/ce_ospf.py\": \"lib/ansible/modules/network/cloudengine/ce_ospf.py\", \n  \"modules/network/cloudengine/ce_ospf_vrf.py\": \"lib/ansible/modules/network/cloudengine/ce_ospf_vrf.py\", \n  \"modules/network/cloudengine/ce_reboot.py\": \"lib/ansible/modules/network/cloudengine/ce_reboot.py\", \n  \"modules/network/cloudengine/ce_rollback.py\": \"lib/ansible/modules/network/cloudengine/ce_rollback.py\", \n  \"modules/network/cloudengine/ce_sflow.py\": \"lib/ansible/modules/network/cloudengine/ce_sflow.py\", \n  \"modules/network/cloudengine/ce_snmp_community.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_community.py\", \n  \"modules/network/cloudengine/ce_snmp_contact.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_contact.py\", \n  \"modules/network/cloudengine/ce_snmp_location.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_location.py\", \n  \"modules/network/cloudengine/ce_snmp_target_host.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_target_host.py\", \n  \"modules/network/cloudengine/ce_snmp_traps.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_traps.py\", \n  \"modules/network/cloudengine/ce_snmp_user.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_user.py\", \n  \"modules/network/cloudengine/ce_startup.py\": \"lib/ansible/modules/network/cloudengine/ce_startup.py\", \n  \"modules/network/cloudengine/ce_static_route.py\": \"lib/ansible/modules/network/cloudengine/ce_static_route.py\", \n  \"modules/network/cloudengine/ce_stp.py\": \"lib/ansible/modules/network/cloudengine/ce_stp.py\", \n  \"modules/network/cloudengine/ce_switchport.py\": \"lib/ansible/modules/network/cloudengine/ce_switchport.py\", \n  \"modules/network/cloudengine/ce_vlan.py\": \"lib/ansible/modules/network/cloudengine/ce_vlan.py\", \n  \"modules/network/cloudengine/ce_vrf.py\": \"lib/ansible/modules/network/cloudengine/ce_vrf.py\", \n  \"modules/network/cloudengine/ce_vrf_af.py\": \"lib/ansible/modules/network/cloudengine/ce_vrf_af.py\", \n  \"modules/network/cloudengine/ce_vrf_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_vrf_interface.py\", \n  \"modules/network/cloudengine/ce_vrrp.py\": \"lib/ansible/modules/network/cloudengine/ce_vrrp.py\", \n  \"modules/network/cloudengine/ce_vxlan_arp.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_arp.py\", \n  \"modules/network/cloudengine/ce_vxlan_gateway.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_gateway.py\", \n  \"modules/network/cloudengine/ce_vxlan_global.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_global.py\", \n  \"modules/network/cloudengine/ce_vxlan_tunnel.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_tunnel.py\", \n  \"modules/network/cloudengine/ce_vxlan_vap.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_vap.py\", \n  \"modules/network/cloudvision/cv_server_provision.py\": \"lib/ansible/modules/network/cloudvision/cv_server_provision.py\", \n  \"modules/network/cumulus/_cl_bond.py\": \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n  \"modules/network/cumulus/_cl_bridge.py\": \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n  \"modules/network/cumulus/_cl_img_install.py\": \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n  \"modules/network/cumulus/_cl_interface.py\": \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n  \"modules/network/cumulus/_cl_interface_policy.py\": \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n  \"modules/network/cumulus/_cl_license.py\": \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n  \"modules/network/cumulus/_cl_ports.py\": \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n  \"modules/network/cumulus/cl_bond.py\": \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n  \"modules/network/cumulus/cl_bridge.py\": \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n  \"modules/network/cumulus/cl_img_install.py\": \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n  \"modules/network/cumulus/cl_interface.py\": \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n  \"modules/network/cumulus/cl_interface_policy.py\": \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n  \"modules/network/cumulus/cl_license.py\": \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n  \"modules/network/cumulus/cl_ports.py\": \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n  \"modules/network/cumulus/nclu.py\": \"lib/ansible/modules/network/cumulus/nclu.py\", \n  \"modules/network/dellos10/dellos10_command.py\": \"lib/ansible/modules/network/dellos10/dellos10_command.py\", \n  \"modules/network/dellos10/dellos10_config.py\": \"lib/ansible/modules/network/dellos10/dellos10_config.py\", \n  \"modules/network/dellos10/dellos10_facts.py\": \"lib/ansible/modules/network/dellos10/dellos10_facts.py\", \n  \"modules/network/dellos6/dellos6_command.py\": \"lib/ansible/modules/network/dellos6/dellos6_command.py\", \n  \"modules/network/dellos6/dellos6_config.py\": \"lib/ansible/modules/network/dellos6/dellos6_config.py\", \n  \"modules/network/dellos6/dellos6_facts.py\": \"lib/ansible/modules/network/dellos6/dellos6_facts.py\", \n  \"modules/network/dellos9/dellos9_command.py\": \"lib/ansible/modules/network/dellos9/dellos9_command.py\", \n  \"modules/network/dellos9/dellos9_config.py\": \"lib/ansible/modules/network/dellos9/dellos9_config.py\", \n  \"modules/network/dellos9/dellos9_facts.py\": \"lib/ansible/modules/network/dellos9/dellos9_facts.py\", \n  \"modules/network/eos/eos_banner.py\": \"lib/ansible/modules/network/eos/eos_banner.py\", \n  \"modules/network/eos/eos_command.py\": \"lib/ansible/modules/network/eos/eos_command.py\", \n  \"modules/network/eos/eos_config.py\": \"lib/ansible/modules/network/eos/eos_config.py\", \n  \"modules/network/eos/eos_eapi.py\": \"lib/ansible/modules/network/eos/eos_eapi.py\", \n  \"modules/network/eos/eos_facts.py\": \"lib/ansible/modules/network/eos/eos_facts.py\", \n  \"modules/network/eos/eos_logging.py\": \"lib/ansible/modules/network/eos/eos_logging.py\", \n  \"modules/network/eos/eos_system.py\": \"lib/ansible/modules/network/eos/eos_system.py\", \n  \"modules/network/eos/eos_user.py\": \"lib/ansible/modules/network/eos/eos_user.py\", \n  \"modules/network/eos/eos_vlan.py\": \"lib/ansible/modules/network/eos/eos_vlan.py\", \n  \"modules/network/eos/eos_vrf.py\": \"lib/ansible/modules/network/eos/eos_vrf.py\", \n  \"modules/network/f5\": [\n    \"lib/ansible/modules/network/f5\"\n  ], \n  \"modules/network/f5/bigip_asm_policy.py\": \"lib/ansible/modules/network/f5/bigip_asm_policy.py\", \n  \"modules/network/f5/bigip_command.py\": \"lib/ansible/modules/network/f5/bigip_command.py\", \n  \"modules/network/f5/bigip_config.py\": \"lib/ansible/modules/network/f5/bigip_config.py\", \n  \"modules/network/f5/bigip_configsync_action.py\": \"lib/ansible/modules/network/f5/bigip_configsync_action.py\", \n  \"modules/network/f5/bigip_configsync_actions.py\": \"lib/ansible/modules/network/f5/bigip_configsync_actions.py\", \n  \"modules/network/f5/bigip_device_dns.py\": \"lib/ansible/modules/network/f5/bigip_device_dns.py\", \n  \"modules/network/f5/bigip_device_ntp.py\": \"lib/ansible/modules/network/f5/bigip_device_ntp.py\", \n  \"modules/network/f5/bigip_device_sshd.py\": \"lib/ansible/modules/network/f5/bigip_device_sshd.py\", \n  \"modules/network/f5/bigip_facts.py\": \"lib/ansible/modules/network/f5/bigip_facts.py\", \n  \"modules/network/f5/bigip_gtm_datacenter.py\": \"lib/ansible/modules/network/f5/bigip_gtm_datacenter.py\", \n  \"modules/network/f5/bigip_gtm_facts.py\": \"lib/ansible/modules/network/f5/bigip_gtm_facts.py\", \n  \"modules/network/f5/bigip_gtm_pool.py\": \"lib/ansible/modules/network/f5/bigip_gtm_pool.py\", \n  \"modules/network/f5/bigip_gtm_virtual_server.py\": \"lib/ansible/modules/network/f5/bigip_gtm_virtual_server.py\", \n  \"modules/network/f5/bigip_gtm_wide_ip.py\": \"lib/ansible/modules/network/f5/bigip_gtm_wide_ip.py\", \n  \"modules/network/f5/bigip_hostname.py\": \"lib/ansible/modules/network/f5/bigip_hostname.py\", \n  \"modules/network/f5/bigip_iapp_service.py\": \"lib/ansible/modules/network/f5/bigip_iapp_service.py\", \n  \"modules/network/f5/bigip_iapp_template.py\": \"lib/ansible/modules/network/f5/bigip_iapp_template.py\", \n  \"modules/network/f5/bigip_iapplx_package.py\": \"lib/ansible/modules/network/f5/bigip_iapplx_package.py\", \n  \"modules/network/f5/bigip_irule.py\": \"lib/ansible/modules/network/f5/bigip_irule.py\", \n  \"modules/network/f5/bigip_monitor_http.py\": \"lib/ansible/modules/network/f5/bigip_monitor_http.py\", \n  \"modules/network/f5/bigip_monitor_https.py\": \"lib/ansible/modules/network/f5/bigip_monitor_https.py\", \n  \"modules/network/f5/bigip_monitor_tcp.py\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp.py\", \n  \"modules/network/f5/bigip_monitor_tcp_echo.py\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp_echo.py\", \n  \"modules/network/f5/bigip_monitor_tcp_half_open.py\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp_half_open.py\", \n  \"modules/network/f5/bigip_node.py\": \"lib/ansible/modules/network/f5/bigip_node.py\", \n  \"modules/network/f5/bigip_partition.py\": \"lib/ansible/modules/network/f5/bigip_partition.py\", \n  \"modules/network/f5/bigip_policy.py\": \"lib/ansible/modules/network/f5/bigip_policy.py\", \n  \"modules/network/f5/bigip_pool.py\": \"lib/ansible/modules/network/f5/bigip_pool.py\", \n  \"modules/network/f5/bigip_pool_member.py\": \"lib/ansible/modules/network/f5/bigip_pool_member.py\", \n  \"modules/network/f5/bigip_provision.py\": \"lib/ansible/modules/network/f5/bigip_provision.py\", \n  \"modules/network/f5/bigip_qkview.py\": \"lib/ansible/modules/network/f5/bigip_qkview.py\", \n  \"modules/network/f5/bigip_remote_syslog.py\": \"lib/ansible/modules/network/f5/bigip_remote_syslog.py\", \n  \"modules/network/f5/bigip_routedomain.py\": \"lib/ansible/modules/network/f5/bigip_routedomain.py\", \n  \"modules/network/f5/bigip_selfip.py\": \"lib/ansible/modules/network/f5/bigip_selfip.py\", \n  \"modules/network/f5/bigip_snat_pool.py\": \"lib/ansible/modules/network/f5/bigip_snat_pool.py\", \n  \"modules/network/f5/bigip_snmp.py\": \"lib/ansible/modules/network/f5/bigip_snmp.py\", \n  \"modules/network/f5/bigip_snmp_trap.py\": \"lib/ansible/modules/network/f5/bigip_snmp_trap.py\", \n  \"modules/network/f5/bigip_ssl_certificate.py\": \"lib/ansible/modules/network/f5/bigip_ssl_certificate.py\", \n  \"modules/network/f5/bigip_ssl_key.py\": \"lib/ansible/modules/network/f5/bigip_ssl_key.py\", \n  \"modules/network/f5/bigip_sys_db.py\": \"lib/ansible/modules/network/f5/bigip_sys_db.py\", \n  \"modules/network/f5/bigip_sys_global.py\": \"lib/ansible/modules/network/f5/bigip_sys_global.py\", \n  \"modules/network/f5/bigip_ucs.py\": \"lib/ansible/modules/network/f5/bigip_ucs.py\", \n  \"modules/network/f5/bigip_user.py\": \"lib/ansible/modules/network/f5/bigip_user.py\", \n  \"modules/network/f5/bigip_virtual_address.py\": \"lib/ansible/modules/network/f5/bigip_virtual_address.py\", \n  \"modules/network/f5/bigip_virtual_server.py\": \"lib/ansible/modules/network/f5/bigip_virtual_server.py\", \n  \"modules/network/f5/bigip_vlan.py\": \"lib/ansible/modules/network/f5/bigip_vlan.py\", \n  \"modules/network/f5/bigip_wait.py\": \"lib/ansible/modules/network/f5/bigip_wait.py\", \n  \"modules/network/fortios\\nBackuping\": [\n    \"lib/ansible/modules/network/fortios/__init__.py\"\n  ], \n  \"modules/network/fortios/fortios_address.py\": \"lib/ansible/modules/network/fortios/fortios_address.py\", \n  \"modules/network/fortios/fortios_config.py\": \"lib/ansible/modules/network/fortios/fortios_config.py\", \n  \"modules/network/fortios/fortios_ipv4_policy.py\": \"lib/ansible/modules/network/fortios/fortios_ipv4_policy.py\", \n  \"modules/network/illumos/dladm_etherstub.py\": \"lib/ansible/modules/network/illumos/dladm_etherstub.py\", \n  \"modules/network/illumos/dladm_iptun.py\": \"lib/ansible/modules/network/illumos/dladm_iptun.py\", \n  \"modules/network/illumos/dladm_linkprop.py\": \"lib/ansible/modules/network/illumos/dladm_linkprop.py\", \n  \"modules/network/illumos/dladm_vlan.py\": \"lib/ansible/modules/network/illumos/dladm_vlan.py\", \n  \"modules/network/illumos/dladm_vnic.py\": \"lib/ansible/modules/network/illumos/dladm_vnic.py\", \n  \"modules/network/illumos/flowadm.py\": \"lib/ansible/modules/network/illumos/flowadm.py\", \n  \"modules/network/illumos/ipadm_addr.py\": \"lib/ansible/modules/network/illumos/ipadm_addr.py\", \n  \"modules/network/illumos/ipadm_addrprop.py\": \"lib/ansible/modules/network/illumos/ipadm_addrprop.py\", \n  \"modules/network/illumos/ipadm_if.py\": \"lib/ansible/modules/network/illumos/ipadm_if.py\", \n  \"modules/network/illumos/ipadm_ifprop.py\": \"lib/ansible/modules/network/illumos/ipadm_ifprop.py\", \n  \"modules/network/illumos/ipadm_prop.py\": \"lib/ansible/modules/network/illumos/ipadm_prop.py\", \n  \"modules/network/interface/net_interface.py\": \"lib/ansible/modules/network/interface/net_interface.py\", \n  \"modules/network/interface/net_linkagg.py\": \"lib/ansible/modules/network/interface/net_linkagg.py\", \n  \"modules/network/interface/net_lldp_interface.py\": \"lib/ansible/modules/network/interface/net_lldp_interface.py\", \n  \"modules/network/ios/ios_banner.py\": \"lib/ansible/modules/network/ios/ios_banner.py\", \n  \"modules/network/ios/ios_command.py\": \"lib/ansible/modules/network/ios/ios_command.py\", \n  \"modules/network/ios/ios_config.py\": \"lib/ansible/modules/network/ios/ios_config.py\", \n  \"modules/network/ios/ios_facts.py\": \"lib/ansible/modules/network/ios/ios_facts.py\", \n  \"modules/network/ios/ios_interface.py\": \"lib/ansible/modules/network/ios/ios_interface.py\", \n  \"modules/network/ios/ios_logging.py\": \"lib/ansible/modules/network/ios/ios_logging.py\", \n  \"modules/network/ios/ios_ping.py\": \"lib/ansible/modules/network/ios/ios_ping.py\", \n  \"modules/network/ios/ios_static_route.py\": \"lib/ansible/modules/network/ios/ios_static_route.py\", \n  \"modules/network/ios/ios_system.py\": \"lib/ansible/modules/network/ios/ios_system.py\", \n  \"modules/network/ios/ios_user.py\": \"lib/ansible/modules/network/ios/ios_user.py\", \n  \"modules/network/ios/ios_vrf.py\": \"lib/ansible/modules/network/ios/ios_vrf.py\", \n  \"modules/network/iosxr\": [\n    \"lib/ansible/modules/network/iosxr\"\n  ], \n  \"modules/network/iosxr/iosxr_banner.py\": \"lib/ansible/modules/network/iosxr/iosxr_banner.py\", \n  \"modules/network/iosxr/iosxr_command.py\": \"lib/ansible/modules/network/iosxr/iosxr_command.py\", \n  \"modules/network/iosxr/iosxr_config.py\": \"lib/ansible/modules/network/iosxr/iosxr_config.py\", \n  \"modules/network/iosxr/iosxr_facts.py\": \"lib/ansible/modules/network/iosxr/iosxr_facts.py\", \n  \"modules/network/iosxr/iosxr_interface.py\": \"lib/ansible/modules/network/iosxr/iosxr_interface.py\", \n  \"modules/network/iosxr/iosxr_logging.py\": \"lib/ansible/modules/network/iosxr/iosxr_logging.py\", \n  \"modules/network/iosxr/iosxr_netconf.py\": \"lib/ansible/modules/network/iosxr/iosxr_netconf.py\", \n  \"modules/network/iosxr/iosxr_system.py\": \"lib/ansible/modules/network/iosxr/iosxr_system.py\", \n  \"modules/network/iosxr/iosxr_user.py\": \"lib/ansible/modules/network/iosxr/iosxr_user.py\", \n  \"modules/network/ironware/ironware_command.py\": \"lib/ansible/modules/network/ironware/ironware_command.py\", \n  \"modules/network/junos/junos_banner.py\": \"lib/ansible/modules/network/junos/junos_banner.py\", \n  \"modules/network/junos/junos_command.py\": \"lib/ansible/modules/network/junos/junos_command.py\", \n  \"modules/network/junos/junos_config\": [\n    \"lib/ansible/modules/network/junos/junos_config.py\"\n  ], \n  \"modules/network/junos/junos_config.py\": \"lib/ansible/modules/network/junos/junos_config.py\", \n  \"modules/network/junos/junos_facts.py\": \"lib/ansible/modules/network/junos/junos_facts.py\", \n  \"modules/network/junos/junos_interface.py\": \"lib/ansible/modules/network/junos/junos_interface.py\", \n  \"modules/network/junos/junos_l3_interface.py\": \"lib/ansible/modules/network/junos/junos_l3_interface.py\", \n  \"modules/network/junos/junos_linkagg.py\": \"lib/ansible/modules/network/junos/junos_linkagg.py\", \n  \"modules/network/junos/junos_lldp.py\": \"lib/ansible/modules/network/junos/junos_lldp.py\", \n  \"modules/network/junos/junos_lldp_interface.py\": \"lib/ansible/modules/network/junos/junos_lldp_interface.py\", \n  \"modules/network/junos/junos_logging.py\": \"lib/ansible/modules/network/junos/junos_logging.py\", \n  \"modules/network/junos/junos_netconf.py\": \"lib/ansible/modules/network/junos/junos_netconf.py\", \n  \"modules/network/junos/junos_package.py\": \"lib/ansible/modules/network/junos/junos_package.py\", \n  \"modules/network/junos/junos_rpc.py\": \"lib/ansible/modules/network/junos/junos_rpc.py\", \n  \"modules/network/junos/junos_static_route.py\": \"lib/ansible/modules/network/junos/junos_static_route.py\", \n  \"modules/network/junos/junos_system.py\": \"lib/ansible/modules/network/junos/junos_system.py\", \n  \"modules/network/junos/junos_user.py\": \"lib/ansible/modules/network/junos/junos_user.py\", \n  \"modules/network/junos/junos_vlan.py\": \"lib/ansible/modules/network/junos/junos_vlan.py\", \n  \"modules/network/junos/junos_vrf.py\": \"lib/ansible/modules/network/junos/junos_vrf.py\", \n  \"modules/network/layer2/net_l2_interface.py\": \"lib/ansible/modules/network/layer2/net_l2_interface.py\", \n  \"modules/network/layer2/net_vlan.py\": \"lib/ansible/modules/network/layer2/net_vlan.py\", \n  \"modules/network/layer3/net_l3_interface.py\": \"lib/ansible/modules/network/layer3/net_l3_interface.py\", \n  \"modules/network/layer3/net_vrf.py\": \"lib/ansible/modules/network/layer3/net_vrf.py\", \n  \"modules/network/ldap_attr\": [\n    \"lib/ansible/modules/net_tools/ldap/ldap_attr.py\"\n  ], \n  \"modules/network/lenovo/cnos_backup.py\": \"lib/ansible/modules/network/lenovo/cnos_backup.py\", \n  \"modules/network/lenovo/cnos_bgp.py\": \"lib/ansible/modules/network/lenovo/cnos_bgp.py\", \n  \"modules/network/lenovo/cnos_command.py\": \"lib/ansible/modules/network/lenovo/cnos_command.py\", \n  \"modules/network/lenovo/cnos_conditional_command.py\": \"lib/ansible/modules/network/lenovo/cnos_conditional_command.py\", \n  \"modules/network/lenovo/cnos_conditional_template.py\": \"lib/ansible/modules/network/lenovo/cnos_conditional_template.py\", \n  \"modules/network/lenovo/cnos_factory.py\": \"lib/ansible/modules/network/lenovo/cnos_factory.py\", \n  \"modules/network/lenovo/cnos_facts.py\": \"lib/ansible/modules/network/lenovo/cnos_facts.py\", \n  \"modules/network/lenovo/cnos_image.py\": \"lib/ansible/modules/network/lenovo/cnos_image.py\", \n  \"modules/network/lenovo/cnos_interface.py\": \"lib/ansible/modules/network/lenovo/cnos_interface.py\", \n  \"modules/network/lenovo/cnos_portchannel.py\": \"lib/ansible/modules/network/lenovo/cnos_portchannel.py\", \n  \"modules/network/lenovo/cnos_reload.py\": \"lib/ansible/modules/network/lenovo/cnos_reload.py\", \n  \"modules/network/lenovo/cnos_rollback.py\": \"lib/ansible/modules/network/lenovo/cnos_rollback.py\", \n  \"modules/network/lenovo/cnos_save.py\": \"lib/ansible/modules/network/lenovo/cnos_save.py\", \n  \"modules/network/lenovo/cnos_showrun.py\": \"lib/ansible/modules/network/lenovo/cnos_showrun.py\", \n  \"modules/network/lenovo/cnos_template.py\": \"lib/ansible/modules/network/lenovo/cnos_template.py\", \n  \"modules/network/lenovo/cnos_vlag.py\": \"lib/ansible/modules/network/lenovo/cnos_vlag.py\", \n  \"modules/network/lenovo/cnos_vlan.py\": \"lib/ansible/modules/network/lenovo/cnos_vlan.py\", \n  \"modules/network/netconf/netconf_config.py\": \"lib/ansible/modules/network/netconf/netconf_config.py\", \n  \"modules/network/netscaler/netscaler_cs_action.py\": \"lib/ansible/modules/network/netscaler/netscaler_cs_action.py\", \n  \"modules/network/netscaler/netscaler_cs_policy.py\": \"lib/ansible/modules/network/netscaler/netscaler_cs_policy.py\", \n  \"modules/network/netscaler/netscaler_cs_vserver.py\": \"lib/ansible/modules/network/netscaler/netscaler_cs_vserver.py\", \n  \"modules/network/netscaler/netscaler_gslb_service.py\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_service.py\", \n  \"modules/network/netscaler/netscaler_gslb_site.py\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_site.py\", \n  \"modules/network/netscaler/netscaler_gslb_vserver.py\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_vserver.py\", \n  \"modules/network/netscaler/netscaler_lb_monitor.py\": \"lib/ansible/modules/network/netscaler/netscaler_lb_monitor.py\", \n  \"modules/network/netscaler/netscaler_lb_vserver.py\": \"lib/ansible/modules/network/netscaler/netscaler_lb_vserver.py\", \n  \"modules/network/netscaler/netscaler_save_config.py\": \"lib/ansible/modules/network/netscaler/netscaler_save_config.py\", \n  \"modules/network/netscaler/netscaler_server.py\": \"lib/ansible/modules/network/netscaler/netscaler_server.py\", \n  \"modules/network/netscaler/netscaler_service.py\": \"lib/ansible/modules/network/netscaler/netscaler_service.py\", \n  \"modules/network/netscaler/netscaler_servicegroup.py\": \"lib/ansible/modules/network/netscaler/netscaler_servicegroup.py\", \n  \"modules/network/netscaler/netscaler_ssl_certkey.py\": \"lib/ansible/modules/network/netscaler/netscaler_ssl_certkey.py\", \n  \"modules/network/netvisor/pn_cluster.py\": \"lib/ansible/modules/network/netvisor/pn_cluster.py\", \n  \"modules/network/netvisor/pn_ospf.py\": \"lib/ansible/modules/network/netvisor/pn_ospf.py\", \n  \"modules/network/netvisor/pn_ospfarea.py\": \"lib/ansible/modules/network/netvisor/pn_ospfarea.py\", \n  \"modules/network/netvisor/pn_show.py\": \"lib/ansible/modules/network/netvisor/pn_show.py\", \n  \"modules/network/netvisor/pn_trunk.py\": \"lib/ansible/modules/network/netvisor/pn_trunk.py\", \n  \"modules/network/netvisor/pn_vlag.py\": \"lib/ansible/modules/network/netvisor/pn_vlag.py\", \n  \"modules/network/netvisor/pn_vlan.py\": \"lib/ansible/modules/network/netvisor/pn_vlan.py\", \n  \"modules/network/netvisor/pn_vrouter.py\": \"lib/ansible/modules/network/netvisor/pn_vrouter.py\", \n  \"modules/network/netvisor/pn_vrouterbgp.py\": \"lib/ansible/modules/network/netvisor/pn_vrouterbgp.py\", \n  \"modules/network/netvisor/pn_vrouterif.py\": \"lib/ansible/modules/network/netvisor/pn_vrouterif.py\", \n  \"modules/network/netvisor/pn_vrouterlbif.py\": \"lib/ansible/modules/network/netvisor/pn_vrouterlbif.py\", \n  \"modules/network/nuage/nuage_vspk.py\": \"lib/ansible/modules/network/nuage/nuage_vspk.py\", \n  \"modules/network/nxos/_nxos_mtu.py\": \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n  \"modules/network/nxos/nxos_aaa_server.py\": \"lib/ansible/modules/network/nxos/nxos_aaa_server.py\", \n  \"modules/network/nxos/nxos_aaa_server_host.py\": \"lib/ansible/modules/network/nxos/nxos_aaa_server_host.py\", \n  \"modules/network/nxos/nxos_acl.py\": \"lib/ansible/modules/network/nxos/nxos_acl.py\", \n  \"modules/network/nxos/nxos_acl_interface.py\": \"lib/ansible/modules/network/nxos/nxos_acl_interface.py\", \n  \"modules/network/nxos/nxos_banner.py\": \"lib/ansible/modules/network/nxos/nxos_banner.py\", \n  \"modules/network/nxos/nxos_bgp.py\": \"lib/ansible/modules/network/nxos/nxos_bgp.py\", \n  \"modules/network/nxos/nxos_bgp_af.py\": \"lib/ansible/modules/network/nxos/nxos_bgp_af.py\", \n  \"modules/network/nxos/nxos_bgp_neighbor.py\": \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor.py\", \n  \"modules/network/nxos/nxos_bgp_neighbor_af.py\": \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor_af.py\", \n  \"modules/network/nxos/nxos_command.py\": \"lib/ansible/modules/network/nxos/nxos_command.py\", \n  \"modules/network/nxos/nxos_config.py\": \"lib/ansible/modules/network/nxos/nxos_config.py\", \n  \"modules/network/nxos/nxos_evpn_global.py\": \"lib/ansible/modules/network/nxos/nxos_evpn_global.py\", \n  \"modules/network/nxos/nxos_evpn_vni.py\": \"lib/ansible/modules/network/nxos/nxos_evpn_vni.py\", \n  \"modules/network/nxos/nxos_facts.py\": \"lib/ansible/modules/network/nxos/nxos_facts.py\", \n  \"modules/network/nxos/nxos_feature.py\": \"lib/ansible/modules/network/nxos/nxos_feature.py\", \n  \"modules/network/nxos/nxos_file_copy.py\": \"lib/ansible/modules/network/nxos/nxos_file_copy.py\", \n  \"modules/network/nxos/nxos_gir.py\": \"lib/ansible/modules/network/nxos/nxos_gir.py\", \n  \"modules/network/nxos/nxos_gir_profile_management.py\": \"lib/ansible/modules/network/nxos/nxos_gir_profile_management.py\", \n  \"modules/network/nxos/nxos_hsrp.py\": \"lib/ansible/modules/network/nxos/nxos_hsrp.py\", \n  \"modules/network/nxos/nxos_igmp.py\": \"lib/ansible/modules/network/nxos/nxos_igmp.py\", \n  \"modules/network/nxos/nxos_igmp_interface.py\": \"lib/ansible/modules/network/nxos/nxos_igmp_interface.py\", \n  \"modules/network/nxos/nxos_igmp_snooping.py\": \"lib/ansible/modules/network/nxos/nxos_igmp_snooping.py\", \n  \"modules/network/nxos/nxos_install_os.py\": \"lib/ansible/modules/network/nxos/nxos_install_os.py\", \n  \"modules/network/nxos/nxos_interface\": [\n    \"lib/ansible/modules/network/nxos/nxos_interface.py\"\n  ], \n  \"modules/network/nxos/nxos_interface.py\": \"lib/ansible/modules/network/nxos/nxos_interface.py\", \n  \"modules/network/nxos/nxos_interface_ospf.py\": \"lib/ansible/modules/network/nxos/nxos_interface_ospf.py\", \n  \"modules/network/nxos/nxos_ip_interface\": [\n    \"lib/ansible/modules/network/nxos/nxos_ip_interface.py\"\n  ], \n  \"modules/network/nxos/nxos_ip_interface.py\": \"lib/ansible/modules/network/nxos/nxos_ip_interface.py\", \n  \"modules/network/nxos/nxos_logging.py\": \"lib/ansible/modules/network/nxos/nxos_logging.py\", \n  \"modules/network/nxos/nxos_mtu.py\": \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n  \"modules/network/nxos/nxos_ntp.py\": \"lib/ansible/modules/network/nxos/nxos_ntp.py\", \n  \"modules/network/nxos/nxos_ntp_auth.py\": \"lib/ansible/modules/network/nxos/nxos_ntp_auth.py\", \n  \"modules/network/nxos/nxos_ntp_options.py\": \"lib/ansible/modules/network/nxos/nxos_ntp_options.py\", \n  \"modules/network/nxos/nxos_nxapi.py\": \"lib/ansible/modules/network/nxos/nxos_nxapi.py\", \n  \"modules/network/nxos/nxos_ospf.py\": \"lib/ansible/modules/network/nxos/nxos_ospf.py\", \n  \"modules/network/nxos/nxos_ospf_vrf.py\": \"lib/ansible/modules/network/nxos/nxos_ospf_vrf.py\", \n  \"modules/network/nxos/nxos_overlay_global.py\": \"lib/ansible/modules/network/nxos/nxos_overlay_global.py\", \n  \"modules/network/nxos/nxos_pim.py\": \"lib/ansible/modules/network/nxos/nxos_pim.py\", \n  \"modules/network/nxos/nxos_pim_interface.py\": \"lib/ansible/modules/network/nxos/nxos_pim_interface.py\", \n  \"modules/network/nxos/nxos_pim_rp_address.py\": \"lib/ansible/modules/network/nxos/nxos_pim_rp_address.py\", \n  \"modules/network/nxos/nxos_ping.py\": \"lib/ansible/modules/network/nxos/nxos_ping.py\", \n  \"modules/network/nxos/nxos_portchannel\": [\n    \"lib/ansible/modules/network/nxos/nxos_portchannel.py\"\n  ], \n  \"modules/network/nxos/nxos_portchannel.py\": \"lib/ansible/modules/network/nxos/nxos_portchannel.py\", \n  \"modules/network/nxos/nxos_reboot.py\": \"lib/ansible/modules/network/nxos/nxos_reboot.py\", \n  \"modules/network/nxos/nxos_rollback.py\": \"lib/ansible/modules/network/nxos/nxos_rollback.py\", \n  \"modules/network/nxos/nxos_smu.py\": \"lib/ansible/modules/network/nxos/nxos_smu.py\", \n  \"modules/network/nxos/nxos_snapshot.py\": \"lib/ansible/modules/network/nxos/nxos_snapshot.py\", \n  \"modules/network/nxos/nxos_snmp_community.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_community.py\", \n  \"modules/network/nxos/nxos_snmp_contact.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_contact.py\", \n  \"modules/network/nxos/nxos_snmp_host.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_host.py\", \n  \"modules/network/nxos/nxos_snmp_location.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_location.py\", \n  \"modules/network/nxos/nxos_snmp_traps.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_traps.py\", \n  \"modules/network/nxos/nxos_snmp_user.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_user.py\", \n  \"modules/network/nxos/nxos_static_route\": [\n    \"lib/ansible/modules/network/nxos/nxos_static_route.py\"\n  ], \n  \"modules/network/nxos/nxos_static_route.py\": \"lib/ansible/modules/network/nxos/nxos_static_route.py\", \n  \"modules/network/nxos/nxos_switchport\": [\n    \"lib/ansible/modules/network/nxos/nxos_switchport.py\"\n  ], \n  \"modules/network/nxos/nxos_switchport.py\": \"lib/ansible/modules/network/nxos/nxos_switchport.py\", \n  \"modules/network/nxos/nxos_system.py\": \"lib/ansible/modules/network/nxos/nxos_system.py\", \n  \"modules/network/nxos/nxos_udld.py\": \"lib/ansible/modules/network/nxos/nxos_udld.py\", \n  \"modules/network/nxos/nxos_udld_interface.py\": \"lib/ansible/modules/network/nxos/nxos_udld_interface.py\", \n  \"modules/network/nxos/nxos_user\": [\n    \"lib/ansible/modules/network/nxos/nxos_user.py\"\n  ], \n  \"modules/network/nxos/nxos_user.py\": \"lib/ansible/modules/network/nxos/nxos_user.py\", \n  \"modules/network/nxos/nxos_vlan\": [\n    \"lib/ansible/modules/network/nxos/nxos_vlan.py\"\n  ], \n  \"modules/network/nxos/nxos_vlan.py\": \"lib/ansible/modules/network/nxos/nxos_vlan.py\", \n  \"modules/network/nxos/nxos_vpc.py\": \"lib/ansible/modules/network/nxos/nxos_vpc.py\", \n  \"modules/network/nxos/nxos_vpc_interface.py\": \"lib/ansible/modules/network/nxos/nxos_vpc_interface.py\", \n  \"modules/network/nxos/nxos_vrf\": [\n    \"lib/ansible/modules/network/nxos/nxos_vrf.py\"\n  ], \n  \"modules/network/nxos/nxos_vrf.py\": \"lib/ansible/modules/network/nxos/nxos_vrf.py\", \n  \"modules/network/nxos/nxos_vrf_af.py\": \"lib/ansible/modules/network/nxos/nxos_vrf_af.py\", \n  \"modules/network/nxos/nxos_vrf_interface.py\": \"lib/ansible/modules/network/nxos/nxos_vrf_interface.py\", \n  \"modules/network/nxos/nxos_vrrp.py\": \"lib/ansible/modules/network/nxos/nxos_vrrp.py\", \n  \"modules/network/nxos/nxos_vtp_domain.py\": \"lib/ansible/modules/network/nxos/nxos_vtp_domain.py\", \n  \"modules/network/nxos/nxos_vtp_password.py\": \"lib/ansible/modules/network/nxos/nxos_vtp_password.py\", \n  \"modules/network/nxos/nxos_vtp_version.py\": \"lib/ansible/modules/network/nxos/nxos_vtp_version.py\", \n  \"modules/network/nxos/nxos_vxlan_vtep.py\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep.py\", \n  \"modules/network/nxos/nxos_vxlan_vtep_vni.py\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\", \n  \"modules/network/ordnance/ordnance_config.py\": \"lib/ansible/modules/network/ordnance/ordnance_config.py\", \n  \"modules/network/ordnance/ordnance_facts.py\": \"lib/ansible/modules/network/ordnance/ordnance_facts.py\", \n  \"modules/network/ovs/openvswitch_bridge.py\": \"lib/ansible/modules/network/ovs/openvswitch_bridge.py\", \n  \"modules/network/ovs/openvswitch_db.py\": \"lib/ansible/modules/network/ovs/openvswitch_db.py\", \n  \"modules/network/ovs/openvswitch_port.py\": \"lib/ansible/modules/network/ovs/openvswitch_port.py\", \n  \"modules/network/panos/panos_admin.py\": \"lib/ansible/modules/network/panos/panos_admin.py\", \n  \"modules/network/panos/panos_admpwd.py\": \"lib/ansible/modules/network/panos/panos_admpwd.py\", \n  \"modules/network/panos/panos_cert_gen_ssh.py\": \"lib/ansible/modules/network/panos/panos_cert_gen_ssh.py\", \n  \"modules/network/panos/panos_check.py\": \"lib/ansible/modules/network/panos/panos_check.py\", \n  \"modules/network/panos/panos_commit.py\": \"lib/ansible/modules/network/panos/panos_commit.py\", \n  \"modules/network/panos/panos_dag.py\": \"lib/ansible/modules/network/panos/panos_dag.py\", \n  \"modules/network/panos/panos_import.py\": \"lib/ansible/modules/network/panos/panos_import.py\", \n  \"modules/network/panos/panos_interface.py\": \"lib/ansible/modules/network/panos/panos_interface.py\", \n  \"modules/network/panos/panos_lic.py\": \"lib/ansible/modules/network/panos/panos_lic.py\", \n  \"modules/network/panos/panos_loadcfg.py\": \"lib/ansible/modules/network/panos/panos_loadcfg.py\", \n  \"modules/network/panos/panos_mgtconfig.py\": \"lib/ansible/modules/network/panos/panos_mgtconfig.py\", \n  \"modules/network/panos/panos_nat_policy.py\": \"lib/ansible/modules/network/panos/panos_nat_policy.py\", \n  \"modules/network/panos/panos_nat_rule.py\": \"lib/ansible/modules/network/panos/panos_nat_rule.py\", \n  \"modules/network/panos/panos_object.py\": \"lib/ansible/modules/network/panos/panos_object.py\", \n  \"modules/network/panos/panos_pg.py\": \"lib/ansible/modules/network/panos/panos_pg.py\", \n  \"modules/network/panos/panos_restart.py\": \"lib/ansible/modules/network/panos/panos_restart.py\", \n  \"modules/network/panos/panos_sag.py\": \"lib/ansible/modules/network/panos/panos_sag.py\", \n  \"modules/network/panos/panos_security_policy.py\": \"lib/ansible/modules/network/panos/panos_security_policy.py\", \n  \"modules/network/panos/panos_security_rule.py\": \"lib/ansible/modules/network/panos/panos_security_rule.py\", \n  \"modules/network/protocol/net_lldp.py\": \"lib/ansible/modules/network/protocol/net_lldp.py\", \n  \"modules/network/radware/vdirect_file.py\": \"lib/ansible/modules/network/radware/vdirect_file.py\", \n  \"modules/network/routing/net_static_route.py\": \"lib/ansible/modules/network/routing/net_static_route.py\", \n  \"modules/network/snmp_facts\": [\n    \"lib/ansible/modules/net_tools/snmp_facts.py\"\n  ], \n  \"modules/network/sros/sros_command.py\": \"lib/ansible/modules/network/sros/sros_command.py\", \n  \"modules/network/sros/sros_config.py\": \"lib/ansible/modules/network/sros/sros_config.py\", \n  \"modules/network/sros/sros_rollback.py\": \"lib/ansible/modules/network/sros/sros_rollback.py\", \n  \"modules/network/system/net_banner.py\": \"lib/ansible/modules/network/system/net_banner.py\", \n  \"modules/network/system/net_logging.py\": \"lib/ansible/modules/network/system/net_logging.py\", \n  \"modules/network/system/net_ping.py\": \"lib/ansible/modules/network/system/net_ping.py\", \n  \"modules/network/system/net_system.py\": \"lib/ansible/modules/network/system/net_system.py\", \n  \"modules/network/system/net_user.py\": \"lib/ansible/modules/network/system/net_user.py\", \n  \"modules/network/vyos/vyos_banner.py\": \"lib/ansible/modules/network/vyos/vyos_banner.py\", \n  \"modules/network/vyos/vyos_command.py\": \"lib/ansible/modules/network/vyos/vyos_command.py\", \n  \"modules/network/vyos/vyos_config.py\": \"lib/ansible/modules/network/vyos/vyos_config.py\", \n  \"modules/network/vyos/vyos_facts.py\": \"lib/ansible/modules/network/vyos/vyos_facts.py\", \n  \"modules/network/vyos/vyos_interface.py\": \"lib/ansible/modules/network/vyos/vyos_interface.py\", \n  \"modules/network/vyos/vyos_l3_interface.py\": \"lib/ansible/modules/network/vyos/vyos_l3_interface.py\", \n  \"modules/network/vyos/vyos_linkagg.py\": \"lib/ansible/modules/network/vyos/vyos_linkagg.py\", \n  \"modules/network/vyos/vyos_lldp.py\": \"lib/ansible/modules/network/vyos/vyos_lldp.py\", \n  \"modules/network/vyos/vyos_lldp_interface.py\": \"lib/ansible/modules/network/vyos/vyos_lldp_interface.py\", \n  \"modules/network/vyos/vyos_logging.py\": \"lib/ansible/modules/network/vyos/vyos_logging.py\", \n  \"modules/network/vyos/vyos_static_route.py\": \"lib/ansible/modules/network/vyos/vyos_static_route.py\", \n  \"modules/network/vyos/vyos_system.py\": \"lib/ansible/modules/network/vyos/vyos_system.py\", \n  \"modules/network/vyos/vyos_user.py\": \"lib/ansible/modules/network/vyos/vyos_user.py\", \n  \"modules/network/vyos/vyos_vlan.py\": \"lib/ansible/modules/network/vyos/vyos_vlan.py\", \n  \"modules/notification/bearychat.py\": \"lib/ansible/modules/notification/bearychat.py\", \n  \"modules/notification/campfire.py\": \"lib/ansible/modules/notification/campfire.py\", \n  \"modules/notification/catapult.py\": \"lib/ansible/modules/notification/catapult.py\", \n  \"modules/notification/cisco_spark.py\": \"lib/ansible/modules/notification/cisco_spark.py\", \n  \"modules/notification/flowdock.py\": \"lib/ansible/modules/notification/flowdock.py\", \n  \"modules/notification/grove.py\": \"lib/ansible/modules/notification/grove.py\", \n  \"modules/notification/hall.py\": \"lib/ansible/modules/notification/hall.py\", \n  \"modules/notification/hipchat.py\": \"lib/ansible/modules/notification/hipchat.py\", \n  \"modules/notification/irc.py\": \"lib/ansible/modules/notification/irc.py\", \n  \"modules/notification/jabber.py\": \"lib/ansible/modules/notification/jabber.py\", \n  \"modules/notification/mail.py\": \"lib/ansible/modules/notification/mail.py\", \n  \"modules/notification/mattermost.py\": \"lib/ansible/modules/notification/mattermost.py\", \n  \"modules/notification/mqtt.py\": \"lib/ansible/modules/notification/mqtt.py\", \n  \"modules/notification/nexmo.py\": \"lib/ansible/modules/notification/nexmo.py\", \n  \"modules/notification/office_365_connector_card.py\": \"lib/ansible/modules/notification/office_365_connector_card.py\", \n  \"modules/notification/osx_say.py\": \"lib/ansible/modules/notification/osx_say.py\", \n  \"modules/notification/pushbullet.py\": \"lib/ansible/modules/notification/pushbullet.py\", \n  \"modules/notification/pushover.py\": \"lib/ansible/modules/notification/pushover.py\", \n  \"modules/notification/rocketchat.py\": \"lib/ansible/modules/notification/rocketchat.py\", \n  \"modules/notification/sendgrid.py\": \"lib/ansible/modules/notification/sendgrid.py\", \n  \"modules/notification/slack.py\": \"lib/ansible/modules/notification/slack.py\", \n  \"modules/notification/snow_record.py\": \"lib/ansible/modules/notification/snow_record.py\", \n  \"modules/notification/syslogger.py\": \"lib/ansible/modules/notification/syslogger.py\", \n  \"modules/notification/telegram.py\": \"lib/ansible/modules/notification/telegram.py\", \n  \"modules/notification/twilio.py\": \"lib/ansible/modules/notification/twilio.py\", \n  \"modules/notification/typetalk.py\": \"lib/ansible/modules/notification/typetalk.py\", \n  \"modules/packaging/language/bower.py\": \"lib/ansible/modules/packaging/language/bower.py\", \n  \"modules/packaging/language/bundler.py\": \"lib/ansible/modules/packaging/language/bundler.py\", \n  \"modules/packaging/language/composer.py\": \"lib/ansible/modules/packaging/language/composer.py\", \n  \"modules/packaging/language/cpanm.py\": \"lib/ansible/modules/packaging/language/cpanm.py\", \n  \"modules/packaging/language/easy_install.py\": \"lib/ansible/modules/packaging/language/easy_install.py\", \n  \"modules/packaging/language/gem.py\": \"lib/ansible/modules/packaging/language/gem.py\", \n  \"modules/packaging/language/maven_artifact.py\": \"lib/ansible/modules/packaging/language/maven_artifact.py\", \n  \"modules/packaging/language/npm.py\": \"lib/ansible/modules/packaging/language/npm.py\", \n  \"modules/packaging/language/pear.py\": \"lib/ansible/modules/packaging/language/pear.py\", \n  \"modules/packaging/language/pip.py\": \"lib/ansible/modules/packaging/language/pip.py\", \n  \"modules/packaging/os/apk.py\": \"lib/ansible/modules/packaging/os/apk.py\", \n  \"modules/packaging/os/apt.py\": [\n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"modules/packaging/os/apt_key.py\": \"lib/ansible/modules/packaging/os/apt_key.py\", \n  \"modules/packaging/os/apt_repository.py\": \"lib/ansible/modules/packaging/os/apt_repository.py\", \n  \"modules/packaging/os/apt_rpm.py\": \"lib/ansible/modules/packaging/os/apt_rpm.py\", \n  \"modules/packaging/os/dnf.py\": \"lib/ansible/modules/packaging/os/dnf.py\", \n  \"modules/packaging/os/dpkg_selections.py\": \"lib/ansible/modules/packaging/os/dpkg_selections.py\", \n  \"modules/packaging/os/homebrew.py\": \"lib/ansible/modules/packaging/os/homebrew.py\", \n  \"modules/packaging/os/homebrew_cask.py\": \"lib/ansible/modules/packaging/os/homebrew_cask.py\", \n  \"modules/packaging/os/homebrew_tap.py\": \"lib/ansible/modules/packaging/os/homebrew_tap.py\", \n  \"modules/packaging/os/layman.py\": \"lib/ansible/modules/packaging/os/layman.py\", \n  \"modules/packaging/os/macports.py\": \"lib/ansible/modules/packaging/os/macports.py\", \n  \"modules/packaging/os/openbsd_pkg.py\": \"lib/ansible/modules/packaging/os/openbsd_pkg.py\", \n  \"modules/packaging/os/opkg.py\": \"lib/ansible/modules/packaging/os/opkg.py\", \n  \"modules/packaging/os/package.py\": \"lib/ansible/modules/packaging/os/package.py\", \n  \"modules/packaging/os/pacman.py\": \"lib/ansible/modules/packaging/os/pacman.py\", \n  \"modules/packaging/os/pkg5.py\": \"lib/ansible/modules/packaging/os/pkg5.py\", \n  \"modules/packaging/os/pkg5_publisher.py\": \"lib/ansible/modules/packaging/os/pkg5_publisher.py\", \n  \"modules/packaging/os/pkgin.py\": \"lib/ansible/modules/packaging/os/pkgin.py\", \n  \"modules/packaging/os/pkgng.py\": [\n    \"lib/ansible/modules/packaging/os/pkgng.py\"\n  ], \n  \"modules/packaging/os/pkgutil.py\": \"lib/ansible/modules/packaging/os/pkgutil.py\", \n  \"modules/packaging/os/portage.py\": \"lib/ansible/modules/packaging/os/portage.py\", \n  \"modules/packaging/os/portinstall.py\": \"lib/ansible/modules/packaging/os/portinstall.py\", \n  \"modules/packaging/os/pulp_repo.py\": \"lib/ansible/modules/packaging/os/pulp_repo.py\", \n  \"modules/packaging/os/redhat_subscription.py\": \"lib/ansible/modules/packaging/os/redhat_subscription.py\", \n  \"modules/packaging/os/rhn_channel.py\": \"lib/ansible/modules/packaging/os/rhn_channel.py\", \n  \"modules/packaging/os/rhn_register.py\": \"lib/ansible/modules/packaging/os/rhn_register.py\", \n  \"modules/packaging/os/rpm_key.py\": \"lib/ansible/modules/packaging/os/rpm_key.py\", \n  \"modules/packaging/os/slackpkg.py\": \"lib/ansible/modules/packaging/os/slackpkg.py\", \n  \"modules/packaging/os/sorcery.py\": \"lib/ansible/modules/packaging/os/sorcery.py\", \n  \"modules/packaging/os/svr4pkg.py\": \"lib/ansible/modules/packaging/os/svr4pkg.py\", \n  \"modules/packaging/os/swdepot.py\": \"lib/ansible/modules/packaging/os/swdepot.py\", \n  \"modules/packaging/os/swupd.py\": \"lib/ansible/modules/packaging/os/swupd.py\", \n  \"modules/packaging/os/urpmi.py\": [\n    \"lib/ansible/modules/packaging/os/urpmi.py\"\n  ], \n  \"modules/packaging/os/xbps.py\": \"lib/ansible/modules/packaging/os/xbps.py\", \n  \"modules/packaging/os/yum.py\": \"lib/ansible/modules/packaging/os/yum.py\", \n  \"modules/packaging/os/yum_repository.py\": \"lib/ansible/modules/packaging/os/yum_repository.py\", \n  \"modules/packaging/os/zypper.py\": \"lib/ansible/modules/packaging/os/zypper.py\", \n  \"modules/packaging/os/zypper_repository.py\": \"lib/ansible/modules/packaging/os/zypper_repository.py\", \n  \"modules/remote_management/foreman/foreman.py\": \"lib/ansible/modules/remote_management/foreman/foreman.py\", \n  \"modules/remote_management/foreman/katello.py\": \"lib/ansible/modules/remote_management/foreman/katello.py\", \n  \"modules/remote_management/hpilo/hpilo_boot.py\": \"lib/ansible/modules/remote_management/hpilo/hpilo_boot.py\", \n  \"modules/remote_management/hpilo/hpilo_facts.py\": \"lib/ansible/modules/remote_management/hpilo/hpilo_facts.py\", \n  \"modules/remote_management/hpilo/hponcfg.py\": \"lib/ansible/modules/remote_management/hpilo/hponcfg.py\", \n  \"modules/remote_management/imc/imc_rest.py\": \"lib/ansible/modules/remote_management/imc/imc_rest.py\", \n  \"modules/remote_management/ipmi/ipmi_boot.py\": \"lib/ansible/modules/remote_management/ipmi/ipmi_boot.py\", \n  \"modules/remote_management/ipmi/ipmi_power.py\": \"lib/ansible/modules/remote_management/ipmi/ipmi_power.py\", \n  \"modules/remote_management/manageiq/manageiq_provider.py\": \"lib/ansible/modules/remote_management/manageiq/manageiq_provider.py\", \n  \"modules/remote_management/manageiq/manageiq_tags.py\": \"lib/ansible/modules/remote_management/manageiq/manageiq_tags.py\", \n  \"modules/remote_management/manageiq/manageiq_user.py\": \"lib/ansible/modules/remote_management/manageiq/manageiq_user.py\", \n  \"modules/remote_management/oneview/oneview_enclosure_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_enclosure_facts.py\", \n  \"modules/remote_management/oneview/oneview_ethernet_network.py\": \"lib/ansible/modules/remote_management/oneview/oneview_ethernet_network.py\", \n  \"modules/remote_management/oneview/oneview_ethernet_network_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_ethernet_network_facts.py\", \n  \"modules/remote_management/oneview/oneview_fc_network.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fc_network.py\", \n  \"modules/remote_management/oneview/oneview_fc_network_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fc_network_facts.py\", \n  \"modules/remote_management/oneview/oneview_fcoe_network.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fcoe_network.py\", \n  \"modules/remote_management/oneview/oneview_fcoe_network_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fcoe_network_facts.py\", \n  \"modules/remote_management/oneview/oneview_logical_interconnect_group.py\": \"lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group.py\", \n  \"modules/remote_management/oneview/oneview_logical_interconnect_group_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group_facts.py\", \n  \"modules/remote_management/oneview/oneview_network_set.py\": \"lib/ansible/modules/remote_management/oneview/oneview_network_set.py\", \n  \"modules/remote_management/oneview/oneview_network_set_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_network_set_facts.py\", \n  \"modules/remote_management/oneview/oneview_san_manager.py\": \"lib/ansible/modules/remote_management/oneview/oneview_san_manager.py\", \n  \"modules/remote_management/oneview/oneview_san_manager_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_san_manager_facts.py\", \n  \"modules/remote_management/stacki/stacki_host.py\": \"lib/ansible/modules/remote_management/stacki/stacki_host.py\", \n  \"modules/remote_management/wakeonlan.py\": \"lib/ansible/modules/remote_management/wakeonlan.py\", \n  \"modules/source_control/bzr.py\": \"lib/ansible/modules/source_control/bzr.py\", \n  \"modules/source_control/git.py\": \"lib/ansible/modules/source_control/git.py\", \n  \"modules/source_control/git_config.py\": \"lib/ansible/modules/source_control/git_config.py\", \n  \"modules/source_control/github_deploy_key.py\": \"lib/ansible/modules/source_control/github_deploy_key.py\", \n  \"modules/source_control/github_hooks.py\": \"lib/ansible/modules/source_control/github_hooks.py\", \n  \"modules/source_control/github_issue.py\": \"lib/ansible/modules/source_control/github_issue.py\", \n  \"modules/source_control/github_key.py\": \"lib/ansible/modules/source_control/github_key.py\", \n  \"modules/source_control/github_release.py\": \"lib/ansible/modules/source_control/github_release.py\", \n  \"modules/source_control/gitlab_group.py\": \"lib/ansible/modules/source_control/gitlab_group.py\", \n  \"modules/source_control/gitlab_project.py\": \"lib/ansible/modules/source_control/gitlab_project.py\", \n  \"modules/source_control/gitlab_user.py\": \"lib/ansible/modules/source_control/gitlab_user.py\", \n  \"modules/source_control/hg.py\": \"lib/ansible/modules/source_control/hg.py\", \n  \"modules/source_control/subversion.py\": \"lib/ansible/modules/source_control/subversion.py\", \n  \"modules/storage/infinidat/infini_export.py\": \"lib/ansible/modules/storage/infinidat/infini_export.py\", \n  \"modules/storage/infinidat/infini_export_client.py\": \"lib/ansible/modules/storage/infinidat/infini_export_client.py\", \n  \"modules/storage/infinidat/infini_fs.py\": \"lib/ansible/modules/storage/infinidat/infini_fs.py\", \n  \"modules/storage/infinidat/infini_host.py\": \"lib/ansible/modules/storage/infinidat/infini_host.py\", \n  \"modules/storage/infinidat/infini_pool.py\": \"lib/ansible/modules/storage/infinidat/infini_pool.py\", \n  \"modules/storage/infinidat/infini_vol.py\": \"lib/ansible/modules/storage/infinidat/infini_vol.py\", \n  \"modules/storage/netapp/na_cdot_aggregate.py\": \"lib/ansible/modules/storage/netapp/na_cdot_aggregate.py\", \n  \"modules/storage/netapp/na_cdot_license.py\": \"lib/ansible/modules/storage/netapp/na_cdot_license.py\", \n  \"modules/storage/netapp/na_cdot_lun.py\": \"lib/ansible/modules/storage/netapp/na_cdot_lun.py\", \n  \"modules/storage/netapp/na_cdot_qtree.py\": \"lib/ansible/modules/storage/netapp/na_cdot_qtree.py\", \n  \"modules/storage/netapp/na_cdot_svm.py\": \"lib/ansible/modules/storage/netapp/na_cdot_svm.py\", \n  \"modules/storage/netapp/na_cdot_user.py\": \"lib/ansible/modules/storage/netapp/na_cdot_user.py\", \n  \"modules/storage/netapp/na_cdot_user_role.py\": \"lib/ansible/modules/storage/netapp/na_cdot_user_role.py\", \n  \"modules/storage/netapp/na_cdot_volume.py\": \"lib/ansible/modules/storage/netapp/na_cdot_volume.py\", \n  \"modules/storage/netapp/netapp_e_amg.py\": \"lib/ansible/modules/storage/netapp/netapp_e_amg.py\", \n  \"modules/storage/netapp/netapp_e_amg_role.py\": \"lib/ansible/modules/storage/netapp/netapp_e_amg_role.py\", \n  \"modules/storage/netapp/netapp_e_amg_sync.py\": \"lib/ansible/modules/storage/netapp/netapp_e_amg_sync.py\", \n  \"modules/storage/netapp/netapp_e_auth.py\": \"lib/ansible/modules/storage/netapp/netapp_e_auth.py\", \n  \"modules/storage/netapp/netapp_e_facts.py\": \"lib/ansible/modules/storage/netapp/netapp_e_facts.py\", \n  \"modules/storage/netapp/netapp_e_flashcache.py\": \"lib/ansible/modules/storage/netapp/netapp_e_flashcache.py\", \n  \"modules/storage/netapp/netapp_e_host\": [\n    \"lib/ansible/modules/storage/netapp/netapp_e_host.py\"\n  ], \n  \"modules/storage/netapp/netapp_e_host.py\": \"lib/ansible/modules/storage/netapp/netapp_e_host.py\", \n  \"modules/storage/netapp/netapp_e_hostgroup.py\": \"lib/ansible/modules/storage/netapp/netapp_e_hostgroup.py\", \n  \"modules/storage/netapp/netapp_e_lun_mapping.py\": \"lib/ansible/modules/storage/netapp/netapp_e_lun_mapping.py\", \n  \"modules/storage/netapp/netapp_e_snapshot_group.py\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_group.py\", \n  \"modules/storage/netapp/netapp_e_snapshot_images.py\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_images.py\", \n  \"modules/storage/netapp/netapp_e_snapshot_volume.py\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_volume.py\", \n  \"modules/storage/netapp/netapp_e_storage_system.py\": \"lib/ansible/modules/storage/netapp/netapp_e_storage_system.py\", \n  \"modules/storage/netapp/netapp_e_storagepool.py\": \"lib/ansible/modules/storage/netapp/netapp_e_storagepool.py\", \n  \"modules/storage/netapp/netapp_e_volume.py\": \"lib/ansible/modules/storage/netapp/netapp_e_volume.py\", \n  \"modules/storage/netapp/netapp_e_volume_copy.py\": \"lib/ansible/modules/storage/netapp/netapp_e_volume_copy.py\", \n  \"modules/storage/netapp/sf_account_manager.py\": \"lib/ansible/modules/storage/netapp/sf_account_manager.py\", \n  \"modules/storage/netapp/sf_check_connections.py\": \"lib/ansible/modules/storage/netapp/sf_check_connections.py\", \n  \"modules/storage/netapp/sf_snapshot_schedule_manager.py\": \"lib/ansible/modules/storage/netapp/sf_snapshot_schedule_manager.py\", \n  \"modules/storage/netapp/sf_volume_access_group_manager.py\": \"lib/ansible/modules/storage/netapp/sf_volume_access_group_manager.py\", \n  \"modules/storage/netapp/sf_volume_manager.py\": \"lib/ansible/modules/storage/netapp/sf_volume_manager.py\", \n  \"modules/storage/purestorage/purefa_hg.py\": \"lib/ansible/modules/storage/purestorage/purefa_hg.py\", \n  \"modules/storage/purestorage/purefa_host.py\": \"lib/ansible/modules/storage/purestorage/purefa_host.py\", \n  \"modules/storage/purestorage/purefa_pg.py\": \"lib/ansible/modules/storage/purestorage/purefa_pg.py\", \n  \"modules/storage/purestorage/purefa_snap.py\": \"lib/ansible/modules/storage/purestorage/purefa_snap.py\", \n  \"modules/storage/purestorage/purefa_volume.py\": \"lib/ansible/modules/storage/purestorage/purefa_volume.py\", \n  \"modules/storage/zfs/zfs.py\": \"lib/ansible/modules/storage/zfs/zfs.py\", \n  \"modules/storage/zfs/zfs_facts.py\": \"lib/ansible/modules/storage/zfs/zfs_facts.py\", \n  \"modules/storage/zfs/zpool_facts.py\": \"lib/ansible/modules/storage/zfs/zpool_facts.py\", \n  \"modules/system/aix_inittab.py\": \"lib/ansible/modules/system/aix_inittab.py\", \n  \"modules/system/aix_lvol.py\": \"lib/ansible/modules/system/aix_lvol.py\", \n  \"modules/system/alternatives.py\": \"lib/ansible/modules/system/alternatives.py\", \n  \"modules/system/at.py\": \"lib/ansible/modules/system/at.py\", \n  \"modules/system/authorized_key.py\": \"lib/ansible/modules/system/authorized_key.py\", \n  \"modules/system/awall.py\": \"lib/ansible/modules/system/awall.py\", \n  \"modules/system/beadm.py\": \"lib/ansible/modules/system/beadm.py\", \n  \"modules/system/capabilities.py\": \"lib/ansible/modules/system/capabilities.py\", \n  \"modules/system/cron.py\": \"lib/ansible/modules/system/cron.py\", \n  \"modules/system/cronvar.py\": \"lib/ansible/modules/system/cronvar.py\", \n  \"modules/system/crypttab.py\": \"lib/ansible/modules/system/crypttab.py\", \n  \"modules/system/dconf.py\": \"lib/ansible/modules/system/dconf.py\", \n  \"modules/system/debconf.py\": \"lib/ansible/modules/system/debconf.py\", \n  \"modules/system/facter.py\": [\n    \"lib/ansible/modules/system/facter.py\"\n  ], \n  \"modules/system/filesystem.py\": \"lib/ansible/modules/system/filesystem.py\", \n  \"modules/system/firewalld.py\": \"lib/ansible/modules/system/firewalld.py\", \n  \"modules/system/gconftool2.py\": \"lib/ansible/modules/system/gconftool2.py\", \n  \"modules/system/getent.py\": \"lib/ansible/modules/system/getent.py\", \n  \"modules/system/gluster_volume.py\": \"lib/ansible/modules/system/gluster_volume.py\", \n  \"modules/system/group.py\": \"lib/ansible/modules/system/group.py\", \n  \"modules/system/hostname.py\": \"lib/ansible/modules/system/hostname.py\", \n  \"modules/system/interfaces_file.py\": \"lib/ansible/modules/system/interfaces_file.py\", \n  \"modules/system/iptables.py\": \"lib/ansible/modules/system/iptables.py\", \n  \"modules/system/java_cert.py\": \"lib/ansible/modules/system/java_cert.py\", \n  \"modules/system/kernel_blacklist.py\": \"lib/ansible/modules/system/kernel_blacklist.py\", \n  \"modules/system/known_hosts.py\": \"lib/ansible/modules/system/known_hosts.py\", \n  \"modules/system/locale_gen.py\": \"lib/ansible/modules/system/locale_gen.py\", \n  \"modules/system/lvg.py\": \"lib/ansible/modules/system/lvg.py\", \n  \"modules/system/lvol.py\": \"lib/ansible/modules/system/lvol.py\", \n  \"modules/system/make.py\": \"lib/ansible/modules/system/make.py\", \n  \"modules/system/mksysb.py\": \"lib/ansible/modules/system/mksysb.py\", \n  \"modules/system/modprobe.py\": \"lib/ansible/modules/system/modprobe.py\", \n  \"modules/system/mount.py\": \"lib/ansible/modules/system/mount.py\", \n  \"modules/system/nosh.py\": \"lib/ansible/modules/system/nosh.py\", \n  \"modules/system/ohai.py\": \"lib/ansible/modules/system/ohai.py\", \n  \"modules/system/open_iscsi.py\": \"lib/ansible/modules/system/open_iscsi.py\", \n  \"modules/system/openwrt_init.py\": \"lib/ansible/modules/system/openwrt_init.py\", \n  \"modules/system/osx_defaults.py\": \"lib/ansible/modules/system/osx_defaults.py\", \n  \"modules/system/pam_limits.py\": \"lib/ansible/modules/system/pam_limits.py\", \n  \"modules/system/pamd.py\": \"lib/ansible/modules/system/pamd.py\", \n  \"modules/system/parted.py\": \"lib/ansible/modules/system/parted.py\", \n  \"modules/system/ping.py\": \"lib/ansible/modules/system/ping.py\", \n  \"modules/system/puppet.py\": [\n    \"lib/ansible/modules/system/puppet.py\"\n  ], \n  \"modules/system/runit.py\": \"lib/ansible/modules/system/runit.py\", \n  \"modules/system/seboolean.py\": \"lib/ansible/modules/system/seboolean.py\", \n  \"modules/system/sefcontext.py\": \"lib/ansible/modules/system/sefcontext.py\", \n  \"modules/system/selinux.py\": \"lib/ansible/modules/system/selinux.py\", \n  \"modules/system/selinux_permissive.py\": \"lib/ansible/modules/system/selinux_permissive.py\", \n  \"modules/system/seport.py\": \"lib/ansible/modules/system/seport.py\", \n  \"modules/system/service.py\": \"lib/ansible/modules/system/service.py\", \n  \"modules/system/setup.py\": \"lib/ansible/modules/system/setup.py\", \n  \"modules/system/solaris_zone.py\": \"lib/ansible/modules/system/solaris_zone.py\", \n  \"modules/system/svc.py\": \"lib/ansible/modules/system/svc.py\", \n  \"modules/system/sysctl.py\": \"lib/ansible/modules/system/sysctl.py\", \n  \"modules/system/systemd.py\": \"lib/ansible/modules/system/systemd.py\", \n  \"modules/system/timezone.py\": \"lib/ansible/modules/system/timezone.py\", \n  \"modules/system/ufw.py\": \"lib/ansible/modules/system/ufw.py\", \n  \"modules/system/user.py\": \"lib/ansible/modules/system/user.py\", \n  \"modules/utilities/helper/_accelerate.py\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n  \"modules/utilities/helper/accelerate.py\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n  \"modules/utilities/helper/meta.py\": \"lib/ansible/modules/utilities/helper/meta.py\", \n  \"modules/utilities/logic/_include.py\": \"lib/ansible/modules/utilities/logic/_include.py\", \n  \"modules/utilities/logic/assert.py\": \"lib/ansible/modules/utilities/logic/assert.py\", \n  \"modules/utilities/logic/async_status.py\": \"lib/ansible/modules/utilities/logic/async_status.py\", \n  \"modules/utilities/logic/async_wrapper.py\": \"lib/ansible/modules/utilities/logic/async_wrapper.py\", \n  \"modules/utilities/logic/debug.py\": \"lib/ansible/modules/utilities/logic/debug.py\", \n  \"modules/utilities/logic/fail.py\": \"lib/ansible/modules/utilities/logic/fail.py\", \n  \"modules/utilities/logic/import_playbook.py\": \"lib/ansible/modules/utilities/logic/import_playbook.py\", \n  \"modules/utilities/logic/import_role.py\": \"lib/ansible/modules/utilities/logic/import_role.py\", \n  \"modules/utilities/logic/import_tasks.py\": \"lib/ansible/modules/utilities/logic/import_tasks.py\", \n  \"modules/utilities/logic/include.py\": \"lib/ansible/modules/utilities/logic/_include.py\", \n  \"modules/utilities/logic/include_role.py\": \"lib/ansible/modules/utilities/logic/include_role.py\", \n  \"modules/utilities/logic/include_tasks.py\": \"lib/ansible/modules/utilities/logic/include_tasks.py\", \n  \"modules/utilities/logic/include_vars.py\": \"lib/ansible/modules/utilities/logic/include_vars.py\", \n  \"modules/utilities/logic/pause.py\": \"lib/ansible/modules/utilities/logic/pause.py\", \n  \"modules/utilities/logic/set_fact.py\": \"lib/ansible/modules/utilities/logic/set_fact.py\", \n  \"modules/utilities/logic/set_stats.py\": \"lib/ansible/modules/utilities/logic/set_stats.py\", \n  \"modules/utilities/logic/wait_for.py\": \"lib/ansible/modules/utilities/logic/wait_for.py\", \n  \"modules/utilities/logic/wait_for_connection.py\": \"lib/ansible/modules/utilities/logic/wait_for_connection.py\", \n  \"modules/web_infrastructure/ansible_tower/tower_credential.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_credential.py\", \n  \"modules/web_infrastructure/ansible_tower/tower_group.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_group.py\", \n  \"modules/web_infrastructure/ansible_tower/tower_host.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_host.py\", \n  \"modules/web_infrastructure/ansible_tower/tower_inventory.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_inventory.py\", \n  \"modules/web_infrastructure/ansible_tower/tower_job_cancel.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_cancel.py\", \n  \"modules/web_infrastructure/ansible_tower/tower_job_launch.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_launch.py\", \n  \"modules/web_infrastructure/ansible_tower/tower_job_list.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_list.py\", \n  \"modules/web_infrastructure/ansible_tower/tower_job_template.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_template.py\", \n  \"modules/web_infrastructure/ansible_tower/tower_job_wait.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_wait.py\", \n  \"modules/web_infrastructure/ansible_tower/tower_label.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_label.py\", \n  \"modules/web_infrastructure/ansible_tower/tower_organization.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_organization.py\", \n  \"modules/web_infrastructure/ansible_tower/tower_project.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_project.py\", \n  \"modules/web_infrastructure/ansible_tower/tower_role.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_role.py\", \n  \"modules/web_infrastructure/ansible_tower/tower_team.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_team.py\", \n  \"modules/web_infrastructure/ansible_tower/tower_user.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_user.py\", \n  \"modules/web_infrastructure/apache2_mod_proxy.py\": \"lib/ansible/modules/web_infrastructure/apache2_mod_proxy.py\", \n  \"modules/web_infrastructure/apache2_module.py\": \"lib/ansible/modules/web_infrastructure/apache2_module.py\", \n  \"modules/web_infrastructure/deploy_helper.py\": \"lib/ansible/modules/web_infrastructure/deploy_helper.py\", \n  \"modules/web_infrastructure/django_manage.py\": \"lib/ansible/modules/web_infrastructure/django_manage.py\", \n  \"modules/web_infrastructure/ejabberd_user.py\": \"lib/ansible/modules/web_infrastructure/ejabberd_user.py\", \n  \"modules/web_infrastructure/gunicorn.py\": \"lib/ansible/modules/web_infrastructure/gunicorn.py\", \n  \"modules/web_infrastructure/htpasswd.py\": \"lib/ansible/modules/web_infrastructure/htpasswd.py\", \n  \"modules/web_infrastructure/jboss.py\": \"lib/ansible/modules/web_infrastructure/jboss.py\", \n  \"modules/web_infrastructure/jenkins_job.py\": \"lib/ansible/modules/web_infrastructure/jenkins_job.py\", \n  \"modules/web_infrastructure/jenkins_plugin.py\": \"lib/ansible/modules/web_infrastructure/jenkins_plugin.py\", \n  \"modules/web_infrastructure/jenkins_script.py\": \"lib/ansible/modules/web_infrastructure/jenkins_script.py\", \n  \"modules/web_infrastructure/jira.py\": \"lib/ansible/modules/web_infrastructure/jira.py\", \n  \"modules/web_infrastructure/letsencrypt.py\": \"lib/ansible/modules/web_infrastructure/letsencrypt.py\", \n  \"modules/web_infrastructure/nginx_status_facts.py\": \"lib/ansible/modules/web_infrastructure/nginx_status_facts.py\", \n  \"modules/web_infrastructure/rundeck_acl_policy.py\": \"lib/ansible/modules/web_infrastructure/rundeck_acl_policy.py\", \n  \"modules/web_infrastructure/rundeck_project.py\": \"lib/ansible/modules/web_infrastructure/rundeck_project.py\", \n  \"modules/web_infrastructure/supervisorctl.py\": \"lib/ansible/modules/web_infrastructure/supervisorctl.py\", \n  \"modules/web_infrastructure/taiga_issue.py\": \"lib/ansible/modules/web_infrastructure/taiga_issue.py\", \n  \"modules/windows/_win_msi.ps1\": \"lib/ansible/modules/windows/_win_msi.ps1\", \n  \"modules/windows/_win_msi.py\": \"lib/ansible/modules/windows/_win_msi.py\", \n  \"modules/windows/async_status.ps1\": \"lib/ansible/modules/windows/async_status.ps1\", \n  \"modules/windows/async_wrapper.ps1\": \"lib/ansible/modules/windows/async_wrapper.ps1\", \n  \"modules/windows/setup.ps1\": [\n    \"lib/ansible/modules/windows/setup.ps1\"\n  ], \n  \"modules/windows/slurp.ps1\": \"lib/ansible/modules/windows/slurp.ps1\", \n  \"modules/windows/win_acl.ps1\": \"lib/ansible/modules/windows/win_acl.ps1\", \n  \"modules/windows/win_acl.py\": \"lib/ansible/modules/windows/win_acl.py\", \n  \"modules/windows/win_acl_inheritance.ps1\": \"lib/ansible/modules/windows/win_acl_inheritance.ps1\", \n  \"modules/windows/win_acl_inheritance.py\": \"lib/ansible/modules/windows/win_acl_inheritance.py\", \n  \"modules/windows/win_audit_rule.ps1\": \"lib/ansible/modules/windows/win_audit_rule.ps1\", \n  \"modules/windows/win_audit_rule.py\": \"lib/ansible/modules/windows/win_audit_rule.py\", \n  \"modules/windows/win_chocolatey.ps1\": \"lib/ansible/modules/windows/win_chocolatey.ps1\", \n  \"modules/windows/win_chocolatey.py\": \"lib/ansible/modules/windows/win_chocolatey.py\", \n  \"modules/windows/win_command.ps1\": \"lib/ansible/modules/windows/win_command.ps1\", \n  \"modules/windows/win_command.py\": \"lib/ansible/modules/windows/win_command.py\", \n  \"modules/windows/win_copy.ps1\": \"lib/ansible/modules/windows/win_copy.ps1\", \n  \"modules/windows/win_copy.py\": \"lib/ansible/modules/windows/win_copy.py\", \n  \"modules/windows/win_defrag.ps1\": \"lib/ansible/modules/windows/win_defrag.ps1\", \n  \"modules/windows/win_defrag.py\": \"lib/ansible/modules/windows/win_defrag.py\", \n  \"modules/windows/win_disk_image.ps1\": \"lib/ansible/modules/windows/win_disk_image.ps1\", \n  \"modules/windows/win_disk_image.py\": \"lib/ansible/modules/windows/win_disk_image.py\", \n  \"modules/windows/win_dns_client.ps1\": \"lib/ansible/modules/windows/win_dns_client.ps1\", \n  \"modules/windows/win_dns_client.py\": \"lib/ansible/modules/windows/win_dns_client.py\", \n  \"modules/windows/win_domain.ps1\": \"lib/ansible/modules/windows/win_domain.ps1\", \n  \"modules/windows/win_domain.py\": \"lib/ansible/modules/windows/win_domain.py\", \n  \"modules/windows/win_domain_controller.ps1\": \"lib/ansible/modules/windows/win_domain_controller.ps1\", \n  \"modules/windows/win_domain_controller.py\": \"lib/ansible/modules/windows/win_domain_controller.py\", \n  \"modules/windows/win_domain_group.ps1\": \"lib/ansible/modules/windows/win_domain_group.ps1\", \n  \"modules/windows/win_domain_group.py\": \"lib/ansible/modules/windows/win_domain_group.py\", \n  \"modules/windows/win_domain_membership.ps1\": \"lib/ansible/modules/windows/win_domain_membership.ps1\", \n  \"modules/windows/win_domain_membership.py\": \"lib/ansible/modules/windows/win_domain_membership.py\", \n  \"modules/windows/win_domain_user.ps1\": \"lib/ansible/modules/windows/win_domain_user.ps1\", \n  \"modules/windows/win_domain_user.py\": \"lib/ansible/modules/windows/win_domain_user.py\", \n  \"modules/windows/win_dotnet_ngen.ps1\": \"lib/ansible/modules/windows/win_dotnet_ngen.ps1\", \n  \"modules/windows/win_dotnet_ngen.py\": \"lib/ansible/modules/windows/win_dotnet_ngen.py\", \n  \"modules/windows/win_dsc.ps1\": \"lib/ansible/modules/windows/win_dsc.ps1\", \n  \"modules/windows/win_dsc.py\": \"lib/ansible/modules/windows/win_dsc.py\", \n  \"modules/windows/win_environment.ps1\": \"lib/ansible/modules/windows/win_environment.ps1\", \n  \"modules/windows/win_environment.py\": \"lib/ansible/modules/windows/win_environment.py\", \n  \"modules/windows/win_eventlog.ps1\": \"lib/ansible/modules/windows/win_eventlog.ps1\", \n  \"modules/windows/win_eventlog.py\": \"lib/ansible/modules/windows/win_eventlog.py\", \n  \"modules/windows/win_eventlog_entry.ps1\": \"lib/ansible/modules/windows/win_eventlog_entry.ps1\", \n  \"modules/windows/win_eventlog_entry.py\": \"lib/ansible/modules/windows/win_eventlog_entry.py\", \n  \"modules/windows/win_feature.ps1\": \"lib/ansible/modules/windows/win_feature.ps1\", \n  \"modules/windows/win_feature.py\": \"lib/ansible/modules/windows/win_feature.py\", \n  \"modules/windows/win_file.ps1\": \"lib/ansible/modules/windows/win_file.ps1\", \n  \"modules/windows/win_file.py\": \"lib/ansible/modules/windows/win_file.py\", \n  \"modules/windows/win_file_version.ps1\": \"lib/ansible/modules/windows/win_file_version.ps1\", \n  \"modules/windows/win_file_version.py\": \"lib/ansible/modules/windows/win_file_version.py\", \n  \"modules/windows/win_find.ps1\": \"lib/ansible/modules/windows/win_find.ps1\", \n  \"modules/windows/win_find.py\": \"lib/ansible/modules/windows/win_find.py\", \n  \"modules/windows/win_firewall.ps1\": \"lib/ansible/modules/windows/win_firewall.ps1\", \n  \"modules/windows/win_firewall.py\": \"lib/ansible/modules/windows/win_firewall.py\", \n  \"modules/windows/win_firewall_rule.ps1\": \"lib/ansible/modules/windows/win_firewall_rule.ps1\", \n  \"modules/windows/win_firewall_rule.py\": \"lib/ansible/modules/windows/win_firewall_rule.py\", \n  \"modules/windows/win_get_url.ps1\": \"lib/ansible/modules/windows/win_get_url.ps1\", \n  \"modules/windows/win_get_url.py\": \"lib/ansible/modules/windows/win_get_url.py\", \n  \"modules/windows/win_group.ps1\": \"lib/ansible/modules/windows/win_group.ps1\", \n  \"modules/windows/win_group.py\": \"lib/ansible/modules/windows/win_group.py\", \n  \"modules/windows/win_group_membership.ps1\": \"lib/ansible/modules/windows/win_group_membership.ps1\", \n  \"modules/windows/win_group_membership.py\": \"lib/ansible/modules/windows/win_group_membership.py\", \n  \"modules/windows/win_hotfix.ps1\": \"lib/ansible/modules/windows/win_hotfix.ps1\", \n  \"modules/windows/win_hotfix.py\": \"lib/ansible/modules/windows/win_hotfix.py\", \n  \"modules/windows/win_iis_virtualdirectory.ps1\": \"lib/ansible/modules/windows/win_iis_virtualdirectory.ps1\", \n  \"modules/windows/win_iis_virtualdirectory.py\": \"lib/ansible/modules/windows/win_iis_virtualdirectory.py\", \n  \"modules/windows/win_iis_webapplication.ps1\": \"lib/ansible/modules/windows/win_iis_webapplication.ps1\", \n  \"modules/windows/win_iis_webapplication.py\": \"lib/ansible/modules/windows/win_iis_webapplication.py\", \n  \"modules/windows/win_iis_webapppool.ps1\": \"lib/ansible/modules/windows/win_iis_webapppool.ps1\", \n  \"modules/windows/win_iis_webapppool.py\": \"lib/ansible/modules/windows/win_iis_webapppool.py\", \n  \"modules/windows/win_iis_webbinding.ps1\": \"lib/ansible/modules/windows/win_iis_webbinding.ps1\", \n  \"modules/windows/win_iis_webbinding.py\": \"lib/ansible/modules/windows/win_iis_webbinding.py\", \n  \"modules/windows/win_iis_website.ps1\": \"lib/ansible/modules/windows/win_iis_website.ps1\", \n  \"modules/windows/win_iis_website.py\": \"lib/ansible/modules/windows/win_iis_website.py\", \n  \"modules/windows/win_lineinfile.ps1\": \"lib/ansible/modules/windows/win_lineinfile.ps1\", \n  \"modules/windows/win_lineinfile.py\": \"lib/ansible/modules/windows/win_lineinfile.py\", \n  \"modules/windows/win_mapped_drive.ps1\": \"lib/ansible/modules/windows/win_mapped_drive.ps1\", \n  \"modules/windows/win_mapped_drive.py\": \"lib/ansible/modules/windows/win_mapped_drive.py\", \n  \"modules/windows/win_msg.ps1\": \"lib/ansible/modules/windows/win_msg.ps1\", \n  \"modules/windows/win_msg.py\": \"lib/ansible/modules/windows/win_msg.py\", \n  \"modules/windows/win_msi.ps1\": \"lib/ansible/modules/windows/_win_msi.ps1\", \n  \"modules/windows/win_msi.py\": \"lib/ansible/modules/windows/_win_msi.py\", \n  \"modules/windows/win_nssm.ps1\": \"lib/ansible/modules/windows/win_nssm.ps1\", \n  \"modules/windows/win_nssm.py\": \"lib/ansible/modules/windows/win_nssm.py\", \n  \"modules/windows/win_owner.ps1\": \"lib/ansible/modules/windows/win_owner.ps1\", \n  \"modules/windows/win_owner.py\": \"lib/ansible/modules/windows/win_owner.py\", \n  \"modules/windows/win_package.ps1\": \"lib/ansible/modules/windows/win_package.ps1\", \n  \"modules/windows/win_package.py\": \"lib/ansible/modules/windows/win_package.py\", \n  \"modules/windows/win_pagefile.ps1\": \"lib/ansible/modules/windows/win_pagefile.ps1\", \n  \"modules/windows/win_pagefile.py\": \"lib/ansible/modules/windows/win_pagefile.py\", \n  \"modules/windows/win_path.ps1\": \"lib/ansible/modules/windows/win_path.ps1\", \n  \"modules/windows/win_path.py\": \"lib/ansible/modules/windows/win_path.py\", \n  \"modules/windows/win_ping.ps1\": \"lib/ansible/modules/windows/win_ping.ps1\", \n  \"modules/windows/win_ping.py\": \"lib/ansible/modules/windows/win_ping.py\", \n  \"modules/windows/win_power_plan.ps1\": \"lib/ansible/modules/windows/win_power_plan.ps1\", \n  \"modules/windows/win_power_plan.py\": \"lib/ansible/modules/windows/win_power_plan.py\", \n  \"modules/windows/win_psexec.ps1\": \"lib/ansible/modules/windows/win_psexec.ps1\", \n  \"modules/windows/win_psexec.py\": \"lib/ansible/modules/windows/win_psexec.py\", \n  \"modules/windows/win_psmodule.ps1\": \"lib/ansible/modules/windows/win_psmodule.ps1\", \n  \"modules/windows/win_psmodule.py\": \"lib/ansible/modules/windows/win_psmodule.py\", \n  \"modules/windows/win_rabbitmq_plugin.ps1\": \"lib/ansible/modules/windows/win_rabbitmq_plugin.ps1\", \n  \"modules/windows/win_rabbitmq_plugin.py\": \"lib/ansible/modules/windows/win_rabbitmq_plugin.py\", \n  \"modules/windows/win_reboot.py\": \"lib/ansible/modules/windows/win_reboot.py\", \n  \"modules/windows/win_reg_stat.ps1\": \"lib/ansible/modules/windows/win_reg_stat.ps1\", \n  \"modules/windows/win_reg_stat.py\": \"lib/ansible/modules/windows/win_reg_stat.py\", \n  \"modules/windows/win_regedit.ps1\": \"lib/ansible/modules/windows/win_regedit.ps1\", \n  \"modules/windows/win_regedit.py\": \"lib/ansible/modules/windows/win_regedit.py\", \n  \"modules/windows/win_region.ps1\": \"lib/ansible/modules/windows/win_region.ps1\", \n  \"modules/windows/win_region.py\": \"lib/ansible/modules/windows/win_region.py\", \n  \"modules/windows/win_regmerge.ps1\": \"lib/ansible/modules/windows/win_regmerge.ps1\", \n  \"modules/windows/win_regmerge.py\": \"lib/ansible/modules/windows/win_regmerge.py\", \n  \"modules/windows/win_robocopy.ps1\": \"lib/ansible/modules/windows/win_robocopy.ps1\", \n  \"modules/windows/win_robocopy.py\": \"lib/ansible/modules/windows/win_robocopy.py\", \n  \"modules/windows/win_route.ps1\": \"lib/ansible/modules/windows/win_route.ps1\", \n  \"modules/windows/win_route.py\": \"lib/ansible/modules/windows/win_route.py\", \n  \"modules/windows/win_say.ps1\": \"lib/ansible/modules/windows/win_say.ps1\", \n  \"modules/windows/win_say.py\": \"lib/ansible/modules/windows/win_say.py\", \n  \"modules/windows/win_scheduled_task.ps1\": \"lib/ansible/modules/windows/win_scheduled_task.ps1\", \n  \"modules/windows/win_scheduled_task.py\": \"lib/ansible/modules/windows/win_scheduled_task.py\", \n  \"modules/windows/win_scheduled_task_stat.ps1\": \"lib/ansible/modules/windows/win_scheduled_task_stat.ps1\", \n  \"modules/windows/win_scheduled_task_stat.py\": \"lib/ansible/modules/windows/win_scheduled_task_stat.py\", \n  \"modules/windows/win_security_policy.ps1\": \"lib/ansible/modules/windows/win_security_policy.ps1\", \n  \"modules/windows/win_security_policy.py\": \"lib/ansible/modules/windows/win_security_policy.py\", \n  \"modules/windows/win_service.ps1\": \"lib/ansible/modules/windows/win_service.ps1\", \n  \"modules/windows/win_service.py\": \"lib/ansible/modules/windows/win_service.py\", \n  \"modules/windows/win_share.ps1\": \"lib/ansible/modules/windows/win_share.ps1\", \n  \"modules/windows/win_share.py\": \"lib/ansible/modules/windows/win_share.py\", \n  \"modules/windows/win_shell.ps1\": \"lib/ansible/modules/windows/win_shell.ps1\", \n  \"modules/windows/win_shell.py\": \"lib/ansible/modules/windows/win_shell.py\", \n  \"modules/windows/win_shortcut.ps1\": \"lib/ansible/modules/windows/win_shortcut.ps1\", \n  \"modules/windows/win_shortcut.py\": \"lib/ansible/modules/windows/win_shortcut.py\", \n  \"modules/windows/win_stat.ps1\": \"lib/ansible/modules/windows/win_stat.ps1\", \n  \"modules/windows/win_stat.py\": \"lib/ansible/modules/windows/win_stat.py\", \n  \"modules/windows/win_tempfile.ps1\": \"lib/ansible/modules/windows/win_tempfile.ps1\", \n  \"modules/windows/win_tempfile.py\": \"lib/ansible/modules/windows/win_tempfile.py\", \n  \"modules/windows/win_template.py\": \"lib/ansible/modules/windows/win_template.py\", \n  \"modules/windows/win_timezone.ps1\": \"lib/ansible/modules/windows/win_timezone.ps1\", \n  \"modules/windows/win_timezone.py\": \"lib/ansible/modules/windows/win_timezone.py\", \n  \"modules/windows/win_toast.ps1\": \"lib/ansible/modules/windows/win_toast.ps1\", \n  \"modules/windows/win_toast.py\": \"lib/ansible/modules/windows/win_toast.py\", \n  \"modules/windows/win_unzip.ps1\": \"lib/ansible/modules/windows/win_unzip.ps1\", \n  \"modules/windows/win_unzip.py\": \"lib/ansible/modules/windows/win_unzip.py\", \n  \"modules/windows/win_updates.ps1\": \"lib/ansible/modules/windows/win_updates.ps1\", \n  \"modules/windows/win_updates.py\": \"lib/ansible/modules/windows/win_updates.py\", \n  \"modules/windows/win_uri.ps1\": \"lib/ansible/modules/windows/win_uri.ps1\", \n  \"modules/windows/win_uri.py\": \"lib/ansible/modules/windows/win_uri.py\", \n  \"modules/windows/win_user.ps1\": \"lib/ansible/modules/windows/win_user.ps1\", \n  \"modules/windows/win_user.py\": \"lib/ansible/modules/windows/win_user.py\", \n  \"modules/windows/win_user_right.ps1\": \"lib/ansible/modules/windows/win_user_right.ps1\", \n  \"modules/windows/win_user_right.py\": \"lib/ansible/modules/windows/win_user_right.py\", \n  \"modules/windows/win_wait_for.ps1\": \"lib/ansible/modules/windows/win_wait_for.ps1\", \n  \"modules/windows/win_wait_for.py\": \"lib/ansible/modules/windows/win_wait_for.py\", \n  \"modules/windows/win_wakeonlan.ps1\": \"lib/ansible/modules/windows/win_wakeonlan.ps1\", \n  \"modules/windows/win_wakeonlan.py\": \"lib/ansible/modules/windows/win_wakeonlan.py\", \n  \"modules/windows/win_webpicmd.ps1\": \"lib/ansible/modules/windows/win_webpicmd.ps1\", \n  \"modules/windows/win_webpicmd.py\": \"lib/ansible/modules/windows/win_webpicmd.py\", \n  \"mongodb_parameter\": \"lib/ansible/modules/database/mongodb/mongodb_parameter.py\", \n  \"mongodb_parameter module\": \"lib/ansible/modules/database/mongodb/mongodb_parameter.py\", \n  \"mongodb_user\": [\n    \"lib/ansible/modules/database/mongodb/mongodb_user.py\"\n  ], \n  \"mongodb_user module\": [\n    \"lib/ansible/modules/database/mongodb/mongodb_user.py\"\n  ], \n  \"mongodb_user plugin\": [], \n  \"monit\": \"lib/ansible/modules/monitoring/monit.py\", \n  \"monit module\": [\n    \"lib/ansible/modules/monitoring/monit.py\"\n  ], \n  \"monitoring/airbrake_deployment\": \"lib/ansible/modules/monitoring/airbrake_deployment.py\", \n  \"monitoring/airbrake_deployment.py\": \"lib/ansible/modules/monitoring/airbrake_deployment.py\", \n  \"monitoring/bigpanda\": \"lib/ansible/modules/monitoring/bigpanda.py\", \n  \"monitoring/bigpanda.py\": \"lib/ansible/modules/monitoring/bigpanda.py\", \n  \"monitoring/boundary_meter.py\": [], \n  \"monitoring/circonus_annotation\": \"lib/ansible/modules/monitoring/circonus_annotation.py\", \n  \"monitoring/circonus_annotation.py\": \"lib/ansible/modules/monitoring/circonus_annotation.py\", \n  \"monitoring/datadog_event\": \"lib/ansible/modules/monitoring/datadog_event.py\", \n  \"monitoring/datadog_event.py\": \"lib/ansible/modules/monitoring/datadog_event.py\", \n  \"monitoring/datadog_monitor\": \"lib/ansible/modules/monitoring/datadog_monitor.py\", \n  \"monitoring/datadog_monitor.py\": \"lib/ansible/modules/monitoring/datadog_monitor.py\", \n  \"monitoring/honeybadger_deployment\": \"lib/ansible/modules/monitoring/honeybadger_deployment.py\", \n  \"monitoring/honeybadger_deployment.py\": \"lib/ansible/modules/monitoring/honeybadger_deployment.py\", \n  \"monitoring/icinga2_feature\": \"lib/ansible/modules/monitoring/icinga2_feature.py\", \n  \"monitoring/icinga2_feature.py\": \"lib/ansible/modules/monitoring/icinga2_feature.py\", \n  \"monitoring/librato_annotation\": [\n    \"lib/ansible/modules/monitoring/librato_annotation.py\"\n  ], \n  \"monitoring/librato_annotation.py\": \"lib/ansible/modules/monitoring/librato_annotation.py\", \n  \"monitoring/logentries\": \"lib/ansible/modules/monitoring/logentries.py\", \n  \"monitoring/logentries.py\": \"lib/ansible/modules/monitoring/logentries.py\", \n  \"monitoring/logicmonitor\": \"lib/ansible/modules/monitoring/logicmonitor.py\", \n  \"monitoring/logicmonitor.py\": \"lib/ansible/modules/monitoring/logicmonitor.py\", \n  \"monitoring/logicmonitor_facts\": \"lib/ansible/modules/monitoring/logicmonitor_facts.py\", \n  \"monitoring/logicmonitor_facts.py\": \"lib/ansible/modules/monitoring/logicmonitor_facts.py\", \n  \"monitoring/logstash_plugin\": \"lib/ansible/modules/monitoring/logstash_plugin.py\", \n  \"monitoring/logstash_plugin.py\": \"lib/ansible/modules/monitoring/logstash_plugin.py\", \n  \"monitoring/monit\": [\n    \"lib/ansible/modules/monitoring/monit.py\"\n  ], \n  \"monitoring/monit.py\": \"lib/ansible/modules/monitoring/monit.py\", \n  \"monitoring/nagios\": \"lib/ansible/modules/monitoring/nagios.py\", \n  \"monitoring/nagios.py\": \"lib/ansible/modules/monitoring/nagios.py\", \n  \"monitoring/newrelic_deployment\": \"lib/ansible/modules/monitoring/newrelic_deployment.py\", \n  \"monitoring/newrelic_deployment.py\": \"lib/ansible/modules/monitoring/newrelic_deployment.py\", \n  \"monitoring/pagerduty\": \"lib/ansible/modules/monitoring/pagerduty.py\", \n  \"monitoring/pagerduty.py\": \"lib/ansible/modules/monitoring/pagerduty.py\", \n  \"monitoring/pagerduty_alert\": \"lib/ansible/modules/monitoring/pagerduty_alert.py\", \n  \"monitoring/pagerduty_alert.py\": \"lib/ansible/modules/monitoring/pagerduty_alert.py\", \n  \"monitoring/pingdom\": \"lib/ansible/modules/monitoring/pingdom.py\", \n  \"monitoring/pingdom.py\": \"lib/ansible/modules/monitoring/pingdom.py\", \n  \"monitoring/rollbar_deployment\": \"lib/ansible/modules/monitoring/rollbar_deployment.py\", \n  \"monitoring/rollbar_deployment.py\": \"lib/ansible/modules/monitoring/rollbar_deployment.py\", \n  \"monitoring/sensu_check\": \"lib/ansible/modules/monitoring/sensu_check.py\", \n  \"monitoring/sensu_check.py\": \"lib/ansible/modules/monitoring/sensu_check.py\", \n  \"monitoring/sensu_client\": \"lib/ansible/modules/monitoring/sensu_client.py\", \n  \"monitoring/sensu_client.py\": \"lib/ansible/modules/monitoring/sensu_client.py\", \n  \"monitoring/sensu_handler\": \"lib/ansible/modules/monitoring/sensu_handler.py\", \n  \"monitoring/sensu_handler.py\": \"lib/ansible/modules/monitoring/sensu_handler.py\", \n  \"monitoring/sensu_silence\": \"lib/ansible/modules/monitoring/sensu_silence.py\", \n  \"monitoring/sensu_silence.py\": \"lib/ansible/modules/monitoring/sensu_silence.py\", \n  \"monitoring/sensu_subscription\": \"lib/ansible/modules/monitoring/sensu_subscription.py\", \n  \"monitoring/sensu_subscription.py\": \"lib/ansible/modules/monitoring/sensu_subscription.py\", \n  \"monitoring/stackdriver\": \"lib/ansible/modules/monitoring/stackdriver.py\", \n  \"monitoring/stackdriver.py\": \"lib/ansible/modules/monitoring/stackdriver.py\", \n  \"monitoring/statusio_maintenance\": \"lib/ansible/modules/monitoring/statusio_maintenance.py\", \n  \"monitoring/statusio_maintenance.py\": \"lib/ansible/modules/monitoring/statusio_maintenance.py\", \n  \"monitoring/uptimerobot\": \"lib/ansible/modules/monitoring/uptimerobot.py\", \n  \"monitoring/uptimerobot.py\": \"lib/ansible/modules/monitoring/uptimerobot.py\", \n  \"monitoring/zabbix/zabbix_group\": \"lib/ansible/modules/monitoring/zabbix/zabbix_group.py\", \n  \"monitoring/zabbix/zabbix_group.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_group.py\", \n  \"monitoring/zabbix/zabbix_host\": \"lib/ansible/modules/monitoring/zabbix/zabbix_host.py\", \n  \"monitoring/zabbix/zabbix_host.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_host.py\", \n  \"monitoring/zabbix/zabbix_hostmacro\": \"lib/ansible/modules/monitoring/zabbix/zabbix_hostmacro.py\", \n  \"monitoring/zabbix/zabbix_hostmacro.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_hostmacro.py\", \n  \"monitoring/zabbix/zabbix_maintenance\": \"lib/ansible/modules/monitoring/zabbix/zabbix_maintenance.py\", \n  \"monitoring/zabbix/zabbix_maintenance.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_maintenance.py\", \n  \"monitoring/zabbix/zabbix_proxy\": \"lib/ansible/modules/monitoring/zabbix/zabbix_proxy.py\", \n  \"monitoring/zabbix/zabbix_proxy.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_proxy.py\", \n  \"monitoring/zabbix/zabbix_screen\": \"lib/ansible/modules/monitoring/zabbix/zabbix_screen.py\", \n  \"monitoring/zabbix/zabbix_screen.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_screen.py\", \n  \"monitoring/zabbix/zabbix_template\": \"lib/ansible/modules/monitoring/zabbix/zabbix_template.py\", \n  \"monitoring/zabbix/zabbix_template.py\": \"lib/ansible/modules/monitoring/zabbix/zabbix_template.py\", \n  \"mount\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"mount\\nFrom @sivakom on 2015-12-04T001428Z\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"mount module\": [\n    \"lib/ansible/modules/system/mount.py\"\n  ], \n  \"mqtt\": [\n    \"lib/ansible/modules/notification/mqtt.py\"\n  ], \n  \"mqtt module\": \"lib/ansible/modules/notification/mqtt.py\", \n  \"mssql_db\": \"lib/ansible/modules/database/mssql/mssql_db.py\", \n  \"mssql_db - Creating Databases\": [], \n  \"mssql_db module\": \"lib/ansible/modules/database/mssql/mssql_db.py\", \n  \"multiple modules\": [], \n  \"mysql_db\": [\n    \"lib/ansible/modules/database/mysql/mysql_db.py\"\n  ], \n  \"mysql_db (import)\": [], \n  \"mysql_db module\": [\n    \"lib/ansible/modules/database/mysql/mysql_db.py\"\n  ], \n  \"mysql_replication\": [\n    \"lib/ansible/modules/database/mysql/mysql_replication.py\"\n  ], \n  \"mysql_replication module\": [\n    \"lib/ansible/modules/database/mysql/mysql_replication.py\"\n  ], \n  \"mysql_user\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"mysql_user\\n(probably all of the mysql_* are affected)\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"mysql_user module\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"mysql_user:\": [\n    \"lib/ansible/modules/database/mysql/mysql_user.py\"\n  ], \n  \"mysql_variables\": \"lib/ansible/modules/database/mysql/mysql_variables.py\", \n  \"mysql_variables module\": \"lib/ansible/modules/database/mysql/mysql_variables.py\", \n  \"na_cdot_aggregate\": \"lib/ansible/modules/storage/netapp/na_cdot_aggregate.py\", \n  \"na_cdot_aggregate module\": \"lib/ansible/modules/storage/netapp/na_cdot_aggregate.py\", \n  \"na_cdot_license\": \"lib/ansible/modules/storage/netapp/na_cdot_license.py\", \n  \"na_cdot_license module\": \"lib/ansible/modules/storage/netapp/na_cdot_license.py\", \n  \"na_cdot_lun\": \"lib/ansible/modules/storage/netapp/na_cdot_lun.py\", \n  \"na_cdot_lun module\": \"lib/ansible/modules/storage/netapp/na_cdot_lun.py\", \n  \"na_cdot_qtree\": \"lib/ansible/modules/storage/netapp/na_cdot_qtree.py\", \n  \"na_cdot_qtree module\": \"lib/ansible/modules/storage/netapp/na_cdot_qtree.py\", \n  \"na_cdot_svm\": \"lib/ansible/modules/storage/netapp/na_cdot_svm.py\", \n  \"na_cdot_svm module\": \"lib/ansible/modules/storage/netapp/na_cdot_svm.py\", \n  \"na_cdot_user\": \"lib/ansible/modules/storage/netapp/na_cdot_user.py\", \n  \"na_cdot_user module\": \"lib/ansible/modules/storage/netapp/na_cdot_user.py\", \n  \"na_cdot_user_role\": \"lib/ansible/modules/storage/netapp/na_cdot_user_role.py\", \n  \"na_cdot_user_role module\": \"lib/ansible/modules/storage/netapp/na_cdot_user_role.py\", \n  \"na_cdot_volume\": \"lib/ansible/modules/storage/netapp/na_cdot_volume.py\", \n  \"na_cdot_volume module\": \"lib/ansible/modules/storage/netapp/na_cdot_volume.py\", \n  \"nagios\": [\n    \"lib/ansible/modules/monitoring/nagios.py\"\n  ], \n  \"nagios module\": \"lib/ansible/modules/monitoring/nagios.py\", \n  \"nclu\": \"lib/ansible/modules/network/cumulus/nclu.py\", \n  \"nclu module\": \"lib/ansible/modules/network/cumulus/nclu.py\", \n  \"net_banner\": \"lib/ansible/modules/network/system/net_banner.py\", \n  \"net_banner module\": \"lib/ansible/modules/network/system/net_banner.py\", \n  \"net_interface\": \"lib/ansible/modules/network/interface/net_interface.py\", \n  \"net_interface module\": \"lib/ansible/modules/network/interface/net_interface.py\", \n  \"net_l2_interface\": \"lib/ansible/modules/network/layer2/net_l2_interface.py\", \n  \"net_l2_interface module\": \"lib/ansible/modules/network/layer2/net_l2_interface.py\", \n  \"net_l3_interface\": [\n    \"lib/ansible/modules/network/layer3/net_l3_interface.py\"\n  ], \n  \"net_l3_interface module\": \"lib/ansible/modules/network/layer3/net_l3_interface.py\", \n  \"net_linkagg\": \"lib/ansible/modules/network/interface/net_linkagg.py\", \n  \"net_linkagg module\": \"lib/ansible/modules/network/interface/net_linkagg.py\", \n  \"net_lldp\": \"lib/ansible/modules/network/protocol/net_lldp.py\", \n  \"net_lldp module\": \"lib/ansible/modules/network/protocol/net_lldp.py\", \n  \"net_lldp_interface\": \"lib/ansible/modules/network/interface/net_lldp_interface.py\", \n  \"net_lldp_interface module\": \"lib/ansible/modules/network/interface/net_lldp_interface.py\", \n  \"net_logging\": \"lib/ansible/modules/network/system/net_logging.py\", \n  \"net_logging module\": \"lib/ansible/modules/network/system/net_logging.py\", \n  \"net_ping\": \"lib/ansible/modules/network/system/net_ping.py\", \n  \"net_ping module\": \"lib/ansible/modules/network/system/net_ping.py\", \n  \"net_static_route\": [\n    \"lib/ansible/modules/network/routing/net_static_route.py\"\n  ], \n  \"net_static_route module\": \"lib/ansible/modules/network/routing/net_static_route.py\", \n  \"net_system\": \"lib/ansible/modules/network/system/net_system.py\", \n  \"net_system module\": \"lib/ansible/modules/network/system/net_system.py\", \n  \"net_tools/basics/get_url\": \"lib/ansible/modules/net_tools/basics/get_url.py\", \n  \"net_tools/basics/get_url.py\": \"lib/ansible/modules/net_tools/basics/get_url.py\", \n  \"net_tools/basics/slurp\": \"lib/ansible/modules/net_tools/basics/slurp.py\", \n  \"net_tools/basics/slurp.py\": \"lib/ansible/modules/net_tools/basics/slurp.py\", \n  \"net_tools/basics/uri\": \"lib/ansible/modules/net_tools/basics/uri.py\", \n  \"net_tools/basics/uri.py\": \"lib/ansible/modules/net_tools/basics/uri.py\", \n  \"net_tools/cloudflare_dns\": \"lib/ansible/modules/net_tools/cloudflare_dns.py\", \n  \"net_tools/cloudflare_dns.py\": \"lib/ansible/modules/net_tools/cloudflare_dns.py\", \n  \"net_tools/dnsimple\": \"lib/ansible/modules/net_tools/dnsimple.py\", \n  \"net_tools/dnsimple.py\": \"lib/ansible/modules/net_tools/dnsimple.py\", \n  \"net_tools/dnsmadeeasy\": \"lib/ansible/modules/net_tools/dnsmadeeasy.py\", \n  \"net_tools/dnsmadeeasy.py\": \"lib/ansible/modules/net_tools/dnsmadeeasy.py\", \n  \"net_tools/exoscale/exo_dns_domain\": \"lib/ansible/modules/net_tools/exoscale/exo_dns_domain.py\", \n  \"net_tools/exoscale/exo_dns_domain.py\": \"lib/ansible/modules/net_tools/exoscale/exo_dns_domain.py\", \n  \"net_tools/exoscale/exo_dns_record\": \"lib/ansible/modules/net_tools/exoscale/exo_dns_record.py\", \n  \"net_tools/exoscale/exo_dns_record.py\": \"lib/ansible/modules/net_tools/exoscale/exo_dns_record.py\", \n  \"net_tools/haproxy\": \"lib/ansible/modules/net_tools/haproxy.py\", \n  \"net_tools/haproxy.py\": \"lib/ansible/modules/net_tools/haproxy.py\", \n  \"net_tools/infinity/infinity\": \"lib/ansible/modules/net_tools/infinity/infinity.py\", \n  \"net_tools/infinity/infinity.py\": \"lib/ansible/modules/net_tools/infinity/infinity.py\", \n  \"net_tools/ipify_facts\": \"lib/ansible/modules/net_tools/ipify_facts.py\", \n  \"net_tools/ipify_facts.py\": \"lib/ansible/modules/net_tools/ipify_facts.py\", \n  \"net_tools/ipinfoio_facts\": \"lib/ansible/modules/net_tools/ipinfoio_facts.py\", \n  \"net_tools/ipinfoio_facts.py\": \"lib/ansible/modules/net_tools/ipinfoio_facts.py\", \n  \"net_tools/ldap/ldap_attr\": \"lib/ansible/modules/net_tools/ldap/ldap_attr.py\", \n  \"net_tools/ldap/ldap_attr.py\": \"lib/ansible/modules/net_tools/ldap/ldap_attr.py\", \n  \"net_tools/ldap/ldap_entry\": \"lib/ansible/modules/net_tools/ldap/ldap_entry.py\", \n  \"net_tools/ldap/ldap_entry.py\": \"lib/ansible/modules/net_tools/ldap/ldap_entry.py\", \n  \"net_tools/lldp\": \"lib/ansible/modules/net_tools/lldp.py\", \n  \"net_tools/lldp.py\": \"lib/ansible/modules/net_tools/lldp.py\", \n  \"net_tools/nmcli\": \"lib/ansible/modules/net_tools/nmcli.py\", \n  \"net_tools/nmcli.py\": \"lib/ansible/modules/net_tools/nmcli.py\", \n  \"net_tools/nsupdate\": \"lib/ansible/modules/net_tools/nsupdate.py\", \n  \"net_tools/nsupdate.py\": \"lib/ansible/modules/net_tools/nsupdate.py\", \n  \"net_tools/omapi_host\": \"lib/ansible/modules/net_tools/omapi_host.py\", \n  \"net_tools/omapi_host.py\": \"lib/ansible/modules/net_tools/omapi_host.py\", \n  \"net_tools/snmp_facts\": \"lib/ansible/modules/net_tools/snmp_facts.py\", \n  \"net_tools/snmp_facts.py\": \"lib/ansible/modules/net_tools/snmp_facts.py\", \n  \"net_user\": [\n    \"lib/ansible/modules/network/system/net_user.py\"\n  ], \n  \"net_user module\": \"lib/ansible/modules/network/system/net_user.py\", \n  \"net_vlan\": \"lib/ansible/modules/network/layer2/net_vlan.py\", \n  \"net_vlan module\": \"lib/ansible/modules/network/layer2/net_vlan.py\", \n  \"net_vrf\": \"lib/ansible/modules/network/layer3/net_vrf.py\", \n  \"net_vrf module\": \"lib/ansible/modules/network/layer3/net_vrf.py\", \n  \"netapp_e_amg\": \"lib/ansible/modules/storage/netapp/netapp_e_amg.py\", \n  \"netapp_e_amg module\": \"lib/ansible/modules/storage/netapp/netapp_e_amg.py\", \n  \"netapp_e_amg_role\": \"lib/ansible/modules/storage/netapp/netapp_e_amg_role.py\", \n  \"netapp_e_amg_role module\": \"lib/ansible/modules/storage/netapp/netapp_e_amg_role.py\", \n  \"netapp_e_amg_sync\": \"lib/ansible/modules/storage/netapp/netapp_e_amg_sync.py\", \n  \"netapp_e_amg_sync module\": \"lib/ansible/modules/storage/netapp/netapp_e_amg_sync.py\", \n  \"netapp_e_auth\": \"lib/ansible/modules/storage/netapp/netapp_e_auth.py\", \n  \"netapp_e_auth module\": \"lib/ansible/modules/storage/netapp/netapp_e_auth.py\", \n  \"netapp_e_facts\": \"lib/ansible/modules/storage/netapp/netapp_e_facts.py\", \n  \"netapp_e_facts module\": \"lib/ansible/modules/storage/netapp/netapp_e_facts.py\", \n  \"netapp_e_flashcache\": \"lib/ansible/modules/storage/netapp/netapp_e_flashcache.py\", \n  \"netapp_e_flashcache module\": \"lib/ansible/modules/storage/netapp/netapp_e_flashcache.py\", \n  \"netapp_e_host\": \"lib/ansible/modules/storage/netapp/netapp_e_host.py\", \n  \"netapp_e_host module\": \"lib/ansible/modules/storage/netapp/netapp_e_host.py\", \n  \"netapp_e_hostgroup\": \"lib/ansible/modules/storage/netapp/netapp_e_hostgroup.py\", \n  \"netapp_e_hostgroup module\": \"lib/ansible/modules/storage/netapp/netapp_e_hostgroup.py\", \n  \"netapp_e_lun_mapping\": \"lib/ansible/modules/storage/netapp/netapp_e_lun_mapping.py\", \n  \"netapp_e_lun_mapping module\": \"lib/ansible/modules/storage/netapp/netapp_e_lun_mapping.py\", \n  \"netapp_e_snapshot_group\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_group.py\", \n  \"netapp_e_snapshot_group module\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_group.py\", \n  \"netapp_e_snapshot_images\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_images.py\", \n  \"netapp_e_snapshot_images module\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_images.py\", \n  \"netapp_e_snapshot_volume\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_volume.py\", \n  \"netapp_e_snapshot_volume module\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_volume.py\", \n  \"netapp_e_storage_system\": \"lib/ansible/modules/storage/netapp/netapp_e_storage_system.py\", \n  \"netapp_e_storage_system module\": \"lib/ansible/modules/storage/netapp/netapp_e_storage_system.py\", \n  \"netapp_e_storagepool\": \"lib/ansible/modules/storage/netapp/netapp_e_storagepool.py\", \n  \"netapp_e_storagepool module\": \"lib/ansible/modules/storage/netapp/netapp_e_storagepool.py\", \n  \"netapp_e_storagepool storage module\": [\n    \"lib/ansible/modules/storage/netapp/netapp_e_storagepool.py\"\n  ], \n  \"netapp_e_volume\": \"lib/ansible/modules/storage/netapp/netapp_e_volume.py\", \n  \"netapp_e_volume module\": \"lib/ansible/modules/storage/netapp/netapp_e_volume.py\", \n  \"netapp_e_volume_copy\": \"lib/ansible/modules/storage/netapp/netapp_e_volume_copy.py\", \n  \"netapp_e_volume_copy module\": \"lib/ansible/modules/storage/netapp/netapp_e_volume_copy.py\", \n  \"netconf_config\": \"lib/ansible/modules/network/netconf/netconf_config.py\", \n  \"netconf_config module\": \"lib/ansible/modules/network/netconf/netconf_config.py\", \n  \"netscaler\": [\n    \"lib/ansible/modules/network/citrix/_netscaler.py\"\n  ], \n  \"netscaler module\": \"lib/ansible/modules/network/citrix/_netscaler.py\", \n  \"netscaler_cs_action\": \"lib/ansible/modules/network/netscaler/netscaler_cs_action.py\", \n  \"netscaler_cs_action module\": \"lib/ansible/modules/network/netscaler/netscaler_cs_action.py\", \n  \"netscaler_cs_policy\": \"lib/ansible/modules/network/netscaler/netscaler_cs_policy.py\", \n  \"netscaler_cs_policy module\": \"lib/ansible/modules/network/netscaler/netscaler_cs_policy.py\", \n  \"netscaler_cs_vserver\": \"lib/ansible/modules/network/netscaler/netscaler_cs_vserver.py\", \n  \"netscaler_cs_vserver module\": \"lib/ansible/modules/network/netscaler/netscaler_cs_vserver.py\", \n  \"netscaler_gslb_service\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_service.py\", \n  \"netscaler_gslb_service module\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_service.py\", \n  \"netscaler_gslb_site\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_site.py\", \n  \"netscaler_gslb_site module\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_site.py\", \n  \"netscaler_gslb_vserver\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_vserver.py\", \n  \"netscaler_gslb_vserver module\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_vserver.py\", \n  \"netscaler_lb_monitor\": \"lib/ansible/modules/network/netscaler/netscaler_lb_monitor.py\", \n  \"netscaler_lb_monitor module\": \"lib/ansible/modules/network/netscaler/netscaler_lb_monitor.py\", \n  \"netscaler_lb_vserver\": \"lib/ansible/modules/network/netscaler/netscaler_lb_vserver.py\", \n  \"netscaler_lb_vserver module\": \"lib/ansible/modules/network/netscaler/netscaler_lb_vserver.py\", \n  \"netscaler_save_config\": \"lib/ansible/modules/network/netscaler/netscaler_save_config.py\", \n  \"netscaler_save_config module\": \"lib/ansible/modules/network/netscaler/netscaler_save_config.py\", \n  \"netscaler_server\": \"lib/ansible/modules/network/netscaler/netscaler_server.py\", \n  \"netscaler_server module\": \"lib/ansible/modules/network/netscaler/netscaler_server.py\", \n  \"netscaler_service\": \"lib/ansible/modules/network/netscaler/netscaler_service.py\", \n  \"netscaler_service module\": \"lib/ansible/modules/network/netscaler/netscaler_service.py\", \n  \"netscaler_servicegroup\": \"lib/ansible/modules/network/netscaler/netscaler_servicegroup.py\", \n  \"netscaler_servicegroup module\": \"lib/ansible/modules/network/netscaler/netscaler_servicegroup.py\", \n  \"netscaler_ssl_certkey\": \"lib/ansible/modules/network/netscaler/netscaler_ssl_certkey.py\", \n  \"netscaler_ssl_certkey module\": \"lib/ansible/modules/network/netscaler/netscaler_ssl_certkey.py\", \n  \"network modules\": [\n    \"lib/ansible/modules/network\"\n  ], \n  \"network namespace facts\": [], \n  \"network, netcli, ios_command.py, ios_config.py\": [\n    \"lib/ansible/module_utils/netcli.py\", \n    \"lib/ansible/modules/network/ios/ios_command.py\", \n    \"lib/ansible/modules/network/ios/ios_config.py\"\n  ], \n  \"network/a10/a10_server\": \"lib/ansible/modules/network/a10/a10_server.py\", \n  \"network/a10/a10_server.py\": \"lib/ansible/modules/network/a10/a10_server.py\", \n  \"network/a10/a10_server_axapi3\": \"lib/ansible/modules/network/a10/a10_server_axapi3.py\", \n  \"network/a10/a10_server_axapi3.py\": \"lib/ansible/modules/network/a10/a10_server_axapi3.py\", \n  \"network/a10/a10_service_group\": \"lib/ansible/modules/network/a10/a10_service_group.py\", \n  \"network/a10/a10_service_group.py\": \"lib/ansible/modules/network/a10/a10_service_group.py\", \n  \"network/a10/a10_virtual_server\": \"lib/ansible/modules/network/a10/a10_virtual_server.py\", \n  \"network/a10/a10_virtual_server.py\": \"lib/ansible/modules/network/a10/a10_virtual_server.py\", \n  \"network/aci/aci_aep\": \"lib/ansible/modules/network/aci/aci_aep.py\", \n  \"network/aci/aci_aep.py\": \"lib/ansible/modules/network/aci/aci_aep.py\", \n  \"network/aci/aci_ap\": \"lib/ansible/modules/network/aci/aci_ap.py\", \n  \"network/aci/aci_ap.py\": \"lib/ansible/modules/network/aci/aci_ap.py\", \n  \"network/aci/aci_bd\": \"lib/ansible/modules/network/aci/aci_bd.py\", \n  \"network/aci/aci_bd.py\": \"lib/ansible/modules/network/aci/aci_bd.py\", \n  \"network/aci/aci_bd_subnet\": \"lib/ansible/modules/network/aci/aci_bd_subnet.py\", \n  \"network/aci/aci_bd_subnet.py\": \"lib/ansible/modules/network/aci/aci_bd_subnet.py\", \n  \"network/aci/aci_bd_to_l3out\": \"lib/ansible/modules/network/aci/aci_bd_to_l3out.py\", \n  \"network/aci/aci_bd_to_l3out.py\": \"lib/ansible/modules/network/aci/aci_bd_to_l3out.py\", \n  \"network/aci/aci_config_rollback\": \"lib/ansible/modules/network/aci/aci_config_rollback.py\", \n  \"network/aci/aci_config_rollback.py\": \"lib/ansible/modules/network/aci/aci_config_rollback.py\", \n  \"network/aci/aci_config_snapshot\": \"lib/ansible/modules/network/aci/aci_config_snapshot.py\", \n  \"network/aci/aci_config_snapshot.py\": \"lib/ansible/modules/network/aci/aci_config_snapshot.py\", \n  \"network/aci/aci_contract\": \"lib/ansible/modules/network/aci/aci_contract.py\", \n  \"network/aci/aci_contract.py\": \"lib/ansible/modules/network/aci/aci_contract.py\", \n  \"network/aci/aci_contract_subject\": \"lib/ansible/modules/network/aci/aci_contract_subject.py\", \n  \"network/aci/aci_contract_subject.py\": \"lib/ansible/modules/network/aci/aci_contract_subject.py\", \n  \"network/aci/aci_contract_subject_to_filter\": \"lib/ansible/modules/network/aci/aci_contract_subject_to_filter.py\", \n  \"network/aci/aci_contract_subject_to_filter.py\": \"lib/ansible/modules/network/aci/aci_contract_subject_to_filter.py\", \n  \"network/aci/aci_epg\": \"lib/ansible/modules/network/aci/aci_epg.py\", \n  \"network/aci/aci_epg.py\": \"lib/ansible/modules/network/aci/aci_epg.py\", \n  \"network/aci/aci_epg_monitoring_policy\": \"lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py\", \n  \"network/aci/aci_epg_monitoring_policy.py\": \"lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py\", \n  \"network/aci/aci_epg_to_contract\": \"lib/ansible/modules/network/aci/aci_epg_to_contract.py\", \n  \"network/aci/aci_epg_to_contract.py\": \"lib/ansible/modules/network/aci/aci_epg_to_contract.py\", \n  \"network/aci/aci_epg_to_domain\": \"lib/ansible/modules/network/aci/aci_epg_to_domain.py\", \n  \"network/aci/aci_epg_to_domain.py\": \"lib/ansible/modules/network/aci/aci_epg_to_domain.py\", \n  \"network/aci/aci_filter\": \"lib/ansible/modules/network/aci/aci_filter.py\", \n  \"network/aci/aci_filter.py\": \"lib/ansible/modules/network/aci/aci_filter.py\", \n  \"network/aci/aci_filter_entry\": \"lib/ansible/modules/network/aci/aci_filter_entry.py\", \n  \"network/aci/aci_filter_entry.py\": \"lib/ansible/modules/network/aci/aci_filter_entry.py\", \n  \"network/aci/aci_intf_policy_fc\": \"lib/ansible/modules/network/aci/aci_intf_policy_fc.py\", \n  \"network/aci/aci_intf_policy_fc.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_fc.py\", \n  \"network/aci/aci_intf_policy_l2\": \"lib/ansible/modules/network/aci/aci_intf_policy_l2.py\", \n  \"network/aci/aci_intf_policy_l2.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_l2.py\", \n  \"network/aci/aci_intf_policy_lldp\": \"lib/ansible/modules/network/aci/aci_intf_policy_lldp.py\", \n  \"network/aci/aci_intf_policy_lldp.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_lldp.py\", \n  \"network/aci/aci_intf_policy_mcp\": \"lib/ansible/modules/network/aci/aci_intf_policy_mcp.py\", \n  \"network/aci/aci_intf_policy_mcp.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_mcp.py\", \n  \"network/aci/aci_intf_policy_port_channel\": \"lib/ansible/modules/network/aci/aci_intf_policy_port_channel.py\", \n  \"network/aci/aci_intf_policy_port_channel.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_port_channel.py\", \n  \"network/aci/aci_intf_policy_port_security\": \"lib/ansible/modules/network/aci/aci_intf_policy_port_security.py\", \n  \"network/aci/aci_intf_policy_port_security.py\": \"lib/ansible/modules/network/aci/aci_intf_policy_port_security.py\", \n  \"network/aci/aci_l3out_route_tag_policy\": \"lib/ansible/modules/network/aci/aci_l3out_route_tag_policy.py\", \n  \"network/aci/aci_l3out_route_tag_policy.py\": \"lib/ansible/modules/network/aci/aci_l3out_route_tag_policy.py\", \n  \"network/aci/aci_rest\": \"lib/ansible/modules/network/aci/aci_rest.py\", \n  \"network/aci/aci_rest.py\": \"lib/ansible/modules/network/aci/aci_rest.py\", \n  \"network/aci/aci_taboo_contract\": \"lib/ansible/modules/network/aci/aci_taboo_contract.py\", \n  \"network/aci/aci_taboo_contract.py\": \"lib/ansible/modules/network/aci/aci_taboo_contract.py\", \n  \"network/aci/aci_tenant\": \"lib/ansible/modules/network/aci/aci_tenant.py\", \n  \"network/aci/aci_tenant.py\": \"lib/ansible/modules/network/aci/aci_tenant.py\", \n  \"network/aci/aci_tenant_action_rule_profile\": \"lib/ansible/modules/network/aci/aci_tenant_action_rule_profile.py\", \n  \"network/aci/aci_tenant_action_rule_profile.py\": \"lib/ansible/modules/network/aci/aci_tenant_action_rule_profile.py\", \n  \"network/aci/aci_tenant_ep_retention_policy\": \"lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py\", \n  \"network/aci/aci_tenant_ep_retention_policy.py\": \"lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py\", \n  \"network/aci/aci_tenant_span_dst_group\": \"lib/ansible/modules/network/aci/aci_tenant_span_dst_group.py\", \n  \"network/aci/aci_tenant_span_dst_group.py\": \"lib/ansible/modules/network/aci/aci_tenant_span_dst_group.py\", \n  \"network/aci/aci_tenant_span_src_group\": \"lib/ansible/modules/network/aci/aci_tenant_span_src_group.py\", \n  \"network/aci/aci_tenant_span_src_group.py\": \"lib/ansible/modules/network/aci/aci_tenant_span_src_group.py\", \n  \"network/aci/aci_tenant_span_src_group_to_dst_group\": \"lib/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py\", \n  \"network/aci/aci_tenant_span_src_group_to_dst_group.py\": \"lib/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py\", \n  \"network/aci/aci_vrf\": \"lib/ansible/modules/network/aci/aci_vrf.py\", \n  \"network/aci/aci_vrf.py\": \"lib/ansible/modules/network/aci/aci_vrf.py\", \n  \"network/aireos/aireos_command\": \"lib/ansible/modules/network/aireos/aireos_command.py\", \n  \"network/aireos/aireos_command.py\": \"lib/ansible/modules/network/aireos/aireos_command.py\", \n  \"network/aireos/aireos_config\": \"lib/ansible/modules/network/aireos/aireos_config.py\", \n  \"network/aireos/aireos_config.py\": \"lib/ansible/modules/network/aireos/aireos_config.py\", \n  \"network/aos/aos_asn_pool\": \"lib/ansible/modules/network/aos/aos_asn_pool.py\", \n  \"network/aos/aos_asn_pool.py\": \"lib/ansible/modules/network/aos/aos_asn_pool.py\", \n  \"network/aos/aos_blueprint\": \"lib/ansible/modules/network/aos/aos_blueprint.py\", \n  \"network/aos/aos_blueprint.py\": \"lib/ansible/modules/network/aos/aos_blueprint.py\", \n  \"network/aos/aos_blueprint_param\": \"lib/ansible/modules/network/aos/aos_blueprint_param.py\", \n  \"network/aos/aos_blueprint_param.py\": \"lib/ansible/modules/network/aos/aos_blueprint_param.py\", \n  \"network/aos/aos_blueprint_virtnet\": \"lib/ansible/modules/network/aos/aos_blueprint_virtnet.py\", \n  \"network/aos/aos_blueprint_virtnet.py\": \"lib/ansible/modules/network/aos/aos_blueprint_virtnet.py\", \n  \"network/aos/aos_device\": \"lib/ansible/modules/network/aos/aos_device.py\", \n  \"network/aos/aos_device.py\": \"lib/ansible/modules/network/aos/aos_device.py\", \n  \"network/aos/aos_external_router\": \"lib/ansible/modules/network/aos/aos_external_router.py\", \n  \"network/aos/aos_external_router.py\": \"lib/ansible/modules/network/aos/aos_external_router.py\", \n  \"network/aos/aos_ip_pool\": \"lib/ansible/modules/network/aos/aos_ip_pool.py\", \n  \"network/aos/aos_ip_pool.py\": \"lib/ansible/modules/network/aos/aos_ip_pool.py\", \n  \"network/aos/aos_logical_device\": \"lib/ansible/modules/network/aos/aos_logical_device.py\", \n  \"network/aos/aos_logical_device.py\": \"lib/ansible/modules/network/aos/aos_logical_device.py\", \n  \"network/aos/aos_logical_device_map\": \"lib/ansible/modules/network/aos/aos_logical_device_map.py\", \n  \"network/aos/aos_logical_device_map.py\": \"lib/ansible/modules/network/aos/aos_logical_device_map.py\", \n  \"network/aos/aos_login\": \"lib/ansible/modules/network/aos/aos_login.py\", \n  \"network/aos/aos_login.py\": \"lib/ansible/modules/network/aos/aos_login.py\", \n  \"network/aos/aos_rack_type\": \"lib/ansible/modules/network/aos/aos_rack_type.py\", \n  \"network/aos/aos_rack_type.py\": \"lib/ansible/modules/network/aos/aos_rack_type.py\", \n  \"network/aos/aos_template\": \"lib/ansible/modules/network/aos/aos_template.py\", \n  \"network/aos/aos_template.py\": \"lib/ansible/modules/network/aos/aos_template.py\", \n  \"network/aruba/aruba_command\": \"lib/ansible/modules/network/aruba/aruba_command.py\", \n  \"network/aruba/aruba_command.py\": \"lib/ansible/modules/network/aruba/aruba_command.py\", \n  \"network/aruba/aruba_config\": \"lib/ansible/modules/network/aruba/aruba_config.py\", \n  \"network/aruba/aruba_config.py\": \"lib/ansible/modules/network/aruba/aruba_config.py\", \n  \"network/asa/asa_acl\": \"lib/ansible/modules/network/asa/asa_acl.py\", \n  \"network/asa/asa_acl.py\": \"lib/ansible/modules/network/asa/asa_acl.py\", \n  \"network/asa/asa_command\": \"lib/ansible/modules/network/asa/asa_command.py\", \n  \"network/asa/asa_command.py\": \"lib/ansible/modules/network/asa/asa_command.py\", \n  \"network/asa/asa_config\": \"lib/ansible/modules/network/asa/asa_config.py\", \n  \"network/asa/asa_config.py\": \"lib/ansible/modules/network/asa/asa_config.py\", \n  \"network/avi/avi_actiongroupconfig\": \"lib/ansible/modules/network/avi/avi_actiongroupconfig.py\", \n  \"network/avi/avi_actiongroupconfig.py\": \"lib/ansible/modules/network/avi/avi_actiongroupconfig.py\", \n  \"network/avi/avi_alertconfig\": \"lib/ansible/modules/network/avi/avi_alertconfig.py\", \n  \"network/avi/avi_alertconfig.py\": \"lib/ansible/modules/network/avi/avi_alertconfig.py\", \n  \"network/avi/avi_alertemailconfig\": \"lib/ansible/modules/network/avi/avi_alertemailconfig.py\", \n  \"network/avi/avi_alertemailconfig.py\": \"lib/ansible/modules/network/avi/avi_alertemailconfig.py\", \n  \"network/avi/avi_alertscriptconfig\": \"lib/ansible/modules/network/avi/avi_alertscriptconfig.py\", \n  \"network/avi/avi_alertscriptconfig.py\": \"lib/ansible/modules/network/avi/avi_alertscriptconfig.py\", \n  \"network/avi/avi_alertsyslogconfig\": \"lib/ansible/modules/network/avi/avi_alertsyslogconfig.py\", \n  \"network/avi/avi_alertsyslogconfig.py\": \"lib/ansible/modules/network/avi/avi_alertsyslogconfig.py\", \n  \"network/avi/avi_analyticsprofile\": \"lib/ansible/modules/network/avi/avi_analyticsprofile.py\", \n  \"network/avi/avi_analyticsprofile.py\": \"lib/ansible/modules/network/avi/avi_analyticsprofile.py\", \n  \"network/avi/avi_api_session\": \"lib/ansible/modules/network/avi/avi_api_session.py\", \n  \"network/avi/avi_api_session.py\": \"lib/ansible/modules/network/avi/avi_api_session.py\", \n  \"network/avi/avi_applicationpersistenceprofile\": \"lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py\", \n  \"network/avi/avi_applicationpersistenceprofile.py\": \"lib/ansible/modules/network/avi/avi_applicationpersistenceprofile.py\", \n  \"network/avi/avi_applicationprofile\": \"lib/ansible/modules/network/avi/avi_applicationprofile.py\", \n  \"network/avi/avi_applicationprofile.py\": \"lib/ansible/modules/network/avi/avi_applicationprofile.py\", \n  \"network/avi/avi_authprofile\": \"lib/ansible/modules/network/avi/avi_authprofile.py\", \n  \"network/avi/avi_authprofile.py\": \"lib/ansible/modules/network/avi/avi_authprofile.py\", \n  \"network/avi/avi_backup\": \"lib/ansible/modules/network/avi/avi_backup.py\", \n  \"network/avi/avi_backup.py\": \"lib/ansible/modules/network/avi/avi_backup.py\", \n  \"network/avi/avi_backupconfiguration\": \"lib/ansible/modules/network/avi/avi_backupconfiguration.py\", \n  \"network/avi/avi_backupconfiguration.py\": \"lib/ansible/modules/network/avi/avi_backupconfiguration.py\", \n  \"network/avi/avi_certificatemanagementprofile\": \"lib/ansible/modules/network/avi/avi_certificatemanagementprofile.py\", \n  \"network/avi/avi_certificatemanagementprofile.py\": \"lib/ansible/modules/network/avi/avi_certificatemanagementprofile.py\", \n  \"network/avi/avi_cloud\": \"lib/ansible/modules/network/avi/avi_cloud.py\", \n  \"network/avi/avi_cloud.py\": \"lib/ansible/modules/network/avi/avi_cloud.py\", \n  \"network/avi/avi_cloudconnectoruser\": \"lib/ansible/modules/network/avi/avi_cloudconnectoruser.py\", \n  \"network/avi/avi_cloudconnectoruser.py\": \"lib/ansible/modules/network/avi/avi_cloudconnectoruser.py\", \n  \"network/avi/avi_cloudproperties\": \"lib/ansible/modules/network/avi/avi_cloudproperties.py\", \n  \"network/avi/avi_cloudproperties.py\": \"lib/ansible/modules/network/avi/avi_cloudproperties.py\", \n  \"network/avi/avi_cluster\": \"lib/ansible/modules/network/avi/avi_cluster.py\", \n  \"network/avi/avi_cluster.py\": \"lib/ansible/modules/network/avi/avi_cluster.py\", \n  \"network/avi/avi_controllerproperties\": \"lib/ansible/modules/network/avi/avi_controllerproperties.py\", \n  \"network/avi/avi_controllerproperties.py\": \"lib/ansible/modules/network/avi/avi_controllerproperties.py\", \n  \"network/avi/avi_dnspolicy\": \"lib/ansible/modules/network/avi/avi_dnspolicy.py\", \n  \"network/avi/avi_dnspolicy.py\": \"lib/ansible/modules/network/avi/avi_dnspolicy.py\", \n  \"network/avi/avi_gslb\": \"lib/ansible/modules/network/avi/avi_gslb.py\", \n  \"network/avi/avi_gslb.py\": \"lib/ansible/modules/network/avi/avi_gslb.py\", \n  \"network/avi/avi_gslbapplicationpersistenceprofile\": \"lib/ansible/modules/network/avi/avi_gslbapplicationpersistenceprofile.py\", \n  \"network/avi/avi_gslbapplicationpersistenceprofile.py\": \"lib/ansible/modules/network/avi/avi_gslbapplicationpersistenceprofile.py\", \n  \"network/avi/avi_gslbgeodbprofile\": \"lib/ansible/modules/network/avi/avi_gslbgeodbprofile.py\", \n  \"network/avi/avi_gslbgeodbprofile.py\": \"lib/ansible/modules/network/avi/avi_gslbgeodbprofile.py\", \n  \"network/avi/avi_gslbhealthmonitor\": \"lib/ansible/modules/network/avi/avi_gslbhealthmonitor.py\", \n  \"network/avi/avi_gslbhealthmonitor.py\": \"lib/ansible/modules/network/avi/avi_gslbhealthmonitor.py\", \n  \"network/avi/avi_gslbservice\": \"lib/ansible/modules/network/avi/avi_gslbservice.py\", \n  \"network/avi/avi_gslbservice.py\": \"lib/ansible/modules/network/avi/avi_gslbservice.py\", \n  \"network/avi/avi_hardwaresecuritymodulegroup\": \"lib/ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py\", \n  \"network/avi/avi_hardwaresecuritymodulegroup.py\": \"lib/ansible/modules/network/avi/avi_hardwaresecuritymodulegroup.py\", \n  \"network/avi/avi_healthmonitor\": \"lib/ansible/modules/network/avi/avi_healthmonitor.py\", \n  \"network/avi/avi_healthmonitor.py\": \"lib/ansible/modules/network/avi/avi_healthmonitor.py\", \n  \"network/avi/avi_httppolicyset\": \"lib/ansible/modules/network/avi/avi_httppolicyset.py\", \n  \"network/avi/avi_httppolicyset.py\": \"lib/ansible/modules/network/avi/avi_httppolicyset.py\", \n  \"network/avi/avi_ipaddrgroup\": \"lib/ansible/modules/network/avi/avi_ipaddrgroup.py\", \n  \"network/avi/avi_ipaddrgroup.py\": \"lib/ansible/modules/network/avi/avi_ipaddrgroup.py\", \n  \"network/avi/avi_ipamdnsproviderprofile\": \"lib/ansible/modules/network/avi/avi_ipamdnsproviderprofile.py\", \n  \"network/avi/avi_ipamdnsproviderprofile.py\": \"lib/ansible/modules/network/avi/avi_ipamdnsproviderprofile.py\", \n  \"network/avi/avi_microservicegroup\": \"lib/ansible/modules/network/avi/avi_microservicegroup.py\", \n  \"network/avi/avi_microservicegroup.py\": \"lib/ansible/modules/network/avi/avi_microservicegroup.py\", \n  \"network/avi/avi_network\": \"lib/ansible/modules/network/avi/avi_network.py\", \n  \"network/avi/avi_network.py\": \"lib/ansible/modules/network/avi/avi_network.py\", \n  \"network/avi/avi_networkprofile\": \"lib/ansible/modules/network/avi/avi_networkprofile.py\", \n  \"network/avi/avi_networkprofile.py\": \"lib/ansible/modules/network/avi/avi_networkprofile.py\", \n  \"network/avi/avi_networksecuritypolicy\": \"lib/ansible/modules/network/avi/avi_networksecuritypolicy.py\", \n  \"network/avi/avi_networksecuritypolicy.py\": \"lib/ansible/modules/network/avi/avi_networksecuritypolicy.py\", \n  \"network/avi/avi_pkiprofile\": \"lib/ansible/modules/network/avi/avi_pkiprofile.py\", \n  \"network/avi/avi_pkiprofile.py\": \"lib/ansible/modules/network/avi/avi_pkiprofile.py\", \n  \"network/avi/avi_pool\": \"lib/ansible/modules/network/avi/avi_pool.py\", \n  \"network/avi/avi_pool.py\": \"lib/ansible/modules/network/avi/avi_pool.py\", \n  \"network/avi/avi_poolgroup\": \"lib/ansible/modules/network/avi/avi_poolgroup.py\", \n  \"network/avi/avi_poolgroup.py\": \"lib/ansible/modules/network/avi/avi_poolgroup.py\", \n  \"network/avi/avi_poolgroupdeploymentpolicy\": \"lib/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py\", \n  \"network/avi/avi_poolgroupdeploymentpolicy.py\": \"lib/ansible/modules/network/avi/avi_poolgroupdeploymentpolicy.py\", \n  \"network/avi/avi_prioritylabels\": \"lib/ansible/modules/network/avi/avi_prioritylabels.py\", \n  \"network/avi/avi_prioritylabels.py\": \"lib/ansible/modules/network/avi/avi_prioritylabels.py\", \n  \"network/avi/avi_role\": \"lib/ansible/modules/network/avi/avi_role.py\", \n  \"network/avi/avi_role.py\": \"lib/ansible/modules/network/avi/avi_role.py\", \n  \"network/avi/avi_scheduler\": \"lib/ansible/modules/network/avi/avi_scheduler.py\", \n  \"network/avi/avi_scheduler.py\": \"lib/ansible/modules/network/avi/avi_scheduler.py\", \n  \"network/avi/avi_seproperties\": \"lib/ansible/modules/network/avi/avi_seproperties.py\", \n  \"network/avi/avi_seproperties.py\": \"lib/ansible/modules/network/avi/avi_seproperties.py\", \n  \"network/avi/avi_serverautoscalepolicy\": \"lib/ansible/modules/network/avi/avi_serverautoscalepolicy.py\", \n  \"network/avi/avi_serverautoscalepolicy.py\": \"lib/ansible/modules/network/avi/avi_serverautoscalepolicy.py\", \n  \"network/avi/avi_serviceengine\": \"lib/ansible/modules/network/avi/avi_serviceengine.py\", \n  \"network/avi/avi_serviceengine.py\": \"lib/ansible/modules/network/avi/avi_serviceengine.py\", \n  \"network/avi/avi_serviceenginegroup\": \"lib/ansible/modules/network/avi/avi_serviceenginegroup.py\", \n  \"network/avi/avi_serviceenginegroup.py\": \"lib/ansible/modules/network/avi/avi_serviceenginegroup.py\", \n  \"network/avi/avi_snmptrapprofile\": \"lib/ansible/modules/network/avi/avi_snmptrapprofile.py\", \n  \"network/avi/avi_snmptrapprofile.py\": \"lib/ansible/modules/network/avi/avi_snmptrapprofile.py\", \n  \"network/avi/avi_sslkeyandcertificate\": \"lib/ansible/modules/network/avi/avi_sslkeyandcertificate.py\", \n  \"network/avi/avi_sslkeyandcertificate.py\": \"lib/ansible/modules/network/avi/avi_sslkeyandcertificate.py\", \n  \"network/avi/avi_sslprofile\": \"lib/ansible/modules/network/avi/avi_sslprofile.py\", \n  \"network/avi/avi_sslprofile.py\": \"lib/ansible/modules/network/avi/avi_sslprofile.py\", \n  \"network/avi/avi_stringgroup\": \"lib/ansible/modules/network/avi/avi_stringgroup.py\", \n  \"network/avi/avi_stringgroup.py\": \"lib/ansible/modules/network/avi/avi_stringgroup.py\", \n  \"network/avi/avi_systemconfiguration\": \"lib/ansible/modules/network/avi/avi_systemconfiguration.py\", \n  \"network/avi/avi_systemconfiguration.py\": \"lib/ansible/modules/network/avi/avi_systemconfiguration.py\", \n  \"network/avi/avi_tenant\": \"lib/ansible/modules/network/avi/avi_tenant.py\", \n  \"network/avi/avi_tenant.py\": \"lib/ansible/modules/network/avi/avi_tenant.py\", \n  \"network/avi/avi_trafficcloneprofile\": \"lib/ansible/modules/network/avi/avi_trafficcloneprofile.py\", \n  \"network/avi/avi_trafficcloneprofile.py\": \"lib/ansible/modules/network/avi/avi_trafficcloneprofile.py\", \n  \"network/avi/avi_useraccountprofile\": \"lib/ansible/modules/network/avi/avi_useraccountprofile.py\", \n  \"network/avi/avi_useraccountprofile.py\": \"lib/ansible/modules/network/avi/avi_useraccountprofile.py\", \n  \"network/avi/avi_virtualservice\": \"lib/ansible/modules/network/avi/avi_virtualservice.py\", \n  \"network/avi/avi_virtualservice.py\": \"lib/ansible/modules/network/avi/avi_virtualservice.py\", \n  \"network/avi/avi_vrfcontext\": \"lib/ansible/modules/network/avi/avi_vrfcontext.py\", \n  \"network/avi/avi_vrfcontext.py\": \"lib/ansible/modules/network/avi/avi_vrfcontext.py\", \n  \"network/avi/avi_vsdatascriptset\": \"lib/ansible/modules/network/avi/avi_vsdatascriptset.py\", \n  \"network/avi/avi_vsdatascriptset.py\": \"lib/ansible/modules/network/avi/avi_vsdatascriptset.py\", \n  \"network/avi/avi_vsvip\": \"lib/ansible/modules/network/avi/avi_vsvip.py\", \n  \"network/avi/avi_vsvip.py\": \"lib/ansible/modules/network/avi/avi_vsvip.py\", \n  \"network/avi/avi_webhook\": \"lib/ansible/modules/network/avi/avi_webhook.py\", \n  \"network/avi/avi_webhook.py\": \"lib/ansible/modules/network/avi/avi_webhook.py\", \n  \"network/bigswitch/bcf_switch\": \"lib/ansible/modules/network/bigswitch/bcf_switch.py\", \n  \"network/bigswitch/bcf_switch.py\": \"lib/ansible/modules/network/bigswitch/bcf_switch.py\", \n  \"network/bigswitch/bigmon_chain\": \"lib/ansible/modules/network/bigswitch/bigmon_chain.py\", \n  \"network/bigswitch/bigmon_chain.py\": \"lib/ansible/modules/network/bigswitch/bigmon_chain.py\", \n  \"network/bigswitch/bigmon_policy\": \"lib/ansible/modules/network/bigswitch/bigmon_policy.py\", \n  \"network/bigswitch/bigmon_policy.py\": \"lib/ansible/modules/network/bigswitch/bigmon_policy.py\", \n  \"network/citrix/_netscaler\": \"lib/ansible/modules/network/citrix/_netscaler.py\", \n  \"network/citrix/_netscaler.py\": \"lib/ansible/modules/network/citrix/_netscaler.py\", \n  \"network/citrix/netscaler\": \"lib/ansible/modules/network/citrix/_netscaler.py\", \n  \"network/citrix/netscaler.py\": \"lib/ansible/modules/network/citrix/_netscaler.py\", \n  \"network/cloudengine/ce_aaa_server\": \"lib/ansible/modules/network/cloudengine/ce_aaa_server.py\", \n  \"network/cloudengine/ce_aaa_server.py\": \"lib/ansible/modules/network/cloudengine/ce_aaa_server.py\", \n  \"network/cloudengine/ce_aaa_server_host\": \"lib/ansible/modules/network/cloudengine/ce_aaa_server_host.py\", \n  \"network/cloudengine/ce_aaa_server_host.py\": \"lib/ansible/modules/network/cloudengine/ce_aaa_server_host.py\", \n  \"network/cloudengine/ce_acl\": \"lib/ansible/modules/network/cloudengine/ce_acl.py\", \n  \"network/cloudengine/ce_acl.py\": \"lib/ansible/modules/network/cloudengine/ce_acl.py\", \n  \"network/cloudengine/ce_acl_advance\": \"lib/ansible/modules/network/cloudengine/ce_acl_advance.py\", \n  \"network/cloudengine/ce_acl_advance.py\": \"lib/ansible/modules/network/cloudengine/ce_acl_advance.py\", \n  \"network/cloudengine/ce_acl_interface\": \"lib/ansible/modules/network/cloudengine/ce_acl_interface.py\", \n  \"network/cloudengine/ce_acl_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_acl_interface.py\", \n  \"network/cloudengine/ce_bfd_global\": \"lib/ansible/modules/network/cloudengine/ce_bfd_global.py\", \n  \"network/cloudengine/ce_bfd_global.py\": \"lib/ansible/modules/network/cloudengine/ce_bfd_global.py\", \n  \"network/cloudengine/ce_bfd_session\": \"lib/ansible/modules/network/cloudengine/ce_bfd_session.py\", \n  \"network/cloudengine/ce_bfd_session.py\": \"lib/ansible/modules/network/cloudengine/ce_bfd_session.py\", \n  \"network/cloudengine/ce_bfd_view\": \"lib/ansible/modules/network/cloudengine/ce_bfd_view.py\", \n  \"network/cloudengine/ce_bfd_view.py\": \"lib/ansible/modules/network/cloudengine/ce_bfd_view.py\", \n  \"network/cloudengine/ce_bgp\": \"lib/ansible/modules/network/cloudengine/ce_bgp.py\", \n  \"network/cloudengine/ce_bgp.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp.py\", \n  \"network/cloudengine/ce_bgp_af\": \"lib/ansible/modules/network/cloudengine/ce_bgp_af.py\", \n  \"network/cloudengine/ce_bgp_af.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp_af.py\", \n  \"network/cloudengine/ce_bgp_neighbor\": \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor.py\", \n  \"network/cloudengine/ce_bgp_neighbor.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor.py\", \n  \"network/cloudengine/ce_bgp_neighbor_af\": \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor_af.py\", \n  \"network/cloudengine/ce_bgp_neighbor_af.py\": \"lib/ansible/modules/network/cloudengine/ce_bgp_neighbor_af.py\", \n  \"network/cloudengine/ce_command\": \"lib/ansible/modules/network/cloudengine/ce_command.py\", \n  \"network/cloudengine/ce_command.py\": \"lib/ansible/modules/network/cloudengine/ce_command.py\", \n  \"network/cloudengine/ce_config\": \"lib/ansible/modules/network/cloudengine/ce_config.py\", \n  \"network/cloudengine/ce_config.py\": \"lib/ansible/modules/network/cloudengine/ce_config.py\", \n  \"network/cloudengine/ce_dldp\": \"lib/ansible/modules/network/cloudengine/ce_dldp.py\", \n  \"network/cloudengine/ce_dldp.py\": \"lib/ansible/modules/network/cloudengine/ce_dldp.py\", \n  \"network/cloudengine/ce_dldp_interface\": \"lib/ansible/modules/network/cloudengine/ce_dldp_interface.py\", \n  \"network/cloudengine/ce_dldp_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_dldp_interface.py\", \n  \"network/cloudengine/ce_eth_trunk\": \"lib/ansible/modules/network/cloudengine/ce_eth_trunk.py\", \n  \"network/cloudengine/ce_eth_trunk.py\": \"lib/ansible/modules/network/cloudengine/ce_eth_trunk.py\", \n  \"network/cloudengine/ce_evpn_bd_vni\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bd_vni.py\", \n  \"network/cloudengine/ce_evpn_bd_vni.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bd_vni.py\", \n  \"network/cloudengine/ce_evpn_bgp\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp.py\", \n  \"network/cloudengine/ce_evpn_bgp.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp.py\", \n  \"network/cloudengine/ce_evpn_bgp_rr\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp_rr.py\", \n  \"network/cloudengine/ce_evpn_bgp_rr.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_bgp_rr.py\", \n  \"network/cloudengine/ce_evpn_global\": \"lib/ansible/modules/network/cloudengine/ce_evpn_global.py\", \n  \"network/cloudengine/ce_evpn_global.py\": \"lib/ansible/modules/network/cloudengine/ce_evpn_global.py\", \n  \"network/cloudengine/ce_facts\": \"lib/ansible/modules/network/cloudengine/ce_facts.py\", \n  \"network/cloudengine/ce_facts.py\": \"lib/ansible/modules/network/cloudengine/ce_facts.py\", \n  \"network/cloudengine/ce_file_copy\": \"lib/ansible/modules/network/cloudengine/ce_file_copy.py\", \n  \"network/cloudengine/ce_file_copy.py\": \"lib/ansible/modules/network/cloudengine/ce_file_copy.py\", \n  \"network/cloudengine/ce_info_center_debug\": \"lib/ansible/modules/network/cloudengine/ce_info_center_debug.py\", \n  \"network/cloudengine/ce_info_center_debug.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_debug.py\", \n  \"network/cloudengine/ce_info_center_global\": \"lib/ansible/modules/network/cloudengine/ce_info_center_global.py\", \n  \"network/cloudengine/ce_info_center_global.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_global.py\", \n  \"network/cloudengine/ce_info_center_log\": \"lib/ansible/modules/network/cloudengine/ce_info_center_log.py\", \n  \"network/cloudengine/ce_info_center_log.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_log.py\", \n  \"network/cloudengine/ce_info_center_trap\": \"lib/ansible/modules/network/cloudengine/ce_info_center_trap.py\", \n  \"network/cloudengine/ce_info_center_trap.py\": \"lib/ansible/modules/network/cloudengine/ce_info_center_trap.py\", \n  \"network/cloudengine/ce_interface\": \"lib/ansible/modules/network/cloudengine/ce_interface.py\", \n  \"network/cloudengine/ce_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_interface.py\", \n  \"network/cloudengine/ce_interface_ospf\": \"lib/ansible/modules/network/cloudengine/ce_interface_ospf.py\", \n  \"network/cloudengine/ce_interface_ospf.py\": \"lib/ansible/modules/network/cloudengine/ce_interface_ospf.py\", \n  \"network/cloudengine/ce_ip_interface\": \"lib/ansible/modules/network/cloudengine/ce_ip_interface.py\", \n  \"network/cloudengine/ce_ip_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_ip_interface.py\", \n  \"network/cloudengine/ce_link_status\": \"lib/ansible/modules/network/cloudengine/ce_link_status.py\", \n  \"network/cloudengine/ce_link_status.py\": \"lib/ansible/modules/network/cloudengine/ce_link_status.py\", \n  \"network/cloudengine/ce_mlag_config\": \"lib/ansible/modules/network/cloudengine/ce_mlag_config.py\", \n  \"network/cloudengine/ce_mlag_config.py\": \"lib/ansible/modules/network/cloudengine/ce_mlag_config.py\", \n  \"network/cloudengine/ce_mlag_interface\": \"lib/ansible/modules/network/cloudengine/ce_mlag_interface.py\", \n  \"network/cloudengine/ce_mlag_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_mlag_interface.py\", \n  \"network/cloudengine/ce_mtu\": \"lib/ansible/modules/network/cloudengine/ce_mtu.py\", \n  \"network/cloudengine/ce_mtu.py\": \"lib/ansible/modules/network/cloudengine/ce_mtu.py\", \n  \"network/cloudengine/ce_netconf\": \"lib/ansible/modules/network/cloudengine/ce_netconf.py\", \n  \"network/cloudengine/ce_netconf.py\": \"lib/ansible/modules/network/cloudengine/ce_netconf.py\", \n  \"network/cloudengine/ce_netstream_aging\": \"lib/ansible/modules/network/cloudengine/ce_netstream_aging.py\", \n  \"network/cloudengine/ce_netstream_aging.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_aging.py\", \n  \"network/cloudengine/ce_netstream_export\": \"lib/ansible/modules/network/cloudengine/ce_netstream_export.py\", \n  \"network/cloudengine/ce_netstream_export.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_export.py\", \n  \"network/cloudengine/ce_netstream_global\": \"lib/ansible/modules/network/cloudengine/ce_netstream_global.py\", \n  \"network/cloudengine/ce_netstream_global.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_global.py\", \n  \"network/cloudengine/ce_netstream_template\": \"lib/ansible/modules/network/cloudengine/ce_netstream_template.py\", \n  \"network/cloudengine/ce_netstream_template.py\": \"lib/ansible/modules/network/cloudengine/ce_netstream_template.py\", \n  \"network/cloudengine/ce_ntp\": \"lib/ansible/modules/network/cloudengine/ce_ntp.py\", \n  \"network/cloudengine/ce_ntp.py\": \"lib/ansible/modules/network/cloudengine/ce_ntp.py\", \n  \"network/cloudengine/ce_ntp_auth\": \"lib/ansible/modules/network/cloudengine/ce_ntp_auth.py\", \n  \"network/cloudengine/ce_ntp_auth.py\": \"lib/ansible/modules/network/cloudengine/ce_ntp_auth.py\", \n  \"network/cloudengine/ce_ospf\": \"lib/ansible/modules/network/cloudengine/ce_ospf.py\", \n  \"network/cloudengine/ce_ospf.py\": \"lib/ansible/modules/network/cloudengine/ce_ospf.py\", \n  \"network/cloudengine/ce_ospf_vrf\": \"lib/ansible/modules/network/cloudengine/ce_ospf_vrf.py\", \n  \"network/cloudengine/ce_ospf_vrf.py\": \"lib/ansible/modules/network/cloudengine/ce_ospf_vrf.py\", \n  \"network/cloudengine/ce_reboot\": \"lib/ansible/modules/network/cloudengine/ce_reboot.py\", \n  \"network/cloudengine/ce_reboot.py\": \"lib/ansible/modules/network/cloudengine/ce_reboot.py\", \n  \"network/cloudengine/ce_rollback\": \"lib/ansible/modules/network/cloudengine/ce_rollback.py\", \n  \"network/cloudengine/ce_rollback.py\": \"lib/ansible/modules/network/cloudengine/ce_rollback.py\", \n  \"network/cloudengine/ce_sflow\": \"lib/ansible/modules/network/cloudengine/ce_sflow.py\", \n  \"network/cloudengine/ce_sflow.py\": \"lib/ansible/modules/network/cloudengine/ce_sflow.py\", \n  \"network/cloudengine/ce_snmp_community\": \"lib/ansible/modules/network/cloudengine/ce_snmp_community.py\", \n  \"network/cloudengine/ce_snmp_community.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_community.py\", \n  \"network/cloudengine/ce_snmp_contact\": \"lib/ansible/modules/network/cloudengine/ce_snmp_contact.py\", \n  \"network/cloudengine/ce_snmp_contact.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_contact.py\", \n  \"network/cloudengine/ce_snmp_location\": \"lib/ansible/modules/network/cloudengine/ce_snmp_location.py\", \n  \"network/cloudengine/ce_snmp_location.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_location.py\", \n  \"network/cloudengine/ce_snmp_target_host\": \"lib/ansible/modules/network/cloudengine/ce_snmp_target_host.py\", \n  \"network/cloudengine/ce_snmp_target_host.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_target_host.py\", \n  \"network/cloudengine/ce_snmp_traps\": \"lib/ansible/modules/network/cloudengine/ce_snmp_traps.py\", \n  \"network/cloudengine/ce_snmp_traps.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_traps.py\", \n  \"network/cloudengine/ce_snmp_user\": \"lib/ansible/modules/network/cloudengine/ce_snmp_user.py\", \n  \"network/cloudengine/ce_snmp_user.py\": \"lib/ansible/modules/network/cloudengine/ce_snmp_user.py\", \n  \"network/cloudengine/ce_startup\": \"lib/ansible/modules/network/cloudengine/ce_startup.py\", \n  \"network/cloudengine/ce_startup.py\": \"lib/ansible/modules/network/cloudengine/ce_startup.py\", \n  \"network/cloudengine/ce_static_route\": \"lib/ansible/modules/network/cloudengine/ce_static_route.py\", \n  \"network/cloudengine/ce_static_route.py\": \"lib/ansible/modules/network/cloudengine/ce_static_route.py\", \n  \"network/cloudengine/ce_stp\": \"lib/ansible/modules/network/cloudengine/ce_stp.py\", \n  \"network/cloudengine/ce_stp.py\": \"lib/ansible/modules/network/cloudengine/ce_stp.py\", \n  \"network/cloudengine/ce_switchport\": \"lib/ansible/modules/network/cloudengine/ce_switchport.py\", \n  \"network/cloudengine/ce_switchport.py\": \"lib/ansible/modules/network/cloudengine/ce_switchport.py\", \n  \"network/cloudengine/ce_vlan\": \"lib/ansible/modules/network/cloudengine/ce_vlan.py\", \n  \"network/cloudengine/ce_vlan.py\": \"lib/ansible/modules/network/cloudengine/ce_vlan.py\", \n  \"network/cloudengine/ce_vrf\": \"lib/ansible/modules/network/cloudengine/ce_vrf.py\", \n  \"network/cloudengine/ce_vrf.py\": \"lib/ansible/modules/network/cloudengine/ce_vrf.py\", \n  \"network/cloudengine/ce_vrf_af\": \"lib/ansible/modules/network/cloudengine/ce_vrf_af.py\", \n  \"network/cloudengine/ce_vrf_af.py\": \"lib/ansible/modules/network/cloudengine/ce_vrf_af.py\", \n  \"network/cloudengine/ce_vrf_interface\": \"lib/ansible/modules/network/cloudengine/ce_vrf_interface.py\", \n  \"network/cloudengine/ce_vrf_interface.py\": \"lib/ansible/modules/network/cloudengine/ce_vrf_interface.py\", \n  \"network/cloudengine/ce_vrrp\": \"lib/ansible/modules/network/cloudengine/ce_vrrp.py\", \n  \"network/cloudengine/ce_vrrp.py\": \"lib/ansible/modules/network/cloudengine/ce_vrrp.py\", \n  \"network/cloudengine/ce_vxlan_arp\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_arp.py\", \n  \"network/cloudengine/ce_vxlan_arp.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_arp.py\", \n  \"network/cloudengine/ce_vxlan_gateway\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_gateway.py\", \n  \"network/cloudengine/ce_vxlan_gateway.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_gateway.py\", \n  \"network/cloudengine/ce_vxlan_global\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_global.py\", \n  \"network/cloudengine/ce_vxlan_global.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_global.py\", \n  \"network/cloudengine/ce_vxlan_tunnel\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_tunnel.py\", \n  \"network/cloudengine/ce_vxlan_tunnel.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_tunnel.py\", \n  \"network/cloudengine/ce_vxlan_vap\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_vap.py\", \n  \"network/cloudengine/ce_vxlan_vap.py\": \"lib/ansible/modules/network/cloudengine/ce_vxlan_vap.py\", \n  \"network/cloudvision/cv_server_provision\": \"lib/ansible/modules/network/cloudvision/cv_server_provision.py\", \n  \"network/cloudvision/cv_server_provision.py\": \"lib/ansible/modules/network/cloudvision/cv_server_provision.py\", \n  \"network/cumulus/_cl_bond\": \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n  \"network/cumulus/_cl_bond.py\": \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n  \"network/cumulus/_cl_bridge\": \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n  \"network/cumulus/_cl_bridge.py\": \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n  \"network/cumulus/_cl_img_install\": \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n  \"network/cumulus/_cl_img_install.py\": \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n  \"network/cumulus/_cl_interface\": \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n  \"network/cumulus/_cl_interface.py\": \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n  \"network/cumulus/_cl_interface_policy\": \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n  \"network/cumulus/_cl_interface_policy.py\": \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n  \"network/cumulus/_cl_license\": \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n  \"network/cumulus/_cl_license.py\": \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n  \"network/cumulus/_cl_ports\": \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n  \"network/cumulus/_cl_ports.py\": \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n  \"network/cumulus/cl_bond\": \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n  \"network/cumulus/cl_bond.py\": \"lib/ansible/modules/network/cumulus/_cl_bond.py\", \n  \"network/cumulus/cl_bridge\": \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n  \"network/cumulus/cl_bridge.py\": \"lib/ansible/modules/network/cumulus/_cl_bridge.py\", \n  \"network/cumulus/cl_img_install\": \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n  \"network/cumulus/cl_img_install.py\": \"lib/ansible/modules/network/cumulus/_cl_img_install.py\", \n  \"network/cumulus/cl_interface\": \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n  \"network/cumulus/cl_interface.py\": \"lib/ansible/modules/network/cumulus/_cl_interface.py\", \n  \"network/cumulus/cl_interface_policy\": \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n  \"network/cumulus/cl_interface_policy.py\": \"lib/ansible/modules/network/cumulus/_cl_interface_policy.py\", \n  \"network/cumulus/cl_license\": \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n  \"network/cumulus/cl_license.py\": \"lib/ansible/modules/network/cumulus/_cl_license.py\", \n  \"network/cumulus/cl_ports\": \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n  \"network/cumulus/cl_ports.py\": \"lib/ansible/modules/network/cumulus/_cl_ports.py\", \n  \"network/cumulus/nclu\": \"lib/ansible/modules/network/cumulus/nclu.py\", \n  \"network/cumulus/nclu.py\": \"lib/ansible/modules/network/cumulus/nclu.py\", \n  \"network/dellos10/dellos10_command\": \"lib/ansible/modules/network/dellos10/dellos10_command.py\", \n  \"network/dellos10/dellos10_command.py\": \"lib/ansible/modules/network/dellos10/dellos10_command.py\", \n  \"network/dellos10/dellos10_config\": \"lib/ansible/modules/network/dellos10/dellos10_config.py\", \n  \"network/dellos10/dellos10_config.py\": \"lib/ansible/modules/network/dellos10/dellos10_config.py\", \n  \"network/dellos10/dellos10_facts\": \"lib/ansible/modules/network/dellos10/dellos10_facts.py\", \n  \"network/dellos10/dellos10_facts.py\": \"lib/ansible/modules/network/dellos10/dellos10_facts.py\", \n  \"network/dellos6/dellos6_command\": \"lib/ansible/modules/network/dellos6/dellos6_command.py\", \n  \"network/dellos6/dellos6_command.py\": \"lib/ansible/modules/network/dellos6/dellos6_command.py\", \n  \"network/dellos6/dellos6_config\": \"lib/ansible/modules/network/dellos6/dellos6_config.py\", \n  \"network/dellos6/dellos6_config.py\": \"lib/ansible/modules/network/dellos6/dellos6_config.py\", \n  \"network/dellos6/dellos6_facts\": \"lib/ansible/modules/network/dellos6/dellos6_facts.py\", \n  \"network/dellos6/dellos6_facts.py\": \"lib/ansible/modules/network/dellos6/dellos6_facts.py\", \n  \"network/dellos9/dellos9_command\": \"lib/ansible/modules/network/dellos9/dellos9_command.py\", \n  \"network/dellos9/dellos9_command.py\": \"lib/ansible/modules/network/dellos9/dellos9_command.py\", \n  \"network/dellos9/dellos9_config\": \"lib/ansible/modules/network/dellos9/dellos9_config.py\", \n  \"network/dellos9/dellos9_config.py\": \"lib/ansible/modules/network/dellos9/dellos9_config.py\", \n  \"network/dellos9/dellos9_facts\": \"lib/ansible/modules/network/dellos9/dellos9_facts.py\", \n  \"network/dellos9/dellos9_facts.py\": \"lib/ansible/modules/network/dellos9/dellos9_facts.py\", \n  \"network/eos/eos_banner\": \"lib/ansible/modules/network/eos/eos_banner.py\", \n  \"network/eos/eos_banner.py\": \"lib/ansible/modules/network/eos/eos_banner.py\", \n  \"network/eos/eos_command\": \"lib/ansible/modules/network/eos/eos_command.py\", \n  \"network/eos/eos_command.py\": \"lib/ansible/modules/network/eos/eos_command.py\", \n  \"network/eos/eos_config\": \"lib/ansible/modules/network/eos/eos_config.py\", \n  \"network/eos/eos_config.py\": \"lib/ansible/modules/network/eos/eos_config.py\", \n  \"network/eos/eos_eapi\": \"lib/ansible/modules/network/eos/eos_eapi.py\", \n  \"network/eos/eos_eapi.py\": \"lib/ansible/modules/network/eos/eos_eapi.py\", \n  \"network/eos/eos_facts\": \"lib/ansible/modules/network/eos/eos_facts.py\", \n  \"network/eos/eos_facts.py\": \"lib/ansible/modules/network/eos/eos_facts.py\", \n  \"network/eos/eos_logging\": \"lib/ansible/modules/network/eos/eos_logging.py\", \n  \"network/eos/eos_logging.py\": \"lib/ansible/modules/network/eos/eos_logging.py\", \n  \"network/eos/eos_system\": \"lib/ansible/modules/network/eos/eos_system.py\", \n  \"network/eos/eos_system.py\": \"lib/ansible/modules/network/eos/eos_system.py\", \n  \"network/eos/eos_user\": \"lib/ansible/modules/network/eos/eos_user.py\", \n  \"network/eos/eos_user.py\": \"lib/ansible/modules/network/eos/eos_user.py\", \n  \"network/eos/eos_vlan\": \"lib/ansible/modules/network/eos/eos_vlan.py\", \n  \"network/eos/eos_vlan.py\": \"lib/ansible/modules/network/eos/eos_vlan.py\", \n  \"network/eos/eos_vrf\": \"lib/ansible/modules/network/eos/eos_vrf.py\", \n  \"network/eos/eos_vrf.py\": \"lib/ansible/modules/network/eos/eos_vrf.py\", \n  \"network/f5/bigip_asm_policy\": \"lib/ansible/modules/network/f5/bigip_asm_policy.py\", \n  \"network/f5/bigip_asm_policy.py\": \"lib/ansible/modules/network/f5/bigip_asm_policy.py\", \n  \"network/f5/bigip_command\": \"lib/ansible/modules/network/f5/bigip_command.py\", \n  \"network/f5/bigip_command.py\": \"lib/ansible/modules/network/f5/bigip_command.py\", \n  \"network/f5/bigip_config\": \"lib/ansible/modules/network/f5/bigip_config.py\", \n  \"network/f5/bigip_config.py\": \"lib/ansible/modules/network/f5/bigip_config.py\", \n  \"network/f5/bigip_configsync_action\": \"lib/ansible/modules/network/f5/bigip_configsync_action.py\", \n  \"network/f5/bigip_configsync_action.py\": \"lib/ansible/modules/network/f5/bigip_configsync_action.py\", \n  \"network/f5/bigip_configsync_actions\": \"lib/ansible/modules/network/f5/bigip_configsync_actions.py\", \n  \"network/f5/bigip_configsync_actions.py\": \"lib/ansible/modules/network/f5/bigip_configsync_actions.py\", \n  \"network/f5/bigip_device_dns\": \"lib/ansible/modules/network/f5/bigip_device_dns.py\", \n  \"network/f5/bigip_device_dns.py\": \"lib/ansible/modules/network/f5/bigip_device_dns.py\", \n  \"network/f5/bigip_device_ntp\": \"lib/ansible/modules/network/f5/bigip_device_ntp.py\", \n  \"network/f5/bigip_device_ntp.py\": \"lib/ansible/modules/network/f5/bigip_device_ntp.py\", \n  \"network/f5/bigip_device_sshd\": \"lib/ansible/modules/network/f5/bigip_device_sshd.py\", \n  \"network/f5/bigip_device_sshd.py\": \"lib/ansible/modules/network/f5/bigip_device_sshd.py\", \n  \"network/f5/bigip_facts\": \"lib/ansible/modules/network/f5/bigip_facts.py\", \n  \"network/f5/bigip_facts.py\": \"lib/ansible/modules/network/f5/bigip_facts.py\", \n  \"network/f5/bigip_gtm_datacenter\": \"lib/ansible/modules/network/f5/bigip_gtm_datacenter.py\", \n  \"network/f5/bigip_gtm_datacenter.py\": \"lib/ansible/modules/network/f5/bigip_gtm_datacenter.py\", \n  \"network/f5/bigip_gtm_facts\": \"lib/ansible/modules/network/f5/bigip_gtm_facts.py\", \n  \"network/f5/bigip_gtm_facts.py\": \"lib/ansible/modules/network/f5/bigip_gtm_facts.py\", \n  \"network/f5/bigip_gtm_pool\": \"lib/ansible/modules/network/f5/bigip_gtm_pool.py\", \n  \"network/f5/bigip_gtm_pool.py\": \"lib/ansible/modules/network/f5/bigip_gtm_pool.py\", \n  \"network/f5/bigip_gtm_virtual_server\": \"lib/ansible/modules/network/f5/bigip_gtm_virtual_server.py\", \n  \"network/f5/bigip_gtm_virtual_server.py\": \"lib/ansible/modules/network/f5/bigip_gtm_virtual_server.py\", \n  \"network/f5/bigip_gtm_wide_ip\": [\n    \"lib/ansible/modules/network/f5/bigip_gtm_wide_ip.py\"\n  ], \n  \"network/f5/bigip_gtm_wide_ip.py\": \"lib/ansible/modules/network/f5/bigip_gtm_wide_ip.py\", \n  \"network/f5/bigip_hostname\": \"lib/ansible/modules/network/f5/bigip_hostname.py\", \n  \"network/f5/bigip_hostname.py\": \"lib/ansible/modules/network/f5/bigip_hostname.py\", \n  \"network/f5/bigip_iapp_service\": \"lib/ansible/modules/network/f5/bigip_iapp_service.py\", \n  \"network/f5/bigip_iapp_service.py\": \"lib/ansible/modules/network/f5/bigip_iapp_service.py\", \n  \"network/f5/bigip_iapp_template\": \"lib/ansible/modules/network/f5/bigip_iapp_template.py\", \n  \"network/f5/bigip_iapp_template.py\": \"lib/ansible/modules/network/f5/bigip_iapp_template.py\", \n  \"network/f5/bigip_iapplx_package\": \"lib/ansible/modules/network/f5/bigip_iapplx_package.py\", \n  \"network/f5/bigip_iapplx_package.py\": \"lib/ansible/modules/network/f5/bigip_iapplx_package.py\", \n  \"network/f5/bigip_irule\": \"lib/ansible/modules/network/f5/bigip_irule.py\", \n  \"network/f5/bigip_irule.py\": \"lib/ansible/modules/network/f5/bigip_irule.py\", \n  \"network/f5/bigip_monitor_http\": \"lib/ansible/modules/network/f5/bigip_monitor_http.py\", \n  \"network/f5/bigip_monitor_http.py\": \"lib/ansible/modules/network/f5/bigip_monitor_http.py\", \n  \"network/f5/bigip_monitor_https\": \"lib/ansible/modules/network/f5/bigip_monitor_https.py\", \n  \"network/f5/bigip_monitor_https.py\": \"lib/ansible/modules/network/f5/bigip_monitor_https.py\", \n  \"network/f5/bigip_monitor_tcp\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp.py\", \n  \"network/f5/bigip_monitor_tcp.py\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp.py\", \n  \"network/f5/bigip_monitor_tcp_echo\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp_echo.py\", \n  \"network/f5/bigip_monitor_tcp_echo.py\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp_echo.py\", \n  \"network/f5/bigip_monitor_tcp_half_open\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp_half_open.py\", \n  \"network/f5/bigip_monitor_tcp_half_open.py\": \"lib/ansible/modules/network/f5/bigip_monitor_tcp_half_open.py\", \n  \"network/f5/bigip_node\": \"lib/ansible/modules/network/f5/bigip_node.py\", \n  \"network/f5/bigip_node.py\": \"lib/ansible/modules/network/f5/bigip_node.py\", \n  \"network/f5/bigip_partition\": \"lib/ansible/modules/network/f5/bigip_partition.py\", \n  \"network/f5/bigip_partition.py\": \"lib/ansible/modules/network/f5/bigip_partition.py\", \n  \"network/f5/bigip_policy\": \"lib/ansible/modules/network/f5/bigip_policy.py\", \n  \"network/f5/bigip_policy.py\": \"lib/ansible/modules/network/f5/bigip_policy.py\", \n  \"network/f5/bigip_pool\": \"lib/ansible/modules/network/f5/bigip_pool.py\", \n  \"network/f5/bigip_pool.py\": \"lib/ansible/modules/network/f5/bigip_pool.py\", \n  \"network/f5/bigip_pool_member\": \"lib/ansible/modules/network/f5/bigip_pool_member.py\", \n  \"network/f5/bigip_pool_member.py\": \"lib/ansible/modules/network/f5/bigip_pool_member.py\", \n  \"network/f5/bigip_provision\": \"lib/ansible/modules/network/f5/bigip_provision.py\", \n  \"network/f5/bigip_provision.py\": \"lib/ansible/modules/network/f5/bigip_provision.py\", \n  \"network/f5/bigip_qkview\": \"lib/ansible/modules/network/f5/bigip_qkview.py\", \n  \"network/f5/bigip_qkview.py\": \"lib/ansible/modules/network/f5/bigip_qkview.py\", \n  \"network/f5/bigip_remote_syslog\": \"lib/ansible/modules/network/f5/bigip_remote_syslog.py\", \n  \"network/f5/bigip_remote_syslog.py\": \"lib/ansible/modules/network/f5/bigip_remote_syslog.py\", \n  \"network/f5/bigip_routedomain\": \"lib/ansible/modules/network/f5/bigip_routedomain.py\", \n  \"network/f5/bigip_routedomain.py\": \"lib/ansible/modules/network/f5/bigip_routedomain.py\", \n  \"network/f5/bigip_selfip\": \"lib/ansible/modules/network/f5/bigip_selfip.py\", \n  \"network/f5/bigip_selfip.py\": \"lib/ansible/modules/network/f5/bigip_selfip.py\", \n  \"network/f5/bigip_snat_pool\": \"lib/ansible/modules/network/f5/bigip_snat_pool.py\", \n  \"network/f5/bigip_snat_pool.py\": \"lib/ansible/modules/network/f5/bigip_snat_pool.py\", \n  \"network/f5/bigip_snmp\": \"lib/ansible/modules/network/f5/bigip_snmp.py\", \n  \"network/f5/bigip_snmp.py\": \"lib/ansible/modules/network/f5/bigip_snmp.py\", \n  \"network/f5/bigip_snmp_trap\": \"lib/ansible/modules/network/f5/bigip_snmp_trap.py\", \n  \"network/f5/bigip_snmp_trap.py\": \"lib/ansible/modules/network/f5/bigip_snmp_trap.py\", \n  \"network/f5/bigip_ssl_certificate\": \"lib/ansible/modules/network/f5/bigip_ssl_certificate.py\", \n  \"network/f5/bigip_ssl_certificate.py\": \"lib/ansible/modules/network/f5/bigip_ssl_certificate.py\", \n  \"network/f5/bigip_ssl_key\": \"lib/ansible/modules/network/f5/bigip_ssl_key.py\", \n  \"network/f5/bigip_ssl_key.py\": \"lib/ansible/modules/network/f5/bigip_ssl_key.py\", \n  \"network/f5/bigip_sys_db\": \"lib/ansible/modules/network/f5/bigip_sys_db.py\", \n  \"network/f5/bigip_sys_db.py\": \"lib/ansible/modules/network/f5/bigip_sys_db.py\", \n  \"network/f5/bigip_sys_global\": \"lib/ansible/modules/network/f5/bigip_sys_global.py\", \n  \"network/f5/bigip_sys_global.py\": \"lib/ansible/modules/network/f5/bigip_sys_global.py\", \n  \"network/f5/bigip_ucs\": \"lib/ansible/modules/network/f5/bigip_ucs.py\", \n  \"network/f5/bigip_ucs.py\": \"lib/ansible/modules/network/f5/bigip_ucs.py\", \n  \"network/f5/bigip_user\": \"lib/ansible/modules/network/f5/bigip_user.py\", \n  \"network/f5/bigip_user.py\": \"lib/ansible/modules/network/f5/bigip_user.py\", \n  \"network/f5/bigip_virtual_address\": \"lib/ansible/modules/network/f5/bigip_virtual_address.py\", \n  \"network/f5/bigip_virtual_address.py\": \"lib/ansible/modules/network/f5/bigip_virtual_address.py\", \n  \"network/f5/bigip_virtual_server\": \"lib/ansible/modules/network/f5/bigip_virtual_server.py\", \n  \"network/f5/bigip_virtual_server.py\": [\n    \"lib/ansible/modules/network/f5/bigip_virtual_server.py\"\n  ], \n  \"network/f5/bigip_vlan\": \"lib/ansible/modules/network/f5/bigip_vlan.py\", \n  \"network/f5/bigip_vlan.py\": \"lib/ansible/modules/network/f5/bigip_vlan.py\", \n  \"network/f5/bigip_wait\": \"lib/ansible/modules/network/f5/bigip_wait.py\", \n  \"network/f5/bigip_wait.py\": \"lib/ansible/modules/network/f5/bigip_wait.py\", \n  \"network/fortios/fortios_address\": \"lib/ansible/modules/network/fortios/fortios_address.py\", \n  \"network/fortios/fortios_address.py\": \"lib/ansible/modules/network/fortios/fortios_address.py\", \n  \"network/fortios/fortios_config\": \"lib/ansible/modules/network/fortios/fortios_config.py\", \n  \"network/fortios/fortios_config.py\": \"lib/ansible/modules/network/fortios/fortios_config.py\", \n  \"network/fortios/fortios_ipv4_policy\": \"lib/ansible/modules/network/fortios/fortios_ipv4_policy.py\", \n  \"network/fortios/fortios_ipv4_policy.py\": \"lib/ansible/modules/network/fortios/fortios_ipv4_policy.py\", \n  \"network/illumos/dladm_etherstub\": \"lib/ansible/modules/network/illumos/dladm_etherstub.py\", \n  \"network/illumos/dladm_etherstub.py\": \"lib/ansible/modules/network/illumos/dladm_etherstub.py\", \n  \"network/illumos/dladm_iptun\": \"lib/ansible/modules/network/illumos/dladm_iptun.py\", \n  \"network/illumos/dladm_iptun.py\": \"lib/ansible/modules/network/illumos/dladm_iptun.py\", \n  \"network/illumos/dladm_linkprop\": \"lib/ansible/modules/network/illumos/dladm_linkprop.py\", \n  \"network/illumos/dladm_linkprop.py\": \"lib/ansible/modules/network/illumos/dladm_linkprop.py\", \n  \"network/illumos/dladm_vlan\": \"lib/ansible/modules/network/illumos/dladm_vlan.py\", \n  \"network/illumos/dladm_vlan.py\": \"lib/ansible/modules/network/illumos/dladm_vlan.py\", \n  \"network/illumos/dladm_vnic\": \"lib/ansible/modules/network/illumos/dladm_vnic.py\", \n  \"network/illumos/dladm_vnic.py\": \"lib/ansible/modules/network/illumos/dladm_vnic.py\", \n  \"network/illumos/flowadm\": \"lib/ansible/modules/network/illumos/flowadm.py\", \n  \"network/illumos/flowadm.py\": \"lib/ansible/modules/network/illumos/flowadm.py\", \n  \"network/illumos/ipadm_addr\": \"lib/ansible/modules/network/illumos/ipadm_addr.py\", \n  \"network/illumos/ipadm_addr.py\": \"lib/ansible/modules/network/illumos/ipadm_addr.py\", \n  \"network/illumos/ipadm_addrprop\": \"lib/ansible/modules/network/illumos/ipadm_addrprop.py\", \n  \"network/illumos/ipadm_addrprop.py\": \"lib/ansible/modules/network/illumos/ipadm_addrprop.py\", \n  \"network/illumos/ipadm_if\": \"lib/ansible/modules/network/illumos/ipadm_if.py\", \n  \"network/illumos/ipadm_if.py\": \"lib/ansible/modules/network/illumos/ipadm_if.py\", \n  \"network/illumos/ipadm_ifprop\": \"lib/ansible/modules/network/illumos/ipadm_ifprop.py\", \n  \"network/illumos/ipadm_ifprop.py\": \"lib/ansible/modules/network/illumos/ipadm_ifprop.py\", \n  \"network/illumos/ipadm_prop\": \"lib/ansible/modules/network/illumos/ipadm_prop.py\", \n  \"network/illumos/ipadm_prop.py\": \"lib/ansible/modules/network/illumos/ipadm_prop.py\", \n  \"network/interface/net_interface\": \"lib/ansible/modules/network/interface/net_interface.py\", \n  \"network/interface/net_interface.py\": \"lib/ansible/modules/network/interface/net_interface.py\", \n  \"network/interface/net_linkagg\": \"lib/ansible/modules/network/interface/net_linkagg.py\", \n  \"network/interface/net_linkagg.py\": \"lib/ansible/modules/network/interface/net_linkagg.py\", \n  \"network/interface/net_lldp_interface\": \"lib/ansible/modules/network/interface/net_lldp_interface.py\", \n  \"network/interface/net_lldp_interface.py\": \"lib/ansible/modules/network/interface/net_lldp_interface.py\", \n  \"network/ios/ios_banner\": \"lib/ansible/modules/network/ios/ios_banner.py\", \n  \"network/ios/ios_banner.py\": \"lib/ansible/modules/network/ios/ios_banner.py\", \n  \"network/ios/ios_command\": \"lib/ansible/modules/network/ios/ios_command.py\", \n  \"network/ios/ios_command.py\": \"lib/ansible/modules/network/ios/ios_command.py\", \n  \"network/ios/ios_config\": \"lib/ansible/modules/network/ios/ios_config.py\", \n  \"network/ios/ios_config.py\": \"lib/ansible/modules/network/ios/ios_config.py\", \n  \"network/ios/ios_facts\": \"lib/ansible/modules/network/ios/ios_facts.py\", \n  \"network/ios/ios_facts.py\": \"lib/ansible/modules/network/ios/ios_facts.py\", \n  \"network/ios/ios_interface\": \"lib/ansible/modules/network/ios/ios_interface.py\", \n  \"network/ios/ios_interface.py\": \"lib/ansible/modules/network/ios/ios_interface.py\", \n  \"network/ios/ios_logging\": \"lib/ansible/modules/network/ios/ios_logging.py\", \n  \"network/ios/ios_logging.py\": \"lib/ansible/modules/network/ios/ios_logging.py\", \n  \"network/ios/ios_ping\": \"lib/ansible/modules/network/ios/ios_ping.py\", \n  \"network/ios/ios_ping.py\": \"lib/ansible/modules/network/ios/ios_ping.py\", \n  \"network/ios/ios_static_route\": \"lib/ansible/modules/network/ios/ios_static_route.py\", \n  \"network/ios/ios_static_route.py\": \"lib/ansible/modules/network/ios/ios_static_route.py\", \n  \"network/ios/ios_system\": \"lib/ansible/modules/network/ios/ios_system.py\", \n  \"network/ios/ios_system.py\": \"lib/ansible/modules/network/ios/ios_system.py\", \n  \"network/ios/ios_user\": \"lib/ansible/modules/network/ios/ios_user.py\", \n  \"network/ios/ios_user.py\": \"lib/ansible/modules/network/ios/ios_user.py\", \n  \"network/ios/ios_vrf\": \"lib/ansible/modules/network/ios/ios_vrf.py\", \n  \"network/ios/ios_vrf.py\": \"lib/ansible/modules/network/ios/ios_vrf.py\", \n  \"network/iosxr/iosxr_banner\": \"lib/ansible/modules/network/iosxr/iosxr_banner.py\", \n  \"network/iosxr/iosxr_banner.py\": \"lib/ansible/modules/network/iosxr/iosxr_banner.py\", \n  \"network/iosxr/iosxr_command\": \"lib/ansible/modules/network/iosxr/iosxr_command.py\", \n  \"network/iosxr/iosxr_command.py\": \"lib/ansible/modules/network/iosxr/iosxr_command.py\", \n  \"network/iosxr/iosxr_config\": \"lib/ansible/modules/network/iosxr/iosxr_config.py\", \n  \"network/iosxr/iosxr_config.py\": \"lib/ansible/modules/network/iosxr/iosxr_config.py\", \n  \"network/iosxr/iosxr_facts\": \"lib/ansible/modules/network/iosxr/iosxr_facts.py\", \n  \"network/iosxr/iosxr_facts.py\": \"lib/ansible/modules/network/iosxr/iosxr_facts.py\", \n  \"network/iosxr/iosxr_interface\": \"lib/ansible/modules/network/iosxr/iosxr_interface.py\", \n  \"network/iosxr/iosxr_interface.py\": \"lib/ansible/modules/network/iosxr/iosxr_interface.py\", \n  \"network/iosxr/iosxr_logging\": \"lib/ansible/modules/network/iosxr/iosxr_logging.py\", \n  \"network/iosxr/iosxr_logging.py\": \"lib/ansible/modules/network/iosxr/iosxr_logging.py\", \n  \"network/iosxr/iosxr_netconf\": \"lib/ansible/modules/network/iosxr/iosxr_netconf.py\", \n  \"network/iosxr/iosxr_netconf.py\": \"lib/ansible/modules/network/iosxr/iosxr_netconf.py\", \n  \"network/iosxr/iosxr_system\": \"lib/ansible/modules/network/iosxr/iosxr_system.py\", \n  \"network/iosxr/iosxr_system.py\": \"lib/ansible/modules/network/iosxr/iosxr_system.py\", \n  \"network/iosxr/iosxr_user\": \"lib/ansible/modules/network/iosxr/iosxr_user.py\", \n  \"network/iosxr/iosxr_user.py\": \"lib/ansible/modules/network/iosxr/iosxr_user.py\", \n  \"network/ironware/ironware_command\": \"lib/ansible/modules/network/ironware/ironware_command.py\", \n  \"network/ironware/ironware_command.py\": \"lib/ansible/modules/network/ironware/ironware_command.py\", \n  \"network/junos/junos_banner\": \"lib/ansible/modules/network/junos/junos_banner.py\", \n  \"network/junos/junos_banner.py\": \"lib/ansible/modules/network/junos/junos_banner.py\", \n  \"network/junos/junos_command\": \"lib/ansible/modules/network/junos/junos_command.py\", \n  \"network/junos/junos_command.py\": [\n    \"lib/ansible/modules/network/junos/junos_command.py\"\n  ], \n  \"network/junos/junos_config\": \"lib/ansible/modules/network/junos/junos_config.py\", \n  \"network/junos/junos_config.py\": \"lib/ansible/modules/network/junos/junos_config.py\", \n  \"network/junos/junos_facts\": \"lib/ansible/modules/network/junos/junos_facts.py\", \n  \"network/junos/junos_facts.py\": \"lib/ansible/modules/network/junos/junos_facts.py\", \n  \"network/junos/junos_interface\": \"lib/ansible/modules/network/junos/junos_interface.py\", \n  \"network/junos/junos_interface.py\": \"lib/ansible/modules/network/junos/junos_interface.py\", \n  \"network/junos/junos_l3_interface\": \"lib/ansible/modules/network/junos/junos_l3_interface.py\", \n  \"network/junos/junos_l3_interface.py\": \"lib/ansible/modules/network/junos/junos_l3_interface.py\", \n  \"network/junos/junos_linkagg\": \"lib/ansible/modules/network/junos/junos_linkagg.py\", \n  \"network/junos/junos_linkagg.py\": \"lib/ansible/modules/network/junos/junos_linkagg.py\", \n  \"network/junos/junos_lldp\": \"lib/ansible/modules/network/junos/junos_lldp.py\", \n  \"network/junos/junos_lldp.py\": \"lib/ansible/modules/network/junos/junos_lldp.py\", \n  \"network/junos/junos_lldp_interface\": \"lib/ansible/modules/network/junos/junos_lldp_interface.py\", \n  \"network/junos/junos_lldp_interface.py\": \"lib/ansible/modules/network/junos/junos_lldp_interface.py\", \n  \"network/junos/junos_logging\": \"lib/ansible/modules/network/junos/junos_logging.py\", \n  \"network/junos/junos_logging.py\": \"lib/ansible/modules/network/junos/junos_logging.py\", \n  \"network/junos/junos_netconf\": \"lib/ansible/modules/network/junos/junos_netconf.py\", \n  \"network/junos/junos_netconf.py\": \"lib/ansible/modules/network/junos/junos_netconf.py\", \n  \"network/junos/junos_package\": \"lib/ansible/modules/network/junos/junos_package.py\", \n  \"network/junos/junos_package.py\": \"lib/ansible/modules/network/junos/junos_package.py\", \n  \"network/junos/junos_rpc\": \"lib/ansible/modules/network/junos/junos_rpc.py\", \n  \"network/junos/junos_rpc.py\": \"lib/ansible/modules/network/junos/junos_rpc.py\", \n  \"network/junos/junos_static_route\": \"lib/ansible/modules/network/junos/junos_static_route.py\", \n  \"network/junos/junos_static_route.py\": \"lib/ansible/modules/network/junos/junos_static_route.py\", \n  \"network/junos/junos_system\": \"lib/ansible/modules/network/junos/junos_system.py\", \n  \"network/junos/junos_system.py\": \"lib/ansible/modules/network/junos/junos_system.py\", \n  \"network/junos/junos_user\": \"lib/ansible/modules/network/junos/junos_user.py\", \n  \"network/junos/junos_user.py\": \"lib/ansible/modules/network/junos/junos_user.py\", \n  \"network/junos/junos_vlan\": \"lib/ansible/modules/network/junos/junos_vlan.py\", \n  \"network/junos/junos_vlan.py\": \"lib/ansible/modules/network/junos/junos_vlan.py\", \n  \"network/junos/junos_vrf\": \"lib/ansible/modules/network/junos/junos_vrf.py\", \n  \"network/junos/junos_vrf.py\": \"lib/ansible/modules/network/junos/junos_vrf.py\", \n  \"network/layer2/net_l2_interface\": \"lib/ansible/modules/network/layer2/net_l2_interface.py\", \n  \"network/layer2/net_l2_interface.py\": \"lib/ansible/modules/network/layer2/net_l2_interface.py\", \n  \"network/layer2/net_vlan\": \"lib/ansible/modules/network/layer2/net_vlan.py\", \n  \"network/layer2/net_vlan.py\": \"lib/ansible/modules/network/layer2/net_vlan.py\", \n  \"network/layer3/net_l3_interface\": \"lib/ansible/modules/network/layer3/net_l3_interface.py\", \n  \"network/layer3/net_l3_interface.py\": \"lib/ansible/modules/network/layer3/net_l3_interface.py\", \n  \"network/layer3/net_vrf\": \"lib/ansible/modules/network/layer3/net_vrf.py\", \n  \"network/layer3/net_vrf.py\": \"lib/ansible/modules/network/layer3/net_vrf.py\", \n  \"network/lenovo/cnos_backup\": \"lib/ansible/modules/network/lenovo/cnos_backup.py\", \n  \"network/lenovo/cnos_backup.py\": \"lib/ansible/modules/network/lenovo/cnos_backup.py\", \n  \"network/lenovo/cnos_bgp\": \"lib/ansible/modules/network/lenovo/cnos_bgp.py\", \n  \"network/lenovo/cnos_bgp.py\": \"lib/ansible/modules/network/lenovo/cnos_bgp.py\", \n  \"network/lenovo/cnos_command\": \"lib/ansible/modules/network/lenovo/cnos_command.py\", \n  \"network/lenovo/cnos_command.py\": \"lib/ansible/modules/network/lenovo/cnos_command.py\", \n  \"network/lenovo/cnos_conditional_command\": \"lib/ansible/modules/network/lenovo/cnos_conditional_command.py\", \n  \"network/lenovo/cnos_conditional_command.py\": \"lib/ansible/modules/network/lenovo/cnos_conditional_command.py\", \n  \"network/lenovo/cnos_conditional_template\": \"lib/ansible/modules/network/lenovo/cnos_conditional_template.py\", \n  \"network/lenovo/cnos_conditional_template.py\": \"lib/ansible/modules/network/lenovo/cnos_conditional_template.py\", \n  \"network/lenovo/cnos_factory\": \"lib/ansible/modules/network/lenovo/cnos_factory.py\", \n  \"network/lenovo/cnos_factory.py\": \"lib/ansible/modules/network/lenovo/cnos_factory.py\", \n  \"network/lenovo/cnos_facts\": \"lib/ansible/modules/network/lenovo/cnos_facts.py\", \n  \"network/lenovo/cnos_facts.py\": \"lib/ansible/modules/network/lenovo/cnos_facts.py\", \n  \"network/lenovo/cnos_image\": \"lib/ansible/modules/network/lenovo/cnos_image.py\", \n  \"network/lenovo/cnos_image.py\": \"lib/ansible/modules/network/lenovo/cnos_image.py\", \n  \"network/lenovo/cnos_interface\": \"lib/ansible/modules/network/lenovo/cnos_interface.py\", \n  \"network/lenovo/cnos_interface.py\": \"lib/ansible/modules/network/lenovo/cnos_interface.py\", \n  \"network/lenovo/cnos_portchannel\": \"lib/ansible/modules/network/lenovo/cnos_portchannel.py\", \n  \"network/lenovo/cnos_portchannel.py\": \"lib/ansible/modules/network/lenovo/cnos_portchannel.py\", \n  \"network/lenovo/cnos_reload\": \"lib/ansible/modules/network/lenovo/cnos_reload.py\", \n  \"network/lenovo/cnos_reload.py\": \"lib/ansible/modules/network/lenovo/cnos_reload.py\", \n  \"network/lenovo/cnos_rollback\": \"lib/ansible/modules/network/lenovo/cnos_rollback.py\", \n  \"network/lenovo/cnos_rollback.py\": \"lib/ansible/modules/network/lenovo/cnos_rollback.py\", \n  \"network/lenovo/cnos_save\": \"lib/ansible/modules/network/lenovo/cnos_save.py\", \n  \"network/lenovo/cnos_save.py\": \"lib/ansible/modules/network/lenovo/cnos_save.py\", \n  \"network/lenovo/cnos_showrun\": \"lib/ansible/modules/network/lenovo/cnos_showrun.py\", \n  \"network/lenovo/cnos_showrun.py\": \"lib/ansible/modules/network/lenovo/cnos_showrun.py\", \n  \"network/lenovo/cnos_template\": \"lib/ansible/modules/network/lenovo/cnos_template.py\", \n  \"network/lenovo/cnos_template.py\": \"lib/ansible/modules/network/lenovo/cnos_template.py\", \n  \"network/lenovo/cnos_vlag\": \"lib/ansible/modules/network/lenovo/cnos_vlag.py\", \n  \"network/lenovo/cnos_vlag.py\": \"lib/ansible/modules/network/lenovo/cnos_vlag.py\", \n  \"network/lenovo/cnos_vlan\": \"lib/ansible/modules/network/lenovo/cnos_vlan.py\", \n  \"network/lenovo/cnos_vlan.py\": \"lib/ansible/modules/network/lenovo/cnos_vlan.py\", \n  \"network/lldp.py\": [], \n  \"network/netconf/netconf_config\": \"lib/ansible/modules/network/netconf/netconf_config.py\", \n  \"network/netconf/netconf_config.py\": \"lib/ansible/modules/network/netconf/netconf_config.py\", \n  \"network/netscaler/netscaler_cs_action\": \"lib/ansible/modules/network/netscaler/netscaler_cs_action.py\", \n  \"network/netscaler/netscaler_cs_action.py\": \"lib/ansible/modules/network/netscaler/netscaler_cs_action.py\", \n  \"network/netscaler/netscaler_cs_policy\": \"lib/ansible/modules/network/netscaler/netscaler_cs_policy.py\", \n  \"network/netscaler/netscaler_cs_policy.py\": \"lib/ansible/modules/network/netscaler/netscaler_cs_policy.py\", \n  \"network/netscaler/netscaler_cs_vserver\": \"lib/ansible/modules/network/netscaler/netscaler_cs_vserver.py\", \n  \"network/netscaler/netscaler_cs_vserver.py\": \"lib/ansible/modules/network/netscaler/netscaler_cs_vserver.py\", \n  \"network/netscaler/netscaler_gslb_service\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_service.py\", \n  \"network/netscaler/netscaler_gslb_service.py\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_service.py\", \n  \"network/netscaler/netscaler_gslb_site\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_site.py\", \n  \"network/netscaler/netscaler_gslb_site.py\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_site.py\", \n  \"network/netscaler/netscaler_gslb_vserver\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_vserver.py\", \n  \"network/netscaler/netscaler_gslb_vserver.py\": \"lib/ansible/modules/network/netscaler/netscaler_gslb_vserver.py\", \n  \"network/netscaler/netscaler_lb_monitor\": \"lib/ansible/modules/network/netscaler/netscaler_lb_monitor.py\", \n  \"network/netscaler/netscaler_lb_monitor.py\": \"lib/ansible/modules/network/netscaler/netscaler_lb_monitor.py\", \n  \"network/netscaler/netscaler_lb_vserver\": \"lib/ansible/modules/network/netscaler/netscaler_lb_vserver.py\", \n  \"network/netscaler/netscaler_lb_vserver.py\": \"lib/ansible/modules/network/netscaler/netscaler_lb_vserver.py\", \n  \"network/netscaler/netscaler_save_config\": \"lib/ansible/modules/network/netscaler/netscaler_save_config.py\", \n  \"network/netscaler/netscaler_save_config.py\": \"lib/ansible/modules/network/netscaler/netscaler_save_config.py\", \n  \"network/netscaler/netscaler_server\": \"lib/ansible/modules/network/netscaler/netscaler_server.py\", \n  \"network/netscaler/netscaler_server.py\": \"lib/ansible/modules/network/netscaler/netscaler_server.py\", \n  \"network/netscaler/netscaler_service\": \"lib/ansible/modules/network/netscaler/netscaler_service.py\", \n  \"network/netscaler/netscaler_service.py\": \"lib/ansible/modules/network/netscaler/netscaler_service.py\", \n  \"network/netscaler/netscaler_servicegroup\": \"lib/ansible/modules/network/netscaler/netscaler_servicegroup.py\", \n  \"network/netscaler/netscaler_servicegroup.py\": \"lib/ansible/modules/network/netscaler/netscaler_servicegroup.py\", \n  \"network/netscaler/netscaler_ssl_certkey\": \"lib/ansible/modules/network/netscaler/netscaler_ssl_certkey.py\", \n  \"network/netscaler/netscaler_ssl_certkey.py\": \"lib/ansible/modules/network/netscaler/netscaler_ssl_certkey.py\", \n  \"network/netvisor/pn_cluster\": \"lib/ansible/modules/network/netvisor/pn_cluster.py\", \n  \"network/netvisor/pn_cluster.py\": \"lib/ansible/modules/network/netvisor/pn_cluster.py\", \n  \"network/netvisor/pn_ospf\": \"lib/ansible/modules/network/netvisor/pn_ospf.py\", \n  \"network/netvisor/pn_ospf.py\": \"lib/ansible/modules/network/netvisor/pn_ospf.py\", \n  \"network/netvisor/pn_ospfarea\": \"lib/ansible/modules/network/netvisor/pn_ospfarea.py\", \n  \"network/netvisor/pn_ospfarea.py\": \"lib/ansible/modules/network/netvisor/pn_ospfarea.py\", \n  \"network/netvisor/pn_show\": \"lib/ansible/modules/network/netvisor/pn_show.py\", \n  \"network/netvisor/pn_show.py\": \"lib/ansible/modules/network/netvisor/pn_show.py\", \n  \"network/netvisor/pn_trunk\": \"lib/ansible/modules/network/netvisor/pn_trunk.py\", \n  \"network/netvisor/pn_trunk.py\": \"lib/ansible/modules/network/netvisor/pn_trunk.py\", \n  \"network/netvisor/pn_vlag\": \"lib/ansible/modules/network/netvisor/pn_vlag.py\", \n  \"network/netvisor/pn_vlag.py\": \"lib/ansible/modules/network/netvisor/pn_vlag.py\", \n  \"network/netvisor/pn_vlan\": \"lib/ansible/modules/network/netvisor/pn_vlan.py\", \n  \"network/netvisor/pn_vlan.py\": \"lib/ansible/modules/network/netvisor/pn_vlan.py\", \n  \"network/netvisor/pn_vrouter\": \"lib/ansible/modules/network/netvisor/pn_vrouter.py\", \n  \"network/netvisor/pn_vrouter.py\": \"lib/ansible/modules/network/netvisor/pn_vrouter.py\", \n  \"network/netvisor/pn_vrouterbgp\": \"lib/ansible/modules/network/netvisor/pn_vrouterbgp.py\", \n  \"network/netvisor/pn_vrouterbgp.py\": \"lib/ansible/modules/network/netvisor/pn_vrouterbgp.py\", \n  \"network/netvisor/pn_vrouterif\": \"lib/ansible/modules/network/netvisor/pn_vrouterif.py\", \n  \"network/netvisor/pn_vrouterif.py\": \"lib/ansible/modules/network/netvisor/pn_vrouterif.py\", \n  \"network/netvisor/pn_vrouterlbif\": \"lib/ansible/modules/network/netvisor/pn_vrouterlbif.py\", \n  \"network/netvisor/pn_vrouterlbif.py\": \"lib/ansible/modules/network/netvisor/pn_vrouterlbif.py\", \n  \"network/nuage/nuage_vspk\": \"lib/ansible/modules/network/nuage/nuage_vspk.py\", \n  \"network/nuage/nuage_vspk.py\": \"lib/ansible/modules/network/nuage/nuage_vspk.py\", \n  \"network/nxos/_nxos_mtu\": \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n  \"network/nxos/_nxos_mtu.py\": \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n  \"network/nxos/nxos_aaa_server\": \"lib/ansible/modules/network/nxos/nxos_aaa_server.py\", \n  \"network/nxos/nxos_aaa_server.py\": \"lib/ansible/modules/network/nxos/nxos_aaa_server.py\", \n  \"network/nxos/nxos_aaa_server_host\": \"lib/ansible/modules/network/nxos/nxos_aaa_server_host.py\", \n  \"network/nxos/nxos_aaa_server_host.py\": \"lib/ansible/modules/network/nxos/nxos_aaa_server_host.py\", \n  \"network/nxos/nxos_acl\": \"lib/ansible/modules/network/nxos/nxos_acl.py\", \n  \"network/nxos/nxos_acl.py\": \"lib/ansible/modules/network/nxos/nxos_acl.py\", \n  \"network/nxos/nxos_acl_interface\": \"lib/ansible/modules/network/nxos/nxos_acl_interface.py\", \n  \"network/nxos/nxos_acl_interface.py\": \"lib/ansible/modules/network/nxos/nxos_acl_interface.py\", \n  \"network/nxos/nxos_banner\": \"lib/ansible/modules/network/nxos/nxos_banner.py\", \n  \"network/nxos/nxos_banner.py\": \"lib/ansible/modules/network/nxos/nxos_banner.py\", \n  \"network/nxos/nxos_bgp\": \"lib/ansible/modules/network/nxos/nxos_bgp.py\", \n  \"network/nxos/nxos_bgp.py\": \"lib/ansible/modules/network/nxos/nxos_bgp.py\", \n  \"network/nxos/nxos_bgp_af\": \"lib/ansible/modules/network/nxos/nxos_bgp_af.py\", \n  \"network/nxos/nxos_bgp_af.py\": \"lib/ansible/modules/network/nxos/nxos_bgp_af.py\", \n  \"network/nxos/nxos_bgp_neighbor\": \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor.py\", \n  \"network/nxos/nxos_bgp_neighbor.py\": \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor.py\", \n  \"network/nxos/nxos_bgp_neighbor_af\": \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor_af.py\", \n  \"network/nxos/nxos_bgp_neighbor_af.py\": \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor_af.py\", \n  \"network/nxos/nxos_command\": \"lib/ansible/modules/network/nxos/nxos_command.py\", \n  \"network/nxos/nxos_command.py\": \"lib/ansible/modules/network/nxos/nxos_command.py\", \n  \"network/nxos/nxos_config\": \"lib/ansible/modules/network/nxos/nxos_config.py\", \n  \"network/nxos/nxos_config.py\": \"lib/ansible/modules/network/nxos/nxos_config.py\", \n  \"network/nxos/nxos_evpn_global\": \"lib/ansible/modules/network/nxos/nxos_evpn_global.py\", \n  \"network/nxos/nxos_evpn_global.py\": \"lib/ansible/modules/network/nxos/nxos_evpn_global.py\", \n  \"network/nxos/nxos_evpn_vni\": \"lib/ansible/modules/network/nxos/nxos_evpn_vni.py\", \n  \"network/nxos/nxos_evpn_vni.py\": \"lib/ansible/modules/network/nxos/nxos_evpn_vni.py\", \n  \"network/nxos/nxos_facts\": \"lib/ansible/modules/network/nxos/nxos_facts.py\", \n  \"network/nxos/nxos_facts.py\": \"lib/ansible/modules/network/nxos/nxos_facts.py\", \n  \"network/nxos/nxos_feature\": \"lib/ansible/modules/network/nxos/nxos_feature.py\", \n  \"network/nxos/nxos_feature.py\": \"lib/ansible/modules/network/nxos/nxos_feature.py\", \n  \"network/nxos/nxos_file_copy\": \"lib/ansible/modules/network/nxos/nxos_file_copy.py\", \n  \"network/nxos/nxos_file_copy.py\": \"lib/ansible/modules/network/nxos/nxos_file_copy.py\", \n  \"network/nxos/nxos_gir\": \"lib/ansible/modules/network/nxos/nxos_gir.py\", \n  \"network/nxos/nxos_gir.py\": \"lib/ansible/modules/network/nxos/nxos_gir.py\", \n  \"network/nxos/nxos_gir_profile_management\": \"lib/ansible/modules/network/nxos/nxos_gir_profile_management.py\", \n  \"network/nxos/nxos_gir_profile_management.py\": \"lib/ansible/modules/network/nxos/nxos_gir_profile_management.py\", \n  \"network/nxos/nxos_hsrp\": \"lib/ansible/modules/network/nxos/nxos_hsrp.py\", \n  \"network/nxos/nxos_hsrp.py\": \"lib/ansible/modules/network/nxos/nxos_hsrp.py\", \n  \"network/nxos/nxos_igmp\": \"lib/ansible/modules/network/nxos/nxos_igmp.py\", \n  \"network/nxos/nxos_igmp.py\": \"lib/ansible/modules/network/nxos/nxos_igmp.py\", \n  \"network/nxos/nxos_igmp_interface\": \"lib/ansible/modules/network/nxos/nxos_igmp_interface.py\", \n  \"network/nxos/nxos_igmp_interface.py\": \"lib/ansible/modules/network/nxos/nxos_igmp_interface.py\", \n  \"network/nxos/nxos_igmp_snooping\": \"lib/ansible/modules/network/nxos/nxos_igmp_snooping.py\", \n  \"network/nxos/nxos_igmp_snooping.py\": \"lib/ansible/modules/network/nxos/nxos_igmp_snooping.py\", \n  \"network/nxos/nxos_install_os\": \"lib/ansible/modules/network/nxos/nxos_install_os.py\", \n  \"network/nxos/nxos_install_os.py\": \"lib/ansible/modules/network/nxos/nxos_install_os.py\", \n  \"network/nxos/nxos_interface\": \"lib/ansible/modules/network/nxos/nxos_interface.py\", \n  \"network/nxos/nxos_interface.py\": \"lib/ansible/modules/network/nxos/nxos_interface.py\", \n  \"network/nxos/nxos_interface_ospf\": \"lib/ansible/modules/network/nxos/nxos_interface_ospf.py\", \n  \"network/nxos/nxos_interface_ospf.py\": \"lib/ansible/modules/network/nxos/nxos_interface_ospf.py\", \n  \"network/nxos/nxos_ip_interface\": \"lib/ansible/modules/network/nxos/nxos_ip_interface.py\", \n  \"network/nxos/nxos_ip_interface.py\": \"lib/ansible/modules/network/nxos/nxos_ip_interface.py\", \n  \"network/nxos/nxos_logging\": \"lib/ansible/modules/network/nxos/nxos_logging.py\", \n  \"network/nxos/nxos_logging.py\": \"lib/ansible/modules/network/nxos/nxos_logging.py\", \n  \"network/nxos/nxos_mtu\": \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n  \"network/nxos/nxos_mtu.py\": \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n  \"network/nxos/nxos_ntp\": \"lib/ansible/modules/network/nxos/nxos_ntp.py\", \n  \"network/nxos/nxos_ntp.py\": \"lib/ansible/modules/network/nxos/nxos_ntp.py\", \n  \"network/nxos/nxos_ntp_auth\": \"lib/ansible/modules/network/nxos/nxos_ntp_auth.py\", \n  \"network/nxos/nxos_ntp_auth.py\": \"lib/ansible/modules/network/nxos/nxos_ntp_auth.py\", \n  \"network/nxos/nxos_ntp_options\": \"lib/ansible/modules/network/nxos/nxos_ntp_options.py\", \n  \"network/nxos/nxos_ntp_options.py\": \"lib/ansible/modules/network/nxos/nxos_ntp_options.py\", \n  \"network/nxos/nxos_nxapi\": \"lib/ansible/modules/network/nxos/nxos_nxapi.py\", \n  \"network/nxos/nxos_nxapi.py\": \"lib/ansible/modules/network/nxos/nxos_nxapi.py\", \n  \"network/nxos/nxos_ospf\": \"lib/ansible/modules/network/nxos/nxos_ospf.py\", \n  \"network/nxos/nxos_ospf.py\": \"lib/ansible/modules/network/nxos/nxos_ospf.py\", \n  \"network/nxos/nxos_ospf_vrf\": \"lib/ansible/modules/network/nxos/nxos_ospf_vrf.py\", \n  \"network/nxos/nxos_ospf_vrf.py\": \"lib/ansible/modules/network/nxos/nxos_ospf_vrf.py\", \n  \"network/nxos/nxos_overlay_global\": \"lib/ansible/modules/network/nxos/nxos_overlay_global.py\", \n  \"network/nxos/nxos_overlay_global.py\": \"lib/ansible/modules/network/nxos/nxos_overlay_global.py\", \n  \"network/nxos/nxos_pim\": \"lib/ansible/modules/network/nxos/nxos_pim.py\", \n  \"network/nxos/nxos_pim.py\": \"lib/ansible/modules/network/nxos/nxos_pim.py\", \n  \"network/nxos/nxos_pim_interface\": \"lib/ansible/modules/network/nxos/nxos_pim_interface.py\", \n  \"network/nxos/nxos_pim_interface.py\": \"lib/ansible/modules/network/nxos/nxos_pim_interface.py\", \n  \"network/nxos/nxos_pim_rp_address\": \"lib/ansible/modules/network/nxos/nxos_pim_rp_address.py\", \n  \"network/nxos/nxos_pim_rp_address.py\": \"lib/ansible/modules/network/nxos/nxos_pim_rp_address.py\", \n  \"network/nxos/nxos_ping\": \"lib/ansible/modules/network/nxos/nxos_ping.py\", \n  \"network/nxos/nxos_ping.py\": \"lib/ansible/modules/network/nxos/nxos_ping.py\", \n  \"network/nxos/nxos_portchannel\": \"lib/ansible/modules/network/nxos/nxos_portchannel.py\", \n  \"network/nxos/nxos_portchannel.py\": \"lib/ansible/modules/network/nxos/nxos_portchannel.py\", \n  \"network/nxos/nxos_reboot\": \"lib/ansible/modules/network/nxos/nxos_reboot.py\", \n  \"network/nxos/nxos_reboot.py\": \"lib/ansible/modules/network/nxos/nxos_reboot.py\", \n  \"network/nxos/nxos_rollback\": \"lib/ansible/modules/network/nxos/nxos_rollback.py\", \n  \"network/nxos/nxos_rollback.py\": \"lib/ansible/modules/network/nxos/nxos_rollback.py\", \n  \"network/nxos/nxos_smu\": \"lib/ansible/modules/network/nxos/nxos_smu.py\", \n  \"network/nxos/nxos_smu.py\": \"lib/ansible/modules/network/nxos/nxos_smu.py\", \n  \"network/nxos/nxos_snapshot\": \"lib/ansible/modules/network/nxos/nxos_snapshot.py\", \n  \"network/nxos/nxos_snapshot.py\": \"lib/ansible/modules/network/nxos/nxos_snapshot.py\", \n  \"network/nxos/nxos_snmp_community\": \"lib/ansible/modules/network/nxos/nxos_snmp_community.py\", \n  \"network/nxos/nxos_snmp_community.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_community.py\", \n  \"network/nxos/nxos_snmp_contact\": \"lib/ansible/modules/network/nxos/nxos_snmp_contact.py\", \n  \"network/nxos/nxos_snmp_contact.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_contact.py\", \n  \"network/nxos/nxos_snmp_host\": \"lib/ansible/modules/network/nxos/nxos_snmp_host.py\", \n  \"network/nxos/nxos_snmp_host.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_host.py\", \n  \"network/nxos/nxos_snmp_location\": \"lib/ansible/modules/network/nxos/nxos_snmp_location.py\", \n  \"network/nxos/nxos_snmp_location.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_location.py\", \n  \"network/nxos/nxos_snmp_traps\": \"lib/ansible/modules/network/nxos/nxos_snmp_traps.py\", \n  \"network/nxos/nxos_snmp_traps.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_traps.py\", \n  \"network/nxos/nxos_snmp_user\": \"lib/ansible/modules/network/nxos/nxos_snmp_user.py\", \n  \"network/nxos/nxos_snmp_user.py\": \"lib/ansible/modules/network/nxos/nxos_snmp_user.py\", \n  \"network/nxos/nxos_static_route\": \"lib/ansible/modules/network/nxos/nxos_static_route.py\", \n  \"network/nxos/nxos_static_route.py\": \"lib/ansible/modules/network/nxos/nxos_static_route.py\", \n  \"network/nxos/nxos_switchport\": \"lib/ansible/modules/network/nxos/nxos_switchport.py\", \n  \"network/nxos/nxos_switchport.py\": \"lib/ansible/modules/network/nxos/nxos_switchport.py\", \n  \"network/nxos/nxos_system\": \"lib/ansible/modules/network/nxos/nxos_system.py\", \n  \"network/nxos/nxos_system.py\": \"lib/ansible/modules/network/nxos/nxos_system.py\", \n  \"network/nxos/nxos_udld\": \"lib/ansible/modules/network/nxos/nxos_udld.py\", \n  \"network/nxos/nxos_udld.py\": \"lib/ansible/modules/network/nxos/nxos_udld.py\", \n  \"network/nxos/nxos_udld_interface\": \"lib/ansible/modules/network/nxos/nxos_udld_interface.py\", \n  \"network/nxos/nxos_udld_interface.py\": \"lib/ansible/modules/network/nxos/nxos_udld_interface.py\", \n  \"network/nxos/nxos_user\": \"lib/ansible/modules/network/nxos/nxos_user.py\", \n  \"network/nxos/nxos_user.py\": \"lib/ansible/modules/network/nxos/nxos_user.py\", \n  \"network/nxos/nxos_vlan\": \"lib/ansible/modules/network/nxos/nxos_vlan.py\", \n  \"network/nxos/nxos_vlan.py\": \"lib/ansible/modules/network/nxos/nxos_vlan.py\", \n  \"network/nxos/nxos_vpc\": \"lib/ansible/modules/network/nxos/nxos_vpc.py\", \n  \"network/nxos/nxos_vpc.py\": \"lib/ansible/modules/network/nxos/nxos_vpc.py\", \n  \"network/nxos/nxos_vpc_interface\": \"lib/ansible/modules/network/nxos/nxos_vpc_interface.py\", \n  \"network/nxos/nxos_vpc_interface.py\": \"lib/ansible/modules/network/nxos/nxos_vpc_interface.py\", \n  \"network/nxos/nxos_vrf\": \"lib/ansible/modules/network/nxos/nxos_vrf.py\", \n  \"network/nxos/nxos_vrf.py\": \"lib/ansible/modules/network/nxos/nxos_vrf.py\", \n  \"network/nxos/nxos_vrf_af\": \"lib/ansible/modules/network/nxos/nxos_vrf_af.py\", \n  \"network/nxos/nxos_vrf_af.py\": \"lib/ansible/modules/network/nxos/nxos_vrf_af.py\", \n  \"network/nxos/nxos_vrf_interface\": \"lib/ansible/modules/network/nxos/nxos_vrf_interface.py\", \n  \"network/nxos/nxos_vrf_interface.py\": \"lib/ansible/modules/network/nxos/nxos_vrf_interface.py\", \n  \"network/nxos/nxos_vrrp\": \"lib/ansible/modules/network/nxos/nxos_vrrp.py\", \n  \"network/nxos/nxos_vrrp.py\": \"lib/ansible/modules/network/nxos/nxos_vrrp.py\", \n  \"network/nxos/nxos_vtp_domain\": \"lib/ansible/modules/network/nxos/nxos_vtp_domain.py\", \n  \"network/nxos/nxos_vtp_domain.py\": \"lib/ansible/modules/network/nxos/nxos_vtp_domain.py\", \n  \"network/nxos/nxos_vtp_password\": \"lib/ansible/modules/network/nxos/nxos_vtp_password.py\", \n  \"network/nxos/nxos_vtp_password.py\": \"lib/ansible/modules/network/nxos/nxos_vtp_password.py\", \n  \"network/nxos/nxos_vtp_version\": \"lib/ansible/modules/network/nxos/nxos_vtp_version.py\", \n  \"network/nxos/nxos_vtp_version.py\": \"lib/ansible/modules/network/nxos/nxos_vtp_version.py\", \n  \"network/nxos/nxos_vxlan_vtep\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep.py\", \n  \"network/nxos/nxos_vxlan_vtep.py\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep.py\", \n  \"network/nxos/nxos_vxlan_vtep_vni\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\", \n  \"network/nxos/nxos_vxlan_vtep_vni.py\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\", \n  \"network/ordnance/ordnance_config\": \"lib/ansible/modules/network/ordnance/ordnance_config.py\", \n  \"network/ordnance/ordnance_config.py\": \"lib/ansible/modules/network/ordnance/ordnance_config.py\", \n  \"network/ordnance/ordnance_facts\": \"lib/ansible/modules/network/ordnance/ordnance_facts.py\", \n  \"network/ordnance/ordnance_facts.py\": \"lib/ansible/modules/network/ordnance/ordnance_facts.py\", \n  \"network/ovs/openvswitch_bridge\": \"lib/ansible/modules/network/ovs/openvswitch_bridge.py\", \n  \"network/ovs/openvswitch_bridge.py\": \"lib/ansible/modules/network/ovs/openvswitch_bridge.py\", \n  \"network/ovs/openvswitch_db\": \"lib/ansible/modules/network/ovs/openvswitch_db.py\", \n  \"network/ovs/openvswitch_db.py\": \"lib/ansible/modules/network/ovs/openvswitch_db.py\", \n  \"network/ovs/openvswitch_port\": \"lib/ansible/modules/network/ovs/openvswitch_port.py\", \n  \"network/ovs/openvswitch_port.py\": \"lib/ansible/modules/network/ovs/openvswitch_port.py\", \n  \"network/panos/panos_admin\": \"lib/ansible/modules/network/panos/panos_admin.py\", \n  \"network/panos/panos_admin.py\": \"lib/ansible/modules/network/panos/panos_admin.py\", \n  \"network/panos/panos_admpwd\": \"lib/ansible/modules/network/panos/panos_admpwd.py\", \n  \"network/panos/panos_admpwd.py\": \"lib/ansible/modules/network/panos/panos_admpwd.py\", \n  \"network/panos/panos_cert_gen_ssh\": \"lib/ansible/modules/network/panos/panos_cert_gen_ssh.py\", \n  \"network/panos/panos_cert_gen_ssh.py\": \"lib/ansible/modules/network/panos/panos_cert_gen_ssh.py\", \n  \"network/panos/panos_check\": \"lib/ansible/modules/network/panos/panos_check.py\", \n  \"network/panos/panos_check.py\": \"lib/ansible/modules/network/panos/panos_check.py\", \n  \"network/panos/panos_commit\": \"lib/ansible/modules/network/panos/panos_commit.py\", \n  \"network/panos/panos_commit.py\": \"lib/ansible/modules/network/panos/panos_commit.py\", \n  \"network/panos/panos_dag\": \"lib/ansible/modules/network/panos/panos_dag.py\", \n  \"network/panos/panos_dag.py\": \"lib/ansible/modules/network/panos/panos_dag.py\", \n  \"network/panos/panos_import\": \"lib/ansible/modules/network/panos/panos_import.py\", \n  \"network/panos/panos_import.py\": \"lib/ansible/modules/network/panos/panos_import.py\", \n  \"network/panos/panos_interface\": \"lib/ansible/modules/network/panos/panos_interface.py\", \n  \"network/panos/panos_interface.py\": \"lib/ansible/modules/network/panos/panos_interface.py\", \n  \"network/panos/panos_lic\": \"lib/ansible/modules/network/panos/panos_lic.py\", \n  \"network/panos/panos_lic.py\": \"lib/ansible/modules/network/panos/panos_lic.py\", \n  \"network/panos/panos_loadcfg\": \"lib/ansible/modules/network/panos/panos_loadcfg.py\", \n  \"network/panos/panos_loadcfg.py\": \"lib/ansible/modules/network/panos/panos_loadcfg.py\", \n  \"network/panos/panos_mgtconfig\": \"lib/ansible/modules/network/panos/panos_mgtconfig.py\", \n  \"network/panos/panos_mgtconfig.py\": \"lib/ansible/modules/network/panos/panos_mgtconfig.py\", \n  \"network/panos/panos_nat_policy\": \"lib/ansible/modules/network/panos/panos_nat_policy.py\", \n  \"network/panos/panos_nat_policy.py\": \"lib/ansible/modules/network/panos/panos_nat_policy.py\", \n  \"network/panos/panos_nat_rule\": \"lib/ansible/modules/network/panos/panos_nat_rule.py\", \n  \"network/panos/panos_nat_rule.py\": \"lib/ansible/modules/network/panos/panos_nat_rule.py\", \n  \"network/panos/panos_object\": \"lib/ansible/modules/network/panos/panos_object.py\", \n  \"network/panos/panos_object.py\": \"lib/ansible/modules/network/panos/panos_object.py\", \n  \"network/panos/panos_pg\": \"lib/ansible/modules/network/panos/panos_pg.py\", \n  \"network/panos/panos_pg.py\": \"lib/ansible/modules/network/panos/panos_pg.py\", \n  \"network/panos/panos_restart\": \"lib/ansible/modules/network/panos/panos_restart.py\", \n  \"network/panos/panos_restart.py\": \"lib/ansible/modules/network/panos/panos_restart.py\", \n  \"network/panos/panos_sag\": \"lib/ansible/modules/network/panos/panos_sag.py\", \n  \"network/panos/panos_sag.py\": \"lib/ansible/modules/network/panos/panos_sag.py\", \n  \"network/panos/panos_security_policy\": \"lib/ansible/modules/network/panos/panos_security_policy.py\", \n  \"network/panos/panos_security_policy.py\": \"lib/ansible/modules/network/panos/panos_security_policy.py\", \n  \"network/panos/panos_security_rule\": \"lib/ansible/modules/network/panos/panos_security_rule.py\", \n  \"network/panos/panos_security_rule.py\": \"lib/ansible/modules/network/panos/panos_security_rule.py\", \n  \"network/protocol/net_lldp\": \"lib/ansible/modules/network/protocol/net_lldp.py\", \n  \"network/protocol/net_lldp.py\": \"lib/ansible/modules/network/protocol/net_lldp.py\", \n  \"network/radware/vdirect_file\": \"lib/ansible/modules/network/radware/vdirect_file.py\", \n  \"network/radware/vdirect_file.py\": \"lib/ansible/modules/network/radware/vdirect_file.py\", \n  \"network/routing/net_static_route\": \"lib/ansible/modules/network/routing/net_static_route.py\", \n  \"network/routing/net_static_route.py\": \"lib/ansible/modules/network/routing/net_static_route.py\", \n  \"network/sros/sros_command\": \"lib/ansible/modules/network/sros/sros_command.py\", \n  \"network/sros/sros_command.py\": \"lib/ansible/modules/network/sros/sros_command.py\", \n  \"network/sros/sros_config\": \"lib/ansible/modules/network/sros/sros_config.py\", \n  \"network/sros/sros_config.py\": \"lib/ansible/modules/network/sros/sros_config.py\", \n  \"network/sros/sros_rollback\": \"lib/ansible/modules/network/sros/sros_rollback.py\", \n  \"network/sros/sros_rollback.py\": \"lib/ansible/modules/network/sros/sros_rollback.py\", \n  \"network/system/net_banner\": \"lib/ansible/modules/network/system/net_banner.py\", \n  \"network/system/net_banner.py\": \"lib/ansible/modules/network/system/net_banner.py\", \n  \"network/system/net_logging\": \"lib/ansible/modules/network/system/net_logging.py\", \n  \"network/system/net_logging.py\": \"lib/ansible/modules/network/system/net_logging.py\", \n  \"network/system/net_ping\": \"lib/ansible/modules/network/system/net_ping.py\", \n  \"network/system/net_ping.py\": \"lib/ansible/modules/network/system/net_ping.py\", \n  \"network/system/net_system\": \"lib/ansible/modules/network/system/net_system.py\", \n  \"network/system/net_system.py\": \"lib/ansible/modules/network/system/net_system.py\", \n  \"network/system/net_user\": \"lib/ansible/modules/network/system/net_user.py\", \n  \"network/system/net_user.py\": \"lib/ansible/modules/network/system/net_user.py\", \n  \"network/vyos/vyos_banner\": \"lib/ansible/modules/network/vyos/vyos_banner.py\", \n  \"network/vyos/vyos_banner.py\": \"lib/ansible/modules/network/vyos/vyos_banner.py\", \n  \"network/vyos/vyos_command\": \"lib/ansible/modules/network/vyos/vyos_command.py\", \n  \"network/vyos/vyos_command.py\": \"lib/ansible/modules/network/vyos/vyos_command.py\", \n  \"network/vyos/vyos_config\": \"lib/ansible/modules/network/vyos/vyos_config.py\", \n  \"network/vyos/vyos_config.py\": \"lib/ansible/modules/network/vyos/vyos_config.py\", \n  \"network/vyos/vyos_facts\": \"lib/ansible/modules/network/vyos/vyos_facts.py\", \n  \"network/vyos/vyos_facts.py\": \"lib/ansible/modules/network/vyos/vyos_facts.py\", \n  \"network/vyos/vyos_interface\": \"lib/ansible/modules/network/vyos/vyos_interface.py\", \n  \"network/vyos/vyos_interface.py\": \"lib/ansible/modules/network/vyos/vyos_interface.py\", \n  \"network/vyos/vyos_l3_interface\": \"lib/ansible/modules/network/vyos/vyos_l3_interface.py\", \n  \"network/vyos/vyos_l3_interface.py\": \"lib/ansible/modules/network/vyos/vyos_l3_interface.py\", \n  \"network/vyos/vyos_linkagg\": \"lib/ansible/modules/network/vyos/vyos_linkagg.py\", \n  \"network/vyos/vyos_linkagg.py\": \"lib/ansible/modules/network/vyos/vyos_linkagg.py\", \n  \"network/vyos/vyos_lldp\": \"lib/ansible/modules/network/vyos/vyos_lldp.py\", \n  \"network/vyos/vyos_lldp.py\": \"lib/ansible/modules/network/vyos/vyos_lldp.py\", \n  \"network/vyos/vyos_lldp_interface\": \"lib/ansible/modules/network/vyos/vyos_lldp_interface.py\", \n  \"network/vyos/vyos_lldp_interface.py\": \"lib/ansible/modules/network/vyos/vyos_lldp_interface.py\", \n  \"network/vyos/vyos_logging\": \"lib/ansible/modules/network/vyos/vyos_logging.py\", \n  \"network/vyos/vyos_logging.py\": \"lib/ansible/modules/network/vyos/vyos_logging.py\", \n  \"network/vyos/vyos_static_route\": \"lib/ansible/modules/network/vyos/vyos_static_route.py\", \n  \"network/vyos/vyos_static_route.py\": \"lib/ansible/modules/network/vyos/vyos_static_route.py\", \n  \"network/vyos/vyos_system\": \"lib/ansible/modules/network/vyos/vyos_system.py\", \n  \"network/vyos/vyos_system.py\": \"lib/ansible/modules/network/vyos/vyos_system.py\", \n  \"network/vyos/vyos_user\": \"lib/ansible/modules/network/vyos/vyos_user.py\", \n  \"network/vyos/vyos_user.py\": \"lib/ansible/modules/network/vyos/vyos_user.py\", \n  \"network/vyos/vyos_vlan\": \"lib/ansible/modules/network/vyos/vyos_vlan.py\", \n  \"network/vyos/vyos_vlan.py\": \"lib/ansible/modules/network/vyos/vyos_vlan.py\", \n  \"network_cli\": [\n    \"lib/ansible/plugins/connection/network_cli.py\"\n  ], \n  \"network_cli.py\": [\n    \"lib/ansible/plugins/connection/network_cli.py\"\n  ], \n  \"networking\": [], \n  \"networking\\neos-config\": [\n    \"lib/ansible/modules/network/eos/eos_config.py\"\n  ], \n  \"networking/ios_config\": [], \n  \"networking/ios_template\": [], \n  \"new module\": [], \n  \"new module(s) request\": [], \n  \"new modules for docker swarm/service/stack\": [], \n  \"new plugin\": [], \n  \"new yaml module\": [], \n  \"newrelic_deployment\": \"lib/ansible/modules/monitoring/newrelic_deployment.py\", \n  \"newrelic_deployment module\": \"lib/ansible/modules/monitoring/newrelic_deployment.py\", \n  \"nexmo\": \"lib/ansible/modules/notification/nexmo.py\", \n  \"nexmo module\": \"lib/ansible/modules/notification/nexmo.py\", \n  \"nginx_status_facts\": \"lib/ansible/modules/web_infrastructure/nginx_status_facts.py\", \n  \"nginx_status_facts module\": \"lib/ansible/modules/web_infrastructure/nginx_status_facts.py\", \n  \"nmcli\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"nmcli module\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"nmcli module\\nN/A\": [\n    \"lib/ansible/modules/net_tools/nmcli.py\"\n  ], \n  \"nmclie module\": [], \n  \"no_log\": [], \n  \"none\": [], \n  \"none so far\": [], \n  \"nosh\": \"lib/ansible/modules/system/nosh.py\", \n  \"nosh module\": \"lib/ansible/modules/system/nosh.py\", \n  \"notification - slack\": [\n    \"lib/ansible/modules/notification/slack.py\"\n  ], \n  \"notification/bearychat\": \"lib/ansible/modules/notification/bearychat.py\", \n  \"notification/bearychat.py\": \"lib/ansible/modules/notification/bearychat.py\", \n  \"notification/campfire\": \"lib/ansible/modules/notification/campfire.py\", \n  \"notification/campfire.py\": \"lib/ansible/modules/notification/campfire.py\", \n  \"notification/catapult\": \"lib/ansible/modules/notification/catapult.py\", \n  \"notification/catapult.py\": \"lib/ansible/modules/notification/catapult.py\", \n  \"notification/cisco_spark\": \"lib/ansible/modules/notification/cisco_spark.py\", \n  \"notification/cisco_spark.py\": \"lib/ansible/modules/notification/cisco_spark.py\", \n  \"notification/flowdock\": \"lib/ansible/modules/notification/flowdock.py\", \n  \"notification/flowdock.py\": \"lib/ansible/modules/notification/flowdock.py\", \n  \"notification/grove\": \"lib/ansible/modules/notification/grove.py\", \n  \"notification/grove.py\": \"lib/ansible/modules/notification/grove.py\", \n  \"notification/hall\": \"lib/ansible/modules/notification/hall.py\", \n  \"notification/hall.py\": \"lib/ansible/modules/notification/hall.py\", \n  \"notification/hipchat\": \"lib/ansible/modules/notification/hipchat.py\", \n  \"notification/hipchat.py\": \"lib/ansible/modules/notification/hipchat.py\", \n  \"notification/irc\": \"lib/ansible/modules/notification/irc.py\", \n  \"notification/irc.py\": \"lib/ansible/modules/notification/irc.py\", \n  \"notification/jabber\": \"lib/ansible/modules/notification/jabber.py\", \n  \"notification/jabber.py\": \"lib/ansible/modules/notification/jabber.py\", \n  \"notification/mail\": \"lib/ansible/modules/notification/mail.py\", \n  \"notification/mail.py\": \"lib/ansible/modules/notification/mail.py\", \n  \"notification/mattermost\": \"lib/ansible/modules/notification/mattermost.py\", \n  \"notification/mattermost.py\": \"lib/ansible/modules/notification/mattermost.py\", \n  \"notification/mqtt\": \"lib/ansible/modules/notification/mqtt.py\", \n  \"notification/mqtt.py\": \"lib/ansible/modules/notification/mqtt.py\", \n  \"notification/nexmo\": \"lib/ansible/modules/notification/nexmo.py\", \n  \"notification/nexmo.py\": \"lib/ansible/modules/notification/nexmo.py\", \n  \"notification/office_365_connector_card\": \"lib/ansible/modules/notification/office_365_connector_card.py\", \n  \"notification/office_365_connector_card.py\": \"lib/ansible/modules/notification/office_365_connector_card.py\", \n  \"notification/osx_say\": \"lib/ansible/modules/notification/osx_say.py\", \n  \"notification/osx_say.py\": \"lib/ansible/modules/notification/osx_say.py\", \n  \"notification/pushbullet\": \"lib/ansible/modules/notification/pushbullet.py\", \n  \"notification/pushbullet.py\": \"lib/ansible/modules/notification/pushbullet.py\", \n  \"notification/pushover\": \"lib/ansible/modules/notification/pushover.py\", \n  \"notification/pushover.py\": \"lib/ansible/modules/notification/pushover.py\", \n  \"notification/rocketchat\": \"lib/ansible/modules/notification/rocketchat.py\", \n  \"notification/rocketchat.py\": \"lib/ansible/modules/notification/rocketchat.py\", \n  \"notification/sendgrid\": \"lib/ansible/modules/notification/sendgrid.py\", \n  \"notification/sendgrid.py\": \"lib/ansible/modules/notification/sendgrid.py\", \n  \"notification/slack\": \"lib/ansible/modules/notification/slack.py\", \n  \"notification/slack.py\": \"lib/ansible/modules/notification/slack.py\", \n  \"notification/snow_record\": \"lib/ansible/modules/notification/snow_record.py\", \n  \"notification/snow_record.py\": \"lib/ansible/modules/notification/snow_record.py\", \n  \"notification/syslogger\": \"lib/ansible/modules/notification/syslogger.py\", \n  \"notification/syslogger.py\": \"lib/ansible/modules/notification/syslogger.py\", \n  \"notification/telegram\": \"lib/ansible/modules/notification/telegram.py\", \n  \"notification/telegram.py\": \"lib/ansible/modules/notification/telegram.py\", \n  \"notification/twilio\": \"lib/ansible/modules/notification/twilio.py\", \n  \"notification/twilio.py\": \"lib/ansible/modules/notification/twilio.py\", \n  \"notification/typetalk\": \"lib/ansible/modules/notification/typetalk.py\", \n  \"notification/typetalk.py\": \"lib/ansible/modules/notification/typetalk.py\", \n  \"nplan or netplan (suggested names)\": [], \n  \"npm\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"npm module\": [\n    \"lib/ansible/modules/packaging/language/npm.py\"\n  ], \n  \"nsupdate\": [\n    \"lib/ansible/modules/net_tools/nsupdate.py\"\n  ], \n  \"nsupdate module\": \"lib/ansible/modules/net_tools/nsupdate.py\", \n  \"nuage_vspk\": \"lib/ansible/modules/network/nuage/nuage_vspk.py\", \n  \"nuage_vspk module\": \"lib/ansible/modules/network/nuage/nuage_vspk.py\", \n  \"nx-feature\": [], \n  \"nxos_aaa_server\": \"lib/ansible/modules/network/nxos/nxos_aaa_server.py\", \n  \"nxos_aaa_server module\": \"lib/ansible/modules/network/nxos/nxos_aaa_server.py\", \n  \"nxos_aaa_server_host\": \"lib/ansible/modules/network/nxos/nxos_aaa_server_host.py\", \n  \"nxos_aaa_server_host module\": \"lib/ansible/modules/network/nxos/nxos_aaa_server_host.py\", \n  \"nxos_acl\": [\n    \"lib/ansible/modules/network/nxos/nxos_acl.py\"\n  ], \n  \"nxos_acl module\": \"lib/ansible/modules/network/nxos/nxos_acl.py\", \n  \"nxos_acl_interface\": \"lib/ansible/modules/network/nxos/nxos_acl_interface.py\", \n  \"nxos_acl_interface module\": \"lib/ansible/modules/network/nxos/nxos_acl_interface.py\", \n  \"nxos_banner\": [\n    \"lib/ansible/modules/network/nxos/nxos_banner.py\"\n  ], \n  \"nxos_banner module\": \"lib/ansible/modules/network/nxos/nxos_banner.py\", \n  \"nxos_bgp\": \"lib/ansible/modules/network/nxos/nxos_bgp.py\", \n  \"nxos_bgp module\": \"lib/ansible/modules/network/nxos/nxos_bgp.py\", \n  \"nxos_bgp_af\": \"lib/ansible/modules/network/nxos/nxos_bgp_af.py\", \n  \"nxos_bgp_af module\": \"lib/ansible/modules/network/nxos/nxos_bgp_af.py\", \n  \"nxos_bgp_neighbor\": \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor.py\", \n  \"nxos_bgp_neighbor module\": \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor.py\", \n  \"nxos_bgp_neighbor_af\": \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor_af.py\", \n  \"nxos_bgp_neighbor_af module\": \"lib/ansible/modules/network/nxos/nxos_bgp_neighbor_af.py\", \n  \"nxos_bgp_neighbor_af with the parameter send_community set fails if ran a second time instead of Idempotently showing as already complete.\": [], \n  \"nxos_command\": [\n    \"lib/ansible/modules/network/nxos/nxos_command.py\"\n  ], \n  \"nxos_command\\nnxos_config\": [\n    \"lib/ansible/modules/network/nxos/nxos_command.py\", \n    \"lib/ansible/modules/network/nxos/nxos_config.py\"\n  ], \n  \"nxos_command module\": \"lib/ansible/modules/network/nxos/nxos_command.py\", \n  \"nxos_config\": [\n    \"lib/ansible/modules/network/nxos/nxos_config.py\"\n  ], \n  \"nxos_config\\nhttp://docs.ansible.com/ansible/latest/nxos_config_module.html\": [\n    \"lib/ansible/modules/network/nxos/nxos_config.py\"\n  ], \n  \"nxos_config module\": \"lib/ansible/modules/network/nxos/nxos_config.py\", \n  \"nxos_config module\\nhttp://docs.ansible.com/ansible/latest/nxos_config_module.html\": [\n    \"lib/ansible/modules/network/nxos/nxos_config.py\"\n  ], \n  \"nxos_evpn_global\": \"lib/ansible/modules/network/nxos/nxos_evpn_global.py\", \n  \"nxos_evpn_global module\": \"lib/ansible/modules/network/nxos/nxos_evpn_global.py\", \n  \"nxos_evpn_vni\": [\n    \"lib/ansible/modules/network/nxos/nxos_evpn_vni.py\"\n  ], \n  \"nxos_evpn_vni module\": \"lib/ansible/modules/network/nxos/nxos_evpn_vni.py\", \n  \"nxos_facts\": [\n    \"lib/ansible/modules/network/nxos/nxos_facts.py\"\n  ], \n  \"nxos_facts module\": \"lib/ansible/modules/network/nxos/nxos_facts.py\", \n  \"nxos_feature\": \"lib/ansible/modules/network/nxos/nxos_feature.py\", \n  \"nxos_feature module\": \"lib/ansible/modules/network/nxos/nxos_feature.py\", \n  \"nxos_file_copy\": [\n    \"lib/ansible/modules/network/nxos/nxos_file_copy.py\"\n  ], \n  \"nxos_file_copy module\": \"lib/ansible/modules/network/nxos/nxos_file_copy.py\", \n  \"nxos_gir\": \"lib/ansible/modules/network/nxos/nxos_gir.py\", \n  \"nxos_gir module\": \"lib/ansible/modules/network/nxos/nxos_gir.py\", \n  \"nxos_gir_profile_management\": \"lib/ansible/modules/network/nxos/nxos_gir_profile_management.py\", \n  \"nxos_gir_profile_management module\": \"lib/ansible/modules/network/nxos/nxos_gir_profile_management.py\", \n  \"nxos_hsrp\": \"lib/ansible/modules/network/nxos/nxos_hsrp.py\", \n  \"nxos_hsrp module\": \"lib/ansible/modules/network/nxos/nxos_hsrp.py\", \n  \"nxos_igmp\": \"lib/ansible/modules/network/nxos/nxos_igmp.py\", \n  \"nxos_igmp module\": \"lib/ansible/modules/network/nxos/nxos_igmp.py\", \n  \"nxos_igmp_interface\": \"lib/ansible/modules/network/nxos/nxos_igmp_interface.py\", \n  \"nxos_igmp_interface module\": \"lib/ansible/modules/network/nxos/nxos_igmp_interface.py\", \n  \"nxos_igmp_snooping\": \"lib/ansible/modules/network/nxos/nxos_igmp_snooping.py\", \n  \"nxos_igmp_snooping module\": \"lib/ansible/modules/network/nxos/nxos_igmp_snooping.py\", \n  \"nxos_install_os\": \"lib/ansible/modules/network/nxos/nxos_install_os.py\", \n  \"nxos_install_os module\": \"lib/ansible/modules/network/nxos/nxos_install_os.py\", \n  \"nxos_interface\": [\n    \"lib/ansible/modules/network/nxos/nxos_interface.py\"\n  ], \n  \"nxos_interface module\": \"lib/ansible/modules/network/nxos/nxos_interface.py\", \n  \"nxos_interface_ospf\": \"lib/ansible/modules/network/nxos/nxos_interface_ospf.py\", \n  \"nxos_interface_ospf module\": \"lib/ansible/modules/network/nxos/nxos_interface_ospf.py\", \n  \"nxos_ip_interface\": \"lib/ansible/modules/network/nxos/nxos_ip_interface.py\", \n  \"nxos_ip_interface module\": \"lib/ansible/modules/network/nxos/nxos_ip_interface.py\", \n  \"nxos_logging\": \"lib/ansible/modules/network/nxos/nxos_logging.py\", \n  \"nxos_logging module\": \"lib/ansible/modules/network/nxos/nxos_logging.py\", \n  \"nxos_mtu\": \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n  \"nxos_mtu module\": \"lib/ansible/modules/network/nxos/_nxos_mtu.py\", \n  \"nxos_ntp\": [\n    \"lib/ansible/modules/network/nxos/nxos_ntp.py\"\n  ], \n  \"nxos_ntp module\": \"lib/ansible/modules/network/nxos/nxos_ntp.py\", \n  \"nxos_ntp_auth\": \"lib/ansible/modules/network/nxos/nxos_ntp_auth.py\", \n  \"nxos_ntp_auth module\": \"lib/ansible/modules/network/nxos/nxos_ntp_auth.py\", \n  \"nxos_ntp_options\": \"lib/ansible/modules/network/nxos/nxos_ntp_options.py\", \n  \"nxos_ntp_options module\": \"lib/ansible/modules/network/nxos/nxos_ntp_options.py\", \n  \"nxos_nxapi\": [\n    \"lib/ansible/modules/network/nxos/nxos_nxapi.py\"\n  ], \n  \"nxos_nxapi\\nnxos_command\\nnxos_template\": [\n    \"lib/ansible/modules/network/nxos/nxos_command.py\", \n    \"lib/ansible/modules/network/nxos/nxos_nxapi.py\"\n  ], \n  \"nxos_nxapi module\": \"lib/ansible/modules/network/nxos/nxos_nxapi.py\", \n  \"nxos_ospf\": \"lib/ansible/modules/network/nxos/nxos_ospf.py\", \n  \"nxos_ospf module\": \"lib/ansible/modules/network/nxos/nxos_ospf.py\", \n  \"nxos_ospf_vrf\": \"lib/ansible/modules/network/nxos/nxos_ospf_vrf.py\", \n  \"nxos_ospf_vrf module\": \"lib/ansible/modules/network/nxos/nxos_ospf_vrf.py\", \n  \"nxos_overlay_global\": \"lib/ansible/modules/network/nxos/nxos_overlay_global.py\", \n  \"nxos_overlay_global module\": \"lib/ansible/modules/network/nxos/nxos_overlay_global.py\", \n  \"nxos_pim\": \"lib/ansible/modules/network/nxos/nxos_pim.py\", \n  \"nxos_pim module\": \"lib/ansible/modules/network/nxos/nxos_pim.py\", \n  \"nxos_pim_interface\": \"lib/ansible/modules/network/nxos/nxos_pim_interface.py\", \n  \"nxos_pim_interface module\": \"lib/ansible/modules/network/nxos/nxos_pim_interface.py\", \n  \"nxos_pim_rp_address\": \"lib/ansible/modules/network/nxos/nxos_pim_rp_address.py\", \n  \"nxos_pim_rp_address module\": \"lib/ansible/modules/network/nxos/nxos_pim_rp_address.py\", \n  \"nxos_ping\": \"lib/ansible/modules/network/nxos/nxos_ping.py\", \n  \"nxos_ping module\": \"lib/ansible/modules/network/nxos/nxos_ping.py\", \n  \"nxos_portchannel\": \"lib/ansible/modules/network/nxos/nxos_portchannel.py\", \n  \"nxos_portchannel module\": \"lib/ansible/modules/network/nxos/nxos_portchannel.py\", \n  \"nxos_reboot\": [\n    \"lib/ansible/modules/network/nxos/nxos_reboot.py\"\n  ], \n  \"nxos_reboot module\": \"lib/ansible/modules/network/nxos/nxos_reboot.py\", \n  \"nxos_rollback\": \"lib/ansible/modules/network/nxos/nxos_rollback.py\", \n  \"nxos_rollback module\": \"lib/ansible/modules/network/nxos/nxos_rollback.py\", \n  \"nxos_smu\": \"lib/ansible/modules/network/nxos/nxos_smu.py\", \n  \"nxos_smu module\": \"lib/ansible/modules/network/nxos/nxos_smu.py\", \n  \"nxos_snapshot\": [\n    \"lib/ansible/modules/network/nxos/nxos_snapshot.py\"\n  ], \n  \"nxos_snapshot module\": \"lib/ansible/modules/network/nxos/nxos_snapshot.py\", \n  \"nxos_snmp_community\": \"lib/ansible/modules/network/nxos/nxos_snmp_community.py\", \n  \"nxos_snmp_community module\": \"lib/ansible/modules/network/nxos/nxos_snmp_community.py\", \n  \"nxos_snmp_contact\": \"lib/ansible/modules/network/nxos/nxos_snmp_contact.py\", \n  \"nxos_snmp_contact module\": \"lib/ansible/modules/network/nxos/nxos_snmp_contact.py\", \n  \"nxos_snmp_host\": \"lib/ansible/modules/network/nxos/nxos_snmp_host.py\", \n  \"nxos_snmp_host module\": \"lib/ansible/modules/network/nxos/nxos_snmp_host.py\", \n  \"nxos_snmp_location\": \"lib/ansible/modules/network/nxos/nxos_snmp_location.py\", \n  \"nxos_snmp_location module\": \"lib/ansible/modules/network/nxos/nxos_snmp_location.py\", \n  \"nxos_snmp_traps\": \"lib/ansible/modules/network/nxos/nxos_snmp_traps.py\", \n  \"nxos_snmp_traps module\": \"lib/ansible/modules/network/nxos/nxos_snmp_traps.py\", \n  \"nxos_snmp_user\": [\n    \"lib/ansible/modules/network/nxos/nxos_snmp_user.py\"\n  ], \n  \"nxos_snmp_user module\": \"lib/ansible/modules/network/nxos/nxos_snmp_user.py\", \n  \"nxos_snmp_user_module\\nhttp://docs.ansible.com/ansible/latest/nxos_snmp_user_module.html\": [\n    \"lib/ansible/modules/network/nxos/nxos_snmp_user.py\"\n  ], \n  \"nxos_static_route\": \"lib/ansible/modules/network/nxos/nxos_static_route.py\", \n  \"nxos_static_route module\": \"lib/ansible/modules/network/nxos/nxos_static_route.py\", \n  \"nxos_switchport\": \"lib/ansible/modules/network/nxos/nxos_switchport.py\", \n  \"nxos_switchport module\": \"lib/ansible/modules/network/nxos/nxos_switchport.py\", \n  \"nxos_system\": [\n    \"lib/ansible/modules/network/nxos/nxos_system.py\"\n  ], \n  \"nxos_system module\": \"lib/ansible/modules/network/nxos/nxos_system.py\", \n  \"nxos_udld\": \"lib/ansible/modules/network/nxos/nxos_udld.py\", \n  \"nxos_udld module\": \"lib/ansible/modules/network/nxos/nxos_udld.py\", \n  \"nxos_udld_interface\": [\n    \"lib/ansible/modules/network/nxos/nxos_udld_interface.py\"\n  ], \n  \"nxos_udld_interface module\": \"lib/ansible/modules/network/nxos/nxos_udld_interface.py\", \n  \"nxos_user\": \"lib/ansible/modules/network/nxos/nxos_user.py\", \n  \"nxos_user\\nnxos_vtp_password\": [\n    \"lib/ansible/modules/network/nxos/nxos_user.py\", \n    \"lib/ansible/modules/network/nxos/nxos_vtp_password.py\"\n  ], \n  \"nxos_user module\": \"lib/ansible/modules/network/nxos/nxos_user.py\", \n  \"nxos_vlan\": [\n    \"lib/ansible/modules/network/nxos/nxos_vlan.py\"\n  ], \n  \"nxos_vlan module\": \"lib/ansible/modules/network/nxos/nxos_vlan.py\", \n  \"nxos_vpc\": [\n    \"lib/ansible/modules/network/nxos/nxos_vpc.py\"\n  ], \n  \"nxos_vpc module\": \"lib/ansible/modules/network/nxos/nxos_vpc.py\", \n  \"nxos_vpc_interface\": \"lib/ansible/modules/network/nxos/nxos_vpc_interface.py\", \n  \"nxos_vpc_interface module\": \"lib/ansible/modules/network/nxos/nxos_vpc_interface.py\", \n  \"nxos_vrf\": \"lib/ansible/modules/network/nxos/nxos_vrf.py\", \n  \"nxos_vrf module\": \"lib/ansible/modules/network/nxos/nxos_vrf.py\", \n  \"nxos_vrf_af\": [\n    \"lib/ansible/modules/network/nxos/nxos_vrf_af.py\"\n  ], \n  \"nxos_vrf_af module\": \"lib/ansible/modules/network/nxos/nxos_vrf_af.py\", \n  \"nxos_vrf_interface\": [\n    \"lib/ansible/modules/network/nxos/nxos_vrf_interface.py\"\n  ], \n  \"nxos_vrf_interface module\": \"lib/ansible/modules/network/nxos/nxos_vrf_interface.py\", \n  \"nxos_vrrp\": \"lib/ansible/modules/network/nxos/nxos_vrrp.py\", \n  \"nxos_vrrp module\": \"lib/ansible/modules/network/nxos/nxos_vrrp.py\", \n  \"nxos_vtp_domain\": [\n    \"lib/ansible/modules/network/nxos/nxos_vtp_domain.py\"\n  ], \n  \"nxos_vtp_domain module\": \"lib/ansible/modules/network/nxos/nxos_vtp_domain.py\", \n  \"nxos_vtp_password\": [\n    \"lib/ansible/modules/network/nxos/nxos_vtp_password.py\"\n  ], \n  \"nxos_vtp_password module\": \"lib/ansible/modules/network/nxos/nxos_vtp_password.py\", \n  \"nxos_vtp_version\": [\n    \"lib/ansible/modules/network/nxos/nxos_vtp_version.py\"\n  ], \n  \"nxos_vtp_version module\": \"lib/ansible/modules/network/nxos/nxos_vtp_version.py\", \n  \"nxos_vxlan_vtep\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep.py\", \n  \"nxos_vxlan_vtep module\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep.py\", \n  \"nxos_vxlan_vtep_vni\": [\n    \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\"\n  ], \n  \"nxos_vxlan_vtep_vni module\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\", \n  \"oVirt host module\": [], \n  \"oc\": [\n    \"lib/ansible/modules/clustering/oc.py\"\n  ], \n  \"oc module\": \"lib/ansible/modules/clustering/oc.py\", \n  \"office_365_connector_card\": \"lib/ansible/modules/notification/office_365_connector_card.py\", \n  \"office_365_connector_card module\": \"lib/ansible/modules/notification/office_365_connector_card.py\", \n  \"ohai\": \"lib/ansible/modules/system/ohai.py\", \n  \"ohai module\": \"lib/ansible/modules/system/ohai.py\", \n  \"omapi_host\": \"lib/ansible/modules/net_tools/omapi_host.py\", \n  \"omapi_host module\": \"lib/ansible/modules/net_tools/omapi_host.py\", \n  \"omit filter\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"oneview_enclosure_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_enclosure_facts.py\", \n  \"oneview_enclosure_facts module\": \"lib/ansible/modules/remote_management/oneview/oneview_enclosure_facts.py\", \n  \"oneview_ethernet_network\": \"lib/ansible/modules/remote_management/oneview/oneview_ethernet_network.py\", \n  \"oneview_ethernet_network module\": \"lib/ansible/modules/remote_management/oneview/oneview_ethernet_network.py\", \n  \"oneview_ethernet_network_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_ethernet_network_facts.py\", \n  \"oneview_ethernet_network_facts module\": \"lib/ansible/modules/remote_management/oneview/oneview_ethernet_network_facts.py\", \n  \"oneview_fc_network\": \"lib/ansible/modules/remote_management/oneview/oneview_fc_network.py\", \n  \"oneview_fc_network module\": \"lib/ansible/modules/remote_management/oneview/oneview_fc_network.py\", \n  \"oneview_fc_network_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_fc_network_facts.py\", \n  \"oneview_fc_network_facts module\": \"lib/ansible/modules/remote_management/oneview/oneview_fc_network_facts.py\", \n  \"oneview_fcoe_network\": \"lib/ansible/modules/remote_management/oneview/oneview_fcoe_network.py\", \n  \"oneview_fcoe_network module\": \"lib/ansible/modules/remote_management/oneview/oneview_fcoe_network.py\", \n  \"oneview_fcoe_network_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_fcoe_network_facts.py\", \n  \"oneview_fcoe_network_facts module\": \"lib/ansible/modules/remote_management/oneview/oneview_fcoe_network_facts.py\", \n  \"oneview_logical_interconnect_group\": \"lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group.py\", \n  \"oneview_logical_interconnect_group module\": \"lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group.py\", \n  \"oneview_logical_interconnect_group_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group_facts.py\", \n  \"oneview_logical_interconnect_group_facts module\": \"lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group_facts.py\", \n  \"oneview_network_set\": \"lib/ansible/modules/remote_management/oneview/oneview_network_set.py\", \n  \"oneview_network_set module\": \"lib/ansible/modules/remote_management/oneview/oneview_network_set.py\", \n  \"oneview_network_set_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_network_set_facts.py\", \n  \"oneview_network_set_facts module\": \"lib/ansible/modules/remote_management/oneview/oneview_network_set_facts.py\", \n  \"oneview_san_manager\": \"lib/ansible/modules/remote_management/oneview/oneview_san_manager.py\", \n  \"oneview_san_manager module\": \"lib/ansible/modules/remote_management/oneview/oneview_san_manager.py\", \n  \"oneview_san_manager_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_san_manager_facts.py\", \n  \"oneview_san_manager_facts module\": \"lib/ansible/modules/remote_management/oneview/oneview_san_manager_facts.py\", \n  \"open_iscsi\": [\n    \"lib/ansible/modules/system/open_iscsi.py\"\n  ], \n  \"open_iscsi module\": \"lib/ansible/modules/system/open_iscsi.py\", \n  \"openbsd_pkg\": [\n    \"lib/ansible/modules/packaging/os/openbsd_pkg.py\"\n  ], \n  \"openbsd_pkg module\": \"lib/ansible/modules/packaging/os/openbsd_pkg.py\", \n  \"opendj_backendprop\": \"lib/ansible/modules/identity/opendj/opendj_backendprop.py\", \n  \"opendj_backendprop module\": \"lib/ansible/modules/identity/opendj/opendj_backendprop.py\", \n  \"openssl_certificate\": [\n    \"lib/ansible/modules/crypto/openssl_certificate.py\"\n  ], \n  \"openssl_certificate module\": \"lib/ansible/modules/crypto/openssl_certificate.py\", \n  \"openssl_csr\": [\n    \"lib/ansible/modules/crypto/openssl_csr.py\"\n  ], \n  \"openssl_csr\\nopenssl_certificate\": [\n    \"lib/ansible/modules/crypto/openssl_certificate.py\", \n    \"lib/ansible/modules/crypto/openssl_csr.py\"\n  ], \n  \"openssl_csr module\": \"lib/ansible/modules/crypto/openssl_csr.py\", \n  \"openssl_csr module.\": [\n    \"lib/ansible/modules/crypto/openssl_csr.py\"\n  ], \n  \"openssl_privatekey\": \"lib/ansible/modules/crypto/openssl_privatekey.py\", \n  \"openssl_privatekey module\": \"lib/ansible/modules/crypto/openssl_privatekey.py\", \n  \"openssl_publickey\": \"lib/ansible/modules/crypto/openssl_publickey.py\", \n  \"openssl_publickey module\": \"lib/ansible/modules/crypto/openssl_publickey.py\", \n  \"openstack dynamic inventory script\": [\n    \"contrib/inventory/openstack.py\"\n  ], \n  \"openstack os_server, add_host\": [\n    \"lib/ansible/modules/cloud/openstack/os_server.py\", \n    \"lib/ansible/modules/inventory/add_host.py\"\n  ], \n  \"openstack/os_object\": [\n    \"lib/ansible/modules/cloud/openstack/os_object.py\"\n  ], \n  \"openstak module os_server\": [\n    \"lib/ansible/modules/cloud/openstack/os_server.py\"\n  ], \n  \"openvswitch_bridge\": \"lib/ansible/modules/network/ovs/openvswitch_bridge.py\", \n  \"openvswitch_bridge module\": \"lib/ansible/modules/network/ovs/openvswitch_bridge.py\", \n  \"openvswitch_db\": \"lib/ansible/modules/network/ovs/openvswitch_db.py\", \n  \"openvswitch_db module\": \"lib/ansible/modules/network/ovs/openvswitch_db.py\", \n  \"openvswitch_port\": \"lib/ansible/modules/network/ovs/openvswitch_port.py\", \n  \"openvswitch_port module\": \"lib/ansible/modules/network/ovs/openvswitch_port.py\", \n  \"openwrt_init\": \"lib/ansible/modules/system/openwrt_init.py\", \n  \"openwrt_init module\": \"lib/ansible/modules/system/openwrt_init.py\", \n  \"opkg\": \"lib/ansible/modules/packaging/os/opkg.py\", \n  \"opkg module\": \"lib/ansible/modules/packaging/os/opkg.py\", \n  \"ordnance_config\": \"lib/ansible/modules/network/ordnance/ordnance_config.py\", \n  \"ordnance_config module\": \"lib/ansible/modules/network/ordnance/ordnance_config.py\", \n  \"ordnance_facts\": \"lib/ansible/modules/network/ordnance/ordnance_facts.py\", \n  \"ordnance_facts module\": \"lib/ansible/modules/network/ordnance/ordnance_facts.py\", \n  \"os_auth\": \"lib/ansible/modules/cloud/openstack/os_auth.py\", \n  \"os_auth module\": \"lib/ansible/modules/cloud/openstack/os_auth.py\", \n  \"os_client_config\": \"lib/ansible/modules/cloud/openstack/os_client_config.py\", \n  \"os_client_config module\": \"lib/ansible/modules/cloud/openstack/os_client_config.py\", \n  \"os_flavor_facts\": [\n    \"lib/ansible/modules/cloud/openstack/os_flavor_facts.py\"\n  ], \n  \"os_flavor_facts module\": \"lib/ansible/modules/cloud/openstack/os_flavor_facts.py\", \n  \"os_floating_ip\": [\n    \"lib/ansible/modules/cloud/openstack/os_floating_ip.py\"\n  ], \n  \"os_floating_ip module\": \"lib/ansible/modules/cloud/openstack/os_floating_ip.py\", \n  \"os_group\": \"lib/ansible/modules/cloud/openstack/os_group.py\", \n  \"os_group module\": \"lib/ansible/modules/cloud/openstack/os_group.py\", \n  \"os_image\": [\n    \"lib/ansible/modules/cloud/openstack/os_image.py\"\n  ], \n  \"os_image module\": \"lib/ansible/modules/cloud/openstack/os_image.py\", \n  \"os_image_facts\": \"lib/ansible/modules/cloud/openstack/os_image_facts.py\", \n  \"os_image_facts module\": \"lib/ansible/modules/cloud/openstack/os_image_facts.py\", \n  \"os_ironic\": \"lib/ansible/modules/cloud/openstack/os_ironic.py\", \n  \"os_ironic module\": \"lib/ansible/modules/cloud/openstack/os_ironic.py\", \n  \"os_ironic_inspect\": \"lib/ansible/modules/cloud/openstack/os_ironic_inspect.py\", \n  \"os_ironic_inspect module\": \"lib/ansible/modules/cloud/openstack/os_ironic_inspect.py\", \n  \"os_ironic_node\": \"lib/ansible/modules/cloud/openstack/os_ironic_node.py\", \n  \"os_ironic_node module\": \"lib/ansible/modules/cloud/openstack/os_ironic_node.py\", \n  \"os_keypair\": [\n    \"lib/ansible/modules/cloud/openstack/os_keypair.py\"\n  ], \n  \"os_keypair module\": \"lib/ansible/modules/cloud/openstack/os_keypair.py\", \n  \"os_keystone_domain\": \"lib/ansible/modules/cloud/openstack/os_keystone_domain.py\", \n  \"os_keystone_domain module\": \"lib/ansible/modules/cloud/openstack/os_keystone_domain.py\", \n  \"os_keystone_domain_facts\": \"lib/ansible/modules/cloud/openstack/os_keystone_domain_facts.py\", \n  \"os_keystone_domain_facts module\": \"lib/ansible/modules/cloud/openstack/os_keystone_domain_facts.py\", \n  \"os_keystone_endpoint\": [\n    \"lib/ansible/modules/cloud/openstack/os_keystone_endpoint.py\"\n  ], \n  \"os_keystone_endpoint module\": \"lib/ansible/modules/cloud/openstack/os_keystone_endpoint.py\", \n  \"os_keystone_role\": \"lib/ansible/modules/cloud/openstack/os_keystone_role.py\", \n  \"os_keystone_role module\": \"lib/ansible/modules/cloud/openstack/os_keystone_role.py\", \n  \"os_keystone_service\": \"lib/ansible/modules/cloud/openstack/os_keystone_service.py\", \n  \"os_keystone_service module\": \"lib/ansible/modules/cloud/openstack/os_keystone_service.py\", \n  \"os_keystone_service, os_user, etc..\": [\n    \"lib/ansible/modules/cloud/openstack/os_keystone_service.py\", \n    \"lib/ansible/modules/cloud/openstack/os_user.py\"\n  ], \n  \"os_magnum\": [], \n  \"os_network\": \"lib/ansible/modules/cloud/openstack/os_network.py\", \n  \"os_network\\nthough could be any other where ipv6 address in http url gets passed to requests (not tested)\": [\n    \"lib/ansible/modules/cloud/openstack/os_network.py\"\n  ], \n  \"os_network module\": \"lib/ansible/modules/cloud/openstack/os_network.py\", \n  \"os_network or os_subnet module\": [\n    \"lib/ansible/modules/cloud/openstack/os_subnet.py\"\n  ], \n  \"os_networks_facts\": \"lib/ansible/modules/cloud/openstack/os_networks_facts.py\", \n  \"os_networks_facts module\": \"lib/ansible/modules/cloud/openstack/os_networks_facts.py\", \n  \"os_nova_flavor\": \"lib/ansible/modules/cloud/openstack/os_nova_flavor.py\", \n  \"os_nova_flavor module\": \"lib/ansible/modules/cloud/openstack/os_nova_flavor.py\", \n  \"os_nova_host_aggregate\": \"lib/ansible/modules/cloud/openstack/os_nova_host_aggregate.py\", \n  \"os_nova_host_aggregate module\": \"lib/ansible/modules/cloud/openstack/os_nova_host_aggregate.py\", \n  \"os_object\": \"lib/ansible/modules/cloud/openstack/os_object.py\", \n  \"os_object module\": \"lib/ansible/modules/cloud/openstack/os_object.py\", \n  \"os_port\": [\n    \"lib/ansible/modules/cloud/openstack/os_port.py\"\n  ], \n  \"os_port module\": [\n    \"lib/ansible/modules/cloud/openstack/os_port.py\"\n  ], \n  \"os_port_facts\": \"lib/ansible/modules/cloud/openstack/os_port_facts.py\", \n  \"os_port_facts module\": \"lib/ansible/modules/cloud/openstack/os_port_facts.py\", \n  \"os_project\": \"lib/ansible/modules/cloud/openstack/os_project.py\", \n  \"os_project module\": \"lib/ansible/modules/cloud/openstack/os_project.py\", \n  \"os_project_facts\": \"lib/ansible/modules/cloud/openstack/os_project_facts.py\", \n  \"os_project_facts module\": \"lib/ansible/modules/cloud/openstack/os_project_facts.py\", \n  \"os_quota\": \"lib/ansible/modules/cloud/openstack/os_quota.py\", \n  \"os_quota module\": \"lib/ansible/modules/cloud/openstack/os_quota.py\", \n  \"os_recordset\": \"lib/ansible/modules/cloud/openstack/os_recordset.py\", \n  \"os_recordset module\": \"lib/ansible/modules/cloud/openstack/os_recordset.py\", \n  \"os_router\": [\n    \"lib/ansible/modules/cloud/openstack/os_router.py\"\n  ], \n  \"os_router module\": [\n    \"lib/ansible/modules/cloud/openstack/os_router.py\"\n  ], \n  \"os_router.py\": [\n    \"lib/ansible/modules/cloud/openstack/os_router.py\"\n  ], \n  \"os_security_group\": \"lib/ansible/modules/cloud/openstack/os_security_group.py\", \n  \"os_security_group module\": \"lib/ansible/modules/cloud/openstack/os_security_group.py\", \n  \"os_security_group_rule\": [\n    \"lib/ansible/modules/cloud/openstack/os_security_group_rule.py\"\n  ], \n  \"os_security_group_rule module\": \"lib/ansible/modules/cloud/openstack/os_security_group_rule.py\", \n  \"os_server\": [\n    \"lib/ansible/modules/cloud/openstack/os_server.py\"\n  ], \n  \"os_server module\": [\n    \"lib/ansible/modules/cloud/openstack/os_server.py\"\n  ], \n  \"os_server_action\": \"lib/ansible/modules/cloud/openstack/os_server_action.py\", \n  \"os_server_action module\": \"lib/ansible/modules/cloud/openstack/os_server_action.py\", \n  \"os_server_actions\": \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n  \"os_server_actions module\": \"lib/ansible/modules/cloud/openstack/_os_server_actions.py\", \n  \"os_server_facts\": [\n    \"lib/ansible/modules/cloud/openstack/os_server_facts.py\"\n  ], \n  \"os_server_facts module\": \"lib/ansible/modules/cloud/openstack/os_server_facts.py\", \n  \"os_server_group\": \"lib/ansible/modules/cloud/openstack/os_server_group.py\", \n  \"os_server_group module\": \"lib/ansible/modules/cloud/openstack/os_server_group.py\", \n  \"os_server_volume\": \"lib/ansible/modules/cloud/openstack/os_server_volume.py\", \n  \"os_server_volume module\": \"lib/ansible/modules/cloud/openstack/os_server_volume.py\", \n  \"os_stack\": \"lib/ansible/modules/cloud/openstack/os_stack.py\", \n  \"os_stack module\": \"lib/ansible/modules/cloud/openstack/os_stack.py\", \n  \"os_stack.py or other openstack modules\": [\n    \"lib/ansible/modules/cloud/openstack/os_stack.py\"\n  ], \n  \"os_subnet\": [\n    \"lib/ansible/modules/cloud/openstack/os_subnet.py\"\n  ], \n  \"os_subnet module\": \"lib/ansible/modules/cloud/openstack/os_subnet.py\", \n  \"os_subnet, os_image?\": [\n    \"lib/ansible/modules/cloud/openstack/os_image.py\", \n    \"lib/ansible/modules/cloud/openstack/os_subnet.py\"\n  ], \n  \"os_subnets_facts\": \"lib/ansible/modules/cloud/openstack/os_subnets_facts.py\", \n  \"os_subnets_facts module\": \"lib/ansible/modules/cloud/openstack/os_subnets_facts.py\", \n  \"os_user\": [\n    \"lib/ansible/modules/cloud/openstack/os_user.py\"\n  ], \n  \"os_user module\": [\n    \"lib/ansible/modules/cloud/openstack/os_user.py\"\n  ], \n  \"os_user_facts\": \"lib/ansible/modules/cloud/openstack/os_user_facts.py\", \n  \"os_user_facts module\": \"lib/ansible/modules/cloud/openstack/os_user_facts.py\", \n  \"os_user_group\": \"lib/ansible/modules/cloud/openstack/os_user_group.py\", \n  \"os_user_group module\": \"lib/ansible/modules/cloud/openstack/os_user_group.py\", \n  \"os_user_role\": \"lib/ansible/modules/cloud/openstack/os_user_role.py\", \n  \"os_user_role module\": \"lib/ansible/modules/cloud/openstack/os_user_role.py\", \n  \"os_volume\": \"lib/ansible/modules/cloud/openstack/os_volume.py\", \n  \"os_volume module\": \"lib/ansible/modules/cloud/openstack/os_volume.py\", \n  \"os_zone\": \"lib/ansible/modules/cloud/openstack/os_zone.py\", \n  \"os_zone module\": \"lib/ansible/modules/cloud/openstack/os_zone.py\", \n  \"osx_defaults\": [\n    \"lib/ansible/modules/system/osx_defaults.py\"\n  ], \n  \"osx_defaults module\": \"lib/ansible/modules/system/osx_defaults.py\", \n  \"osx_say\": \"lib/ansible/modules/notification/osx_say.py\", \n  \"osx_say module\": \"lib/ansible/modules/notification/osx_say.py\", \n  \"ovh_ip_loadbalancing_backend\": \"lib/ansible/modules/cloud/ovh/ovh_ip_loadbalancing_backend.py\", \n  \"ovh_ip_loadbalancing_backend module\": \"lib/ansible/modules/cloud/ovh/ovh_ip_loadbalancing_backend.py\", \n  \"ovirt\": \"lib/ansible/modules/cloud/misc/ovirt.py\", \n  \"ovirt module\": [\n    \"lib/ansible/modules/cloud/misc/ovirt.py\"\n  ], \n  \"ovirt_affinity_group\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_group.py\", \n  \"ovirt_affinity_group module\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_group.py\", \n  \"ovirt_affinity_groups\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\", \n  \"ovirt_affinity_groups module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_groups.py\", \n  \"ovirt_affinity_label\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_label.py\", \n  \"ovirt_affinity_label module\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_label.py\", \n  \"ovirt_affinity_label_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_label_facts.py\", \n  \"ovirt_affinity_label_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_label_facts.py\", \n  \"ovirt_affinity_labels\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\", \n  \"ovirt_affinity_labels module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels.py\", \n  \"ovirt_affinity_labels_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\", \n  \"ovirt_affinity_labels_facts module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_affinity_labels_facts.py\", \n  \"ovirt_api_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_api_facts.py\", \n  \"ovirt_api_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_api_facts.py\", \n  \"ovirt_auth\": \"lib/ansible/modules/cloud/ovirt/ovirt_auth.py\", \n  \"ovirt_auth module\": \"lib/ansible/modules/cloud/ovirt/ovirt_auth.py\", \n  \"ovirt_cluster\": \"lib/ansible/modules/cloud/ovirt/ovirt_cluster.py\", \n  \"ovirt_cluster module\": \"lib/ansible/modules/cloud/ovirt/ovirt_cluster.py\", \n  \"ovirt_cluster_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_cluster_facts.py\", \n  \"ovirt_cluster_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_cluster_facts.py\", \n  \"ovirt_clusters\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\", \n  \"ovirt_clusters module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters.py\", \n  \"ovirt_clusters_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\", \n  \"ovirt_clusters_facts module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_clusters_facts.py\", \n  \"ovirt_datacenter\": \"lib/ansible/modules/cloud/ovirt/ovirt_datacenter.py\", \n  \"ovirt_datacenter module\": \"lib/ansible/modules/cloud/ovirt/ovirt_datacenter.py\", \n  \"ovirt_datacenter_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_datacenter_facts.py\", \n  \"ovirt_datacenter_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_datacenter_facts.py\", \n  \"ovirt_datacenters\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\", \n  \"ovirt_datacenters module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters.py\", \n  \"ovirt_datacenters_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\", \n  \"ovirt_datacenters_facts module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_datacenters_facts.py\", \n  \"ovirt_disk\": \"lib/ansible/modules/cloud/ovirt/ovirt_disk.py\", \n  \"ovirt_disk module\": \"lib/ansible/modules/cloud/ovirt/ovirt_disk.py\", \n  \"ovirt_disk_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_disk_facts.py\", \n  \"ovirt_disk_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_disk_facts.py\", \n  \"ovirt_disks\": [\n    \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\"\n  ], \n  \"ovirt_disks module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_disks.py\", \n  \"ovirt_external_provider\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_provider.py\", \n  \"ovirt_external_provider module\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_provider.py\", \n  \"ovirt_external_provider_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_provider_facts.py\", \n  \"ovirt_external_provider_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_provider_facts.py\", \n  \"ovirt_external_providers\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\", \n  \"ovirt_external_providers module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers.py\", \n  \"ovirt_external_providers_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\", \n  \"ovirt_external_providers_facts module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_external_providers_facts.py\", \n  \"ovirt_group\": \"lib/ansible/modules/cloud/ovirt/ovirt_group.py\", \n  \"ovirt_group module\": \"lib/ansible/modules/cloud/ovirt/ovirt_group.py\", \n  \"ovirt_group_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_group_facts.py\", \n  \"ovirt_group_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_group_facts.py\", \n  \"ovirt_groups\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\", \n  \"ovirt_groups module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups.py\", \n  \"ovirt_groups_facts\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\", \n  \"ovirt_groups_facts module\": \"lib/ansible/modules/cloud/ovirt/_ovirt_groups_facts.py\", \n  \"ovirt_host_networks\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_networks.py\", \n  \"ovirt_host_networks module\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_networks.py\", \n  \"ovirt_host_pm\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_pm.py\", \n  \"ovirt_host_pm module\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_pm.py\", \n  \"ovirt_host_storage_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_storage_facts.py\", \n  \"ovirt_host_storage_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_host_storage_facts.py\", \n  \"ovirt_hosts\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts.py\", \n  \"ovirt_hosts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts.py\", \n  \"ovirt_hosts_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts_facts.py\", \n  \"ovirt_hosts_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts_facts.py\", \n  \"ovirt_mac_pools\": \"lib/ansible/modules/cloud/ovirt/ovirt_mac_pools.py\", \n  \"ovirt_mac_pools module\": \"lib/ansible/modules/cloud/ovirt/ovirt_mac_pools.py\", \n  \"ovirt_networks\": \"lib/ansible/modules/cloud/ovirt/ovirt_networks.py\", \n  \"ovirt_networks module\": \"lib/ansible/modules/cloud/ovirt/ovirt_networks.py\", \n  \"ovirt_networks_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_networks_facts.py\", \n  \"ovirt_networks_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_networks_facts.py\", \n  \"ovirt_nics\": \"lib/ansible/modules/cloud/ovirt/ovirt_nics.py\", \n  \"ovirt_nics module\": \"lib/ansible/modules/cloud/ovirt/ovirt_nics.py\", \n  \"ovirt_nics_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_nics_facts.py\", \n  \"ovirt_nics_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_nics_facts.py\", \n  \"ovirt_permissions\": \"lib/ansible/modules/cloud/ovirt/ovirt_permissions.py\", \n  \"ovirt_permissions module\": \"lib/ansible/modules/cloud/ovirt/ovirt_permissions.py\", \n  \"ovirt_permissions_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_permissions_facts.py\", \n  \"ovirt_permissions_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_permissions_facts.py\", \n  \"ovirt_quotas\": \"lib/ansible/modules/cloud/ovirt/ovirt_quotas.py\", \n  \"ovirt_quotas module\": \"lib/ansible/modules/cloud/ovirt/ovirt_quotas.py\", \n  \"ovirt_quotas_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_quotas_facts.py\", \n  \"ovirt_quotas_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_quotas_facts.py\", \n  \"ovirt_scheduling_policies_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_scheduling_policies_facts.py\", \n  \"ovirt_scheduling_policies_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_scheduling_policies_facts.py\", \n  \"ovirt_snapshots\": \"lib/ansible/modules/cloud/ovirt/ovirt_snapshots.py\", \n  \"ovirt_snapshots module\": \"lib/ansible/modules/cloud/ovirt/ovirt_snapshots.py\", \n  \"ovirt_snapshots_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_snapshots_facts.py\", \n  \"ovirt_snapshots_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_snapshots_facts.py\", \n  \"ovirt_storage_connections\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_connections.py\", \n  \"ovirt_storage_connections module\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_connections.py\", \n  \"ovirt_storage_domains\": [\n    \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains.py\"\n  ], \n  \"ovirt_storage_domains module\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains.py\", \n  \"ovirt_storage_domains_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains_facts.py\", \n  \"ovirt_storage_domains_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_domains_facts.py\", \n  \"ovirt_storage_templates_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_templates_facts.py\", \n  \"ovirt_storage_templates_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_templates_facts.py\", \n  \"ovirt_storage_vms_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_vms_facts.py\", \n  \"ovirt_storage_vms_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_storage_vms_facts.py\", \n  \"ovirt_tags\": [\n    \"lib/ansible/modules/cloud/ovirt/ovirt_tags.py\"\n  ], \n  \"ovirt_tags module\": \"lib/ansible/modules/cloud/ovirt/ovirt_tags.py\", \n  \"ovirt_tags_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_tags_facts.py\", \n  \"ovirt_tags_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_tags_facts.py\", \n  \"ovirt_template module\": [], \n  \"ovirt_templates\": [\n    \"lib/ansible/modules/cloud/ovirt/ovirt_templates.py\"\n  ], \n  \"ovirt_templates module\": \"lib/ansible/modules/cloud/ovirt/ovirt_templates.py\", \n  \"ovirt_templates_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_templates_facts.py\", \n  \"ovirt_templates_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_templates_facts.py\", \n  \"ovirt_users\": \"lib/ansible/modules/cloud/ovirt/ovirt_users.py\", \n  \"ovirt_users module\": \"lib/ansible/modules/cloud/ovirt/ovirt_users.py\", \n  \"ovirt_users_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_users_facts.py\", \n  \"ovirt_users_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_users_facts.py\", \n  \"ovirt_vmpools\": \"lib/ansible/modules/cloud/ovirt/ovirt_vmpools.py\", \n  \"ovirt_vmpools module\": \"lib/ansible/modules/cloud/ovirt/ovirt_vmpools.py\", \n  \"ovirt_vmpools_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_vmpools_facts.py\", \n  \"ovirt_vmpools_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_vmpools_facts.py\", \n  \"ovirt_vms\": [\n    \"lib/ansible/modules/cloud/ovirt/ovirt_vms.py\"\n  ], \n  \"ovirt_vms module\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms.py\", \n  \"ovirt_vms.py\": [\n    \"lib/ansible/modules/cloud/ovirt/ovirt_vms.py\"\n  ], \n  \"ovirt_vms_facts\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms_facts.py\", \n  \"ovirt_vms_facts module\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms_facts.py\", \n  \"ovn\": [], \n  \"own module for lun_mapping\": [], \n  \"pacakge\": [], \n  \"pacemaker_cluster\": [\n    \"lib/ansible/modules/clustering/pacemaker_cluster.py\"\n  ], \n  \"pacemaker_cluster module\": [\n    \"lib/ansible/modules/clustering/pacemaker_cluster.py\"\n  ], \n  \"pacemaker_cluster module.\": [\n    \"lib/ansible/modules/clustering/pacemaker_cluster.py\"\n  ], \n  \"package\": [\n    \"lib/ansible/modules/packaging/os/package.py\"\n  ], \n  \"package and service modules\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"package module\": [\n    \"lib/ansible/modules/packaging/os/package.py\"\n  ], \n  \"packaging/language/bower\": \"lib/ansible/modules/packaging/language/bower.py\", \n  \"packaging/language/bower.py\": \"lib/ansible/modules/packaging/language/bower.py\", \n  \"packaging/language/bundler\": \"lib/ansible/modules/packaging/language/bundler.py\", \n  \"packaging/language/bundler.py\": \"lib/ansible/modules/packaging/language/bundler.py\", \n  \"packaging/language/composer\": \"lib/ansible/modules/packaging/language/composer.py\", \n  \"packaging/language/composer.py\": \"lib/ansible/modules/packaging/language/composer.py\", \n  \"packaging/language/cpanm\": \"lib/ansible/modules/packaging/language/cpanm.py\", \n  \"packaging/language/cpanm.py\": \"lib/ansible/modules/packaging/language/cpanm.py\", \n  \"packaging/language/easy_install\": \"lib/ansible/modules/packaging/language/easy_install.py\", \n  \"packaging/language/easy_install.py\": \"lib/ansible/modules/packaging/language/easy_install.py\", \n  \"packaging/language/gem\": \"lib/ansible/modules/packaging/language/gem.py\", \n  \"packaging/language/gem.py\": \"lib/ansible/modules/packaging/language/gem.py\", \n  \"packaging/language/maven_artifact\": [\n    \"lib/ansible/modules/packaging/language/maven_artifact.py\"\n  ], \n  \"packaging/language/maven_artifact.py\": \"lib/ansible/modules/packaging/language/maven_artifact.py\", \n  \"packaging/language/npm\": \"lib/ansible/modules/packaging/language/npm.py\", \n  \"packaging/language/npm.py\": \"lib/ansible/modules/packaging/language/npm.py\", \n  \"packaging/language/pear\": \"lib/ansible/modules/packaging/language/pear.py\", \n  \"packaging/language/pear.py\": \"lib/ansible/modules/packaging/language/pear.py\", \n  \"packaging/language/pip\": \"lib/ansible/modules/packaging/language/pip.py\", \n  \"packaging/language/pip.py\": \"lib/ansible/modules/packaging/language/pip.py\", \n  \"packaging/os/apk\": \"lib/ansible/modules/packaging/os/apk.py\", \n  \"packaging/os/apk.py\": \"lib/ansible/modules/packaging/os/apk.py\", \n  \"packaging/os/apt\": \"lib/ansible/modules/packaging/os/apt.py\", \n  \"packaging/os/apt.py\": \"lib/ansible/modules/packaging/os/apt.py\", \n  \"packaging/os/apt_key\": \"lib/ansible/modules/packaging/os/apt_key.py\", \n  \"packaging/os/apt_key.py\": \"lib/ansible/modules/packaging/os/apt_key.py\", \n  \"packaging/os/apt_repository\": \"lib/ansible/modules/packaging/os/apt_repository.py\", \n  \"packaging/os/apt_repository.py\": \"lib/ansible/modules/packaging/os/apt_repository.py\", \n  \"packaging/os/apt_rpm\": \"lib/ansible/modules/packaging/os/apt_rpm.py\", \n  \"packaging/os/apt_rpm.py\": \"lib/ansible/modules/packaging/os/apt_rpm.py\", \n  \"packaging/os/dnf\": \"lib/ansible/modules/packaging/os/dnf.py\", \n  \"packaging/os/dnf.py\": \"lib/ansible/modules/packaging/os/dnf.py\", \n  \"packaging/os/dpkg_selections\": \"lib/ansible/modules/packaging/os/dpkg_selections.py\", \n  \"packaging/os/dpkg_selections.py\": \"lib/ansible/modules/packaging/os/dpkg_selections.py\", \n  \"packaging/os/homebrew\": \"lib/ansible/modules/packaging/os/homebrew.py\", \n  \"packaging/os/homebrew.py\": [\n    \"lib/ansible/modules/packaging/os/homebrew.py\"\n  ], \n  \"packaging/os/homebrew_cask\": \"lib/ansible/modules/packaging/os/homebrew_cask.py\", \n  \"packaging/os/homebrew_cask.py\": \"lib/ansible/modules/packaging/os/homebrew_cask.py\", \n  \"packaging/os/homebrew_tap\": \"lib/ansible/modules/packaging/os/homebrew_tap.py\", \n  \"packaging/os/homebrew_tap.py\": \"lib/ansible/modules/packaging/os/homebrew_tap.py\", \n  \"packaging/os/layman\": \"lib/ansible/modules/packaging/os/layman.py\", \n  \"packaging/os/layman.py\": \"lib/ansible/modules/packaging/os/layman.py\", \n  \"packaging/os/macports\": \"lib/ansible/modules/packaging/os/macports.py\", \n  \"packaging/os/macports.py\": \"lib/ansible/modules/packaging/os/macports.py\", \n  \"packaging/os/openbsd_pkg\": \"lib/ansible/modules/packaging/os/openbsd_pkg.py\", \n  \"packaging/os/openbsd_pkg.py\": \"lib/ansible/modules/packaging/os/openbsd_pkg.py\", \n  \"packaging/os/opkg\": \"lib/ansible/modules/packaging/os/opkg.py\", \n  \"packaging/os/opkg.py\": \"lib/ansible/modules/packaging/os/opkg.py\", \n  \"packaging/os/package\": \"lib/ansible/modules/packaging/os/package.py\", \n  \"packaging/os/package.py\": \"lib/ansible/modules/packaging/os/package.py\", \n  \"packaging/os/pacman\": \"lib/ansible/modules/packaging/os/pacman.py\", \n  \"packaging/os/pacman.py\": \"lib/ansible/modules/packaging/os/pacman.py\", \n  \"packaging/os/pkg5\": \"lib/ansible/modules/packaging/os/pkg5.py\", \n  \"packaging/os/pkg5.py\": \"lib/ansible/modules/packaging/os/pkg5.py\", \n  \"packaging/os/pkg5_publisher\": \"lib/ansible/modules/packaging/os/pkg5_publisher.py\", \n  \"packaging/os/pkg5_publisher.py\": \"lib/ansible/modules/packaging/os/pkg5_publisher.py\", \n  \"packaging/os/pkgin\": \"lib/ansible/modules/packaging/os/pkgin.py\", \n  \"packaging/os/pkgin.py\": \"lib/ansible/modules/packaging/os/pkgin.py\", \n  \"packaging/os/pkgng\": \"lib/ansible/modules/packaging/os/pkgng.py\", \n  \"packaging/os/pkgng.py\": \"lib/ansible/modules/packaging/os/pkgng.py\", \n  \"packaging/os/pkgutil\": \"lib/ansible/modules/packaging/os/pkgutil.py\", \n  \"packaging/os/pkgutil.py\": \"lib/ansible/modules/packaging/os/pkgutil.py\", \n  \"packaging/os/portage\": \"lib/ansible/modules/packaging/os/portage.py\", \n  \"packaging/os/portage.py\": \"lib/ansible/modules/packaging/os/portage.py\", \n  \"packaging/os/portinstall\": \"lib/ansible/modules/packaging/os/portinstall.py\", \n  \"packaging/os/portinstall.py\": \"lib/ansible/modules/packaging/os/portinstall.py\", \n  \"packaging/os/pulp_repo\": \"lib/ansible/modules/packaging/os/pulp_repo.py\", \n  \"packaging/os/pulp_repo.py\": \"lib/ansible/modules/packaging/os/pulp_repo.py\", \n  \"packaging/os/redhat_subscription\": \"lib/ansible/modules/packaging/os/redhat_subscription.py\", \n  \"packaging/os/redhat_subscription.py\": \"lib/ansible/modules/packaging/os/redhat_subscription.py\", \n  \"packaging/os/rhn_channel\": \"lib/ansible/modules/packaging/os/rhn_channel.py\", \n  \"packaging/os/rhn_channel.py\": \"lib/ansible/modules/packaging/os/rhn_channel.py\", \n  \"packaging/os/rhn_register\": \"lib/ansible/modules/packaging/os/rhn_register.py\", \n  \"packaging/os/rhn_register.py\": \"lib/ansible/modules/packaging/os/rhn_register.py\", \n  \"packaging/os/rpm_key\": \"lib/ansible/modules/packaging/os/rpm_key.py\", \n  \"packaging/os/rpm_key.py\": \"lib/ansible/modules/packaging/os/rpm_key.py\", \n  \"packaging/os/slackpkg\": \"lib/ansible/modules/packaging/os/slackpkg.py\", \n  \"packaging/os/slackpkg.py\": \"lib/ansible/modules/packaging/os/slackpkg.py\", \n  \"packaging/os/sorcery\": \"lib/ansible/modules/packaging/os/sorcery.py\", \n  \"packaging/os/sorcery.py\": \"lib/ansible/modules/packaging/os/sorcery.py\", \n  \"packaging/os/svr4pkg\": \"lib/ansible/modules/packaging/os/svr4pkg.py\", \n  \"packaging/os/svr4pkg.py\": \"lib/ansible/modules/packaging/os/svr4pkg.py\", \n  \"packaging/os/swdepot\": \"lib/ansible/modules/packaging/os/swdepot.py\", \n  \"packaging/os/swdepot.py\": \"lib/ansible/modules/packaging/os/swdepot.py\", \n  \"packaging/os/swupd\": \"lib/ansible/modules/packaging/os/swupd.py\", \n  \"packaging/os/swupd.py\": \"lib/ansible/modules/packaging/os/swupd.py\", \n  \"packaging/os/urpmi\": \"lib/ansible/modules/packaging/os/urpmi.py\", \n  \"packaging/os/urpmi.py\": \"lib/ansible/modules/packaging/os/urpmi.py\", \n  \"packaging/os/xbps\": \"lib/ansible/modules/packaging/os/xbps.py\", \n  \"packaging/os/xbps.py\": \"lib/ansible/modules/packaging/os/xbps.py\", \n  \"packaging/os/yum\": \"lib/ansible/modules/packaging/os/yum.py\", \n  \"packaging/os/yum.py\": \"lib/ansible/modules/packaging/os/yum.py\", \n  \"packaging/os/yum_repository\": \"lib/ansible/modules/packaging/os/yum_repository.py\", \n  \"packaging/os/yum_repository.py\": \"lib/ansible/modules/packaging/os/yum_repository.py\", \n  \"packaging/os/zypper\": \"lib/ansible/modules/packaging/os/zypper.py\", \n  \"packaging/os/zypper.py\": \"lib/ansible/modules/packaging/os/zypper.py\", \n  \"packaging/os/zypper_repository\": \"lib/ansible/modules/packaging/os/zypper_repository.py\", \n  \"packaging/os/zypper_repository.py\": \"lib/ansible/modules/packaging/os/zypper_repository.py\", \n  \"packet_device\": \"lib/ansible/modules/cloud/packet/packet_device.py\", \n  \"packet_device module\": \"lib/ansible/modules/cloud/packet/packet_device.py\", \n  \"packet_sshkey\": \"lib/ansible/modules/cloud/packet/packet_sshkey.py\", \n  \"packet_sshkey module\": \"lib/ansible/modules/cloud/packet/packet_sshkey.py\", \n  \"pacman\": \"lib/ansible/modules/packaging/os/pacman.py\", \n  \"pacman module\": \"lib/ansible/modules/packaging/os/pacman.py\", \n  \"pagerduty\": \"lib/ansible/modules/monitoring/pagerduty.py\", \n  \"pagerduty module\": \"lib/ansible/modules/monitoring/pagerduty.py\", \n  \"pagerduty_alert\": \"lib/ansible/modules/monitoring/pagerduty_alert.py\", \n  \"pagerduty_alert module\": \"lib/ansible/modules/monitoring/pagerduty_alert.py\", \n  \"pam_limits\": [\n    \"lib/ansible/modules/system/pam_limits.py\"\n  ], \n  \"pam_limits module\": \"lib/ansible/modules/system/pam_limits.py\", \n  \"pamd\": [\n    \"lib/ansible/modules/system/pamd.py\"\n  ], \n  \"pamd module\": [\n    \"lib/ansible/modules/system/pamd.py\"\n  ], \n  \"panos_admin\": \"lib/ansible/modules/network/panos/panos_admin.py\", \n  \"panos_admin module\": \"lib/ansible/modules/network/panos/panos_admin.py\", \n  \"panos_admpwd\": \"lib/ansible/modules/network/panos/panos_admpwd.py\", \n  \"panos_admpwd module\": \"lib/ansible/modules/network/panos/panos_admpwd.py\", \n  \"panos_cert_gen_ssh\": \"lib/ansible/modules/network/panos/panos_cert_gen_ssh.py\", \n  \"panos_cert_gen_ssh module\": \"lib/ansible/modules/network/panos/panos_cert_gen_ssh.py\", \n  \"panos_check\": \"lib/ansible/modules/network/panos/panos_check.py\", \n  \"panos_check module\": \"lib/ansible/modules/network/panos/panos_check.py\", \n  \"panos_commit\": \"lib/ansible/modules/network/panos/panos_commit.py\", \n  \"panos_commit module\": \"lib/ansible/modules/network/panos/panos_commit.py\", \n  \"panos_dag\": \"lib/ansible/modules/network/panos/panos_dag.py\", \n  \"panos_dag module\": \"lib/ansible/modules/network/panos/panos_dag.py\", \n  \"panos_import\": \"lib/ansible/modules/network/panos/panos_import.py\", \n  \"panos_import module\": \"lib/ansible/modules/network/panos/panos_import.py\", \n  \"panos_interface\": \"lib/ansible/modules/network/panos/panos_interface.py\", \n  \"panos_interface module\": \"lib/ansible/modules/network/panos/panos_interface.py\", \n  \"panos_lic\": \"lib/ansible/modules/network/panos/panos_lic.py\", \n  \"panos_lic module\": \"lib/ansible/modules/network/panos/panos_lic.py\", \n  \"panos_loadcfg\": \"lib/ansible/modules/network/panos/panos_loadcfg.py\", \n  \"panos_loadcfg module\": \"lib/ansible/modules/network/panos/panos_loadcfg.py\", \n  \"panos_mgtconfig\": \"lib/ansible/modules/network/panos/panos_mgtconfig.py\", \n  \"panos_mgtconfig module\": \"lib/ansible/modules/network/panos/panos_mgtconfig.py\", \n  \"panos_nat_policy\": \"lib/ansible/modules/network/panos/panos_nat_policy.py\", \n  \"panos_nat_policy module\": \"lib/ansible/modules/network/panos/panos_nat_policy.py\", \n  \"panos_nat_rule\": \"lib/ansible/modules/network/panos/panos_nat_rule.py\", \n  \"panos_nat_rule module\": \"lib/ansible/modules/network/panos/panos_nat_rule.py\", \n  \"panos_object\": \"lib/ansible/modules/network/panos/panos_object.py\", \n  \"panos_object module\": \"lib/ansible/modules/network/panos/panos_object.py\", \n  \"panos_pg\": \"lib/ansible/modules/network/panos/panos_pg.py\", \n  \"panos_pg module\": \"lib/ansible/modules/network/panos/panos_pg.py\", \n  \"panos_restart\": \"lib/ansible/modules/network/panos/panos_restart.py\", \n  \"panos_restart module\": \"lib/ansible/modules/network/panos/panos_restart.py\", \n  \"panos_sag\": \"lib/ansible/modules/network/panos/panos_sag.py\", \n  \"panos_sag module\": \"lib/ansible/modules/network/panos/panos_sag.py\", \n  \"panos_security_policy\": \"lib/ansible/modules/network/panos/panos_security_policy.py\", \n  \"panos_security_policy module\": \"lib/ansible/modules/network/panos/panos_security_policy.py\", \n  \"panos_security_rule\": \"lib/ansible/modules/network/panos/panos_security_rule.py\", \n  \"panos_security_rule module\": \"lib/ansible/modules/network/panos/panos_security_rule.py\", \n  \"paramiko connection plugin\": [\n    \"lib/ansible/plugins/connection\"\n  ], \n  \"paramiko pty\": [], \n  \"parse_cli\": [], \n  \"parsing/quoting.py\": [\n    \"lib/ansible/parsing/quoting.py\"\n  ], \n  \"parted\": [\n    \"lib/ansible/modules/system/parted.py\"\n  ], \n  \"parted module\": [\n    \"lib/ansible/modules/system/parted.py\"\n  ], \n  \"password_hash\": [], \n  \"passwordstore lookup\": [\n    \"lib/ansible/plugins/lookup/passwordstore.py\"\n  ], \n  \"passwordstore lookup plugin\": [\n    \"lib/ansible/plugins/lookup/passwordstore.py\"\n  ], \n  \"patch\": \"lib/ansible/modules/files/patch.py\", \n  \"patch module\": [\n    \"lib/ansible/modules/files/patch.py\"\n  ], \n  \"pause\": \"lib/ansible/modules/utilities/logic/pause.py\", \n  \"pause module\": [\n    \"lib/ansible/modules/utilities/logic/pause.py\"\n  ], \n  \"pear\": \"lib/ansible/modules/packaging/language/pear.py\", \n  \"pear module\": \"lib/ansible/modules/packaging/language/pear.py\", \n  \"pecl\": [], \n  \"ping\": [\n    \"lib/ansible/modules/system/ping.py\"\n  ], \n  \"ping module\": \"lib/ansible/modules/system/ping.py\", \n  \"ping, playbook\": [\n    \"lib/ansible/modules/system/ping.py\"\n  ], \n  \"pingdom\": \"lib/ansible/modules/monitoring/pingdom.py\", \n  \"pingdom module\": [\n    \"lib/ansible/modules/monitoring/pingdom.py\"\n  ], \n  \"pip\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \"pip module\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \"pip_module\": [\n    \"lib/ansible/modules/packaging/language/pip.py\"\n  ], \n  \"pipelining\": [], \n  \"pkg5\": \"lib/ansible/modules/packaging/os/pkg5.py\", \n  \"pkg5 module\": [\n    \"lib/ansible/modules/packaging/os/pkg5.py\"\n  ], \n  \"pkg5_publisher\": \"lib/ansible/modules/packaging/os/pkg5_publisher.py\", \n  \"pkg5_publisher module\": \"lib/ansible/modules/packaging/os/pkg5_publisher.py\", \n  \"pkgin\": \"lib/ansible/modules/packaging/os/pkgin.py\", \n  \"pkgin module\": \"lib/ansible/modules/packaging/os/pkgin.py\", \n  \"pkgng\": [\n    \"lib/ansible/modules/packaging/os/pkgng.py\"\n  ], \n  \"pkgng module\": \"lib/ansible/modules/packaging/os/pkgng.py\", \n  \"pkgutil\": \"lib/ansible/modules/packaging/os/pkgutil.py\", \n  \"pkgutil module\": \"lib/ansible/modules/packaging/os/pkgutil.py\", \n  \"play_context.py\": [\n    \"lib/ansible/playbook/play_context.py\"\n  ], \n  \"playbook\": [], \n  \"playbook, vars_prompt\": [\n    \"lib/ansible/cli/playbook.py\"\n  ], \n  \"playbooks\": [], \n  \"playbooks and roles\": [\n    \"lib/ansible/playbook/role\"\n  ], \n  \"plugin/cache/redis\": [], \n  \"plugin/module: copy\": [\n    \"lib/ansible/modules/files/copy.py\"\n  ], \n  \"plugins.shell.ShellBase.mkdtemp\": [], \n  \"plugins/action/synchronize.py\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"plugins/connection/network_cli\": [\n    \"lib/ansible/plugins/connection/network_cli.py\"\n  ], \n  \"plugins/connection/ssh\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"plugins/connection/ssh.py\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"plugins/dig\": [\n    \"lib/ansible/plugins/lookup/dig.py\"\n  ], \n  \"plugins/filter/core.py\": [\n    \"lib/ansible/plugins/filter/core.py\"\n  ], \n  \"plugins/inventory/yaml\": [\n    \"lib/ansible/plugins/inventory/yaml.py\"\n  ], \n  \"plugins/lookup/dict.py\": [\n    \"lib/ansible/plugins/lookup/dict.py\"\n  ], \n  \"plugins/strategy/free\": [\n    \"lib/ansible/plugins/strategy/free.py\"\n  ], \n  \"plugins/terminal/nxos.py\\nplugins/terminal/ios.py\": [\n    \"lib/ansible/plugins/terminal/ios.py\", \n    \"lib/ansible/plugins/terminal/nxos.py\"\n  ], \n  \"pn_cluster\": \"lib/ansible/modules/network/netvisor/pn_cluster.py\", \n  \"pn_cluster module\": \"lib/ansible/modules/network/netvisor/pn_cluster.py\", \n  \"pn_ospf\": \"lib/ansible/modules/network/netvisor/pn_ospf.py\", \n  \"pn_ospf module\": \"lib/ansible/modules/network/netvisor/pn_ospf.py\", \n  \"pn_ospfarea\": \"lib/ansible/modules/network/netvisor/pn_ospfarea.py\", \n  \"pn_ospfarea module\": \"lib/ansible/modules/network/netvisor/pn_ospfarea.py\", \n  \"pn_show\": \"lib/ansible/modules/network/netvisor/pn_show.py\", \n  \"pn_show module\": \"lib/ansible/modules/network/netvisor/pn_show.py\", \n  \"pn_trunk\": \"lib/ansible/modules/network/netvisor/pn_trunk.py\", \n  \"pn_trunk module\": \"lib/ansible/modules/network/netvisor/pn_trunk.py\", \n  \"pn_vlag\": \"lib/ansible/modules/network/netvisor/pn_vlag.py\", \n  \"pn_vlag module\": \"lib/ansible/modules/network/netvisor/pn_vlag.py\", \n  \"pn_vlan\": \"lib/ansible/modules/network/netvisor/pn_vlan.py\", \n  \"pn_vlan module\": \"lib/ansible/modules/network/netvisor/pn_vlan.py\", \n  \"pn_vrouter\": \"lib/ansible/modules/network/netvisor/pn_vrouter.py\", \n  \"pn_vrouter module\": \"lib/ansible/modules/network/netvisor/pn_vrouter.py\", \n  \"pn_vrouterbgp\": \"lib/ansible/modules/network/netvisor/pn_vrouterbgp.py\", \n  \"pn_vrouterbgp module\": \"lib/ansible/modules/network/netvisor/pn_vrouterbgp.py\", \n  \"pn_vrouterif\": \"lib/ansible/modules/network/netvisor/pn_vrouterif.py\", \n  \"pn_vrouterif module\": \"lib/ansible/modules/network/netvisor/pn_vrouterif.py\", \n  \"pn_vrouterlbif\": \"lib/ansible/modules/network/netvisor/pn_vrouterlbif.py\", \n  \"pn_vrouterlbif module\": \"lib/ansible/modules/network/netvisor/pn_vrouterlbif.py\", \n  \"portage\": \"lib/ansible/modules/packaging/os/portage.py\", \n  \"portage module\": \"lib/ansible/modules/packaging/os/portage.py\", \n  \"portinstall\": \"lib/ansible/modules/packaging/os/portinstall.py\", \n  \"portinstall module\": \"lib/ansible/modules/packaging/os/portinstall.py\", \n  \"postgredsql_privs\": [], \n  \"postgres_user module\": [], \n  \"postgresql_db\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_db.py\"\n  ], \n  \"postgresql_db module\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_db.py\"\n  ], \n  \"postgresql_ext\": \"lib/ansible/modules/database/postgresql/postgresql_ext.py\", \n  \"postgresql_ext module\": \"lib/ansible/modules/database/postgresql/postgresql_ext.py\", \n  \"postgresql_lang\": \"lib/ansible/modules/database/postgresql/postgresql_lang.py\", \n  \"postgresql_lang module\": \"lib/ansible/modules/database/postgresql/postgresql_lang.py\", \n  \"postgresql_privs\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_privs.py\"\n  ], \n  \"postgresql_privs module\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_privs.py\"\n  ], \n  \"postgresql_schema\": \"lib/ansible/modules/database/postgresql/postgresql_schema.py\", \n  \"postgresql_schema module\": \"lib/ansible/modules/database/postgresql/postgresql_schema.py\", \n  \"postgresql_user\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_user.py\"\n  ], \n  \"postgresql_user module\": [\n    \"lib/ansible/modules/database/postgresql/postgresql_user.py\"\n  ], \n  \"powershell over ssh connection\": [\n    \"lib/ansible/plugins/connection\"\n  ], \n  \"pritunl_user.py\": [], \n  \"profitbricks\": \"lib/ansible/modules/cloud/profitbricks/profitbricks.py\", \n  \"profitbricks module\": \"lib/ansible/modules/cloud/profitbricks/profitbricks.py\", \n  \"profitbricks_datacenter\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_datacenter.py\", \n  \"profitbricks_datacenter module\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_datacenter.py\", \n  \"profitbricks_nic\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_nic.py\", \n  \"profitbricks_nic module\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_nic.py\", \n  \"profitbricks_volume\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume.py\", \n  \"profitbricks_volume module\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume.py\", \n  \"profitbricks_volume_attachments\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume_attachments.py\", \n  \"profitbricks_volume_attachments module\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_volume_attachments.py\", \n  \"proxmox\": [\n    \"lib/ansible/modules/cloud/misc/proxmox.py\"\n  ], \n  \"proxmox module\": \"lib/ansible/modules/cloud/misc/proxmox.py\", \n  \"proxmox_kvm\": [\n    \"lib/ansible/modules/cloud/misc/proxmox_kvm.py\"\n  ], \n  \"proxmox_kvm module\": \"lib/ansible/modules/cloud/misc/proxmox_kvm.py\", \n  \"proxmox_template\": \"lib/ansible/modules/cloud/misc/proxmox_template.py\", \n  \"proxmox_template module\": \"lib/ansible/modules/cloud/misc/proxmox_template.py\", \n  \"proxysql_backend_servers\": \"lib/ansible/modules/database/proxysql/proxysql_backend_servers.py\", \n  \"proxysql_backend_servers module\": \"lib/ansible/modules/database/proxysql/proxysql_backend_servers.py\", \n  \"proxysql_global_variables\": \"lib/ansible/modules/database/proxysql/proxysql_global_variables.py\", \n  \"proxysql_global_variables module\": \"lib/ansible/modules/database/proxysql/proxysql_global_variables.py\", \n  \"proxysql_manage_config\": \"lib/ansible/modules/database/proxysql/proxysql_manage_config.py\", \n  \"proxysql_manage_config module\": \"lib/ansible/modules/database/proxysql/proxysql_manage_config.py\", \n  \"proxysql_mysql_users\": \"lib/ansible/modules/database/proxysql/proxysql_mysql_users.py\", \n  \"proxysql_mysql_users module\": \"lib/ansible/modules/database/proxysql/proxysql_mysql_users.py\", \n  \"proxysql_query_rules\": \"lib/ansible/modules/database/proxysql/proxysql_query_rules.py\", \n  \"proxysql_query_rules module\": \"lib/ansible/modules/database/proxysql/proxysql_query_rules.py\", \n  \"proxysql_replication_hostgroups\": \"lib/ansible/modules/database/proxysql/proxysql_replication_hostgroups.py\", \n  \"proxysql_replication_hostgroups module\": \"lib/ansible/modules/database/proxysql/proxysql_replication_hostgroups.py\", \n  \"proxysql_scheduler\": \"lib/ansible/modules/database/proxysql/proxysql_scheduler.py\", \n  \"proxysql_scheduler module\": \"lib/ansible/modules/database/proxysql/proxysql_scheduler.py\", \n  \"pubnub_blocks\": \"lib/ansible/modules/cloud/pubnub/pubnub_blocks.py\", \n  \"pubnub_blocks module\": \"lib/ansible/modules/cloud/pubnub/pubnub_blocks.py\", \n  \"pull\": [\n    \"lib/ansible/cli/pull.py\"\n  ], \n  \"pulp_repo\": \"lib/ansible/modules/packaging/os/pulp_repo.py\", \n  \"pulp_repo module\": \"lib/ansible/modules/packaging/os/pulp_repo.py\", \n  \"puppet\": \"lib/ansible/modules/system/puppet.py\", \n  \"puppet module\": [\n    \"lib/ansible/modules/system/puppet.py\"\n  ], \n  \"purefa_hg\": \"lib/ansible/modules/storage/purestorage/purefa_hg.py\", \n  \"purefa_hg module\": \"lib/ansible/modules/storage/purestorage/purefa_hg.py\", \n  \"purefa_host\": \"lib/ansible/modules/storage/purestorage/purefa_host.py\", \n  \"purefa_host module\": \"lib/ansible/modules/storage/purestorage/purefa_host.py\", \n  \"purefa_pg\": \"lib/ansible/modules/storage/purestorage/purefa_pg.py\", \n  \"purefa_pg module\": \"lib/ansible/modules/storage/purestorage/purefa_pg.py\", \n  \"purefa_snap\": \"lib/ansible/modules/storage/purestorage/purefa_snap.py\", \n  \"purefa_snap module\": \"lib/ansible/modules/storage/purestorage/purefa_snap.py\", \n  \"purefa_volume\": \"lib/ansible/modules/storage/purestorage/purefa_volume.py\", \n  \"purefa_volume module\": \"lib/ansible/modules/storage/purestorage/purefa_volume.py\", \n  \"pushbullet\": \"lib/ansible/modules/notification/pushbullet.py\", \n  \"pushbullet module\": \"lib/ansible/modules/notification/pushbullet.py\", \n  \"pushover\": \"lib/ansible/modules/notification/pushover.py\", \n  \"pushover module\": \"lib/ansible/modules/notification/pushover.py\", \n  \"rabbitmq_binding\": \"lib/ansible/modules/messaging/rabbitmq_binding.py\", \n  \"rabbitmq_binding module\": \"lib/ansible/modules/messaging/rabbitmq_binding.py\", \n  \"rabbitmq_exchange\": [\n    \"lib/ansible/modules/messaging/rabbitmq_exchange.py\"\n  ], \n  \"rabbitmq_exchange module\": \"lib/ansible/modules/messaging/rabbitmq_exchange.py\", \n  \"rabbitmq_parameter\": \"lib/ansible/modules/messaging/rabbitmq_parameter.py\", \n  \"rabbitmq_parameter module\": \"lib/ansible/modules/messaging/rabbitmq_parameter.py\", \n  \"rabbitmq_plugin\": [\n    \"lib/ansible/modules/messaging/rabbitmq_plugin.py\"\n  ], \n  \"rabbitmq_plugin  module\": [\n    \"lib/ansible/modules/messaging/rabbitmq_plugin.py\"\n  ], \n  \"rabbitmq_plugin module\": \"lib/ansible/modules/messaging/rabbitmq_plugin.py\", \n  \"rabbitmq_policy\": [\n    \"lib/ansible/modules/messaging/rabbitmq_policy.py\"\n  ], \n  \"rabbitmq_policy module\": [\n    \"lib/ansible/modules/messaging/rabbitmq_policy.py\"\n  ], \n  \"rabbitmq_queue\": [\n    \"lib/ansible/modules/messaging/rabbitmq_queue.py\"\n  ], \n  \"rabbitmq_queue module\": \"lib/ansible/modules/messaging/rabbitmq_queue.py\", \n  \"rabbitmq_user\": [\n    \"lib/ansible/modules/messaging/rabbitmq_user.py\"\n  ], \n  \"rabbitmq_user module\": [\n    \"lib/ansible/modules/messaging/rabbitmq_user.py\"\n  ], \n  \"rabbitmq_user, possibly others\": [\n    \"lib/ansible/modules/messaging/rabbitmq_user.py\"\n  ], \n  \"rabbitmq_vhost\": \"lib/ansible/modules/messaging/rabbitmq_vhost.py\", \n  \"rabbitmq_vhost module\": \"lib/ansible/modules/messaging/rabbitmq_vhost.py\", \n  \"raw\": [\n    \"lib/ansible/modules/commands/raw.py\"\n  ], \n  \"raw module\": [\n    \"lib/ansible/modules/commands/raw.py\"\n  ], \n  \"rax\": [\n    \"lib/ansible/modules/cloud/rackspace/rax.py\"\n  ], \n  \"rax module\": [\n    \"lib/ansible/modules/cloud/rackspace/rax.py\"\n  ], \n  \"rax_cbs\": \"lib/ansible/modules/cloud/rackspace/rax_cbs.py\", \n  \"rax_cbs module\": \"lib/ansible/modules/cloud/rackspace/rax_cbs.py\", \n  \"rax_cbs_attachments\": \"lib/ansible/modules/cloud/rackspace/rax_cbs_attachments.py\", \n  \"rax_cbs_attachments module\": \"lib/ansible/modules/cloud/rackspace/rax_cbs_attachments.py\", \n  \"rax_cdb\": \"lib/ansible/modules/cloud/rackspace/rax_cdb.py\", \n  \"rax_cdb module\": \"lib/ansible/modules/cloud/rackspace/rax_cdb.py\", \n  \"rax_cdb_database\": \"lib/ansible/modules/cloud/rackspace/rax_cdb_database.py\", \n  \"rax_cdb_database module\": \"lib/ansible/modules/cloud/rackspace/rax_cdb_database.py\", \n  \"rax_cdb_user\": \"lib/ansible/modules/cloud/rackspace/rax_cdb_user.py\", \n  \"rax_cdb_user module\": \"lib/ansible/modules/cloud/rackspace/rax_cdb_user.py\", \n  \"rax_clb\": \"lib/ansible/modules/cloud/rackspace/rax_clb.py\", \n  \"rax_clb module\": \"lib/ansible/modules/cloud/rackspace/rax_clb.py\", \n  \"rax_clb_nodes\": \"lib/ansible/modules/cloud/rackspace/rax_clb_nodes.py\", \n  \"rax_clb_nodes module\": \"lib/ansible/modules/cloud/rackspace/rax_clb_nodes.py\", \n  \"rax_clb_ssl\": \"lib/ansible/modules/cloud/rackspace/rax_clb_ssl.py\", \n  \"rax_clb_ssl module\": \"lib/ansible/modules/cloud/rackspace/rax_clb_ssl.py\", \n  \"rax_dns\": \"lib/ansible/modules/cloud/rackspace/rax_dns.py\", \n  \"rax_dns module\": \"lib/ansible/modules/cloud/rackspace/rax_dns.py\", \n  \"rax_dns_record\": [\n    \"lib/ansible/modules/cloud/rackspace/rax_dns_record.py\"\n  ], \n  \"rax_dns_record module\": \"lib/ansible/modules/cloud/rackspace/rax_dns_record.py\", \n  \"rax_facts\": \"lib/ansible/modules/cloud/rackspace/rax_facts.py\", \n  \"rax_facts module\": \"lib/ansible/modules/cloud/rackspace/rax_facts.py\", \n  \"rax_files\": \"lib/ansible/modules/cloud/rackspace/rax_files.py\", \n  \"rax_files module\": \"lib/ansible/modules/cloud/rackspace/rax_files.py\", \n  \"rax_files_objects\": \"lib/ansible/modules/cloud/rackspace/rax_files_objects.py\", \n  \"rax_files_objects module\": \"lib/ansible/modules/cloud/rackspace/rax_files_objects.py\", \n  \"rax_identity\": \"lib/ansible/modules/cloud/rackspace/rax_identity.py\", \n  \"rax_identity module\": \"lib/ansible/modules/cloud/rackspace/rax_identity.py\", \n  \"rax_keypair\": \"lib/ansible/modules/cloud/rackspace/rax_keypair.py\", \n  \"rax_keypair module\": \"lib/ansible/modules/cloud/rackspace/rax_keypair.py\", \n  \"rax_meta\": \"lib/ansible/modules/cloud/rackspace/rax_meta.py\", \n  \"rax_meta module\": \"lib/ansible/modules/cloud/rackspace/rax_meta.py\", \n  \"rax_mon_alarm\": \"lib/ansible/modules/cloud/rackspace/rax_mon_alarm.py\", \n  \"rax_mon_alarm module\": \"lib/ansible/modules/cloud/rackspace/rax_mon_alarm.py\", \n  \"rax_mon_check\": \"lib/ansible/modules/cloud/rackspace/rax_mon_check.py\", \n  \"rax_mon_check module\": \"lib/ansible/modules/cloud/rackspace/rax_mon_check.py\", \n  \"rax_mon_entity\": \"lib/ansible/modules/cloud/rackspace/rax_mon_entity.py\", \n  \"rax_mon_entity module\": \"lib/ansible/modules/cloud/rackspace/rax_mon_entity.py\", \n  \"rax_mon_notification\": \"lib/ansible/modules/cloud/rackspace/rax_mon_notification.py\", \n  \"rax_mon_notification module\": \"lib/ansible/modules/cloud/rackspace/rax_mon_notification.py\", \n  \"rax_mon_notification_plan\": \"lib/ansible/modules/cloud/rackspace/rax_mon_notification_plan.py\", \n  \"rax_mon_notification_plan module\": \"lib/ansible/modules/cloud/rackspace/rax_mon_notification_plan.py\", \n  \"rax_network\": \"lib/ansible/modules/cloud/rackspace/rax_network.py\", \n  \"rax_network module\": \"lib/ansible/modules/cloud/rackspace/rax_network.py\", \n  \"rax_queue\": \"lib/ansible/modules/cloud/rackspace/rax_queue.py\", \n  \"rax_queue module\": \"lib/ansible/modules/cloud/rackspace/rax_queue.py\", \n  \"rax_scaling_group\": \"lib/ansible/modules/cloud/rackspace/rax_scaling_group.py\", \n  \"rax_scaling_group module\": \"lib/ansible/modules/cloud/rackspace/rax_scaling_group.py\", \n  \"rax_scaling_policy\": \"lib/ansible/modules/cloud/rackspace/rax_scaling_policy.py\", \n  \"rax_scaling_policy module\": \"lib/ansible/modules/cloud/rackspace/rax_scaling_policy.py\", \n  \"rds\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"rds\\n[module: cloud/amazon/rds.py]\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"rds module\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"rds module (https://docs.ansible.com/ansible/rds_module.html)\": [\n    \"lib/ansible/modules/cloud/amazon/rds.py\"\n  ], \n  \"rds_param_group\": [\n    \"lib/ansible/modules/cloud/amazon/rds_param_group.py\"\n  ], \n  \"rds_param_group module\": [\n    \"lib/ansible/modules/cloud/amazon/rds_param_group.py\"\n  ], \n  \"rds_subnet_group\": [\n    \"lib/ansible/modules/cloud/amazon/rds_subnet_group.py\"\n  ], \n  \"rds_subnet_group module\": \"lib/ansible/modules/cloud/amazon/rds_subnet_group.py\", \n  \"reboot\": [], \n  \"redhat_subscription\": [\n    \"lib/ansible/modules/packaging/os/redhat_subscription.py\"\n  ], \n  \"redhat_subscription module\": [\n    \"lib/ansible/modules/packaging/os/redhat_subscription.py\"\n  ], \n  \"redis\": [\n    \"lib/ansible/modules/database/misc/redis.py\"\n  ], \n  \"redis fact caching module\": [\n    \"lib/ansible/plugins/cache/redis.py\"\n  ], \n  \"redis fact caching plugin\": [\n    \"lib/ansible/plugins/cache/redis.py\"\n  ], \n  \"redis module\": \"lib/ansible/modules/database/misc/redis.py\", \n  \"redis.py\": [\n    \"lib/ansible/modules/database/misc/redis.py\"\n  ], \n  \"redshift\": \"lib/ansible/modules/cloud/amazon/redshift.py\", \n  \"redshift module\": [\n    \"lib/ansible/modules/cloud/amazon/redshift.py\"\n  ], \n  \"redshift_facts\": \"lib/ansible/modules/cloud/amazon/redshift_facts.py\", \n  \"redshift_facts module\": \"lib/ansible/modules/cloud/amazon/redshift_facts.py\", \n  \"redshift_subnet_group\": \"lib/ansible/modules/cloud/amazon/redshift_subnet_group.py\", \n  \"redshift_subnet_group module\": \"lib/ansible/modules/cloud/amazon/redshift_subnet_group.py\", \n  \"regex_replace filter\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"regex_replace filter in raw module\": [\n    \"lib/ansible/modules/commands/raw.py\"\n  ], \n  \"register, set_fact or with_dict\": [\n    \"lib/ansible/modules/utilities/logic/set_fact.py\"\n  ], \n  \"release process\": [], \n  \"remote_management/foreman/foreman\": \"lib/ansible/modules/remote_management/foreman/foreman.py\", \n  \"remote_management/foreman/foreman.py\": \"lib/ansible/modules/remote_management/foreman/foreman.py\", \n  \"remote_management/foreman/katello\": \"lib/ansible/modules/remote_management/foreman/katello.py\", \n  \"remote_management/foreman/katello.py\": \"lib/ansible/modules/remote_management/foreman/katello.py\", \n  \"remote_management/hpilo/hpilo_boot\": \"lib/ansible/modules/remote_management/hpilo/hpilo_boot.py\", \n  \"remote_management/hpilo/hpilo_boot.py\": \"lib/ansible/modules/remote_management/hpilo/hpilo_boot.py\", \n  \"remote_management/hpilo/hpilo_facts\": \"lib/ansible/modules/remote_management/hpilo/hpilo_facts.py\", \n  \"remote_management/hpilo/hpilo_facts.py\": \"lib/ansible/modules/remote_management/hpilo/hpilo_facts.py\", \n  \"remote_management/hpilo/hponcfg\": \"lib/ansible/modules/remote_management/hpilo/hponcfg.py\", \n  \"remote_management/hpilo/hponcfg.py\": \"lib/ansible/modules/remote_management/hpilo/hponcfg.py\", \n  \"remote_management/imc/imc_rest\": \"lib/ansible/modules/remote_management/imc/imc_rest.py\", \n  \"remote_management/imc/imc_rest.py\": \"lib/ansible/modules/remote_management/imc/imc_rest.py\", \n  \"remote_management/ipmi/ipmi_boot\": \"lib/ansible/modules/remote_management/ipmi/ipmi_boot.py\", \n  \"remote_management/ipmi/ipmi_boot.py\": \"lib/ansible/modules/remote_management/ipmi/ipmi_boot.py\", \n  \"remote_management/ipmi/ipmi_power\": \"lib/ansible/modules/remote_management/ipmi/ipmi_power.py\", \n  \"remote_management/ipmi/ipmi_power.py\": \"lib/ansible/modules/remote_management/ipmi/ipmi_power.py\", \n  \"remote_management/manageiq/manageiq_provider\": \"lib/ansible/modules/remote_management/manageiq/manageiq_provider.py\", \n  \"remote_management/manageiq/manageiq_provider.py\": \"lib/ansible/modules/remote_management/manageiq/manageiq_provider.py\", \n  \"remote_management/manageiq/manageiq_tags\": \"lib/ansible/modules/remote_management/manageiq/manageiq_tags.py\", \n  \"remote_management/manageiq/manageiq_tags.py\": \"lib/ansible/modules/remote_management/manageiq/manageiq_tags.py\", \n  \"remote_management/manageiq/manageiq_user\": \"lib/ansible/modules/remote_management/manageiq/manageiq_user.py\", \n  \"remote_management/manageiq/manageiq_user.py\": \"lib/ansible/modules/remote_management/manageiq/manageiq_user.py\", \n  \"remote_management/oneview/oneview_enclosure_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_enclosure_facts.py\", \n  \"remote_management/oneview/oneview_enclosure_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_enclosure_facts.py\", \n  \"remote_management/oneview/oneview_ethernet_network\": \"lib/ansible/modules/remote_management/oneview/oneview_ethernet_network.py\", \n  \"remote_management/oneview/oneview_ethernet_network.py\": \"lib/ansible/modules/remote_management/oneview/oneview_ethernet_network.py\", \n  \"remote_management/oneview/oneview_ethernet_network_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_ethernet_network_facts.py\", \n  \"remote_management/oneview/oneview_ethernet_network_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_ethernet_network_facts.py\", \n  \"remote_management/oneview/oneview_fc_network\": \"lib/ansible/modules/remote_management/oneview/oneview_fc_network.py\", \n  \"remote_management/oneview/oneview_fc_network.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fc_network.py\", \n  \"remote_management/oneview/oneview_fc_network_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_fc_network_facts.py\", \n  \"remote_management/oneview/oneview_fc_network_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fc_network_facts.py\", \n  \"remote_management/oneview/oneview_fcoe_network\": \"lib/ansible/modules/remote_management/oneview/oneview_fcoe_network.py\", \n  \"remote_management/oneview/oneview_fcoe_network.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fcoe_network.py\", \n  \"remote_management/oneview/oneview_fcoe_network_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_fcoe_network_facts.py\", \n  \"remote_management/oneview/oneview_fcoe_network_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_fcoe_network_facts.py\", \n  \"remote_management/oneview/oneview_logical_interconnect_group\": \"lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group.py\", \n  \"remote_management/oneview/oneview_logical_interconnect_group.py\": \"lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group.py\", \n  \"remote_management/oneview/oneview_logical_interconnect_group_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group_facts.py\", \n  \"remote_management/oneview/oneview_logical_interconnect_group_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_logical_interconnect_group_facts.py\", \n  \"remote_management/oneview/oneview_network_set\": \"lib/ansible/modules/remote_management/oneview/oneview_network_set.py\", \n  \"remote_management/oneview/oneview_network_set.py\": \"lib/ansible/modules/remote_management/oneview/oneview_network_set.py\", \n  \"remote_management/oneview/oneview_network_set_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_network_set_facts.py\", \n  \"remote_management/oneview/oneview_network_set_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_network_set_facts.py\", \n  \"remote_management/oneview/oneview_san_manager\": \"lib/ansible/modules/remote_management/oneview/oneview_san_manager.py\", \n  \"remote_management/oneview/oneview_san_manager.py\": \"lib/ansible/modules/remote_management/oneview/oneview_san_manager.py\", \n  \"remote_management/oneview/oneview_san_manager_facts\": \"lib/ansible/modules/remote_management/oneview/oneview_san_manager_facts.py\", \n  \"remote_management/oneview/oneview_san_manager_facts.py\": \"lib/ansible/modules/remote_management/oneview/oneview_san_manager_facts.py\", \n  \"remote_management/stacki/stacki_host\": \"lib/ansible/modules/remote_management/stacki/stacki_host.py\", \n  \"remote_management/stacki/stacki_host.py\": \"lib/ansible/modules/remote_management/stacki/stacki_host.py\", \n  \"remote_management/wakeonlan\": \"lib/ansible/modules/remote_management/wakeonlan.py\", \n  \"remote_management/wakeonlan.py\": \"lib/ansible/modules/remote_management/wakeonlan.py\", \n  \"remote_tmp var in ansible.cfg\": [], \n  \"replace\": [\n    \"lib/ansible/modules/files/replace.py\"\n  ], \n  \"replace module\": [\n    \"lib/ansible/modules/files/replace.py\"\n  ], \n  \"restconf_config\": [], \n  \"retries\": [], \n  \"retries-until, YUM module\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"rhevm\": \"lib/ansible/modules/cloud/misc/rhevm.py\", \n  \"rhevm module\": \"lib/ansible/modules/cloud/misc/rhevm.py\", \n  \"rhn_channel\": [\n    \"lib/ansible/modules/packaging/os/rhn_channel.py\"\n  ], \n  \"rhn_channel\\nrhn_*\": [\n    \"lib/ansible/modules/packaging/os/rhn_channel.py\"\n  ], \n  \"rhn_channel module\": \"lib/ansible/modules/packaging/os/rhn_channel.py\", \n  \"rhn_register\": \"lib/ansible/modules/packaging/os/rhn_register.py\", \n  \"rhn_register module\": \"lib/ansible/modules/packaging/os/rhn_register.py\", \n  \"rhn_register.py\": [\n    \"lib/ansible/modules/packaging/os/rhn_register.py\"\n  ], \n  \"riak\": \"lib/ansible/modules/database/misc/riak.py\", \n  \"riak module\": \"lib/ansible/modules/database/misc/riak.py\", \n  \"rocketchat\": \"lib/ansible/modules/notification/rocketchat.py\", \n  \"rocketchat module\": \"lib/ansible/modules/notification/rocketchat.py\", \n  \"role\": [\n    \"lib/ansible/playbook/role\"\n  ], \n  \"role dependencies\": [\n    \"lib/ansible/playbook/role/requirement.py\"\n  ], \n  \"roles\": [\n    \"lib/ansible/playbook/role\"\n  ], \n  \"roles + tags\": [], \n  \"roles_path\": [\n    \"lib/ansible/playbook/role\"\n  ], \n  \"rollbar_deployment\": \"lib/ansible/modules/monitoring/rollbar_deployment.py\", \n  \"rollbar_deployment module\": \"lib/ansible/modules/monitoring/rollbar_deployment.py\", \n  \"route53\": [\n    \"lib/ansible/modules/cloud/amazon/route53.py\"\n  ], \n  \"route53 module\": [\n    \"lib/ansible/modules/cloud/amazon/route53.py\"\n  ], \n  \"route53_facts\": [\n    \"lib/ansible/modules/cloud/amazon/route53_facts.py\"\n  ], \n  \"route53_facts module\": \"lib/ansible/modules/cloud/amazon/route53_facts.py\", \n  \"route53_health_check\": \"lib/ansible/modules/cloud/amazon/route53_health_check.py\", \n  \"route53_health_check module\": \"lib/ansible/modules/cloud/amazon/route53_health_check.py\", \n  \"route53_tag_zone\": [], \n  \"route53_zone\": [\n    \"lib/ansible/modules/cloud/amazon/route53_zone.py\"\n  ], \n  \"route53_zone module\": [\n    \"lib/ansible/modules/cloud/amazon/route53_zone.py\"\n  ], \n  \"rpm_key\": [\n    \"lib/ansible/modules/packaging/os/rpm_key.py\"\n  ], \n  \"rpm_key\\nyum_repository\": [\n    \"lib/ansible/modules/packaging/os/rpm_key.py\", \n    \"lib/ansible/modules/packaging/os/yum_repository.py\"\n  ], \n  \"rpm_key module\": \"lib/ansible/modules/packaging/os/rpm_key.py\", \n  \"run_once\\ndelegate_to\": [], \n  \"rundeck_acl_policy\": \"lib/ansible/modules/web_infrastructure/rundeck_acl_policy.py\", \n  \"rundeck_acl_policy module\": \"lib/ansible/modules/web_infrastructure/rundeck_acl_policy.py\", \n  \"rundeck_project\": \"lib/ansible/modules/web_infrastructure/rundeck_project.py\", \n  \"rundeck_project module\": \"lib/ansible/modules/web_infrastructure/rundeck_project.py\", \n  \"runit\": \"lib/ansible/modules/system/runit.py\", \n  \"runit module\": \"lib/ansible/modules/system/runit.py\", \n  \"runner\": [], \n  \"s3\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"s3 and aws_s3\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\", \n    \"lib/ansible/modules/cloud/amazon/aws_s3.py\"\n  ], \n  \"s3 module\": [\n    \"lib/ansible/modules/cloud/amazon/_s3.py\"\n  ], \n  \"s3_bucket\": [\n    \"lib/ansible/modules/cloud/amazon/s3_bucket.py\"\n  ], \n  \"s3_bucket module\": [\n    \"lib/ansible/modules/cloud/amazon/s3_bucket.py\"\n  ], \n  \"s3_lifecycle\": \"lib/ansible/modules/cloud/amazon/s3_lifecycle.py\", \n  \"s3_lifecycle module\": \"lib/ansible/modules/cloud/amazon/s3_lifecycle.py\", \n  \"s3_logging\": [\n    \"lib/ansible/modules/cloud/amazon/s3_logging.py\"\n  ], \n  \"s3_logging module\": \"lib/ansible/modules/cloud/amazon/s3_logging.py\", \n  \"s3_sync\": [\n    \"lib/ansible/modules/cloud/amazon/s3_sync.py\"\n  ], \n  \"s3_sync module\": \"lib/ansible/modules/cloud/amazon/s3_sync.py\", \n  \"s3_sync module - http://docs.ansible.com/ansible/latest/s3_sync_module.html\": [\n    \"lib/ansible/modules/cloud/amazon/s3_sync.py\"\n  ], \n  \"s3_website\": \"lib/ansible/modules/cloud/amazon/s3_website.py\", \n  \"s3_website module\": \"lib/ansible/modules/cloud/amazon/s3_website.py\", \n  \"sccript module\": [], \n  \"script\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"script module\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"seboolean\": \"lib/ansible/modules/system/seboolean.py\", \n  \"seboolean module\": [\n    \"lib/ansible/modules/system/seboolean.py\"\n  ], \n  \"sefcontext\": [\n    \"lib/ansible/modules/system/sefcontext.py\"\n  ], \n  \"sefcontext module\": \"lib/ansible/modules/system/sefcontext.py\", \n  \"selinux\": [\n    \"lib/ansible/modules/system/selinux.py\"\n  ], \n  \"selinux module\": [\n    \"lib/ansible/modules/system/selinux.py\"\n  ], \n  \"selinux_permissive\": \"lib/ansible/modules/system/selinux_permissive.py\", \n  \"selinux_permissive module\": [\n    \"lib/ansible/modules/system/selinux_permissive.py\"\n  ], \n  \"sendgrid\": [\n    \"lib/ansible/modules/notification/sendgrid.py\"\n  ], \n  \"sendgrid module\": \"lib/ansible/modules/notification/sendgrid.py\", \n  \"sensu_check\": [\n    \"lib/ansible/modules/monitoring/sensu_check.py\"\n  ], \n  \"sensu_check module\": \"lib/ansible/modules/monitoring/sensu_check.py\", \n  \"sensu_client\": \"lib/ansible/modules/monitoring/sensu_client.py\", \n  \"sensu_client module\": \"lib/ansible/modules/monitoring/sensu_client.py\", \n  \"sensu_handler\": \"lib/ansible/modules/monitoring/sensu_handler.py\", \n  \"sensu_handler module\": \"lib/ansible/modules/monitoring/sensu_handler.py\", \n  \"sensu_silence\": \"lib/ansible/modules/monitoring/sensu_silence.py\", \n  \"sensu_silence module\": \"lib/ansible/modules/monitoring/sensu_silence.py\", \n  \"sensu_subscription\": \"lib/ansible/modules/monitoring/sensu_subscription.py\", \n  \"sensu_subscription module\": \"lib/ansible/modules/monitoring/sensu_subscription.py\", \n  \"seport\": [\n    \"lib/ansible/modules/system/seport.py\"\n  ], \n  \"seport module\": \"lib/ansible/modules/system/seport.py\", \n  \"serverless\": \"lib/ansible/modules/cloud/misc/serverless.py\", \n  \"serverless module\": \"lib/ansible/modules/cloud/misc/serverless.py\", \n  \"service\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"service  module\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"service core module\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"service module\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"service module, ansible_service_mgr\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"service_module\\nIt was mentioned as became available in ansible 2.0 in doc http//docs.ansible.com/ansible/service_module.html . It also was work as described.\\nIn recent versions (2.0.0-0.6.rc1) it produce error\\nfatal [egais.db.slave1] FAILED! => {changed false, failed true, msg unsupported parameter for module must_exist}\\nAnd doc does not contain it.\\nIs that dropped? Why?\": [\n    \"lib/ansible/modules/system/service.py\"\n  ], \n  \"service_stat\": [], \n  \"set_fact\": [\n    \"lib/ansible/modules/utilities/logic/set_fact.py\"\n  ], \n  \"set_fact module\": \"lib/ansible/modules/utilities/logic/set_fact.py\", \n  \"set_facts\": [], \n  \"set_facts /  with_items / vars_file\": [], \n  \"set_stats\": \"lib/ansible/modules/utilities/logic/set_stats.py\", \n  \"set_stats module\": \"lib/ansible/modules/utilities/logic/set_stats.py\", \n  \"setup\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"setup / facts\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"setup / facts\\nfile lib/ansible/module_utils/facts.py\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"setup / gather_facts\": [], \n  \"setup module\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"setup module (facts.py)\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"setup module (gather_facts)\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"setup module.\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"setup.ps1\": [\n    \"lib/ansible/modules/windows/setup.ps1\"\n  ], \n  \"setup.py\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"setup_module\": [\n    \"lib/ansible/modules/system/setup.py\"\n  ], \n  \"sf_account_manager\": \"lib/ansible/modules/storage/netapp/sf_account_manager.py\", \n  \"sf_account_manager module\": \"lib/ansible/modules/storage/netapp/sf_account_manager.py\", \n  \"sf_check_connections\": \"lib/ansible/modules/storage/netapp/sf_check_connections.py\", \n  \"sf_check_connections module\": \"lib/ansible/modules/storage/netapp/sf_check_connections.py\", \n  \"sf_snapshot_schedule_manager\": \"lib/ansible/modules/storage/netapp/sf_snapshot_schedule_manager.py\", \n  \"sf_snapshot_schedule_manager module\": \"lib/ansible/modules/storage/netapp/sf_snapshot_schedule_manager.py\", \n  \"sf_volume_access_group_manager\": \"lib/ansible/modules/storage/netapp/sf_volume_access_group_manager.py\", \n  \"sf_volume_access_group_manager module\": \"lib/ansible/modules/storage/netapp/sf_volume_access_group_manager.py\", \n  \"sf_volume_manager\": \"lib/ansible/modules/storage/netapp/sf_volume_manager.py\", \n  \"sf_volume_manager module\": \"lib/ansible/modules/storage/netapp/sf_volume_manager.py\", \n  \"shell\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"shell (or apt, depending on your perspective)\": [\n    \"lib/ansible/modules/commands/shell.py\", \n    \"lib/ansible/modules/packaging/os/apt.py\"\n  ], \n  \"shell and command modules\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"shell module\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"shell module\\ncommand module\": [\n    \"lib/ansible/modules/commands/command.py\", \n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"shell module and check mode\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"shell or command\": [\n    \"lib/ansible/modules/commands/command.py\", \n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"shell-module\": [\n    \"lib/ansible/modules/commands/shell.py\"\n  ], \n  \"shell/command module\": [\n    \"lib/ansible/modules/commands/command.py\"\n  ], \n  \"shell\\u3001command and script\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"sl_vm\": [\n    \"lib/ansible/modules/cloud/softlayer/sl_vm.py\"\n  ], \n  \"sl_vm module\": \"lib/ansible/modules/cloud/softlayer/sl_vm.py\", \n  \"slack\": \"lib/ansible/modules/notification/slack.py\", \n  \"slack module\": \"lib/ansible/modules/notification/slack.py\", \n  \"slackpkg\": \"lib/ansible/modules/packaging/os/slackpkg.py\", \n  \"slackpkg module\": \"lib/ansible/modules/packaging/os/slackpkg.py\", \n  \"slurp\": \"lib/ansible/modules/windows/slurp.ps1\", \n  \"slurp module\": \"lib/ansible/modules/windows/slurp.ps1\", \n  \"smartos_image_facts\": \"lib/ansible/modules/cloud/smartos/smartos_image_facts.py\", \n  \"smartos_image_facts module\": \"lib/ansible/modules/cloud/smartos/smartos_image_facts.py\", \n  \"snmp_facts\": [\n    \"lib/ansible/modules/net_tools/snmp_facts.py\"\n  ], \n  \"snmp_facts module\": \"lib/ansible/modules/net_tools/snmp_facts.py\", \n  \"snow_record\": \"lib/ansible/modules/notification/snow_record.py\", \n  \"snow_record module\": \"lib/ansible/modules/notification/snow_record.py\", \n  \"sns\": \"lib/ansible/modules/cloud/amazon/sns.py\", \n  \"sns module\": \"lib/ansible/modules/cloud/amazon/sns.py\", \n  \"sns_topic\": \"lib/ansible/modules/cloud/amazon/sns_topic.py\", \n  \"sns_topic module\": \"lib/ansible/modules/cloud/amazon/sns_topic.py\", \n  \"solaris_zone\": \"lib/ansible/modules/system/solaris_zone.py\", \n  \"solaris_zone module\": \"lib/ansible/modules/system/solaris_zone.py\", \n  \"sorcery\": \"lib/ansible/modules/packaging/os/sorcery.py\", \n  \"sorcery module\": \"lib/ansible/modules/packaging/os/sorcery.py\", \n  \"source_control/bzr\": \"lib/ansible/modules/source_control/bzr.py\", \n  \"source_control/bzr.py\": \"lib/ansible/modules/source_control/bzr.py\", \n  \"source_control/git\": \"lib/ansible/modules/source_control/git.py\", \n  \"source_control/git.py\": \"lib/ansible/modules/source_control/git.py\", \n  \"source_control/git_config\": \"lib/ansible/modules/source_control/git_config.py\", \n  \"source_control/git_config.py\": \"lib/ansible/modules/source_control/git_config.py\", \n  \"source_control/github_deploy_key\": \"lib/ansible/modules/source_control/github_deploy_key.py\", \n  \"source_control/github_deploy_key.py\": \"lib/ansible/modules/source_control/github_deploy_key.py\", \n  \"source_control/github_hooks\": \"lib/ansible/modules/source_control/github_hooks.py\", \n  \"source_control/github_hooks.py\": \"lib/ansible/modules/source_control/github_hooks.py\", \n  \"source_control/github_issue\": \"lib/ansible/modules/source_control/github_issue.py\", \n  \"source_control/github_issue.py\": \"lib/ansible/modules/source_control/github_issue.py\", \n  \"source_control/github_key\": \"lib/ansible/modules/source_control/github_key.py\", \n  \"source_control/github_key.py\": \"lib/ansible/modules/source_control/github_key.py\", \n  \"source_control/github_release\": \"lib/ansible/modules/source_control/github_release.py\", \n  \"source_control/github_release.py\": \"lib/ansible/modules/source_control/github_release.py\", \n  \"source_control/gitlab_group\": \"lib/ansible/modules/source_control/gitlab_group.py\", \n  \"source_control/gitlab_group.py\": \"lib/ansible/modules/source_control/gitlab_group.py\", \n  \"source_control/gitlab_project\": \"lib/ansible/modules/source_control/gitlab_project.py\", \n  \"source_control/gitlab_project.py\": \"lib/ansible/modules/source_control/gitlab_project.py\", \n  \"source_control/gitlab_user\": \"lib/ansible/modules/source_control/gitlab_user.py\", \n  \"source_control/gitlab_user.py\": \"lib/ansible/modules/source_control/gitlab_user.py\", \n  \"source_control/hg\": [\n    \"lib/ansible/modules/source_control/hg.py\"\n  ], \n  \"source_control/hg.py\": \"lib/ansible/modules/source_control/hg.py\", \n  \"source_control/subversion\": \"lib/ansible/modules/source_control/subversion.py\", \n  \"source_control/subversion.py\": \"lib/ansible/modules/source_control/subversion.py\", \n  \"sqs_queue\": \"lib/ansible/modules/cloud/amazon/sqs_queue.py\", \n  \"sqs_queue module\": \"lib/ansible/modules/cloud/amazon/sqs_queue.py\", \n  \"sros_command\": [\n    \"lib/ansible/modules/network/sros/sros_command.py\"\n  ], \n  \"sros_command module\": \"lib/ansible/modules/network/sros/sros_command.py\", \n  \"sros_config\": [\n    \"lib/ansible/modules/network/sros/sros_config.py\"\n  ], \n  \"sros_config module\": \"lib/ansible/modules/network/sros/sros_config.py\", \n  \"sros_rollback\": \"lib/ansible/modules/network/sros/sros_rollback.py\", \n  \"sros_rollback module\": \"lib/ansible/modules/network/sros/sros_rollback.py\", \n  \"ssh\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"ssh connection plugin\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"ssh connection plugin and sshpass\": [\n    \"lib/ansible/plugins/connection/ssh.py\"\n  ], \n  \"sshpass\": [], \n  \"stackdriver\": \"lib/ansible/modules/monitoring/stackdriver.py\", \n  \"stackdriver module\": \"lib/ansible/modules/monitoring/stackdriver.py\", \n  \"stacki_host\": \"lib/ansible/modules/remote_management/stacki/stacki_host.py\", \n  \"stacki_host module\": \"lib/ansible/modules/remote_management/stacki/stacki_host.py\", \n  \"stat\": [\n    \"lib/ansible/modules/files/stat.py\"\n  ], \n  \"stat module\": \"lib/ansible/modules/files/stat.py\", \n  \"stategy?\": [], \n  \"static and dynamic inventory\": [\n    \"contrib/inventory\"\n  ], \n  \"statusio_maintenance\": \"lib/ansible/modules/monitoring/statusio_maintenance.py\", \n  \"statusio_maintenance module\": \"lib/ansible/modules/monitoring/statusio_maintenance.py\", \n  \"stdout from script module in Windows\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ], \n  \"stdout_callback, skippy\": [\n    \"lib/ansible/plugins/callback/skippy.py\"\n  ], \n  \"storage module netapp_e_volume\": [\n    \"lib/ansible/modules/storage/netapp/netapp_e_volume.py\"\n  ], \n  \"storage/infinidat/infini_export\": \"lib/ansible/modules/storage/infinidat/infini_export.py\", \n  \"storage/infinidat/infini_export.py\": \"lib/ansible/modules/storage/infinidat/infini_export.py\", \n  \"storage/infinidat/infini_export_client\": \"lib/ansible/modules/storage/infinidat/infini_export_client.py\", \n  \"storage/infinidat/infini_export_client.py\": \"lib/ansible/modules/storage/infinidat/infini_export_client.py\", \n  \"storage/infinidat/infini_fs\": \"lib/ansible/modules/storage/infinidat/infini_fs.py\", \n  \"storage/infinidat/infini_fs.py\": \"lib/ansible/modules/storage/infinidat/infini_fs.py\", \n  \"storage/infinidat/infini_host\": \"lib/ansible/modules/storage/infinidat/infini_host.py\", \n  \"storage/infinidat/infini_host.py\": \"lib/ansible/modules/storage/infinidat/infini_host.py\", \n  \"storage/infinidat/infini_pool\": \"lib/ansible/modules/storage/infinidat/infini_pool.py\", \n  \"storage/infinidat/infini_pool.py\": \"lib/ansible/modules/storage/infinidat/infini_pool.py\", \n  \"storage/infinidat/infini_vol\": \"lib/ansible/modules/storage/infinidat/infini_vol.py\", \n  \"storage/infinidat/infini_vol.py\": \"lib/ansible/modules/storage/infinidat/infini_vol.py\", \n  \"storage/netapp/na_cdot_aggregate\": \"lib/ansible/modules/storage/netapp/na_cdot_aggregate.py\", \n  \"storage/netapp/na_cdot_aggregate.py\": \"lib/ansible/modules/storage/netapp/na_cdot_aggregate.py\", \n  \"storage/netapp/na_cdot_license\": \"lib/ansible/modules/storage/netapp/na_cdot_license.py\", \n  \"storage/netapp/na_cdot_license.py\": \"lib/ansible/modules/storage/netapp/na_cdot_license.py\", \n  \"storage/netapp/na_cdot_lun\": \"lib/ansible/modules/storage/netapp/na_cdot_lun.py\", \n  \"storage/netapp/na_cdot_lun.py\": \"lib/ansible/modules/storage/netapp/na_cdot_lun.py\", \n  \"storage/netapp/na_cdot_qtree\": \"lib/ansible/modules/storage/netapp/na_cdot_qtree.py\", \n  \"storage/netapp/na_cdot_qtree.py\": \"lib/ansible/modules/storage/netapp/na_cdot_qtree.py\", \n  \"storage/netapp/na_cdot_svm\": \"lib/ansible/modules/storage/netapp/na_cdot_svm.py\", \n  \"storage/netapp/na_cdot_svm.py\": \"lib/ansible/modules/storage/netapp/na_cdot_svm.py\", \n  \"storage/netapp/na_cdot_user\": \"lib/ansible/modules/storage/netapp/na_cdot_user.py\", \n  \"storage/netapp/na_cdot_user.py\": \"lib/ansible/modules/storage/netapp/na_cdot_user.py\", \n  \"storage/netapp/na_cdot_user_role\": \"lib/ansible/modules/storage/netapp/na_cdot_user_role.py\", \n  \"storage/netapp/na_cdot_user_role.py\": \"lib/ansible/modules/storage/netapp/na_cdot_user_role.py\", \n  \"storage/netapp/na_cdot_volume\": \"lib/ansible/modules/storage/netapp/na_cdot_volume.py\", \n  \"storage/netapp/na_cdot_volume.py\": \"lib/ansible/modules/storage/netapp/na_cdot_volume.py\", \n  \"storage/netapp/netapp_e_amg\": \"lib/ansible/modules/storage/netapp/netapp_e_amg.py\", \n  \"storage/netapp/netapp_e_amg.py\": \"lib/ansible/modules/storage/netapp/netapp_e_amg.py\", \n  \"storage/netapp/netapp_e_amg_role\": \"lib/ansible/modules/storage/netapp/netapp_e_amg_role.py\", \n  \"storage/netapp/netapp_e_amg_role.py\": \"lib/ansible/modules/storage/netapp/netapp_e_amg_role.py\", \n  \"storage/netapp/netapp_e_amg_sync\": \"lib/ansible/modules/storage/netapp/netapp_e_amg_sync.py\", \n  \"storage/netapp/netapp_e_amg_sync.py\": \"lib/ansible/modules/storage/netapp/netapp_e_amg_sync.py\", \n  \"storage/netapp/netapp_e_auth\": \"lib/ansible/modules/storage/netapp/netapp_e_auth.py\", \n  \"storage/netapp/netapp_e_auth.py\": \"lib/ansible/modules/storage/netapp/netapp_e_auth.py\", \n  \"storage/netapp/netapp_e_facts\": \"lib/ansible/modules/storage/netapp/netapp_e_facts.py\", \n  \"storage/netapp/netapp_e_facts.py\": \"lib/ansible/modules/storage/netapp/netapp_e_facts.py\", \n  \"storage/netapp/netapp_e_flashcache\": \"lib/ansible/modules/storage/netapp/netapp_e_flashcache.py\", \n  \"storage/netapp/netapp_e_flashcache.py\": \"lib/ansible/modules/storage/netapp/netapp_e_flashcache.py\", \n  \"storage/netapp/netapp_e_host\": \"lib/ansible/modules/storage/netapp/netapp_e_host.py\", \n  \"storage/netapp/netapp_e_host.py\": \"lib/ansible/modules/storage/netapp/netapp_e_host.py\", \n  \"storage/netapp/netapp_e_hostgroup\": \"lib/ansible/modules/storage/netapp/netapp_e_hostgroup.py\", \n  \"storage/netapp/netapp_e_hostgroup.py\": \"lib/ansible/modules/storage/netapp/netapp_e_hostgroup.py\", \n  \"storage/netapp/netapp_e_lun_mapping\": \"lib/ansible/modules/storage/netapp/netapp_e_lun_mapping.py\", \n  \"storage/netapp/netapp_e_lun_mapping.py\": \"lib/ansible/modules/storage/netapp/netapp_e_lun_mapping.py\", \n  \"storage/netapp/netapp_e_snapshot_group\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_group.py\", \n  \"storage/netapp/netapp_e_snapshot_group.py\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_group.py\", \n  \"storage/netapp/netapp_e_snapshot_images\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_images.py\", \n  \"storage/netapp/netapp_e_snapshot_images.py\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_images.py\", \n  \"storage/netapp/netapp_e_snapshot_volume\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_volume.py\", \n  \"storage/netapp/netapp_e_snapshot_volume.py\": \"lib/ansible/modules/storage/netapp/netapp_e_snapshot_volume.py\", \n  \"storage/netapp/netapp_e_storage_system\": \"lib/ansible/modules/storage/netapp/netapp_e_storage_system.py\", \n  \"storage/netapp/netapp_e_storage_system.py\": \"lib/ansible/modules/storage/netapp/netapp_e_storage_system.py\", \n  \"storage/netapp/netapp_e_storagepool\": \"lib/ansible/modules/storage/netapp/netapp_e_storagepool.py\", \n  \"storage/netapp/netapp_e_storagepool.py\": \"lib/ansible/modules/storage/netapp/netapp_e_storagepool.py\", \n  \"storage/netapp/netapp_e_volume\": \"lib/ansible/modules/storage/netapp/netapp_e_volume.py\", \n  \"storage/netapp/netapp_e_volume.py\": \"lib/ansible/modules/storage/netapp/netapp_e_volume.py\", \n  \"storage/netapp/netapp_e_volume_copy\": \"lib/ansible/modules/storage/netapp/netapp_e_volume_copy.py\", \n  \"storage/netapp/netapp_e_volume_copy.py\": \"lib/ansible/modules/storage/netapp/netapp_e_volume_copy.py\", \n  \"storage/netapp/sf_account_manager\": \"lib/ansible/modules/storage/netapp/sf_account_manager.py\", \n  \"storage/netapp/sf_account_manager.py\": \"lib/ansible/modules/storage/netapp/sf_account_manager.py\", \n  \"storage/netapp/sf_check_connections\": \"lib/ansible/modules/storage/netapp/sf_check_connections.py\", \n  \"storage/netapp/sf_check_connections.py\": \"lib/ansible/modules/storage/netapp/sf_check_connections.py\", \n  \"storage/netapp/sf_snapshot_schedule_manager\": \"lib/ansible/modules/storage/netapp/sf_snapshot_schedule_manager.py\", \n  \"storage/netapp/sf_snapshot_schedule_manager.py\": \"lib/ansible/modules/storage/netapp/sf_snapshot_schedule_manager.py\", \n  \"storage/netapp/sf_volume_access_group_manager\": \"lib/ansible/modules/storage/netapp/sf_volume_access_group_manager.py\", \n  \"storage/netapp/sf_volume_access_group_manager.py\": \"lib/ansible/modules/storage/netapp/sf_volume_access_group_manager.py\", \n  \"storage/netapp/sf_volume_manager\": \"lib/ansible/modules/storage/netapp/sf_volume_manager.py\", \n  \"storage/netapp/sf_volume_manager.py\": \"lib/ansible/modules/storage/netapp/sf_volume_manager.py\", \n  \"storage/purestorage/purefa_hg\": \"lib/ansible/modules/storage/purestorage/purefa_hg.py\", \n  \"storage/purestorage/purefa_hg.py\": \"lib/ansible/modules/storage/purestorage/purefa_hg.py\", \n  \"storage/purestorage/purefa_host\": \"lib/ansible/modules/storage/purestorage/purefa_host.py\", \n  \"storage/purestorage/purefa_host.py\": \"lib/ansible/modules/storage/purestorage/purefa_host.py\", \n  \"storage/purestorage/purefa_pg\": \"lib/ansible/modules/storage/purestorage/purefa_pg.py\", \n  \"storage/purestorage/purefa_pg.py\": \"lib/ansible/modules/storage/purestorage/purefa_pg.py\", \n  \"storage/purestorage/purefa_snap\": \"lib/ansible/modules/storage/purestorage/purefa_snap.py\", \n  \"storage/purestorage/purefa_snap.py\": \"lib/ansible/modules/storage/purestorage/purefa_snap.py\", \n  \"storage/purestorage/purefa_volume\": \"lib/ansible/modules/storage/purestorage/purefa_volume.py\", \n  \"storage/purestorage/purefa_volume.py\": \"lib/ansible/modules/storage/purestorage/purefa_volume.py\", \n  \"storage/zfs/zfs\": \"lib/ansible/modules/storage/zfs/zfs.py\", \n  \"storage/zfs/zfs.py\": \"lib/ansible/modules/storage/zfs/zfs.py\", \n  \"storage/zfs/zfs_facts\": \"lib/ansible/modules/storage/zfs/zfs_facts.py\", \n  \"storage/zfs/zfs_facts.py\": \"lib/ansible/modules/storage/zfs/zfs_facts.py\", \n  \"storage/zfs/zpool_facts\": \"lib/ansible/modules/storage/zfs/zpool_facts.py\", \n  \"storage/zfs/zpool_facts.py\": \"lib/ansible/modules/storage/zfs/zpool_facts.py\", \n  \"strategy free\": [\n    \"lib/ansible/plugins/strategy/free.py\"\n  ], \n  \"sts_assume_role\": \"lib/ansible/modules/cloud/amazon/sts_assume_role.py\", \n  \"sts_assume_role module\": \"lib/ansible/modules/cloud/amazon/sts_assume_role.py\", \n  \"sts_session_token\": \"lib/ansible/modules/cloud/amazon/sts_session_token.py\", \n  \"sts_session_token module\": \"lib/ansible/modules/cloud/amazon/sts_session_token.py\", \n  \"subversion\": [\n    \"lib/ansible/modules/source_control/subversion.py\"\n  ], \n  \"subversion module\": [\n    \"lib/ansible/modules/source_control/subversion.py\"\n  ], \n  \"supervisorctl\": [\n    \"lib/ansible/modules/web_infrastructure/supervisorctl.py\"\n  ], \n  \"supervisorctl module\": [\n    \"lib/ansible/modules/web_infrastructure/supervisorctl.py\"\n  ], \n  \"svc\": \"lib/ansible/modules/system/svc.py\", \n  \"svc module\": \"lib/ansible/modules/system/svc.py\", \n  \"svr4pkg\": [\n    \"lib/ansible/modules/packaging/os/svr4pkg.py\"\n  ], \n  \"svr4pkg module\": \"lib/ansible/modules/packaging/os/svr4pkg.py\", \n  \"swdepot\": \"lib/ansible/modules/packaging/os/swdepot.py\", \n  \"swdepot module\": \"lib/ansible/modules/packaging/os/swdepot.py\", \n  \"swupd\": \"lib/ansible/modules/packaging/os/swupd.py\", \n  \"swupd module\": \"lib/ansible/modules/packaging/os/swupd.py\", \n  \"synchronize\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"synchronize module\": [\n    \"lib/ansible/modules/files/synchronize.py\"\n  ], \n  \"syncronize module module\": [], \n  \"sysctl\": [\n    \"lib/ansible/modules/system/sysctl.py\"\n  ], \n  \"sysctl module\": [\n    \"lib/ansible/modules/system/sysctl.py\"\n  ], \n  \"syslogger\": \"lib/ansible/modules/notification/syslogger.py\", \n  \"syslogger module\": \"lib/ansible/modules/notification/syslogger.py\", \n  \"system/aix_inittab\": \"lib/ansible/modules/system/aix_inittab.py\", \n  \"system/aix_inittab.py\": \"lib/ansible/modules/system/aix_inittab.py\", \n  \"system/aix_lvol\": \"lib/ansible/modules/system/aix_lvol.py\", \n  \"system/aix_lvol.py\": \"lib/ansible/modules/system/aix_lvol.py\", \n  \"system/alternatives\": \"lib/ansible/modules/system/alternatives.py\", \n  \"system/alternatives.py\": \"lib/ansible/modules/system/alternatives.py\", \n  \"system/at\": \"lib/ansible/modules/system/at.py\", \n  \"system/at.py\": \"lib/ansible/modules/system/at.py\", \n  \"system/authorized_key\": \"lib/ansible/modules/system/authorized_key.py\", \n  \"system/authorized_key.py\": \"lib/ansible/modules/system/authorized_key.py\", \n  \"system/awall\": \"lib/ansible/modules/system/awall.py\", \n  \"system/awall.py\": \"lib/ansible/modules/system/awall.py\", \n  \"system/beadm\": \"lib/ansible/modules/system/beadm.py\", \n  \"system/beadm.py\": \"lib/ansible/modules/system/beadm.py\", \n  \"system/capabilities\": \"lib/ansible/modules/system/capabilities.py\", \n  \"system/capabilities.py\": \"lib/ansible/modules/system/capabilities.py\", \n  \"system/cron\": \"lib/ansible/modules/system/cron.py\", \n  \"system/cron.py\": \"lib/ansible/modules/system/cron.py\", \n  \"system/cronvar\": \"lib/ansible/modules/system/cronvar.py\", \n  \"system/cronvar.py\": \"lib/ansible/modules/system/cronvar.py\", \n  \"system/crypttab\": \"lib/ansible/modules/system/crypttab.py\", \n  \"system/crypttab.py\": \"lib/ansible/modules/system/crypttab.py\", \n  \"system/dconf\": \"lib/ansible/modules/system/dconf.py\", \n  \"system/dconf.py\": \"lib/ansible/modules/system/dconf.py\", \n  \"system/debconf\": \"lib/ansible/modules/system/debconf.py\", \n  \"system/debconf.py\": \"lib/ansible/modules/system/debconf.py\", \n  \"system/facter\": \"lib/ansible/modules/system/facter.py\", \n  \"system/facter.py\": \"lib/ansible/modules/system/facter.py\", \n  \"system/filesystem\": \"lib/ansible/modules/system/filesystem.py\", \n  \"system/filesystem.py\": [\n    \"lib/ansible/modules/system/filesystem.py\"\n  ], \n  \"system/firewalld\": \"lib/ansible/modules/system/firewalld.py\", \n  \"system/firewalld.py\": \"lib/ansible/modules/system/firewalld.py\", \n  \"system/gconftool2\": \"lib/ansible/modules/system/gconftool2.py\", \n  \"system/gconftool2.py\": \"lib/ansible/modules/system/gconftool2.py\", \n  \"system/getent\": \"lib/ansible/modules/system/getent.py\", \n  \"system/getent.py\": \"lib/ansible/modules/system/getent.py\", \n  \"system/gluster_volume\": \"lib/ansible/modules/system/gluster_volume.py\", \n  \"system/gluster_volume.py\": \"lib/ansible/modules/system/gluster_volume.py\", \n  \"system/group\": [\n    \"lib/ansible/modules/system/group.py\"\n  ], \n  \"system/group.py\": \"lib/ansible/modules/system/group.py\", \n  \"system/hostname\": \"lib/ansible/modules/system/hostname.py\", \n  \"system/hostname.py\": \"lib/ansible/modules/system/hostname.py\", \n  \"system/interfaces_file\": \"lib/ansible/modules/system/interfaces_file.py\", \n  \"system/interfaces_file.py\": \"lib/ansible/modules/system/interfaces_file.py\", \n  \"system/iptables\": \"lib/ansible/modules/system/iptables.py\", \n  \"system/iptables.py\": \"lib/ansible/modules/system/iptables.py\", \n  \"system/java_cert\": \"lib/ansible/modules/system/java_cert.py\", \n  \"system/java_cert.py\": \"lib/ansible/modules/system/java_cert.py\", \n  \"system/kernel_blacklist\": \"lib/ansible/modules/system/kernel_blacklist.py\", \n  \"system/kernel_blacklist.py\": \"lib/ansible/modules/system/kernel_blacklist.py\", \n  \"system/known_hosts\": \"lib/ansible/modules/system/known_hosts.py\", \n  \"system/known_hosts.py\": \"lib/ansible/modules/system/known_hosts.py\", \n  \"system/locale_gen\": \"lib/ansible/modules/system/locale_gen.py\", \n  \"system/locale_gen.py\": \"lib/ansible/modules/system/locale_gen.py\", \n  \"system/lvg\": \"lib/ansible/modules/system/lvg.py\", \n  \"system/lvg.py\": \"lib/ansible/modules/system/lvg.py\", \n  \"system/lvol\": \"lib/ansible/modules/system/lvol.py\", \n  \"system/lvol.py\": [\n    \"lib/ansible/modules/system/lvol.py\"\n  ], \n  \"system/make\": \"lib/ansible/modules/system/make.py\", \n  \"system/make.py\": \"lib/ansible/modules/system/make.py\", \n  \"system/mksysb\": \"lib/ansible/modules/system/mksysb.py\", \n  \"system/mksysb.py\": \"lib/ansible/modules/system/mksysb.py\", \n  \"system/modprobe\": \"lib/ansible/modules/system/modprobe.py\", \n  \"system/modprobe.py\": \"lib/ansible/modules/system/modprobe.py\", \n  \"system/mount\": \"lib/ansible/modules/system/mount.py\", \n  \"system/mount.py\": \"lib/ansible/modules/system/mount.py\", \n  \"system/nosh\": \"lib/ansible/modules/system/nosh.py\", \n  \"system/nosh.py\": \"lib/ansible/modules/system/nosh.py\", \n  \"system/ohai\": \"lib/ansible/modules/system/ohai.py\", \n  \"system/ohai.py\": \"lib/ansible/modules/system/ohai.py\", \n  \"system/open_iscsi\": \"lib/ansible/modules/system/open_iscsi.py\", \n  \"system/open_iscsi.py\": \"lib/ansible/modules/system/open_iscsi.py\", \n  \"system/openwrt_init\": \"lib/ansible/modules/system/openwrt_init.py\", \n  \"system/openwrt_init.py\": \"lib/ansible/modules/system/openwrt_init.py\", \n  \"system/osx_defaults\": \"lib/ansible/modules/system/osx_defaults.py\", \n  \"system/osx_defaults.py\": \"lib/ansible/modules/system/osx_defaults.py\", \n  \"system/pam_limits\": \"lib/ansible/modules/system/pam_limits.py\", \n  \"system/pam_limits.py\": \"lib/ansible/modules/system/pam_limits.py\", \n  \"system/pamd\": \"lib/ansible/modules/system/pamd.py\", \n  \"system/pamd.py\": \"lib/ansible/modules/system/pamd.py\", \n  \"system/parted\": \"lib/ansible/modules/system/parted.py\", \n  \"system/parted.py\": \"lib/ansible/modules/system/parted.py\", \n  \"system/ping\": \"lib/ansible/modules/system/ping.py\", \n  \"system/ping.py\": \"lib/ansible/modules/system/ping.py\", \n  \"system/puppet\": \"lib/ansible/modules/system/puppet.py\", \n  \"system/puppet.py\": \"lib/ansible/modules/system/puppet.py\", \n  \"system/runit\": \"lib/ansible/modules/system/runit.py\", \n  \"system/runit.py\": \"lib/ansible/modules/system/runit.py\", \n  \"system/seboolean\": \"lib/ansible/modules/system/seboolean.py\", \n  \"system/seboolean.py\": \"lib/ansible/modules/system/seboolean.py\", \n  \"system/sefcontext\": \"lib/ansible/modules/system/sefcontext.py\", \n  \"system/sefcontext.py\": \"lib/ansible/modules/system/sefcontext.py\", \n  \"system/selinux\": \"lib/ansible/modules/system/selinux.py\", \n  \"system/selinux.py\": \"lib/ansible/modules/system/selinux.py\", \n  \"system/selinux_permissive\": \"lib/ansible/modules/system/selinux_permissive.py\", \n  \"system/selinux_permissive.py\": \"lib/ansible/modules/system/selinux_permissive.py\", \n  \"system/seport\": \"lib/ansible/modules/system/seport.py\", \n  \"system/seport.py\": \"lib/ansible/modules/system/seport.py\", \n  \"system/service\": \"lib/ansible/modules/system/service.py\", \n  \"system/service.py\": \"lib/ansible/modules/system/service.py\", \n  \"system/setup\": \"lib/ansible/modules/system/setup.py\", \n  \"system/setup.py\": \"lib/ansible/modules/system/setup.py\", \n  \"system/solaris_zone\": \"lib/ansible/modules/system/solaris_zone.py\", \n  \"system/solaris_zone.py\": \"lib/ansible/modules/system/solaris_zone.py\", \n  \"system/svc\": \"lib/ansible/modules/system/svc.py\", \n  \"system/svc.py\": \"lib/ansible/modules/system/svc.py\", \n  \"system/sysctl\": \"lib/ansible/modules/system/sysctl.py\", \n  \"system/sysctl.py\": \"lib/ansible/modules/system/sysctl.py\", \n  \"system/systemd\": \"lib/ansible/modules/system/systemd.py\", \n  \"system/systemd.py\": [\n    \"lib/ansible/modules/system/systemd.py\"\n  ], \n  \"system/timezone\": \"lib/ansible/modules/system/timezone.py\", \n  \"system/timezone.py\": \"lib/ansible/modules/system/timezone.py\", \n  \"system/ufw\": \"lib/ansible/modules/system/ufw.py\", \n  \"system/ufw.py\": \"lib/ansible/modules/system/ufw.py\", \n  \"system/user\": \"lib/ansible/modules/system/user.py\", \n  \"system/user.py\": \"lib/ansible/modules/system/user.py\", \n  \"systemd\": [\n    \"lib/ansible/modules/system/systemd.py\"\n  ], \n  \"systemd module\": [\n    \"lib/ansible/modules/system/systemd.py\"\n  ], \n  \"tags\": [], \n  \"taiga_issue\": \"lib/ansible/modules/web_infrastructure/taiga_issue.py\", \n  \"taiga_issue module\": \"lib/ansible/modules/web_infrastructure/taiga_issue.py\", \n  \"task\": [], \n  \"task `environment` argument (all modules, not specific to a any module)\": [], \n  \"task executor\": [\n    \"lib/ansible/executor/task_executor.py\"\n  ], \n  \"task exexutor\": [], \n  \"task meta: refresh inventory\": [\n    \"lib/ansible/inventory\", \n    \"lib/ansible/modules/utilities/helper/meta.py\"\n  ], \n  \"tasks-execution, path-creation, to be observed at least in the copy-module\": [], \n  \"telegram\": \"lib/ansible/modules/notification/telegram.py\", \n  \"telegram module\": \"lib/ansible/modules/notification/telegram.py\", \n  \"telnet\": \"lib/ansible/modules/commands/telnet.py\", \n  \"telnet module\": \"lib/ansible/modules/commands/telnet.py\", \n  \"tempalte\": [], \n  \"tempfile\": \"lib/ansible/modules/files/tempfile.py\", \n  \"tempfile module\": \"lib/ansible/modules/files/tempfile.py\", \n  \"template\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"template\\ncopy\\n(template calls copy, I first spotted it when using template)\": [\n    \"lib/ansible/modules/files/copy.py\", \n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"template module\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"template module\\n(or really anywhere Jinja2 is used but imports are probably not used outside template)\": [\n    \"lib/ansible/modules/files/template.py\", \n    \"lib/ansible/template\"\n  ], \n  \"template module import statement\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"template module, copy module\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"template module.\\ncan apply to copy module\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"template task\": [\n    \"lib/ansible/modules/files/template.py\"\n  ], \n  \"templating\": [], \n  \"templating, host vars\": [\n    \"lib/ansible/vars/hostvars.py\"\n  ], \n  \"test/integration\": [\n    \"test/integration\"\n  ], \n  \"test/integration/targets/gathering_facts\": [\n    \"test/integration/targets/gathering_facts\"\n  ], \n  \"test/units/cli/test_galaxy.py\": [\n    \"test/units/cli/test_galaxy.py\"\n  ], \n  \"test/units/modules/web_infrastructure/test_jenkins_plugin.py\": [\n    \"test/units/modules/web_infrastructure/test_jenkins_plugin.py\"\n  ], \n  \"testing\": [\n    \"test/\"\n  ], \n  \"the \\\"user\\\" module\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"timezone\": \"lib/ansible/modules/system/timezone.py\", \n  \"timezone module\": [\n    \"lib/ansible/modules/system/timezone.py\"\n  ], \n  \"to_nice_yaml filter\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"tower_credential\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_credential.py\", \n  \"tower_credential\\ntower_*\": [\n    \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_credential.py\"\n  ], \n  \"tower_credential module\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_credential.py\", \n  \"tower_group\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_group.py\", \n  \"tower_group module\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_group.py\", \n  \"tower_group.py (tower group module)\": [\n    \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_group.py\"\n  ], \n  \"tower_host\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_host.py\", \n  \"tower_host module\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_host.py\", \n  \"tower_inventory\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_inventory.py\", \n  \"tower_inventory module\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_inventory.py\", \n  \"tower_job_cancel\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_cancel.py\", \n  \"tower_job_cancel module\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_cancel.py\", \n  \"tower_job_launch\": [\n    \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_launch.py\"\n  ], \n  \"tower_job_launch module\": [\n    \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_launch.py\"\n  ], \n  \"tower_job_list\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_list.py\", \n  \"tower_job_list module\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_list.py\", \n  \"tower_job_list module but I believe that also the other tower_* module have the same error\": [\n    \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_list.py\"\n  ], \n  \"tower_job_template\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_template.py\", \n  \"tower_job_template module\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_template.py\", \n  \"tower_job_wait\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_wait.py\", \n  \"tower_job_wait module\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_wait.py\", \n  \"tower_label\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_label.py\", \n  \"tower_label module\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_label.py\", \n  \"tower_organization\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_organization.py\", \n  \"tower_organization module\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_organization.py\", \n  \"tower_project\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_project.py\", \n  \"tower_project module\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_project.py\", \n  \"tower_role\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_role.py\", \n  \"tower_role module\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_role.py\", \n  \"tower_team\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_team.py\", \n  \"tower_team module\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_team.py\", \n  \"tower_user\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_user.py\", \n  \"tower_user module\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_user.py\", \n  \"twilio\": \"lib/ansible/modules/notification/twilio.py\", \n  \"twilio module\": \"lib/ansible/modules/notification/twilio.py\", \n  \"typetalk\": \"lib/ansible/modules/notification/typetalk.py\", \n  \"typetalk module\": \"lib/ansible/modules/notification/typetalk.py\", \n  \"udm_dns_record\": \"lib/ansible/modules/cloud/univention/udm_dns_record.py\", \n  \"udm_dns_record module\": \"lib/ansible/modules/cloud/univention/udm_dns_record.py\", \n  \"udm_dns_zone\": \"lib/ansible/modules/cloud/univention/udm_dns_zone.py\", \n  \"udm_dns_zone module\": \"lib/ansible/modules/cloud/univention/udm_dns_zone.py\", \n  \"udm_group\": \"lib/ansible/modules/cloud/univention/udm_group.py\", \n  \"udm_group module\": \"lib/ansible/modules/cloud/univention/udm_group.py\", \n  \"udm_share\": \"lib/ansible/modules/cloud/univention/udm_share.py\", \n  \"udm_share module\": \"lib/ansible/modules/cloud/univention/udm_share.py\", \n  \"udm_user\": \"lib/ansible/modules/cloud/univention/udm_user.py\", \n  \"udm_user module\": \"lib/ansible/modules/cloud/univention/udm_user.py\", \n  \"ufw\": [\n    \"lib/ansible/modules/system/ufw.py\"\n  ], \n  \"ufw module\": \"lib/ansible/modules/system/ufw.py\", \n  \"unarchive\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"unarchive\\n/usr/lib/python2.7/dist-packages/ansible/modules/files/unarchive.py\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"unarchive module\": [\n    \"lib/ansible/modules/files/unarchive.py\"\n  ], \n  \"unit tests\": [], \n  \"uptimerobot\": \"lib/ansible/modules/monitoring/uptimerobot.py\", \n  \"uptimerobot module\": \"lib/ansible/modules/monitoring/uptimerobot.py\", \n  \"uri\": [\n    \"lib/ansible/modules/net_tools/basics/uri.py\"\n  ], \n  \"uri module\": [\n    \"lib/ansible/modules/net_tools/basics/uri.py\"\n  ], \n  \"urpmi\": \"lib/ansible/modules/packaging/os/urpmi.py\", \n  \"urpmi module\": \"lib/ansible/modules/packaging/os/urpmi.py\", \n  \"user\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"user module\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"user, may be others\": [\n    \"lib/ansible/modules/system/user.py\"\n  ], \n  \"utilities/helper/_accelerate\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n  \"utilities/helper/_accelerate.py\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n  \"utilities/helper/accelerate\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n  \"utilities/helper/accelerate.py\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n  \"utilities/helper/meta\": \"lib/ansible/modules/utilities/helper/meta.py\", \n  \"utilities/helper/meta.py\": \"lib/ansible/modules/utilities/helper/meta.py\", \n  \"utilities/logic/_include\": \"lib/ansible/modules/utilities/logic/_include.py\", \n  \"utilities/logic/_include.py\": \"lib/ansible/modules/utilities/logic/_include.py\", \n  \"utilities/logic/assert\": \"lib/ansible/modules/utilities/logic/assert.py\", \n  \"utilities/logic/assert.py\": \"lib/ansible/modules/utilities/logic/assert.py\", \n  \"utilities/logic/async_status\": \"lib/ansible/modules/utilities/logic/async_status.py\", \n  \"utilities/logic/async_status.py\": \"lib/ansible/modules/utilities/logic/async_status.py\", \n  \"utilities/logic/async_wrapper\": \"lib/ansible/modules/utilities/logic/async_wrapper.py\", \n  \"utilities/logic/async_wrapper.py\": \"lib/ansible/modules/utilities/logic/async_wrapper.py\", \n  \"utilities/logic/debug\": \"lib/ansible/modules/utilities/logic/debug.py\", \n  \"utilities/logic/debug.py\": \"lib/ansible/modules/utilities/logic/debug.py\", \n  \"utilities/logic/fail\": \"lib/ansible/modules/utilities/logic/fail.py\", \n  \"utilities/logic/fail.py\": \"lib/ansible/modules/utilities/logic/fail.py\", \n  \"utilities/logic/import_playbook\": \"lib/ansible/modules/utilities/logic/import_playbook.py\", \n  \"utilities/logic/import_playbook.py\": \"lib/ansible/modules/utilities/logic/import_playbook.py\", \n  \"utilities/logic/import_role\": \"lib/ansible/modules/utilities/logic/import_role.py\", \n  \"utilities/logic/import_role.py\": \"lib/ansible/modules/utilities/logic/import_role.py\", \n  \"utilities/logic/import_tasks\": \"lib/ansible/modules/utilities/logic/import_tasks.py\", \n  \"utilities/logic/import_tasks.py\": \"lib/ansible/modules/utilities/logic/import_tasks.py\", \n  \"utilities/logic/include\": \"lib/ansible/modules/utilities/logic/_include.py\", \n  \"utilities/logic/include.py\": \"lib/ansible/modules/utilities/logic/_include.py\", \n  \"utilities/logic/include_role\": \"lib/ansible/modules/utilities/logic/include_role.py\", \n  \"utilities/logic/include_role.py\": \"lib/ansible/modules/utilities/logic/include_role.py\", \n  \"utilities/logic/include_tasks\": \"lib/ansible/modules/utilities/logic/include_tasks.py\", \n  \"utilities/logic/include_tasks.py\": \"lib/ansible/modules/utilities/logic/include_tasks.py\", \n  \"utilities/logic/include_vars\": \"lib/ansible/modules/utilities/logic/include_vars.py\", \n  \"utilities/logic/include_vars.py\": \"lib/ansible/modules/utilities/logic/include_vars.py\", \n  \"utilities/logic/pause\": \"lib/ansible/modules/utilities/logic/pause.py\", \n  \"utilities/logic/pause.py\": \"lib/ansible/modules/utilities/logic/pause.py\", \n  \"utilities/logic/set_fact\": \"lib/ansible/modules/utilities/logic/set_fact.py\", \n  \"utilities/logic/set_fact.py\": \"lib/ansible/modules/utilities/logic/set_fact.py\", \n  \"utilities/logic/set_stats\": \"lib/ansible/modules/utilities/logic/set_stats.py\", \n  \"utilities/logic/set_stats.py\": \"lib/ansible/modules/utilities/logic/set_stats.py\", \n  \"utilities/logic/wait_for\": \"lib/ansible/modules/utilities/logic/wait_for.py\", \n  \"utilities/logic/wait_for.py\": \"lib/ansible/modules/utilities/logic/wait_for.py\", \n  \"utilities/logic/wait_for_connection\": \"lib/ansible/modules/utilities/logic/wait_for_connection.py\", \n  \"utilities/logic/wait_for_connection.py\": \"lib/ansible/modules/utilities/logic/wait_for_connection.py\", \n  \"utils/vars.py\": [\n    \"lib/ansible/utils/vars.py\"\n  ], \n  \"validate-modules\": [\n    \"test/sanity/validate-modules\"\n  ], \n  \"variable folders\": [], \n  \"variable parser\": [], \n  \"variable precedence\": [], \n  \"variables\": [], \n  \"vars\": [\n    \"lib/ansible/template/vars.py\"\n  ], \n  \"vars injected before conditional of include_role task\": [\n    \"lib/ansible/playbook/conditional.py\", \n    \"lib/ansible/playbook/role/include.py\"\n  ], \n  \"vars_plugins\": [], \n  \"vars_prompt\": [], \n  \"vars_prompt/playbook include\": [\n    \"lib/ansible/modules/utilities/logic/_include.py\"\n  ], \n  \"vault\": [\n    \"lib/ansible/parsing/vault\"\n  ], \n  \"vault\\ndocs\": [\n    \"docs\", \n    \"lib/ansible/parsing/vault\"\n  ], \n  \"vault documentation\": [\n    \"lib/ansible/parsing/vault\"\n  ], \n  \"vault edit\": [\n    \"lib/ansible/parsing/vault\"\n  ], \n  \"vca_fw\": \"lib/ansible/modules/cloud/vmware/vca_fw.py\", \n  \"vca_fw module\": \"lib/ansible/modules/cloud/vmware/vca_fw.py\", \n  \"vca_nat\": \"lib/ansible/modules/cloud/vmware/vca_nat.py\", \n  \"vca_nat module\": \"lib/ansible/modules/cloud/vmware/vca_nat.py\", \n  \"vca_vapp\": [\n    \"lib/ansible/modules/cloud/vmware/vca_vapp.py\"\n  ], \n  \"vca_vapp module\": \"lib/ansible/modules/cloud/vmware/vca_vapp.py\", \n  \"vcenter_license\": \"lib/ansible/modules/cloud/vmware/vcenter_license.py\", \n  \"vcenter_license module\": \"lib/ansible/modules/cloud/vmware/vcenter_license.py\", \n  \"vdirect_file\": \"lib/ansible/modules/network/radware/vdirect_file.py\", \n  \"vdirect_file module\": \"lib/ansible/modules/network/radware/vdirect_file.py\", \n  \"vertica_configuration\": \"lib/ansible/modules/database/vertica/vertica_configuration.py\", \n  \"vertica_configuration module\": \"lib/ansible/modules/database/vertica/vertica_configuration.py\", \n  \"vertica_facts\": \"lib/ansible/modules/database/vertica/vertica_facts.py\", \n  \"vertica_facts module\": \"lib/ansible/modules/database/vertica/vertica_facts.py\", \n  \"vertica_role\": \"lib/ansible/modules/database/vertica/vertica_role.py\", \n  \"vertica_role module\": \"lib/ansible/modules/database/vertica/vertica_role.py\", \n  \"vertica_schema\": \"lib/ansible/modules/database/vertica/vertica_schema.py\", \n  \"vertica_schema module\": \"lib/ansible/modules/database/vertica/vertica_schema.py\", \n  \"vertica_user\": \"lib/ansible/modules/database/vertica/vertica_user.py\", \n  \"vertica_user module\": \"lib/ansible/modules/database/vertica/vertica_user.py\", \n  \"virt\": \"lib/ansible/modules/cloud/misc/virt.py\", \n  \"virt module\": \"lib/ansible/modules/cloud/misc/virt.py\", \n  \"virt modules\": [\n    \"lib/ansible/modules/cloud/ovirt\"\n  ], \n  \"virt_net\": [\n    \"lib/ansible/modules/cloud/misc/virt_net.py\"\n  ], \n  \"virt_net module\": \"lib/ansible/modules/cloud/misc/virt_net.py\", \n  \"virt_pool\": \"lib/ansible/modules/cloud/misc/virt_pool.py\", \n  \"virt_pool module\": \"lib/ansible/modules/cloud/misc/virt_pool.py\", \n  \"vmadm\": \"lib/ansible/modules/cloud/smartos/vmadm.py\", \n  \"vmadm module\": \"lib/ansible/modules/cloud/smartos/vmadm.py\", \n  \"vmware_Guest\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"vmware_cluster\": \"lib/ansible/modules/cloud/vmware/vmware_cluster.py\", \n  \"vmware_cluster module\": \"lib/ansible/modules/cloud/vmware/vmware_cluster.py\", \n  \"vmware_datacenter\": \"lib/ansible/modules/cloud/vmware/vmware_datacenter.py\", \n  \"vmware_datacenter module\": \"lib/ansible/modules/cloud/vmware/vmware_datacenter.py\", \n  \"vmware_dns_config\": \"lib/ansible/modules/cloud/vmware/vmware_dns_config.py\", \n  \"vmware_dns_config module\": \"lib/ansible/modules/cloud/vmware/vmware_dns_config.py\", \n  \"vmware_dvs_host\": \"lib/ansible/modules/cloud/vmware/vmware_dvs_host.py\", \n  \"vmware_dvs_host module\": \"lib/ansible/modules/cloud/vmware/vmware_dvs_host.py\", \n  \"vmware_dvs_portgroup\": \"lib/ansible/modules/cloud/vmware/vmware_dvs_portgroup.py\", \n  \"vmware_dvs_portgroup module\": \"lib/ansible/modules/cloud/vmware/vmware_dvs_portgroup.py\", \n  \"vmware_dvswitch\": \"lib/ansible/modules/cloud/vmware/vmware_dvswitch.py\", \n  \"vmware_dvswitch module\": \"lib/ansible/modules/cloud/vmware/vmware_dvswitch.py\", \n  \"vmware_guest\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"vmware_guest\\nCreating a new VM from a template.\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"vmware_guest\\nvmware_vm_facts\\nPotentially, all vmware_* modules\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"lib/ansible/modules/cloud/vmware/vmware_vm_facts.py\"\n  ], \n  \"vmware_guest Module\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"vmware_guest module\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"vmware_guest.py\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest.py\"\n  ], \n  \"vmware_guest_facts\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest_facts.py\"\n  ], \n  \"vmware_guest_facts\\nvmware_guest_find\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest_facts.py\", \n    \"lib/ansible/modules/cloud/vmware/vmware_guest_find.py\"\n  ], \n  \"vmware_guest_facts module\": \"lib/ansible/modules/cloud/vmware/vmware_guest_facts.py\", \n  \"vmware_guest_find\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest_find.py\"\n  ], \n  \"vmware_guest_find module\": \"lib/ansible/modules/cloud/vmware/vmware_guest_find.py\", \n  \"vmware_guest_powerstate\": \"lib/ansible/modules/cloud/vmware/vmware_guest_powerstate.py\", \n  \"vmware_guest_powerstate module\": \"lib/ansible/modules/cloud/vmware/vmware_guest_powerstate.py\", \n  \"vmware_guest_snapshot\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_guest_snapshot.py\"\n  ], \n  \"vmware_guest_snapshot module\": \"lib/ansible/modules/cloud/vmware/vmware_guest_snapshot.py\", \n  \"vmware_guest_tools_wait\": \"lib/ansible/modules/cloud/vmware/vmware_guest_tools_wait.py\", \n  \"vmware_guest_tools_wait module\": \"lib/ansible/modules/cloud/vmware/vmware_guest_tools_wait.py\", \n  \"vmware_host\": \"lib/ansible/modules/cloud/vmware/vmware_host.py\", \n  \"vmware_host module\": \"lib/ansible/modules/cloud/vmware/vmware_host.py\", \n  \"vmware_inventory\": [\n    \"contrib/inventory/vmware_inventory.py\"\n  ], \n  \"vmware_local_user_manager\": \"lib/ansible/modules/cloud/vmware/vmware_local_user_manager.py\", \n  \"vmware_local_user_manager module\": \"lib/ansible/modules/cloud/vmware/vmware_local_user_manager.py\", \n  \"vmware_local_user_manager.py\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_local_user_manager.py\"\n  ], \n  \"vmware_maintenancemode\": \"lib/ansible/modules/cloud/vmware/vmware_maintenancemode.py\", \n  \"vmware_maintenancemode module\": \"lib/ansible/modules/cloud/vmware/vmware_maintenancemode.py\", \n  \"vmware_migrate_vmk\": \"lib/ansible/modules/cloud/vmware/vmware_migrate_vmk.py\", \n  \"vmware_migrate_vmk module\": \"lib/ansible/modules/cloud/vmware/vmware_migrate_vmk.py\", \n  \"vmware_module\": [], \n  \"vmware_portgroup\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_portgroup.py\"\n  ], \n  \"vmware_portgroup module\": \"lib/ansible/modules/cloud/vmware/vmware_portgroup.py\", \n  \"vmware_resource_pool\": \"lib/ansible/modules/cloud/vmware/vmware_resource_pool.py\", \n  \"vmware_resource_pool module\": \"lib/ansible/modules/cloud/vmware/vmware_resource_pool.py\", \n  \"vmware_target_canonical_facts\": \"lib/ansible/modules/cloud/vmware/vmware_target_canonical_facts.py\", \n  \"vmware_target_canonical_facts module\": \"lib/ansible/modules/cloud/vmware/vmware_target_canonical_facts.py\", \n  \"vmware_vm_facts\": \"lib/ansible/modules/cloud/vmware/vmware_vm_facts.py\", \n  \"vmware_vm_facts module\": \"lib/ansible/modules/cloud/vmware/vmware_vm_facts.py\", \n  \"vmware_vm_shell\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_vm_shell.py\"\n  ], \n  \"vmware_vm_shell\\nn\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_vm_shell.py\"\n  ], \n  \"vmware_vm_shell module\": \"lib/ansible/modules/cloud/vmware/vmware_vm_shell.py\", \n  \"vmware_vm_vss_dvs_migrate\": \"lib/ansible/modules/cloud/vmware/vmware_vm_vss_dvs_migrate.py\", \n  \"vmware_vm_vss_dvs_migrate module\": \"lib/ansible/modules/cloud/vmware/vmware_vm_vss_dvs_migrate.py\", \n  \"vmware_vmkernel\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel.py\", \n  \"vmware_vmkernel module\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel.py\", \n  \"vmware_vmkernel_ip_config\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel_ip_config.py\", \n  \"vmware_vmkernel_ip_config module\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel_ip_config.py\", \n  \"vmware_vmotion\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_vmotion.py\"\n  ], \n  \"vmware_vmotion module\": \"lib/ansible/modules/cloud/vmware/vmware_vmotion.py\", \n  \"vmware_vsan_cluster\": \"lib/ansible/modules/cloud/vmware/vmware_vsan_cluster.py\", \n  \"vmware_vsan_cluster module\": \"lib/ansible/modules/cloud/vmware/vmware_vsan_cluster.py\", \n  \"vmware_vswitch\": [\n    \"lib/ansible/modules/cloud/vmware/vmware_vswitch.py\"\n  ], \n  \"vmware_vswitch module\": \"lib/ansible/modules/cloud/vmware/vmware_vswitch.py\", \n  \"vpshere_copy\": [], \n  \"vsphere_copy\": \"lib/ansible/modules/cloud/vmware/vsphere_copy.py\", \n  \"vsphere_copy module\": \"lib/ansible/modules/cloud/vmware/vsphere_copy.py\", \n  \"vsphere_guest\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"vsphere_guest - vm_extra_config\": [], \n  \"vsphere_guest module\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"vsphere_guest using vm_disk\": [], \n  \"vsphere_guest.py\": [\n    \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\"\n  ], \n  \"vyos_banner\": \"lib/ansible/modules/network/vyos/vyos_banner.py\", \n  \"vyos_banner module\": \"lib/ansible/modules/network/vyos/vyos_banner.py\", \n  \"vyos_command\": \"lib/ansible/modules/network/vyos/vyos_command.py\", \n  \"vyos_command module\": \"lib/ansible/modules/network/vyos/vyos_command.py\", \n  \"vyos_config\": \"lib/ansible/modules/network/vyos/vyos_config.py\", \n  \"vyos_config module\": \"lib/ansible/modules/network/vyos/vyos_config.py\", \n  \"vyos_facts\": \"lib/ansible/modules/network/vyos/vyos_facts.py\", \n  \"vyos_facts module\": \"lib/ansible/modules/network/vyos/vyos_facts.py\", \n  \"vyos_interface\": \"lib/ansible/modules/network/vyos/vyos_interface.py\", \n  \"vyos_interface module\": \"lib/ansible/modules/network/vyos/vyos_interface.py\", \n  \"vyos_l3_interface\": \"lib/ansible/modules/network/vyos/vyos_l3_interface.py\", \n  \"vyos_l3_interface module\": \"lib/ansible/modules/network/vyos/vyos_l3_interface.py\", \n  \"vyos_linkagg\": \"lib/ansible/modules/network/vyos/vyos_linkagg.py\", \n  \"vyos_linkagg module\": \"lib/ansible/modules/network/vyos/vyos_linkagg.py\", \n  \"vyos_lldp\": \"lib/ansible/modules/network/vyos/vyos_lldp.py\", \n  \"vyos_lldp module\": \"lib/ansible/modules/network/vyos/vyos_lldp.py\", \n  \"vyos_lldp_interface\": \"lib/ansible/modules/network/vyos/vyos_lldp_interface.py\", \n  \"vyos_lldp_interface module\": \"lib/ansible/modules/network/vyos/vyos_lldp_interface.py\", \n  \"vyos_logging\": \"lib/ansible/modules/network/vyos/vyos_logging.py\", \n  \"vyos_logging module\": \"lib/ansible/modules/network/vyos/vyos_logging.py\", \n  \"vyos_static_route\": \"lib/ansible/modules/network/vyos/vyos_static_route.py\", \n  \"vyos_static_route module\": \"lib/ansible/modules/network/vyos/vyos_static_route.py\", \n  \"vyos_system\": \"lib/ansible/modules/network/vyos/vyos_system.py\", \n  \"vyos_system module\": \"lib/ansible/modules/network/vyos/vyos_system.py\", \n  \"vyos_user\": \"lib/ansible/modules/network/vyos/vyos_user.py\", \n  \"vyos_user module\": \"lib/ansible/modules/network/vyos/vyos_user.py\", \n  \"vyos_vlan\": \"lib/ansible/modules/network/vyos/vyos_vlan.py\", \n  \"vyos_vlan module\": \"lib/ansible/modules/network/vyos/vyos_vlan.py\", \n  \"wait_for\": [\n    \"lib/ansible/modules/utilities/logic/wait_for.py\"\n  ], \n  \"wait_for module\": [\n    \"lib/ansible/modules/utilities/logic/wait_for.py\"\n  ], \n  \"wait_for_connection\": [\n    \"lib/ansible/modules/utilities/logic/wait_for_connection.py\"\n  ], \n  \"wait_for_connection module\": \"lib/ansible/modules/utilities/logic/wait_for_connection.py\", \n  \"wakeonlan\": \"lib/ansible/modules/remote_management/wakeonlan.py\", \n  \"wakeonlan module\": \"lib/ansible/modules/remote_management/wakeonlan.py\", \n  \"web_infrastructure/ansible_tower/tower_credential\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_credential.py\", \n  \"web_infrastructure/ansible_tower/tower_credential.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_credential.py\", \n  \"web_infrastructure/ansible_tower/tower_group\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_group.py\", \n  \"web_infrastructure/ansible_tower/tower_group.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_group.py\", \n  \"web_infrastructure/ansible_tower/tower_host\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_host.py\", \n  \"web_infrastructure/ansible_tower/tower_host.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_host.py\", \n  \"web_infrastructure/ansible_tower/tower_inventory\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_inventory.py\", \n  \"web_infrastructure/ansible_tower/tower_inventory.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_inventory.py\", \n  \"web_infrastructure/ansible_tower/tower_job_cancel\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_cancel.py\", \n  \"web_infrastructure/ansible_tower/tower_job_cancel.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_cancel.py\", \n  \"web_infrastructure/ansible_tower/tower_job_launch\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_launch.py\", \n  \"web_infrastructure/ansible_tower/tower_job_launch.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_launch.py\", \n  \"web_infrastructure/ansible_tower/tower_job_list\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_list.py\", \n  \"web_infrastructure/ansible_tower/tower_job_list.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_list.py\", \n  \"web_infrastructure/ansible_tower/tower_job_template\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_template.py\", \n  \"web_infrastructure/ansible_tower/tower_job_template.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_template.py\", \n  \"web_infrastructure/ansible_tower/tower_job_wait\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_wait.py\", \n  \"web_infrastructure/ansible_tower/tower_job_wait.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_wait.py\", \n  \"web_infrastructure/ansible_tower/tower_label\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_label.py\", \n  \"web_infrastructure/ansible_tower/tower_label.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_label.py\", \n  \"web_infrastructure/ansible_tower/tower_organization\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_organization.py\", \n  \"web_infrastructure/ansible_tower/tower_organization.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_organization.py\", \n  \"web_infrastructure/ansible_tower/tower_project\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_project.py\", \n  \"web_infrastructure/ansible_tower/tower_project.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_project.py\", \n  \"web_infrastructure/ansible_tower/tower_role\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_role.py\", \n  \"web_infrastructure/ansible_tower/tower_role.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_role.py\", \n  \"web_infrastructure/ansible_tower/tower_team\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_team.py\", \n  \"web_infrastructure/ansible_tower/tower_team.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_team.py\", \n  \"web_infrastructure/ansible_tower/tower_user\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_user.py\", \n  \"web_infrastructure/ansible_tower/tower_user.py\": \"lib/ansible/modules/web_infrastructure/ansible_tower/tower_user.py\", \n  \"web_infrastructure/apache2_mod_proxy\": \"lib/ansible/modules/web_infrastructure/apache2_mod_proxy.py\", \n  \"web_infrastructure/apache2_mod_proxy.py\": \"lib/ansible/modules/web_infrastructure/apache2_mod_proxy.py\", \n  \"web_infrastructure/apache2_module\": \"lib/ansible/modules/web_infrastructure/apache2_module.py\", \n  \"web_infrastructure/apache2_module.py\": \"lib/ansible/modules/web_infrastructure/apache2_module.py\", \n  \"web_infrastructure/deploy_helper\": \"lib/ansible/modules/web_infrastructure/deploy_helper.py\", \n  \"web_infrastructure/deploy_helper.py\": \"lib/ansible/modules/web_infrastructure/deploy_helper.py\", \n  \"web_infrastructure/django_manage\": \"lib/ansible/modules/web_infrastructure/django_manage.py\", \n  \"web_infrastructure/django_manage.py\": \"lib/ansible/modules/web_infrastructure/django_manage.py\", \n  \"web_infrastructure/ejabberd_user\": \"lib/ansible/modules/web_infrastructure/ejabberd_user.py\", \n  \"web_infrastructure/ejabberd_user.py\": \"lib/ansible/modules/web_infrastructure/ejabberd_user.py\", \n  \"web_infrastructure/gunicorn\": \"lib/ansible/modules/web_infrastructure/gunicorn.py\", \n  \"web_infrastructure/gunicorn.py\": \"lib/ansible/modules/web_infrastructure/gunicorn.py\", \n  \"web_infrastructure/htpasswd\": \"lib/ansible/modules/web_infrastructure/htpasswd.py\", \n  \"web_infrastructure/htpasswd.py\": \"lib/ansible/modules/web_infrastructure/htpasswd.py\", \n  \"web_infrastructure/jboss\": \"lib/ansible/modules/web_infrastructure/jboss.py\", \n  \"web_infrastructure/jboss.py\": \"lib/ansible/modules/web_infrastructure/jboss.py\", \n  \"web_infrastructure/jenkins_job\": \"lib/ansible/modules/web_infrastructure/jenkins_job.py\", \n  \"web_infrastructure/jenkins_job.py\": \"lib/ansible/modules/web_infrastructure/jenkins_job.py\", \n  \"web_infrastructure/jenkins_plugin\": \"lib/ansible/modules/web_infrastructure/jenkins_plugin.py\", \n  \"web_infrastructure/jenkins_plugin.py\": \"lib/ansible/modules/web_infrastructure/jenkins_plugin.py\", \n  \"web_infrastructure/jenkins_script\": \"lib/ansible/modules/web_infrastructure/jenkins_script.py\", \n  \"web_infrastructure/jenkins_script.py\": \"lib/ansible/modules/web_infrastructure/jenkins_script.py\", \n  \"web_infrastructure/jira\": \"lib/ansible/modules/web_infrastructure/jira.py\", \n  \"web_infrastructure/jira.py\": \"lib/ansible/modules/web_infrastructure/jira.py\", \n  \"web_infrastructure/letsencrypt\": \"lib/ansible/modules/web_infrastructure/letsencrypt.py\", \n  \"web_infrastructure/letsencrypt.py\": \"lib/ansible/modules/web_infrastructure/letsencrypt.py\", \n  \"web_infrastructure/nginx_status_facts\": \"lib/ansible/modules/web_infrastructure/nginx_status_facts.py\", \n  \"web_infrastructure/nginx_status_facts.py\": \"lib/ansible/modules/web_infrastructure/nginx_status_facts.py\", \n  \"web_infrastructure/rundeck_acl_policy\": \"lib/ansible/modules/web_infrastructure/rundeck_acl_policy.py\", \n  \"web_infrastructure/rundeck_acl_policy.py\": \"lib/ansible/modules/web_infrastructure/rundeck_acl_policy.py\", \n  \"web_infrastructure/rundeck_project\": \"lib/ansible/modules/web_infrastructure/rundeck_project.py\", \n  \"web_infrastructure/rundeck_project.py\": \"lib/ansible/modules/web_infrastructure/rundeck_project.py\", \n  \"web_infrastructure/supervisorctl\": \"lib/ansible/modules/web_infrastructure/supervisorctl.py\", \n  \"web_infrastructure/supervisorctl.py\": \"lib/ansible/modules/web_infrastructure/supervisorctl.py\", \n  \"web_infrastructure/taiga_issue\": \"lib/ansible/modules/web_infrastructure/taiga_issue.py\", \n  \"web_infrastructure/taiga_issue.py\": \"lib/ansible/modules/web_infrastructure/taiga_issue.py\", \n  \"webfaction_app\": \"lib/ansible/modules/cloud/webfaction/webfaction_app.py\", \n  \"webfaction_app module\": \"lib/ansible/modules/cloud/webfaction/webfaction_app.py\", \n  \"webfaction_db\": \"lib/ansible/modules/cloud/webfaction/webfaction_db.py\", \n  \"webfaction_db module\": \"lib/ansible/modules/cloud/webfaction/webfaction_db.py\", \n  \"webfaction_domain\": \"lib/ansible/modules/cloud/webfaction/webfaction_domain.py\", \n  \"webfaction_domain module\": \"lib/ansible/modules/cloud/webfaction/webfaction_domain.py\", \n  \"webfaction_mailbox\": \"lib/ansible/modules/cloud/webfaction/webfaction_mailbox.py\", \n  \"webfaction_mailbox module\": \"lib/ansible/modules/cloud/webfaction/webfaction_mailbox.py\", \n  \"webfaction_site\": \"lib/ansible/modules/cloud/webfaction/webfaction_site.py\", \n  \"webfaction_site module\": \"lib/ansible/modules/cloud/webfaction/webfaction_site.py\", \n  \"win_acl\": [\n    \"lib/ansible/modules/windows/win_acl.ps1\"\n  ], \n  \"win_acl module\": [\n    \"lib/ansible/modules/windows/win_acl.ps1\"\n  ], \n  \"win_acl_inheritance\": \"lib/ansible/modules/windows/win_acl_inheritance.py\", \n  \"win_acl_inheritance module\": \"lib/ansible/modules/windows/win_acl_inheritance.py\", \n  \"win_audit_rule\": \"lib/ansible/modules/windows/win_audit_rule.py\", \n  \"win_audit_rule module\": \"lib/ansible/modules/windows/win_audit_rule.py\", \n  \"win_become\": [], \n  \"win_chocolatey\": [\n    \"lib/ansible/modules/windows/win_chocolatey.ps1\"\n  ], \n  \"win_chocolatey module\": [\n    \"lib/ansible/modules/windows/win_chocolatey.ps1\"\n  ], \n  \"win_chocolatey win_get_url win_package win_reboot\": [\n    \"lib/ansible/modules/windows/win_get_url.ps1\", \n    \"lib/ansible/modules/windows/win_package.ps1\", \n    \"lib/ansible/modules/windows/win_reboot.py\"\n  ], \n  \"win_command\": [\n    \"lib/ansible/modules/windows/win_command.ps1\"\n  ], \n  \"win_command\\nwin_shell\\nwin_stat\\n+ others?\": [\n    \"lib/ansible/modules/windows/win_command.ps1\", \n    \"lib/ansible/modules/windows/win_shell.ps1\", \n    \"lib/ansible/modules/windows/win_stat.ps1\"\n  ], \n  \"win_command module\": \"lib/ansible/modules/windows/win_command.ps1\", \n  \"win_copy\": [\n    \"lib/ansible/modules/windows/win_copy.py\"\n  ], \n  \"win_copy module\": \"lib/ansible/modules/windows/win_copy.py\", \n  \"win_defrag\": \"lib/ansible/modules/windows/win_defrag.py\", \n  \"win_defrag module\": \"lib/ansible/modules/windows/win_defrag.py\", \n  \"win_disk_image\": \"lib/ansible/modules/windows/win_disk_image.py\", \n  \"win_disk_image module\": \"lib/ansible/modules/windows/win_disk_image.py\", \n  \"win_dns_client\": [\n    \"lib/ansible/modules/windows/win_dns_client.py\"\n  ], \n  \"win_dns_client module\": \"lib/ansible/modules/windows/win_dns_client.py\", \n  \"win_domain\": \"lib/ansible/modules/windows/win_domain.ps1\", \n  \"win_domain module\": \"lib/ansible/modules/windows/win_domain.ps1\", \n  \"win_domain_controller\": [\n    \"lib/ansible/modules/windows/win_domain_controller.py\"\n  ], \n  \"win_domain_controller module\": \"lib/ansible/modules/windows/win_domain_controller.py\", \n  \"win_domain_group\": \"lib/ansible/modules/windows/win_domain_group.py\", \n  \"win_domain_group module\": \"lib/ansible/modules/windows/win_domain_group.py\", \n  \"win_domain_membership\": [\n    \"lib/ansible/modules/windows/win_domain_membership.py\"\n  ], \n  \"win_domain_membership module\": \"lib/ansible/modules/windows/win_domain_membership.py\", \n  \"win_domain_user\": \"lib/ansible/modules/windows/win_domain_user.ps1\", \n  \"win_domain_user module\": \"lib/ansible/modules/windows/win_domain_user.ps1\", \n  \"win_dotnet_ngen\": \"lib/ansible/modules/windows/win_dotnet_ngen.ps1\", \n  \"win_dotnet_ngen module\": \"lib/ansible/modules/windows/win_dotnet_ngen.ps1\", \n  \"win_dsc\": [\n    \"lib/ansible/modules/windows/win_dsc.py\"\n  ], \n  \"win_dsc module\": \"lib/ansible/modules/windows/win_dsc.py\", \n  \"win_environment\": [\n    \"lib/ansible/modules/windows/win_environment.py\"\n  ], \n  \"win_environment module\": \"lib/ansible/modules/windows/win_environment.py\", \n  \"win_eventlog\": \"lib/ansible/modules/windows/win_eventlog.py\", \n  \"win_eventlog module\": \"lib/ansible/modules/windows/win_eventlog.py\", \n  \"win_eventlog_entry\": \"lib/ansible/modules/windows/win_eventlog_entry.ps1\", \n  \"win_eventlog_entry module\": \"lib/ansible/modules/windows/win_eventlog_entry.ps1\", \n  \"win_feature\": \"lib/ansible/modules/windows/win_feature.py\", \n  \"win_feature module\": \"lib/ansible/modules/windows/win_feature.py\", \n  \"win_file\": [\n    \"lib/ansible/modules/windows/win_file.ps1\"\n  ], \n  \"win_file module\": \"lib/ansible/modules/windows/win_file.ps1\", \n  \"win_file_version\": \"lib/ansible/modules/windows/win_file_version.ps1\", \n  \"win_file_version module\": \"lib/ansible/modules/windows/win_file_version.ps1\", \n  \"win_find\": [\n    \"lib/ansible/modules/windows/win_find.ps1\"\n  ], \n  \"win_find module\": \"lib/ansible/modules/windows/win_find.ps1\", \n  \"win_firewall\": \"lib/ansible/modules/windows/win_firewall.ps1\", \n  \"win_firewall module\": \"lib/ansible/modules/windows/win_firewall.ps1\", \n  \"win_firewall_rule\": [\n    \"lib/ansible/modules/windows/win_firewall_rule.ps1\"\n  ], \n  \"win_firewall_rule module\": \"lib/ansible/modules/windows/win_firewall_rule.ps1\", \n  \"win_get_url\": [\n    \"lib/ansible/modules/windows/win_get_url.ps1\"\n  ], \n  \"win_get_url module\": [\n    \"lib/ansible/modules/windows/win_get_url.ps1\"\n  ], \n  \"win_group\": \"lib/ansible/modules/windows/win_group.ps1\", \n  \"win_group module\": \"lib/ansible/modules/windows/win_group.ps1\", \n  \"win_group_membership\": \"lib/ansible/modules/windows/win_group_membership.py\", \n  \"win_group_membership module\": \"lib/ansible/modules/windows/win_group_membership.py\", \n  \"win_hotfix\": [\n    \"lib/ansible/modules/windows/win_hotfix.py\"\n  ], \n  \"win_hotfix module\": \"lib/ansible/modules/windows/win_hotfix.py\", \n  \"win_iis_virtualdirectory\": \"lib/ansible/modules/windows/win_iis_virtualdirectory.py\", \n  \"win_iis_virtualdirectory module\": \"lib/ansible/modules/windows/win_iis_virtualdirectory.py\", \n  \"win_iis_webapplication\": [\n    \"lib/ansible/modules/windows/win_iis_webapplication.py\"\n  ], \n  \"win_iis_webapplication module\": [\n    \"lib/ansible/modules/windows/win_iis_webapplication.py\"\n  ], \n  \"win_iis_webapppool\": [\n    \"lib/ansible/modules/windows/win_iis_webapppool.py\"\n  ], \n  \"win_iis_webapppool module\": \"lib/ansible/modules/windows/win_iis_webapppool.py\", \n  \"win_iis_webbinding\": [\n    \"lib/ansible/modules/windows/win_iis_webbinding.ps1\"\n  ], \n  \"win_iis_webbinding module\": [\n    \"lib/ansible/modules/windows/win_iis_webbinding.ps1\"\n  ], \n  \"win_iis_website\": [\n    \"lib/ansible/modules/windows/win_iis_website.py\"\n  ], \n  \"win_iis_website module\": \"lib/ansible/modules/windows/win_iis_website.py\", \n  \"win_lineinfile\": [\n    \"lib/ansible/modules/windows/win_lineinfile.ps1\"\n  ], \n  \"win_lineinfile module\": \"lib/ansible/modules/windows/win_lineinfile.ps1\", \n  \"win_mapped_drive\": \"lib/ansible/modules/windows/win_mapped_drive.ps1\", \n  \"win_mapped_drive module\": \"lib/ansible/modules/windows/win_mapped_drive.ps1\", \n  \"win_msg\": \"lib/ansible/modules/windows/win_msg.ps1\", \n  \"win_msg module\": [\n    \"lib/ansible/modules/windows/win_msg.ps1\"\n  ], \n  \"win_msi\": \"lib/ansible/modules/windows/_win_msi.py\", \n  \"win_msi module\": \"lib/ansible/modules/windows/_win_msi.py\", \n  \"win_nssm\": [\n    \"lib/ansible/modules/windows/win_nssm.py\"\n  ], \n  \"win_nssm module\": [\n    \"lib/ansible/modules/windows/win_nssm.py\"\n  ], \n  \"win_owner\": [\n    \"lib/ansible/modules/windows/win_owner.py\"\n  ], \n  \"win_owner module\": \"lib/ansible/modules/windows/win_owner.py\", \n  \"win_package\": [\n    \"lib/ansible/modules/windows/win_package.ps1\"\n  ], \n  \"win_package module\": \"lib/ansible/modules/windows/win_package.ps1\", \n  \"win_package.ps1\": [\n    \"lib/ansible/modules/windows/win_package.ps1\"\n  ], \n  \"win_pagefile\": \"lib/ansible/modules/windows/win_pagefile.ps1\", \n  \"win_pagefile module\": \"lib/ansible/modules/windows/win_pagefile.ps1\", \n  \"win_path\": \"lib/ansible/modules/windows/win_path.py\", \n  \"win_path module\": \"lib/ansible/modules/windows/win_path.py\", \n  \"win_ping\": \"lib/ansible/modules/windows/win_ping.py\", \n  \"win_ping\\n(but possibly winrm shell)\": [\n    \"lib/ansible/modules/windows/win_ping.py\"\n  ], \n  \"win_ping module\": \"lib/ansible/modules/windows/win_ping.py\", \n  \"win_ping, setup\": [\n    \"lib/ansible/modules/system/setup.py\", \n    \"lib/ansible/modules/windows/win_ping.py\"\n  ], \n  \"win_power_plan\": \"lib/ansible/modules/windows/win_power_plan.py\", \n  \"win_power_plan module\": \"lib/ansible/modules/windows/win_power_plan.py\", \n  \"win_psexec\": \"lib/ansible/modules/windows/win_psexec.py\", \n  \"win_psexec module\": \"lib/ansible/modules/windows/win_psexec.py\", \n  \"win_psmodule\": \"lib/ansible/modules/windows/win_psmodule.py\", \n  \"win_psmodule module\": \"lib/ansible/modules/windows/win_psmodule.py\", \n  \"win_quality_of_service_policy\": [], \n  \"win_rabbitmq_plugin\": \"lib/ansible/modules/windows/win_rabbitmq_plugin.py\", \n  \"win_rabbitmq_plugin module\": \"lib/ansible/modules/windows/win_rabbitmq_plugin.py\", \n  \"win_reboot\": [\n    \"lib/ansible/modules/windows/win_reboot.py\"\n  ], \n  \"win_reboot action plugin\": [\n    \"lib/ansible/plugins/action/win_reboot.py\"\n  ], \n  \"win_reboot module\": [\n    \"lib/ansible/modules/windows/win_reboot.py\"\n  ], \n  \"win_reg_stat\": \"lib/ansible/modules/windows/win_reg_stat.py\", \n  \"win_reg_stat module\": \"lib/ansible/modules/windows/win_reg_stat.py\", \n  \"win_regedit\": [\n    \"lib/ansible/modules/windows/win_regedit.ps1\"\n  ], \n  \"win_regedit module\": \"lib/ansible/modules/windows/win_regedit.ps1\", \n  \"win_regedit.ps1\": [\n    \"lib/ansible/modules/windows/win_regedit.ps1\"\n  ], \n  \"win_region\": \"lib/ansible/modules/windows/win_region.ps1\", \n  \"win_region module\": \"lib/ansible/modules/windows/win_region.ps1\", \n  \"win_regmerge\": [\n    \"lib/ansible/modules/windows/win_regmerge.py\"\n  ], \n  \"win_regmerge module\": \"lib/ansible/modules/windows/win_regmerge.py\", \n  \"win_robocopy\": [\n    \"lib/ansible/modules/windows/win_robocopy.py\"\n  ], \n  \"win_robocopy module\": \"lib/ansible/modules/windows/win_robocopy.py\", \n  \"win_route\": [\n    \"lib/ansible/modules/windows/win_route.py\"\n  ], \n  \"win_route module\": \"lib/ansible/modules/windows/win_route.py\", \n  \"win_say\": \"lib/ansible/modules/windows/win_say.py\", \n  \"win_say module\": \"lib/ansible/modules/windows/win_say.py\", \n  \"win_scheduled_task\": [\n    \"lib/ansible/modules/windows/win_scheduled_task.ps1\"\n  ], \n  \"win_scheduled_task module\": \"lib/ansible/modules/windows/win_scheduled_task.ps1\", \n  \"win_scheduled_task_stat\": \"lib/ansible/modules/windows/win_scheduled_task_stat.ps1\", \n  \"win_scheduled_task_stat module\": \"lib/ansible/modules/windows/win_scheduled_task_stat.ps1\", \n  \"win_security_policy\": \"lib/ansible/modules/windows/win_security_policy.py\", \n  \"win_security_policy module\": \"lib/ansible/modules/windows/win_security_policy.py\", \n  \"win_service\": [\n    \"lib/ansible/modules/windows/win_service.py\"\n  ], \n  \"win_service module\": \"lib/ansible/modules/windows/win_service.py\", \n  \"win_share\": \"lib/ansible/modules/windows/win_share.ps1\", \n  \"win_share module\": \"lib/ansible/modules/windows/win_share.ps1\", \n  \"win_shell\": [\n    \"lib/ansible/modules/windows/win_shell.ps1\"\n  ], \n  \"win_shell module\": \"lib/ansible/modules/windows/win_shell.ps1\", \n  \"win_shortcut\": [\n    \"lib/ansible/modules/windows/win_shortcut.ps1\"\n  ], \n  \"win_shortcut module\": \"lib/ansible/modules/windows/win_shortcut.ps1\", \n  \"win_smart_facts\": [], \n  \"win_stat\": [\n    \"lib/ansible/modules/windows/win_stat.ps1\"\n  ], \n  \"win_stat module\": \"lib/ansible/modules/windows/win_stat.ps1\", \n  \"win_tempfile\": \"lib/ansible/modules/windows/win_tempfile.py\", \n  \"win_tempfile module\": \"lib/ansible/modules/windows/win_tempfile.py\", \n  \"win_template\": [\n    \"lib/ansible/modules/windows/win_template.py\"\n  ], \n  \"win_template module\": \"lib/ansible/modules/windows/win_template.py\", \n  \"win_timezone\": \"lib/ansible/modules/windows/win_timezone.py\", \n  \"win_timezone module\": \"lib/ansible/modules/windows/win_timezone.py\", \n  \"win_toast\": \"lib/ansible/modules/windows/win_toast.ps1\", \n  \"win_toast module\": \"lib/ansible/modules/windows/win_toast.ps1\", \n  \"win_unzip\": \"lib/ansible/modules/windows/win_unzip.ps1\", \n  \"win_unzip module\": \"lib/ansible/modules/windows/win_unzip.ps1\", \n  \"win_updates\": [\n    \"lib/ansible/modules/windows/win_updates.ps1\"\n  ], \n  \"win_updates module\": [\n    \"lib/ansible/modules/windows/win_updates.ps1\"\n  ], \n  \"win_uri\": [\n    \"lib/ansible/modules/windows/win_uri.py\"\n  ], \n  \"win_uri module\": \"lib/ansible/modules/windows/win_uri.py\", \n  \"win_user\": [\n    \"lib/ansible/modules/windows/win_user.py\"\n  ], \n  \"win_user\\nwinrm\": [\n    \"lib/ansible/modules/windows/win_user.py\", \n    \"lib/ansible/plugins/connection/winrm.py\"\n  ], \n  \"win_user module\": \"lib/ansible/modules/windows/win_user.py\", \n  \"win_user_right\": \"lib/ansible/modules/windows/win_user_right.ps1\", \n  \"win_user_right module\": \"lib/ansible/modules/windows/win_user_right.ps1\", \n  \"win_wait_for\": \"lib/ansible/modules/windows/win_wait_for.py\", \n  \"win_wait_for module\": \"lib/ansible/modules/windows/win_wait_for.py\", \n  \"win_wakeonlan\": \"lib/ansible/modules/windows/win_wakeonlan.ps1\", \n  \"win_wakeonlan module\": \"lib/ansible/modules/windows/win_wakeonlan.ps1\", \n  \"win_webpicmd\": \"lib/ansible/modules/windows/win_webpicmd.py\", \n  \"win_webpicmd module\": \"lib/ansible/modules/windows/win_webpicmd.py\", \n  \"win_wininet (proposed name)\": [], \n  \"windows\": [], \n  \"windows certificate authentification\": [], \n  \"windows kerberos\": [], \n  \"windows/_win_msi\": \"lib/ansible/modules/windows/_win_msi.ps1\", \n  \"windows/_win_msi.ps1\": \"lib/ansible/modules/windows/_win_msi.ps1\", \n  \"windows/_win_msi.py\": \"lib/ansible/modules/windows/_win_msi.py\", \n  \"windows/async_status\": \"lib/ansible/modules/windows/async_status.ps1\", \n  \"windows/async_status.ps1\": \"lib/ansible/modules/windows/async_status.ps1\", \n  \"windows/async_wrapper\": \"lib/ansible/modules/windows/async_wrapper.ps1\", \n  \"windows/async_wrapper.ps1\": \"lib/ansible/modules/windows/async_wrapper.ps1\", \n  \"windows/setup\": \"lib/ansible/modules/windows/setup.ps1\", \n  \"windows/setup.ps1\": \"lib/ansible/modules/windows/setup.ps1\", \n  \"windows/slurp\": \"lib/ansible/modules/windows/slurp.ps1\", \n  \"windows/slurp.ps1\": \"lib/ansible/modules/windows/slurp.ps1\", \n  \"windows/win_acl\": \"lib/ansible/modules/windows/win_acl.ps1\", \n  \"windows/win_acl.ps1\": \"lib/ansible/modules/windows/win_acl.ps1\", \n  \"windows/win_acl.py\": \"lib/ansible/modules/windows/win_acl.py\", \n  \"windows/win_acl_inheritance\": \"lib/ansible/modules/windows/win_acl_inheritance.py\", \n  \"windows/win_acl_inheritance.ps1\": \"lib/ansible/modules/windows/win_acl_inheritance.ps1\", \n  \"windows/win_acl_inheritance.py\": \"lib/ansible/modules/windows/win_acl_inheritance.py\", \n  \"windows/win_audit_rule\": \"lib/ansible/modules/windows/win_audit_rule.py\", \n  \"windows/win_audit_rule.ps1\": \"lib/ansible/modules/windows/win_audit_rule.ps1\", \n  \"windows/win_audit_rule.py\": \"lib/ansible/modules/windows/win_audit_rule.py\", \n  \"windows/win_chocolatey\": \"lib/ansible/modules/windows/win_chocolatey.ps1\", \n  \"windows/win_chocolatey.ps1\": \"lib/ansible/modules/windows/win_chocolatey.ps1\", \n  \"windows/win_chocolatey.py\": \"lib/ansible/modules/windows/win_chocolatey.py\", \n  \"windows/win_command\": \"lib/ansible/modules/windows/win_command.ps1\", \n  \"windows/win_command.ps1\": \"lib/ansible/modules/windows/win_command.ps1\", \n  \"windows/win_command.py\": \"lib/ansible/modules/windows/win_command.py\", \n  \"windows/win_copy\": \"lib/ansible/modules/windows/win_copy.py\", \n  \"windows/win_copy.ps1\": \"lib/ansible/modules/windows/win_copy.ps1\", \n  \"windows/win_copy.py\": \"lib/ansible/modules/windows/win_copy.py\", \n  \"windows/win_defrag\": \"lib/ansible/modules/windows/win_defrag.py\", \n  \"windows/win_defrag.ps1\": \"lib/ansible/modules/windows/win_defrag.ps1\", \n  \"windows/win_defrag.py\": \"lib/ansible/modules/windows/win_defrag.py\", \n  \"windows/win_disk_image\": \"lib/ansible/modules/windows/win_disk_image.py\", \n  \"windows/win_disk_image.ps1\": \"lib/ansible/modules/windows/win_disk_image.ps1\", \n  \"windows/win_disk_image.py\": \"lib/ansible/modules/windows/win_disk_image.py\", \n  \"windows/win_dns_client\": \"lib/ansible/modules/windows/win_dns_client.py\", \n  \"windows/win_dns_client.ps1\": \"lib/ansible/modules/windows/win_dns_client.ps1\", \n  \"windows/win_dns_client.py\": \"lib/ansible/modules/windows/win_dns_client.py\", \n  \"windows/win_domain\": \"lib/ansible/modules/windows/win_domain.ps1\", \n  \"windows/win_domain.ps1\": \"lib/ansible/modules/windows/win_domain.ps1\", \n  \"windows/win_domain.py\": \"lib/ansible/modules/windows/win_domain.py\", \n  \"windows/win_domain_controller\": \"lib/ansible/modules/windows/win_domain_controller.py\", \n  \"windows/win_domain_controller.ps1\": \"lib/ansible/modules/windows/win_domain_controller.ps1\", \n  \"windows/win_domain_controller.py\": \"lib/ansible/modules/windows/win_domain_controller.py\", \n  \"windows/win_domain_group\": \"lib/ansible/modules/windows/win_domain_group.py\", \n  \"windows/win_domain_group.ps1\": \"lib/ansible/modules/windows/win_domain_group.ps1\", \n  \"windows/win_domain_group.py\": \"lib/ansible/modules/windows/win_domain_group.py\", \n  \"windows/win_domain_membership\": \"lib/ansible/modules/windows/win_domain_membership.py\", \n  \"windows/win_domain_membership.ps1\": \"lib/ansible/modules/windows/win_domain_membership.ps1\", \n  \"windows/win_domain_membership.py\": \"lib/ansible/modules/windows/win_domain_membership.py\", \n  \"windows/win_domain_user\": \"lib/ansible/modules/windows/win_domain_user.ps1\", \n  \"windows/win_domain_user.ps1\": \"lib/ansible/modules/windows/win_domain_user.ps1\", \n  \"windows/win_domain_user.py\": \"lib/ansible/modules/windows/win_domain_user.py\", \n  \"windows/win_dotnet_ngen\": \"lib/ansible/modules/windows/win_dotnet_ngen.ps1\", \n  \"windows/win_dotnet_ngen.ps1\": \"lib/ansible/modules/windows/win_dotnet_ngen.ps1\", \n  \"windows/win_dotnet_ngen.py\": \"lib/ansible/modules/windows/win_dotnet_ngen.py\", \n  \"windows/win_dsc\": \"lib/ansible/modules/windows/win_dsc.py\", \n  \"windows/win_dsc.ps1\": \"lib/ansible/modules/windows/win_dsc.ps1\", \n  \"windows/win_dsc.py\": \"lib/ansible/modules/windows/win_dsc.py\", \n  \"windows/win_environment\": \"lib/ansible/modules/windows/win_environment.py\", \n  \"windows/win_environment.ps1\": \"lib/ansible/modules/windows/win_environment.ps1\", \n  \"windows/win_environment.py\": \"lib/ansible/modules/windows/win_environment.py\", \n  \"windows/win_eventlog\": \"lib/ansible/modules/windows/win_eventlog.py\", \n  \"windows/win_eventlog.ps1\": \"lib/ansible/modules/windows/win_eventlog.ps1\", \n  \"windows/win_eventlog.py\": \"lib/ansible/modules/windows/win_eventlog.py\", \n  \"windows/win_eventlog_entry\": \"lib/ansible/modules/windows/win_eventlog_entry.ps1\", \n  \"windows/win_eventlog_entry.ps1\": \"lib/ansible/modules/windows/win_eventlog_entry.ps1\", \n  \"windows/win_eventlog_entry.py\": \"lib/ansible/modules/windows/win_eventlog_entry.py\", \n  \"windows/win_feature\": \"lib/ansible/modules/windows/win_feature.py\", \n  \"windows/win_feature.ps1\": \"lib/ansible/modules/windows/win_feature.ps1\", \n  \"windows/win_feature.py\": \"lib/ansible/modules/windows/win_feature.py\", \n  \"windows/win_file\": \"lib/ansible/modules/windows/win_file.ps1\", \n  \"windows/win_file.ps1\": \"lib/ansible/modules/windows/win_file.ps1\", \n  \"windows/win_file.py\": \"lib/ansible/modules/windows/win_file.py\", \n  \"windows/win_file_version\": \"lib/ansible/modules/windows/win_file_version.ps1\", \n  \"windows/win_file_version.ps1\": \"lib/ansible/modules/windows/win_file_version.ps1\", \n  \"windows/win_file_version.py\": \"lib/ansible/modules/windows/win_file_version.py\", \n  \"windows/win_find\": \"lib/ansible/modules/windows/win_find.ps1\", \n  \"windows/win_find.ps1\": \"lib/ansible/modules/windows/win_find.ps1\", \n  \"windows/win_find.py\": \"lib/ansible/modules/windows/win_find.py\", \n  \"windows/win_firewall\": \"lib/ansible/modules/windows/win_firewall.ps1\", \n  \"windows/win_firewall.ps1\": \"lib/ansible/modules/windows/win_firewall.ps1\", \n  \"windows/win_firewall.py\": \"lib/ansible/modules/windows/win_firewall.py\", \n  \"windows/win_firewall_rule\": \"lib/ansible/modules/windows/win_firewall_rule.ps1\", \n  \"windows/win_firewall_rule.ps1\": \"lib/ansible/modules/windows/win_firewall_rule.ps1\", \n  \"windows/win_firewall_rule.py\": \"lib/ansible/modules/windows/win_firewall_rule.py\", \n  \"windows/win_get_url\": \"lib/ansible/modules/windows/win_get_url.ps1\", \n  \"windows/win_get_url.ps1\": \"lib/ansible/modules/windows/win_get_url.ps1\", \n  \"windows/win_get_url.py\": \"lib/ansible/modules/windows/win_get_url.py\", \n  \"windows/win_group\": \"lib/ansible/modules/windows/win_group.ps1\", \n  \"windows/win_group.ps1\": \"lib/ansible/modules/windows/win_group.ps1\", \n  \"windows/win_group.py\": \"lib/ansible/modules/windows/win_group.py\", \n  \"windows/win_group_membership\": \"lib/ansible/modules/windows/win_group_membership.py\", \n  \"windows/win_group_membership.ps1\": \"lib/ansible/modules/windows/win_group_membership.ps1\", \n  \"windows/win_group_membership.py\": \"lib/ansible/modules/windows/win_group_membership.py\", \n  \"windows/win_hotfix\": \"lib/ansible/modules/windows/win_hotfix.py\", \n  \"windows/win_hotfix.ps1\": \"lib/ansible/modules/windows/win_hotfix.ps1\", \n  \"windows/win_hotfix.py\": \"lib/ansible/modules/windows/win_hotfix.py\", \n  \"windows/win_iis_virtualdirectory\": \"lib/ansible/modules/windows/win_iis_virtualdirectory.py\", \n  \"windows/win_iis_virtualdirectory.ps1\": \"lib/ansible/modules/windows/win_iis_virtualdirectory.ps1\", \n  \"windows/win_iis_virtualdirectory.py\": \"lib/ansible/modules/windows/win_iis_virtualdirectory.py\", \n  \"windows/win_iis_webapplication\": \"lib/ansible/modules/windows/win_iis_webapplication.py\", \n  \"windows/win_iis_webapplication.ps1\": \"lib/ansible/modules/windows/win_iis_webapplication.ps1\", \n  \"windows/win_iis_webapplication.py\": \"lib/ansible/modules/windows/win_iis_webapplication.py\", \n  \"windows/win_iis_webapppool\": \"lib/ansible/modules/windows/win_iis_webapppool.py\", \n  \"windows/win_iis_webapppool.ps1\": \"lib/ansible/modules/windows/win_iis_webapppool.ps1\", \n  \"windows/win_iis_webapppool.py\": \"lib/ansible/modules/windows/win_iis_webapppool.py\", \n  \"windows/win_iis_webbinding\": \"lib/ansible/modules/windows/win_iis_webbinding.ps1\", \n  \"windows/win_iis_webbinding.ps1\": \"lib/ansible/modules/windows/win_iis_webbinding.ps1\", \n  \"windows/win_iis_webbinding.py\": \"lib/ansible/modules/windows/win_iis_webbinding.py\", \n  \"windows/win_iis_website\": \"lib/ansible/modules/windows/win_iis_website.py\", \n  \"windows/win_iis_website.ps1\": \"lib/ansible/modules/windows/win_iis_website.ps1\", \n  \"windows/win_iis_website.py\": \"lib/ansible/modules/windows/win_iis_website.py\", \n  \"windows/win_lineinfile\": \"lib/ansible/modules/windows/win_lineinfile.ps1\", \n  \"windows/win_lineinfile.ps1\": \"lib/ansible/modules/windows/win_lineinfile.ps1\", \n  \"windows/win_lineinfile.py\": \"lib/ansible/modules/windows/win_lineinfile.py\", \n  \"windows/win_mapped_drive\": \"lib/ansible/modules/windows/win_mapped_drive.ps1\", \n  \"windows/win_mapped_drive.ps1\": \"lib/ansible/modules/windows/win_mapped_drive.ps1\", \n  \"windows/win_mapped_drive.py\": \"lib/ansible/modules/windows/win_mapped_drive.py\", \n  \"windows/win_msg\": \"lib/ansible/modules/windows/win_msg.ps1\", \n  \"windows/win_msg.ps1\": \"lib/ansible/modules/windows/win_msg.ps1\", \n  \"windows/win_msg.py\": \"lib/ansible/modules/windows/win_msg.py\", \n  \"windows/win_msi\": \"lib/ansible/modules/windows/_win_msi.py\", \n  \"windows/win_msi.ps1\": \"lib/ansible/modules/windows/_win_msi.ps1\", \n  \"windows/win_msi.py\": \"lib/ansible/modules/windows/_win_msi.py\", \n  \"windows/win_nssm\": \"lib/ansible/modules/windows/win_nssm.py\", \n  \"windows/win_nssm.ps1\": \"lib/ansible/modules/windows/win_nssm.ps1\", \n  \"windows/win_nssm.py\": \"lib/ansible/modules/windows/win_nssm.py\", \n  \"windows/win_owner\": \"lib/ansible/modules/windows/win_owner.py\", \n  \"windows/win_owner.ps1\": \"lib/ansible/modules/windows/win_owner.ps1\", \n  \"windows/win_owner.py\": \"lib/ansible/modules/windows/win_owner.py\", \n  \"windows/win_package\": \"lib/ansible/modules/windows/win_package.ps1\", \n  \"windows/win_package.ps1\": \"lib/ansible/modules/windows/win_package.ps1\", \n  \"windows/win_package.py\": \"lib/ansible/modules/windows/win_package.py\", \n  \"windows/win_pagefile\": \"lib/ansible/modules/windows/win_pagefile.ps1\", \n  \"windows/win_pagefile.ps1\": \"lib/ansible/modules/windows/win_pagefile.ps1\", \n  \"windows/win_pagefile.py\": \"lib/ansible/modules/windows/win_pagefile.py\", \n  \"windows/win_path\": \"lib/ansible/modules/windows/win_path.py\", \n  \"windows/win_path.ps1\": \"lib/ansible/modules/windows/win_path.ps1\", \n  \"windows/win_path.py\": \"lib/ansible/modules/windows/win_path.py\", \n  \"windows/win_ping\": \"lib/ansible/modules/windows/win_ping.py\", \n  \"windows/win_ping.ps1\": \"lib/ansible/modules/windows/win_ping.ps1\", \n  \"windows/win_ping.py\": \"lib/ansible/modules/windows/win_ping.py\", \n  \"windows/win_power_plan\": \"lib/ansible/modules/windows/win_power_plan.py\", \n  \"windows/win_power_plan.ps1\": \"lib/ansible/modules/windows/win_power_plan.ps1\", \n  \"windows/win_power_plan.py\": \"lib/ansible/modules/windows/win_power_plan.py\", \n  \"windows/win_psexec\": \"lib/ansible/modules/windows/win_psexec.py\", \n  \"windows/win_psexec.ps1\": \"lib/ansible/modules/windows/win_psexec.ps1\", \n  \"windows/win_psexec.py\": \"lib/ansible/modules/windows/win_psexec.py\", \n  \"windows/win_psmodule\": \"lib/ansible/modules/windows/win_psmodule.py\", \n  \"windows/win_psmodule.ps1\": \"lib/ansible/modules/windows/win_psmodule.ps1\", \n  \"windows/win_psmodule.py\": \"lib/ansible/modules/windows/win_psmodule.py\", \n  \"windows/win_rabbitmq_plugin\": \"lib/ansible/modules/windows/win_rabbitmq_plugin.py\", \n  \"windows/win_rabbitmq_plugin.ps1\": \"lib/ansible/modules/windows/win_rabbitmq_plugin.ps1\", \n  \"windows/win_rabbitmq_plugin.py\": \"lib/ansible/modules/windows/win_rabbitmq_plugin.py\", \n  \"windows/win_reboot\": \"lib/ansible/modules/windows/win_reboot.py\", \n  \"windows/win_reboot.py\": \"lib/ansible/modules/windows/win_reboot.py\", \n  \"windows/win_reg_stat\": \"lib/ansible/modules/windows/win_reg_stat.py\", \n  \"windows/win_reg_stat.ps1\": \"lib/ansible/modules/windows/win_reg_stat.ps1\", \n  \"windows/win_reg_stat.py\": \"lib/ansible/modules/windows/win_reg_stat.py\", \n  \"windows/win_regedit\": \"lib/ansible/modules/windows/win_regedit.ps1\", \n  \"windows/win_regedit.ps1\": \"lib/ansible/modules/windows/win_regedit.ps1\", \n  \"windows/win_regedit.py\": \"lib/ansible/modules/windows/win_regedit.py\", \n  \"windows/win_region\": \"lib/ansible/modules/windows/win_region.ps1\", \n  \"windows/win_region.ps1\": \"lib/ansible/modules/windows/win_region.ps1\", \n  \"windows/win_region.py\": \"lib/ansible/modules/windows/win_region.py\", \n  \"windows/win_regmerge\": \"lib/ansible/modules/windows/win_regmerge.py\", \n  \"windows/win_regmerge.ps1\": \"lib/ansible/modules/windows/win_regmerge.ps1\", \n  \"windows/win_regmerge.py\": \"lib/ansible/modules/windows/win_regmerge.py\", \n  \"windows/win_robocopy\": \"lib/ansible/modules/windows/win_robocopy.py\", \n  \"windows/win_robocopy.ps1\": \"lib/ansible/modules/windows/win_robocopy.ps1\", \n  \"windows/win_robocopy.py\": \"lib/ansible/modules/windows/win_robocopy.py\", \n  \"windows/win_route\": \"lib/ansible/modules/windows/win_route.py\", \n  \"windows/win_route.ps1\": \"lib/ansible/modules/windows/win_route.ps1\", \n  \"windows/win_route.py\": \"lib/ansible/modules/windows/win_route.py\", \n  \"windows/win_say\": \"lib/ansible/modules/windows/win_say.py\", \n  \"windows/win_say.ps1\": \"lib/ansible/modules/windows/win_say.ps1\", \n  \"windows/win_say.py\": \"lib/ansible/modules/windows/win_say.py\", \n  \"windows/win_scheduled_task\": \"lib/ansible/modules/windows/win_scheduled_task.ps1\", \n  \"windows/win_scheduled_task.ps1\": \"lib/ansible/modules/windows/win_scheduled_task.ps1\", \n  \"windows/win_scheduled_task.py\": \"lib/ansible/modules/windows/win_scheduled_task.py\", \n  \"windows/win_scheduled_task_stat\": \"lib/ansible/modules/windows/win_scheduled_task_stat.ps1\", \n  \"windows/win_scheduled_task_stat.ps1\": \"lib/ansible/modules/windows/win_scheduled_task_stat.ps1\", \n  \"windows/win_scheduled_task_stat.py\": \"lib/ansible/modules/windows/win_scheduled_task_stat.py\", \n  \"windows/win_security_policy\": \"lib/ansible/modules/windows/win_security_policy.py\", \n  \"windows/win_security_policy.ps1\": \"lib/ansible/modules/windows/win_security_policy.ps1\", \n  \"windows/win_security_policy.py\": \"lib/ansible/modules/windows/win_security_policy.py\", \n  \"windows/win_service\": \"lib/ansible/modules/windows/win_service.py\", \n  \"windows/win_service.ps1\": \"lib/ansible/modules/windows/win_service.ps1\", \n  \"windows/win_service.py\": \"lib/ansible/modules/windows/win_service.py\", \n  \"windows/win_share\": \"lib/ansible/modules/windows/win_share.ps1\", \n  \"windows/win_share.ps1\": \"lib/ansible/modules/windows/win_share.ps1\", \n  \"windows/win_share.py\": \"lib/ansible/modules/windows/win_share.py\", \n  \"windows/win_shell\": \"lib/ansible/modules/windows/win_shell.ps1\", \n  \"windows/win_shell.ps1\": \"lib/ansible/modules/windows/win_shell.ps1\", \n  \"windows/win_shell.py\": \"lib/ansible/modules/windows/win_shell.py\", \n  \"windows/win_shortcut\": \"lib/ansible/modules/windows/win_shortcut.ps1\", \n  \"windows/win_shortcut.ps1\": \"lib/ansible/modules/windows/win_shortcut.ps1\", \n  \"windows/win_shortcut.py\": \"lib/ansible/modules/windows/win_shortcut.py\", \n  \"windows/win_stat\": \"lib/ansible/modules/windows/win_stat.ps1\", \n  \"windows/win_stat.ps1\": \"lib/ansible/modules/windows/win_stat.ps1\", \n  \"windows/win_stat.py\": \"lib/ansible/modules/windows/win_stat.py\", \n  \"windows/win_tempfile\": \"lib/ansible/modules/windows/win_tempfile.py\", \n  \"windows/win_tempfile.ps1\": \"lib/ansible/modules/windows/win_tempfile.ps1\", \n  \"windows/win_tempfile.py\": \"lib/ansible/modules/windows/win_tempfile.py\", \n  \"windows/win_template\": \"lib/ansible/modules/windows/win_template.py\", \n  \"windows/win_template.py\": \"lib/ansible/modules/windows/win_template.py\", \n  \"windows/win_timezone\": \"lib/ansible/modules/windows/win_timezone.py\", \n  \"windows/win_timezone.ps1\": \"lib/ansible/modules/windows/win_timezone.ps1\", \n  \"windows/win_timezone.py\": \"lib/ansible/modules/windows/win_timezone.py\", \n  \"windows/win_toast\": \"lib/ansible/modules/windows/win_toast.ps1\", \n  \"windows/win_toast.ps1\": \"lib/ansible/modules/windows/win_toast.ps1\", \n  \"windows/win_toast.py\": \"lib/ansible/modules/windows/win_toast.py\", \n  \"windows/win_unzip\": \"lib/ansible/modules/windows/win_unzip.ps1\", \n  \"windows/win_unzip.ps1\": \"lib/ansible/modules/windows/win_unzip.ps1\", \n  \"windows/win_unzip.py\": \"lib/ansible/modules/windows/win_unzip.py\", \n  \"windows/win_updates\": \"lib/ansible/modules/windows/win_updates.ps1\", \n  \"windows/win_updates.ps1\": \"lib/ansible/modules/windows/win_updates.ps1\", \n  \"windows/win_updates.py\": \"lib/ansible/modules/windows/win_updates.py\", \n  \"windows/win_uri\": \"lib/ansible/modules/windows/win_uri.py\", \n  \"windows/win_uri.ps1\": \"lib/ansible/modules/windows/win_uri.ps1\", \n  \"windows/win_uri.py\": \"lib/ansible/modules/windows/win_uri.py\", \n  \"windows/win_user\": \"lib/ansible/modules/windows/win_user.py\", \n  \"windows/win_user.ps1\": \"lib/ansible/modules/windows/win_user.ps1\", \n  \"windows/win_user.py\": \"lib/ansible/modules/windows/win_user.py\", \n  \"windows/win_user_right\": \"lib/ansible/modules/windows/win_user_right.ps1\", \n  \"windows/win_user_right.ps1\": \"lib/ansible/modules/windows/win_user_right.ps1\", \n  \"windows/win_user_right.py\": \"lib/ansible/modules/windows/win_user_right.py\", \n  \"windows/win_wait_for\": \"lib/ansible/modules/windows/win_wait_for.py\", \n  \"windows/win_wait_for.ps1\": \"lib/ansible/modules/windows/win_wait_for.ps1\", \n  \"windows/win_wait_for.py\": \"lib/ansible/modules/windows/win_wait_for.py\", \n  \"windows/win_wakeonlan\": \"lib/ansible/modules/windows/win_wakeonlan.ps1\", \n  \"windows/win_wakeonlan.ps1\": \"lib/ansible/modules/windows/win_wakeonlan.ps1\", \n  \"windows/win_wakeonlan.py\": \"lib/ansible/modules/windows/win_wakeonlan.py\", \n  \"windows/win_webpicmd\": \"lib/ansible/modules/windows/win_webpicmd.py\", \n  \"windows/win_webpicmd.ps1\": \"lib/ansible/modules/windows/win_webpicmd.ps1\", \n  \"windows/win_webpicmd.py\": \"lib/ansible/modules/windows/win_webpicmd.py\", \n  \"windows/winrm\": [], \n  \"winrm\": [\n    \"lib/ansible/plugins/connection/winrm.py\"\n  ], \n  \"with_* (with_items, with_together, with_nested ... any iterator )\": [], \n  \"with_dict\": [], \n  \"with_fileglob\": [], \n  \"with_first_found\": [], \n  \"with_inventory_hostnames\": [], \n  \"with_items\": [\n    \"lib/ansible/playbook/loop_control.py\"\n  ], \n  \"with_items only updates variables once if the type is the same\": [], \n  \"with_nested\": [], \n  \"with_sequence\": [], \n  \"xattr\": \"lib/ansible/modules/files/xattr.py\", \n  \"xattr module\": \"lib/ansible/modules/files/xattr.py\", \n  \"xbps\": \"lib/ansible/modules/packaging/os/xbps.py\", \n  \"xbps module\": \"lib/ansible/modules/packaging/os/xbps.py\", \n  \"xenserver_facts\": \"lib/ansible/modules/cloud/misc/xenserver_facts.py\", \n  \"xenserver_facts module\": \"lib/ansible/modules/cloud/misc/xenserver_facts.py\", \n  \"xml\": [\n    \"lib/ansible/modules/files/xml.py\"\n  ], \n  \"xml module\": [\n    \"lib/ansible/modules/files/xml.py\"\n  ], \n  \"yaml_file\": [], \n  \"yum\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"yum module\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"yum module + with_items\": [\n    \"lib/ansible/modules/packaging/os/yum.py\", \n    \"lib/ansible/playbook/loop_control.py\"\n  ], \n  \"yum or some common libs\": [], \n  \"yum.py\": [\n    \"lib/ansible/modules/packaging/os/yum.py\"\n  ], \n  \"yum_repository\": [\n    \"lib/ansible/modules/packaging/os/yum_repository.py\"\n  ], \n  \"yum_repository module\": [\n    \"lib/ansible/modules/packaging/os/yum_repository.py\"\n  ], \n  \"zabbix_group\": \"lib/ansible/modules/monitoring/zabbix/zabbix_group.py\", \n  \"zabbix_group module\": \"lib/ansible/modules/monitoring/zabbix/zabbix_group.py\", \n  \"zabbix_host\": [\n    \"lib/ansible/modules/monitoring/zabbix/zabbix_host.py\"\n  ], \n  \"zabbix_host module\": [\n    \"lib/ansible/modules/monitoring/zabbix/zabbix_host.py\"\n  ], \n  \"zabbix_host.py\": [\n    \"lib/ansible/modules/monitoring/zabbix/zabbix_host.py\"\n  ], \n  \"zabbix_hostmacro\": \"lib/ansible/modules/monitoring/zabbix/zabbix_hostmacro.py\", \n  \"zabbix_hostmacro module\": \"lib/ansible/modules/monitoring/zabbix/zabbix_hostmacro.py\", \n  \"zabbix_maintenance\": [\n    \"lib/ansible/modules/monitoring/zabbix/zabbix_maintenance.py\"\n  ], \n  \"zabbix_maintenance module\": \"lib/ansible/modules/monitoring/zabbix/zabbix_maintenance.py\", \n  \"zabbix_proxy\": \"lib/ansible/modules/monitoring/zabbix/zabbix_proxy.py\", \n  \"zabbix_proxy module\": \"lib/ansible/modules/monitoring/zabbix/zabbix_proxy.py\", \n  \"zabbix_screen\": \"lib/ansible/modules/monitoring/zabbix/zabbix_screen.py\", \n  \"zabbix_screen module\": \"lib/ansible/modules/monitoring/zabbix/zabbix_screen.py\", \n  \"zabbix_template\": \"lib/ansible/modules/monitoring/zabbix/zabbix_template.py\", \n  \"zabbix_template module\": \"lib/ansible/modules/monitoring/zabbix/zabbix_template.py\", \n  \"zfs\": [\n    \"lib/ansible/modules/storage/zfs/zfs.py\"\n  ], \n  \"zfs module\": \"lib/ansible/modules/storage/zfs/zfs.py\", \n  \"zfs_facts\": \"lib/ansible/modules/storage/zfs/zfs_facts.py\", \n  \"zfs_facts module\": \"lib/ansible/modules/storage/zfs/zfs_facts.py\", \n  \"zip template filter\": [\n    \"lib/ansible/plugins/filter\"\n  ], \n  \"znode\": [\n    \"lib/ansible/modules/clustering/znode.py\"\n  ], \n  \"znode module\": [\n    \"lib/ansible/modules/clustering/znode.py\"\n  ], \n  \"zpool_facts\": \"lib/ansible/modules/storage/zfs/zpool_facts.py\", \n  \"zpool_facts module\": \"lib/ansible/modules/storage/zfs/zpool_facts.py\", \n  \"zypper\": \"lib/ansible/modules/packaging/os/zypper.py\", \n  \"zypper module\": \"lib/ansible/modules/packaging/os/zypper.py\", \n  \"zypper module, issues with become\": [\n    \"lib/ansible/modules/packaging/os/zypper.py\", \n    \"lib/ansible/playbook/become.py\"\n  ], \n  \"zypper_repository\": \"lib/ansible/modules/packaging/os/zypper_repository.py\", \n  \"zypper_repository module\": \"lib/ansible/modules/packaging/os/zypper_repository.py\", \n  \"| script\": [\n    \"lib/ansible/modules/commands/script.py\"\n  ]\n}"
  },
  {
    "path": "tests/fixtures/component_data/component_skip.json",
    "content": "[\n  \"https://github.com/ansible/ansible/issues/13406\", \n  \"https://github.com/ansible/ansible/issues/17950\", \n  \"https://github.com/ansible/ansible/issues/22237\", \n  \"https://github.com/ansible/ansible/issues/22607\", \n  \"https://github.com/ansible/ansible/issues/24082\", \n  \"https://github.com/ansible/ansible/issues/24971\", \n  \"https://github.com/ansible/ansible/issues/25333\", \n  \"https://github.com/ansible/ansible/issues/26485\", \n  \"https://github.com/ansible/ansible/issues/27136\", \n  \"https://github.com/ansible/ansible/issues/27349\", \n  \"https://github.com/ansible/ansible/issues/28247\", \n  \"https://github.com/ansible/ansible/issues/13026\", \n  \"https://github.com/ansible/ansible/issues/13278\", \n  \"https://github.com/ansible/ansible/issues/15297\", \n  \"https://github.com/ansible/ansible/issues/15902\", \n  \"https://github.com/ansible/ansible/issues/16305\", \n  \"https://github.com/ansible/ansible/issues/17029\", \n  \"https://github.com/ansible/ansible/issues/17057\", \n  \"https://github.com/ansible/ansible/issues/17108\", \n  \"https://github.com/ansible/ansible/issues/18009\", \n  \"https://github.com/ansible/ansible/issues/18392\", \n  \"https://github.com/ansible/ansible/issues/18694\", \n  \"https://github.com/ansible/ansible/issues/19120\", \n  \"https://github.com/ansible/ansible/issues/19153\", \n  \"https://github.com/ansible/ansible/issues/19232\", \n  \"https://github.com/ansible/ansible/issues/19572\", \n  \"https://github.com/ansible/ansible/issues/19604\", \n  \"https://github.com/ansible/ansible/issues/19720\", \n  \"https://github.com/ansible/ansible/issues/20021\", \n  \"https://github.com/ansible/ansible/issues/20243\", \n  \"https://github.com/ansible/ansible/issues/20379\", \n  \"https://github.com/ansible/ansible/issues/20448\", \n  \"https://github.com/ansible/ansible/issues/20762\", \n  \"https://github.com/ansible/ansible/issues/20768\", \n  \"https://github.com/ansible/ansible/issues/20852\", \n  \"https://github.com/ansible/ansible/issues/20867\", \n  \"https://github.com/ansible/ansible/issues/20965\", \n  \"https://github.com/ansible/ansible/issues/21088\", \n  \"https://github.com/ansible/ansible/issues/20325\", \n  \"https://github.com/ansible/ansible/issues/20736\", \n  \"https://github.com/ansible/ansible/issues/21299\", \n  \"https://github.com/ansible/ansible/issues/21339\", \n  \"https://github.com/ansible/ansible/issues/21639\", \n  \"https://github.com/ansible/ansible/issues/21706\", \n  \"https://github.com/ansible/ansible/issues/21707\", \n  \"https://github.com/ansible/ansible/issues/21782\", \n  \"https://github.com/ansible/ansible/issues/21838\", \n  \"https://github.com/ansible/ansible/issues/22163\", \n  \"https://github.com/ansible/ansible/issues/22435\", \n  \"https://github.com/ansible/ansible/issues/22439\", \n  \"https://github.com/ansible/ansible/issues/22552\", \n  \"https://github.com/ansible/ansible/issues/22682\", \n  \"https://github.com/ansible/ansible/issues/22737\", \n  \"https://github.com/ansible/ansible/issues/22841\", \n  \"https://github.com/ansible/ansible/issues/22935\", \n  \"https://github.com/ansible/ansible/issues/23009\", \n  \"https://github.com/ansible/ansible/issues/23129\", \n  \"https://github.com/ansible/ansible/issues/23161\", \n  \"https://github.com/ansible/ansible/issues/23211\", \n  \"https://github.com/ansible/ansible/issues/23389\", \n  \"https://github.com/ansible/ansible/issues/23431\", \n  \"https://github.com/ansible/ansible/issues/23485\", \n  \"https://github.com/ansible/ansible/issues/23496\", \n  \"https://github.com/ansible/ansible/issues/23577\", \n  \"https://github.com/ansible/ansible/issues/23705\", \n  \"https://github.com/ansible/ansible/issues/23889\", \n  \"https://github.com/ansible/ansible/issues/23949\", \n  \"https://github.com/ansible/ansible/issues/24064\", \n  \"https://github.com/ansible/ansible/issues/24891\", \n  \"https://github.com/ansible/ansible/issues/25437\", \n  \"https://github.com/ansible/ansible/issues/24417\", \n  \"https://github.com/ansible/ansible/issues/24629\", \n  \"https://github.com/ansible/ansible/issues/25361\", \n  \"https://github.com/ansible/ansible/issues/25929\", \n  \"https://github.com/ansible/ansible/issues/26681\", \n  \"https://github.com/ansible/ansible/issues/26787\", \n  \"https://github.com/ansible/ansible/issues/26809\", \n  \"https://github.com/ansible/ansible/issues/27444\", \n  \"https://github.com/ansible/ansible/issues/27563\", \n  \"https://github.com/ansible/ansible/issues/28233\", \n  \"https://github.com/ansible/ansible/issues/28268\", \n  \"https://github.com/ansible/ansible/issues/28751\", \n  \"https://github.com/ansible/ansible/issues/27594\", \n  \"https://github.com/ansible/ansible/issues/27697\", \n  \"https://github.com/ansible/ansible/issues/28322\", \n  \"https://github.com/ansible/ansible/issues/29312\", \n  \"https://github.com/ansible/ansible/issues/25521\", \n  \"https://github.com/ansible/ansible/issues/26971\", \n  \"https://github.com/ansible/ansible/issues/27694\", \n  \"https://github.com/ansible/ansible/issues/28161\", \n  \"https://github.com/ansible/ansible/issues/29135\", \n  \"https://github.com/ansible/ansible/issues/29196\", \n  \"https://github.com/ansible/ansible/issues/29362\", \n  \"https://github.com/ansible/ansible/issues/29672\", \n  \"https://github.com/ansible/ansible/issues/29744\", \n  \"https://github.com/ansible/ansible/issues/30564\", \n  \"https://github.com/ansible/ansible/issues/30724\", \n  \"https://github.com/ansible/ansible/issues/30765\", \n  \"https://github.com/ansible/ansible/issues/30829\", \n  \"https://github.com/ansible/ansible/issues/31129\", \n  \"https://github.com/ansible/ansible/issues/31141\", \n  \"https://github.com/ansible/ansible/issues/31282\", \n  \"https://github.com/ansible/ansible/issues/31304\", \n  \"https://github.com/ansible/ansible/issues/31758\", \n  \"https://github.com/ansible/ansible/issues/31867\"\n]"
  },
  {
    "path": "tests/fixtures/docs_info/0_issue.yml",
    "content": "html_url: https://github.com/ansible/ansible/pull/21313\nnumber: 21313\ngithub_repo: ansible\nsubmitter: sommersoft\ncreated_at: 2016-02-18T17:37:01Z\ntitle: Test\nbody: |\n    test docs_info\nevents:\n    - event: committed\n      created_at: 2017-12-10T17:24:02Z\n      id: 1\n      actor:\n        login: sommersoft\n      files:\n        - filename: docs/docsite/index.rst\n          status: modified\n          patch: |\n            @@ -2,2 +2,2 @@\n            -   index\n            +   api\n          src_filepath: tests/fixtures/docs_info/files/docsite_index.rst\n"
  },
  {
    "path": "tests/fixtures/docs_info/1_issue.yml",
    "content": "html_url: https://github.com/ansible/ansible/pull/21313\nnumber: 21313\ngithub_repo: ansible\nsubmitter: sommersoft\ncreated_at: 2016-02-18T17:37:01Z\ntitle: Test\nbody: |\n    test docs_info\nevents:\n    - event: committed\n      created_at: 2017-12-10T17:24:02Z\n      id: 1\n      actor:\n        login: sommersoft\n      files:\n        - filename: lib/ansible/foo.py\n          status: modified\n          patch: |\n            @@ -1,5 +1,6 @@\n            DOCUMENTATION = '''\n            This is the documentation.\n            +Enjoy!\n            '''\n\n            class Bar:\n\n          src_filepath: tests/fixtures/docs_info/files/lib_ansible_foo.py\n"
  },
  {
    "path": "tests/fixtures/docs_info/2_issue.yml",
    "content": "html_url: https://github.com/ansible/ansible/pull/21313\nnumber: 21313\ngithub_repo: ansible\nsubmitter: sommersoft\ncreated_at: 2016-02-18T17:37:01Z\ntitle: Test\nbody: |\n    test docs_info\nevents:\n    - event: committed\n      created_at: 2017-12-10T17:24:02Z\n      id: 1\n      actor:\n        login: sommersoft\n      files:\n        - filename: lib/ansible/foo.py\n          status: modified\n          patch: |\n            @@ -16,4 +16,4 @@ class Bar:\n                 def baz(self):\n                     ''' This is Bar.baz's documentation '''\n\n            -        pass\n            +        return False\n \n          src_filepath: tests/fixtures/docs_info/files/lib_ansible_foo.py\n"
  },
  {
    "path": "tests/fixtures/docs_info/3_issue.yml",
    "content": "html_url: https://github.com/ansible/ansible/pull/21313\nnumber: 21313\ngithub_repo: ansible\nsubmitter: sommersoft\ncreated_at: 2016-02-18T17:37:01Z\ntitle: Test\nbody: |\n    test docs_info\nevents:\n    - event: committed\n      created_at: 2017-12-10T17:24:02Z\n      id: 1\n      actor:\n        login: sommersoft\n      files:\n        - filename: hacks/fail_me.txt\n          status: modified\n          patch: |\n            @@ -1,1 +1,1 @@\n            +please fail\n          src_filepath: tests/fixtures/docs_info/files/hacks_fail_me.txt\n"
  },
  {
    "path": "tests/fixtures/docs_info/4_issue.yml",
    "content": "html_url: https://github.com/ansible/ansible/pull/21313\nnumber: 21313\ngithub_repo: ansible\nsubmitter: sommersoft\ncreated_at: 2016-02-18T17:37:01Z\ntitle: Test\nbody: |\n    test docs_info\nevents:\n    - event: committed\n      created_at: 2017-12-10T17:24:02Z\n      id: 1\n      actor:\n        login: sommersoft\n      files:\n        - filename: lib/ansible/foo.py\n          status: modified\n          patch: |\n            @@ -3,9 +3,17 @@ This is the documentation.\n            Enjoy!\n            '''\n\n            +EXAMPLES = '''\n            +- example1:\n            +  foo: bar\n            +- example2:\n            +  foo: bar.baz\n            +'''\n\n          src_filepath: tests/fixtures/docs_info/files/lib_ansible_foo.py\n"
  },
  {
    "path": "tests/fixtures/docs_info/5_issue.yml",
    "content": "html_url: https://github.com/ansible/ansible/pull/21313\nnumber: 21313\ngithub_repo: ansible\nsubmitter: sommersoft\ncreated_at: 2016-02-18T17:37:01Z\ntitle: Test\nbody: |\n    test docs_info\nevents:\n    - event: committed\n      created_at: 2017-12-11T17:24:02Z\n      id: 1\n      actor:\n        login: sommersoft\n      files:\n        - filename: docs/docsite/index.rst\n          status: modified\n          patch: |\n            @@ -2,2 +2,2 @@\n            -   index\n            +   api\n          src_filepath: tests/fixtures/docs_info/files/docsite_index.rst\n    - event: committed\n      created_at: 2017-12-10T17:24:02Z\n      id: 2\n      actor:\n        login: sommersoft\n      files:\n        - filename: lib/ansible/foo.py\n          status: modified\n          patch: |\n            @@ -1,5 +1,6 @@\n            DOCUMENTATION = '''\n            This is the documentation.\n            +Enjoy!\n            '''\n\n            EXAMPLES = '''\n\n          src_filepath: tests/fixtures/docs_info/files/lib_ansible_foo.py\n    - event: committed\n      created_at: 2017-12-12T17:24:02Z\n      id: 2\n      actor:\n        login: sommersoft\n      files:\n        - filename: lib/ansible/foo.py\n          status: modified\n          patch: |\n            @@ -1,5 +1,6 @@\n            DOCUMENTATION = '''\n            This is the documentation.\n            +Enjoy!\n            '''\n\n            EXAMPLES = '''\n\n          src_filepath: tests/fixtures/docs_info/files/lib_ansible_foo.py\n"
  },
  {
    "path": "tests/fixtures/docs_info/files/docsite_index.rst",
    "content": ".. toctree::\n    api\n"
  },
  {
    "path": "tests/fixtures/docs_info/files/hacks_fail_me.txt",
    "content": "please fail\n"
  },
  {
    "path": "tests/fixtures/docs_info/files/lib_ansible_foo.py",
    "content": "DOCUMENTATION = '''\nThis is the documentation.\nEnjoy!\n'''\n\nEXAMPLES = '''\n- example1:\n    foo: bar\n- example2:\n    foo: bar.baz\n'''\n\nclass Bar:\n    ''' This is Bar class' documentation '''\n\n    def baz(self):\n        ''' This is Bar.baz's documentation '''\n\n        return False\n"
  },
  {
    "path": "tests/fixtures/issue_template_meta.json",
    "content": "{\n  \"10445\": {\n    \"ansible_version\": \"1.8.4\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nfacts.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n1.8.4\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nI'm using Ansible 1.7.2, but the problem still exists in 1.8.4.\\r\\n\\r\\n``` sh\\r\\nvagrant@ansible-snmpd-debian-6010:~$ cat /etc/os-release\\r\\ncat: /etc/os-release: No such file or directory\\r\\n```\\r\\n\\r\\n``` sh\\r\\nvagrant@ansible-snmpd-debian-6010:~$ lsb_release -a\\r\\nNo LSB modules are available.\\r\\nDistributor ID: Debian\\r\\nDescription:    Debian GNU/Linux 6.0.10 (squeeze)\\r\\nRelease:    6.0.10\\r\\nCodename:   squeeze\\r\\n```\\r\\n\", \n    \"component_name\": \"facts.py\", \n    \"component_raw\": \"facts.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/10445\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_1.8\", \n      \"affects_2.2\", \n      \"bug\", \n      \"c:module_utils/facts\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I'm using Ansible 1.7.2, but the problem still exists in 1.8.4.\\n\\n\\n\\n``` sh\\n\\nvagrant@ansible-snmpd-debian-6010:~$ cat /etc/os-release\\n\\ncat: /etc/os-release: No such file or directory\\n\\n```\\n\\n\\n\\n``` sh\\n\\nvagrant@ansible-snmpd-debian-6010:~$ lsb_release -a\\n\\nNo LSB modules are available.\\n\\nDistributor ID: Debian\\n\\nDescription:    Debian GNU/Linux 6.0.10 (squeeze)\\n\\nRelease:    6.0.10\\n\\nCodename:   squeeze\\n\\n```\", \n    \"title\": \"ansible_distribution_release is NA for Debian 6.0.10 (squeeze)\"\n  }, \n  \"10480\": {\n    \"ansible_version\": \"\", \n    \"body\": \"##### ISSUE TYPE\\n\\nBug Report\\n##### COMPONENT NAME\\n\\nopenstack dynamic inventory script\\n##### ANSIBLE VERSION\\n##### SUMMARY\\n\\nAlthough the option is there (--private) it fails. \\nTraceback (most recent call last):\\n  File \\\"./openstack.py\\\", line 161, in <module>\\n    main()\\n  File \\\"./openstack.py\\\", line 149, in main\\n    inventory = OpenStackInventory(args.private, args.refresh)\\n  File \\\"./openstack.py\\\", line 58, in **init**\\n    self.clouds = shade.openstack_clouds(self.openstack_config)\\n  File \\\"/usr/local/lib/python2.7/dist-packages/shade/**init**.py\\\", line 68, in openstack_clouds\\n    for f in config.get_all_clouds()]\\n  File \\\"/usr/local/lib/python2.7/dist-packages/os_client_config/config.py\\\", line 221, in get_all_clouds\\n    clouds.append(self.get_one_cloud(cloud, region_name=region))\\n  File \\\"/usr/local/lib/python2.7/dist-packages/os_client_config/config.py\\\", line 327, in get_one_cloud\\n    config = self._get_base_cloud_config(cloud)\\n  File \\\"/usr/local/lib/python2.7/dist-packages/os_client_config/config.py\\\", line 159, in _get_base_cloud_config\\n    vendor_file = self._load_vendor_file()\\n  File \\\"/usr/local/lib/python2.7/dist-packages/os_client_config/config.py\\\", line 112, in _load_vendor_file\\n    for path in self._vendor_files:\\nTypeError: 'bool' object is not iterable\\n\\nPossible solution: https://gist.github.com/GheRivero/5406e5ee7db98cd36148\\nbut will need some changes on shade. Working on it\\n\", \n    \"component_name\": \"openstack dynamic inventory script\", \n    \"component_raw\": \"openstack dynamic inventory script\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/10480\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"openstack\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Although the option is there (--private) it fails. \\nTraceback (most recent call last):\\n  File \\\"./openstack.py\\\", line 161, in <module>\\n    main()\\n  File \\\"./openstack.py\\\", line 149, in main\\n    inventory = OpenStackInventory(args.private, args.refresh)\\n  File \\\"./openstack.py\\\", line 58, in **init**\\n    self.clouds = shade.openstack_clouds(self.openstack_config)\\n  File \\\"/usr/local/lib/python2.7/dist-packages/shade/**init**.py\\\", line 68, in openstack_clouds\\n    for f in config.get_all_clouds()]\\n  File \\\"/usr/local/lib/python2.7/dist-packages/os_client_config/config.py\\\", line 221, in get_all_clouds\\n    clouds.append(self.get_one_cloud(cloud, region_name=region))\\n  File \\\"/usr/local/lib/python2.7/dist-packages/os_client_config/config.py\\\", line 327, in get_one_cloud\\n    config = self._get_base_cloud_config(cloud)\\n  File \\\"/usr/local/lib/python2.7/dist-packages/os_client_config/config.py\\\", line 159, in _get_base_cloud_config\\n    vendor_file = self._load_vendor_file()\\n  File \\\"/usr/local/lib/python2.7/dist-packages/os_client_config/config.py\\\", line 112, in _load_vendor_file\\n    for path in self._vendor_files:\\nTypeError: 'bool' object is not iterable\\n\\nPossible solution: https://gist.github.com/GheRivero/5406e5ee7db98cd36148\\nbut will need some changes on shade. Working on it\", \n    \"title\": \"Openstack plugins ignore private address\"\n  }, \n  \"11263\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\nFeature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nfile module\\r\\n\\r\\n##### SUMMARY\\r\\nIt would be very nice if --diff mode also showed permission changes, in addition to file contents changes. For now it only says that a file changed without any further explanation. Is it possible to display a summary of what changed - owner, group or mode with \\\"before\\\" and \\\"after\\\" values? Making a mistake when changing permissions can be very dangerous, so having more information would make applying changes less stressful :-).\\r\\n\", \n    \"component_name\": \"file\", \n    \"component_raw\": \"file module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/11263\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"affects_2.3\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/file.py\", \n    \"summary\": \"It would be very nice if --diff mode also showed permission changes, in addition to file contents changes. For now it only says that a file changed without any further explanation. Is it possible to display a summary of what changed - owner, group or mode with \\\"before\\\" and \\\"after\\\" values? Making a mistake when changing permissions can be very dangerous, so having more information would make applying changes less stressful :-).\", \n    \"title\": \"Add permission changes to file's --diff mode\"\n  }, \n  \"11295\": {\n    \"ansible_version\": \"1.9.1\\nManaged\", \n    \"body\": \"**Issue Type:** Feature Idea\\r\\n**Component Name:** cron module\\r\\n**Ansible Version:** 1.9.1\\r\\n**Managed environment:** Ubuntu 12.04\\r\\n**Summary:**\\r\\nWe can use invalid file names like \\\"blabla.example.com.conf\\\" for cron files, but based on [documentation](http://manpages.ubuntu.com/manpages/maverick/en/man8/cron.8.html)\\r\\n\\r\\n> Files must conform to the same naming convention as used by run-parts(8): they must consist solely of upper- and lower-case letters, digits, underscores, and hyphens. \\r\\n\\r\\nMaybe need to add validation and throw error/show hint for invalid names?\\r\\n\\r\\n**Steps To Reproduce:**\\r\\n\\r\\n``` yaml\\r\\n  - name: ensure cron config is present\\r\\n    sudo: yes\\r\\n    cron:\\r\\n      cron_file: \\\"example_some.cool.site.com.conf\\\"\\r\\n      user: root\\r\\n      state: present\\r\\n      minute: 0\\r\\n      hour: 3\\r\\n      day: \\\"*\\\"\\r\\n      month: \\\"*\\\"\\r\\n      weekday: 7\\r\\n      name: \\\"Send statistics to Zabbix\\\"\\r\\n      job: \\\"echo run some job\\\"\\r\\n```\\r\\n\\r\\n**Expected Results:**\\r\\nThrow error or show hint about invalid file name\\r\\n\\r\\n**Actual Results:**\\r\\nCron ignores this job\\r\\n\", \n    \"component_name\": \"cron\", \n    \"component_raw\": \":** cron module\\n**\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/11295\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_1.9\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/cron.py\", \n    \"summary\": \":**\\n\\nWe can use invalid file names like \\\"blabla.example.com.conf\\\" for cron files, but based on [documentation](http://manpages.ubuntu.com/manpages/maverick/en/man8/cron.8.html)\\n\\n\\n\\n> Files must conform to the same naming convention as used by run-parts(8): they must consist solely of upper- and lower-case letters, digits, underscores, and hyphens. \\n\\n\\n\\nMaybe need to add validation and throw error/show hint for invalid names?\\n\\n\\n\\n**\", \n    \"title\": \"[Cron module] validate cron_file parameter\"\n  }, \n  \"11421\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\nBug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ngroup module\\r\\n\\r\\n#### SUMMARY\\r\\nHi,\\r\\n\\r\\nthe group module seems to not work right. I am using centos 7. The expected result is that it wouldn't fail since the group is properly present. The group was added by \\u00b4yum install docker\\u00b4 \\r\\n\\r\\nTask:\\r\\n\\r\\n``` yaml\\r\\n- group: name=dockerroot state=present gid=989\\r\\n```\\r\\n\\r\\nSample\\r\\n\\r\\n``` bash\\r\\nTASK: [newrelic | Configure New Relic Sysmond] ******************************** \\r\\nchanged: [192.168.0.244]\\r\\n\\r\\nTASK: [newrelic | group name=dockerroot state=present gid=989] **************** \\r\\nfailed: [192.168.0.244] => {\\\"failed\\\": true, \\\"name\\\": \\\"dockerroot\\\"}\\r\\nmsg: groupmod: GID '989' already exists\\r\\n\\r\\n\\r\\nFATAL: all hosts have already failed -- aborting\\r\\n\\r\\nPLAY RECAP ******************************************************************** \\r\\n           to retry, use: --limit @/root/vmbuilder.retry\\r\\n\\r\\n192.168.0.244              : ok=73   changed=17   unreachable=0    failed=1   \\r\\n\\r\\n[root@172-17-42-1 ~]# ansible-playbook --version\\r\\nansible-playbook 1.9.0.1\\r\\n  configured module search path = None\\r\\n[root@172-17-42-1 ~]# grep -i \\\"989\\\" /etc/group  \\r\\ndockerroot:x:989:newrelic\\r\\n```\\r\\n\", \n    \"component_name\": \"group\", \n    \"component_raw\": \"group module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/11421\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"affects_2.3\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/group.py\", \n    \"summary\": \"Hi,\\n\\n\\n\\nthe group module seems to not work right. I am using centos 7. The expected result is that it wouldn't fail since the group is properly present. The group was added by yum install docker \\n\\n\\n\\nTask:\\n\\n\\n\\n``` yaml\\n\\n- group: name=dockerroot state=present gid=989\\n\\n```\\n\\n\\n\\nSample\\n\\n\\n\\n``` bash\\n\\nTASK: [newrelic | Configure New Relic Sysmond] ******************************** \\n\\nchanged: [192.168.0.244]\\n\\n\\n\\nTASK: [newrelic | group name=dockerroot state=present gid=989] **************** \\n\\nfailed: [192.168.0.244] => {\\\"failed\\\": true, \\\"name\\\": \\\"dockerroot\\\"}\\n\\nmsg: groupmod: GID '989' already exists\\n\\n\\n\\n\\n\\nFATAL: all hosts have already failed -- aborting\\n\\n\\n\\nPLAY RECAP ******************************************************************** \\n\\n           to retry, use: --limit @/root/vmbuilder.retry\\n\\n\\n\\n192.168.0.244              : ok=73   changed=17   unreachable=0    failed=1   \\n\\n\\n\\n[root@172-17-42-1 ~]# ansible-playbook --version\\n\\nansible-playbook 1.9.0.1\\n\\n  configured module search path = None\\n\\n[root@172-17-42-1 ~]# grep -i \\\"989\\\" /etc/group  \\n\\ndockerroot:x:989:newrelic\\n\\n```\", \n    \"title\": \"Group module fails when trying to add/update a group which already exist in the attached AD\"\n  }, \n  \"11467\": {\n    \"ansible_version\": \"N/A\", \n    \"body\": \"#### ISSUE TYPE\\r\\nBug Report\\r\\n\\r\\n#### COMPONENT NAME\\r\\nfile module\\r\\n\\r\\n#### ANSIBLE VERSION\\r\\nN/A\\r\\n\\r\\n#### SUMMARY\\r\\nWhen I use file module in playbook, in the [doc page](http://docs.ansible.com/file_module.html) the file module options said:\\r\\n\\r\\n> path to the file being managed. Aliases: dest, name.\\r\\n\\r\\nto me , it shows the path and the dest is the same.\\r\\n\\r\\nBut in my playbook when I need file module to create one soft link via path, ansible will show one error \\r\\n\\r\\nlike refuse by directory or link.\\r\\n\\r\\nIf I use dest , everything is ok.\\r\\n\\r\\nCould you fix this?\\r\\n\", \n    \"component_name\": \"file\", \n    \"component_raw\": \"file module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/11467\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"needs_info\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/file.py\", \n    \"summary\": \"When I use file module in playbook, in the [doc page](http://docs.ansible.com/file_module.html) the file module options said:\\n\\n\\n\\n> path to the file being managed. Aliases: dest, name.\\n\\n\\n\\nto me , it shows the path and the dest is the same.\\n\\n\\n\\nBut in my playbook when I need file module to create one soft link via path, ansible will show one error \\n\\n\\n\\nlike refuse by directory or link.\\n\\n\\n\\nIf I use dest , everything is ok.\\n\\n\\n\\nCould you fix this?\", \n    \"title\": \"file module error\"\n  }, \n  \"11498\": {\n    \"ansible_version\": null, \n    \"body\": \"#### ISSUE TYPE\\r\\nFeature Idea\\r\\n\\r\\n#### COMPONENT NAME\\r\\nyum module\\r\\n\\r\\n#### SUMMARY\\r\\nyum these days comes with the ability to perform the following security related actions:\\r\\n\\r\\n```\\r\\nyum update --security # updates only the packages that need security related updates\\r\\nyum update --cve CVE-2015-4000 # updates all packages with fixes for the given CVE\\r\\nyum update --advisory=ALAS-2015-551 # updates packages in the scope of the given security advisory\\r\\n```\\r\\n\\r\\nAs a person who administers fleets of servers, I often want to perform fixes that are security driven, and the above operations come in handy.\\r\\n\\r\\nAnsible, however, has no support for these as of now.\\r\\n\\r\\nHere's a page explaining these features: https://access.redhat.com/solutions/10021\\r\\n\", \n    \"component_name\": \"yum\", \n    \"component_raw\": \"yum module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/11498\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"affects_2.3\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/yum.py\", \n    \"summary\": \"yum these days comes with the ability to perform the following security related actions:\\n\\n\\n\\n```\\n\\nyum update --security # updates only the packages that need security related updates\\n\\nyum update --cve CVE-2015-4000 # updates all packages with fixes for the given CVE\\n\\nyum update --advisory=ALAS-2015-551 # updates packages in the scope of the given security advisory\\n\\n```\\n\\n\\n\\nAs a person who administers fleets of servers, I often want to perform fixes that are security driven, and the above operations come in handy.\\n\\n\\n\\nAnsible, however, has no support for these as of now.\\n\\n\\n\\nHere's a page explaining these features: https://access.redhat.com/solutions/10021\", \n    \"title\": \"Add support for yum options related to security\"\n  }, \n  \"11524\": {\n    \"ansible_version\": \"1.9.2\", \n    \"body\": \"#### ISSUE TYPE\\r\\nBug Report\\r\\n\\r\\n#### COMPONENT NAME\\r\\ngit module\\r\\n\\r\\n#### ANSIBLE VERSION\\r\\n1.9.2\\r\\n\\r\\n#### SUMMARY\\r\\n\\r\\nI'm opening this as a more general case of #11506 and after doing more extensive troubleshooting.\\r\\nI have been testing with Ansible 1.9.2 on ubuntu 14.04.\\r\\n\\r\\nI'll try to explain how to reproduce this.\\r\\nFirst, the Ansible/Jinja/YAML code:\\r\\n\\r\\n```\\r\\n..........................................................\\r\\nvarprefix__git_update: true\\r\\n..........................................................\\r\\nvarprefix__deploy:\\r\\n  repo:\\r\\n    dir: \\\"repo\\\"\\r\\n    extract:\\r\\n      - to: \\\"rrrrr\\\"\\r\\n        git:\\r\\n          url:     \\\"{{ varprefix__git_repo }}\\\"\\r\\n          update:  \\\"{{ varprefix__git_update|default(false)|bool }}\\\"\\r\\n..........................................................\\r\\n- debug:\\r\\n    msg: \\\"{{ varprefix__deploy.repo.extract }}\\\"\\r\\n\\r\\n- name: deploy via git\\r\\n  git:\\r\\n    repo:      \\\"{{ item.git.url }}\\\"\\r\\n    dest:      \\\"/tmp/path/to/repo\\\"\\r\\n    clone:     yes\\r\\n    update: true\\r\\n#!!!update:    \\\"{{ item.git.update }}\\\"\\r\\n#!!!update:    \\\"{{ item.git.update  |default(true) }}\\\"\\r\\n#!!!update:    \\\"{{ item.git.update  |default(true) |bool }}\\\"\\r\\n  with_items: varprefix__deploy.repo.extract\\r\\n..........................................................\\r\\n```\\r\\n\\r\\nNote the lines marked with \\\"#!!!\\\" for later.\\r\\n\\r\\n1st execution (with hardwired value for \\\"update:\\\") - line breaks added for readability:\\r\\n\\r\\n```\\r\\nTASK: [moduleprefix--somemodule | debug ] **************************************** \\r\\nok: [local-vm] => {\\r\\n    \\\"msg\\\": [\\r\\n        {\\r\\n            \\\"git\\\": {\\r\\n                \\\"update\\\": \\\"True\\\",\\r\\n                \\\"url\\\": \\\"ssh://git@bitbucket.org/uuuuu/ggggggggggggggggggggg.git\\\",\\r\\n                \\\"version\\\": \\\"master\\\"\\r\\n            },\\r\\n            \\\"to\\\": \\\"rrrrr\\\"\\r\\n        }\\r\\n    ]\\r\\n}\\r\\n\\r\\nTASK: [moduleprefix--somemodule | somemodule (git clone)] ********** \\r\\n<local-vm> REMOTE_MODULE git version=master depth=1 repo=ssh:********@bitbucket.org/uuuuu/ggggggggggggggggggggg.git accept_hostkey=True dest=/var/www/site.rrrrr_website/repo/rrrrr \\r\\nrecursive=False force=False\\r\\nfailed: [local-vm] => (item={'to': 'rrrrr', 'git': {'url': u'ssh://git@bitbucket.org/uuuuu/ggggggggggggggggggggg.git', \\r\\n'version': u'master', 'update': u'True'}}) => {\\\"failed\\\": true, \\\"item\\\": {\\\"git\\\": \\r\\n{\\\"update\\\": \\\"True\\\", \\\"url\\\": \\\"ssh://git@bitbucket.org/uuuuu/ggggggggggggggggggggg.git\\\", \\r\\n\\\"version\\\": \\\"master\\\"}, \\\"to\\\": \\\"rrrrr\\\"}}\\r\\nmsg: Local modifications exist in repository (force=no).\\r\\n\\r\\nFATAL: all hosts have already failed -- aborting\\r\\n```\\r\\n\\r\\nNevermind the error at the end. It means git is working as intended (in this case, updating a repo with changes w/o the force paramenter).\\r\\nThe interesting stuff is that the variable appears correct (in the debug), and also on the 2nd part of the debug message, but appears as \\\\* 'version': u'master', 'update': u'True'\\\\* when reported in \\\"item=\\\".\\r\\nBut, in this case all would be ok.\\r\\n\\r\\nNow, 2nd time, with _update:    \\\"{{ item.git.update }}\\\"_\\r\\n\\r\\n```\\r\\nTASK: [moduleprefix--somemodule | debug ] **************************************** \\r\\nok: [local-vm] => {\\r\\n    \\\"msg\\\": [\\r\\n        {\\r\\n            \\\"git\\\": {\\r\\n                \\\"update\\\": \\\"True\\\",\\r\\n                \\\"url\\\": \\\"ssh://git@bitbucket.org/uuuuu/ggggggggggggggggggggg.git\\\",\\r\\n                \\\"version\\\": \\\"master\\\"\\r\\n            },\\r\\n            \\\"to\\\": \\\"rrrrr\\\"\\r\\n        }\\r\\n    ]\\r\\n}\\r\\n\\r\\n<local-vm> REMOTE_MODULE git version=master depth=1 repo=ssh:********@bitbucket.org/uuuuu/ggggggggggggggggggggg.git \\r\\nupdate='<built-in method update of dict object at 0x7f11f96fec58>' accept_hostkey=True dest=/var/www/site.rrrrr_website/repo/rrrrr \\r\\nrecursive=False force=False\\r\\nfailed: [local-vm] => (item={'to': 'rrrrr', 'git': {'url': u'ssh://git@bitbucket.org/uuuuu/ggggggggggggggggggggg.git', \\r\\n'version': u'master', 'update': u'True'}}) => {\\\"failed\\\": true, \\\"item\\\": {\\\"git\\\": \\r\\n{\\\"update\\\": \\\"True\\\", \\\"url\\\": \\\"ssh://git@bitbucket.org/uuuuu/ggggggggggggggggggggg.git\\\", \\\"version\\\": \\\"master\\\"}, \\\"to\\\": \\\"rrrrr\\\"}}\\r\\nmsg: Boolean <built-in method update of dict object at 0x7f11f96fec58> not in either boolean list\\r\\n\\r\\nFATAL: all hosts have already failed -- aborting\\r\\n```\\r\\n\\r\\nAt this point it seems that expansion of the boolean value causes some kind of problem.\\r\\n\\r\\n3rd attempt with _update: \\\"{{ item.git.update  |default(true) |bool }}\\\"_\\r\\n\\r\\n```\\r\\nTASK: [moduleprefix--somemodule | debug ] **************************************** \\r\\nok: [local-vm] => {\\r\\n    \\\"msg\\\": [\\r\\n        {\\r\\n            \\\"git\\\": {\\r\\n                \\\"update\\\": \\\"True\\\",\\r\\n                \\\"url\\\": \\\"ssh://git@bitbucket.org/uuuuu/ggggggggggggggggggggg.git\\\",\\r\\n                \\\"version\\\": \\\"master\\\"\\r\\n            },\\r\\n            \\\"to\\\": \\\"rrrrr\\\"\\r\\n        }\\r\\n    ]\\r\\n}\\r\\n\\r\\nTASK: [moduleprefix--somemodule | somemodule (git clone)] ********** \\r\\n<local-vm> REMOTE_MODULE git version=master depth=1 repo=ssh:********@bitbucket.org/uuuuu/ggggggggggggggggggggg.git \\r\\nupdate=False accept_hostkey=True dest=/var/www/site.rrrrr_website/repo/rrrrr \\r\\nrecursive=False force=False\\r\\nok: [local-vm] => (item={'to': 'rrrrr', 'git': {'url': u'ssh://git@bitbucket.org/uuuuu/ggggggggggggggggggggg.git', \\r\\n'version': u'master', 'update': u'True'}}) => {\\\"after\\\": \\\"1d9b80fd6a5aa4b61d150b10f3923668e61709e1\\\", \\\"before\\\": \\\"1d9b80fd6a5aa4b61d150b10f3923668e61709e1\\\", \\r\\n\\\"changed\\\": false, \\\"item\\\": {\\\"git\\\": \\r\\n{\\\"update\\\": \\\"True\\\", \\\"url\\\": \\\"ssh://git@bitbucket.org/uuuuu/ggggggggggggggggggggg.git\\\", \\r\\n\\\"version\\\": \\\"master\\\"}, \\\"to\\\": \\\"rrrrr\\\"}}\\r\\n```\\r\\n\\r\\nHere,  it (incorrectly) finishes, since it skips updating the repository, even though update is set to True.\\r\\n\\r\\nThis behaviour also happens in other modules.\\r\\nThe fact that it \\\"fails\\\" silently is insidious because it doesn't give you any clue on what is happening.\\r\\nAny help is appreciated.\\r\\nThanks\\r\\n\", \n    \"component_name\": \"git\", \n    \"component_raw\": \"git module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/11524\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_1.9\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/source_control/git.py\", \n    \"summary\": \"I'm opening this as a more general case of #11506 and after doing more extensive troubleshooting.\\n\\nI have been testing with Ansible 1.9.2 on ubuntu 14.04.\\n\\n\\n\\nI'll try to explain how to reproduce this.\\n\\nFirst, the Ansible/Jinja/YAML code:\\n\\n\\n\\n```\\n\\n..........................................................\\n\\nvarprefix__git_update: true\\n\\n..........................................................\\n\\nvarprefix__deploy:\\n\\n  repo:\\n\\n    dir: \\\"repo\\\"\\n\\n    extract:\\n\\n      - to: \\\"rrrrr\\\"\\n\\n        git:\\n\\n          url:     \\\"{{ varprefix__git_repo }}\\\"\\n\\n          update:  \\\"{{ varprefix__git_update|default(false)|bool }}\\\"\\n\\n..........................................................\\n\\n- debug:\\n\\n    msg: \\\"{{ varprefix__deploy.repo.extract }}\\\"\\n\\n\\n\\n- name: deploy via git\\n\\n  git:\\n\\n    repo:      \\\"{{ item.git.url }}\\\"\\n\\n    dest:      \\\"/tmp/path/to/repo\\\"\\n\\n    clone:     yes\\n\\n    update: true\\n\\n#!!!update:    \\\"{{ item.git.update }}\\\"\\n\\n#!!!update:    \\\"{{ item.git.update  |default(true) }}\\\"\\n\\n#!!!update:    \\\"{{ item.git.update  |default(true) |bool }}\\\"\\n\\n  with_items: varprefix__deploy.repo.extract\\n\\n..........................................................\\n\\n```\\n\\n\\n\\nNote the lines marked with \\\"#!!!\\\" for later.\\n\\n\\n\\n1st execution (with hardwired value for \\\"update:\\\") - line breaks added for readability:\\n\\n\\n\\n```\\n\\nTASK: [moduleprefix--somemodule | debug ] **************************************** \\n\\nok: [local-vm] => {\\n\\n    \\\"msg\\\": [\\n\\n        {\\n\\n            \\\"git\\\": {\\n\\n                \\\"update\\\": \\\"True\\\",\\n\\n                \\\"url\\\": \\\"ssh://git@bitbucket.org/uuuuu/ggggggggggggggggggggg.git\\\",\\n\\n                \\\"version\\\": \\\"master\\\"\\n\\n            },\\n\\n            \\\"to\\\": \\\"rrrrr\\\"\\n\\n        }\\n\\n    ]\\n\\n}\\n\\n\\n\\nTASK: [moduleprefix--somemodule | somemodule (git clone)] ********** \\n\\n<local-vm> REMOTE_MODULE git version=master depth=1 repo=ssh:********@bitbucket.org/uuuuu/ggggggggggggggggggggg.git accept_hostkey=True dest=/var/www/site.rrrrr_website/repo/rrrrr \\n\\nrecursive=False force=False\\n\\nfailed: [local-vm] => (item={'to': 'rrrrr', 'git': {'url': u'ssh://git@bitbucket.org/uuuuu/ggggggggggggggggggggg.git', \\n\\n'version': u'master', 'update': u'True'}}) => {\\\"failed\\\": true, \\\"item\\\": {\\\"git\\\": \\n\\n{\\\"update\\\": \\\"True\\\", \\\"url\\\": \\\"ssh://git@bitbucket.org/uuuuu/ggggggggggggggggggggg.git\\\", \\n\\n\\\"version\\\": \\\"master\\\"}, \\\"to\\\": \\\"rrrrr\\\"}}\\n\\nmsg: Local modifications exist in repository (force=no).\\n\\n\\n\\nFATAL: all hosts have already failed -- aborting\\n\\n```\\n\\n\\n\\nNevermind the error at the end. It means git is working as intended (in this case, updating a repo with changes w/o the force paramenter).\\n\\nThe interesting stuff is that the variable appears correct (in the debug), and also on the 2nd part of the debug message, but appears as \\\\* 'version': u'master', 'update': u'True'\\\\* when reported in \\\"item=\\\".\\n\\nBut, in this case all would be ok.\\n\\n\\n\\nNow, 2nd time, with _update:    \\\"{{ item.git.update }}\\\"_\\n\\n\\n\\n```\\n\\nTASK: [moduleprefix--somemodule | debug ] **************************************** \\n\\nok: [local-vm] => {\\n\\n    \\\"msg\\\": [\\n\\n        {\\n\\n            \\\"git\\\": {\\n\\n                \\\"update\\\": \\\"True\\\",\\n\\n                \\\"url\\\": \\\"ssh://git@bitbucket.org/uuuuu/ggggggggggggggggggggg.git\\\",\\n\\n                \\\"version\\\": \\\"master\\\"\\n\\n            },\\n\\n            \\\"to\\\": \\\"rrrrr\\\"\\n\\n        }\\n\\n    ]\\n\\n}\\n\\n\\n\\n<local-vm> REMOTE_MODULE git version=master depth=1 repo=ssh:********@bitbucket.org/uuuuu/ggggggggggggggggggggg.git \\n\\nupdate='<built-in method update of dict object at 0x7f11f96fec58>' accept_hostkey=True dest=/var/www/site.rrrrr_website/repo/rrrrr \\n\\nrecursive=False force=False\\n\\nfailed: [local-vm] => (item={'to': 'rrrrr', 'git': {'url': u'ssh://git@bitbucket.org/uuuuu/ggggggggggggggggggggg.git', \\n\\n'version': u'master', 'update': u'True'}}) => {\\\"failed\\\": true, \\\"item\\\": {\\\"git\\\": \\n\\n{\\\"update\\\": \\\"True\\\", \\\"url\\\": \\\"ssh://git@bitbucket.org/uuuuu/ggggggggggggggggggggg.git\\\", \\\"version\\\": \\\"master\\\"}, \\\"to\\\": \\\"rrrrr\\\"}}\\n\\nmsg: Boolean <built-in method update of dict object at 0x7f11f96fec58> not in either boolean list\\n\\n\\n\\nFATAL: all hosts have already failed -- aborting\\n\\n```\\n\\n\\n\\nAt this point it seems that expansion of the boolean value causes some kind of problem.\\n\\n\\n\\n3rd attempt with _update: \\\"{{ item.git.update  |default(true) |bool }}\\\"_\\n\\n\\n\\n```\\n\\nTASK: [moduleprefix--somemodule | debug ] **************************************** \\n\\nok: [local-vm] => {\\n\\n    \\\"msg\\\": [\\n\\n        {\\n\\n            \\\"git\\\": {\\n\\n                \\\"update\\\": \\\"True\\\",\\n\\n                \\\"url\\\": \\\"ssh://git@bitbucket.org/uuuuu/ggggggggggggggggggggg.git\\\",\\n\\n                \\\"version\\\": \\\"master\\\"\\n\\n            },\\n\\n            \\\"to\\\": \\\"rrrrr\\\"\\n\\n        }\\n\\n    ]\\n\\n}\\n\\n\\n\\nTASK: [moduleprefix--somemodule | somemodule (git clone)] ********** \\n\\n<local-vm> REMOTE_MODULE git version=master depth=1 repo=ssh:********@bitbucket.org/uuuuu/ggggggggggggggggggggg.git \\n\\nupdate=False accept_hostkey=True dest=/var/www/site.rrrrr_website/repo/rrrrr \\n\\nrecursive=False force=False\\n\\nok: [local-vm] => (item={'to': 'rrrrr', 'git': {'url': u'ssh://git@bitbucket.org/uuuuu/ggggggggggggggggggggg.git', \\n\\n'version': u'master', 'update': u'True'}}) => {\\\"after\\\": \\\"1d9b80fd6a5aa4b61d150b10f3923668e61709e1\\\", \\\"before\\\": \\\"1d9b80fd6a5aa4b61d150b10f3923668e61709e1\\\", \\n\\n\\\"changed\\\": false, \\\"item\\\": {\\\"git\\\": \\n\\n{\\\"update\\\": \\\"True\\\", \\\"url\\\": \\\"ssh://git@bitbucket.org/uuuuu/ggggggggggggggggggggg.git\\\", \\n\\n\\\"version\\\": \\\"master\\\"}, \\\"to\\\": \\\"rrrrr\\\"}}\\n\\n```\\n\\n\\n\\nHere,  it (incorrectly) finishes, since it skips updating the repository, even though update is set to True.\\n\\n\\n\\nThis behaviour also happens in other modules.\\n\\nThe fact that it \\\"fails\\\" silently is insidious because it doesn't give you any clue on what is happening.\\n\\nAny help is appreciated.\\n\\nThanks\", \n    \"title\": \"git module fails to interpret bool parameter (assumes Unicode) - v1.9.2\"\n  }, \n  \"11525\": {\n    \"ansible_version\": \"1.9.2\", \n    \"body\": \"##### ISSUE TYPE\\n\\nBug Report\\n##### COMPONENT NAME\\n\\ninventory\\n##### ANSIBLE VERSION\\n\\n1.9.2\\n##### SUMMARY\\n\\nAfter recent update, when I try to run my playbook, I immediately get the `skipping: no hosts matched` response. I can reproduce it with following command:\\n\\n```\\nansible myhost --list-hosts \\n```\\n\\nThe output of it is `No hosts matched`. `myhost` is defined in my local ssh config. `-c ssh` has the same effect. When I downgrade to `1.7.2` it works fine (ansible locates `myhost`). `/etc/ansible/ansible.cfg` has defaults in `[ssh_connection]` section.  \\nMy system is Ubuntu 15.04. Ssh version is `OpenSSH_6.7p1 Ubuntu-5ubuntu1, OpenSSL 1.0.1f 6 Jan 2014`. Current Ansible version is `1.9.2`.\\n\", \n    \"component_name\": \"inventory\", \n    \"component_raw\": \"inventory\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/11525\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_1.9\", \n      \"bot_broken\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"After recent update, when I try to run my playbook, I immediately get the `skipping: no hosts matched` response. I can reproduce it with following command:\\n\\n```\\nansible myhost --list-hosts \\n```\\n\\nThe output of it is `No hosts matched`. `myhost` is defined in my local ssh config. `-c ssh` has the same effect. When I downgrade to `1.7.2` it works fine (ansible locates `myhost`). `/etc/ansible/ansible.cfg` has defaults in `[ssh_connection]` section.  \\nMy system is Ubuntu 15.04. Ssh version is `OpenSSH_6.7p1 Ubuntu-5ubuntu1, OpenSSL 1.0.1f 6 Jan 2014`. Current Ansible version is `1.9.2`.\", \n    \"title\": \"Ansible cannot find hosts defined in ~/.ssh/config\"\n  }, \n  \"15907\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0 (TEST_RSYNC_SSHKEY 42f6114b61) last updated 2016/05/17 191157 (GMT -400)\\nlib/ansible/modules/core (devel 67de0675c3) last updated 2016/05/17 191201 (GMT -400)\\nlib/ansible/modules/extras (devel e8391d6985) last updated 2016/05/17 191206 (GMT -400)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n##### ISSUE TYPE\\r\\n- Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nsynchronize module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.0 (TEST_RSYNC_SSHKEY 42f6114b61) last updated 2016/05/17 19:11:57 (GMT -400)\\r\\n  lib/ansible/modules/core: (devel 67de0675c3) last updated 2016/05/17 19:12:01 (GMT -400)\\r\\n  lib/ansible/modules/extras: (devel e8391d6985) last updated 2016/05/17 19:12:06 (GMT -400)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n##### CONFIGURATION\\r\\n\\r\\ndefault\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nfedora 23 controlhost\\r\\n##### SUMMARY\\r\\n\\r\\nrsync_opts with \\\"-i keyfile\\\" combined with --private-key= on the ansible cli, will construct two --rsh arguments to the rsync command.\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```\\r\\n- hosts: foohost\\r\\n  gather_facts: False\\r\\n  user: admin\\r\\n  #connection: local\\r\\n  tasks:\\r\\n    - name: push with become to different remote user and delegate to different host\\r\\n      synchronize:\\r\\n        mode: push\\r\\n        src: /tmp/foo\\r\\n        dest: /tmp/foo_\\r\\n        rsync_opts: --rsh \\\"ssh -o PasswordAuthentication=no -i /home/admin/.ssh/id_rsa.bak\\\"\\r\\n/.ssh/id_rsa.bak\\\"\\r\\n      become: yes\\r\\n      become_user: admin\\r\\n      become_method: su  \\r\\n      delegate_to: barhost\\r\\n\\r\\n```\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nOnly a single --rsh option.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nVerbose output ...\\r\\n\\r\\n```\\r\\nchanged: [barhost-> foohost] => {\\\"changed\\\": true, \\\"cmd\\\": \\\"/usr/bin/rsync --delay-updates -F --compress --archive --rsh 'ssh -i /home/jtanner/.ssh/id_rsa -S none -o StrictHostKeyChecking=no' --rsh \\\\\\\"ssh -o Pass\\r\\nwordAuthentication=no -i /home/admin/.ssh/id_rsa.bak\\\\\\\" --out-format='<<CHANGED>>%i %n%L' \\\\\\\"/tmp/foo\\\\\\\" \\\\\\\"foohost:/tmp/foo_\\\\\\\"\\\", \\\"invocation\\\": {\\\"module_args\\\": {\\\"_local_rsync_path\\\": \\\"rsync\\\", \\\"_substitute_controller\\\": false, \\\"archive\\\":\\r\\n true, \\\"checksum\\\": false, \\\"compress\\\": true, \\\"copy_links\\\": null, \\\"delete\\\": false, \\\"dest\\\": \\\"foohost:/tmp/foo_\\\", \\\"dest_port\\\": 22, \\\"dirs\\\": false, \\\"existing_only\\\": false, \\\"group\\\": null, \\\"links\\\": null, \\\"mode\\\": \\\"push\\\", \\\"owner\\\": null, \\\"part\\r\\nial\\\": false, \\\"perms\\\": null, \\\"private_key\\\": \\\"/home/jtanner/.ssh/id_rsa\\\", \\\"recursive\\\": null, \\\"rsync_opts\\\": [\\\"--rsh \\\\\\\"ssh -o PasswordAuthentication=no -i /home/admin/.ssh/id_rsa.bak\\\\\\\"\\\"], \\\"rsync_path\\\": null, \\\"rsync_timeout\\\": 0, \\\"set_remote_user\\\": true, \\\"sr\\r\\nc\\\": \\\"/tmp/foo\\\", \\\"ssh_args\\\": null, \\\"times\\\": null, \\\"verify_host\\\": false}}, \\\"msg\\\": \\\".d..t...... foo/\\\\n<f..t...... foo/1\\\\n<f..t...... foo/2\\\\n<f..t...... foo/3\\\\n\\\", \\\"rc\\\": 0, \\\"stdout_lines\\\": [\\\".d..t...... foo/\\\", \\\"<f..t...... foo/1\\\", \\\"<f..t...... foo/2\\\", \\\"<f..t.\\r\\n..... foo/3\\\"]}\\r\\n```\\r\\n\", \n    \"component_name\": \"synchronize\", \n    \"component_raw\": \"synchronize module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/15907\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/synchronize.py\", \n    \"summary\": \"rsync_opts with \\\"-i keyfile\\\" combined with --private-key= on the ansible cli, will construct two --rsh arguments to the rsync command.\", \n    \"title\": \"sychronize rsync_opts and --private-key= will send two --rsh arguments\"\n  }, \n  \"16586\": {\n    \"ansible_version\": \"ansible 2.1.0.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\naction_plugin\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.0.0\\n```\\n##### CONFIGURATION\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\nCentOS 7.2\\n##### SUMMARY\\n\\nImporting from action plugins depends on the task order.\\n##### STEPS TO REPRODUCE\\n\\nCreate an action plugin that imports another action plugin.\\n\\naction_plugins/test_import.py\\n\\n``` python\\nfrom ansible.plugins.action import copy\\n\\nclass ActionModule(copy.ActionModule):\\n    pass\\n```\\n\\nlibrary/test_import.py\\n\\n``` python\\n# empty file\\n```\\n\\nNow test_play.yaml:\\n\\n``` yaml\\n- hosts: localhost\\n  tasks:\\n    - copy:\\n        content='test'\\n        dest=/tmp/test\\n    - test_import:\\n        content='test'\\n        dest=/tmp/test\\n```\\n\\n```\\n$ ansible-playbook test.yaml \\n\\nPLAY [localhost] ***************************************************************\\n\\nTASK [copy] ********************************************************************\\nok: [localhost]\\nERROR! Unexpected Exception: cannot import name copy\\n```\\n\\nIf you flip the order and run test_import _before_ copy, no error occurs.\\n\", \n    \"component_name\": \"action_plugin\", \n    \"component_raw\": \"action_plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/16586\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Importing from action plugins depends on the task order.\", \n    \"title\": \"Importing from action plugins depends on the task order\"\n  }, \n  \"16888\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Documentation Report\\n##### COMPONENT NAME\\n\\ninternal: module_utils.*\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.0.0\\n  config file =\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nModule developers/maintainers have a hard time using module_utils.\\\\* because there is nearly no documentation. At least I couldn't find any.\\n\\nProposal:\\n1. Create documentation for module_utils.*\\n2. Publish it on the Ansible web site\\n###### Details\\n\\nFor example, the fetch_url method does not document its return values. You have to debug and know the internally used urllib2 to understand what the \\\"info\\\" return value contains. \\n\\nWhen creating a new module, using the \\\"requests\\\" library, the build says: \\n\\n```\\n8.60s$ ansible-validate-modules --exclude 'utilities/' .\\n============================================================================\\n./cloud/digital_ocean/digital_ocean_tag.py\\n============================================================================\\nERROR: requests import found, should use ansible.module_utils.urls instead\\n```\\n\\nTherefore: when asking (demanding) to use a library it should be documented (as thoroughly as possible). Otherwise the entry hurdle becomes rather high\\n\", \n    \"component_name\": \"internal module_utils.\", \n    \"component_raw\": \"internal: module_utils.*\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/16888\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Module developers/maintainers have a hard time using module_utils.\\\\* because there is nearly no documentation. At least I couldn't find any.\\n\\nProposal:\\n1. Create documentation for module_utils.*\\n2. Publish it on the Ansible web site\\n###### Details\\n\\nFor example, the fetch_url method does not document its return values. You have to debug and know the internally used urllib2 to understand what the \\\"info\\\" return value contains. \\n\\nWhen creating a new module, using the \\\"requests\\\" library, the build says: \\n\\n```\\n8.60s$ ansible-validate-modules --exclude 'utilities/' .\\n============================================================================\\n./cloud/digital_ocean/digital_ocean_tag.py\\n============================================================================\\nERROR: requests import found, should use ansible.module_utils.urls instead\\n```\\n\\nTherefore: when asking (demanding) to use a library it should be documented (as thoroughly as possible). Otherwise the entry hurdle becomes rather high\", \n    \"title\": \"document module_utils.*\"\n  }, \n  \"17029\": {\n    \"ansible_version\": \"ansible 2.1.0.0\", \n    \"body\": \"##### ISSUE TYPE\\n\\nBug Report\\n##### COMPONENT NAME\\n\\nmodule_utils/facts.py\\n##### ANSIBLE VERSION\\n\\nansible 2.1.0.0 \\n##### OS / ENVIRONMENT\\n\\nAnsible \\\"client\\\" is Debian 7\\n##### SUMMARY / STEPS TO REPRODUCE\\n\\nThe issue is a little bit related to #4688\\n\\nAnsible can not connect, if a special logname setting is used at ssh authkeys file on the target host\\n\\nFor multi-user separation I am using the environment=\\\"LOGNAME=jan.sobolewski\\\" ssh-**\\\\* [pubkey] in /poweruser/.ssh/authorized_keys on the server I want to manage with ansible.\\n\\nThis allows to control which user logged in at which timestamp by sharing a single poweruser. Most of you may already know that feature.\\n\\nI configured ansible to connect me as \\\"poweruser\\\". That worked fine on all servers.\\nExcepting servers that used the ssh-environment in their authkeys file as I explained above.\\n\\nansible hostname.blah.local -m setup may cause the issue:\\n\\nhostname.blah.local | FAILED! => {\\n    \\\"changed\\\": false,\\n    \\\"failed\\\": true,\\n    \\\"module_stderr\\\": \\\"\\\",\\n    \\\"module_stdout\\\": \\\"Traceback (most recent call last):\\\\r\\\\n  File \\\\\\\"/tmp/ansible_vCcfCL/ansible_module_setup.py\\\\\\\", line 127, in <module>\\\\r\\\\n    main()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_vCcfCL/ansible_module_setup.py\\\\\\\", line 119, in main\\\\r\\\\n    data = get_all_facts(module)\\\\r\\\\n  File \\\\\\\"/tmp/ansible_vCcfCL/ansible_modlib.zip/ansible/module_utils/facts.py\\\\\\\", line 3177, in get_all_facts\\\\r\\\\n  File \\\\\\\"/tmp/ansible_vCcfCL/ansible_modlib.zip/ansible/module_utils/facts.py\\\\\\\", line 3121, in ansible_facts\\\\r\\\\n  File \\\\\\\"/tmp/ansible_vCcfCL/ansible_modlib.zip/ansible/module_utils/facts.py\\\\\\\", line 195, in **init**\\\\r\\\\n  File \\\\\\\"/tmp/ansible_vCcfCL/ansible_modlib.zip/ansible/module_utils/facts.py\\\\\\\", line 787, in get_user_facts\\\\r\\\\nKeyError: 'getpwnam(): name not found: jan.sobolewski'\\\\r\\\\n\\\",\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\",\\n    \\\"parsed\\\": false\\n}\\n##### EXPECTED RESULTS\\n\\nssh connect user has to be declared at the local ansible setting file where the scripts are located on. As ansible decided to use the \\\"logname\\\" instead of my configuration this turned the userconfig into a joke. Maybe I did'nt find an existing workaround?\\nIt seems that ansible may take the logname instead of my already defined username.\\n\\nTurning of collecting facts is not a option ;-)\\n\", \n    \"component_name\": \"module_utils/facts.py\", \n    \"component_raw\": \"module_utils/facts.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17029\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"/\", \n    \"title\": \"gathering facts caused setup to fail by using ssh-config environment logname on client side\"\n  }, \n  \"17038\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nGeneral Ansible / no idea\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.0.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nNone\\n##### OS / ENVIRONMENT\\n\\nPlain install of Ansible Tower on CentOS 7, up to date\\n##### SUMMARY\\n\\nTypeError in ansible-generated script\\n##### STEPS TO REPRODUCE\\n\\n```\\nUnsure which part of playbook may be relevant\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\nWorks when run manually on Ansible 2.1.1.0\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nIdentity added: /tmp/ansible_tower_j61zhf/credential (/tmp/ansible_tower_j61zhf/credential)\\nUsing /var/lib/awx/projects/_4__demo_project/ansible.cfg as config file\\n\\nPLAYBOOK: chmurka.yml **********************************************************\\n3 plays in chmurka.yml\\n\\nPLAY [Set up CIAPI] ************************************************************\\n\\nTASK [setup] *******************************************************************\\n<api-host> ESTABLISH SSH CONNECTION FOR USER: root\\n<api-host> SSH: EXEC ssh -C -q -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/tmp/ansible_tower_j61zhf/cp/ansible-ssh-%h-%p-%r api-host '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1470863668.41-135499919505075 `\\\" && echo ansible-tmp-1470863668.41-135499919505075=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1470863668.41-135499919505075 `\\\" ) && sleep 0'\\\"'\\\"''\\n<api-host> PUT /tmp/tmp9PpGTu TO /root/.ansible/tmp/ansible-tmp-1470863668.41-135499919505075/setup\\n<api-host> SSH: EXEC sftp -b - -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/tmp/ansible_tower_j61zhf/cp/ansible-ssh-%h-%p-%r '[api-host]'\\n<api-host> ESTABLISH SSH CONNECTION FOR USER: root\\n<api-host> SSH: EXEC ssh -C -q -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/tmp/ansible_tower_j61zhf/cp/ansible-ssh-%h-%p-%r -tt api-host '/bin/sh -c '\\\"'\\\"'LANG=en_US.utf8 LC_ALL=en_US.utf8 LC_MESSAGES=en_US.utf8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1470863668.41-135499919505075/setup; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1470863668.41-135499919505075/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\nfatal: [api-host]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"invocation\\\": {\\\"module_name\\\": \\\"setup\\\"}, \\\"module_stderr\\\": \\\"\\\", \\\"module_stdout\\\": \\\"Traceback (most recent call last):\\\\r\\\\n  File \\\\\\\"/tmp/ansible_uoiph15r/ansible_module_setup.py\\\\\\\", line 127, in <module>\\\\r\\\\n    main()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_uoiph15r/ansible_module_setup.py\\\\\\\", line 117, in main\\\\r\\\\n    supports_check_mode = True,\\\\r\\\\n  File \\\\\\\"/tmp/ansible_uoiph15r/ansible_modlib.zip/ansible/module_utils/basic.py\\\\\\\", line 679, in __init__\\\\r\\\\n  File \\\\\\\"/tmp/ansible_uoiph15r/ansible_modlib.zip/ansible/module_utils/basic.py\\\\\\\", line 1615, in _log_invocation\\\\r\\\\n  File \\\\\\\"/tmp/ansible_uoiph15r/ansible_modlib.zip/ansible/module_utils/basic.py\\\\\\\", line 475, in heuristic_log_sanitize\\\\r\\\\nTypeError: a bytes-like object is required, not 'str'\\\\r\\\\n\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\", \\\"parsed\\\": false}\\n\\nNO MORE HOSTS LEFT *************************************************************\\n    to retry, use: --limit @chmurka.retry\\n\\nPLAY RECAP *********************************************************************\\napi-host              : ok=0    changed=0    unreachable=0    failed=1   \\n\\n```\\n\", \n    \"component_name\": \"general ansible / no idea\", \n    \"component_raw\": \"General Ansible / no idea\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17038\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"needs_info\", \n      \"python3\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"TypeError in ansible-generated script\", \n    \"title\": \"TypeError: a bytes-like object is required (ansible_modlib.zip/ansible/module_utils/basic.py)\"\n  }, \n  \"17041\": {\n    \"ansible_version\": \"2.x\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Request\\n##### COMPONENT NAME\\n\\nansible core\\n##### ANSIBLE VERSION\\n\\n2.x\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nI would like to work with \\\"when\\\" switches in ansible tasks that relay on commandline switches.\\nFor example:\\na)\\nIf the option --check is given i want to change the behaviour of an shell/command task.\\nb)\\nIf the option -vvvv is given i want to run extra tasks that produce extra debug output with the debug: msg=\\\"\\\" task.\\n##### STEPS TO REPRODUCE\\n\\nansible web -m setup\\n##### EXPECTED RESULTS\\n\\nKey : Value structure for the commandline parameters...\\n\\nansible web -m setup -a 'filter=ansible_commandline'\\n        \\\"ansible_commandline'\\\": {\\n            \\\"check\\\": \\\"false\\\", \\n            \\\"become\\\": \\\"root\\\",\\n            \\\"verbose\\\": \\\"4\\\"\\n             ...\\n             ...\\n             ...\\n        },\\n##### ACTUAL RESULTS\\n\\n=> none\\n\\nOutput:\\n  \\\"ansible_facts\\\": {},\\n\", \n    \"component_name\": \"ansible core\", \n    \"component_raw\": \"ansible core\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17041\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I would like to work with \\\"when\\\" switches in ansible tasks that relay on commandline switches.\\nFor example:\\na)\\nIf the option --check is given i want to change the behaviour of an shell/command task.\\nb)\\nIf the option -vvvv is given i want to run extra tasks that produce extra debug output with the debug: msg=\\\"\\\" task.\", \n    \"title\": \"add commandline params as built-in variables for playbooks\"\n  }, \n  \"17042\": {\n    \"ansible_version\": \"2.x\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nmodule shell && command\\n##### ANSIBLE VERSION\\n\\n2.x\\n##### CONFIGURATION\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nOften playbooks that are run with --check breat at that point when the shell or command tasks are used. Especially when return codes of these tasks are used in furhter tasks as input.\\nIf this happens (for me very often) I'm not able to test an entire playbook.\\nIt would be great if these modules would have another parameter like \\\"mock\\\" or \\\"mock_return\\\" where an alternative \\\"command\\\" could be desinged that is run instead of the command that is uses in normal (not with --check) playbook runs.\\n##### STEPS TO REPRODUCE\\n\\nrun a playbook with shell tasks and commandline parameter --check\\n### simple playbook where a lates task needs a result from a previous shell task\\n- hosts: myhosts\\n  gather_facts: yes\\n  tasks:\\n  - name: run shell command\\n    shell: echo 'hello world'\\n    register: result\\n  - name: next task that need special results\\n    debug: msg=\\\"result is {{ result.stdout }}\\\"\\n##### EXPECTED RESULTS\\n\\nplaybook finishes without errors\\n##### ACTUAL RESULTS\\n### \\\"hello world\\\" in stdout is present playbook works\\n\\nme@hostname:~/ansible2$ ansible-playbook -i test.ini test.yml\\nusing environment for Ansible 2.0.1.0\\n\\nPLAY ***************************************************************************\\n\\nTASK [setup] *******************************************************************\\n20160811 11:44:39 +0200 (0:00:00.145)       0:00:00.145 **********************\\\\* \\nok: [localhost]\\n\\nTASK [run shell command] *******************************************************\\n20160811 11:44:41 +0200 (0:00:02.270)       0:00:02.415 **********************\\\\* \\nchanged: [localhost]\\n\\nTASK [next task that need special results] *************************************\\n20160811 11:44:43 +0200 (0:00:01.458)       0:00:03.873 **********************\\\\* \\nok: [localhost] => {\\n    \\\"msg\\\": \\\"result is hello world\\\"\\n}\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=3    changed=1    unreachable=0    failed=0   \\n#20160811 11:44:43 +0200 (0:00:00.083)       0:00:03.956 **********************\\\\* \\n\\nTASK: setup ------------------------------------------------------------- 2.27s\\nTASK: run shell command ------------------------------------------------- 1.46s\\nTASK: next task that need special results ------------------------------- 0.08s\\nPlaybook run took 0 days, 0 hours, 0 minutes, 3 seconds\\n### \\\"hello world\\\" and even stdout is NOT present playbook fails\\n\\nme@hostname:~/:~/ansible2$ ansible-playbook -i test.ini test.yml --check\\nusing environment for Ansible 2.0.1.0\\n\\nPLAY ***************************************************************************\\n\\nTASK [setup] *******************************************************************\\n20160811 11:44:47 +0200 (0:00:00.132)       0:00:00.132 **********************\\\\* \\nok: [localhost]\\n\\nTASK [run shell command] *******************************************************\\n20160811 11:44:49 +0200 (0:00:02.317)       0:00:02.450 **********************\\\\* \\nskipping: [localhost]\\n\\nTASK [next task that need special results] *************************************\\n20160811 11:44:51 +0200 (0:00:01.488)       0:00:03.939 **********************\\\\* \\nfatal: [localhost]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"'dict' object has no attribute 'stdout'\\\"}\\n\\nNO MORE HOSTS LEFT *************************************************************\\n    to retry, use: --limit @/c/data/home/lb87876/ansible2/retry/test.retry\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=1   \\n#20160811 11:44:51 +0200 (0:00:00.068)       0:00:04.008 **********************\\\\* \\n\\nTASK: setup ------------------------------------------------------------- 2.32s\\nTASK: run shell command ------------------------------------------------- 1.49s\\nTASK: next task that need special results ------------------------------- 0.07s\\nPlaybook run took 0 days, 0 hours, 0 minutes, 3 seconds\\n\", \n    \"component_name\": \"shell && command\", \n    \"component_raw\": \"module shell && command\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17042\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/commands/command.py\", \n    \"summary\": \"Often playbooks that are run with --check breat at that point when the shell or command tasks are used. Especially when return codes of these tasks are used in furhter tasks as input.\\nIf this happens (for me very often) I'm not able to test an entire playbook.\\nIt would be great if these modules would have another parameter like \\\"mock\\\" or \\\"mock_return\\\" where an alternative \\\"command\\\" could be desinged that is run instead of the command that is uses in normal (not with --check) playbook runs.\", \n    \"title\": \"add \\\"mocking\\\" parameter to shell and command module\"\n  }, \n  \"17052\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nOpenstack Inventory Script\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.0.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nThe current OpenStack dynamic inventory script does not appear to have a way to force the usage of assigning instances' floating ip as the ansible_ssh_host address. It only takes whatever the _public_v4_ key in the server object is and uses that. This change will allow the user to specify an inventory variable to ensure the usage of a floating ip if it exists. It also does it in a manner which will allow future similar implementations with other parts of hostvars. \\n\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\n\\nBefore:\\n\\n```\\n\\\"CiiiVM8\\\": {\\n        \\\"ansible_ssh_host\\\": \\\"192.168.111.21\\\",\\n        \\\"openstack\\\": {\\n          \\\"HUMAN_ID\\\": true,\\n          \\\"NAME_ATTR\\\": \\\"name\\\",\\n          \\\"OS-DCF:diskConfig\\\": \\\"MANUAL\\\",\\n          \\\"OS-EXT-AZ:availability_zone\\\": \\\"nova\\\",\\n          \\\"OS-EXT-SRV-ATTR:host\\\": \\\"node-9.domain.tld\\\",\\n          \\\"OS-EXT-SRV-ATTR:hypervisor_hostname\\\": \\\"node-9.domain.tld\\\",\\n          \\\"OS-EXT-SRV-ATTR:instance_name\\\": \\\"instance-00000088\\\",\\n          \\\"OS-EXT-STS:power_state\\\": 1,\\n          \\\"OS-EXT-STS:task_state\\\": null,\\n          \\\"OS-EXT-STS:vm_state\\\": \\\"active\\\",\\n          \\\"OS-SRV-USG:launched_at\\\": \\\"2016-08-03T17:06:33.000000\\\",\\n          \\\"OS-SRV-USG:terminated_at\\\": null,\\n          \\\"accessIPv4\\\": \\\"192.168.111.21\\\",\\n          \\\"accessIPv6\\\": \\\"\\\",\\n          \\\"addresses\\\": {\\n            \\\"admin_internal_net\\\": [\\n              {\\n                \\\"OS-EXT-IPS-MAC:mac_addr\\\": \\\"fa:16:3e:95:85:60\\\",\\n                \\\"OS-EXT-IPS:type\\\": \\\"fixed\\\",\\n                \\\"addr\\\": \\\"192.168.111.21\\\",\\n                \\\"version\\\": 4\\n              },\\n              {\\n                \\\"OS-EXT-IPS-MAC:mac_addr\\\": \\\"fa:16:3e:95:85:60\\\",\\n                \\\"OS-EXT-IPS:type\\\": \\\"floating\\\",\\n                \\\"addr\\\": \\\"10.118.124.61\\\",\\n                \\\"version\\\": 4\\n              }\\n            ]\\n          },\\n          \\\"az\\\": \\\"nova\\\",\\n          \\\"cloud\\\": \\\"rack2f9\\\",\\n          \\\"config_drive\\\": \\\"True\\\",\\n          \\\"created\\\": \\\"2016-08-03T17:06:23Z\\\",\\n          \\\"flavor\\\": {\\n            \\\"id\\\": \\\"2\\\"\\n          },\\n          \\\"hostId\\\": \\\"67d3e9cc79a089b49291836f223b3d91108d9cd49e9992392b0e10ac\\\",\\n          \\\"human_id\\\": \\\"ciiivm8\\\",\\n          \\\"id\\\": \\\"97bc0f6f-5c24-4206-8a51-fa197f7d343d\\\",\\n          \\\"image\\\": {\\n            \\\"id\\\": \\\"058a5139-ed77-47c9-a031-a9b8bed6c5dc\\\"\\n          },\\n          \\\"interface_ip\\\": \\\"192.168.111.21\\\",\\n          \\\"key_name\\\": \\\"hught\\\",\\n          \\\"metadata\\\": {\\n            \\\"group\\\": \\\"client\\\",\\n            \\\"hostname\\\": \\\"CiiiVM8\\\"\\n          },\\n          \\\"name\\\": \\\"CiiiVM8\\\",\\n          \\\"networks\\\": {\\n            \\\"admin_internal_net\\\": [\\n              \\\"192.168.111.21\\\",\\n              \\\"10.118.124.61\\\"\\n            ]\\n          },\\n          \\\"os-extended-volumes:volumes_attached\\\": [],\\n          \\\"private_v4\\\": \\\"\\\",\\n          \\\"progress\\\": 0,\\n          \\\"public_v4\\\": \\\"192.168.111.21\\\",\\n          \\\"public_v6\\\": \\\"\\\",\\n          \\\"region\\\": \\\"\\\",\\n          \\\"request_ids\\\": [],\\n          \\\"security_groups\\\": [\\n            {\\n              \\\"name\\\": \\\"automata\\\"\\n            }\\n          ],\\n          \\\"status\\\": \\\"ACTIVE\\\",\\n          \\\"tenant_id\\\": \\\"870adc072e3240ec9733740eea5c2473\\\",\\n          \\\"updated\\\": \\\"2016-08-03T17:06:34Z\\\",\\n          \\\"user_id\\\": \\\"3c6d9ba4a20a4255aa5fd6b137ad5fcd\\\",\\n          \\\"volumes\\\": [],\\n          \\\"x_openstack_request_ids\\\": []\\n        }\\n      },\\n```\\n\\nAfter:\\n\\n```\\n\\\"CiiiVM8\\\": {\\n        \\\"ansible_ssh_host\\\": \\\"10.118.124.61\\\",\\n        \\\"openstack\\\": {\\n          \\\"HUMAN_ID\\\": true,\\n          \\\"NAME_ATTR\\\": \\\"name\\\",\\n          \\\"OS-DCF:diskConfig\\\": \\\"MANUAL\\\",\\n          \\\"OS-EXT-AZ:availability_zone\\\": \\\"nova\\\",\\n          \\\"OS-EXT-SRV-ATTR:host\\\": \\\"node-9.domain.tld\\\",\\n          \\\"OS-EXT-SRV-ATTR:hypervisor_hostname\\\": \\\"node-9.domain.tld\\\",\\n          \\\"OS-EXT-SRV-ATTR:instance_name\\\": \\\"instance-00000088\\\",\\n          \\\"OS-EXT-STS:power_state\\\": 1,\\n          \\\"OS-EXT-STS:task_state\\\": null,\\n          \\\"OS-EXT-STS:vm_state\\\": \\\"active\\\",\\n          \\\"OS-SRV-USG:launched_at\\\": \\\"2016-08-03T17:06:33.000000\\\",\\n          \\\"OS-SRV-USG:terminated_at\\\": null,\\n          \\\"accessIPv4\\\": \\\"192.168.111.21\\\",\\n          \\\"accessIPv6\\\": \\\"\\\",\\n          \\\"addresses\\\": {\\n            \\\"admin_internal_net\\\": [\\n              {\\n                \\\"OS-EXT-IPS-MAC:mac_addr\\\": \\\"fa:16:3e:95:85:60\\\",\\n                \\\"OS-EXT-IPS:type\\\": \\\"fixed\\\",\\n                \\\"addr\\\": \\\"192.168.111.21\\\",\\n                \\\"version\\\": 4\\n              },\\n              {\\n                \\\"OS-EXT-IPS-MAC:mac_addr\\\": \\\"fa:16:3e:95:85:60\\\",\\n                \\\"OS-EXT-IPS:type\\\": \\\"floating\\\",\\n                \\\"addr\\\": \\\"10.118.124.61\\\",\\n                \\\"version\\\": 4\\n              }\\n            ]\\n          },\\n          \\\"az\\\": \\\"nova\\\",\\n          \\\"cloud\\\": \\\"rack2f9\\\",\\n          \\\"config_drive\\\": \\\"True\\\",\\n          \\\"created\\\": \\\"2016-08-03T17:06:23Z\\\",\\n          \\\"flavor\\\": {\\n            \\\"id\\\": \\\"2\\\"\\n          },\\n          \\\"hostId\\\": \\\"67d3e9cc79a089b49291836f223b3d91108d9cd49e9992392b0e10ac\\\",\\n          \\\"human_id\\\": \\\"ciiivm8\\\",\\n          \\\"id\\\": \\\"97bc0f6f-5c24-4206-8a51-fa197f7d343d\\\",\\n          \\\"image\\\": {\\n            \\\"id\\\": \\\"058a5139-ed77-47c9-a031-a9b8bed6c5dc\\\"\\n          },\\n          \\\"interface_ip\\\": \\\"192.168.111.21\\\",\\n          \\\"key_name\\\": \\\"hught\\\",\\n          \\\"metadata\\\": {\\n            \\\"group\\\": \\\"client\\\",\\n            \\\"hostname\\\": \\\"CiiiVM8\\\"\\n          },\\n          \\\"name\\\": \\\"CiiiVM8\\\",\\n          \\\"networks\\\": {\\n            \\\"admin_internal_net\\\": [\\n              \\\"192.168.111.21\\\",\\n              \\\"10.118.124.61\\\"\\n            ]\\n          },\\n          \\\"os-extended-volumes:volumes_attached\\\": [],\\n          \\\"private_v4\\\": \\\"\\\",\\n          \\\"progress\\\": 0,\\n          \\\"public_v4\\\": \\\"192.168.111.21\\\",\\n          \\\"public_v6\\\": \\\"\\\",\\n          \\\"region\\\": \\\"\\\",\\n          \\\"request_ids\\\": [],\\n          \\\"security_groups\\\": [\\n            {\\n              \\\"name\\\": \\\"automata\\\"\\n            }\\n          ],\\n          \\\"status\\\": \\\"ACTIVE\\\",\\n          \\\"tenant_id\\\": \\\"870adc072e3240ec9733740eea5c2473\\\",\\n          \\\"updated\\\": \\\"2016-08-03T17:06:34Z\\\",\\n          \\\"user_id\\\": \\\"3c6d9ba4a20a4255aa5fd6b137ad5fcd\\\",\\n          \\\"volumes\\\": [],\\n          \\\"x_openstack_request_ids\\\": []\\n        }\\n      },\\n```\\n\\n\\u2026ing ansible_ssh_host with floating ip instead of the private\\n\", \n    \"component_name\": \"openstack inventory script\", \n    \"component_raw\": \"Openstack Inventory Script\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17052\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"openstack\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The current OpenStack dynamic inventory script does not appear to have a way to force the usage of assigning instances' floating ip as the ansible_ssh_host address. It only takes whatever the _public_v4_ key in the server object is and uses that. This change will allow the user to specify an inventory variable to ensure the usage of a floating ip if it exists. It also does it in a manner which will allow future similar implementations with other parts of hostvars. \\n\\n\\n\\nBefore:\\n\\n```\\n\\\"CiiiVM8\\\": {\\n        \\\"ansible_ssh_host\\\": \\\"192.168.111.21\\\",\\n        \\\"openstack\\\": {\\n          \\\"HUMAN_ID\\\": true,\\n          \\\"NAME_ATTR\\\": \\\"name\\\",\\n          \\\"OS-DCF:diskConfig\\\": \\\"MANUAL\\\",\\n          \\\"OS-EXT-AZ:availability_zone\\\": \\\"nova\\\",\\n          \\\"OS-EXT-SRV-ATTR:host\\\": \\\"node-9.domain.tld\\\",\\n          \\\"OS-EXT-SRV-ATTR:hypervisor_hostname\\\": \\\"node-9.domain.tld\\\",\\n          \\\"OS-EXT-SRV-ATTR:instance_name\\\": \\\"instance-00000088\\\",\\n          \\\"OS-EXT-STS:power_state\\\": 1,\\n          \\\"OS-EXT-STS:task_state\\\": null,\\n          \\\"OS-EXT-STS:vm_state\\\": \\\"active\\\",\\n          \\\"OS-SRV-USG:launched_at\\\": \\\"2016-08-03T17:06:33.000000\\\",\\n          \\\"OS-SRV-USG:terminated_at\\\": null,\\n          \\\"accessIPv4\\\": \\\"192.168.111.21\\\",\\n          \\\"accessIPv6\\\": \\\"\\\",\\n          \\\"addresses\\\": {\\n            \\\"admin_internal_net\\\": [\\n              {\\n                \\\"OS-EXT-IPS-MAC:mac_addr\\\": \\\"fa:16:3e:95:85:60\\\",\\n                \\\"OS-EXT-IPS:type\\\": \\\"fixed\\\",\\n                \\\"addr\\\": \\\"192.168.111.21\\\",\\n                \\\"version\\\": 4\\n              },\\n              {\\n                \\\"OS-EXT-IPS-MAC:mac_addr\\\": \\\"fa:16:3e:95:85:60\\\",\\n                \\\"OS-EXT-IPS:type\\\": \\\"floating\\\",\\n                \\\"addr\\\": \\\"10.118.124.61\\\",\\n                \\\"version\\\": 4\\n              }\\n            ]\\n          },\\n          \\\"az\\\": \\\"nova\\\",\\n          \\\"cloud\\\": \\\"rack2f9\\\",\\n          \\\"config_drive\\\": \\\"True\\\",\\n          \\\"created\\\": \\\"2016-08-03T17:06:23Z\\\",\\n          \\\"flavor\\\": {\\n            \\\"id\\\": \\\"2\\\"\\n          },\\n          \\\"hostId\\\": \\\"67d3e9cc79a089b49291836f223b3d91108d9cd49e9992392b0e10ac\\\",\\n          \\\"human_id\\\": \\\"ciiivm8\\\",\\n          \\\"id\\\": \\\"97bc0f6f-5c24-4206-8a51-fa197f7d343d\\\",\\n          \\\"image\\\": {\\n            \\\"id\\\": \\\"058a5139-ed77-47c9-a031-a9b8bed6c5dc\\\"\\n          },\\n          \\\"interface_ip\\\": \\\"192.168.111.21\\\",\\n          \\\"key_name\\\": \\\"hught\\\",\\n          \\\"metadata\\\": {\\n            \\\"group\\\": \\\"client\\\",\\n            \\\"hostname\\\": \\\"CiiiVM8\\\"\\n          },\\n          \\\"name\\\": \\\"CiiiVM8\\\",\\n          \\\"networks\\\": {\\n            \\\"admin_internal_net\\\": [\\n              \\\"192.168.111.21\\\",\\n              \\\"10.118.124.61\\\"\\n            ]\\n          },\\n          \\\"os-extended-volumes:volumes_attached\\\": [],\\n          \\\"private_v4\\\": \\\"\\\",\\n          \\\"progress\\\": 0,\\n          \\\"public_v4\\\": \\\"192.168.111.21\\\",\\n          \\\"public_v6\\\": \\\"\\\",\\n          \\\"region\\\": \\\"\\\",\\n          \\\"request_ids\\\": [],\\n          \\\"security_groups\\\": [\\n            {\\n              \\\"name\\\": \\\"automata\\\"\\n            }\\n          ],\\n          \\\"status\\\": \\\"ACTIVE\\\",\\n          \\\"tenant_id\\\": \\\"870adc072e3240ec9733740eea5c2473\\\",\\n          \\\"updated\\\": \\\"2016-08-03T17:06:34Z\\\",\\n          \\\"user_id\\\": \\\"3c6d9ba4a20a4255aa5fd6b137ad5fcd\\\",\\n          \\\"volumes\\\": [],\\n          \\\"x_openstack_request_ids\\\": []\\n        }\\n      },\\n```\\n\\nAfter:\\n\\n```\\n\\\"CiiiVM8\\\": {\\n        \\\"ansible_ssh_host\\\": \\\"10.118.124.61\\\",\\n        \\\"openstack\\\": {\\n          \\\"HUMAN_ID\\\": true,\\n          \\\"NAME_ATTR\\\": \\\"name\\\",\\n          \\\"OS-DCF:diskConfig\\\": \\\"MANUAL\\\",\\n          \\\"OS-EXT-AZ:availability_zone\\\": \\\"nova\\\",\\n          \\\"OS-EXT-SRV-ATTR:host\\\": \\\"node-9.domain.tld\\\",\\n          \\\"OS-EXT-SRV-ATTR:hypervisor_hostname\\\": \\\"node-9.domain.tld\\\",\\n          \\\"OS-EXT-SRV-ATTR:instance_name\\\": \\\"instance-00000088\\\",\\n          \\\"OS-EXT-STS:power_state\\\": 1,\\n          \\\"OS-EXT-STS:task_state\\\": null,\\n          \\\"OS-EXT-STS:vm_state\\\": \\\"active\\\",\\n          \\\"OS-SRV-USG:launched_at\\\": \\\"2016-08-03T17:06:33.000000\\\",\\n          \\\"OS-SRV-USG:terminated_at\\\": null,\\n          \\\"accessIPv4\\\": \\\"192.168.111.21\\\",\\n          \\\"accessIPv6\\\": \\\"\\\",\\n          \\\"addresses\\\": {\\n            \\\"admin_internal_net\\\": [\\n              {\\n                \\\"OS-EXT-IPS-MAC:mac_addr\\\": \\\"fa:16:3e:95:85:60\\\",\\n                \\\"OS-EXT-IPS:type\\\": \\\"fixed\\\",\\n                \\\"addr\\\": \\\"192.168.111.21\\\",\\n                \\\"version\\\": 4\\n              },\\n              {\\n                \\\"OS-EXT-IPS-MAC:mac_addr\\\": \\\"fa:16:3e:95:85:60\\\",\\n                \\\"OS-EXT-IPS:type\\\": \\\"floating\\\",\\n                \\\"addr\\\": \\\"10.118.124.61\\\",\\n                \\\"version\\\": 4\\n              }\\n            ]\\n          },\\n          \\\"az\\\": \\\"nova\\\",\\n          \\\"cloud\\\": \\\"rack2f9\\\",\\n          \\\"config_drive\\\": \\\"True\\\",\\n          \\\"created\\\": \\\"2016-08-03T17:06:23Z\\\",\\n          \\\"flavor\\\": {\\n            \\\"id\\\": \\\"2\\\"\\n          },\\n          \\\"hostId\\\": \\\"67d3e9cc79a089b49291836f223b3d91108d9cd49e9992392b0e10ac\\\",\\n          \\\"human_id\\\": \\\"ciiivm8\\\",\\n          \\\"id\\\": \\\"97bc0f6f-5c24-4206-8a51-fa197f7d343d\\\",\\n          \\\"image\\\": {\\n            \\\"id\\\": \\\"058a5139-ed77-47c9-a031-a9b8bed6c5dc\\\"\\n          },\\n          \\\"interface_ip\\\": \\\"192.168.111.21\\\",\\n          \\\"key_name\\\": \\\"hught\\\",\\n          \\\"metadata\\\": {\\n            \\\"group\\\": \\\"client\\\",\\n            \\\"hostname\\\": \\\"CiiiVM8\\\"\\n          },\\n          \\\"name\\\": \\\"CiiiVM8\\\",\\n          \\\"networks\\\": {\\n            \\\"admin_internal_net\\\": [\\n              \\\"192.168.111.21\\\",\\n              \\\"10.118.124.61\\\"\\n            ]\\n          },\\n          \\\"os-extended-volumes:volumes_attached\\\": [],\\n          \\\"private_v4\\\": \\\"\\\",\\n          \\\"progress\\\": 0,\\n          \\\"public_v4\\\": \\\"192.168.111.21\\\",\\n          \\\"public_v6\\\": \\\"\\\",\\n          \\\"region\\\": \\\"\\\",\\n          \\\"request_ids\\\": [],\\n          \\\"security_groups\\\": [\\n            {\\n              \\\"name\\\": \\\"automata\\\"\\n            }\\n          ],\\n          \\\"status\\\": \\\"ACTIVE\\\",\\n          \\\"tenant_id\\\": \\\"870adc072e3240ec9733740eea5c2473\\\",\\n          \\\"updated\\\": \\\"2016-08-03T17:06:34Z\\\",\\n          \\\"user_id\\\": \\\"3c6d9ba4a20a4255aa5fd6b137ad5fcd\\\",\\n          \\\"volumes\\\": [],\\n          \\\"x_openstack_request_ids\\\": []\\n        }\\n      },\\n```\\n\\ning ansible_ssh_host with floating ip instead of the private\", \n    \"title\": \"adding use_floatingip arg to openstack inventory script to allow sett\\u2026\"\n  }, \n  \"17059\": {\n    \"ansible_version\": \"ansible 1.9.6\\nconfigured module search path = None\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nrunner\\n##### ANSIBLE VERSION\\n\\n```\\nansible 1.9.6\\n  configured module search path = None\\n```\\n##### CONFIGURATION\\n\\nnone\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nCurrent documentation for `retries` under playbook_loops contains the following text:\\n\\n> The task returns the results returned by the last task run. The results of individual retries can be viewed by -vv option. The registered variable will also have a new key \\\"attempts\\\" which will have the number of the retries for the task.\\n\\nThis suggests that you would see the same message appearing on failure from the last attempt as you would if retries was not applied to the task. Unfortunately the code replaces the contents of 'msg' in the results returned, thus hiding any information from many executed module as to what the error was that caused the retry to fail. Some modules such as the `shell` and `command` modules will include `stdout` separately, however as the common module boilerplate https://github.com/ansible/ansible/blob/stable-1.9/docsite/rst/developing_modules.rst#id5 encourages many modules to use `msg` for any messages back to the user when calling `exit_json`, those that include useful information via other attributes upon error with retries/until to be displayed are the exception rather than the rule.\\n\\nWhile it is possible to print the result from each attempt using '-vv', it's not practical to enable this for long playbooks.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\nAs the command module uses msg for errors for cases where it detects a problem with the arguments given, it provides a simple example\\n\\n```\\n- hosts: localhost\\n  connection: local\\n  gather_facts: False\\n  tasks:\\n    - command:\\n      register: _test_retries_shell_result\\n      until: _test_retries_shell_result.rc == 0\\n      retries: 3\\n      delay: \\n```\\n\\nAlternatively, can see better with the pip module\\n\\n```\\n- hosts: localhost\\n  connection: local\\n  gather_facts: False\\n  tasks:\\n    - pip:\\n        name: pip wheel virtualenv\\n        virtualenv: ~/tmp/test-virtualenv\\n        state: present\\n        extra_args: >\\n          --upgrade\\n          --timeout 30\\n          --invalid-arg\\n      register: _test_retries_virtualenv_result\\n      until: _test_retries_virtualenv_result|success\\n      retries: 3\\n      delay: 1\\n```\\n##### EXPECTED RESULTS\\n\\nExpected to see the same output from the last iteration of the retry task as would normally appear if retries was not applied to the task, and the additional message about failing due to exceeding the specified number of retries.\\n\\ncommand example\\n\\n```\\nPLAY [localhost] ************************************************************** \\n\\nTASK: [command ] ************************************************************** \\nfailed: [localhost] => {\\\"attempts\\\": 3, \\\"failed\\\": true, \\\"rc\\\": 256}\\nmsg: no command given\\nTask failed as maximum retries was encountered\\n\\nFATAL: all hosts have already failed -- aborting\\n\\nPLAY RECAP ******************************************************************** \\ncommand  ---------------------------------------------------------------- 0.09s\\n-------------------------------------------------------------------------------\\nTotal: ------------------------------------------------------------------ 0.11s\\n           to retry, use: --limit @/home/<user>/test-virtualenv.retry\\n\\nlocalhost                  : ok=0    changed=0    unreachable=0    failed=1\\n```\\n\\npip example\\n\\n```\\nfailed: [localhost] => {\\\"attempts\\\": 3, \\\"cmd\\\": \\\"/home/baileybd/tmp/test-virtualenv/bin/pip install --upgrade --timeout 30 --invalid-arg\\\\n pip wheel virtualenv\\\", \\\"failed\\\": true}\\nmsg: \\n:stderr: \\nUsage:   \\n  pip install [options] <requirement specifier> [package-index-options] ...\\n  pip install [options] -r <requirements file> [package-index-options] ...\\n  pip install [options] [-e] <vcs project url> ...\\n  pip install [options] [-e] <local project path> ...\\n  pip install [options] <archive url/path> ...\\n\\nno such option: --invalid-arg\\nTask failed as maximum retries was encountered\\n\\nFATAL: all hosts have already failed -- aborting\\n```\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\ncommand example\\n\\n```\\nPLAY [localhost] ************************************************************** \\n\\nTASK: [command ] ************************************************************** \\nfailed: [localhost] => {\\\"attempts\\\": 3, \\\"failed\\\": true, \\\"rc\\\": 256}\\nmsg: Task failed as maximum retries was encountered\\n\\nFATAL: all hosts have already failed -- aborting\\n\\nPLAY RECAP ******************************************************************** \\ncommand  ---------------------------------------------------------------- 3.32s\\n-------------------------------------------------------------------------------\\nTotal: ------------------------------------------------------------------ 3.35s\\n           to retry, use: --limit @/home/<user>/test-virtualenv.retry\\n\\nlocalhost                  : ok=0    changed=0    unreachable=0    failed=1\\n```\\n\\npip example\\n\\n```\\nPLAY [localhost] ************************************************************** \\n\\nTASK: [pip ] ****************************************************************** \\nfailed: [localhost] => {\\\"attempts\\\": 3, \\\"cmd\\\": \\\"/home/<user>/tmp/test-virtualenv/bin/pip install --upgrade --timeout 30 --invalid-arg\\\\n pip wheel virtualenv\\\", \\\"failed\\\": true}\\nmsg: Task failed as maximum retries was encountered\\n\\nFATAL: all hosts have already failed -- aborting\\n\\nPLAY RECAP ******************************************************************** \\npip  -------------------------------------------------------------------- 4.21s\\n-------------------------------------------------------------------------------\\nTotal: ------------------------------------------------------------------ 4.24s\\n           to retry, use: --limit @/home/<user>/test-virtualenv.retry\\n\\nlocalhost                  : ok=0    changed=0    unreachable=0    failed=1\\n```\\n\", \n    \"component_name\": \"runner\", \n    \"component_raw\": \"runner\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17059\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_1.9\", \n      \"bug\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Current documentation for `retries` under playbook_loops contains the following text:\\n\\n> The task returns the results returned by the last task run. The results of individual retries can be viewed by -vv option. The registered variable will also have a new key \\\"attempts\\\" which will have the number of the retries for the task.\\n\\nThis suggests that you would see the same message appearing on failure from the last attempt as you would if retries was not applied to the task. Unfortunately the code replaces the contents of 'msg' in the results returned, thus hiding any information from many executed module as to what the error was that caused the retry to fail. Some modules such as the `shell` and `command` modules will include `stdout` separately, however as the common module boilerplate https://github.com/ansible/ansible/blob/stable-1.9/docsite/rst/developing_modules.rst#id5 encourages many modules to use `msg` for any messages back to the user when calling `exit_json`, those that include useful information via other attributes upon error with retries/until to be displayed are the exception rather than the rule.\\n\\nWhile it is possible to print the result from each attempt using '-vv', it's not practical to enable this for long playbooks.\", \n    \"title\": \"retries documentation and behaviour for 1.9 is inconsistent\"\n  }, \n  \"17065\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nCore, setup, etc. Affects all my playbooks.\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n```\\n##### CONFIGURATION\\n\\n```\\n[defaults]\\nvault_password_file = ~/.vault_pass.txt\\n```\\n##### OS / ENVIRONMENT\\n\\nN/A (Fedora 24)\\n##### SUMMARY\\n\\nI have very large Ansible inventories with dozens of hosts and multiple layers of group variables. Many variable values contain references to other variables. The total number of variables is several hundreds. Several variables are dynamically defined during playbook runs, so they are not yet defined in the beginning of a play, but will be declared later on - before the point where they are needed.\\n\\nEverything worked (and still works) fine with Ansible 1.9.x. After upgrading to Ansible 2.x, Ansible no longer runs but fails with the following error already during the setup module run - i.e. when gathering facts:\\n\\n```\\nlocalhost | FAILED! => {\\n    \\\"failed\\\": true,\\n    \\\"msg\\\": \\\"Mandatory variable not defined.\\\"\\n}\\n```\\n\\nThis happens whenever any of my large inventories is given from command line using the the -i option. The result is the same for the ansible-playbook and plain ansible commands; for example, ansible -m setup -i _inventory_ localhost gives the same error as ansible-playbook _playbook_ -i _inventory_. It appears like Ansible 2.x tries to interpret the whole inventory before running the setup module, and fails when some mandatory variable is missing.\\n\\nNow, I would be happy to edit my inventories and playbooks to define whatever missing variables, but the error message does not specify which variable is missing. Since I have hundreds of variables, some set dynamically, it is impossible to debug this situation.\\n##### STEPS TO REPRODUCE\\n\\nCreate an inventory with nested groups and mandatory group variables with values referencing other variables. Use the group_vars/ and host_vars/ subdirectories to set the variables. Leave some of the mandatory variables undefined for a playbook that uses the set_fact module to dynamically set them later.\\n\\nThen run:\\n\\n```\\nansible -m setup -i inventory localhost\\n```\\n##### EXPECTED RESULTS\\n\\nA) The playbook should run (like it did with Ansible 1.9) and use the dynamically set variables declared later in the playbook.\\n\\nB) Should the run fail, the error message should at least specify which variable is undefined, to allow diagnosing and fixing the problem.\\n##### ACTUAL RESULTS\\n\\nThe run will fail immediately, right at or before running the setup module (gathering facts). You will get an error message that does not specify which variable is not defined.\\n\\n```\\nlocalhost | FAILED! => {\\n    \\\"failed\\\": true,\\n    \\\"msg\\\": \\\"Mandatory variable not defined.\\\"\\n}\\n```\\n\", \n    \"component_name\": \"core setup etc. affects all my playbooks.\", \n    \"component_raw\": \"Core, setup, etc. Affects all my playbooks.\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17065\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I have very large Ansible inventories with dozens of hosts and multiple layers of group variables. Many variable values contain references to other variables. The total number of variables is several hundreds. Several variables are dynamically defined during playbook runs, so they are not yet defined in the beginning of a play, but will be declared later on - before the point where they are needed.\\n\\nEverything worked (and still works) fine with Ansible 1.9.x. After upgrading to Ansible 2.x, Ansible no longer runs but fails with the following error already during the setup module run - i.e. when gathering facts:\\n\\n```\\nlocalhost | FAILED! => {\\n    \\\"failed\\\": true,\\n    \\\"msg\\\": \\\"Mandatory variable not defined.\\\"\\n}\\n```\\n\\nThis happens whenever any of my large inventories is given from command line using the the -i option. The result is the same for the ansible-playbook and plain ansible commands; for example, ansible -m setup -i _inventory_ localhost gives the same error as ansible-playbook _playbook_ -i _inventory_. It appears like Ansible 2.x tries to interpret the whole inventory before running the setup module, and fails when some mandatory variable is missing.\\n\\nNow, I would be happy to edit my inventories and playbooks to define whatever missing variables, but the error message does not specify which variable is missing. Since I have hundreds of variables, some set dynamically, it is impossible to debug this situation.\", \n    \"title\": \"Mandatory variable not defined - since Ansible 2\"\n  }, \n  \"17075\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\ngce module_util\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nIt is possible to connect to GCE using a clientId (feature named Installed Application authentication in apache-libcloud), which is useful when you want users to interact with GCE without creating service accounts and sharing credentials amongst your org.\\n\\nIn that mode, the GCE credential is not a json file, but the client secret string for the given clientId. Unfortunately a check in lib/module_utils/gce.py prevents the use of this authentication mode.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n1. In GCE, create a new client id \\n   open Google Cloud Console > API Manager > credentials\\n   click on Create credentials > OAuth client id\\n   choose Application Type: Other\\n   note the client id/client secret\\n2. Run the following command:\\n\\n```\\nGCE_EMAIL=<client-id> GCE_PEM_FILE_PATH=<client-secret> GCE_PROJECT=<project> ansible localhost -m gce -a name=test\\n```\\n##### EXPECTED RESULTS\\n\\nansible command should create a test instance (it might ask the user to open a browser to get a token id, but if user is already logged in, there's no interaction)\\n\\n```\\n [WARNING]: Host file not found: /usr/local/etc/ansible/hosts\\n\\n [WARNING]: provided hosts list is empty, only localhost is available\\n\\nlocalhost | SUCCESS => {\\n    \\\"changed\\\": true, \\n    \\\"instance_data\\\": [\\n        {\\n            \\\"disks\\\": [\\n                \\\"test\\\"\\n            ], \\n            \\\"image\\\": \\\"debian-7-wheezy-v20160531\\\", \\n            \\\"machine_type\\\": \\\"n1-standard-1\\\", \\n            \\\"metadata\\\": {}, \\n            \\\"name\\\": \\\"test\\\", \\n            \\\"network\\\": \\\"default\\\", \\n            \\\"private_ip\\\": \\\"10.128.0.2\\\", \\n            \\\"public_ip\\\": \\\"104.197.212.27\\\", \\n            \\\"status\\\": \\\"RUNNING\\\", \\n            \\\"tags\\\": [], \\n            \\\"zone\\\": \\\"us-central1-a\\\"\\n        }\\n    ], \\n    \\\"name\\\": \\\"test\\\", \\n    \\\"state\\\": \\\"present\\\", \\n    \\\"zone\\\": \\\"us-central1-a\\\"\\n}\\n```\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nNo config file found; using defaults\\n [WARNING]: Host file not found: /usr/local/etc/ansible/hosts\\n\\n [WARNING]: provided hosts list is empty, only localhost is available\\n\\nLoaded callback minimal of type stdout, v2.0\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: laurent\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1471048836.07-253572111479568 `\\\" && echo ansible-tmp-1471048836.07-253572111479568=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1471048836.07-253572111479568 `\\\" ) && sleep 0'\\n<127.0.0.1> PUT /var/folders/z0/x6glbwbn41gbb45rv3sq5tzr0000gn/T/tmpPhRg4A TO /Users/laurent/.ansible/tmp/ansible-tmp-1471048836.07-253572111479568/gce\\n<127.0.0.1> EXEC /bin/sh -c 'LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /Users/laurent/.ansible/tmp/ansible-tmp-1471048836.07-253572111479568/gce; rm -rf \\\"/Users/laurent/.ansible/tmp/ansible-tmp-1471048836.07-253572111479568/\\\" > /dev/null 2>&1 && sleep 0'\\nAn exception occurred during task execution. The full traceback is:\\nTraceback (most recent call last):\\n  File \\\"/var/folders/z0/x6glbwbn41gbb45rv3sq5tzr0000gn/T/ansible_YOIiDx/ansible_module_gce.py\\\", line 640, in <module>\\n    main()\\n  File \\\"/var/folders/z0/x6glbwbn41gbb45rv3sq5tzr0000gn/T/ansible_YOIiDx/ansible_module_gce.py\\\", line 553, in main\\n    gce = gce_connect(module)\\n  File \\\"/var/folders/z0/x6glbwbn41gbb45rv3sq5tzr0000gn/T/ansible_YOIiDx/ansible_modlib.zip/ansible/module_utils/gce.py\\\", line 95, in gce_connect\\nIOError: [Errno 2] No such file or directory: '<client-secret>'\\n\\nlocalhost | FAILED! => {\\n    \\\"changed\\\": false, \\n    \\\"failed\\\": true, \\n    \\\"invocation\\\": {\\n        \\\"module_name\\\": \\\"gce\\\"\\n    }, \\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/var/folders/z0/x6glbwbn41gbb45rv3sq5tzr0000gn/T/ansible_YOIiDx/ansible_module_gce.py\\\\\\\", line 640, in <module>\\\\n    main()\\\\n  File \\\\\\\"/var/folders/z0/x6glbwbn41gbb45rv3sq5tzr0000gn/T/ansible_YOIiDx/ansible_module_gce.py\\\\\\\", line 553, in main\\\\n    gce = gce_connect(module)\\\\n  File \\\\\\\"/var/folders/z0/x6glbwbn41gbb45rv3sq5tzr0000gn/T/ansible_YOIiDx/ansible_modlib.zip/ansible/module_utils/gce.py\\\\\\\", line 95, in gce_connect\\\\nIOError: [Errno 2] No such file or directory: '<client-secret>'\\\\n\\\", \\n    \\\"module_stdout\\\": \\\"\\\", \\n    \\\"msg\\\": \\\"MODULE FAILURE\\\", \\n    \\\"parsed\\\": false\\n}\\n```\\n\", \n    \"component_name\": \"gce module_util\", \n    \"component_raw\": \"gce module_util\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17075\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"cloud\", \n      \"feature\", \n      \"gce\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/google/gce.py\", \n    \"summary\": \"It is possible to connect to GCE using a clientId (feature named Installed Application authentication in apache-libcloud), which is useful when you want users to interact with GCE without creating service accounts and sharing credentials amongst your org.\\n\\nIn that mode, the GCE credential is not a json file, but the client secret string for the given clientId. Unfortunately a check in lib/module_utils/gce.py prevents the use of this authentication mode.\", \n    \"title\": \"gce module errors on file not found when using OAuth client authentication\"\n  }, \n  \"17078\": {\n    \"ansible_version\": \"All ansible 2 versions including latest devel\\nansible 2.2.0 (devel 375f7c515a) last updated 2016/08/09 143221 (GMT +200)\\nlib/ansible/modules/core (detached HEAD 5d7b46e0dd) last updated 2016/08/13 171147 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD eaa71f51d6) last updated 2016/08/13 171147 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nUse of custom modules in $role/library/ \\n##### ANSIBLE VERSION\\n\\nAll ansible 2 versions including latest devel\\n\\n```\\nansible 2.2.0 (devel 375f7c515a) last updated 2016/08/09 14:32:21 (GMT +200)\\n  lib/ansible/modules/core: (detached HEAD 5d7b46e0dd) last updated 2016/08/13 17:11:47 (GMT +200)\\n  lib/ansible/modules/extras: (detached HEAD eaa71f51d6) last updated 2016/08/13 17:11:47 (GMT +200)\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nNone\\n##### OS / ENVIRONMENT\\n\\nRuning Ansible on Ubuntu 16.04 controller\\n##### SUMMARY\\n\\nAnsible will not pick up a customised module in role/library, given a specific set playbook setup. It will run the default module packaged with ansible instead.\\n##### STEPS TO REPRODUCE\\n\\nSee following links describing a minimal case that shows the problem:\\n- http://sprunge.us/dWXQ\\n- https://gist.github.com/srvg/3a61651a98169e5bbb06a2dc726cbda5\\n\\nBasically a small role that has a custom uri.py module and calls it.\\n\\nI tracked the issue down, from a complex customer setup down to this minimal example.\\nWhen the play executing this role is prepended by a play, with some specific syntax, the error shows.\\n\\nIssue still shows if the first play also targets `hosts: localhost` instead of being skipped.\\nIssue strangely disappears when the `name:` tag is deleted, leaving onky the plan `debug:` task\\n##### EXPECTED RESULTS\\n\\n```\\nTASK [joeri : uri] *************************************************************\\nok: [localhost] => {\\\"changed\\\": false, \\\"failed\\\": false, \\\"msg\\\": \\\"custom module run\\\"}\\n```\\n##### ACTUAL RESULTS\\n\\n```\\nTASK [joeri : uri] *************************************************************\\nok: [localhost] => {\\\"accept_ranges\\\": \\\"none\\\", \\\"cache_control\\\": \\\"private, max-age=0\\\", \\\"changed\\\": false, \\\"connection\\\": \\\"close\\\", \\\"content_type\\\": \\\"text/html; charset=ISO-8859-1\\\", \\\"date\\\": \\\"Sat, 13 Aug 2016 15:12:05 GMT\\\", \\\"expires\\\": \\\"-1\\\", \\\"msg\\\": \\\"OK (unknown bytes)\\\", \\\"p3p\\\": \\\"CP=\\\\\\\"This is not a P3P policy! See https://www.google.com/support/accounts/answer/151657?hl=en for more info.\\\\\\\"\\\", \\\"redirected\\\": true, \\\"server\\\": \\\"gws\\\", \\\"set_cookie\\\": \\\"NID=84=eC_MViZ-Nx8Nf8XoDnAQAlDVW8uYu0cedyJwR4yCucx2-MF8f6iw_H2L5ZU7rGBUa_VFKPMT7WjX2yKWjKmbQBa9rf6SeBJgBV8GIF--Y3-q_jfoeUGJb3djGlNhELuS; expires=Sun, 12-Feb-2017 15:12:05 GMT; path=/; domain=.google.be; HttpOnly\\\", \\\"status\\\": 200, \\\"url\\\": \\\"http://www.google.be/?gfe_rd=cr&ei=xTivV8-wBZPDaL3kkegO\\\", \\\"vary\\\": \\\"Accept-Encoding\\\", \\\"x_frame_options\\\": \\\"SAMEORIGIN\\\", \\\"x_xss_protection\\\": \\\"1; mode=block\\\"}\\n```\\n\", \n    \"component_name\": \"use of custom  s in $role/library/\", \n    \"component_raw\": \"Use of custom modules in $role/library/\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17078\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Ansible will not pick up a customised module in role/library, given a specific set playbook setup. It will run the default module packaged with ansible instead.\", \n    \"title\": \"customised module in role/library not being picked up in specific example\"\n  }, \n  \"17083\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nregex_replace filter in raw module\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\nDefault config.\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nansible is running on Ubuntu Trusty and the systems being managed are linux and Windows.\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nI am trying to uninstall an application which is on Windows server. The windows box has PS 4 installed. I am querying the list of installed apps and filtering on name to get the GUID, and storing that GUID in a register. When I print the register, I get a carriage return and line feed along with it. Then I pass that GUID to msiexec command being executed through raw module. I piped the stdout to regex_replace to remove the \\\\r\\\\n but the replacement did not work.\\nI tested the same in debug module and the replacement worked. Am I doing something wrong or the evaluation of jinja filters in raw module has some issues?\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n1) Getting the GUID:\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n  - name: Get the GUID of OA UI application\\n    raw: Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -match \\\"SomeApp\\\" } | select -ExpandProperty IdentifyingNumber\\n    register: UIGUID\\n```\\n\\n2) Passing the GUID to uninstall command. The regex_replace did not work here:\\n\\n```\\n  - name: Uninstall existing OA version\\n    raw: start-process msiexec.exe -arg \\\"/X {{ UIGUID.stdout | regex_replace('(\\\\\\\\r\\\\\\\\n)','') }} /qn /lvx! d:\\\\logfiles\\\\MSIuninstall.log\\\" -wait -PassThru\\n```\\n\\n3) Tested the regex replace by putting in another variable and that works\\n\\n```\\n  - name: print UIGUID\\n    debug:\\n      msg: \\\"{{ UIGUID.stdout | regex_replace('(\\\\\\\\r\\\\\\\\n)','') }}\\\"\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nOutput of 2) should be:\\n\\n```\\nEXEC start-process msiexec.exe -arg \\\"/X {CA483236-0405-11E3-B979-3AC26088709B} /qn /lvx! d:\\\\logfiles\\\\MSIuninstall.log\\\" -wait -PassThru\\n```\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\nOutput of 1) is\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nok: [servername] => {\\\"changed\\\": false, \\\"invocation\\\": {\\\"module_args\\\": {\\\"_raw_params\\\": \\\"Get-WmiObject -Class Win32_Product | Where-Object { $_.Na\\nme -match \\\\\\\"SomeApp\\\\\\\" } | select -ExpandProperty IdentifyingNumber\\\"}, \\\"module_name\\\": \\\"raw\\\"}, \\\"rc\\\": 0, \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"{CA483236-0405-\\n11E3-B979-3AC26088709B}\\\\r\\\\n\\\", \\\"stdout_lines\\\": [\\\"{CA483236-0405-11E3-B979-3AC26088709B}\\\"]}\\n```\\n\\nOutput of 2) is.\\n\\n```\\n<servername> EXEC start-process msiexec.exe -arg \\\"/X {CA483236-0405-11E3-B979-3AC26088709B}\\n/qn /lvx! d:\\\\logfiles\\\\MSIuninstall.log\\\" -wait -PassThru\\n```\\n\\nOutput of 3) is\\n\\n```\\nok: [servername] => {\\n    \\\"msg\\\": \\\"{CA483236-0405-11E3-B979-3AC26088709B}\\\"\\n}\\n```\\n\", \n    \"component_name\": \"regex_replace filter in raw\", \n    \"component_raw\": \"regex_replace filter in raw module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17083\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/commands/raw.py\", \n    \"summary\": \"I am trying to uninstall an application which is on Windows server. The windows box has PS 4 installed. I am querying the list of installed apps and filtering on name to get the GUID, and storing that GUID in a register. When I print the register, I get a carriage return and line feed along with it. Then I pass that GUID to msiexec command being executed through raw module. I piped the stdout to regex_replace to remove the \\\\r\\\\n but the replacement did not work.\\nI tested the same in debug module and the replacement worked. Am I doing something wrong or the evaluation of jinja filters in raw module has some issues?\", \n    \"title\": \"/r/n did not get removed when variable passed through regex_replace\"\n  }, \n  \"17086\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\nFeature Idea\\n##### COMPONENT NAME\\n\\n?\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n  config file =\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nNone\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nI am working on a product that can use Ansible (not only it though) to perform some tasks on localhost. In this case it is always ran against localhost. Thus there is never ever inventory or hosts file.\\n\\nAs the result I always see in output:\\n\\n```\\n [WARNING]: Host file not found: /etc/ansible/hosts\\n [WARNING]: provided hosts list is empty, only localhost is available\\n```\\n##### STEPS TO REPRODUCE\\n\\nCreate playbook `example.yml`:\\n\\n```\\n- hosts: localhost\\n  connection: local\\n  tasks:\\n    - name: Ensure package is latest is latest\\n      yum: name=nano state=latest\\n```\\n\\nExecute it with:\\n\\n```\\n$ ansible-playbook example.yml\\n```\\n##### EXPECTED RESULTS\\n\\nDon't see warning, because there is no hosts files and no inventory by intention (should be rather obvious from `hosts: localhost`)\\n##### ACTUAL RESULTS\\n\\nSee two warning as in above.\\n\", \n    \"component_name\": \"?\", \n    \"component_raw\": \"?\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17086\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I am working on a product that can use Ansible (not only it though) to perform some tasks on localhost. In this case it is always ran against localhost. Thus there is never ever inventory or hosts file.\\n\\nAs the result I always see in output:\\n\\n```\\n [WARNING]: Host file not found: /etc/ansible/hosts\\n [WARNING]: provided hosts list is empty, only localhost is available\\n```\", \n    \"title\": \"[REQUEST] Configuration option to suppress warnings of empty inventory\"\n  }, \n  \"17088\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nansible --limit hosts\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n```\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nIf there are spaces after name of host in ansible limit file (retry file?) ansible does not include them.\\n##### STEPS TO REPRODUCE\\n\\nname of the host is same as inventory file but with a blank space before end of line.\\n\\n```\\nansible-playbook test.yml -i inventory --limit @test.txt\\n```\\n##### EXPECTED RESULTS\\n\\nplaybook should be executed for hosts that are in both inventory and test.txt files.\\n##### ACTUAL RESULTS\\n\\n```\\nERROR! Specified --limit does not match any hosts\\n```\\n\", \n    \"component_name\": \"ansible --limit hosts\", \n    \"component_raw\": \"ansible --limit hosts\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17088\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"If there are spaces after name of host in ansible limit file (retry file?) ansible does not include them.\", \n    \"title\": \"Blank spaces in limit file does not work\"\n  }, \n  \"17090\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n- Feature Pull Request\\r\\n##### COMPONENT NAME\\r\\n\\r\\nmodule_utils\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n\\r\\n```\\r\\n2.3\\r\\n```\\r\\n##### SUMMARY\\r\\n\\r\\nimplemented a simple way to deprecate a module param by adding `deprecated_version=2.4` \\r\\n\\r\\nTest module\\r\\n~~~python\\r\\n#!/usr/bin/python\\r\\n\\r\\nfrom ansible.module_utils.basic import *\\r\\ndef main():\\r\\n    module = AnsibleModule(dict(\\r\\n        foo=dict(deprecated_version=2.4),\\r\\n        )\\r\\n    )\\r\\n    module.exit_json(msg=\\\"ok\\\")\\r\\n\\r\\nif __name__ == '__main__':\\r\\n    main()\\r\\n~~~\\r\\n\\r\\noutput:\\r\\n~~~\\r\\n $ ansible-playbook test.yml\\r\\n [WARNING]: Host file not found: /etc/ansible/hosts\\r\\n\\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n\\r\\n\\r\\nPLAY [localhost] ******************************************************************************************************************************************************************************************************************************\\r\\n\\r\\nTASK [foobar] *********************************************************************************************************************************************************************************************************************************\\r\\nok: [localhost]\\r\\n[DEPRECATION WARNING]: Param 'foo' is deprecated. See the module docs for more information.\\r\\nThis feature will be removed in version 2.4. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.\\r\\n\\r\\nPLAY RECAP ************************************************************************************************************************************************************************************************************************************\\r\\nlocalhost                  : ok=3    changed=0    unreachable=0    failed=0   \\r\\n~~~\", \n    \"component_name\": \"module_utils\", \n    \"component_raw\": \"module_utils\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17090\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"c:module_utils/basic\", \n      \"c:plugins/callback\", \n      \"feature\", \n      \"in progress\", \n      \"module_util\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"implemented a simple way to deprecate a module param by adding `deprecated_version=2.4` \\n\\n\\n\\nTest module\\n\\n~~~python\\n\\n#!/usr/bin/python\\n\\n\\n\\nfrom ansible.module_utils.basic import *\\n\\ndef main():\\n\\n    module = AnsibleModule(dict(\\n\\n        foo=dict(deprecated_version=2.4),\\n\\n        )\\n\\n    )\\n\\n    module.exit_json(msg=\\\"ok\\\")\\n\\n\\n\\nif __name__ == '__main__':\\n\\n    main()\\n\\n~~~\\n\\n\\n\\noutput:\\n\\n~~~\\n\\n $ ansible-playbook test.yml\\n\\n [WARNING]: Host file not found: /etc/ansible/hosts\\n\\n\\n\\n [WARNING]: provided hosts list is empty, only localhost is available\\n\\n\\n\\n\\n\\nPLAY [localhost] ******************************************************************************************************************************************************************************************************************************\\n\\n\\n\\nTASK [foobar] *********************************************************************************************************************************************************************************************************************************\\n\\nok: [localhost]\\n\\n[DEPRECATION WARNING]: Param 'foo' is deprecated. See the module docs for more information.\\n\\nThis feature will be removed in version 2.4. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.\\n\\n\\n\\nPLAY RECAP ************************************************************************************************************************************************************************************************************************************\\n\\nlocalhost                  : ok=3    changed=0    unreachable=0    failed=0   \\n\\n~~~\", \n    \"title\": \"implement module params deprecation warnings\"\n  }, \n  \"17095\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\ntemplate and to_nice_yaml filter\\n##### ANSIBLE VERSION\\n\\nansible 2.1.1.0\\n##### CONFIGURATION\\n\\nANSIBLE_JINJA2_EXTENSIONS=jinja2.ext.do,jinja2.ext.i18n,jinja2.ext.loopcontrols,jinja2.ext.with_\\nANSIBLE_PRIVATE_ROLE_VARS=true\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nWhile attempting to use 'template' to generate a YAML file, I noticed that 'to_nice_yaml' produces trailing \\\"...\\\" (3 dots) after outputting some variables, but not other.\\nThis happens with role variables that are used directly inside the template, but not with objects that are obtained through loop variables.\\n##### STEPS TO REPRODUCE\\n\\ntemplates/_debug.yml.j2\\n\\n```\\n\\n---\\n{% set ii=(item[1].j2_item) %}\\n{% set aa=(item[1].j2_args) %}\\nREPRO__TO_NICE_YAML:\\n    fromitem:\\n{{ aa.rolevars.id |to_nice_yaml |indent(8,true) }}\\n    fromrole:\\n        test1:\\n{{ myrole__id      |to_nice_yaml |indent(10, true) }}\\n        test2:\\n{{ myrole__id      |to_nice_yaml(false,false) |indent(10, true) }}\\n        test3:\\n{{ myrole__id      |to_nice_yaml(explicit_start=False, explicit_end=False) |indent(10, true) }}\\n\\n```\\n\\noutput file\\n\\n```\\n```\\n\\nloop_config (outer)\\n\\n```\\n  vars:\\n    j2_args:\\n      role_vars:\\n        id:      \\\"{{ myrole__id }}\\\"\\n  loop_control:\\n    loop_var: j2_item\\n  with_flattened:\\n    - \\\"{{ files_1 }}\\\"\\n    - \\\"{{ files_2 }}\\\"\\n```\\n\\nloop_config (inner)\\n\\n```\\n- template:\\n    src:  \\\"{{ item[0].path }}\\\"\\n    dest: \\\"{{ j2_item.dst }}\\\"\\n  with_nested:\\n    - \\\"{{ _X_j2_find_files.files }}\\\"\\n    - [ {\\n            j2_item: \\\"{{ j2_item }}\\\",\\n            j2_args: \\\"{{ j2_args }}\\\"\\n        }\\n      ]\\n```\\n##### EXPECTED RESULTS\\n\\ndesired output file\\n\\n```\\n\\n---\\nREPRO__TO_NICE_YAML:\\n    fromitem:\\n        0base\\n    fromrole:\\n        test1:\\n          0base\\n        test2:\\n          0base\\n        test3:\\n          0base\\n```\\n##### ACTUAL RESULTS\\n\\n```\\n\\n---\\nREPRO__TO_NICE_YAML:\\n    fromitem:\\n        0base\\n        ...\\n    fromrole:\\n        test1:\\n          0base\\n          ...\\n        test2:\\n          0base\\n          ...\\n        test3:\\n          0base\\n          ...\\n```\\n\", \n    \"component_name\": \"template and to_nice_yaml filter\", \n    \"component_raw\": \"template and to_nice_yaml filter\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17095\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"While attempting to use 'template' to generate a YAML file, I noticed that 'to_nice_yaml' produces trailing \\\"...\\\" (3 dots) after outputting some variables, but not other.\\nThis happens with role variables that are used directly inside the template, but not with objects that are obtained through loop variables.\", \n    \"title\": \"to_nice_yaml producing \\\"...\\\" (3 dots) on role vars but not template vars\"\n  }, \n  \"17097\": {\n    \"ansible_version\": \"ansible 2.1.1.0 (czen-2.1.1.0-1 7d26459587) last updated 2016/08/11 085020 (GMT -400)\\nlib/ansible/modules/core (detached HEAD 1d59edf228) last updated 2016/08/15 145620 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD 45e44f2f10) last updated 2016/08/10 174933 (GMT -400)\\nconfig file = /home/jsmift/ansible/dom/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nsynchronize action plugin\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0 (czen-2.1.1.0-1 7d26459587) last updated 2016/08/11 08:50:20 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD 1d59edf228) last updated 2016/08/15 14:56:20 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD 45e44f2f10) last updated 2016/08/10 17:49:33 (GMT -400)\\n  config file = /home/jsmift/ansible/dom/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\ntransport = ssh\\nprivate_key_file = /home/ansible/.ssh/id_rsa\\nremote_user = ansible\\nlog_path = ../logs/ansible.log\\nansible_managed = ansible managed via {host}\\nlegacy_playbook_variables = no\\nhost_key_checking = False\\nsystem_warnings = False\\nvault_password_file = /home/ansible/.vault-passfile\\nforks=20\\nretry_files_enabled = False\\n##### OS / ENVIRONMENT\\n\\nAmazon Linux AMI release 2015.09 and 2016.03\\n##### SUMMARY\\n\\nA synchronize task to copy files from one directory to another, on a single remote host, fails when ansible_ssh_host does not match inventory_hostname.\\n##### STEPS TO REPRODUCE\\n\\nThis task:\\n\\n```\\n- name: synchronize sudoers WIP dir to /etc/sudoers.d\\n synchronize:\\n   dest: /etc/sudoers.d\\n   src: /tmp/sudoers-wip/\\n   delete: True \\n   checksum: True\\n   times: False\\n  delegate_to: \\\"{{ inventory_hostname }}\\\"\\n```\\n\\nIf ec2.ini says\\n\\n```\\nvpc_destination_variable = private_ip_address\\nhostname_variable = tag_Name\\n```\\n\\nthen inventory_hostname is the Name tag for the host, ansible_ssh_host is the private IP address, and the task tries to rsync via SSH to the private IP address of the host, which fails. If instead ec2.ini says\\n\\n```\\nvpc_destination_variable = Name\\n```\\n\\nthen inventory_hostname and ansible_ssh_host are both the Name tag for the host, and the task correctly rsyncs locally, not via SSH.\\n##### EXPECTED RESULTS\\n\\nThe rsync should always be local when synching between two directories on a single host. It shouldn't use SSH at all.\\n##### ACTUAL RESULTS\\n\\nThe task hangs, apparently because it's trying to use SSH and failing.\\n\", \n    \"component_name\": \"synchronize action plugin\", \n    \"component_raw\": \"synchronize action plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17097\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/synchronize.py\", \n    \"summary\": \"A synchronize task to copy files from one directory to another, on a single remote host, fails when ansible_ssh_host does not match inventory_hostname.\", \n    \"title\": \"Local synchronize on remote host fails when ansible_ssh_host != inventory_hostname\"\n  }, \n  \"17098\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nloop-until\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nNo changes to the default configuration.\\n##### OS / ENVIRONMENT\\n\\nRunning Ansible on: Ubuntu 16.04.1 LTS\\nManaging: Centos 7.2.1511 (Core)\\n##### SUMMARY\\n\\nTrying to use loop-until with an include-statement does not loop at all.\\n##### STEPS TO REPRODUCE\\n\\n```\\nmain.yml:\\n\\n---\\n- hosts: ansibletest\\n  remote_user: root\\n  tasks:\\n  - set_fact:\\n      counter: 1\\n  - include: add1.yml\\n    until: counter == 3\\n    retries: 5\\n  - debug: msg=\\\"The counter is [{{ counter }}]\\\"\\n\\nadd1.yml:\\n\\n---\\n- set_fact:\\n    counter: \\\"{{ counter | int + 1 }}\\\"\\n```\\n##### EXPECTED RESULTS\\n\\nPLAY [ansibletest] *************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [ansibletest]\\n\\nTASK [set_fact] ****************************************************************\\nok: [ansibletest]\\n\\nTASK [set_fact] ****************************************************************\\nok: [ansibletest]\\n\\nTASK [set_fact] ****************************************************************\\nok: [ansibletest]\\n\\nTASK [debug] *******************************************************************\\nok: [ansibletest] => {\\n    \\\"msg\\\": \\\"The counter is [3]\\\"\\n}\\n\\nPLAY RECAP *********************************************************************\\nansibletest                : ok=4    changed=0    unreachable=0    failed=0   \\n##### ACTUAL RESULTS\\n\\n```\\nPLAY [ansibletest] *************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [ansibletest]\\n\\nTASK [set_fact] ****************************************************************\\nok: [ansibletest]\\n\\nTASK [set_fact] ****************************************************************\\nok: [ansibletest]\\n\\nTASK [debug] *******************************************************************\\nok: [ansibletest] => {\\n    \\\"msg\\\": \\\"The counter is [2]\\\"\\n}\\n\\nPLAY RECAP *********************************************************************\\nansibletest                : ok=4    changed=0    unreachable=0    failed=0   \\n```\\n\", \n    \"component_name\": \"loop-until\", \n    \"component_raw\": \"loop-until\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17098\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Trying to use loop-until with an include-statement does not loop at all.\", \n    \"title\": \"Loop-until does not loop over includes\"\n  }, \n  \"17108\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nmodule_utils/url.py\\nopen_url()\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n```\\n##### CONFIGURATION\\n\\nOnly changes in ansible.cfg were to:\\nforks = 11\\nhost_key_checking = False\\nOther than that, all is completely default.\\n##### OS / ENVIRONMENT\\n\\nCentOS Linux release 7.2.1511 (Core)\\nAnsible installed using epel repo.\\n##### SUMMARY\\n\\nI am trying to develop a custom module. Part of the module uses the open_url() function from ansible. I was initially using requests module, but I wanted to try to make my ansible module dependent on only ansible itself. Anyway, I have ran into a problem with error handling using open_url(). It seems to go back to the urllib2 code. Basically, when I get back a HTTP response code of 422, it is giving an exception and dying. I have code in my module to catch the response codes and try to fail gracefully, but it does not even seem to reach that point, at least from what the trace shows. When I was using the requests module, this worked fine, the module itself just passed the response back to my code to handle what to do. \\n\\nI am not sure if there is something I can pass it that would change this or if this is truly a bug. I have tried looking at dev versions of this, but there seems to be a lot of changes, though nothing that mentions this. \\n\\nJust to note, I am getting no errors and it is passing things back fine when the HTTP response is 201(the expected return). \\n##### STEPS TO REPRODUCE\\n\\nI am using this is a custom ansible module I am building. Here are the lines that call that function and then try to catch the HTTP responses.\\n\\n```\\n    # runs the API call\\n    result = open_url(url, method=\\\"POST\\\", headers=headers, url_username=api_user, url_password=api_key, data=json.dumps(virtual_machine))\\n\\n    result_json = json.loads(result.read())\\n\\n    # catches the results\\n    if result.code == 201:\\n        return False, True, result_json\\n    if result.code == 422:\\n        return True, False, result_json\\n\\n```\\n##### EXPECTED RESULTS\\n\\nI expect it to fail gracefully with ansible, dumping the failure meta data, like:\\n\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"meta\\\": {\\\"errors\\\": {\\\"base\\\": [\\\"\\\"], \\\"initial_root_password\\\": [\\\"should include letters and digits\\\"], \\\"primary_network_group_id\\\": [\\\"could not be found.\\\"]}}, \\\"msg\\\": \\\"Error creating VM\\\"}\\n##### ACTUAL RESULTS\\n\\nInstead, I am getting it dying, with a trace. It does show that there was a 422, but it does not fail gracefully at all and does not return any of the meta data from the failure.\\n\\n```\\nAn exception occurred during task execution. The full traceback is:\\nTraceback (most recent call last):\\n  File \\\"/tmp/ansible_IoGaXE/ansible_module_onapp_vs.py\\\", line 255, in <module>\\n    main()\\n  File \\\"/tmp/ansible_IoGaXE/ansible_module_onapp_vs.py\\\", line 246, in main\\n    is_error, has_changed, result = choice_map.get(module.params['state'])(module.params)\\n  File \\\"/tmp/ansible_IoGaXE/ansible_module_onapp_vs.py\\\", line 105, in onapp_vs_create\\n    result = open_url(url, method=\\\"POST\\\", headers=headers, url_username=api_user, url_password=api_key, data=json.dumps(virtual_machine))\\n  File \\\"/tmp/ansible_IoGaXE/ansible_modlib.zip/ansible/module_utils/urls.py\\\", line 839, in open_url\\n  File \\\"/usr/lib64/python2.7/urllib2.py\\\", line 154, in urlopen\\n    return opener.open(url, data, timeout)\\n  File \\\"/usr/lib64/python2.7/urllib2.py\\\", line 437, in open\\n    response = meth(req, response)\\n  File \\\"/usr/lib64/python2.7/urllib2.py\\\", line 550, in http_response\\n    'http', request, response, code, msg, hdrs)\\n  File \\\"/usr/lib64/python2.7/urllib2.py\\\", line 469, in error\\n    result = self._call_chain(*args)\\n  File \\\"/usr/lib64/python2.7/urllib2.py\\\", line 409, in _call_chain\\n    result = func(*args)\\n  File \\\"/usr/lib64/python2.7/urllib2.py\\\", line 926, in http_error_401\\n    url, req, headers)\\n  File \\\"/usr/lib64/python2.7/urllib2.py\\\", line 901, in http_error_auth_reqed\\n    response = self.retry_http_basic_auth(host, req, realm)\\n  File \\\"/usr/lib64/python2.7/urllib2.py\\\", line 914, in retry_http_basic_auth\\n    return self.parent.open(req, timeout=req.timeout)\\n  File \\\"/usr/lib64/python2.7/urllib2.py\\\", line 437, in open\\n    response = meth(req, response)\\n  File \\\"/usr/lib64/python2.7/urllib2.py\\\", line 550, in http_response\\n    'http', request, response, code, msg, hdrs)\\n  File \\\"/usr/lib64/python2.7/urllib2.py\\\", line 475, in error\\n    return self._call_chain(*args)\\n  File \\\"/usr/lib64/python2.7/urllib2.py\\\", line 409, in _call_chain\\n    result = func(*args)\\n  File \\\"/usr/lib64/python2.7/urllib2.py\\\", line 558, in http_error_default\\n    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)\\nurllib2.HTTPError: HTTP Error 422: Unprocessable Entity\\n\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"invocation\\\": {\\\"module_name\\\": \\\"onapp_vs\\\"}, \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_IoGaXE/ansible_module_onapp_vs.py\\\\\\\", line 255, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_IoGaXE/ansible_module_onapp_vs.py\\\\\\\", line 246, in main\\\\n    is_error, has_changed, result = choice_map.get(module.params['state'])(module.params)\\\\n  File \\\\\\\"/tmp/ansible_IoGaXE/ansible_module_onapp_vs.py\\\\\\\", line 105, in onapp_vs_create\\\\n    result = open_url(url, method=\\\\\\\"POST\\\\\\\", headers=headers, url_username=api_user, url_password=api_key, data=json.dumps(virtual_machine))\\\\n  File \\\\\\\"/tmp/ansible_IoGaXE/ansible_modlib.zip/ansible/module_utils/urls.py\\\\\\\", line 839, in open_url\\\\n  File \\\\\\\"/usr/lib64/python2.7/urllib2.py\\\\\\\", line 154, in urlopen\\\\n    return opener.open(url, data, timeout)\\\\n  File \\\\\\\"/usr/lib64/python2.7/urllib2.py\\\\\\\", line 437, in open\\\\n    response = meth(req, response)\\\\n  File \\\\\\\"/usr/lib64/python2.7/urllib2.py\\\\\\\", line 550, in http_response\\\\n    'http', request, response, code, msg, hdrs)\\\\n  File \\\\\\\"/usr/lib64/python2.7/urllib2.py\\\\\\\", line 469, in error\\\\n    result = self._call_chain(*args)\\\\n  File \\\\\\\"/usr/lib64/python2.7/urllib2.py\\\\\\\", line 409, in _call_chain\\\\n    result = func(*args)\\\\n  File \\\\\\\"/usr/lib64/python2.7/urllib2.py\\\\\\\", line 926, in http_error_401\\\\n    url, req, headers)\\\\n  File \\\\\\\"/usr/lib64/python2.7/urllib2.py\\\\\\\", line 901, in http_error_auth_reqed\\\\n    response = self.retry_http_basic_auth(host, req, realm)\\\\n  File \\\\\\\"/usr/lib64/python2.7/urllib2.py\\\\\\\", line 914, in retry_http_basic_auth\\\\n    return self.parent.open(req, timeout=req.timeout)\\\\n  File \\\\\\\"/usr/lib64/python2.7/urllib2.py\\\\\\\", line 437, in open\\\\n    response = meth(req, response)\\\\n  File \\\\\\\"/usr/lib64/python2.7/urllib2.py\\\\\\\", line 550, in http_response\\\\n    'http', request, response, code, msg, hdrs)\\\\n  File \\\\\\\"/usr/lib64/python2.7/urllib2.py\\\\\\\", line 475, in error\\\\n    return self._call_chain(*args)\\\\n  File \\\\\\\"/usr/lib64/python2.7/urllib2.py\\\\\\\", line 409, in _call_chain\\\\n    result = func(*args)\\\\n  File \\\\\\\"/usr/lib64/python2.7/urllib2.py\\\\\\\", line 558, in http_error_default\\\\n    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)\\\\nurllib2.HTTPError: HTTP Error 422: Unprocessable Entity\\\\n\\\", \\\"module_stdout\\\": \\\"\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\", \\\"parsed\\\": false}\\n```\\n\", \n    \"component_name\": \"module_utils/url.py\", \n    \"component_raw\": \"module_utils/url.py\\nopen_url()\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17108\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I am trying to develop a custom module. Part of the module uses the open_url() function from ansible. I was initially using requests module, but I wanted to try to make my ansible module dependent on only ansible itself. Anyway, I have ran into a problem with error handling using open_url(). It seems to go back to the urllib2 code. Basically, when I get back a HTTP response code of 422, it is giving an exception and dying. I have code in my module to catch the response codes and try to fail gracefully, but it does not even seem to reach that point, at least from what the trace shows. When I was using the requests module, this worked fine, the module itself just passed the response back to my code to handle what to do. \\n\\nI am not sure if there is something I can pass it that would change this or if this is truly a bug. I have tried looking at dev versions of this, but there seems to be a lot of changes, though nothing that mentions this. \\n\\nJust to note, I am getting no errors and it is passing things back fine when the HTTP response is 201(the expected return).\", \n    \"title\": \"Exception thrown with get_url() when returned HTTP response 422\"\n  }, \n  \"17113\": {\n    \"ansible_version\": \"ansible 2.2.0 (inventory-ec2-py-ansible-host 118d7957b4) last updated 2016/08/16 211754 (GMT -400)\\nlib/ansible/modules/core  not found - use git submodule update --init lib/ansible/modules/core\\nlib/ansible/modules/extras  not found - use git submodule update --init lib/ansible/modules/extras\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\ncontrib/inventory/ec2.py\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0 (inventory-ec2-py-ansible-host 118d7957b4) last updated 2016/08/16 21:17:54 (GMT -400)\\n  lib/ansible/modules/core:  not found - use git submodule update --init lib/ansible/modules/core\\n  lib/ansible/modules/extras:  not found - use git submodule update --init lib/ansible/modules/extras\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\ncontrib/inventory/ec2.py sets ansible_ssh_host, but http://docs.ansible.com/ansible/intro_inventory.html#hosts-and-groups says\\n\\n> Ansible 2.0 has deprecated the \\\"ssh\\\" from ansible_ssh_user, ansible_ssh_host, and ansible_ssh_port to become ansible_user, ansible_host, and ansible_port.\\n\\nSince the ansible_ssh_\\\\* variables aren't removed, just deprecated, this commit simply adds ansible_host to the variables set by ec2.py.\\n\\nMay address some (but probably not all) of #15286.\\n\", \n    \"component_name\": \"contrib/inventory/ec2.py\", \n    \"component_raw\": \"contrib/inventory/ec2.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17113\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"contrib/inventory/ec2.py sets ansible_ssh_host, but http://docs.ansible.com/ansible/intro_inventory.html#hosts-and-groups says\\n\\n> Ansible 2.0 has deprecated the \\\"ssh\\\" from ansible_ssh_user, ansible_ssh_host, and ansible_ssh_port to become ansible_user, ansible_host, and ansible_port.\\n\\nSince the ansible_ssh_\\\\* variables aren't removed, just deprecated, this commit simply adds ansible_host to the variables set by ec2.py.\\n\\nMay address some (but probably not all) of #15286.\", \n    \"title\": \"Update the ec2.py inventory script to set ansible_host as well as ansible_ssh_host\"\n  }, \n  \"17115\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel 30268f6bd0) last updated 2016/08/16 092605 (GMT -400)\\nlib/ansible/modules/core (detached HEAD 45c1ae0ac1) last updated 2016/08/16 092713 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD a6b34973a8) last updated 2016/08/16 092730 (GMT -400)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request #11175 \\n##### COMPONENT NAME\\n\\nconstants.py / locating config\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0 (devel 30268f6bd0) last updated 2016/08/16 09:26:05 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD 45c1ae0ac1) last updated 2016/08/16 09:27:13 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD a6b34973a8) last updated 2016/08/16 09:27:30 (GMT -400)\\n  config file =\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nFixes #11175 allowing to traverse from playbook file location towards the root in order to find ansible.cfg\\n\", \n    \"component_name\": \"constants.py / locating config\", \n    \"component_raw\": \"constants.py / locating config\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17115\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:constants\", \n      \"feature\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Fixes #11175 allowing to traverse from playbook file location towards the root in order to find ansible.cfg\", \n    \"title\": \"Issue 11175 relative ansible cfg lookup\"\n  }, \n  \"17136\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel bd31cc096a) last updated 2016/08/18 154634 (GMT +200)\\nlib/ansible/modules/core (detached HEAD ff2eae0729) last updated 2016/08/18 154638 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD 7ba5f340c0) last updated 2016/08/18 154638 (GMT +200)\\nconfig file = /home/rbauduin/gits/ansible-playbooks/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nwith_fileglob\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0 (devel bd31cc096a) last updated 2016/08/18 15:46:34 (GMT +200)\\n  lib/ansible/modules/core: (detached HEAD ff2eae0729) last updated 2016/08/18 15:46:38 (GMT +200)\\n  lib/ansible/modules/extras: (detached HEAD 7ba5f340c0) last updated 2016/08/18 15:46:38 (GMT +200)\\n  config file = /home/rbauduin/gits/ansible-playbooks/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\nansible.cfg:\\n\\n```\\n[default]\\nforks=20\\n[ssh_connection]\\nssh_args = -F ssh-config \\nscp_if_ssh = True\\npipelining = False\\n[privilege_escalation]\\nbecome=True\\n\\n```\\n##### OS / ENVIRONMENT\\n\\nUbuntu 14.04 to Centos 7.2\\n##### SUMMARY\\n\\nwith_fileglob does not seem to handle a `*` to match a directory in the glob.\\nI think this worked with a 1.X version of ansible.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\nThis debug task finds the file located at ./downloaded_files/client/root/.ssh/id_rsa.pub\\n\\n```\\n  tasks:\\n  - name: \\\"locate base dir\\\"\\n    debug: msg=\\\"file is {{item}}\\\"\\n    with_fileglob:\\n            - ../downloaded_files/client/root/.ssh/id_rsa.pub\\n```\\n\\nThis one doesn't:\\n\\n```\\n  tasks:\\n  - name: \\\"locate base dir\\\"\\n    debug: msg=\\\"file is {{item}}\\\"\\n    with_fileglob:\\n            - ../downloaded_files/*/root/.ssh/id_rsa.pub\\n```\\n\\nBut these do:\\n\\n```\\n  tasks:\\n  - name: \\\"locate base dir\\\"\\n    debug: msg=\\\"file is {{item}}\\\"\\n    with_fileglob:\\n            - ../downloaded_files/client/root/.ssh/*\\n```\\n\\n```\\n  tasks:\\n  - name: \\\"locate base dir\\\"\\n    debug: msg=\\\"file is {{item}}\\\"\\n    with_fileglob:\\n            - ../downloaded_files/client/root/.ssh/*.pub*\\n```\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nDebug output with the file path.\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\nNo file is found by the fileglob with a `*` matching directories in the path glob.\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nTASK [locate base dir] *********************************************************\\n\\nPLAY RECAP *********************************************************************\\n```\\n\", \n    \"component_name\": \"with_fileglob\", \n    \"component_raw\": \"with_fileglob\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17136\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"with_fileglob does not seem to handle a `*` to match a directory in the glob.\\nI think this worked with a 1.X version of ansible.\", \n    \"title\": \"with_fileglob does not handle a `*` to match a directory\"\n  }, \n  \"17143\": {\n    \"ansible_version\": \"git devel commit 677a34a191b7e5cde815ce36737fcada222f20c4\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nplaybook/play_context.py\\n##### ANSIBLE VERSION\\n\\ngit devel commit 677a34a191b7e5cde815ce36737fcada222f20c4\\n##### SUMMARY\\n\\nOn kerberized systems using ksu will simplify privilege escalation.\\n\\nThe requirements for ksu to work is that the calling user have\\na valid kerberos ticket, that the remote system supports GSSAPI\\nauthentication where the kerberos ticket is forwarded and that\\nthe target user have a .k5login file with the kerberos principal\\nof the user calling ksu listed.  With this in place, no password\\nwill be needed.\\n\", \n    \"component_name\": \"playbook/play_context.py\", \n    \"component_raw\": \"playbook/play_context.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17143\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:playbook/play\", \n      \"c:playbook/play_context\", \n      \"feature\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"On kerberized systems using ksu will simplify privilege escalation.\\n\\nThe requirements for ksu to work is that the calling user have\\na valid kerberos ticket, that the remote system supports GSSAPI\\nauthentication where the kerberos ticket is forwarded and that\\nthe target user have a .k5login file with the kerberos principal\\nof the user calling ksu listed.  With this in place, no password\\nwill be needed.\", \n    \"title\": \"become_method: Add support for ksu\"\n  }, \n  \"17151\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nfacts  'virtualization_type' and 'virtualization_role' \\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n```\\n##### CONFIGURATION\\n\\nDefault\\n##### OS / ENVIRONMENT\\n\\nAnsible running from Ubuntu 14.04 to Ubuntu 14.04/12.04\\n##### SUMMARY\\n\\nThe facts 'virtualization_type' and 'virtualization_role' are be set to 'kvm' and 'host' respectively if 'kvm' is found in /proc/modules. This check does not accurately reflect the state of the managed instance, as kvm_intel exists in /proc/modules without any kvm or qemu packages being installed, at least on Ubuntu instances. Also, Ubuntu kvm guests have kvm_intel in /proc/modules (though earlier checks in facts.py prevent this from being an issue).   \\n##### STEPS TO REPRODUCE\\n\\nInstall Ubuntu 14.04 on a physical machine.\\nCollect ansible facts against it and inspect virtualization_type and virtualization_role.\\n\\n```\\n# kvm guest\\n$ sudo virt-what\\nkvm\\n$ grep kvm /proc/modules \\nkvm_intel 167936 0 - Live 0x0000000000000000\\nkvm 532480 1 kvm_intel, Live 0x0000000000000000\\nirqbypass 16384 1 kvm, Live 0x0000000000000000\\n$ cat /etc/lsb-release \\nDISTRIB_ID=Ubuntu\\nDISTRIB_RELEASE=14.04\\nDISTRIB_CODENAME=trusty\\nDISTRIB_DESCRIPTION=\\\"Ubuntu 14.04.4 LTS\\\"\\n$ uname -r\\n4.4.0-28-generic\\n$ ansible vagrant-ubuntu-trusty-64 -u root -m setup | grep _virtualization\\n        \\\"ansible_virtualization_role\\\": \\\"guest\\\", \\n        \\\"ansible_virtualization_type\\\": \\\"kvm\\\", \\n# This is run against a physical host that does not have kvm/qemu installed\\n$ ansible box-not-running-kvm -m setup | grep _virtualization\\n        \\\"ansible_virtualization_role\\\": \\\"host\\\", \\n        \\\"ansible_virtualization_type\\\": \\\"kvm\\\", \\n```\\n##### EXPECTED RESULTS\\n\\nI expected the facts to be set to something like NA as though the hosts were capable of running virtualization, they were not set up to do so yet. \\n##### ACTUAL RESULTS\\n\\nFacts were set to values suggesting host was running virtualization software. \\n\\n```\\n$ ansible box-not-running-kvm -m setup | grep _virtualization\\n        \\\"ansible_virtualization_role\\\": \\\"host\\\", \\n        \\\"ansible_virtualization_type\\\": \\\"kvm\\\", \\n\\n```\\n\", \n    \"component_name\": \"facts  virtualization_type and virtualization_role\", \n    \"component_raw\": \"facts  'virtualization_type' and 'virtualization_role'\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17151\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The facts 'virtualization_type' and 'virtualization_role' are be set to 'kvm' and 'host' respectively if 'kvm' is found in /proc/modules. This check does not accurately reflect the state of the managed instance, as kvm_intel exists in /proc/modules without any kvm or qemu packages being installed, at least on Ubuntu instances. Also, Ubuntu kvm guests have kvm_intel in /proc/modules (though earlier checks in facts.py prevent this from being an issue).\", \n    \"title\": \"virtualization_type set to 'kvm' without kvm packges installed\"\n  }, \n  \"17159\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Feature Idea\\r\\n- Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n`with_dict`\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible --version\\r\\nansible 2.1.1.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n##### CONFIGURATION\\r\\n\\r\\nN/A\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nRunning Ansible from: Arch Linux\\r\\nTarget Host: Centos 7, Arch Linux\\r\\n##### SUMMARY\\r\\n\\r\\nWhen passing a dictionary via `with_dict` in a task and using certain portions of it to create values of another dictionary variable, nulls are not being preserved and incorrectly passed as empty string \\\"\\\"\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```\\r\\n- hosts: localhost\\r\\n  gather_facts: no\\r\\n  vars:\\r\\n        # defaults (for single nodes)\\r\\n        param1: \\\"defaultParam1\\\"\\r\\n        param2: ~\\r\\n        param3: \\\"\\\"\\r\\n        param4: []\\r\\n\\r\\n        # overrides (for multiple nodes)\\r\\n        nodes:\\r\\n          node1:\\r\\n            config_path: /tmp/node1.conf\\r\\n            config_overrides:\\r\\n              param1: \\\"node1Param1\\\"\\r\\n              param2: ~\\r\\n              param3: \\\"\\\"\\r\\n              param4: []\\r\\n          node2:\\r\\n            config_path: /tmp/node2.conf\\r\\n            config_overrides:\\r\\n\\r\\n        # dictionaries to be converted to json in config\\r\\n        single_node_config:\\r\\n          Param1: \\\"{{ param1 }}\\\"\\r\\n          Param2: \\\"{{ param2 }}\\\"\\r\\n          Param3: \\\"{{ param3 }}\\\"\\r\\n          Param4: \\\"{{ param4 }}\\\"\\r\\n\\r\\n        multi_node_config:\\r\\n          Param1: \\\"{{ item.value.config_overrides.param1 | default(param1) }}\\\"\\r\\n          Param2: \\\"{{ item.value.config_overrides.param2 | default(param2) }}\\\"\\r\\n          Param3: \\\"{{ item.value.config_overrides.param3 | default(param3) }}\\\"\\r\\n          Param4: \\\"{{ item.value.config_overrides.param4 | default(param4) }}\\\"\\r\\n\\r\\n        # toggle\\r\\n        enable_multi_nodes: false\\r\\n  tasks:\\r\\n        # task for single node\\r\\n        - name: create config\\r\\n          copy:\\r\\n            content: \\\"{{ single_node_config | to_nice_json }}\\\"\\r\\n            dest: /tmp/single.conf\\r\\n          when: enable_multi_nodes != true\\r\\n\\r\\n        # task multi nodes\\r\\n        - name: create configs\\r\\n          copy:\\r\\n            content: \\\"{{ multi_node_config | to_nice_json }}\\\"\\r\\n            dest: \\\"{{ item.value.config_path }}\\\"\\r\\n          with_dict: \\\"{{ nodes }}\\\"\\r\\n          when: enable_multi_nodes == true\\r\\n```\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n```\\r\\ncat /tmp/single.conf /tmp/node1.conf  /tmp/node2.conf\\r\\n{\\r\\n    \\\"Param1\\\": \\\"defaultParam1\\\",\\r\\n    \\\"Param2\\\": null,\\r\\n    \\\"Param3\\\": \\\"\\\",\\r\\n    \\\"Param4\\\": []\\r\\n}\\r\\n{\\r\\n    \\\"Param1\\\": \\\"node1Param1\\\",\\r\\n    \\\"Param2\\\": null,\\r\\n    \\\"Param3\\\": \\\"\\\",\\r\\n    \\\"Param4\\\": []\\r\\n}\\r\\n{\\r\\n    \\\"Param1\\\": \\\"defaultParam1\\\",\\r\\n    \\\"Param2\\\": null,\\r\\n    \\\"Param3\\\": \\\"\\\",\\r\\n    \\\"Param4\\\": []\\r\\n}\\r\\n```\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\ncat /tmp/single.conf /tmp/node1.conf  /tmp/node2.conf\\r\\n{\\r\\n    \\\"Param1\\\": \\\"defaultParam1\\\",\\r\\n    \\\"Param2\\\": null,\\r\\n    \\\"Param3\\\": \\\"\\\",\\r\\n    \\\"Param4\\\": []\\r\\n}\\r\\n{\\r\\n    \\\"Param1\\\": \\\"node1Param1\\\",\\r\\n    \\\"Param2\\\": \\\"\\\",\\r\\n    \\\"Param3\\\": \\\"\\\",\\r\\n    \\\"Param4\\\": []\\r\\n}\\r\\n{\\r\\n    \\\"Param1\\\": \\\"defaultParam1\\\",\\r\\n    \\\"Param2\\\": \\\"\\\",\\r\\n    \\\"Param3\\\": \\\"\\\",\\r\\n    \\\"Param4\\\": []\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"with_dict\", \n    \"component_raw\": \"`with_dict`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17159\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When passing a dictionary via `with_dict` in a task and using certain portions of it to create values of another dictionary variable, nulls are not being preserved and incorrectly passed as empty string \\\"\\\"\", \n    \"title\": \"with_dict incorrectly passing null values as empty strings\"\n  }, \n  \"17178\": {\n    \"ansible_version\": \"Commit ID 321d2e8ceea50bba386376c5f81e6ed8b60511cb\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nfilter: add crc32 filtering\\n##### ANSIBLE VERSION\\n\\n```\\nCommit ID 321d2e8ceea50bba386376c5f81e6ed8b60511cb\\n```\\n##### SUMMARY\\n\\nThis charge add a new useful filter crc32 which parse strings to generate crc32 output. This is useful with databases id or whenever you need to do a very lightweight comparison\\n\", \n    \"component_name\": \"filter add crc32 filtering\", \n    \"component_raw\": \"filter: add crc32 filtering\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17178\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/filter\", \n      \"c:utils/hashing\", \n      \"docs\", \n      \"feature\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This charge add a new useful filter crc32 which parse strings to generate crc32 output. This is useful with databases id or whenever you need to do a very lightweight comparison\", \n    \"title\": \"New filter: crc32\"\n  }, \n  \"17179\": {\n    \"ansible_version\": \"Using Debian GNU/Linux.\\nansible 2.1.1.0\\nconfig file = /path_to_my_home_dir/path_to_src_root/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"I verify that your issue/request is not already reported in GitHub.\\n##### ISSUE TYPE\\n- Bug Report (but kinda Feature Idea in your opinion...)\\n##### COMPONENT NAME\\n\\nansible-playbook (--check option)\\n##### ANSIBLE VERSION\\n\\nUsing Debian GNU/Linux.\\n\\n```\\nansible 2.1.1.0\\n  config file = /path_to_my_home_dir/path_to_src_root/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nN/A but ok...\\n\\n```\\n[defaults]\\ntransport = ssh\\n# -E - keep environment, but\\n# -H - change home directory\\n# this allows ForwardAgent to work (-E) while using root's .my.cnf file (-H)\\nsudo_flags = -E -H\\n\\n[ssh_connection]\\nssh_args = -o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=60s -o 'ControlPath=./.ssh-ansible-%r@%h:%p'\\npipelinening = True\\n```\\n\\nBTW. issue template should have code block canvas OOTB ;)\\n##### OS / ENVIRONMENT\\n\\nDebian\\n##### SUMMARY\\n\\nWhen running with '--check' Ansible do not remember state of previous steps, so creation of symlinks to files and so on run not the same like without that option.\\n##### STEPS TO REPRODUCE\\n\\nAbove... if you don't know what I mean I will prepare.\\n##### EXPECTED RESULTS\\n\\n1) maybe just memcaching and checking what is done?\\n\\n2) going ahead with reporting that some steps didn't pass with summary for whole inventory... (this is ugly and bad for me :-( )\\n##### ACTUAL RESULTS\\n\\n...as I described in SUMMARY section.\\n\", \n    \"component_name\": \"ansible-playbook (--check option)\", \n    \"component_raw\": \"ansible-playbook (--check option)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17179\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When running with '--check' Ansible do not remember state of previous steps, so creation of symlinks to files and so on run not the same like without that option.\", \n    \"title\": \"ansible-playbook with '--check' won't test properly (not doing the same as without)\"\n  }, \n  \"17187\": {\n    \"ansible_version\": \"2.1 + 2.2 devel\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nwin_reboot action plugin\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\n2.1 + 2.2 devel\\n```\\n##### SUMMARY\\n\\nThe win_reboot action internally makes direct connection/module runs that we expect to fail (we swallow the exceptions internally in these cases). However, in rare cases where the \\\"canary\\\" module exec fails, it appears that the module exec subsystem is directly logging/displaying the resultant traceback (even though it's being swallowed by the action). This can be alarming to users. We should either move the direct traceback logging out of the module subsystem entirely, or pass along an option to the module exec to suppress it.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\nUpgrade powershell on a slowish Windows box (AWS/Azure?) and reboot, for example.\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\nSilent reboot and task success\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\nTask success, but intermediate tracebacks are logged/displayed.\\n\", \n    \"component_name\": \"win_reboot action plugin\", \n    \"component_raw\": \"win_reboot action plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17187\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_reboot.py\", \n    \"summary\": \"The win_reboot action internally makes direct connection/module runs that we expect to fail (we swallow the exceptions internally in these cases). However, in rare cases where the \\\"canary\\\" module exec fails, it appears that the module exec subsystem is directly logging/displaying the resultant traceback (even though it's being swallowed by the action). This can be alarming to users. We should either move the direct traceback logging out of the module subsystem entirely, or pass along an option to the module exec to suppress it.\", \n    \"title\": \"win_reboot action logs connection tracebacks in some cases\"\n  }, \n  \"17194\": {\n    \"ansible_version\": \"ansible 2.1.0.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nansible-galaxy\\n##### ANSIBLE VERSION\\n\\n\\\"ansible 2.1.0.0\\\"\\n##### CONFIGURATION\\n\\ninternal Git repositories\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nansible-galaxy cannot authenticate to git repo.\\n##### STEPS TO REPRODUCE\\n\\nCompany runs internal Git repository with \\\"internal\\\" repo's, i.e. requiring authentication. \\nA requirements.yml file has content like this:\\n\\n---\\n- src: https://gitlab.company.intra/A_TEAM/some_role.git\\n\\nrun ansible-galaxy -r requirements.yml -p roles\\n##### EXPECTED RESULTS\\n\\nI expect a way to enter/use credentials like with prompts, and it should work in Tower.\\n\\nWith the effect that 'some_role' is downloaded and installed in roles. \\n##### ACTUAL RESULTS\\n\\nansible-galaxy did not download at all.\\n\\n```\\n[WARNING]: - some_role was NOT installed successfully: the file downloaded was not a tag.gz\\n```\\n\", \n    \"component_name\": \"ansible-galaxy\", \n    \"component_raw\": \"ansible-galaxy\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17194\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"ansible-galaxy cannot authenticate to git repo.\", \n    \"title\": \"ansible-galaxy might need to use credentials for Git.\"\n  }, \n  \"17205\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nJinja2 math filter: add `increment()` function\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n```\\n##### CONFIGURATION\\n\\nindependent on configuration\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nThere are situations in which, given a variable containing a list of ints:\\n\\n``` yaml\\nlist_of_ints: [ 1, 7, 8 ]\\n```\\n\\nSomeone may want to have the same list, but incremented by a fixed quantity, let's say 100:\\n\\n``` yaml\\nincremented_list: [ 101, 107, 108 ]\\n```\\n\\nImagine for example having to run different instances of the same service on different ports, and having to pass a subset of the port list as a parameter to the service. In this case you really need to keep incremented_list as a separate (but correlated) list.\\n\\nMy proposal is enabling this:\\n\\n``` yaml\\n# generates [ 101, 107, 108 ]\\nincremented_list: \\\"{{ list_of_ints | map('increment', 100) | list }}\\\"\\n```\\n##### STEPS TO REPRODUCE\\n\\nThe proposal is adding an `add()` function in https://github.com/ansible/ansible/blob/devel/lib/ansible/plugins/filter/mathstuff.py and write the relevant documentation in order to enable this use case.\\n\\nIf you see some utility in this functionality I can prepare a patch for you to review.\\n\", \n    \"component_name\": \"jinja2 math filter add increment() function\", \n    \"component_raw\": \"Jinja2 math filter: add `increment()` function\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17205\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"There are situations in which, given a variable containing a list of ints:\\n\\n``` yaml\\nlist_of_ints: [ 1, 7, 8 ]\\n```\\n\\nSomeone may want to have the same list, but incremented by a fixed quantity, let's say 100:\\n\\n``` yaml\\nincremented_list: [ 101, 107, 108 ]\\n```\\n\\nImagine for example having to run different instances of the same service on different ports, and having to pass a subset of the port list as a parameter to the service. In this case you really need to keep incremented_list as a separate (but correlated) list.\\n\\nMy proposal is enabling this:\\n\\n``` yaml\\n# generates [ 101, 107, 108 ]\\nincremented_list: \\\"{{ list_of_ints | map('increment', 100) | list }}\\\"\\n```\", \n    \"title\": \"Jinja2 math filter: implement `add()` function\"\n  }, \n  \"17215\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\ncore assembly\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nUsing ANSIBLE_KEEP_REMOTE_FILES=1:\\nfatal: [tw0]: UNREACHABLE! => {\\\"changed\\\": false, \\\"msg\\\": \\\"mkdir: cannot create directory '/home/x/.ansible': No space left on device\\\\n\\\", \\\"unreachable\\\": true}\\n##### OS / ENVIRONMENT\\n\\nUbuntu 16.04\\n##### SUMMARY\\n\\nWhen running ansible on a machine which has a 100% full disk the error is not indicative of the problem.\\n##### STEPS TO REPRODUCE\\n\\n```\\nx@x:~/work-fl/cm-ansible$ ansible -i inventories/ota tw0 -m setup\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: NameError: name 'temp_path' is not defined\\ntw0 | FAILED! => {\\n    \\\"changed\\\": false, \\n    \\\"failed\\\": true, \\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"<stdin>\\\\\\\", line 123, in <module>\\\\nNameError: name 'temp_path' is not defined\\\\n\\\", \\n    \\\"module_stdout\\\": \\\"\\\", \\n    \\\"msg\\\": \\\"MODULE FAILURE\\\", \\n    \\\"parsed\\\": false\\n}\\nx@x:~/work-fl/cm-ansible$ ANSIBLE_KEEP_REMOTE_FILES=1 ansible -i inventories/ota tw0 -m setup \\ntw0 | UNREACHABLE! => {\\n    \\\"changed\\\": false, \\n    \\\"msg\\\": \\\"mkdir: cannot create directory '/home/x/.ansible': No space left on device\\\\n\\\", \\n    \\\"unreachable\\\": true\\n}\\nx@x:~/work-fl/cm-ansible$ \\n\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\nI expect an error saying \\\"No space left on device\\\"\\n##### ACTUAL RESULTS\\n\\n```\\nNameError: name 'temp_path' is not defined\\n```\\n\", \n    \"component_name\": \"core assembly\", \n    \"component_raw\": \"core assembly\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17215\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When running ansible on a machine which has a 100% full disk the error is not indicative of the problem.\", \n    \"title\": \"Out of disk space condition gives error: 'temp_path' is not defined\"\n  }, \n  \"17236\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Idea\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nInventory\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n  config file =\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nWith a set of groups structured like the following:\\n\\n```\\nall\\n  |--monitoring_all\\n         |--monitoring_agents\\n```\\n\\nWhen a group_var is set in `monitoring_all` and the same var is set in `monitoring_agents` a deployer may expect that the leaf variable setting will win, but the deployer would be wrong. Ansible resolves the variable alphabetically and `all` comes after `agents`.\\n\\nAs a result, the variable setting will not be what is expected.\\n\\nCurrently we have to design group names in such a way that the leaf groups are always alphabetically resolved later than the parent groups.\\n\\nIt would be more intuitive if the variable merge would be resolved based on the group structure instead of just blindly resolving them alphabetically.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\n\\n```\\n\", \n    \"component_name\": \"inventory\", \n    \"component_raw\": \"Inventory\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17236\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"With a set of groups structured like the following:\\n\\n```\\nall\\n  |--monitoring_all\\n         |--monitoring_agents\\n```\\n\\nWhen a group_var is set in `monitoring_all` and the same var is set in `monitoring_agents` a deployer may expect that the leaf variable setting will win, but the deployer would be wrong. Ansible resolves the variable alphabetically and `all` comes after `agents`.\\n\\nAs a result, the variable setting will not be what is expected.\\n\\nCurrently we have to design group names in such a way that the leaf groups are always alphabetically resolved later than the parent groups.\\n\\nIt would be more intuitive if the variable merge would be resolved based on the group structure instead of just blindly resolving them alphabetically.\", \n    \"title\": \"Enhancement Request: Provide a spine-leaf group_var resolving mechanism\"\n  }, \n  \"17247\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\ncontrib/inventory/proxmox.py\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nPermit to query a proxmox server which doesn't have a proper certificate.\\n\\nThis is a patch which adds an argument to the inventory script for proxmox to permit to query the API even in the absence of valid certificate.\\nFixes #15888\\n\", \n    \"component_name\": \"contrib/inventory/proxmox.py\", \n    \"component_raw\": \"contrib/inventory/proxmox.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17247\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Permit to query a proxmox server which doesn't have a proper certificate.\\n\\nThis is a patch which adds an argument to the inventory script for proxmox to permit to query the API even in the absence of valid certificate.\\nFixes #15888\", \n    \"title\": \"Permit to query a proxmox with invalid certificate\"\n  }, \n  \"17251\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel 35a3653dfc) last updated 2016/08/25 231015 (GMT +200)\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\nJinja2 math filter\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0 (devel 35a3653dfc) last updated 2016/08/25 23:10:15 (GMT +200)\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nImplement `add`, `subtract`, `multiply`, `divide` and `modulo` operations as Jinja filters and updated the relevant documentation.\\n\\nThe original feature request for this PR is #17205\\n\", \n    \"component_name\": \"jinja2 math filter\", \n    \"component_raw\": \"Jinja2 math filter\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17251\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/filter\", \n      \"docs\", \n      \"feature\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Implement `add`, `subtract`, `multiply`, `divide` and `modulo` operations as Jinja filters and updated the relevant documentation.\\n\\nThe original feature request for this PR is #17205\", \n    \"title\": \"Implement Jinja2 filters for basic arithmetic (add, subtract, multiply, divide, modulo)\"\n  }, \n  \"17266\": {\n    \"ansible_version\": \"2.1.1.0-1\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Idea\\n- Documentation Report\\n##### COMPONENT NAME\\n\\n`password_hash`\\n##### ANSIBLE VERSION\\n\\n2.1.1.0-1\\n##### SUMMARY\\n\\nThe `password_hash` filter has been updated to support the `passlib` python module (as can be seen here: https://github.com/ansible/ansible/blob/v2.1.1.0-1/lib/ansible/plugins/filter/core.py#L279).\\nHowever:\\n1. [The documentation](https://docs.ansible.com/ansible/playbooks_filters.html#hashing-filters) still says it depends on `crypt`.\\n2. The filter restricts usage to md5, blowfish, sha256, and sha512. The `passlib` module supports a TON more hashing schemes than this. The restriction only made sense when using the `crypt` module. It should not be applied to `passlib`.\\n\", \n    \"component_name\": \"password_hash\", \n    \"component_raw\": \"`password_hash`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17266\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"docs_report\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The `password_hash` filter has been updated to support the `passlib` python module (as can be seen here: https://github.com/ansible/ansible/blob/v2.1.1.0-1/lib/ansible/plugins/filter/core.py#L279).\\nHowever:\\n1. [The documentation](https://docs.ansible.com/ansible/playbooks_filters.html#hashing-filters) still says it depends on `crypt`.\\n2. The filter restricts usage to md5, blowfish, sha256, and sha512. The `passlib` module supports a TON more hashing schemes than this. The restriction only made sense when using the `crypt` module. It should not be applied to `passlib`.\", \n    \"title\": \"properly support passlib module in password_hash\"\n  }, \n  \"17267\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nCustom Jinja filter\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n```\\n##### SUMMARY\\n\\nWith #17205 and #17251 we are trying to enable simple manipulations on list of integers through Jija `map()` filters.\\n\\nA similar necessity can arise with string manipulation.\\nThis is a short example (Zookeeper installation, real life):\\n\\nInventory file:\\n\\n``` ini\\n[zookeeper]\\nhost-1\\nhost-2\\nhost-3\\n```\\n\\nI need to generate these 2 strings:\\n\\n``` yaml\\nzookeeper_hosts:     \\\"host-1,host-2,host-3\\\"                # easy\\nzookeeper_endpoints: \\\"host-1:2181,host-2:2181,host-3:2181\\\" # complicated on 2.1\\n```\\n\\nThe first can be done easily:\\n\\n``` yaml\\n# generates \\\"host-1,host-2,host-3\\\"\\nzookeeper_hosts: \\\"{{ groups['zookeeper'] | join(',') }}\\\"\\n```\\n\\nFor the second I would like to be able to do this:\\n\\n``` yaml\\n# generates \\\"host-1:2181,host-2:2181,host-3:2181\\\"\\nzookeeper_hosts: \\\"{{ map(groups['zookeeper'], 'string_suffix', ':2181') | join(',') }}\\\"\\n```\\n\\nMakes sense?\\n\", \n    \"component_name\": \"custom jinja filter\", \n    \"component_raw\": \"Custom Jinja filter\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17267\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"With #17205 and #17251 we are trying to enable simple manipulations on list of integers through Jija `map()` filters.\\n\\nA similar necessity can arise with string manipulation.\\nThis is a short example (Zookeeper installation, real life):\\n\\nInventory file:\\n\\n``` ini\\n[zookeeper]\\nhost-1\\nhost-2\\nhost-3\\n```\\n\\nI need to generate these 2 strings:\\n\\n``` yaml\\nzookeeper_hosts:     \\\"host-1,host-2,host-3\\\"                # easy\\nzookeeper_endpoints: \\\"host-1:2181,host-2:2181,host-3:2181\\\" # complicated on 2.1\\n```\\n\\nThe first can be done easily:\\n\\n``` yaml\\n# generates \\\"host-1,host-2,host-3\\\"\\nzookeeper_hosts: \\\"{{ groups['zookeeper'] | join(',') }}\\\"\\n```\\n\\nFor the second I would like to be able to do this:\\n\\n``` yaml\\n# generates \\\"host-1:2181,host-2:2181,host-3:2181\\\"\\nzookeeper_hosts: \\\"{{ map(groups['zookeeper'], 'string_suffix', ':2181') | join(',') }}\\\"\\n```\\n\\nMakes sense?\", \n    \"title\": \"Implement string_prefix() and string_suffix() filters\"\n  }, \n  \"17268\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\ninventory_hostnames lookup plugin\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n```\\n##### CONFIGURATION\\n\\n**ansible.cfg**\\n\\n``` ini\\n[defaults]\\nhost_key_checking = False\\n#ask_pass = True\\nremote_user = root\\nretry_files_enabled = False\\n```\\n##### OS / ENVIRONMENT\\n\\nCentOS 7\\n##### SUMMARY\\n\\nWhen using wildcards in patterns with the `with_inventory_hostnames` lookup plugin, no results are returned. Using explicit patterns (`all:!web`) works.\\n\\nThere are scenarios where we want to use `with_inventory_hostnames` to iterate over a specific subset of a larger inventory, without always having to create a group for what may be a one-off command.\\n##### STEPS TO REPRODUCE\\n1. Create inventory and playbook files as shown below\\n\\n**inv**\\n\\n``` ini\\n[web]\\ndzcustomer1web1\\ndzcustomer1svc2\\ndzcustomer2web1\\ndzcustomer3web1\\n[app]\\nopcustomer1app1\\nopcustomer2app2\\nopcustomer3app3\\n```\\n\\n**test.yml**\\n\\n``` yml\\n\\n---\\n- hosts: localhost\\n  tasks:\\n    - debug:\\n        var: item\\n      with_inventory_hostnames: *customer1*\\n```\\n1. Run playbook\\n##### EXPECTED RESULTS\\n\\nExpected that the wildcard pattern would be supported the same way it is in the `-l` flag.\\n\\n``` shell\\n$ ansible-playbook -i inv test.yml\\n\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [debug] *******************************************************************\\nok: [localhost] => (item=dzcustomer1web1) => {\\n    \\\"item\\\": \\\"dzcustomer1web1\\\"\\n}\\nok: [localhost] => (item=dzcustomer1svc2) => {\\n    \\\"item\\\": \\\"dzcustomer1svc2\\\"\\n}\\nok: [localhost] => (item=opcustomer1app1) => {\\n    \\\"item\\\": \\\"opcustomer1app1\\\"\\n}\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=0\\n```\\n##### ACTUAL RESULTS\\n\\n``` shell\\n$ ansible-playbook -i inv test.yml\\n\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [debug] *******************************************************************\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=0\\n```\\n\\nWe've tested this with the filter configured multiple ways, all of which fail. Only explicit mentions appear to work as outlined in the [patterns](http://docs.ansible.com/ansible/intro_patterns.html) documentation. These patterns do work when used with `-l`, though.\\n\\n```\\n*customer1*\\n\\\"*customer1*\\\"\\n*web1\\ndz*\\n```\\n\", \n    \"component_name\": \"inventory_hostnames lookup plugin\", \n    \"component_raw\": \"inventory_hostnames lookup plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17268\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When using wildcards in patterns with the `with_inventory_hostnames` lookup plugin, no results are returned. Using explicit patterns (`all:!web`) works.\\n\\nThere are scenarios where we want to use `with_inventory_hostnames` to iterate over a specific subset of a larger inventory, without always having to create a group for what may be a one-off command.\", \n    \"title\": \"with_inventory_hostnames doesn't support wildcards in patterns\"\n  }, \n  \"17282\": {\n    \"ansible_version\": \"ansible 2.1.1.0 (detached HEAD 780c363482) last updated 2016/08/26 085923 (GMT +200)\\nAlso tested with\\nansible 2.1.0.0 (detached HEAD b599477242) last updated 2016/07/01 093051 (GMT +200)\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nPlaybook includes / 'default' filter\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0 (detached HEAD 780c363482) last updated 2016/08/26 08:59:23 (GMT +200)\\n\\nAlso tested with:\\n\\nansible 2.1.0.0 (detached HEAD b599477242) last updated 2016/07/01 09:30:51 (GMT +200)\\n\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nn/a\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nWhen using the \\\"default\\\" filter vars passed on to included playbooks do not work as expected when used within \\\"when: \\\" conditions.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n=incl-1.yml=\\n\\n- include: incl-2.yml\\n  vars:\\n    foo_var: True\\n\\n\\n=incl-2.yml=\\n\\n- include: incl-3.yml\\n  when: foo_var|default(False)|bool == True\\n\\n=incl-3.yml=\\n\\n- hosts: localhost\\n  tasks:\\n    - debug: msg=\\\"Foo!\\\"\\n\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\n```\\nTASK [debug] *******************************************************************\\ntask path: /.../incl-3.yml:4\\nok: [localhost] => {\\n    \\\"msg\\\": \\\"Foo!\\\"\\n}\\n```\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nskipping playbook include 'incl-3.yml' due to conditional test failure\\n\\nPLAYBOOK: incl-1.yml ***********************************************************\\n0 plays in incl-1.yml\\n```\\n\\nNote that it works without using the \\\"default\\\" filter.\\n\\nWhen using the default filter the default-variable overwrites the parent playbook's one.\\n\", \n    \"component_name\": \"playbook includes / default filter\", \n    \"component_raw\": \"Playbook includes / 'default' filter\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17282\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When using the \\\"default\\\" filter vars passed on to included playbooks do not work as expected when used within \\\"when: \\\" conditions.\", \n    \"title\": \"'default' filter not working with parent playbook variables\"\n  }, \n  \"17288\": {\n    \"ansible_version\": \"2.1.1.0\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nTaskQueueManager\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\n2.1.1.0\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nMac OS/X 10.11.5\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nWe have a simple one task playbook that waits for port availability on localhost.  If we set the hosts field to 127.0.0.1, the TaskQueueManager will not find any tasks.  Changing this to localhost makes it work.  This used to work in Ansible 1.9.x with 127.0.0.1 and the Ansible documentation specifies using the IP address.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\nCreate a playbook that will wait for port availability on 127.0.0.1 and execute the playbook with Ansible debug turned on.  You will see num_tasks = 0.\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n\\n---\\n- hosts: 127.0.0.1\\n  connection: local\\n  gather_facts: False\\n\\n  tasks:\\n  - name: Check that target host & port are accessible\\n    wait_for: host={{ target_host }} port={{ target_port }} timeout={{ timeout }}\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nExpected there to be task execution.\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\nNo tasks found.\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\n\\n```\\n\", \n    \"component_name\": \"taskqueuemanager\", \n    \"component_raw\": \"TaskQueueManager\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17288\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"We have a simple one task playbook that waits for port availability on localhost.  If we set the hosts field to 127.0.0.1, the TaskQueueManager will not find any tasks.  Changing this to localhost makes it work.  This used to work in Ansible 1.9.x with 127.0.0.1 and the Ansible documentation specifies using the IP address.\", \n    \"title\": \"Ansible will not find tasks in a playbook with hosts field set to 127.0.0.1\"\n  }, \n  \"17300\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nansible playbooks\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n##### OS / ENVIRONMENT\\n\\nCentos 6.7 / Centos 7\\n##### SUMMARY\\n\\nVariables passed in the command line no longer works with roles and ansible plays\\n##### STEPS TO REPRODUCE\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\ncommand:\\n\\n```\\nansible-playbook -i test -e \\\"role=test branch=testbranch\\\" playbook.yaml\\n```\\n\\nplaybook.yaml:\\n\\n```\\n- name: create resources\\n  hosts: localhost\\n  gather_facts: no\\n  connection: local\\n  vars_files:\\n    - \\\"{{ env }}/group_vars/{{ role }}\\\"\\n  roles:\\n    - { role: create_resources, queue_names: \\\"{{ sqs_queues }}\\\" }\\n```\\n\\nrole:\\n\\n```\\n- name: format sqs queue names\\n  set_fact:\\n    formatted_queue_name: \\\"{{ item | regex_replace('$','-{{ branch }}') }}\\\"\\n  with_items: queue_names\\n  register: formatted_queue_names\\n- name: print queues\\n  set_fact: foo=\\\"{{ formatted_queue_names.results | map(attribute='ansible_facts.formatted_queue_name') | list }}\\\"\\n- debug: var=foo\\n```\\n##### EXPECTED RESULTS\\n\\nWorking as expected in ansible 1.9.4\\n\\n```\\nok: [127.0.0.1] => {\\n    \\\"foo\\\": [\\n        \\\"testqueue1-testbranch\\\", \\n        \\\"testqueue2-testbranch\\\"\\n    ]\\n}\\nok: [localhost] => {\\n    \\\"foo\\\": [\\n        \\\"testqueue1-testbranch\\\", \\n        \\\"testqueue2-testbranch\\\"\\n    ]\\n}\\n```\\n##### ACTUAL RESULTS\\n\\n```\\nok: [127.0.0.1] => {\\n    \\\"foo\\\": [\\n        \\\"testqueue1-\\\", \\n        \\\"testqueue2-\\\"\\n    ]\\n}\\nok: [localhost] => {\\n    \\\"foo\\\": [\\n        \\\"testqueue1-\\\", \\n        \\\"testqueue2-\\\"\\n    ]\\n}\\n```\\n\", \n    \"component_name\": \"ansible playbooks\", \n    \"component_raw\": \"ansible playbooks\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17300\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Variables passed in the command line no longer works with roles and ansible plays\", \n    \"title\": \"Ansible 2.1.1 not getting other extra vars\"\n  }, \n  \"17309\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.1.0.0\\nconfig file = /Users/dbarroso/workspace/ansibly/ansible.cfg\\nconfigured module search path = [library]\", \n    \"body\": \"##### ISSUE TYPE\\n- New callback\\n##### COMPONENT NAME\\n\\nselective.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\n$ ansible --version\\nansible 2.1.0.0\\n  config file = /Users/dbarroso/workspace/ansibly/ansible.cfg\\n  configured module search path = ['library']\\n```\\n##### SUMMARY\\n\\nThis is a new callback that let's you tag the tasks you want to show on the screen. This is useful when you have a playbook with hundreds of tasks and you don't want to clutter the output with tasks that provide no operational value like \\\"creating folder to hold configuration files\\\" or \\\"setting facts\\\" or \\\"dropping temporary files\\\" that you will assemble later on, etc.\\n\\nBy default, tasks are replaced on screen by a dot. Tasks that fail are always printed on screen. If you want to show a particular task you have to tag it with the label \\\"print_action\\\".\\n\\nFor example:\\n\\nThe playbook:\\n\\n```\\n\\n---\\n- name: Test playbook\\n  hosts: all\\n\\n  tasks:\\n    - debug: msg=\\\"This will not be printed\\\"\\n    - debug: msg=\\\"This will not be printed\\\"\\n    - debug: msg=\\\"This will not be printed\\\"\\n    - debug: msg=\\\"This will not be printed\\\"\\n    - debug: msg=\\\"This will not be printed\\\"\\n    - debug: msg=\\\"But this will\\\"\\n      tags: [print_action]\\n    - assert: that=False\\n```\\n\\nWill yield the following output:\\n\\n```\\n$ ansible-playbook test.yml --limit \\\"edge-lab*\\\"\\n............\\n# debug *******************************************************************************************************************\\n  * edge-lab-100002         - changed=False -- But this will -----------------------------------\\n  * edge-lab-100001         - changed=False -- But this will -----------------------------------\\n# assert ******************************************************************************************************************\\n  * edge-lab-100002         - FAILED!!! --  ----------------------------------------------------\\n  * edge-lab-100001         - FAILED!!! --  ----------------------------------------------------\\n\\n# STATS *******************************************************************************************************************\\nedge-lab-100001    : ok=7       changed=0       failed=1        unreachable=0\\nedge-lab-100002    : ok=7       changed=0       failed=1        unreachable=0\\n```\\n\", \n    \"component_name\": \"selective.py\", \n    \"component_raw\": \"selective.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17309\", \n    \"issue_type\": \"New callback\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/callback\", \n      \"feature\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"new_plugin\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This is a new callback that let's you tag the tasks you want to show on the screen. This is useful when you have a playbook with hundreds of tasks and you don't want to clutter the output with tasks that provide no operational value like \\\"creating folder to hold\", \n    \"title\": \"First release of the callback selective.py\"\n  }, \n  \"17311\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /srv/ansible/repo/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Documentation Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nhttps://github.com/ansible/ansible/blob/devel/docsite/rst/intro_windows.rst\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n  config file = /srv/ansible/repo/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\nansible_user: zz_ansible@contoso.com\\nansible_password: '{{ vault_ansible_password }}'\\nansible_port: 5986\\nansible_winrm_transport: ntlm\\nansible_connection: winrm\\nansible_winrm_server_cert_validation: ignore\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nMac OS X El Capitan managing Windows Server 2012 R2\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nThere is no mention of the ntlm authentication method in the documentation page linked. As soon as I found a Google Group post explaining ntlm with Ansible and pywinrm 2.0 my life got a lot simpler. https://groups.google.com/forum/#!topic/ansible-project/vEl-mrvFkrY\\n\", \n    \"component_name\": \"https//github.com/ansible/ansible/blob/devel/docsite/rst/intro_windows.rst\", \n    \"component_raw\": \"https://github.com/ansible/ansible/blob/devel/docsite/rst/intro_windows.rst\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17311\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"docs_report\", \n      \"windows\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"There is no mention of the ntlm authentication method in the documentation page linked. As soon as I found a Google Group post explaining ntlm with Ansible and pywinrm 2.0 my life got a lot simpler. https://groups.google.com/forum/#!topic/ansible-project/vEl-mrvFkrY\", \n    \"title\": \"Documentation for configuring Windows management is missing 'ntlm'\"\n  }, \n  \"17337\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\ntests\\n##### SUMMARY\\n\\nthe test should be skipped if there is no selinux, but as asked on irc, i am not sure selinux is enabled anywhere in our CI.\\n\", \n    \"component_name\": \"tests\", \n    \"component_raw\": \"tests\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17337\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"in progress\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"test\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/selinux.py\", \n    \"summary\": \"the test should be skipped if there is no selinux, but as asked on irc, i am not sure selinux is enabled anywhere in our CI.\", \n    \"title\": \"Add test of the selinux module (as a start)\"\n  }, \n  \"17342\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nhosts file\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nNone\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nIf you have hosts in following pattern: `1.foo.bar.com, 2.foo.bar.com, 3.foo.bar.com`, it is a syntax error to write `[1:3].foo.bar.com` in hosts file.\\n##### STEPS TO REPRODUCE\\n\\n```\\n$ mkdir test\\n$ cd test\\n$ echo \\\"[some_group]\\n[1:3].foo.bar.com\\\" > hosts\\n$ ansible -i hosts some_group\\n```\\n##### EXPECTED RESULTS\\n\\nEvaluating hosts properly.\\n##### ACTUAL RESULTS\\n\\n```\\nERROR! Syntax Error while loading YAML.\\n\\n\\nThe error appears to have been in '/home/ubuntu/work/test/hosts': line 2, column 3, but may\\nbe elsewhere in the file depending on the exact syntax problem.\\n\\nThe offending line appears to be:\\n\\n[some_group]\\n[1:3].foo.bar.com\\n  ^ here\\n\\nhosts:2: Invalid section entry: '[1:3].foo.bar.com'. Please make sure that there are no spacesin the section entry, and that there are no other invalid characters\\n```\\n\", \n    \"component_name\": \"hosts file\", \n    \"component_raw\": \"hosts file\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17342\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"If you have hosts in following pattern: `1.foo.bar.com, 2.foo.bar.com, 3.foo.bar.com`, it is a syntax error to write `[1:3].foo.bar.com` in hosts file.\", \n    \"title\": \"hosts file ranges fail if hostname starts with range\"\n  }, \n  \"17344\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nopenstack dynamic inventory\\nhttps://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/openstack.py\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.0.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\nsame openstack OS ENV variables than `/etc/openstack/clouds.yaml`\\nPlease, note my openstack user doesn't have admin access.\\n##### SUMMARY\\n\\nwhen I execute Ansible dynamic Openstack inventory `openstack.py  --list --debug`, it runs a lot of tasks with success but after a long time it returns an error executing \\\"ServerList\\\" task.\\n##### STEPS TO REPRODUCE\\n\\nCreate `/etc/openstack/clouds.yaml`  (see https://gist.github.com/RuBiCK/8fecadb470e02e63a41104d265c72ac3 )with the authentication parameters for your openstack.\\nExcute dynamic inventory trying get all instantes or trying to get information about only one instance.\\n`openstack.py  --list --debug` or `openstack.py  --host dns01 --debug`\\n\\n```\\n[...]\\nManager envvars:BOAE running task FlavorGetExtraSpecs\\nManager envvars:BOAE ran task FlavorGetExtraSpecs in 0.0171229839325s\\nManager envvars:BOAE running task ServerListSecurityGroups\\nManager envvars:BOAE ran task ServerListSecurityGroups in 0.0598499774933s\\nManager envvars:BOAE running task VolumeList\\nManager envvars:BOAE ran task VolumeList in 0.287488937378s\\nManager BOAE: running task ServerList\\nCouldn't construct compute object\\nTraceback (most recent call last):\\n  File \\\"/usr/lib/python2.7/site-packages/shade/openstackcloud.py\\\", line 298, in _get_client\\n    **kwargs)\\n  File \\\"/usr/lib/python2.7/site-packages/os_client_config/cloud_config.py\\\", line 304, in get_legacy_client\\n    endpoint = self.get_session_endpoint(service_key)\\n  File \\\"/usr/lib/python2.7/site-packages/os_client_config/cloud_config.py\\\", line 253, in get_session_endpoint\\n    region_name=self.region)\\n  File \\\"/usr/lib/python2.7/site-packages/keystoneauth1/session.py\\\", line 765, in get_endpoint\\n    return auth.get_endpoint(self, **kwargs)\\n  File \\\"/usr/lib/python2.7/site-packages/keystoneauth1/identity/base.py\\\", line 212, in get_endpoint\\n    service_catalog = self.get_access(session).service_catalog\\n  File \\\"/usr/lib/python2.7/site-packages/keystoneauth1/identity/base.py\\\", line 136, in get_access\\n    self.auth_ref = self.get_auth_ref(session)\\n  File \\\"/usr/lib/python2.7/site-packages/keystoneauth1/identity/generic/base.py\\\", line 181, in get_auth_ref\\n    return self._plugin.get_auth_ref(session, **kwargs)\\n  File \\\"/usr/lib/python2.7/site-packages/keystoneauth1/identity/v2.py\\\", line 65, in get_auth_ref\\n    authenticated=False, log=False)\\n  File \\\"/usr/lib/python2.7/site-packages/keystoneauth1/session.py\\\", line 675, in post\\n    return self.request(url, 'POST', **kwargs)\\n  File \\\"/usr/lib/python2.7/site-packages/positional/__init__.py\\\", line 94, in inner\\n    return func(*args, **kwargs)\\n  File \\\"/usr/lib/python2.7/site-packages/keystoneauth1/session.py\\\", line 570, in request\\n    raise exceptions.from_response(resp, method, url)\\nUnauthorized: The request you have made requires authentication. (HTTP 401)\\nManager BOAE: ran task ServerList in 0.0429539680481s\\nError fetching server list on BOAE::\\n\\n```\\n\\nFor full log, please, see the following gist but it not usefull because it contains +8K lines about running taks and ran task.\\nhttps://gist.github.com/RuBiCK/1f70ebac2f2905a3582a21c40240253b\\n##### EXPECTED RESULTS\\n\\nThe expected results is get the output of the dynamic openstack inventory without errors.\\nAlso, when I try to get information for only one instance, it seems that it goes getting information for every instance in openstack and when you have a lot of instances it will take a lot of time.\\n##### ACTUAL RESULTS\\n\\nI get the described error above\\n\\nI tried to find what function is calling ServerList in order to see if it is trying to search in other tenants I don't have access but I could find it.\\n\", \n    \"component_name\": \"openstack dynamic inventory\", \n    \"component_raw\": \"openstack dynamic inventory\\nhttps://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/openstack.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17344\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"openstack\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"when I execute Ansible dynamic Openstack inventory `openstack.py  --list --debug`, it runs a lot of tasks with success but after a long time it returns an error executing \\\"ServerList\\\" task.\", \n    \"title\": \"Openstack dynamic inventory error running task ServerList\"\n  }, \n  \"17346\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nvault\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.0.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nAnsible Vault currently uses AES encryption with a password to share and store files. When the playbooks are shared and owned by a team, sharing a plaintext password is cumbersome, error prone and a possible security concern. It would be nice if vault added support for encrypting files and secrets with public keys for a set of people. Ideally either encrypting the AES shared password with everyone's public keys or directly encrypting the secrets with public keys. Essentially multiple people in a team/contributing/using a repository containing ansible-playbooks should be able to deploy playbooks correctly without having to share a common password/piece of knowledge necessary for the deploy.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n- Try to use ansible-vault with multiple people without needing  a common password.\\n- Fail. :(\\n\", \n    \"component_name\": \"vault\", \n    \"component_raw\": \"vault\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17346\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"c:parsing/vault/\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Ansible Vault currently uses AES encryption with a password to share and store files. When the playbooks are shared and owned by a team, sharing a plaintext password is cumbersome, error prone and a possible security concern. It would be nice if vault added support for encrypting files and secrets with public keys for a set of people. Ideally either encrypting the AES shared password with everyone's public keys or directly encrypting the secrets with public keys. Essentially multiple people in a team/contributing/using a repository containing ansible-playbooks should be able to deploy playbooks correctly without having to share a common password/piece of knowledge necessary for the deploy.\", \n    \"title\": \"Add support for sharing files/secrets with multiple users using Ansible Vault (gpg2 support)\"\n  }, \n  \"17349\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /Users/acotten/git/gini/aco/ansible-lab/ansible.cfg\\nconfigured module search path = [/usr/share/ansible/library]\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nssh connection plugin\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n  config file = /Users/acotten/git/gini/aco/ansible-lab/ansible.cfg\\n  configured module search path = ['/usr/share/ansible/library']\\n```\\n##### CONFIGURATION\\n\\n```\\n[ssh_connection]\\ncontrol_path = %(directory)s/%%C\\n```\\n##### OS / ENVIRONMENT\\n- OS X 10.11.6  - OpenSSH_7.3p1, OpenSSL 1.0.2h\\n- Ubuntu 16.04 - OpenSSH_7.2p2 Ubuntu-4ubuntu1, OpenSSL 1.0.2g-fips\\n##### SUMMARY\\n\\nAnsible randomly fails establishing SSH connections to hosts within a playbook without showing any OpenSSH related error:\\n\\n```\\nfatal: [host.example.com]: UNREACHABLE! =>\\n{ \\\"changed\\\": false,\\n  \\\"msg\\\": \\\"Failed to connect to the host via ssh.\\\",\\n  \\\"unreachable\\\": true}\\n```\\n\\nHowever, a SSH connection can be perfectly established from the same terminal, using the command from Ansible's debug output.\\n##### STEPS TO REPRODUCE\\n\\nConsider the following inventory, composed of Debian Jessie hosts running on AWS EC2:\\n\\n``` ini\\n[internal]\\n\\n# public (bastion)\\nec2-1-2-3-4.eu-central-1.compute.amazonaws.com\\n\\n# private (behind public host)\\nip-172-31-49-60.eu-central-1.compute.internal   ansible_ssh_common_args='-o ProxyCommand=\\\"ssh %r@ec2-1-2-3-4.eu-central-1.compute.amazonaws.com nc -w 1 %h %p\\\"'\\nip-172-31-49-61.eu-central-1.compute.internal   ansible_ssh_common_args='-o ProxyCommand=\\\"ssh %r@ec2-1-2-3-4.eu-central-1.compute.amazonaws.com nc -w 1 %h %p\\\"'\\nip-172-31-49-62.eu-central-1.compute.internal   ansible_ssh_common_args='-o ProxyCommand=\\\"ssh %r@ec2-1-2-3-4.eu-central-1.compute.amazonaws.com nc -w 1 %h %p\\\"'\\nip-172-31-49-63.eu-central-1.compute.internal   ansible_ssh_common_args='-o ProxyCommand=\\\"ssh %r@ec2-1-2-3-4.eu-central-1.compute.amazonaws.com nc -w 1 %h %p\\\"'\\nip-172-31-49-64.eu-central-1.compute.internal   ansible_ssh_common_args='-o ProxyCommand=\\\"ssh %r@ec2-1-2-3-4.eu-central-1.compute.amazonaws.com nc -w 1 %h %p\\\"'\\n```\\n\\nRun the following ad-hoc command:\\n\\n```\\n:~# ansible all -m ping -u admin\\n```\\n##### ACTUAL RESULTS\\n\\nThe **first** execution throws:\\n\\n```\\nip-172-31-49-60.eu-central-1.compute.internal | UNREACHABLE! => {\\n    \\\"changed\\\": false, \\n    \\\"msg\\\": \\\"Failed to connect to the host via ssh.\\\", \\n    \\\"unreachable\\\": true\\n}\\nip-172-31-49-61.eu-central-1.compute.internal | UNREACHABLE! => {\\n    \\\"changed\\\": false, \\n    \\\"msg\\\": \\\"Failed to connect to the host via ssh.\\\", \\n    \\\"unreachable\\\": true\\n}\\nip-172-31-49-62.eu-central-1.compute.internal | UNREACHABLE! => {\\n    \\\"changed\\\": false, \\n    \\\"msg\\\": \\\"Failed to connect to the host via ssh.\\\", \\n    \\\"unreachable\\\": true\\n}\\nec2-1-2-3-4.eu-central-1.compute.amazonaws.com | SUCCESS => {\\n    \\\"changed\\\": false, \\n    \\\"ping\\\": \\\"pong\\\"\\n}\\nip-172-31-49-63.eu-central-1.compute.internal | SUCCESS => {\\n    \\\"changed\\\": false, \\n    \\\"ping\\\": \\\"pong\\\"\\n}\\nip-172-31-49-64.eu-central-1.compute.internal | SUCCESS => {\\n    \\\"changed\\\": false, \\n    \\\"ping\\\": \\\"pong\\\"\\n}\\n```\\n\\nAll hosts for which Ansible tries to establish a ssh connection **before** the bastion host fail.\\n\\nOn Linux, subsequent executions within the `ControlPersist` time (default: 60s) succeed.\\n\\nOn OS X things are worse. Hosts behind the bastion do not seem to reuse the bastion's local socket (`ControlPath`) so the `ControlPersist` time does have any influence.\\n##### EXPECTED RESULTS\\n\\nThe `ping` task succeeds on every host consistently.\\n#15321 #15706 #11536 #15680 #15525 _may_ be related\\n\", \n    \"component_name\": \"ssh connection plugin\", \n    \"component_raw\": \"ssh connection plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17349\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Ansible randomly fails establishing SSH connections to hosts within a playbook without showing any OpenSSH related error:\\n\\n```\\nfatal: [host.example.com]: UNREACHABLE! =>\\n{ \\\"changed\\\": false,\\n  \\\"msg\\\": \\\"Failed to connect to the host via ssh.\\\",\\n  \\\"unreachable\\\": true}\\n```\\n\\nHowever, a SSH connection can be perfectly established from the same terminal, using the command from Ansible's debug output.\", \n    \"title\": \"Ansible randomly fails to connect to hosts behind bastion unless SSH connexions are still running in the background\"\n  }, \n  \"17350\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nRealtime stdout/stderr capture\\n##### ANSIBLE VERSION\\n\\ndevel\\n##### OS / ENVIRONMENT\\n\\nVarious *nix\\n##### SUMMARY\\n\\nI'd like to revisit #3887, collecting realtime stdout/stderr.  The last comment there pointed out the difficulties of feeding the output back to the ansible command layer, which I fully understand, so I have a counterproposal (and a prototype at https://github.com/PeterMartini/ansible/tree/ansible-tmp) - if stdout/stderr are buffered to disk alongside a copy of the python wrapper script ansible uses to actually execute its tasks (on *nix), then that data becomes available for an out-of-band process to pull back and examine the data.\\n\\nWith the branch referenced, a trivial callback plugin can be created to capture the task UUID for each host at the time the task is started, and use that UUID to derive the path where stdout/stderr will be buffered on the remote system.  With that information, stdout and stderr can be checked in realtime either manually or via a separate set of scripts.\\n\\nIf this makes sense, I'd like to work with whoever's interested to get that branch sufficiently polished to create a PR, review, and merge.\\n\", \n    \"component_name\": \"realtime stdout/stderr capture\", \n    \"component_raw\": \"Realtime stdout/stderr capture\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17350\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I'd like to revisit #3887, collecting realtime stdout/stderr.  The last comment there pointed out the difficulties of feeding the output back to the ansible command layer, which I fully understand, so I have a counterproposal (and a prototype at https://github.com/PeterMartini/ansible/tree/ansible-tmp) - if stdout/stderr are buffered to disk alongside a copy of the python wrapper script ansible uses to actually execute its tasks (on *nix), then that data becomes available for an out-of-band process to pull back and examine the data.\\n\\nWith the branch referenced, a trivial callback plugin can be created to capture the task UUID for each host at the time the task is started, and use that UUID to derive the path where stdout/stderr will be buffered on the remote system.  With that information, stdout and stderr can be checked in realtime either manually or via a separate set of scripts.\\n\\nIf this makes sense, I'd like to work with whoever's interested to get that branch sufficiently polished to create a PR, review, and merge.\", \n    \"title\": \"Revisiting realtime stdout/stderr\"\n  }, \n  \"17358\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /home/alek/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nplugins/lookup/dict.py\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n  config file = /home/alek/.ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nirrelevant\\n##### OS / ENVIRONMENT\\n\\nFedora 23\\nansible-2.1.1.0-1.fc23.noarch\\n##### SUMMARY\\n\\nInconsistent behavior between `with_dict` and `with_items` with e.g. `{%raw%}`escape\\n##### STEPS TO REPRODUCE\\n\\n```\\n- hosts: 127.0.0.1\\n  connection: local\\n\\n  vars:\\n    dict:\\n      key: \\\"{% raw %}{{ XXX }}{% endraw %}\\\"\\n\\n  tasks:\\n\\n  - name: OK - XXX\\n    with_items: \\\"{{ dict.keys() }}\\\"\\n    debug:\\n      var: dict[item]\\n\\n  - name: OK - XXX\\n    with_dict: \\\"{{ dict }}\\\"\\n    debug:\\n      var: dict[item.key]\\n\\n  - name: Inconsistent - VARIABLE IS NOT DEFINED\\n    with_dict: \\\"{{ dict }}\\\"\\n    debug:\\n      var: item.value\\n```\\n##### EXPECTED RESULTS\\n\\n`\\\"item.value\\\": \\\"{{ XXX }}\\\"`\\n##### ACTUAL RESULTS\\n\\n`\\\"item.value\\\": \\\"VARIABLE IS NOT DEFINED!\\\"`\\n\", \n    \"component_name\": \"plugins/lookup/dict.py\", \n    \"component_raw\": \"plugins/lookup/dict.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17358\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Inconsistent behavior between `with_dict` and `with_items` with e.g. `{%raw%}`escape\", \n    \"title\": \"with_dict/item.value behaves differently than with_dict/dict[item.key] in some cases\"\n  }, \n  \"17378\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n- ConfigureRemotingForAnsible.ps1\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nSmall change to use 4096 bits RSA keys as default for this script (especially for win servers managed over the Internet).\\n- Debian's guide to key creation currently recommends 4096 bit keys.\\n- Fedora's archive keys are all 4096 bit keys.\\n- BSI recommends at least 3072 bits key for 2017 - 2021.\\n- RSA 4096 is fully supported by Ansible and Windows Servers and safer.\\n\\nAlso, I propose to use a 3-year certificate, so you don't have to renew all your certs every year. \\nThis is generally the lifetime of a server (we keep them for 3 to 5 years in my job).\\n\\nFinally, I think that this is a good idea to use the new `Microsoft Enhanced Cryptographic Provider v1.0` with ECDSA keys for this script but, I'm a dick in PS and I don't know how to do this.\\n\", \n    \"component_name\": \"configureremotingforansible.ps1\", \n    \"component_raw\": \"- ConfigureRemotingForAnsible.ps1\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17378\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"windows\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Small change to use 4096 bits RSA keys as default for this script (especially for win servers managed over the Internet).\\n- Debian's guide to key creation currently recommends 4096 bit keys.\\n- Fedora's archive keys are all 4096 bit keys.\\n- BSI recommends at least 3072 bits key for 2017 - 2021.\\n- RSA 4096 is fully supported by Ansible and Windows Servers and safer.\\n\\nAlso, I propose to use a 3-year certificate, so you don't have to renew all your certs every year. \\nThis is generally the lifetime of a server (we keep them for 3 to 5 years in my job).\\n\\nFinally, I think that this is a good idea to use the new `Microsoft Enhanced Cryptographic Provider v1.0` with ECDSA keys for this script but, I'm a dick in PS and I don't know how to do this.\", \n    \"title\": \"RSA 1024 to RSA 4096\"\n  }, \n  \"17382\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /home/rod/deltoid/servers/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\\nCONFIGURATION\\nAdded vault password file path to ansible.cfg nothing else.\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nhost_vars configuration\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n  config file = /home/rod/deltoid/servers/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nAdded vault password file path to ansible.cfg, nothing else.\\n##### OS / ENVIRONMENT\\n\\nArch linux (x86_64)\\n##### SUMMARY\\n\\nWhen reading host_vars, ansible reads vars from a file name \\\"vars.yml~\\\" with priority over a file name \\\"vars.yml\\\". The \\\"vars.yml~\\\" file was created by editing the original file with emacs, which saves the backup by appending a \\\"~\\\" to the filename.\\n##### STEPS TO REPRODUCE\\n\\nCreate host_vars in a folder as follows:\\n\\n```\\nansible-folder\\n- host_vars\\n  - my-server-01\\n    - vars.yml\\n        ansible_user: root\\n        ansible_port: 22\\n    - vars.yml~\\n        ansible_user: someone_else\\n        ansible_port: 9999\\n```\\n\\nWhen connecting to a host (e.g. ansible -i hosts all -m ping), ansible will use the vars saved in vars.yml~.\\n##### EXPECTED RESULTS\\n\\nExpected to connect with 'root' on port 22, etc.\\n\\n```\\nUsing /home/rod/deltoid/servers/ansible/ansible.cfg as config file\\nSSH password: \\nLoaded callback minimal of type stdout, v2.0\\n<dlt-tx-02> ESTABLISH SSH CONNECTION FOR USER: root\\n<dlt-tx-02> SSH: EXEC sshpass -d13 ssh -C -vvv -o ControlMaster=no -o ControlPersist=no -o Port=22 -o User=root -o ConnectTimeout=10 -o ControlPath=/dev/null dlt-tx-02 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1472954078.5-25255107732476 `\\\" && echo ansible-tmp-1472954078.5-25255107732476=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1472954078.5-25255107732476 `\\\" ) && sleep 0'\\\"'\\\"''\\n<dlt-tx-02> PUT /tmp/tmpldCjDh TO /root/.ansible/tmp/ansible-tmp-1472954078.5-25255107732476/ping\\n<dlt-tx-02> SSH: EXEC sshpass -d13 sftp -o BatchMode=no -b - -C -vvv -o ControlMaster=no -o ControlPersist=no -o Port=22 -o User=root -o ConnectTimeout=10 -o ControlPath=/dev/null '[dlt-tx-02]'\\n<dlt-tx-02> ESTABLISH SSH CONNECTION FOR USER: root\\n<dlt-tx-02> SSH: EXEC sshpass -d13 ssh -C -vvv -o ControlMaster=no -o ControlPersist=no -o Port=22 -o User=root -o ConnectTimeout=10 -o ControlPath=/dev/null -tt dlt-tx-02 '/bin/sh -c '\\\"'\\\"'LANG=en_AU.UTF-8 LC_ALL=en_AU.UTF-8 LC_MESSAGES=en_AU.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1472954078.5-25255107732476/ping; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1472954078.5-25255107732476/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\ndlt-tx-02 | SUCCESS => {\\n    \\\"changed\\\": false, \\n    \\\"invocation\\\": {\\n        \\\"module_args\\\": {\\n            \\\"data\\\": null\\n        }, \\n        \\\"module_name\\\": \\\"ping\\\"\\n    }, \\n    \\\"ping\\\": \\\"pong\\\"\\n}\\n```\\n##### ACTUAL RESULTS\\n\\nAnsible generated an ssh command for the incorrect user/port.\\n\\n```\\nUsing /home/rod/deltoid/servers/ansible/ansible.cfg as config file\\nSSH password: \\nLoaded callback minimal of type stdout, v2.0\\n<dlt-tx-02> ESTABLISH SSH CONNECTION FOR USER: someone_else\\n<dlt-tx-02> SSH: EXEC sshpass -d13 ssh -C -vvv -o ControlMaster=no -o ControlPersist=no -o Port=9999 -o User=someone_else -o ConnectTimeout=10 -o ControlPath=/dev/null dlt-tx-02 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1472954135.94-221184064468334 `\\\" && echo ansible-tmp-1472954135.94-221184064468334=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1472954135.94-221184064468334 `\\\" ) && sleep 0'\\\"'\\\"''\\ndlt-tx-02 | UNREACHABLE! => {\\n    \\\"changed\\\": false, \\n    \\\"msg\\\": \\\"Failed to connect to the host via ssh.\\\", \\n    \\\"unreachable\\\": true\\n}\\n```\\n\", \n    \"component_name\": \"host_vars\", \n    \"component_raw\": \"host_vars\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17382\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_1.9\", \n      \"affects_2.0\", \n      \"affects_2.1\", \n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When reading host_vars, ansible reads vars from a file name \\\"vars.yml~\\\" with priority over a file name \\\"vars.yml\\\". The \\\"vars.yml~\\\" file was created by editing the original file with emacs, which saves the backup by appending a \\\"~\\\" to the filename.\", \n    \"title\": \"backup files in host_vars override vars.yml\"\n  }, \n  \"17389\": {\n    \"ansible_version\": \"2.1\", \n    \"body\": \"##### ISSUE TYPE\\n\\nDocumentation Report\\n##### COMPONENT NAME\\n\\nDeprecation notice\\n##### ANSIBLE VERSION\\n\\n2.1\\n##### CONFIGURATION\\n\\nNo added settings\\n##### OS / ENVIRONMENT\\n\\nOSX 10.11.5\\n##### SUMMARY\\n\\nThe deprecation notice for bare variables for me looks like this:\\n\\n[DEPRECATION WARNING]: Using bare variables is deprecated. Update your\\nplaybooks so that the environment value uses the full variable syntax\\n('{{files.stdout_lines}}').\\n\\nFor me as maybe not being 100% aware what bare variables are, this is very vague, even with the hint. Maybe this could be elaborated on.\\n##### STEPS TO REPRODUCE\\n\\nUse bare variables in the 'with_items' statement like down below:\\n\\n```\\n- name: Keep unwanted files absent\\n  file:\\n    path: \\\"{{ nginx_conf_dir }}/{{ item }}\\\"\\n    state: absent\\n  with_items: files.stdout_lines\\n  when: item not in nginx_conf_dir_allowed_files\\n```\\n\\ninstead of\\n\\n```\\n- name: Keep unwanted files absent\\n  file:\\n    path: \\\"{{ nginx_conf_dir }}/{{ item }}\\\"\\n    state: absent\\n  with_items: \\\"{{ files.stdout_lines }}\\\"\\n  when: item not in nginx_conf_dir_allowed_files\\n```\\n##### EXPECTED RESULTS\\n\\nYou will get a notice like this:\\n\\n[DEPRECATION WARNING]: Using bare variables is deprecated. Update your\\nplaybooks so that the environment value uses the full variable syntax\\n('{{files.stdout_lines}}').\\nThis feature will be removed in a future release.\\nDeprecation warnings can be disabled by setting deprecation_warnings=False in\\nansible.cfg.\\n\", \n    \"component_name\": \"deprecation notice\", \n    \"component_raw\": \"Deprecation notice\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17389\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The deprecation notice for bare variables for me looks like this:\\n\\n[DEPRECATION WARNING]: Using bare variables is deprecated. Update your\\nplaybooks so that the environment value uses the full variable syntax\\n('{{files.stdout_lines}}').\\n\\nFor me as maybe not being 100% aware what bare variables are, this is very vague, even with the hint. Maybe this could be elaborated on.\", \n    \"title\": \"Deprecation notice for bare variables\"\n  }, \n  \"17393\": {\n    \"ansible_version\": \"all ?\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nansible / gather_facts\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nall ?\\n\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nif the lvm package is not installed on the target host,  the fact gathering mission skips it silently. it shouldnt do that and instead do something along the lines of https://github.com/ansible/ansible-modules-extras/pull/2852\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\nfresh system minus any lvm package. \\nattempt to gather lvm facts\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\neither collect lvm facts or harmlessly warn the user the facts were not gather as the required lvm packages were not installed\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\nlvm facts were skipped. lots of head scratching\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\n\\n```\\n\", \n    \"component_name\": \"ansible / gather_facts\", \n    \"component_raw\": \"ansible / gather_facts\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17393\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/facts\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"if the lvm package is not installed on the target host,  the fact gathering mission skips it silently. it shouldnt do that and instead do something along the lines of https://github.com/ansible/ansible-modules-extras/pull/2852\", \n    \"title\": \"gather_facts silently skips lvm facts if lvm pkg not installed\"\n  }, \n  \"17406\": {\n    \"ansible_version\": \"all\", \n    \"body\": \"I know this has been talked about a few times, but I couldn't find a bug.\\n\\nLets use this to record our thoughts on how to improve this.\\n##### ISSUE TYPE\\n- Documentation Report\\n##### COMPONENT NAME\\n\\nn/a\\n##### ANSIBLE VERSION\\n\\nall\\n##### CONFIGURATION\\n##### OS / ENVIRONMENT\\n##### SUMMARY\\n\\nIt's current taking XXX minutes to do `make webdocs`\\n\\nThis is an issue as\\n- It's annoying to contributors who want to fix things\\n- It's too long to add to the CI pipeline\\n##### STEPS TO REPRODUCE\\n\\n`make webdocs`\\n##### EXPECTED RESULTS\\n\\nBuild within 15 minutes\\n##### ACTUAL RESULTS\\n\\nBuild takes over 30 minutes\\n\", \n    \"component_name\": \"n/a\", \n    \"component_raw\": \"n/a\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17406\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"docs_report\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"It's current taking XXX minutes to do `make webdocs`\\n\\nThis is an issue as\\n- It's annoying to contributors who want to fix things\\n- It's too long to add to the CI pipeline\", \n    \"title\": \"speed up documentation build (webdocs)\"\n  }, \n  \"17420\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel cfc0753e83) last updated 2016/09/06 205124 (GMT +200)\\nlib/ansible/modules/core (detached HEAD 982c4557d2) last updated 2016/09/06 200940 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD 06bd2a5ce2) last updated 2016/09/06 200940 (GMT +200)\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\n`ansible.plugins.strategy.StrategyBase`\\n`ansible.constants`\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0 (devel cfc0753e83) last updated 2016/09/06 20:51:24 (GMT +200)\\n  lib/ansible/modules/core: (detached HEAD 982c4557d2) last updated 2016/09/06 20:09:40 (GMT +200)\\n  lib/ansible/modules/extras: (detached HEAD 06bd2a5ce2) last updated 2016/09/06 20:09:40 (GMT +200)\\n```\\n##### SUMMARY\\n\\nFacts setting actions are not able to overwrite existing facts unless the\\nstrategy plugin invokes `VariableManager.set_nonpersistent_facts`. This used\\nto be the case explicitly for the `set_fact` action plugin.\\n\\nThis change introduces the constant `ansible.constants.DEFAULT_FACTS_ACTIONS`\\nfor flexible configuration of those kind of action plugins. Its default value\\nis just `set_fact`, so there should not be any broken dependencies.\\n\\n```\\n# Assume 'my_set_fact' is just a copy of the 'set_fact' action plugin/module.\\n- hosts: localhost\\n  vars:\\n    foo: \\\"spam\\\"\\n  tasks:\\n    - my_set_fact: foo=\\\"egg\\\"\\n    - debug: msg=\\\"{{ foo }}\\\"\\n\\n# before:\\nok: [localhost] => {\\n    \\\"msg\\\": \\\"spam\\\"\\n}\\n\\n# after: with ANSIBLE_FACTS_ACTIONS=\\\"set_fact, my_set_fact\\\"\\nok: [localhost] => {\\n    \\\"msg\\\": \\\"egg\\\"\\n}\\n```\\n\", \n    \"component_name\": \"ansible.plugins.strategy.strategybase\", \n    \"component_raw\": \"`ansible.plugins.strategy.StrategyBase`\\n`ansible.constants`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17420\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:constants\", \n      \"c:plugins/strategy\", \n      \"feature\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Facts setting actions are not able to overwrite existing facts unless the\\nstrategy plugin invokes `VariableManager.set_nonpersistent_facts`. This used\\nto be the case explicitly for the `set_fact` action plugin.\\n\\nThis change introduces the constant `ansible.constants.DEFAULT_FACTS_ACTIONS`\\nfor flexible\", \n    \"title\": \"allow 'nonpersistent facts' for other action plugins\"\n  }, \n  \"17428\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nand\\nansible 2.2.0 (devel abbb93e117) last updated 2016/09/06 163627 (GMT -600)\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\n`include`\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n```\\n\\nand\\n\\n```\\nansible 2.2.0 (devel abbb93e117) last updated 2016/09/06 16:36:27 (GMT -600)\\n```\\n##### CONFIGURATION\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nWhen using a \\\"complex\\\" template with an `include` task, `ansible-playbook` fails with an expected exception.\\n##### STEPS TO REPRODUCE\\n\\n```\\n\\n---\\n- hosts: localhost\\n  vars:\\n    enable: false\\n  tasks:\\n    - include: \\\"{{ enable | ternary('enable', 'disable') }}-fips{{ (ansible_lsb.major_release == 5) | ternary('RedHat5', '') }}.yml\\\"\\n```\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nNo errors\\n##### ACTUAL RESULTS\\n\\n```\\n$ ansible-playbook --check -vvv fips-playbook.yml \\nUsing /home/agaffney/.ansible.cfg as config file\\n [WARNING]: provided hosts list is empty, only localhost is available\\n\\nERROR! Unexpected Exception: '_raw_params'\\nthe full traceback was:\\n\\nTraceback (most recent call last):\\n  File \\\"/usr/bin/ansible-playbook\\\", line 92, in <module>\\n    exit_code = cli.run()\\n  File \\\"/usr/lib/python2.7/dist-packages/ansible/cli/playbook.py\\\", line 154, in run\\n    results = pbex.run()\\n  File \\\"/usr/lib/python2.7/dist-packages/ansible/executor/playbook_executor.py\\\", line 73, in run\\n    pb = Playbook.load(playbook_path, variable_manager=self._variable_manager, loader=self._loader)\\n  File \\\"/usr/lib/python2.7/dist-packages/ansible/playbook/__init__.py\\\", line 53, in load\\n    pb._load_playbook_data(file_name=file_name, variable_manager=variable_manager)\\n  File \\\"/usr/lib/python2.7/dist-packages/ansible/playbook/__init__.py\\\", line 98, in _load_playbook_data\\n    entry_obj = Play.load(entry, variable_manager=variable_manager, loader=self._loader)\\n  File \\\"/usr/lib/python2.7/dist-packages/ansible/playbook/play.py\\\", line 115, in load\\n    return p.load_data(data, variable_manager=variable_manager, loader=loader)\\n  File \\\"/usr/lib/python2.7/dist-packages/ansible/playbook/base.py\\\", line 206, in load_data\\n    self._attributes[name] = method(name, ds[name])\\n  File \\\"/usr/lib/python2.7/dist-packages/ansible/playbook/play.py\\\", line 167, in _load_tasks\\n    return load_list_of_blocks(ds=ds, play=self, variable_manager=self._variable_manager, loader=self._loader)\\n  File \\\"/usr/lib/python2.7/dist-packages/ansible/playbook/helpers.py\\\", line 58, in load_list_of_blocks\\n    loader=loader\\n  File \\\"/usr/lib/python2.7/dist-packages/ansible/playbook/block.py\\\", line 79, in load\\n    return b.load_data(data, variable_manager=variable_manager, loader=loader)\\n  File \\\"/usr/lib/python2.7/dist-packages/ansible/playbook/base.py\\\", line 206, in load_data\\n    self._attributes[name] = method(name, ds[name])\\n  File \\\"/usr/lib/python2.7/dist-packages/ansible/playbook/block.py\\\", line 115, in _load_block\\n    use_handlers=self._use_handlers,\\n  File \\\"/usr/lib/python2.7/dist-packages/ansible/playbook/helpers.py\\\", line 122, in load_list_of_tasks\\n    (not templar._contains_vars(t.args['_raw_params']) and not t.loop)\\nKeyError: '_raw_params'\\n```\\n\\nIf the `include:` is replaced with `debug: msg=`, you get the expected output:\\n\\n```\\nTASK [debug] *******************************************************************\\ntask path: /tmp/ansible_test/fips-playbook.yml:6\\nok: [localhost] => {\\n    \\\"msg\\\": \\\"disable-fips.yml\\\"\\n}\\n```\\n\\nAdditionally, if you add `static: no` to the `include` task, you get different (bad) output:\\n\\n```\\nTASK [include] *****************************************************************\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"No include file was specified to the include\\\"}\\n```\\n\", \n    \"component_name\": \"include\", \n    \"component_raw\": \"`include`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17428\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/include.py\", \n    \"summary\": \"When using a \\\"complex\\\" template with an `include` task, `ansible-playbook` fails with an expected exception.\", \n    \"title\": \"include task using \\\"=\\\" in template fails with unexpected exception\"\n  }, \n  \"17433\": {\n    \"ansible_version\": \"Not relevant\", \n    \"body\": \"##### ISSUE TYPE\\n\\nDocs Pull Request\\n##### COMPONENT NAME\\n\\nhttp://docs.ansible.com/ansible/intro_adhoc.html\\n##### ANSIBLE VERSION\\n\\nNot relevant\\n##### SUMMARY\\n\\nThe :ref: in the page is being expanded to include the description of the module. It makes the sentence hard to read.\\n\\nNot exactly familiar with rst syntax, but according to http://www.sphinx-doc.org/en/stable/markup/inline.html#ref-role a label can be specified.\\n\", \n    \"component_name\": \"http//docs.ansible.com/ansible/intro_adhoc.html\", \n    \"component_raw\": \"http://docs.ansible.com/ansible/intro_adhoc.html\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17433\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The :ref: in the page is being expanded to include the description of the module. It makes the sentence hard to read.\\n\\nNot exactly familiar with rst syntax, but according to http://www.sphinx-doc.org/en/stable/markup/inline.html#ref-role a label can be specified.\", \n    \"title\": \"Show only reference title in modules\"\n  }, \n  \"17434\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0 (devel 4ed88512e4) last updated 2016/09/07 083544 (GMT +200)\\nlib/ansible/modules/core (detached HEAD 5a5c1491ae) last updated 2016/09/07 083739 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD 1474bde864) last updated 2016/09/07 083739 (GMT +200)\\nconfig file = /var/scratch/src/ansible/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nCore\\n##### ANSIBLE VERSION\\n\\n```\\n$ ansible --version\\nansible 2.2.0 (devel 4ed88512e4) last updated 2016/09/07 08:35:44 (GMT +200)\\n  lib/ansible/modules/core: (detached HEAD 5a5c1491ae) last updated 2016/09/07 08:37:39 (GMT +200)\\n  lib/ansible/modules/extras: (detached HEAD 1474bde864) last updated 2016/09/07 08:37:39 (GMT +200)\\n  config file = /var/scratch/src/ansible/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n\\n```\\n##### CONFIGURATION\\n##### OS / ENVIRONMENT\\n\\nDebian unstable\\n##### SUMMARY\\n\\nPlease autotag roles with the role name:\\n\\nI always end up writing code like:\\n\\n```\\nroles:\\n  - { role: webserver, tags: [ 'webserver' ] }\\n  - { role: proxy, tags: [ 'proxy' ] }\\n  - { role: foobar, tags: [ 'foobar' ] }\\n```\\n\\nThis allows to run and test roles independently (otherwise they'd had dependencies on each other anyway) like:\\n\\n```\\nansible-playbook -i localhost, -l localhost play.yml -t foobar\\n```\\n\\nNow it would be nice if the all tasks in a role would automatically get tagged with the role name so this would become:\\n\\n```\\nroles:\\n  - webserver\\n  - proxy\\n  - foobar\\n```\\n\\nBut I could still use\\n\\n```\\nansible-playbook -i localhost, -l localhost play.yml -t foobar\\n```\\n\\nto only run tasks from the _foobar_ role.\\n\", \n    \"component_name\": \"core\", \n    \"component_raw\": \"Core\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17434\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Please autotag roles with the role name:\\n\\nI always end up writing code like:\\n\\n```\\nroles:\\n  - { role: webserver, tags: [ 'webserver' ] }\\n  - { role: proxy, tags: [ 'proxy' ] }\\n  - { role: foobar, tags: [ 'foobar' ] }\\n```\\n\\nThis allows to run and test roles independently (otherwise they'd had dependencies on each other anyway) like:\\n\\n```\\nansible-playbook -i localhost, -l localhost play.yml -t foobar\\n```\\n\\nNow it would be nice if the all tasks in a role would automatically get tagged with the role name so this would become:\\n\\n```\\nroles:\\n  - webserver\\n  - proxy\\n  - foobar\\n```\\n\\nBut I could still use\\n\\n```\\nansible-playbook -i localhost, -l localhost play.yml -t foobar\\n```\\n\\nto only run tasks from the _foobar_ role.\", \n    \"title\": \"Please autotag roles with the role name\"\n  }, \n  \"17454\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nansible-pull\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.0.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### OS / ENVIRONMENT\\n\\nUbunutu 14.04\\n##### SUMMARY\\n\\nansible-pull does not update the git repository if no hosts match. This can lead to a situation of orphaned machines if at some point they are not listed in the inventory file. As ansible-pull is usually used on machines with which one has no direct communication, this leads to them being permanently lost (unconfigurable in the future)\\n##### STEPS TO REPRODUCE\\n- configure role for MachineA\\n- install ansible-pull on MachineA, to be executed as a cron job every hour\\n\\n```\\nansible-pull --accept-host-key -d /XX --key-file /XX--url='XX' --sleep=10 --checkout=master --inventory-file /XX/production site.yml\\n```\\n- mistakenly remove MachineA from inventory\\n- ansible-pull runs on MachineA and updates git\\n\\nNow the next time ansible-pull runs on MachineA it will abort before updating the repository because `ERROR! Specified --limit does not match any hosts`\\n##### EXPECTED RESULTS\\n- adding MachineA back to inventory will allow ansible to configure that machine\\n##### ACTUAL RESULTS\\n- MachineA is now in a permanently unconfigurable state. The git repository checkout must be deleted to allow it to be configured again. If one has no direct access to the machine it is now unrecoverable from this error. To reconfigure the machine it must be _first_ added back to the inventory, and then the git checkout must be deleted\\n\\n**This means, a single misconfiguration where MachineA is dropped from the inventory file yields a permanently orphaned MachineA that will never update the git repository and is now unprovisionable / unconfigurable remotely.**\\n\", \n    \"component_name\": \"ansible-pull\", \n    \"component_raw\": \"ansible-pull\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17454\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"ansible-pull does not update the git repository if no hosts match. This can lead to a situation of orphaned machines if at some point they are not listed in the inventory file. As ansible-pull is usually used on machines with which one has no direct communication, this leads to them being permanently lost (unconfigurable in the future)\", \n    \"title\": \"ansible-pull does not always update git repository causing orphaned machines\"\n  }, \n  \"17460\": {\n    \"ansible_version\": \"\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nipaddr.py filter plugin\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\n```\\n##### CONFIGURATION\\n\\n<!---\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\n\\u201cN/A\\u201d\\n-->\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nWhen working with networking devices and especially access lists, there is often a need to convert a netmask to a wildcard mask. ipaddr filter plugin already has a wide range of useful functions and this would make an excellent addition to it.\\n\\nEg. 255.255.255.0 -> 0.0.0.255\\n\\n> > {{ 10.10.10.1/255.255.255.0 | ipaddr('wildcard') }} \\n> > would result in:\\n> > 0.0.0.255\\n\\nEg. 255.255.255.252 -> 0.0.0.3\\n\\n> > {{ 10.10.10.1/255.255.255.252 | ipaddr('wildcard') }} \\n> > would result in:\\n> > 0.0.0.3\\n\\nSo the usage would be similar to ipaddr('netmask') but instead of a netmask it would return the wildcard mask.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\n\\n```\\n\", \n    \"component_name\": \"ipaddr.py filter plugin\", \n    \"component_raw\": \"ipaddr.py filter plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17460\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"feature\", \n      \"networking\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When working with networking devices and especially access lists, there is often a need to convert a netmask to a wildcard mask. ipaddr filter plugin already has a wide range of useful functions and this would make an excellent addition to it.\\n\\nEg. 255.255.255.0 -> 0.0.0.255\\n\\n> > {{ 10.10.10.1/255.255.255.0 | ipaddr('wildcard') }} \\n> > would result in:\\n> > 0.0.0.255\\n\\nEg. 255.255.255.252 -> 0.0.0.3\\n\\n> > {{ 10.10.10.1/255.255.255.252 | ipaddr('wildcard') }} \\n> > would result in:\\n> > 0.0.0.3\\n\\nSo the usage would be similar to ipaddr('netmask') but instead of a netmask it would return the wildcard mask.\", \n    \"title\": \"Wildcard conversion to ipaddr filter plugin\"\n  }, \n  \"17469\": {\n    \"ansible_version\": \"$ ansible-galaxy --version\\nansible-galaxy 2.1.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Documentation Report\\n##### COMPONENT NAME\\n\\nansible-galaxy\\n##### ANSIBLE VERSION\\n\\n```\\n$ ansible-galaxy --version\\nansible-galaxy 2.1.1.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\nXubuntu 16.04\\n##### SUMMARY\\n\\nTrying to use `ansible-galaxy` command-line tool to consume a repository from Ansible Galaxy in another repository. I think I need to install the role with `ansible-galaxy install` but I'm not sure. Consulting the command's built-in help is of no help. I see a list of possible commands but no indication of what they do.\\n\\n```\\n$ ansible-galaxy --help\\nUsage: ansible-galaxy [delete|import|info|init|install|list|login|remove|search|setup] [--help] [options] ...\\n\\nOptions:\\n  -h, --help     show this help message and exit\\n  -v, --verbose  verbose mode (-vvv for more, -vvvv to enable connection\\n                 debugging)\\n  --version      show program's version number and exit\\n```\\n\\nI can run `ansible-galaxy install --help`, and this will show me options for the install sub-command, but it still does not set a clear expectation of what the sub-command actually does.\\n\\n```\\n$ ansible-galaxy install --help\\nUsage: ansible-galaxy install [options] [-r FILE | role_name(s)[,version] | scm+role_repo_url[,version] | tar_file(s)]\\n\\nOptions:\\n  -f, --force           Force overwriting an existing role\\n  -h, --help            show this help message and exit\\n  -c, --ignore-certs    Ignore SSL certificate validation errors.\\n  -i, --ignore-errors   Ignore errors and continue with the next specified\\n                        role.\\n  -n, --no-deps         Don't download roles listed as dependencies\\n  -r ROLE_FILE, --role-file=ROLE_FILE\\n                        A file containing a list of roles to be imported\\n  -p ROLES_PATH, --roles-path=ROLES_PATH\\n                        The path to the directory containing your roles. The\\n                        default is the roles_path configured in your\\n                        ansible.cfg file (/etc/ansible/roles if not\\n                        configured)\\n  -s API_SERVER, --server=API_SERVER\\n                        The API server destination\\n  -v, --verbose         verbose mode (-vvv for more, -vvvv to enable\\n                        connection debugging)\\n  --version             show program's version number and exit\\n```\\n\", \n    \"component_name\": \"ansible-galaxy\", \n    \"component_raw\": \"ansible-galaxy\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17469\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"affects_2.2\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Trying to use `ansible-galaxy` command-line tool to consume a repository from Ansible Galaxy in another repository. I think I need to install the role with `ansible-galaxy install` but I'm not sure. Consulting the command's built-in help is of no help. I see a list of possible commands but no indication of what they do.\\n\\n```\\n$ ansible-galaxy --help\\nUsage: ansible-galaxy [delete|import|info|init|install|list|login|remove|search|setup] [--help] [options] ...\\n\\nOptions:\\n  -h, --help     show this help message and exit\\n  -v, --verbose  verbose mode (-vvv for more, -vvvv to enable connection\\n                 debugging)\\n  --version      show program's version number and exit\\n```\\n\\nI can run `ansible-galaxy install --help`, and this will show me options for the install sub-command, but it still does not set a clear expectation of what the sub-command actually does.\\n\\n```\\n$ ansible-galaxy install --help\\nUsage: ansible-galaxy install [options] [-r FILE | role_name(s)[,version] | scm+role_repo_url[,version] | tar_file(s)]\\n\\nOptions:\\n  -f, --force           Force overwriting an existing role\\n  -h, --help            show this help message and exit\\n  -c, --ignore-certs    Ignore SSL certificate validation errors.\\n  -i, --ignore-errors   Ignore errors and continue with the next specified\\n                        role.\\n  -n, --no-deps         Don't download roles listed as dependencies\\n  -r ROLE_FILE, --role-file=ROLE_FILE\\n                        A file containing a list of roles to be imported\\n  -p ROLES_PATH, --roles-path=ROLES_PATH\\n                        The path to the directory containing your roles. The\\n                        default is the roles_path configured in your\\n                        ansible.cfg file (/etc/ansible/roles if not\\n                        configured)\\n  -s API_SERVER, --server=API_SERVER\\n                        The API server destination\\n  -v, --verbose         verbose mode (-vvv for more, -vvvv to enable\\n                        connection debugging)\\n  --version             show program's version number and exit\\n```\", \n    \"title\": \"`ansible-galaxy --help` is not very helpful\"\n  }, \n  \"17477\": {\n    \"ansible_version\": \"ansible 2.1.0.0\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n- Bug Report\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nvars_prompt\\n##### ANSIBLE VERSION\\n\\nansible 2.1.0.0\\n##### OS / ENVIRONMENT\\n\\nNA\\n##### SUMMARY\\n\\nWhile calling vars_prompt from the top playbook enter.yml, playbook not including the file in which vars_prompt are defined. \\n##### STEPS TO REPRODUCE\\n\\n-- Create a playbook enter.yml\\n-- include another playbook prompt.yml (in which vars_prompt defined)\\n-- Try to use those variable which were provided by user while prompting on console.\\n\", \n    \"component_name\": \"vars_prompt\", \n    \"component_raw\": \"vars_prompt\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17477\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"While calling vars_prompt from the top playbook enter.yml, playbook not including the file in which vars_prompt are defined.\", \n    \"title\": \"vars_prompt can't be defined in another playbook\"\n  }, \n  \"17483\": {\n    \"ansible_version\": null, \n    \"body\": \"## ISSUE TYPE\\n\\nFeature Pull Request\\n## COMPONENT NAME\\n- `pathglob` filter plugin\\n- `pathglob` lookup plugin\\n## SUMMARY\\n\\nIn response to comments in #17136 and #17269, alternative `pathglob` filter and lookup plugins to match _both_ files and directories, or _directories only_ (if specified in glob, e.g. `{{ \\\"/some/path/*/\\\" | pathglob}}`).. This feature is suggested in #17480.\\n\", \n    \"component_name\": \"pathglob filter plugin\", \n    \"component_raw\": \"- `pathglob` filter plugin\\n- `pathglob` lookup plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17483\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/filter\", \n      \"c:plugins/lookup\", \n      \"feature\", \n      \"new_plugin\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"In response to comments in #17136 and #17269, alternative `pathglob` filter and lookup plugins to match _both_ files and directories, or _directories only_ (if specified in glob, e.g. `{{ \\\"/some/path/*/\\\" | pathglob}}`).. This feature is suggested in #17480.\", \n    \"title\": \"Implement 'pathglob' filter plugin and lookup plugin\"\n  }, \n  \"17492\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\nplugins/action/synchronize.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\n'pull' mode preprends PWD to the (remote) src path, e.g.\\n\\n/home/blah/blah/rsync://some-host/path/on/remote\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\nTry the example in the synchronize docs:\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\nsynchronize: mode=pull src=rsync://somehost.com/path/ dest=/some/absolute/path/\\n\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nrsync from somehost.com/path/\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\nfailed rsync from ${PWD}rsync://somehost.com/path/\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\n\\n```\\n\\nThe problem seems to be around the dest_is_local flag. If dest_is_local (true for pull with remote src), the 'rsync://' prefix is not handled.\\n\", \n    \"component_name\": \"plugins/action/synchronize.py\", \n    \"component_raw\": \"plugins/action/synchronize.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17492\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/synchronize.py\", \n    \"summary\": \"'pull' mode preprends PWD to the (remote) src path, e.g.\\n\\n/home/blah/blah/rsync://some-host/path/on/remote\", \n    \"title\": \"synchronize 'pull' mode incorrectly prepends PWD to src\"\n  }, \n  \"17494\": {\n    \"ansible_version\": \"master@HEAD\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Docs Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n- README\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nmaster@HEAD\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nThis PR changes all the links in README.md from `http://` to `https://` because **release.ansible.com** and **docs.ansible.com** does currently not redirect the user to the secure version automatically.\\n\", \n    \"component_name\": \"readme\", \n    \"component_raw\": \"- README\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17494\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This PR changes all the links in README.md from `http://` to `https://` because **release.ansible.com** and **docs.ansible.com** does currently not redirect the user to the secure version automatically.\", \n    \"title\": \"HTTPS all the links in README.md\"\n  }, \n  \"17501\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Docs Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\ndocsite/rst/community.rst\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nThe section \\\"Contributing Code (Features or Bugfixes)\\\" is mainly about different kinds of patches and getting them upstream. The remarks on style are thrown in as somewhat of a sidenote, and I think they're deserving enough of their own small subsection. I separated them out and cleaned up their wording.\\n\", \n    \"component_name\": \"docsite/rst/community.rst\", \n    \"component_raw\": \"docsite/rst/community.rst\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17501\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The section \\\"Contributing Code (Features or Bugfixes)\\\" is mainly about different kinds of patches and getting them upstream. The remarks on style are thrown in as somewhat of a sidenote, and I think they're deserving enough of their own small subsection. I separated them out and cleaned up their wording.\", \n    \"title\": \"Wrapped code style remarks in a new 'Style' subsection\"\n  }, \n  \"17514\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel f57f33a8e7) last updated 2016/08/26 062444 (GMT +000)\\nlib/ansible/modules/core (detached HEAD ef84dbbddd) last updated 2016/08/26 062455 (GMT +000)\\nlib/ansible/modules/extras (detached HEAD f29efb5626) last updated 2016/08/26 062458 (GMT +000)\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Idea\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nSupport ProxyCommand in module_utils for Network (lib/ansible/module_utils/shell.py) like paramiko connection plugin\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0 (devel f57f33a8e7) last updated 2016/08/26 06:24:44 (GMT +000)\\n  lib/ansible/modules/core: (detached HEAD ef84dbbddd) last updated 2016/08/26 06:24:55 (GMT +000)\\n  lib/ansible/modules/extras: (detached HEAD f29efb5626) last updated 2016/08/26 06:24:58 (GMT +000)\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nIn paramiko connection plugin, I find implementation for supporting ProxyCommand.\\nIn network modules, I find ProxyCommand is not supported. Try to support this, I have modified some code in lib/ansible/module_utils, related files are shell.py, network.py.\\n\\nHere is the main modification in shell.py:\\n\\n```\\n         self.ssh = paramiko.SSHClient()\\n         if key_policy != \\\"ignore\\\":\\n@@ -93,11 +93,28 @@ class Shell(object):\\n         if not look_for_keys:\\n             look_for_keys = password is None\\n\\n+        sock_kwarg = {}\\n+        if proxy_command:\\n+            replacers = {\\n+                '%h': host,\\n+                '%p': port,\\n+                '%r': username\\n+            }\\n+            for find, replace in replacers.items():\\n+                proxy_command = proxy_command.replace(find, str(replace))\\n+            try:\\n+                sock_kwarg = {'sock': paramiko.ProxyCommand(proxy_command)}\\n+            except AttributeError:\\n+                raise ShellError('Paramiko ProxyCommand support unavailable. '\\n+                                 'Please upgrade to Paramiko 1.9.0 or newer. '\\n+                                 'Not using configured ProxyCommand')\\n+\\n         try:\\n             self.ssh.connect(\\n                 host, port=port, username=username, password=password,\\n                 timeout=timeout, look_for_keys=look_for_keys, pkey=pkey,\\n                 key_filename=key_filename, allow_agent=allow_agent,\\n+                **sock_kwarg\\n             )\\n```\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\nAfter this implementation, we could define ProxyCommand in host and use it in playbook.\\nI try in ios_command module.\\n\\nhost:\\n1025 ansible_host=1025 ansible_host=172.16.16.2 ansible_ssh_proxy_command=\\\"sshpass -p xxx ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -W %h:%p xxx@10.126.69.49\\\" ansible_user=test ansible_ssh_pass=test\\n\\nplaybook:\\n- name: Test Proxy\\n  hosts: 1025\\n  gather_facts: no\\n  connection: local\\n  vars:\\n    admin_cli:\\n      host: \\\"{{ hostvars[inventory_hostname]['ansible_host'] }}\\\"\\n      username: \\\"{{ hostvars[inventory_hostname]['ansible_user'] }}\\\"\\n      password: \\\"{{ hostvars[inventory_hostname]['ansible_ssh_pass'] }}\\\"\\n      transport: cli\\n      proxy_command: \\\"{{ hostvars[inventory_hostname]['ansible_ssh_proxy_command'] }}\\\"\\n  tasks:\\n  - name: run show version on remote devices\\n    ios_command:\\n      commands:\\n      - show version\\n      - show config\\n      provider: \\\"{{ admin_cli }}\\\"\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\n\\n```\\n\", \n    \"component_name\": \"support proxycommand in module_utils for network (lib/ansible/module_utils/shell.py) like paramiko connection plugin\", \n    \"component_raw\": \"Support ProxyCommand in module_utils for Network (lib/ansible/module_utils/shell.py) like paramiko connection plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17514\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [], \n    \"module_match\": null, \n    \"summary\": \"In paramiko connection plugin, I find implementation for supporting ProxyCommand.\\nIn network modules, I find ProxyCommand is not supported. Try to support this, I have modified some code in lib/ansible/module_utils, related files are shell.py, network.py.\\n\\nHere is the main modification in shell.py:\\n\\n```\\n         self.ssh = paramiko.SSHClient()\\n         if key_policy != \\\"ignore\\\":\\n@@ -93,11 +93,28 @@ class Shell(object):\\n         if not look_for_keys:\\n             look_for_keys = password is None\\n\\n+        sock_kwarg = {}\\n+        if proxy_command:\\n+            replacers = {\\n+                '%h': host,\\n+                '%p': port,\\n+                '%r': username\\n+            }\\n+            for find, replace in replacers.items():\\n+                proxy_command = proxy_command.replace(find, str(replace))\\n+            try:\\n+                sock_kwarg = {'sock': paramiko.ProxyCommand(proxy_command)}\\n+            except AttributeError:\\n+                raise ShellError('Paramiko ProxyCommand support unavailable. '\\n+                                 'Please upgrade to Paramiko 1.9.0 or newer. '\\n+                                 'Not using configured ProxyCommand')\\n+\\n         try:\\n             self.ssh.connect(\\n                 host, port=port, username=username, password=password,\\n                 timeout=timeout, look_for_keys=look_for_keys, pkey=pkey,\\n                 key_filename=key_filename, allow_agent=allow_agent,\\n+                **sock_kwarg\\n             )\\n```\", \n    \"title\": \"Support ProxyCommand in module_utils for Network like paramiko connection plugin\"\n  }, \n  \"17518\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\ncallback plugin: profile_tasks\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\n# ansible --version\\nansible 2.1.1.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\n```\\n[ssh_connection]\\nssh_args = -i ~/.ssh/id_rsa -F ssh.config -o StrictHostKeyChecking=no -o ControlMaster=auto -o ControlPath=~/.ssh/%h -o ControlPersist=30m\\nscp_if_ssh = True\\n[defaults]\\nroles_path = roles\\nlibrary = /usr/share/ansible\\ninventory = hosts\\nremote_user = root\\nhash_behaviour = replace\\nforks = 100\\npipelining = True\\ngathering = smart\\nansible_managed = Ansible managed file, do not edit directly\\nforce_handlers = True\\nretry_files_enabled = False\\ncallback_whitelist = profile_tasks\\n```\\n\\n```\\nexport DISPLAY_SKIPPED_HOSTS=0\\n```\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nCentOS7\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nprofile_tasks uses system time and can output negative time to run tasks if the clock is changed while running ansible.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\nThe playbook: https://github.com/CSC-IT-Center-for-Science/fgci-ansible/blob/master/local.yml\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n1. reinstall a server (pxe boot + kickstart). At the end of the kickstart, the node fetches the ansible-pull-script.sh and adds it to rc.local. Node reboots.\\n2. Node boots and runs rc.local. The actual script is this: https://github.com/CSC-IT-Center-for-Science/ansible-role-fgci-install/blob/master/templates/ansible-pull-script.sh.j2\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nSomething like this at the end of the log:\\n\\n```\\nMonday 12 September 2016  14:22:45 +0300 (0:00:00.316)       0:06:40.953 ****** \\n```\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nTASK [ansible-role-ntp : Copy the ntp.conf template file] **********************\\nMonday 12 September 2016  15:00:10 +0300 (0:00:00.102)       0:03:16.717 ****** \\nchanged: [ivb15]\\n\\nTASK [ansible-role-ntp : Start/stop ntp service] *******************************\\nMonday 12 September 2016  15:00:11 +0300 (0:00:00.432)       0:03:17.150 ****** \\nchanged: [ivb15]\\n\\nTASK [ansible-role-autofs : Setup | apt | ensure autofs's package(s) present] **\\nMonday 12 September 2016  15:00:11 +0300 (0:00:00.482)       0:03:17.632 ****** \\n\\nTASK [ansible-role-autofs : Setup | yum | ensure autofs's package(s) present] **\\nMonday 12 September 2016  15:00:11 +0300 (0:00:00.104)       0:03:17.737 ****** \\nchanged: [ivb15] => (item=[u'autofs'])\\n\\nTASK [ansible-role-autofs : Setup | zyp | ensure autofs's package(s) present] **\\nMonday 12 September 2016  13:20:16 +0300 (-2:20:04.754)       -2:23:22.492 **** \\n\\nTASK [ansible-role-autofs : Setup | dnf | ensure autofs's package(s) present] **\\nMonday 12 September 2016  13:20:16 +0300 (0:00:00.089)       -2:23:22.582 ***** \\n\\n#SNIP\\n\\n# and then in the summary:\\nMonday 12 September 2016  13:32:00 +0300 (0:00:00.340)       -2:35:06.828 ***** \\n```\\n\", \n    \"component_name\": \"callback plugin profile_tasks\", \n    \"component_raw\": \"callback plugin: profile_tasks\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17518\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"profile_tasks uses system time and can output negative time to run tasks if the clock is changed while running ansible.\", \n    \"title\": \"make callback profile_tasks independent from system time to allow for time changes\"\n  }, \n  \"17533\": {\n    \"ansible_version\": \"ansible 2.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [/Users/nmyers002/custom_modules]\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\nansible.plugins.stategy.StrategyBase class\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = ['/Users/nmyers002/custom_modules']\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nAdded ability for ActionModules to return 'add_hosts', with a list of dictionaries of the same data format as 'add_host'.  By doing this I created a loop to call the _add_host method to allow for adding multiple files in one task call instead of creating a task loop.  \\n\\nThe rational behind this choice was the need for a custom ActionModule that would receive a list of params, query a CMDB for the host data, and then add all hosts in a single call.  This simplified the add_host call greatly, and reduced the yaml needed to to accomplish the task with the default add_host call.\\n\\n<!---\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\ncommit message and your description; but you should still explain what\\nthe change does.\\n-->\\n\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\n\\n```\\n\\n```\\n\", \n    \"component_name\": \"ansible.plugins.stategy.strategybase class\", \n    \"component_raw\": \"ansible.plugins.stategy.StrategyBase class\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17533\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/strategy\", \n      \"feature\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Added ability for ActionModules to return 'add_hosts', with a list of dictionaries of the same data format as 'add_host'.  By doing this I created a loop to call the _add_host method to allow for adding multiple files in one task call instead of creating a task loop.  \\n\\nThe rational behind this choice was the need for a custom ActionModule that would receive a list of params, query a CMDB for the host data, and then add all hosts in a single call.  This simplified the add_host call greatly, and reduced the yaml needed to to accomplish the task with the default add_host call.\\n\\n\\n\\n\\n\\n```\\n\\n```\", \n    \"title\": \"Added ability to add multiple hosts from custom ActionModule by returning 'add_hosts' in result\"\n  }, \n  \"17536\": {\n    \"ansible_version\": \"based off of devel at 036650cb097352a9810c6acfe2bd3354859a5149\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nexecutor / actions plugin\\n##### ANSIBLE VERSION\\n\\nbased off of devel at 036650cb097352a9810c6acfe2bd3354859a5149\\n##### SUMMARY\\n\\nThis is a WIP PR to address #17350.\\n\\nThe basic idea:\\n\\nWith the 3 commits here, and a plugin installed that looks something like:\\n\\n```\\nfrom ansible.plugins.callback import CallbackBase\\n\\nclass CallbackModule(CallbackBase):\\n    CALLBACK_VERSION = 2.0\\n    CALLBACK_TYPE = 'logging'\\n    CALLBACK_NAME = 'logger'\\n\\n    def __init__(self, display=None):\\n        super(CallbackModule, self).__init__(display)\\n\\n    def v2_runner_on_start(self, host, task):\\n        print \\\"You can tail the logs at ~/.ansible/tmp/%s-%s/std{out,err}\\\" % (host, task._uuid)\\n```\\n\\nThe logs are now available on disk on the remote system and available for inspection through whatever means are handy.\\n\\nThe 3 commits are to:\\n1. Add a new callback for when the runner starts, since both host and task information is necessary\\n2. Add a config variable to control the `tee` behavior, buffering to `stdout` and `stderr`\\n3. Change the temporary directory formula, which currently includes a random number, to use host and the task uuid instead to make the full path predictable.  Passing the tmp dir in or out would seem like a better solution, but it seems like that would be more intrusive.\\n\\n*\\\\* Opening as a WIP for discussion **\\n\", \n    \"component_name\": \"executor / actions plugin\", \n    \"component_raw\": \"executor / actions plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17536\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:constants\", \n      \"c:executor/module_common\", \n      \"c:executor/task_executor\", \n      \"c:executor/task_queue_manager\", \n      \"c:module_utils/\", \n      \"c:module_utils/basic\", \n      \"c:playbook/play\", \n      \"c:playbook/play_context\", \n      \"c:plugins/action\", \n      \"c:plugins/callback\", \n      \"feature\", \n      \"module_util\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This is a WIP PR to address #17350.\\n\\nThe basic idea:\\n\\nWith the 3 commits here, and a plugin installed that looks something like:\\n\\n```\\nfrom ansible.plugins.callback import CallbackBase\\n\\nclass CallbackModule(CallbackBase):\\n    CALLBACK_VERSION = 2.0\\n    CALLBACK_TYPE = 'logging'\\n    CALLBACK_NAME = 'logger'\\n\\n    def __init__(self, display=None):\\n        super(CallbackModule, self).__init__(display)\\n\\n    def v2_runner_on_start(self, host, task):\\n        print \\\"You can tail the logs at ~/.ansible/tmp/%s-%s/std{out,err}\\\" % (host, task._uuid)\\n```\\n\\nThe logs are now available on disk on the remote system and available for inspection through whatever means are handy.\\n\\nThe 3 commits are to:\\n1. Add a new callback for when the runner starts, since both host and task information is necessary\\n2. Add a config variable to control the `tee` behavior, buffering to `stdout` and `stderr`\\n3. Change the temporary directory formula, which currently includes a random number, to use host and the task uuid instead to make the full path predictable.  Passing the tmp dir in or out would seem like a better solution, but it seems like that would be more intrusive.\\n\\n*\\\\* Opening as a WIP for discussion **\", \n    \"title\": \"Add config option to tee stdout and stderr to temp files\"\n  }, \n  \"17538\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\nmodule_utils/vmware.py\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n\\n```\\n##### SUMMARY\\n- Added find_datastore_by_name helper function for ansible/ansible-modules-extras#2903 (cloud/vmware/vmware_vmotion: added storage vMotion capability)\\n- Added workaround for self-signed certificates, as the ssl exception was not caught.\\n\", \n    \"component_name\": \"module_utils/vmware.py\", \n    \"component_raw\": \"module_utils/vmware.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17538\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"cloud\", \n      \"feature\", \n      \"module_util\", \n      \"vmware\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"- Added find_datastore_by_name helper function for ansible/ansible-modules-extras#2903 (cloud/vmware/vmware_vmotion: added storage vMotion capability)\\n- Added workaround for self-signed certificates, as the ssl exception was not caught.\", \n    \"title\": \"module_utils/vmware: added find_datastore_by_name helper function + workaround for vcenter self-signed certificates.\"\n  }, \n  \"17541\": {\n    \"ansible_version\": \"Ansible version 2.2\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nAnsible WINRM\\nKerberos\\n##### ANSIBLE VERSION\\n\\nAnsible version 2.2\\n##### CONFIGURATION\\n\\nansible_winrm_*\\n##### SUMMARY\\n\\nIt would be great to have support for kerberos keytabs in ansible via an environment variable or configuration directive (ansible_winrm_keytab).\\n\\nAt the moment, it is necessary to invoke kinit for kerberos autentication and is not very convenient (may cause autentication errors caused for ticket expiration, etc).\\n\", \n    \"component_name\": \"ansible winrm\", \n    \"component_raw\": \"Ansible WINRM\\nKerberos\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17541\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\", \n      \"waiting_on_contributor\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"It would be great to have support for kerberos keytabs in ansible via an\", \n    \"title\": \"Feature Idea - kerberos WINRM authentication using keytabs\"\n  }, \n  \"17547\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n- hipchat.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nAdded the v2_playbook_on_start method and modified the v2_playbook_on_play_start method.\\nv2_playbook_on_start method sets the playbook property of the CallbackModule object\\n\\n<!---\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\ncommit message and your description; but you should still explain what\\nthe change does.\\n-->\\n\\nFixes #16946\\n\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\n\\n```\\nBefore change:\\nPLAY [Staging Packages] ********************************************************\\n [WARNING]: Failure using method (v2_playbook_on_play_start) in callback plugin (</usr/lib/python2.7/site-packages/ansible/plugins/callback/hipchat.CallbackModule object at 0x31c4750>):\\n'Play' object has no attribute 'playbook'\\n\\nAfter change:\\nMessage on hipchat.\\n\\n\\n```\\n\", \n    \"component_name\": \"hipchat.py\", \n    \"component_raw\": \"- hipchat.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17547\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"affects_2.3\", \n      \"bug\", \n      \"c:plugins/callback\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Added the v2_playbook_on_start method and modified the v2_playbook_on_play_start method.\\nv2_playbook_on_start method sets the playbook property of the CallbackModule object\\n\\n\\n\\nFixes #16946\\n\\n\\n\\n```\\nBefore change:\\nPLAY [Staging Packages] ********************************************************\\n [WARNING]: Failure using method (v2_playbook_on_play_start) in callback plugin (</usr/lib/python2.7/site-packages/ansible/plugins/callback/hipchat.CallbackModule object at 0x31c4750>):\\n'Play' object has no attribute 'playbook'\\n\\nAfter change:\\nMessage on hipchat.\\n\\n\\n```\", \n    \"title\": \"Fix for Issue #16946 - hipchat plugin\"\n  }, \n  \"17552\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\ntest/validate.py\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n```\\n##### SUMMARY\\n\\nA new module to provide a set of methods for validating variables.\\n\\nThis includes the ability to:\\n- Validate variable types (bool, str, list, dict, int, float, long)\\n- Validate variables against a regex\\n- Validate Integer variables against an accepted range\\n- Accept variable values from a whitelist of acceptable values\\n- Reject variable values from a blacklist of unacceptable values\\n#### **SPECIAL NOTE**\\n- **requires `PyYAML` and `re` python modules on validating host\\n\\n```\\n# PASSING EXAMPLES\\nTASK [validate str type] **********************************************\\nok: [localhost.localdomain] => {\\\"changed\\\": false, \\\"invocation\\\": {\\\"module_args\\\": {\\\"blacklist\\\": null, \\\"delegate_to\\\": \\\"127.0.0.1\\\", \\\"input_type\\\": \\\"str\\\", \\\"matcher\\\": null, \\\"num_range\\\": null, \\\"value\\\": \\\"default_string\\\", \\\"whitelist\\\": null}, \\\"module_name\\\": \\\"validate\\\"}, \\\"msg\\\": \\\"PASS: Input value 'default_string' of: '<type 'str'>' matches validation requirement for value to be of: '<type 'str'>\\\"}\\n\\nTASK [validate list type] **********************************************\\nok: [localhost.localdomain] => {\\\"changed\\\": false, \\\"invocation\\\": {\\\"module_args\\\": {\\\"blacklist\\\": null, \\\"delegate_to\\\": \\\"127.0.0.1\\\", \\\"input_type\\\": \\\"list\\\", \\\"matcher\\\": null, \\\"num_range\\\": null, \\\"value\\\": \\\"['list_value1', 'list_value2']\\\", \\\"whitelist\\\": null}, \\\"module_name\\\": \\\"validate\\\"}, \\\"msg\\\": \\\"PASS: Input value '['list_value1', 'list_value2']' of: '<type 'list'>' matches validation requirement for value to be of: '<type 'list'>\\\"}\\n\\nTASK [validate dict type] **********************************************\\nok: [localhost.localdomain] => {\\\"changed\\\": false, \\\"invocation\\\": {\\\"module_args\\\": {\\\"blacklist\\\": null, \\\"delegate_to\\\": \\\"127.0.0.1\\\", \\\"input_type\\\": \\\"dict\\\", \\\"matcher\\\": null, \\\"num_range\\\": null, \\\"value\\\": \\\"{'dict_key1': 'dict_value1', 'dict_key2': 'dict_value2'}\\\", \\\"whitelist\\\": null}, \\\"module_name\\\": \\\"validate\\\"}, \\\"msg\\\": \\\"PASS: Input value '{'dict_key1': 'dict_value1', 'dict_key2': 'dict_value2'}' of: '<type 'dict'>' matches validation requirement for value to be of: '<type 'dict'>\\\"}\\n\\nTASK [validate integer range] **********************************************\\nok: [localhost.localdomain] => {\\\"changed\\\": false, \\\"invocation\\\": {\\\"module_args\\\": {\\\"blacklist\\\": null, \\\"input_type\\\": null, \\\"matcher\\\": null, \\\"num_range\\\": \\\"1-20\\\", \\\"value\\\": \\\"6\\\", \\\"whitelist\\\": null}, \\\"module_name\\\": \\\"validate\\\"}, \\\"msg\\\": \\\"PASS: Input value '6' is within bounds of Number Range 1-20 for validation requirement\\\"}\\n\\nTASK [validate against regex] **********************************************\\nok: [localhost.localdomain] => {\\\"changed\\\": false, \\\"invocation\\\": {\\\"module_args\\\": {\\\"blacklist\\\": null, \\\"input_type\\\": null, \\\"matcher\\\": \\\"^.*test string.*$\\\", \\\"num_range\\\": null, \\\"value\\\": \\\"test string\\\", \\\"whitelist\\\": null}, \\\"module_name\\\": \\\"validate\\\"}, \\\"msg\\\": \\\"PASS: Input value 'test string' matches validation requirement against regex: /^.*test string.*$/\\\"}\\n\\nTASK [validate against whitelist] **********************************************\\nok: [localhost.localdomain] => {\\\"changed\\\": false, \\\"invocation\\\": {\\\"module_args\\\": {\\\"blacklist\\\": null, \\\"input_type\\\": null, \\\"matcher\\\": null, \\\"num_range\\\": null, \\\"value\\\": \\\"valid\\\", \\\"whitelist\\\": [\\\"valid\\\", \\\"test\\\", \\\"yes\\\"]}, \\\"module_name\\\": \\\"validate\\\"}, \\\"msg\\\": \\\"PASS: Input value 'valid' is contained within value whitelist '['valid', 'test', 'yes']' validation requirement\\\"}\\n```\\n\\n```\\n# FAILURE EXAMPLES\\nTASK [validate against regex] **************************************************\\nfatal: [localhost.localdomain]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"FAIL: Input value 'this is a failing test' does not match validation requirement against regex: /^.*example string.*$/\\\"}\\n\\nTASK [validate user bool] ******************************************************\\nfatal: [localhost.localdomain]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"invocation\\\": {\\\"module_args\\\": {\\\"blacklist\\\": null, \\\"input_type\\\": \\\"bool\\\", \\\"matcher\\\": null, \\\"num_range\\\": null, \\\"value\\\": \\\"nope\\\", \\\"whitelist\\\": null}, \\\"module_name\\\": \\\"validate\\\"}, \\\"msg\\\": \\\"FAIL: Input value 'nope' of: '<type 'str'>' does not match validation requirement for value to be of: '<type 'bool'>\\\"}\\n\\n```\\n\", \n    \"component_name\": \"test/validate.py\", \n    \"component_raw\": \"test/validate.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17552\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/action\", \n      \"feature\", \n      \"needs_revision\", \n      \"new_plugin\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"A new module to provide a set of methods for validating variables.\\n\\nThis includes the ability to:\\n- Validate variable types (bool, str, list, dict, int, float, long)\\n- Validate variables against a regex\\n- Validate Integer variables against an accepted range\\n- Accept variable values from a whitelist of acceptable values\\n- Reject variable values from a blacklist of unacceptable values\\n#### **SPECIAL NOTE**\\n- **requires `PyYAML` and `re` python modules on validating host\\n\\n```\\n# PASSING EXAMPLES\\nTASK [validate str type] **********************************************\\nok: [localhost.localdomain] => {\\\"changed\\\": false, \\\"invocation\\\": {\\\"module_args\\\": {\\\"blacklist\\\": null, \\\"delegate_to\\\": \\\"127.0.0.1\\\", \\\"input_type\\\": \\\"str\\\", \\\"matcher\\\": null, \\\"num_range\\\": null, \\\"value\\\": \\\"default_string\\\", \\\"whitelist\\\": null}, \\\"module_name\\\": \\\"validate\\\"}, \\\"msg\\\": \\\"PASS: Input value 'default_string' of: '<type 'str'>' matches validation requirement for value to be of: '<type 'str'>\\\"}\\n\\nTASK [validate list type] **********************************************\\nok: [localhost.localdomain] => {\\\"changed\\\": false, \\\"invocation\\\": {\\\"module_args\\\": {\\\"blacklist\\\": null, \\\"delegate_to\\\": \\\"127.0.0.1\\\", \\\"input_type\\\": \\\"list\\\", \\\"matcher\\\": null, \\\"num_range\\\": null, \\\"value\\\": \\\"['list_value1', 'list_value2']\\\", \\\"whitelist\\\": null}, \\\"module_name\\\": \\\"validate\\\"}, \\\"msg\\\": \\\"PASS: Input value '['list_value1', 'list_value2']' of: '<type 'list'>' matches validation requirement for value to be of: '<type 'list'>\\\"}\\n\\nTASK [validate dict type] **********************************************\\nok: [localhost.localdomain] => {\\\"changed\\\": false, \\\"invocation\\\": {\\\"module_args\\\": {\\\"blacklist\\\": null, \\\"delegate_to\\\": \\\"127.0.0.1\\\", \\\"input_type\\\": \\\"dict\\\", \\\"matcher\\\": null, \\\"num_range\\\": null, \\\"value\\\": \\\"{'dict_key1': 'dict_value1', 'dict_key2': 'dict_value2'}\\\", \\\"whitelist\\\": null}, \\\"module_name\\\": \\\"validate\\\"}, \\\"msg\\\": \\\"PASS: Input value '{'dict_key1': 'dict_value1', 'dict_key2': 'dict_value2'}' of: '<type 'dict'>' matches validation requirement for value to be of: '<type 'dict'>\\\"}\\n\\nTASK [validate integer range] **********************************************\\nok: [localhost.localdomain] => {\\\"changed\\\": false, \\\"invocation\\\": {\\\"module_args\\\": {\\\"blacklist\\\": null, \\\"input_type\\\": null, \\\"matcher\\\": null, \\\"num_range\\\": \\\"1-20\\\", \\\"value\\\": \\\"6\\\", \\\"whitelist\\\": null}, \\\"module_name\\\": \\\"validate\\\"}, \\\"msg\\\": \\\"PASS: Input value '6' is within bounds of Number Range 1-20 for validation requirement\\\"}\\n\\nTASK [validate against regex] **********************************************\\nok: [localhost.localdomain] => {\\\"changed\\\": false, \\\"invocation\\\": {\\\"module_args\\\": {\\\"blacklist\\\": null, \\\"input_type\\\": null, \\\"matcher\\\": \\\"^.*test string.*$\\\", \\\"num_range\\\": null, \\\"value\\\": \\\"test string\\\", \\\"whitelist\\\": null}, \\\"module_name\\\": \\\"validate\\\"}, \\\"msg\\\": \\\"PASS: Input value 'test string' matches validation requirement against regex: /^.*test string.*$/\\\"}\\n\\nTASK [validate against whitelist] **********************************************\\nok: [localhost.localdomain] => {\\\"changed\\\": false, \\\"invocation\\\": {\\\"module_args\\\": {\\\"blacklist\\\": null, \\\"input_type\\\": null, \\\"matcher\\\": null, \\\"num_range\\\": null, \\\"value\\\": \\\"valid\\\", \\\"whitelist\\\": [\\\"valid\\\", \\\"test\\\", \\\"yes\\\"]}, \\\"module_name\\\": \\\"validate\\\"}, \\\"msg\\\": \\\"PASS: Input value 'valid' is contained within value whitelist '['valid', 'test', 'yes']' validation requirement\\\"}\\n```\\n\\n```\\n# FAILURE EXAMPLES\\nTASK [validate against regex] **************************************************\\nfatal: [localhost.localdomain]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"FAIL: Input value 'this is a failing test' does not match validation requirement against regex: /^.*example string.*$/\\\"}\\n\\nTASK [validate user bool] ******************************************************\\nfatal: [localhost.localdomain]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"invocation\\\": {\\\"module_args\\\": {\\\"blacklist\\\": null, \\\"input_type\\\": \\\"bool\\\", \\\"matcher\\\": null, \\\"num_range\\\": null, \\\"value\\\": \\\"nope\\\", \\\"whitelist\\\": null}, \\\"module_name\\\": \\\"validate\\\"}, \\\"msg\\\": \\\"FAIL: Input value 'nope' of: '<type 'str'>' does not match validation requirement for value to be of: '<type 'bool'>\\\"}\\n\\n```\", \n    \"title\": \"initial 1.0 version of validate plugin to provide a set of methods for variable validation\"\n  }, \n  \"17555\": {\n    \"ansible_version\": \"ansible 2.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\\nHash  https//github.com/ansible/ansible/commit/da4c3ebeac4477850b42b780c8dbf8a469ca9499\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\n`ec2.py`\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n\\nHash:  https://github.com/ansible/ansible/commit/da4c3ebeac4477850b42b780c8dbf8a469ca9499\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nFedora 24\\nPython 2.7.12 clean virtualenv \\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\n`ec2.py`  : https://raw.github.com/ansible/ansible/devel/contrib/inventory/ec2.py    \\n\\nUsed to only require `boto`, but fails now with: \\n\\n```\\nTraceback (most recent call last):\\n  File \\\"./ec2.py\\\", line 134, in <module>\\n    from ansible.module_utils import ec2 as ec2_utils\\n  File \\\"/home/xenith/virtualenvs/ansible/lib/python2.7/site-packages/ansible/module_utils/ec2.py\\\", line 61, in <module>\\n    class AWSRetry(CloudRetry):\\n  File \\\"/home/xenith/virtualenvs/ansible/lib/python2.7/site-packages/ansible/module_utils/ec2.py\\\", line 62, in AWSRetry\\n    base_class = botocore.exceptions.ClientError\\nNameError: name 'botocore' is not defined\\n```\\n\\nWhich I believe is a bug because it doesn't really tell the user what's wrong. Especially because this **only happens if the user is testing `devel` branch.** It works without error (and with the previous version of boto) with ansible `2.1.1`\\n\\nAdditionally, if the user removes `boto` and only installs `boto3` - it still fails: \\n\\n```\\nTraceback (most recent call last):\\n  File \\\"./ec2.py\\\", line 127, in <module>\\n    import boto\\nImportError: No module named boto\\n```\\n\\nIf the user installs both `boto` AND `boto3` it works fine.\\n\\nWhat I find strange about this is that the script fails based on the version of ansible. \\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n``` bash\\nvirtualenv ansible\\n. ./ansible/bin/activate\\npip install ansible boto\\nwget https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/ec2.ini \\nwget https://raw.github.com/ansible/ansible/devel/contrib/inventory/ec2.py\\npython ec2.py\\n```\\n\\nOR\\n\\n``` bash\\nvirtualenv ansible\\n. ./ansible/bin/activate\\n# pip install ansible boto boto3 works!\\npip install ansible boto3\\nwget https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/ec2.ini \\nwget https://raw.github.com/ansible/ansible/devel/contrib/inventory/ec2.py\\npython ec2.py\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nec2.py should announce that either: \\n1. It needs boto3 to function properly (which it currently does) OR\\n2. Fail back to actually using boto (not boto3) when it's not available\\n\", \n    \"component_name\": \"ec2.py\", \n    \"component_raw\": \"`ec2.py`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17555\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2.py\", \n    \"summary\": \"`ec2.py`  : https://raw.github.com/ansible/ansible/devel/contrib/inventory/ec2.py    \\n\\nUsed to only require `boto`, but fails now with: \\n\\n```\\nTraceback (most recent call last):\\n  File \\\"./ec2.py\\\", line 134, in <module>\\n    from ansible.module_utils import ec2 as ec2_utils\\n  File \\\"/home/xenith/virtualenvs/ansible/lib/python2.7/site-packages/ansible/module_utils/ec2.py\\\", line 61, in <module>\\n    class AWSRetry(CloudRetry):\\n  File \\\"/home/xenith/virtualenvs/ansible/lib/python2.7/site-packages/ansible/module_utils/ec2.py\\\", line 62, in AWSRetry\\n    base_class = botocore.exceptions.ClientError\\nNameError: name 'botocore' is not defined\\n```\\n\\nWhich I believe is a bug because it doesn't really tell the user what's wrong. Especially because this **only happens if the user is testing `devel` branch.** It works without error (and with the previous version of boto) with ansible `2.1.1`\\n\\nAdditionally, if the user removes `boto` and only installs `boto3` - it still fails: \\n\\n```\\nTraceback (most recent call last):\\n  File \\\"./ec2.py\\\", line 127, in <module>\\n    import boto\\nImportError: No module named boto\\n```\\n\\nIf the user installs both `boto` AND `boto3` it works fine.\\n\\nWhat I find strange about this is that the script fails based on the version of ansible.\", \n    \"title\": \"ec2.py fails with - NameError: name 'botocore' is not defined - on devel\"\n  }, \n  \"17562\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\ncore\\n##### SUMMARY\\n\\nEnable top level vars and defaults files to be \\\"included\\\" automatically. If you have the following:\\n`\\nrole/\\n  bob/\\n    defaults/\\n      vault_password.yml\\n`\\nyou would have to `include_vars: ../defaults/vault_password.yml` in your tasks file. With this change you won't have to. It ONLY sucks in files at the first level.\\n\\nWARNING:\\n\\nThis COULD be \\\"breaking\\\" for people who include different vars based on variables in the top level vars dirs. \\n\", \n    \"component_name\": \"core\", \n    \"component_raw\": \"core\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17562\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Enable top level vars and defaults files to be \\\"included\\\" automatically. If you have the following:\\n`\\nrole/\\n  bob/\\n    defaults/\\n      vault_password.yml\\n`\\nyou would have to `include_vars: ../defaults/vault_password.yml` in your tasks file. With this change you won't have to. It ONLY sucks in files at the first level.\\n\\nWARNING:\\n\\nThis COULD be \\\"breaking\\\" for people who include different vars based on variables in the top level vars dirs.\", \n    \"title\": \"Treat vars/ and defaults/ in roles like group_vars/ by slurping in al\\u2026\"\n  }, \n  \"17580\": {\n    \"ansible_version\": \"ansible 2.2.0 (detached HEAD 6787fc70a6) last updated 2016/09/14 145245 (GMT -700)\\nlib/ansible/modules/core (detached HEAD db5cb54b23) last updated 2016/09/08 142522 (GMT -700)\\nlib/ansible/modules/extras (load-balancer-rewrite 0f3df9a68f) last updated 2016/09/13 155235 (GMT -700)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\nFeature Pull Request\\n##### COMPONENT NAME\\n\\nN/A\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0 (detached HEAD 6787fc70a6) last updated 2016/09/14 14:52:45 (GMT -700)\\n  lib/ansible/modules/core: (detached HEAD db5cb54b23) last updated 2016/09/08 14:25:22 (GMT -700)\\n  lib/ansible/modules/extras: (load-balancer-rewrite 0f3df9a68f) last updated 2016/09/13 15:52:35 (GMT -700)\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nThis change adds a new class called AnsibleModuleFSM which is built on top of AnsibleModule via composition (not inheritance). The main advantage of using this class is that a module developer can now write modules as state machines which can be easier to manage especially for those that have a complex decision tree.\\n##### RATIONALE\\n\\nNon-interactive code with decision trees that range from mid to high complexity becomes hard to\\nmanage very quickly if implemented using procedural methods (if conditions). Take for example this part of the `ec2_customer_gateway` module:\\n\\n``` python\\nif module.params['state'] == 'present':\\n    if existing['CustomerGateways']:\\n        results['gateway']=existing\\n        if existing['CustomerGateways'][0]['Tags']:\\n            tag_array = existing['CustomerGateways'][0]['Tags']\\n            for key, value in enumerate(tag_array):\\n                if value['Key'] == 'Name':\\n                    current_name = value['Value']\\n                    if current_name != name:\\n                        results['name'] = gw_mgr.tag_cgw_name(\\n                            results['gateway']['CustomerGateways'][0]['CustomerGatewayId'],\\n                            module.params['name'],\\n                        )\\n                        results['changed'] = True\\n    else:\\n        if not module.check_mode:\\n            results['gateway'] = gw_mgr.ensure_cgw_present(\\n                module.params['bgp_asn'],\\n                module.params['ip_address'],\\n            )\\n            results['name'] = gw_mgr.tag_cgw_name(\\n                results['gateway']['CustomerGateway']['CustomerGatewayId'],\\n                module.params['name'],\\n            )\\n        results['changed'] = True\\n\\nelif module.params['state'] == 'absent':\\n    if existing['CustomerGateways']:\\n        results['gateway']=existing\\n        if not module.check_mode:\\n            results['gateway'] = gw_mgr.ensure_cgw_absent(\\n                existing['CustomerGateways'][0]['CustomerGatewayId']\\n            )\\n        results['changed'] = True\\n```\\n\\nNote the 5 layers of if conditions with two of them belonging inside a for loop. If one or more parts of this behavior were to change, the developer would need to be very careful to ensure that a change in one or more conditions/variables doesn't affect any other part unintentionally since there's no way to scope variables within a single if condition.\\n\\nOther modules get around this problem by moving some parts of the code to their own function. While that solves the deeply-nested-if problem, it introduces another complexity in that a developer will have to scroll up and down the module's code to understand its workflow.\\n\\nThis change addresses both problems by providing a means for the module developer to implement a module using state machines. Using state machines allows the developer to avoid deeply-nested if conditions while still keeping the workflow information in a single place.\\n##### SAMPLE USAGE\\n\\nUsing this feature is a matter of using the AnsibleModuleFSM class instead of AnsibleModule. The former accepts the same arguments as the latter plus two additional keyword args, `state_machine` and `render_path`.\\n\\n``` python\\n#!/usr/bin/env python\\n# Note the additional imports, create_events and create_states.\\n# These are optional helper functions that allow you to define\\n# more descriptive events and states without too much boilerplate.\\nfrom ansible.module_utils.basic import AnsibleModuleFSM, create_events, create_states\\n\\n# Use create_states to define descriptive state names/values.\\n# The following allows us to, for example, use S.initializing\\n# in our code below.\\nS = create_states('choosing_action',\\n                  'creating',\\n                  'deleting',\\n                  'exiting',\\n                  'initializing',\\n                  'getting',\\n                  'waiting')\\n\\n# This allows us to define descriptive event names/values\\nE = create_events('create_started',\\n                  'delete_started',\\n                  'initialized',\\n                  'exited',\\n                  'found',\\n                  'not_found',\\n                  'must_wait',\\n                  'must_create',\\n                  'must_delete',\\n                  'must_exit')\\ndef main():\\n    # Define the module's transitions. Note how we are using the\\n    # states and events we defined above.\\n    #\\n    # Note how we pass in functions such as get_obj, choose_action,\\n    # create_obj, etc. You will find the definition of these\\n    # functions further down this example.\\n    #\\n    # The dict's structure is:\\n    #    (CURRENT_STATE, EVENT): (NEW_STATE, ENTRY_ACTION)\\n    #\\n    # The state machine purposely doesn't support exit actions to\\n    # keep its implementation simple.\\n    transitions = {\\n        (S.initializing, E.initialized):    (S.getting, get_obj),\\n        (S.getting, E.found):               (S.choosing_action, choose_action),\\n        (S.getting, E.not_found):           (S.choosing_action, choose_action),\\n        (S.choosing_action, E.must_create): (S.creating, create_obj),\\n        (S.choosing_action, E.must_delete): (S.deleting, delete_obj),\\n        (S.choosing_action, E.must_exit):   (S.exiting, exit_now),\\n        (S.creating, E.create_started):     (S.waiting, wait),\\n        (S.deleting, E.delete_started):     (S.waiting, wait),\\n        (S.waiting, E.must_wait):           (S.waiting, wait),\\n        (S.waiting, E.must_exit):           (S.exiting, exit_now)\\n    }\\n\\n    # Instantiate the object.\\n    AnsibleModuleFSM(\\n        # Uncomment this argument to make the module render\\n        # the state diagram and exit immediately. The file\\n        # extension will be appended automatically.\\n        # render_path=\\\"/tmp/mymodule\\\",\\n\\n        state_machine=dict(\\n            starting_state=S.initializing,\\n            starting_action=initialize,\\n            exit_event=E.exited,\\n            transitions=transitions\\n        ),\\n\\n        argument_spec=dict(\\n            module_arg1=dict(required=True, type='str'),\\n            module_arg2=dict(required=False, default=100, type='int')\\n        )\\n    )\\n\\n    # No further code is needed in `main()`. The AnsibleModuleFSM object\\n    # will call the functions/actions below in proper order until the exit_event\\n    # is returned or `fail_json` or `exit_json` is called.\\n\\n# =======\\n# ACTIONS\\n# =======\\n\\ndef create_obj(module, data):\\n    #\\n    # Do stuff here\\n    #\\n    # The `module` argument is a standard AnsibleModule object\\n    # while `data` is a standard dict that gets passed from one function\\n    # to another as the state machine progresses through the transitions.\\n    #\\n    return E.create_started, data\\n\\ndef delete_obj(module, data):\\n    #\\n    # Do stuff here\\n    #\\n    return E.delete_started, data\\n\\ndef choose_action(module, data):\\n    if data['some_key'] == 'value1':\\n        event = E.must_create\\n    elif data['some_key'] == 'value2':\\n        event = E.must_delete\\n    else:\\n        event = E.must_exit\\n\\n    return event, data\\n\\ndef exit_now(module, data):\\n    #\\n    # Do stuff here\\n    #\\n    module.exit_json(msg=\\\"Done with the thing.\\\")\\n\\ndef get_obj(module, data):\\n    data['some_key'] = 'value1'\\n    return E.found, data\\n\\ndef initialize(module, data):\\n    #\\n    # Do stuff here\\n    #\\n    return E.initialized, data\\n\\ndef wait(module, data):\\n    #\\n    # Do stuff here\\n    #\\n    return E.must_exit, data\\n\\n# ======\\n\\nif __name__ == '__main__':\\n    main()\\n```\\n\\nFor more information on AnsibleModuleFSM, please see its docstring documentation.\\n##### AUTOGENERATED STATE CHART\\n\\nBy uncommenting the `render_path=\\\"/tmp/mymodule\\\"` keyword argument in the example above and executing the module (via `$ hacking/test-module -m path/to/mymodule.py -a \\\"module_arg1='something'\\\"` or via the normal playbook way), a chart is automatically rendered (provided that graphviz is installed). The following image is an actual rendering generated by the above code:\\n\\n![](https://dl.dropboxusercontent.com/u/1355795/mymodule.png)\\n\\nNote that if the `render_path` argument is set, the module will always fail immediately after rendering the chart. This is so that the developer will not accidentally release a module with the rendering enabled since this can negatively impact module performance.\\n###### ADVANTAGES OF CHANGE\\n- State machines are excellent for modules that have complex decision trees that would otherwise have to be implemented with multiple nested if conditions;\\n- Separates workflow from action implementation. The workflow is clearly stated in the transition table whereas the action implementations are defined in their own functions;\\n- Auto-generation of state diagram which is also very useful for debugging/understanding the internals of complex modules.\\n- Encapsulates all state-machine-related boilerplate code so that modules that do want to use a state machine are as DRY as possible.\\n\", \n    \"component_name\": \"n/a\", \n    \"component_raw\": \"N/A\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17580\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"c:module_utils/basic\", \n      \"feature\", \n      \"module_util\", \n      \"needs_revision\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This change adds a new class called AnsibleModuleFSM which is built on top of AnsibleModule via composition (not inheritance). The main advantage of using this class is that a module developer can now write modules as state machines which can be easier to manage especially for those that have a complex decision tree.\\n##### RATIONALE\\n\\nNon-interactive code with decision trees that range from mid to high complexity becomes hard to\\nmanage very quickly if implemented using procedural methods (if conditions). Take for example this part of the `ec2_customer_gateway` module:\\n\\n``` python\\nif module.params['state'] == 'present':\\n    if existing['CustomerGateways']:\\n        results['gateway']=existing\\n        if existing['CustomerGateways'][0]['Tags']:\\n            tag_array = existing['CustomerGateways'][0]['Tags']\\n            for key, value in enumerate(tag_array):\\n                if value['Key'] == 'Name':\\n                    current_name = value['Value']\\n                    if current_name != name:\\n                        results['name'] = gw_mgr.tag_cgw_name(\\n                            results['gateway']['CustomerGateways'][0]['CustomerGatewayId'],\\n                            module.params['name'],\\n                        )\\n                        results['changed'] = True\\n    else:\\n        if not module.check_mode:\\n            results['gateway'] = gw_mgr.ensure_cgw_present(\\n                module.params['bgp_asn'],\\n                module.params['ip_address'],\\n            )\\n            results['name'] = gw_mgr.tag_cgw_name(\\n                results['gateway']['CustomerGateway']['CustomerGatewayId'],\\n                module.params['name'],\\n            )\\n        results['changed'] = True\\n\\nelif module.params['state'] == 'absent':\\n    if existing['CustomerGateways']:\\n        results['gateway']=existing\\n        if not module.check_mode:\\n            results['gateway'] = gw_mgr.ensure_cgw_absent(\\n                existing['CustomerGateways'][0]['CustomerGatewayId']\\n            )\\n        results['changed'] = True\\n```\\n\\nNote the 5 layers of if conditions with two of them belonging inside a for loop. If one or more parts of this behavior were to change, the developer would need to be very careful to ensure that a change in one or more conditions/variables doesn't affect any other part unintentionally since there's no way to scope variables within a single if condition.\\n\\nOther modules get around this problem by moving some parts of the code to their own function. While that solves the deeply-nested-if problem, it introduces another complexity in that a developer will have to scroll up and down the module's code to understand its workflow.\\n\\nThis change addresses both problems by providing a means for the module developer to implement a module using state machines. Using state machines allows the developer to avoid deeply-nested if conditions while still keeping the workflow information in a single place.\\n##### SAMPLE USAGE\\n\\nUsing this feature is a matter of using the AnsibleModuleFSM class instead of AnsibleModule. The former accepts the same arguments as the latter plus two additional keyword args, `state_machine` and `render_path`.\\n\\n``` python\\n#!/usr/bin/env python\\n# Note the additional imports, create_events and create_states.\\n# These are optional helper functions that allow you to define\\n# more descriptive events and states without too much boilerplate.\\nfrom ansible.module_utils.basic import AnsibleModuleFSM, create_events, create_states\\n\\n# Use create_states to define descriptive state names/values.\\n# The following allows us to, for example, use S.initializing\\n# in our code below.\\nS = create_states('choosing_action',\\n                  'creating',\\n                  'deleting',\\n                  'exiting',\\n                  'initializing',\\n                  'getting',\\n                  'waiting')\\n\\n# This allows us to define descriptive event names/values\\nE = create_events('create_started',\\n                  'delete_started',\\n                  'initialized',\\n                  'exited',\\n                  'found',\\n                  'not_found',\\n                  'must_wait',\\n                  'must_create',\\n                  'must_delete',\\n                  'must_exit')\\ndef main():\\n    # Define the module's transitions. Note how we are using the\\n    # states and events we defined above.\\n    #\\n    # Note how we pass in functions such as get_obj, choose_action,\\n    # create_obj, etc. You will find the definition of these\\n    # functions further down this example.\\n    #\\n    # The dict's structure is:\\n    #    (CURRENT_STATE, EVENT): (NEW_STATE, ENTRY_ACTION)\\n    #\\n    # The state machine purposely doesn't support exit actions to\\n    # keep its implementation simple.\\n    transitions = {\\n        (S.initializing, E.initialized):    (S.getting, get_obj),\\n        (S.getting, E.found):               (S.choosing_action, choose_action),\\n        (S.getting, E.not_found):           (S.choosing_action, choose_action),\\n        (S.choosing_action, E.must_create): (S.creating, create_obj),\\n        (S.choosing_action, E.must_delete): (S.deleting, delete_obj),\\n        (S.choosing_action, E.must_exit):   (S.exiting, exit_now),\\n        (S.creating, E.create_started):     (S.waiting, wait),\\n        (S.deleting, E.delete_started):     (S.waiting, wait),\\n        (S.waiting, E.must_wait):           (S.waiting, wait),\\n        (S.waiting, E.must_exit):           (S.exiting, exit_now)\\n    }\\n\\n    # Instantiate the object.\\n    AnsibleModuleFSM(\\n        # Uncomment this argument to make the module render\\n        # the state diagram and exit immediately. The file\\n        # extension will be appended automatically.\\n        # render_path=\\\"/tmp/mymodule\\\",\\n\\n        state_machine=dict(\\n            starting_state=S.initializing,\\n            starting_action=initialize,\\n            exit_event=E.exited,\\n            transitions=transitions\\n        ),\\n\\n        argument_spec=dict(\\n            module_arg1=dict(required=True, type='str'),\\n            module_arg2=dict(required=False, default=100, type='int')\\n        )\\n    )\\n\\n    # No further code is needed in `main()`. The AnsibleModuleFSM object\\n    # will call the functions/actions below in proper order until the exit_event\\n    # is returned or `fail_json` or `exit_json` is called.\\n\\n# =======\\n# ACTIONS\\n# =======\\n\\ndef create_obj(module, data):\\n    #\\n    # Do stuff here\\n    #\\n    # The `module` argument is a standard AnsibleModule object\\n    # while `data` is a standard dict that gets passed from one function\\n    # to another as the state machine progresses through the transitions.\\n    #\\n    return E.create_started, data\\n\\ndef delete_obj(module, data):\\n    #\\n    # Do stuff here\\n    #\\n    return E.delete_started, data\\n\\ndef choose_action(module, data):\\n    if data['some_key'] == 'value1':\\n        event = E.must_create\\n    elif data['some_key'] == 'value2':\\n        event = E.must_delete\\n    else:\\n        event = E.must_exit\\n\\n    return event, data\\n\\ndef exit_now(module, data):\\n    #\\n    # Do stuff here\\n    #\\n    module.exit_json(msg=\\\"Done with the thing.\\\")\\n\\ndef get_obj(module, data):\\n    data['some_key'] = 'value1'\\n    return E.found, data\\n\\ndef initialize(module, data):\\n    #\\n    # Do stuff here\\n    #\\n    return E.initialized, data\\n\\ndef wait(module, data):\\n    #\\n    # Do stuff here\\n    #\\n    return E.must_exit, data\\n\\n# ======\\n\\nif __name__ == '__main__':\\n    main()\\n```\\n\\nFor more information on AnsibleModuleFSM, please see its docstring documentation.\\n##### AUTOGENERATED STATE CHART\\n\\nBy uncommenting the `render_path=\\\"/tmp/mymodule\\\"` keyword argument in the example above and executing the module (via `$ hacking/test-module -m path/to/mymodule.py -a \\\"module_arg1='something'\\\"` or via the normal playbook way), a chart is automatically rendered (provided that graphviz is installed). The following image is an actual rendering generated by the above code:\\n\\n![](https://dl.dropboxusercontent.com/u/1355795/mymodule.png)\\n\\nNote that if the `render_path` argument is set, the module will always fail immediately after rendering the chart. This is so that the developer will not accidentally release a module with the rendering enabled since this can negatively impact module performance.\\n###### ADVANTAGES OF CHANGE\\n- State machines are excellent for modules that have complex decision trees that would otherwise have to be implemented with multiple nested if conditions;\\n- Separates workflow from action implementation. The workflow is clearly stated in the transition table whereas the action implementations are defined in their own functions;\\n- Auto-generation of state diagram which is also very useful for debugging/understanding the internals of complex modules.\\n- Encapsulates all state-machine-related boilerplate code so that modules that do want to use a state machine are as DRY as possible.\", \n    \"title\": \"Add state machine capabilities for use by modules\"\n  }, \n  \"17583\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /Users/boost/Projects/ansible/stack/ansible.cfg\\nconfigured module search path = [../common/library]\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nbecome\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n  config file = /Users/boost/Projects/ansible/stack/ansible.cfg\\n  configured module search path = ['../common/library']\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nSometimes you want to only switch to privileged user when a change is needed. For example yum can check if the package is present as a non-privileged user and only when a change is needed would  we need to escalate.\\n\\nSo a become_on_change: true option\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\n\\n```\\n\", \n    \"component_name\": \"become\", \n    \"component_raw\": \"become\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17583\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Sometimes you want to only switch to privileged user when a change is needed. For example yum can check if the package is present as a non-privileged user and only when a change is needed would  we need to escalate.\\n\\nSo a become_on_change: true option\", \n    \"title\": \"Sudo on change\"\n  }, \n  \"17587\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel 70e63ddf6c) last updated 2016/09/15 091753 (GMT -300)\\nlib/ansible/modules/core (detached HEAD 683e5e4d1a) last updated 2016/09/14 213736 (GMT -300)\\nlib/ansible/modules/extras (detached HEAD 8749c40fee) last updated 2016/09/14 213737 (GMT -300)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nmodule_utils\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0 (devel 70e63ddf6c) last updated 2016/09/15 09:17:53 (GMT -300)\\n  lib/ansible/modules/core: (detached HEAD 683e5e4d1a) last updated 2016/09/14 21:37:36 (GMT -300)\\n  lib/ansible/modules/extras: (detached HEAD 8749c40fee) last updated 2016/09/14 21:37:37 (GMT -300)\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nWhile trying to add SmartOS support to `hostname`, we encountered that distribution will always be set to `None` meaning flavors of SunOS (SmartOS, Illumos, OmniOS, etc) won't be recognized and available through modules.\\n##### STEPS TO REPRODUCE\\n\\nSee parent issue/PR: https://github.com/ansible/ansible-modules-core/pull/4811\\n\\nComment of discovery:\\nhttps://github.com/ansible/ansible-modules-core/pull/4811#issuecomment-247079999\\n##### EXPECTED RESULTS\\n\\n`get_distribution()` should in this case return `SmartOS`.\\n##### ACTUAL RESULTS\\n\\nIt returns `None`.\\n\", \n    \"component_name\": \"module_utils\", \n    \"component_raw\": \"module_utils\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17587\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"While trying to add SmartOS support to `hostname`, we encountered that distribution will always be set to `None` meaning flavors of SunOS (SmartOS, Illumos, OmniOS, etc) won't be recognized and available through modules.\", \n    \"title\": \"get_distribution() should expose all distributions, not just Linux\"\n  }, \n  \"17592\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Docs Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\nPython API\\nDataLoader\\nansible-vault\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.0.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n# set_vault_password must be set using DataLoader. ansible-vault fails to decrypt vaulted files\\n# if \\\"passwords = dict('vault_pass'='secret') is used (even if 'secret' is the correct vault password).\\n\\nloader = DataLoader()\\nloader.set_vault_password('secret')\\n\\n<!---\\nN/A\\n-->\\n\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\n\\n```\\nBefore:\\nPLAY [localhost] ***************************************************************\\n\\nTASK [buildhp : include_vars] **************************************************\\nfatal: [localhost]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"Decryption failed\\\"}\\n\\nNO MORE HOSTS LEFT *************************************************************\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=0    changed=0    unreachable=0    failed=1\\n\\n[1:02]  \\nAfter:\\nPLAY [localhost] ***************************************************************\\n\\nTASK [buildhp : include_vars] **************************************************\\nok: [localhost]\\n\\nTASK [buildhp : include] *******************************************************\\nincluded: /u/applic/roles/buildhp/tasks/dbupdate.yml for localhost\\n\\nTASK [buildhp : Get sysinfo from ansibletest1, via RedFish REST API] ***********\\nok: [localhost]\\n\\nTASK [buildhp : set_fact] ******************************************************\\nok: [localhost]\\n\\nTASK [buildhp : output sysinfo of ansibletest1] ********************************\\nok: [localhost] => {\\n   \\\"sysinfo.json\\\": {\\n       \\\"data\\\": \\\"redacted\\\"\\n}\\n\\nTASK [buildhp : Add data to DB] ************************************************\\nok: [localhost]\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=6    changed=0    unreachable=0    failed=0\\n\\n```\\n\", \n    \"component_name\": \"python api\", \n    \"component_raw\": \"Python API\\nDataLoader\\nansible-vault\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17592\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"# set_vault_password must be set using DataLoader. ansible-vault fails to decrypt vaulted files\\n# if \\\"passwords = dict('vault_pass'='secret') is used (even if 'secret' is the correct vault password).\\n\\nloader = DataLoader()\\nloader.set_vault_password('secret')\\n\\n\\n\\n\\n\\n```\\nBefore:\\nPLAY [localhost] ***************************************************************\\n\\nTASK [buildhp : include_vars] **************************************************\\nfatal: [localhost]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"Decryption failed\\\"}\\n\\nNO MORE HOSTS LEFT *************************************************************\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=0    changed=0    unreachable=0    failed=1\\n\\n[1:02]  \\nAfter:\\nPLAY [localhost] ***************************************************************\\n\\nTASK [buildhp : include_vars] **************************************************\\nok: [localhost]\\n\\nTASK [buildhp : include] *******************************************************\\nincluded: /u/applic/roles/buildhp/tasks/dbupdate.yml for localhost\\n\\nTASK [buildhp : Get sysinfo from ansibletest1, via RedFish REST API] ***********\\nok: [localhost]\\n\\nTASK [buildhp : set_fact] ******************************************************\\nok: [localhost]\\n\\nTASK [buildhp : output sysinfo of ansibletest1] ********************************\\nok: [localhost] => {\\n   \\\"sysinfo.json\\\": {\\n       \\\"data\\\": \\\"redacted\\\"\\n}\\n\\nTASK [buildhp : Add data to DB] ************************************************\\nok: [localhost]\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=6    changed=0    unreachable=0    failed=0\\n\\n```\", \n    \"title\": \"developing_api.rst\"\n  }, \n  \"17594\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /home/lmadsen/src/github/leifmadsen/ansible-cira/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nparsing/quoting.py\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n  config file = /home/lmadsen/src/github/leifmadsen/ansible-cira/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n```\\n[defaults]\\nroles_path = ./roles\\ngathering = smart\\nfact_caching = jsonfile\\nfact_caching_connection = ~/.ansible/cachedir\\nfact_caching_timeout = 86400\\nhost_key_checking = False\\ninventory = ./hosts/\\n\\n[ssh_connection]\\nssh_args = -o ControlMaster=auto -o ControlPersist=300s -o ForwardAgent=yes\\n```\\n##### OS / ENVIRONMENT\\n\\nFedora 24\\n##### SUMMARY\\n\\nWhen failing to provide a `tasks:` value about a named play, `ERROR! Unexpected Exception: 0` is returned.\\n##### STEPS TO REPRODUCE\\n\\nFail to provide a `tasks:` header above a named play.\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n# vim: ft=ansible                                                               \\n---                                                                             \\n- hosts: jenkins_master                                                         \\n  tags:                                                                         \\n    - jenkins_master                                                            \\n    - jenkins_ssh                                                               \\n\\n  vars_files:                                                                   \\n    - \\\"{{ inventory_dir  }}/../vars/main.yml\\\"                                   \\n    - ~/.ansible/vars/cira_vars.yml                                             \\n\\n    - name: Create Jenkins user .ssh directory                                  \\n      file:                                                                     \\n        path: \\\"{{ jenkins_master_ssh_directory }}\\\"                              \\n        state: directory                                                        \\n        owner: jenkins                                                          \\n        group: jenkins                                                          \\n        mode: \\\"0700\\\"\\n```\\n\\n_Note_ the missing `tasks:` above `- name: Create...`\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nAnsible to nicely exit pointing to line in file that couldn't be parsed appropriately.\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\nAnsible crashes and outputs information that isn't overly helpful to narrowing down where the parsing error happened in the file.\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nansible-playbook -vvv --syntax-check jenkins_ssh.yml \\nUsing /home/lmadsen/src/github/leifmadsen/ansible-cira/ansible.cfg as config file\\n1 plays in jenkins_ssh.yml\\nERROR! Unexpected Exception: 0\\nthe full traceback was:\\n\\nTraceback (most recent call last):\\n  File \\\"/usr/bin/ansible-playbook\\\", line 86, in <module>\\n    sys.exit(cli.run())\\n  File \\\"/home/lmadsen/.local/lib/python2.7/site-packages/ansible/cli/playbook.py\\\", line 154, in run\\n    results = pbex.run()\\n  File \\\"/home/lmadsen/.local/lib/python2.7/site-packages/ansible/executor/playbook_executor.py\\\", line 117, in run\\n    all_vars = self._variable_manager.get_vars(loader=self._loader, play=play)\\n  File \\\"/home/lmadsen/.local/lib/python2.7/site-packages/ansible/vars/__init__.py\\\", line 305, in get_vars\\n    data = preprocess_vars(loader.load_from_file(vars_file))\\n  File \\\"/home/lmadsen/.local/lib/python2.7/site-packages/ansible/parsing/dataloader.py\\\", line 105, in load_from_file\\n    file_name = self.path_dwim(file_name)\\n  File \\\"/home/lmadsen/.local/lib/python2.7/site-packages/ansible/parsing/dataloader.py\\\", line 212, in path_dwim\\n    given = unquote(given)\\n  File \\\"/home/lmadsen/.local/lib/python2.7/site-packages/ansible/parsing/quoting.py\\\", line 28, in unquote\\n    if is_quoted(data):\\n  File \\\"/home/lmadsen/.local/lib/python2.7/site-packages/ansible/parsing/quoting.py\\\", line 24, in is_quoted\\n    return len(data) > 1 and data[0] == data[-1] and data[0] in ('\\\"', \\\"'\\\") and data[-2] != '\\\\\\\\'\\nKeyError: 0\\n```\\n\", \n    \"component_name\": \"parsing/quoting.py\", \n    \"component_raw\": \"parsing/quoting.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17594\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When failing to provide a `tasks:` value about a named play, `ERROR! Unexpected Exception: 0` is returned.\", \n    \"title\": \"Parsing error results in ERROR! Unexpected Exception: 0\"\n  }, \n  \"17598\": {\n    \"ansible_version\": \"ansible 2.2.0 (minimal_better_ssh_failures 6b5627ad93) last updated 2016/09/15 170500 (GMT -400)\\nlib/ansible/modules/core (detached HEAD 48d932643b) last updated 2016/09/15 170115 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD aa45bd8a94) last updated 2016/09/15 170115 (GMT -400)\\nconfig file = /home/adrian/ansible/ansible.cfg\\nconfigured module search path = [/home/adrian/src/ansible-modules-core /home/adrian/src/ansible-modules-extras]\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\nlib/ansible/plugins/connection/ssh.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0 (minimal_better_ssh_failures 6b5627ad93) last updated 2016/09/15 17:05:00 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD 48d932643b) last updated 2016/09/15 17:01:15 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD aa45bd8a94) last updated 2016/09/15 17:01:15 (GMT -400)\\n  config file = /home/adrian/ansible/ansible.cfg\\n  configured module search path = ['/home/adrian/src/ansible-modules-core', '/home/adrian/src/ansible-modules-extras']\\n\\n```\\n##### SUMMARY\\n\\nDon't force 'ssh -q' for verbosity < 'vvv'.\\n\\nInclude ssh stderr in exception **str** for\\nssh connection errors.\\n\\nFixes #15706\\n\", \n    \"component_name\": \"lib/ansible/plugins/connection/ssh.py\", \n    \"component_raw\": \"lib/ansible/plugins/connection/ssh.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17598\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:plugins/connection\", \n      \"c:plugins/connection/ssh\", \n      \"in progress\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Don't force 'ssh -q' for verbosity < 'vvv'.\\n\\nInclude ssh stderr in exception **str** for\\nssh connection errors.\\n\\nFixes #15706\", \n    \"title\": \"More verbose ssh failure error messages.\"\n  }, \n  \"17604\": {\n    \"ansible_version\": \"ansible 2.2.0 (for-upstream-pr bef03042b8) last updated 2016/09/15 125304 (GMT -700)\\nlib/ansible/modules/core (detached HEAD db5cb54b23) last updated 2016/09/08 142522 (GMT -700)\\nlib/ansible/modules/extras (for_devel 0b5e7136aa) last updated 2016/09/15 163958 (GMT -700)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\nNew Module Pull Request\\n##### COMPONENT NAME\\n\\ndimensiondata\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0 (for-upstream-pr bef03042b8) last updated 2016/09/15 12:53:04 (GMT -700)\\n  lib/ansible/modules/core: (detached HEAD db5cb54b23) last updated 2016/09/08 14:25:22 (GMT -700)\\n  lib/ansible/modules/extras: (for_devel 0b5e7136aa) last updated 2016/09/15 16:39:58 (GMT -700)\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nThis change contains common code required by the dimensiondata modules. \\n##### SPECIAL NOTE\\n- Requires `apache-libcloud`\\n##### REQUIRED BY\\n- TBD\\n\", \n    \"component_name\": \"dimensiondata\", \n    \"component_raw\": \"dimensiondata\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17604\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"module_util\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/dimensiondata/__init__.py\", \n    \"summary\": \"This change contains common code required by the dimensiondata modules. \\n##### SPECIAL NOTE\\n- Requires `apache-libcloud`\\n##### REQUIRED BY\\n- TBD\", \n    \"title\": \"module_utils/dimensiondata\"\n  }, \n  \"17605\": {\n    \"ansible_version\": \"Ansible 2.2\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Idea\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nDynamic inventory script ec2.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nAnsible 2.2\\n```\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nAnsible Tower\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nIt would be great to allow the global ec2 group to be disabled from the ini file. Specially useful for a system like Ansible Tower. \\n##### STEPS TO REPRODUCE\\n\\nCreate an inventory then create 2 groups each using the dynamic Amazon EC2, then filter based on the tag name. Now since the script create an EC2 group the 2 parent groups endup with the same hosts.\\nDisabling the EC2 global group would solve this issue.\\n\", \n    \"component_name\": \"dynamic inventory script ec2.py\", \n    \"component_raw\": \"Dynamic inventory script ec2.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17605\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"It would be great to allow the global ec2 group to be disabled from the ini file. Specially useful for a system like Ansible Tower.\", \n    \"title\": \"ec2.py - Add possibility to disable the global ec2 group/tag (for Ansible Tower)\"\n  }, \n  \"17628\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\ntest\\n##### SUMMARY\\n\\nHere is a first list of test on the ipaddr filter. I didn't add all yet, as I am not sure which one are useful to test and which aren't, and what could be corner cases to test.\\n\\nAlso, tests will fail until #17627 is merged.\\n\", \n    \"component_name\": \"test\", \n    \"component_raw\": \"test\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17628\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"feature\", \n      \"in progress\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Here is a first list of test on the ipaddr filter. I didn't add all yet, as I am not sure which one are useful to test and which aren't, and what could be corner cases to test.\\n\\nAlso, tests will fail until #17627 is merged.\", \n    \"title\": \"Add tests for the ipaddr filter\"\n  }, \n  \"17642\": {\n    \"ansible_version\": \"all\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\ncontrib/inventory/ec2.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nall\\n```\\n##### SUMMARY\\n\\nUpdate `ec2.py` script to make it importable by other scripts.\\n\\nThis will allow people to capture and manipulate the output further than the default.\\n\", \n    \"component_name\": \"contrib/inventory/ec2.py\", \n    \"component_raw\": \"contrib/inventory/ec2.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17642\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"feature\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Update `ec2.py` script to make it importable by other scripts.\\n\\nThis will allow people to capture and manipulate the output further than the default.\", \n    \"title\": \"make ec2.py importable\"\n  }, \n  \"17656\": {\n    \"ansible_version\": \"ansible 2.2.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nAWSRetry Decorator\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0\\n```\\n##### SUMMARY\\n- Added support for boto. AWSRetry Now supports Boto and Boto3\\n- Added the ability to extend the default list of exceptions in AWSRetry\\n\\n```\\n@AWSRetry.backoff(tries=2, delay=0.1, added_exceptions=['MalformedPolicy'])\\n```\\n\\n<!-- Reviewable:start -->\\n\\n---\\n\\nThis change is [<img src=\\\"https://reviewable.io/review_button.svg\\\" height=\\\"34\\\" align=\\\"absmiddle\\\" alt=\\\"Reviewable\\\"/>](https://reviewable.io/reviews/ansible/ansible/17656)\\n\\n<!-- Reviewable:end -->\\n\", \n    \"component_name\": \"awsretry decorator\", \n    \"component_raw\": \"AWSRetry Decorator\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17656\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"c:module_utils/\", \n      \"cloud\", \n      \"feature\", \n      \"module_util\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"- Added support for boto. AWSRetry Now supports Boto and Boto3\\n- Added the ability to extend the default list of exceptions in AWSRetry\\n\\n```\\n@AWSRetry.backoff(tries=2, delay=0.1, added_exceptions=['MalformedPolicy'])\\n```\\n\\n\\n\\n---\\n\\nThis change is [<img src=\\\"https://reviewable.io/review_button.svg\\\" height=\\\"34\\\" align=\\\"absmiddle\\\" alt=\\\"Reviewable\\\"/>](https://reviewable.io/reviews/ansible/ansible/17656)\", \n    \"title\": \"Append exceptions to retry\"\n  }, \n  \"17661\": {\n    \"ansible_version\": \"ansible 2.1.0.0\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nansible/lib/ansible/playbook/role/**init**.py\\nansible/lib/ansible/executor/play_iterator.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.0.0\\n\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\nNo change\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nIn official ansible document site,\\nhttp://docs.ansible.com/ansible/playbooks_roles.html\\nIt said,\\nRoles dependencies are always executed before the role that includes them, and are recursive. By default, roles can also only be added as a dependency once - if another role also lists it as a dependency it will not be run again.\\nbut sometimes, it doesn't work as expected, the same role were executed multiple times. Maybe we need consider what role object is? the same role definition with different variable input may be considered different role object, but if we add conditional dependency for a role, that is we use \\\"when\\\", is the role with \\\"when\\\" different with role without \\\"when\\\"?\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\nSuppose we have a playbook, which has a role named csf that depends on csfA/csfB/csfC, and csfB and csfA depends on csfC in some condition,\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n# main playbook\\n#ls.yml\\n\\n---\\n- name: play1\\n  hosts: SSHproxy\\n  remote_user: root\\n  gather_facts: false\\n  roles:\\n    - {role: csf, taskN: task1 }\\n\\n#csf role definition\\n#roles/csf/meta/main.yml\\n\\n---\\ndependencies:\\n- role: csfC\\n- role: csfA\\n- role: csfB\\n\\n# csfA role defintion\\n#roles/csfA/meta/main.yml\\n\\n---\\ndependencies:\\n- {role: csfC, when: taskN=='task1'}\\n\\n#roles/csfA/tasks/main.yml\\n- shell: ls\\n\\n\\n# csfB role definition\\n#roles/csfB/meta/main.yml\\n\\n---\\ndependencies:\\n- {role: csfC, when: taskN=='task1'}\\n\\n#roles/csfB/tasks/main.yml\\n- shell: ls\\n\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n```\\n<!--- What did you expect to happen when running the steps above? -->\\nrole csfC will be executed just one time\\n\\nPLAY [play1] *******************************************************************\\n\\nTASK [csfC : command] **********************************************************\\nchanged: [SSHproxy]\\n\\nTASK [csfA : command] **********************************************************\\nchanged: [SSHproxy]\\n\\nTASK [csfB : command] **********************************************************\\nchanged: [SSHproxy]\\n\\nPLAY RECAP *********************************************************************\\nSSHproxy : ok=3 changed=3 unreachable=0 failed=0\\n```\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nrole csfC were executed two times.\\n\\nPLAY [play1] *******************************************************************\\n\\nTASK [csfC : command] **********************************************************\\nchanged: [SSHproxy]\\n\\nTASK [csfC : command] **********************************************************\\nchanged: [SSHproxy]\\n\\nTASK [csfA : command] **********************************************************\\nchanged: [SSHproxy]\\n\\nTASK [csfB : command] **********************************************************\\nchanged: [SSHproxy]\\n\\nPLAY RECAP *********************************************************************\\nSSHproxy : ok=4 changed=4 unreachable=0 failed=0\\n```\\n\", \n    \"component_name\": \"ansible/lib/ansible/playbook/role/init.py\", \n    \"component_raw\": \"ansible/lib/ansible/playbook/role/**init**.py\\nansible/lib/ansible/executor/play_iterator.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17661\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"In official ansible document site,\\nhttp://docs.ansible.com/ansible/playbooks_roles.html\\nIt said,\\nRoles dependencies are always executed before the role that includes them, and are recursive. By default, roles can also only be added as a dependency once - if another role also lists it as a dependency it will not be run again.\\nbut sometimes, it doesn't work as expected, the same role were executed multiple times. Maybe we need consider what role object is? the same role definition with different variable input may be considered different role object, but if we add conditional dependency for a role, that is we use \\\"when\\\", is the role with \\\"when\\\" different with role without \\\"when\\\"?\", \n    \"title\": \"role dependency doesn't work as expected\"\n  }, \n  \"17662\": {\n    \"ansible_version\": \"ansible 2.1.0.0\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nansible/lib/playbook/**init**.py  ???\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.0.0\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\nNo change\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nincluding a play which has a relative path in a playbook, will cause load error for role in late play\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\npls follow the playbook below\\n\\n```\\n- include: tasks/common/em2.yml\\n- name: play1\\n  hosts: SSHproxy\\n  remote_user: root\\n  gather_facts: false\\n  roles:\\n  - csfA\\n\\n```\\n\\nno specific requirement for the play included and role behind it.\\nmain playbook, directory roles, and tasks directory are within same directory.\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nrun this playbook correctly.\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nERROR! the role 'csfA' was not found in /home/rover/ansible/tasks/common/roles:/home/rover/ansible/tasks/common:/etc/ansible/roles /home/rover/ansible/tasks/common\\n\\nThe error appears to have been in '/home/rover/ansible/inc.yml': line 8, column 5, but may\\nbe elsewhere in the file depending on the exact syntax problem.\\n```\\n\", \n    \"component_name\": \"ansible/lib/playbook/init.py  ???\", \n    \"component_raw\": \"ansible/lib/playbook/**init**.py  ???\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17662\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"including a play which has a relative path in a playbook, will cause load error for role in late play\", \n    \"title\": \"including a play will cause load error for the role behind it\"\n  }, \n  \"17664\": {\n    \"ansible_version\": \"ansible 2.1.0.0\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nansible/lib/ansible/playbook  ??\\nansible/lib/ansible/executor   ??\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.0.0\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\nno change.\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nIn a play, if you write down one role two times as below,\\n\\n```\\n\\n---\\n- name: play1\\n  hosts: SSHproxy\\n  remote_user: root\\n  gather_facts: false\\n  roles:\\n    - csfC\\n    - csfC\\n```\\n\\nYou can see that role csfC runs two times when playbook running\\n\\n```\\nPLAY [play1] *******************************************************************\\n\\nTASK [csfC : command] **********************************************************\\nchanged: [SSHproxy]\\n\\nTASK [csfC : command] **********************************************************\\nchanged: [SSHproxy]\\n\\nPLAY RECAP *********************************************************************\\nSSHproxy                   : ok=2    changed=2    unreachable=0    failed=0   \\n```\\n\\nIf you add another different role between the role, \\n\\n```\\n\\n---\\n- name: play1\\n  hosts: SSHproxy\\n  remote_user: root\\n  gather_facts: false\\n  roles:\\n    - csfC\\n    - csfD\\n    - csfC\\n```\\n\\nrole csfC just run one times\\n\\n```\\nPLAY [play1] *******************************************************************\\n\\nTASK [csfC : command] **********************************************************\\nchanged: [SSHproxy]\\n\\nTASK [csfD : command] **********************************************************\\nchanged: [SSHproxy]\\n\\nPLAY RECAP *********************************************************************\\nSSHproxy                   : ok=2    changed=2    unreachable=0    failed=0   \\n```\\n\\nIt seems that the way to judge if a role execution ends has something wrong. \\ntwo same role in a play should be executed once.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\n\\n```\\n\", \n    \"component_name\": \"ansible/lib/ansible/playbook  ??\", \n    \"component_raw\": \"ansible/lib/ansible/playbook  ??\\nansible/lib/ansible/executor   ??\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17664\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"In a play, if you write down one role two times as below,\\n\\n```\\n\\n---\\n- name: play1\\n  hosts: SSHproxy\\n  remote_user: root\\n  gather_facts: false\\n  roles:\\n    - csfC\\n    - csfC\\n```\\n\\nYou can see that role csfC runs two times when playbook running\\n\\n```\\nPLAY [play1] *******************************************************************\\n\\nTASK [csfC : command] **********************************************************\\nchanged: [SSHproxy]\\n\\nTASK [csfC : command] **********************************************************\\nchanged: [SSHproxy]\\n\\nPLAY RECAP *********************************************************************\\nSSHproxy                   : ok=2    changed=2    unreachable=0    failed=0   \\n```\\n\\nIf you add another different role between the role, \\n\\n```\\n\\n---\\n- name: play1\\n  hosts: SSHproxy\\n  remote_user: root\\n  gather_facts: false\\n  roles:\\n    - csfC\\n    - csfD\\n    - csfC\\n```\\n\\nrole csfC just run one times\\n\\n```\\nPLAY [play1] *******************************************************************\\n\\nTASK [csfC : command] **********************************************************\\nchanged: [SSHproxy]\\n\\nTASK [csfD : command] **********************************************************\\nchanged: [SSHproxy]\\n\\nPLAY RECAP *********************************************************************\\nSSHproxy                   : ok=2    changed=2    unreachable=0    failed=0   \\n```\\n\\nIt seems that the way to judge if a role execution ends has something wrong. \\ntwo same role in a play should be executed once.\", \n    \"title\": \"a wrong way to judge ending of a role execution\"\n  }, \n  \"17665\": {\n    \"ansible_version\": \"Tried with the versions below\\nansible 2.1.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\\nansible 2.1.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nType conversion\\n##### ANSIBLE VERSION\\n\\nTried with the versions below:\\nansible 2.1.0.0\\n  config file =\\n  configured module search path = Default w/o overrides\\nansible 2.1.1.0\\n  config file =\\n  configured module search path = Default w/o overrides\\n\\n```\\n\\n```\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nI found this when I tried to override a variable. This variable have a \\\"int\\\" value and I tried to override with other \\\"int\\\" from a config yml file. I have an {% if variable == 27017 %} block which is evaluated as false because of the variable type.\\n##### STEPS TO REPRODUCE\\n\\nI created a simple role to reproduce de problem. The role have a template named test_template.j2 with the following content:\\n\\n```\\n{% if port is string %}\\n{{port}} is string\\n{% else %}\\n{{port}} is not string\\n{% endif %}{% if port is string %}\\n{{port}} is string\\n{% else %}\\n{{port}} is not string\\n{% endif %}\\n```\\n\\nJust a var inside the defaults/main.yml file:\\n\\n```\\nport: 27017\\n```\\n\\nThe main.yml from tasks, which create a file good when is evaluated to true and wrong when is false :\\n\\n```\\n\\n---\\n# tasks file for test\\n- name: Check the type\\n  template: src=test_template.j2 dest=./{% if port == 27017 %}good{% else %}wrong{% endif %}{{iterate}}\\n```\\n\\nA config.yml file with the value to override:\\n\\n```\\nprovision:\\n  port: 27017\\n```\\n\\nAnd a test.yml file:\\n\\n```\\n- name: TEST\\n  hosts: localhost\\n  vars_files:\\n    - config.yml\\n  roles:\\n    - role: test\\n      port: 27017\\n      iterate: 1\\n    - role: test\\n      port: \\\"27017\\\"\\n      iterate: 2\\n    - role: test\\n      port: \\\"{{ provision.port }}\\\"\\n      iterate: 3\\n    - role: test\\n      port: \\\"{{ provision.port | int }}\\\"\\n      iterate: 4\\n```\\n##### EXPECTED RESULTS\\n\\nThe expected result will be al least two \\\"good\\\" files in the case 1 and 4, maybe in the iterate 3 too and a wrong file in the case of iterate 2.\\n##### ACTUAL RESULTS\\n\\nWe found just one \\\"good\\\" file good1 with the \\\"27017 is not a string\\\" content and three \\\"wrong\\\" files with the content \\\"27017 is a string\\\"\\n\\n```\\n\\u25cb \\u2192 ap test_pl.yml\\n [WARNING]: Host file not found: /usr/local/etc/ansible/hosts\\n\\n [WARNING]: provided hosts list is empty, only localhost is available\\n\\n\\nPLAY [TEST] ********************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [test : Check the type] ***************************************************\\nok: [localhost]\\n\\nTASK [test : Check the type] ***************************************************\\nok: [localhost]\\n\\nTASK [test : Check the type] ***************************************************\\nok: [localhost]\\n\\nTASK [test : Check the type] ***************************************************\\nok: [localhost]\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=5    changed=0    unreachable=0    failed=0\\n```\\n\", \n    \"component_name\": \"type conversion\", \n    \"component_raw\": \"Type conversion\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17665\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I found this when I tried to override a variable. This variable have a \\\"int\\\" value and I tried to override with other \\\"int\\\" from a config yml file. I have an {% if variable == 27017 %} block which is evaluated as false because of the variable type.\", \n    \"title\": \"Problem with type conversion\"\n  }, \n  \"17667\": {\n    \"ansible_version\": \"2.2\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\ncore\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\n2.2\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nraises parser error if the data does not fit any format\\n\", \n    \"component_name\": \"core\", \n    \"component_raw\": \"core\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17667\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:parsing/splitter\", \n      \"in progress\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"raises parser error if the data does not fit any format\", \n    \"title\": \"parse_kv now observes check_raw\"\n  }, \n  \"17672\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /home/me/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nN/A\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n  config file = /home/me/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nFor module that work with files (like copy), add a directory in the include path located in _host_files/{{ inventory_hostname}}_. The file is this directory should be included only when there is no other match elsewhere (like in the role).\\n\\nIt would be similar with the feature that include variables file located in _host_vars/{{ inventory_hostname}}_.\\n##### STEPS TO REPRODUCE\\n\\nThis example task would copy the file located at _host_files/{{ inventory_hostname}/myapp.crt_ to the remote server because the file is missing from others include path (this is custom or each servers).\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n- name: Copy certificate file\\n  copy:\\n    src=myapp.crt\\n    dest=/etc/ssl/myapp.crt\\n```\\n\", \n    \"component_name\": \"n/a\", \n    \"component_raw\": \"N/A\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17672\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"For module that work with files (like copy), add a directory in the include path located in _host_files/{{ inventory_hostname}}_. The file is this directory should be included only when there is no other match elsewhere (like in the role).\\n\\nIt would be similar with the feature that include variables file located in _host_vars/{{ inventory_hostname}}_.\", \n    \"title\": \"Per host files\"\n  }, \n  \"17676\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\n\\nFeature Pull Request\\n##### COMPONENT NAME\\n\\nN/A\\n##### ANSIBLE VERSION\\n\\n```\\ndevel\\n```\\n##### SUMMARY\\n\\nThis PR adds the CLI options of `tags`, `subset` and `skip_tags` to magic vars.\\n\\nThe mapping is currently:\\n- `options.tags` -> `ansible_tags`\\n- `options.skip_tags` -> `ansible_skip_tags`\\n- `options.subset` -> `ansible_limit`\\n\\nMy concern with this is naming confusion.  I think `skip_tags` is fine.  I am concerned that `ansible_tags` could be confused with the tags you have placed on a task, rather than supplied on the CLI.  This goes for `ansible_limit` as well, since it could be confused with `hosts:`.\\n\\nOpen to suggestions.\\n\\nAlso, to support `ansible_limit` for adhoc, I am combining `self.args` and `self.options.subset` for adhoc.  This is effectively what adhoc does anyway.\\n\", \n    \"component_name\": \"n/a\", \n    \"component_raw\": \"N/A\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17676\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:cli/\", \n      \"c:utils/vars\", \n      \"feature\", \n      \"in progress\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This PR adds the CLI options of `tags`, `subset` and `skip_tags` to magic vars.\\n\\nThe mapping is currently:\\n- `options.tags` -> `ansible_tags`\\n- `options.skip_tags` -> `ansible_skip_tags`\\n- `options.subset` -> `ansible_limit`\\n\\nMy concern with this is naming confusion.  I think `skip_tags` is fine.  I am concerned that `ansible_tags` could be confused with the tags you have placed on a task, rather than supplied on the CLI.  This goes for `ansible_limit` as well, since it could be confused with `hosts:`.\\n\\nOpen to suggestions.\\n\\nAlso, to support `ansible_limit` for adhoc, I am combining `self.args` and `self.options.subset` for adhoc.  This is effectively what adhoc does anyway.\", \n    \"title\": \"Add more options to magic vars\"\n  }, \n  \"17678\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel e0ad02c6dd) last updated 2016/09/20 145923 (GMT -700)\\nlib/ansible/modules/core (detached HEAD 3486395970) last updated 2016/09/20 145923 (GMT -700)\\nlib/ansible/modules/extras (detached HEAD 1f2319c3f3) last updated 2016/09/20 145923 (GMT -700)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\ndependency\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0 (devel e0ad02c6dd) last updated 2016/09/20 14:59:23 (GMT -700)\\n  lib/ansible/modules/core: (detached HEAD 3486395970) last updated 2016/09/20 14:59:23 (GMT -700)\\n  lib/ansible/modules/extras: (detached HEAD 1f2319c3f3) last updated 2016/09/20 14:59:23 (GMT -700)\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n[defaults]\\nhost_key_checking = False\\n##### OS / ENVIRONMENT\\n\\nMac OS X\\n##### SUMMARY\\n\\nI expect variables set in the `meta/main.yml` to take effect\\n##### STEPS TO REPRODUCE\\n\\nansible-playbook site.yml \\n\\n```\\n`/roles/actual/meta/main.yml`\\n\\n\\n---\\ndependencies:\\n  - { role: common, x: 3 }\\n\\n\\n`/roles/actual/tasks/main.yml`\\n\\n\\n---\\n- name: message\\n  debug:\\n    msg: \\\"{{ x }} and {{ y }}\\\"\\n\\n`/roles/common/defaults/main.yml`\\n\\n---\\nx: 16\\ny: 22\\n\\n`site.yml`\\n\\n---\\n- hosts: localhost\\n  become: true\\n  roles:\\n    - actual\\n\\n```\\n##### EXPECTED RESULTS\\n\\nI expected to see \\\"3 and 22\\\"\\n##### ACTUAL RESULTS\\n\\n```\\nTASK [actual : message] ********************************************************\\nok: [127.0.0.1] => {\\n    \\\"msg\\\": \\\"16 and 22\\\"\\n}\\n```\\n\", \n    \"component_name\": \"dependency\", \n    \"component_raw\": \"dependency\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17678\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I expect variables set in the `meta/main.yml` to take effect\", \n    \"title\": \"meta dependency variables aren't being set\"\n  }, \n  \"17683\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel 547cea556f) last updated 2016/09/20 121218 (GMT +100)\\nlib/ansible/modules/core (devel 12a7027c49) last updated 2016/09/20 151143 (GMT +100)\\nlib/ansible/modules/extras (devel db7a3f48e1) last updated 2016/09/20 115300 (GMT +100)\", \n    \"body\": \"##### ISSUE TYPE\\n- Documentation Report\\n##### COMPONENT NAME\\n\\nna\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0 (devel 547cea556f) last updated 2016/09/20 12:12:18 (GMT +100)\\n  lib/ansible/modules/core: (devel 12a7027c49) last updated 2016/09/20 15:11:43 (GMT +100)\\n  lib/ansible/modules/extras: (devel db7a3f48e1) last updated 2016/09/20 11:53:00 (GMT +100)\\n```\\n##### CONFIGURATION\\n##### OS / ENVIRONMENT\\n##### SUMMARY\\n\\nWhen we give notice that we will be deprecating modules we add a line such as\\n`./cloud/openstack/_nova_keypair.py:deprecated: Deprecated in 2.0. Use os_keypair instead`\\n\\nIt would be good if we could do \\n`deprecated: Deprecated in 2.0. Use M(os_keypair) instead` so we can put a link into to the replacement module. Currently these don't render, see\\nhttp://docs.ansible.com/ansible/docker_module.html#deprecated\\n\\nOnce fixed we should review all the `deprecated:` strings in `ansible-modules-core` and `ansible-modules-extra` to take advantage of that.\\n\\nAt the same time we may want to make the markup tags supported in all parts of `DOCUMENTATION` and `RETURNS:`.\\n##### STEPS TO REPRODUCE\\n##### EXPECTED RESULTS\\n##### ACTUAL RESULTS\\n\", \n    \"component_name\": \"na\", \n    \"component_raw\": \"na\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17683\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When we give notice that we will be deprecating modules we add a line such as\\n`./cloud/openstack/_nova_keypair.py:deprecated: Deprecated in 2.0. Use os_keypair instead`\\n\\nIt would be good if we could do \\n`deprecated: Deprecated in 2.0. Use M(os_keypair) instead` so we can put a link into to the replacement module. Currently these don't render, see\\nhttp://docs.ansible.com/ansible/docker_module.html#deprecated\\n\\nOnce fixed we should review all the `deprecated:` strings in `ansible-modules-core` and `ansible-modules-extra` to take advantage of that.\\n\\nAt the same time we may want to make the markup tags supported in all parts of `DOCUMENTATION` and `RETURNS:`.\", \n    \"title\": \"webdocs don't honour markup tags in `deprecated:` section\"\n  }, \n  \"17685\": {\n    \"ansible_version\": \"ansible 2.1.0.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nmodule_utils/urls.py\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.0.0\\n```\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nWould like the ability to set bandwidth limiting/throttling on modules that use the various methods provided in urls.py, namely fetch_url. This would be handy for the maven_artifact, get_url, etc. modules.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor new features, show how the feature would be used.\\n-->\\n\\n```\\n# Download JUnit 4.11 from Maven Central\\n- maven_artifact:\\n  args:\\n    group_id: junit\\n    artifact_id: junit\\n    version: 4.11\\n    dest: /tmp/junit-4.11.jar\\n    bandwidth: 100kb\\n\\n- name: download foo.conf\\n  get_url:\\n    url: http://example.com/path/file.conf\\n    dest: /etc/foo.conf\\n    mode: 0440\\n    limit: 100kb\\n```\\n##### EXPECTED RESULTS\\n\\nProposing support in module_utils/urls.py for throttling the retrieval of HTTP resources to prevent exceeding the specified bandwidth - obviously, this would also require modifications to the core/extras module to support either a `bandwidth` or `limit` parameter\\n\", \n    \"component_name\": \"module_utils/urls.py\", \n    \"component_raw\": \"module_utils/urls.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17685\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Would like the ability to set bandwidth limiting/throttling on modules that use the various methods provided in urls.py, namely fetch_url. This would be handy for the maven_artifact, get_url, etc. modules.\", \n    \"title\": \"Add Bandwidth Throttling to module_utils/urls.py\"\n  }, \n  \"17695\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nhttps://github.com/ansible/ansible/blob/devel/lib/ansible/playbook/task.py#L86\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nNone\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nWhen trying to run a task as a Do-Until loop, ansible errors out if you don't specify a \\\"retries\\\" value. Per the documentation at http://docs.ansible.com/ansible/playbooks_loops.html#do-until-loops, this should be 3.\\n##### STEPS TO REPRODUCE\\n\\nDefine a task with and \\\"until\\\" condition and no \\\"retries\\\" condition.\\n##### EXPECTED RESULTS\\n\\n\\\"retries\\\" should default to 3.\\n##### ACTUAL RESULTS\\n\\n```\\nTASK [Configure Gluster volumes.] **********************************************\\ntask path: /home/jrivera/projects/github/storhaug/vagrant-ansible/playbooks/storhaug.yml:126\\nAn exception occurred during task execution. The full traceback is:\\nTraceback (most recent call last):\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/executor/task_executor.py\\\", line 96, in run\\n    item_results = self._run_loop(items)\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/executor/task_executor.py\\\", line 252, in _run_loop\\n    res = self._execute(variables=task_vars)\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/executor/task_executor.py\\\", line 427, in _execute\\n    retries = self._task.retries + 1\\nTypeError: unsupported operand type(s) for +: 'NoneType' and 'int'\\n\\nfatal: [ganesh]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"Unexpected failure during module execution.\\\", \\\"stdout\\\": \\\"\\\"}\\n```\\n\", \n    \"component_name\": \"https//github.com/ansible/ansible/blob/devel/lib/ansible/playbook/task.pyl86\", \n    \"component_raw\": \"https://github.com/ansible/ansible/blob/devel/lib/ansible/playbook/task.py#L86\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17695\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When trying to run a task as a Do-Until loop, ansible errors out if you don't specify a \\\"retries\\\" value. Per the documentation at http://docs.ansible.com/ansible/playbooks_loops.html#do-until-loops, this should be 3.\", \n    \"title\": \"Task retries has no default\"\n  }, \n  \"17700\": {\n    \"ansible_version\": \"ansible 1.9.2\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nFile transfer during an Ansible run with sftp\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 1.9.2\\n```\\n##### CONFIGURATION\\n\\n<!---\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\n\\\"N/A\\\"\\n-->\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nWhen the target FS is full, Ansible fails without explicitly saying that there is no space left on the device.\\nIt seems like this is caused by sftp returning 0 as return code even when it fails : https://gist.github.com/mgedmin/42fbe44ea266a12e30bc63b701e41a14\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nSimply try a run on a machine with no space left in the home of your ssh user.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n$ ansible -m ping MACHINE # Or any other command on a target with full FS\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nI expected Ansible to tell me that it can't transfer file on the target machine, since there is no space left.\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\n<IPADDRESS> ESTABLISH CONNECTION FOR USER: ansible\\n<IPADDRESS> REMOTE_MODULE ping\\n<IPADDRESS> EXEC ssh -C -tt -vvv -o ControlMaster=auto -o ControlPersist=60s -o ControlPath=\\\"/home/smedjkoune/.ansible/cp/ansible-ssh-%h-%p-%r\\\" -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ansible -o ConnectTimeout=10 IPADDRESS /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1474533453.68-61878236497164 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1474533453.68-61878236497164 && echo $HOME/.ansible/tmp/ansible-tmp-1474533453.68-61878236497164'\\n<IPADDRESS> PUT /tmp/tmpKMZcrq TO /home/ansible/.ansible/tmp/ansible-tmp-1474533453.68-61878236497164/ping\\n<IPADDRESS> EXEC ssh -C -tt -vvv -o ControlMaster=auto -o ControlPersist=60s -o ControlPath=\\\"/home/smedjkoune/.ansible/cp/ansible-ssh-%h-%p-%r\\\" -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ansible -o ConnectTimeout=10 IPADDRESS /bin/sh -c 'sudo -k && sudo -H -S -p \\\"[sudo via ansible, key=miggiojklgjxipgkbnyveflbmkutstoy] password: \\\" -u root /bin/sh -c '\\\"'\\\"'echo BECOME-SUCCESS-miggiojklgjxipgkbnyveflbmkutstoy; LANG=C LC_CTYPE=C /usr/bin/python /home/ansible/.ansible/tmp/ansible-tmp-1474533453.68-61878236497164/ping; rm -rf /home/ansible/.ansible/tmp/ansible-tmp-1474533453.68-61878236497164/ >/dev/null 2>&1'\\\"'\\\"''\\nMACHINE | FAILED >> {\\n    \\\"failed\\\": true,\\n    \\\"msg\\\": \\\"\\\\r\\\\nBECOME-SUCCESS-miggiojklgjxipgkbnyveflbmkutstoy\\\\r\\\\ndebug3: mux_client_read_packet: read header failed: Broken pipe\\\\r\\\\ndebug2: Received exit status from master 0\\\\r\\\\nShared connection to IPADDRESS closed.\\\\r\\\\n\\\",\\n    \\\"parsed\\\": false\\n}\\n```\\n\", \n    \"component_name\": \"file transfer during an ansible run with sftp\", \n    \"component_raw\": \"File transfer during an Ansible run with sftp\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17700\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_1.9\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When the target FS is full, Ansible fails without explicitly saying that there is no space left on the device.\\nIt seems like this is caused by sftp returning 0 as return code even when it fails : https://gist.github.com/mgedmin/42fbe44ea266a12e30bc63b701e41a14\", \n    \"title\": \"Ansible not able to identify a full filesystem\"\n  }, \n  \"17701\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n- Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nwith_items\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.1.1.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n##### CONFIGURATION\\r\\n\\r\\nBasic\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nN/A\\r\\n##### SUMMARY\\r\\n\\r\\nList picked up from facts not parsed as a list when called by with_items , instead being taken as a string\\r\\n\\r\\nWhen using a basic task with with_items: \\\"{{ groups['all'] }}\\\" ,  the task doesn't iterate in each item\\r\\nof the list , instead is taken as a string:\\r\\n\\r\\nchanged: [127.0.0.1] => (item= [u'1.1.1.1', u'10.16.0.5'] )  <--  String ?\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n\\r\\n```\\r\\n name: \\\"common task following\\\"\\r\\n command: echo \\\" {{ item }} \\\"\\r\\n with_items:\\r\\n   - \\\" {{ groups['all'] }} \\\"                                        \\r\\n   #- [1,2]\\r\\n\\r\\n```\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nShould be parsed as a list\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nTASK [common : common task following] ******************************************\\r\\nchanged: [1.1.1.1] => (item= [u'1.1.1.1', u'10.16.0.5'] )\\r\\nchanged: [127.0.0.1] => (item= [u'1.1.1.1', u'10.16.0.5'] )\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"with_items\", \n    \"component_raw\": \"with_items\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17701\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"List picked up from facts not parsed as a list when called by with_items , instead being taken as a string\\n\\n\\n\\nWhen using a basic task with with_items: \\\"{{ groups['all'] }}\\\" ,  the task doesn't iterate in each item\\n\\nof the list , instead is taken as a string:\\n\\n\\n\\nchanged: [127.0.0.1] => (item= [u'1.1.1.1', u'10.16.0.5'] )  <--  String ?\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n name: \\\"common task following\\\"\\n\\n command: echo \\\" {{ item }} \\\"\\n\\n with_items:\\n\\n   - \\\" {{ groups['all'] }} \\\"                                        \\n\\n   #- [1,2]\\n\\n\\n\\n```\", \n    \"title\": \"List not parsed as a list ?\"\n  }, \n  \"17704\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\njinja2 template system\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\n[defaults]\\nhost_key_checking = false\\nhash_behaviour = merge\\nnocows = true\\nroles_path = roles\\nvault_password_file = vpass\\npipelining = true\\nretry_files_enabled = false\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nNot clear problem when using jinja2 loops in action variables, for their dynamic determination. If to make debug - we see that variables are normally created if to use the normal module (for example file), there is an error because of allegedly indefinite variable. Why?\\n\\nPS: The problem doesn't exist in the 1.9.6 version.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\ntest.yml:\\n\\n---\\n- hosts: localhost\\n  connection: local\\n  tasks:\\n    - debug:\\n        msg: >\\n          dest=\\\"{{ item.key }}\\\"\\n          {% for param, value in item.value.iteritems() -%}\\n          {{ param }}=\\\"{{ value }}\\\"\\n          {%- endfor %}\\n      with_dict:\\n        \\\"/tmp/a\\\": { state: absent }\\n        \\\"/tmp/b\\\": { mode: 755 }\\n\\n$ ansible-playbook test.yml\\n\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [debug] *******************************************************************\\nok: [localhost] => (item={'value': {u'state': u'absent'}, 'key': u'/tmp/a'}) => {\\n    \\\"item\\\": {\\n        \\\"key\\\": \\\"/tmp/a\\\", \\n        \\\"value\\\": {\\n            \\\"state\\\": \\\"absent\\\"\\n        }\\n    }, \\n    \\\"msg\\\": \\\"dest=\\\\\\\"/tmp/a\\\\\\\" state=\\\\\\\"absent\\\\\\\"\\\\n\\\"\\n}\\nok: [localhost] => (item={'value': {u'mode': 755}, 'key': u'/tmp/b'}) => {\\n    \\\"item\\\": {\\n        \\\"key\\\": \\\"/tmp/b\\\", \\n        \\\"value\\\": {\\n            \\\"mode\\\": 755\\n        }\\n    }, \\n    \\\"msg\\\": \\\"dest=\\\\\\\"/tmp/b\\\\\\\" mode=\\\\\\\"755\\\\\\\"\\\\n\\\"\\n}\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=2    changed=0    unreachable=0    failed=0   \\n\\n=========================================\\n=========================================\\n\\ntest2.yml:\\n\\n---\\n- hosts: localhost\\n  connection: local\\n  tasks:\\n    - file: >\\n        dest=\\\"{{ item.key }}\\\"\\n        {% for param, value in item.value.iteritems() -%}\\n        {{ param }}=\\\"{{ value }}\\\"\\n        {%- endfor %}\\n      with_dict:\\n        \\\"/tmp/a\\\": { state: absent }\\n        \\\"/tmp/b\\\": { mode: 755 }\\n\\n$ ansible-playbook test2.yml\\n\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [file] ********************************************************************\\nfatal: [localhost]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'value' is undefined\\\\n\\\\nThe error appears to have been in 'test2.yml': line 5, column 7, but may\\\\nbe elsewhere in the file depending on the exact syntax problem.\\\\n\\\\nThe offending line appears to be:\\\\n\\\\n  tasks:\\\\n    - file: >\\\\n      ^ here\\\\n\\\"}\\n\\nNO MORE HOSTS LEFT *************************************************************\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=1   \\n\\n\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\n\\n```\\n\", \n    \"component_name\": \"jinja2 template system\", \n    \"component_raw\": \"jinja2 template system\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17704\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Not clear problem when using jinja2 loops in action variables, for their dynamic determination. If to make debug - we see that variables are normally created if to use the normal module (for example file), there is an error because of allegedly indefinite variable. Why?\\n\\nPS: The problem doesn't exist in the 1.9.6 version.\", \n    \"title\": \"Problem when use jinja2 loops in action variables\"\n  }, \n  \"17706\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.2.0 (devel dde7c11713) last updated 2016/09/22 153851 (GMT +200)\\nlib/ansible/modules/core (devel 0f505378c3) last updated 2016/09/22 155439 (GMT +200)\\nlib/ansible/modules/extras (devel 935a3ab2cb) last updated 2016/09/22 155458 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\nansible-playbook\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\n# ansible --version\\nansible 2.2.0 (devel dde7c11713) last updated 2016/09/22 15:38:51 (GMT +200)\\n  lib/ansible/modules/core: (devel 0f505378c3) last updated 2016/09/22 15:54:39 (GMT +200)\\n  lib/ansible/modules/extras: (devel 935a3ab2cb) last updated 2016/09/22 15:54:58 (GMT +200)\\n  config file =\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---  \\n-->\\n\\nno settings changed in ansible.cfg\\n##### OS / ENVIRONMENT\\n\\n<!---\\nUbuntu 16.04\\n-->\\n\\nUbuntu 16.04\\n##### SUMMARY\\n\\nApproximately two months ago (and maybe for many versions) ansible would output this error when the host was incorrect:\\n\\nansible-playbook main.yml\\n\\n\\\"skipping: no hosts matched\\\".\\n\\nHowever the latest devel version says\\nPLAY RECAP ****\\nWithout the error.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\nfile main.yml:\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n\\n---\\n- hosts: 'wrongserver'\\n  remote_user: 'ansible'\\n  become: yes\\n  roles:\\n     - myrole\\n```\\n\\nansible-playbook main.yml\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\n\\\"skipping: no hosts matched\\\".\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\n# ansible-playbook -vvvv  main.yml \\nNo config file found; using defaults\\nSSH password:\\nLoading callback plugin default of type stdout, v2.0 from /opt/github/ansible/lib/ansible/plugins/callback/__init__.pyc\\n\\nPLAYBOOK: main.yml *************************************************************\\n1 plays in main.yml\\n\\nPLAY RECAP *********************************************************************\\n```\\n\", \n    \"component_name\": \"ansible-playbook\", \n    \"component_raw\": \"ansible-playbook\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17706\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Approximately two months ago (and maybe for many versions) ansible would output this error when the host was incorrect:\\n\\nansible-playbook main.yml\\n\\n\\\"skipping: no hosts matched\\\".\\n\\nHowever the latest devel version says\\nPLAY RECAP ****\\nWithout the error.\", \n    \"title\": \"helpful error \\\"skipping: no hosts matched\\\" is missing\"\n  }, \n  \"17714\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.1.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Idea\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nAnsible support for appending or \\\"stacking\\\" Variable Lists\\n\\nIn this case, with \\\"with_items\\\"\\n--Should be able to append variable lists on the fly, conditionally\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible --version\\nansible 2.1.0.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n\\n```\\n##### OS / ENVIRONMENT\\n\\n<!---\\nN/A\\n-->\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nWe have the goal of dynamically being able to append lists to another list in a variable during a task. This setup is for the configuration of sec on rhel 6. We have different variables we want appended to a base list, based on conditions being met by the host.\\n\\nFor example, we have three variables defined at the moment. One is listed in /defaults/main.yml. A basic list, then two others that correspond to additional configurations needed by different types of application hosts.\\n\\nLet's call the vars:\\nbase\\napp1 \\napp2\\n\\nPure python can handle recursion. If we set:\\n\\n```\\n  base = base + app1\\n  then set: base = base + app2\\n  we get: base = base + app1 + app2\\n```\\n\\nBut Ansible does not appear to support this. It fails with a, \\\"recursion detected in template...\\\" error. If you fix the self-reference, Ansible  of course will only accepts the last value set, for example:\\n\\n```\\n  base = config + app1\\n  then set: base = config + app2\\n  we get: base = config + app2\\n```\\n\\nI've seen the same error pretty much spelled out here: https://groups.google.com/forum/#!topic/ansible-project/Jo50nu3g2b4\\n\\nAs of right now, we can get around this by listing all the variables (and only including the variables based on conditions being met by the host). For example:\\n\\n```\\n- name: write /etc/sysconfig/sec \\n  lineinfile: \\n    state: present \\n    dest: /path/to/file\\n    backup: yes \\n    insertafter: EOF \\n    line: \\\"{{ item }}\\\" \\n  with_items: \\n    - \\\"{{ base }}\\\"\\n    - \\\"{{ app1 | default(omit) }}\\\"\\n    - \\\"{{ app2 | default(omit) }}\\\"\\n```\\n\\nWe are required to continue appending variables under with_items, since currently, Ansible only uses the last definition of the variable.\\n\\nBut it would be nice to have ansible be able to handle appending variable values, so we could simply include something akin to the following in vars/app1.yml:\\n\\n```\\n\\n---\\napp1:  <value>\\nbase: \\\"{{ base + app1 }}\\\"\\n\\n```\\n\\nWhich would make it easier to manage large numbers of hosts which may need various mixes of settings applied. Including recursion in the variable file would cover all cases (appending the needed value to the base variable on the fly), instead of having to create the var.yml file and then still go back in and add the \\\"{{ app# | default(omit) }}\\\" to the list.....\\n\", \n    \"component_name\": \"ansible support for appending or stacking variable lists\", \n    \"component_raw\": \"Ansible support for appending or \\\"stacking\\\" Variable Lists\\nIn this case, with \\\"with_items\\\"\\n--Should be able to append variable lists on the fly, conditionally\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17714\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"We have the goal of dynamically being able to append lists to another list in a variable during a task. This setup is for the\", \n    \"title\": \"Appending or \\\"stacking\\\" variable lists\"\n  }, \n  \"17727\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nazure_rm.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\nLinux -- Redhat 7.2 \\n##### SUMMARY\\n\\nI'm getting a python error\\n\\n```\\n./azure_rm.py --list\\nTraceback (most recent call last):\\n  File \\\"./azure_rm.py\\\", line 795, in <module>\\n    main()\\n  File \\\"./azure_rm.py\\\", line 792, in main\\n    AzureInventory()\\n  File \\\"./azure_rm.py\\\", line 436, in __init__\\n    self.get_inventory()\\n  File \\\"./azure_rm.py\\\", line 501, in get_inventory\\n    self._load_machines(virtual_machines)\\n  File \\\"./azure_rm.py\\\", line 535, in _load_machines\\n    computer_name=machine.os_profile.computer_name,\\n```\\n\\npython versiob\\n\\n```\\npython -V\\nPython 2.7.5\\n```\\n\\nHere are the pip component versions\\n\\n```\\npip list | grep \\\"azure\\\"\\nazure (2.0.0rc5)\\nazure-batch (0.30.0rc5)\\nazure-common (1.1.4)\\nazure-graphrbac (0.30.0rc5)\\nazure-mgmt (0.30.0rc5)\\nazure-mgmt-authorization (0.30.0rc5)\\nazure-mgmt-batch (0.30.0rc5)\\nazure-mgmt-cdn (0.30.0rc5)\\nazure-mgmt-cognitiveservices (0.30.0rc5)\\nazure-mgmt-commerce (0.30.0rc5)\\nazure-mgmt-compute (0.30.0rc5)\\nazure-mgmt-keyvault (0.30.0rc5)\\nazure-mgmt-logic (0.30.0rc5)\\nazure-mgmt-network (0.30.0rc5)\\nazure-mgmt-notificationhubs (0.30.0rc5)\\nazure-mgmt-nspkg (1.0.0)\\nazure-mgmt-powerbiembedded (0.30.0rc5)\\nazure-mgmt-redis (0.30.0rc5)\\nazure-mgmt-resource (0.30.0rc5)\\nazure-mgmt-scheduler (0.30.0rc5)\\nazure-mgmt-storage (0.30.0rc5)\\nazure-mgmt-web (0.30.0rc5)\\nazure-nspkg (1.0.0)\\nazure-servicebus (0.20.2)\\nazure-servicemanagement-legacy (0.20.3)\\nazure-storage (0.32.0)\\nmsrestazure (0.4.3)\\n```\\n##### STEPS TO REPRODUCE\\n\\nexecute azure_rm.py\\n##### EXPECTED RESULTS\\n\\nactual azure inventory\\n##### ACTUAL RESULTS\\n\\nPython error -- see above\\n\\nEDIT: after further debugging. I believe this is because one of the instances has no \\\"Computer Name\\\" property assigned to it. Then shouldn't the expected behavior to use \\\"-\\\" in place of the \\\"Computer Name\\\"?\\n\", \n    \"component_name\": \"azure_rm.py\", \n    \"component_raw\": \"azure_rm.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17727\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I'm getting a python error\\n\\n```\\n./azure_rm.py --list\\nTraceback (most recent call last):\\n  File \\\"./azure_rm.py\\\", line 795, in <module>\\n    main()\\n  File \\\"./azure_rm.py\\\", line 792, in main\\n    AzureInventory()\\n  File \\\"./azure_rm.py\\\", line 436, in __init__\\n    self.get_inventory()\\n  File \\\"./azure_rm.py\\\", line 501, in get_inventory\\n    self._load_machines(virtual_machines)\\n  File \\\"./azure_rm.py\\\", line 535, in _load_machines\\n    computer_name=machine.os_profile.computer_name,\\n```\\n\\npython versiob\\n\\n```\\npython -V\\nPython 2.7.5\\n```\\n\\nHere are the pip component versions\\n\\n```\\npip list | grep \\\"azure\\\"\\nazure (2.0.0rc5)\\nazure-batch (0.30.0rc5)\\nazure-common (1.1.4)\\nazure-graphrbac (0.30.0rc5)\\nazure-mgmt (0.30.0rc5)\\nazure-mgmt-authorization (0.30.0rc5)\\nazure-mgmt-batch (0.30.0rc5)\\nazure-mgmt-cdn (0.30.0rc5)\\nazure-mgmt-cognitiveservices (0.30.0rc5)\\nazure-mgmt-commerce (0.30.0rc5)\\nazure-mgmt-compute (0.30.0rc5)\\nazure-mgmt-keyvault (0.30.0rc5)\\nazure-mgmt-logic (0.30.0rc5)\\nazure-mgmt-network (0.30.0rc5)\\nazure-mgmt-notificationhubs (0.30.0rc5)\\nazure-mgmt-nspkg (1.0.0)\\nazure-mgmt-powerbiembedded (0.30.0rc5)\\nazure-mgmt-redis (0.30.0rc5)\\nazure-mgmt-resource (0.30.0rc5)\\nazure-mgmt-scheduler (0.30.0rc5)\\nazure-mgmt-storage (0.30.0rc5)\\nazure-mgmt-web (0.30.0rc5)\\nazure-nspkg (1.0.0)\\nazure-servicebus (0.20.2)\\nazure-servicemanagement-legacy (0.20.3)\\nazure-storage (0.32.0)\\nmsrestazure (0.4.3)\\n```\", \n    \"title\": \"error with azure dynamic inventory script -- azure_rm.py\"\n  }, \n  \"17731\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nmodule_utils/basic.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.0.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nThe change adds new types and validations for ports, L3/L4/L7 protocols, IPv4 and IPv6 addresses. Fixes issue #16256.\\n\\n<!---\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\ncommit message and your description; but you should still explain what\\nthe change does.\\n-->\\n\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\n\\n```\\n\\n```\\n\", \n    \"component_name\": \"module_utils/basic.py\", \n    \"component_raw\": \"module_utils/basic.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17731\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"c:module_utils/basic\", \n      \"feature\", \n      \"module_util\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The change adds new types and validations for ports, L3/L4/L7 protocols, IPv4 and IPv6 addresses. Fixes issue #16256.\\n\\n\\n\\n\\n\\n```\\n\\n```\", \n    \"title\": \"Provide functions for IP address or port range validating (fixes #16256)\"\n  }, \n  \"17746\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\nBug Report\\n##### COMPONENT NAME\\n\\nansible core\\n##### ANSIBLE VERSION\\n\\nansible 2.1.0.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n##### OS / ENVIRONMENT\\n\\nOS for running Ansible:\\nLinux 060075bb8a41 4.7.4-1.el7.elrepo.x86_64 #1 SMP Thu Sep 15 09:37:27 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux\\nDescription:    Ubuntu 14.04.4 LTS\\n\\nManged OS:\\nLinux server 4.7.2-1.el7.elrepo.x86_64 #1 SMP Sat Aug 20 18:40:06 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux\\nCentOS Linux release 7.2.1511 (Core) \\n##### SUMMARY\\n\\nAnsible stuck after run setup on remote server, when I run ps -a on remote server I can see running ansible process, but its stuck forever. I have 4 servers with that problem. Reboot server solve that problem. But I don't want reboot it each time when I got the stuck. I have 3 servers with that problem now.  Please let me know what kind logs and info you need to help me solve this issue. \\n##### STEPS TO REPRODUCE\\n\\nI dont know why it happend, and cant reproduce it on new servers\\n##### EXPECTED RESULTS\\n\\nI want to know how I can clear my servers and make ansible work again without reboot.\\n\", \n    \"component_name\": \"ansible core\", \n    \"component_raw\": \"ansible core\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17746\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Ansible stuck after run setup on remote server, when I run ps -a on remote server I can see running ansible process, but its stuck forever. I have 4 servers with that problem. Reboot server solve that problem. But I don't want reboot it each time when I got the stuck. I have 3 servers with that problem now.  Please let me know what kind logs and info you need to help me solve this issue.\", \n    \"title\": \"Ansible stuck when run any playbook\"\n  }, \n  \"17750\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nlib/ansible/utils/color.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n```\\n##### OS / ENVIRONMENT\\n\\nRunning on Ubuntu 14.04; OS being managed is not relevant\\n##### SUMMARY\\n\\nAnsible 2.1 added configurable colors (see commit d3deb24). However, the set of available colors is limited to 8 standard terminal colors + bold, due to a hardcoded map `codeCodes` in `color.py`.\\n\\nI propose adding support for `color0` through `color255`, with aliases `rgb000` through `rgb555` for 16\\u2013231 and `gray0` through `gray23` for 232\\u2013255. This color naming scheme is used in several existing programs and libraries.\\n\\nI will prepare a pull request if the general idea gets approved.\\n\\nThis could further be extended to allow text attributes (bold, italic, underline\\u2026) and backgrounds (e.g. `on gray4`) if desired.\\n##### STEPS TO REPRODUCE\\n\\n```\\n[colors]\\nverbose = rgb025\\ndebug = gray14\\n```\\n##### EXPECTED RESULTS\\n\\nVerbose output uses color 33 (= 16 + 0 \\\\* 36 + 2 \\\\* 6 + 5) of the 256-color palette; debug uses color 246 (= 16 + 216 + 14).\\n\", \n    \"component_name\": \"lib/ansible/utils/color.py\", \n    \"component_raw\": \"lib/ansible/utils/color.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17750\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Ansible 2.1 added configurable colors (see commit d3deb24). However, the set of available colors is limited to 8 standard terminal colors + bold, due to a hardcoded map `codeCodes` in `color.py`.\\n\\nI propose adding support for `color0` through `color255`, with aliases `rgb000` through `rgb555` for 16231 and `gray0` through `gray23` for 232255. This color naming scheme is used in several existing programs and libraries.\\n\\nI will prepare a pull request if the general idea gets approved.\\n\\nThis could further be extended to allow text attributes (bold, italic, underline) and backgrounds (e.g. `on gray4`) if desired.\", \n    \"title\": \"Support 256-color terminals\"\n  }, \n  \"17752\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nlib/ansible/utils/color.py\\n##### ANSIBLE VERSION\\n\\ndevel\\n##### SUMMARY\\n\\nExtend the set of supported colors to include `color0` through `color255`, `rgb000` through `rgb555`, and `gray0` through `gray23`.\\n\\nThis color naming scheme is used by Midnight Commander, Taskwarrior, and the Term::ANSIColor Perl library; the `color0`\\u2013`color255` subset is also supported by Emacs.\\n\\nAn alternative naming scheme is provided by the Python [colored](https://pypi.python.org/pypi/colored) package, but I find it less intuitive.\\n\\nThe regular expression could be compiled, if performance is a concern.\\n\", \n    \"component_name\": \"lib/ansible/utils/color.py\", \n    \"component_raw\": \"lib/ansible/utils/color.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17752\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:utils/color\", \n      \"feature\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Extend the set of supported colors to include `color0` through `color255`, `rgb000` through `rgb555`, and `gray0` through `gray23`.\\n\\nThis color naming scheme is used by Midnight Commander, Taskwarrior, and the Term::ANSIColor Perl library; the `color0``color255` subset is also supported by Emacs.\\n\\nAn alternative naming scheme is provided by the Python [colored](https://pypi.python.org/pypi/colored) package, but I find it less intuitive.\\n\\nThe regular expression could be compiled, if performance is a concern.\", \n    \"title\": \"Support 256-color terminals (#17750)\"\n  }, \n  \"17753\": {\n    \"ansible_version\": \"ansible 2.1.0.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\n`AnsibleModule.atomic_move`\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.0.0\\n```\\n##### SUMMARY\\n\\nSome network equipment uses `vfat` as their filesystem of choice. As vfat doesn't support `chmod` and `chown` operations, the method `atomic_move` will fail when trying to set the permissions.\\n\\nThis PR tries to address that issue. If we get to the point where the file is already in place and we just have to fix permissions, the most likely reason to get an `EPERM` error is due to the fact that the underlying filesystem doesn't support those operations in, which case, is safe to ignore the error.\\n\", \n    \"component_name\": \"ansible .atomic_move\", \n    \"component_raw\": \"`AnsibleModule.atomic_move`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17753\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"feature\", \n      \"module_util\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Some network equipment uses `vfat` as their filesystem of choice. As vfat doesn't support `chmod` and `chown` operations, the method `atomic_move` will fail when trying to set the permissions.\\n\\nThis PR tries to address that issue. If we get to the point where the file is already in place and we just have to fix permissions, the most likely reason to get an `EPERM` error is due to the fact that the underlying filesystem doesn't support those operations in, which case, is safe to ignore the error.\", \n    \"title\": \"Ignore error when setting permissions fail due to EPERM\"\n  }, \n  \"17754\": {\n    \"ansible_version\": \"ansible 2.2.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\nplugins/connection/ssh.py\\n##### ANSIBLE VERSION\\n\\nansible 2.2.0\\n##### SUMMARY\\n\\nFixes #14426 \\nFixes #13278 \\n\\nSolution for SSH module issues:\\n1) Timeouts on privilege escalation (e.g: https://github.com/ansible/ansible/issues/14426)\\n2) Failed SSH connection\\n\\nAnsible v2 already have patch for failed SSH connections (https://github.com/ansible/ansible/pull/9927). Unfortunately that is only works for ssh commands. File copy isn't covered, so it is still can fall down during \\\"copy\\\" or \\\"template\\\" execution.\\n\\nIn the meantime Timeouts caused by ssh misbehaving. Sometimes it don't respond.\\n\\nI run simple test: 100 times execute command:\\n\\n```\\nssh -C -vvv -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ubuntu -o ConnectTimeout=30 $HOSTNAME '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1474730393.59-109335297653381 `\\\" && echo ansible-tmp-1474730393.59-109335297653381=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1474730393.59-109335297653381 `\\\" ) && sleep 0'\\\"'\\\"''\\n```\\n\\nIn result : 5 timeouts out of 100\\n\\nIf I introduce retries:\\n1 retry worked for 90% of my playbook actions. With 3 retries I had no issues left.\\n\\nThis patch uses code from https://github.com/ansible/ansible/pull/9927 as base, I just replaced _run with that code and introduced additional error for Timeouts.\\n\", \n    \"component_name\": \"plugins/connection/ssh.py\", \n    \"component_raw\": \"plugins/connection/ssh.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17754\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"P2\", \n      \"affects_2.3\", \n      \"bug\", \n      \"c:errors/\", \n      \"c:plugins/connection\", \n      \"c:plugins/connection/ssh\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Fixes #14426 \\nFixes #13278 \\n\\nSolution for SSH module issues:\\n1) Timeouts on privilege escalation (e.g: https://github.com/ansible/ansible/issues/14426)\\n2) Failed SSH connection\\n\\nAnsible v2 already have patch for failed SSH connections (https://github.com/ansible/ansible/pull/9927). Unfortunately that is only works for ssh commands. File copy isn't covered, so it is still can fall down during \\\"copy\\\" or \\\"template\\\" execution.\\n\\nIn the meantime Timeouts caused by ssh misbehaving. Sometimes it don't respond.\\n\\nI run simple test: 100 times execute command:\\n\\n```\\nssh -C -vvv -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ubuntu -o ConnectTimeout=30 $HOSTNAME '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1474730393.59-109335297653381 `\\\" && echo ansible-tmp-1474730393.59-109335297653381=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1474730393.59-109335297653381 `\\\" ) && sleep 0'\\\"'\\\"''\\n```\\n\\nIn result : 5 timeouts out of 100\\n\\nIf I introduce retries:\\n1 retry worked for 90% of my playbook actions. With 3 retries I had no issues left.\\n\\nThis patch uses code from https://github.com/ansible/ansible/pull/9927 as base, I just replaced _run with that code and introduced additional error for Timeouts.\", \n    \"title\": \"Fix for failed ssh connection and connection timeouts\"\n  }, \n  \"17755\": {\n    \"ansible_version\": \"~/Ansible % ansible --version\\nansible 2.2.0 (devel cf4d436e07) last updated 2016/09/23 103105 (GMT +200)\\nlib/ansible/modules/core (detached HEAD 0f505378c3) last updated 2016/09/23 103111 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD 1ade801f65) last updated 2016/09/23 103115 (GMT +200)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nansible-playbook (I think)\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\n~/Ansible % ansible --version                                       \\nansible 2.2.0 (devel cf4d436e07) last updated 2016/09/23 10:31:05 (GMT +200)\\n  lib/ansible/modules/core: (detached HEAD 0f505378c3) last updated 2016/09/23 10:31:11 (GMT +200)\\n  lib/ansible/modules/extras: (detached HEAD 1ade801f65) last updated 2016/09/23 10:31:15 (GMT +200)\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\ndefault\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nTwo different computers both running the playbook on themselves:\\n1. Ubuntu Gnome 16.04.1\\n2. Debian 8.4 (over ssh, no gui installed)\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nIf a playbook contains emoji anywhere it fails to run.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\nRun the example playbook below.\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n\\n---\\n- name: Emoji Test\\n  hosts: localhost\\n  gather_facts: no\\n\\n  tasks:\\n    - name: Extraterrestrial Alien\\n      debug: msg=\\\"\\ud83d\\udc7d\\\"\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\n```\\n~/Ansible % ansible-playbook -i hosts testing.yml -vvvvv            \\nUsing /etc/ansible/ansible.cfg as config file\\nLoading callback plugin default of type stdout, v2.0 from /home/alexander/Ansible-dev/lib/ansible/plugins/callback/__init__.pyc\\n\\nPLAYBOOK: testing.yml **********************************************************\\n1 plays in testing.yml\\n\\nPLAY [Emoji Test] **************************************************************\\n\\nTASK [Extraterrestrial Alien] **************************************************\\ntask path: /home/alexander/Ansible/testing.yml:7\\nok: [localhost] => {\\n    \\\"msg\\\": \\\"\\ud83d\\udc7d\\\"\\n}\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=0 \\n```\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\n~/Ansible % ansible-playbook -i hosts testing.yml -vvvvv\\nUsing /etc/ansible/ansible.cfg as config file\\nERROR! Syntax Error while loading YAML.\\n```\\n\\nIf I run it ad-hoc it works.\\n\\n```\\n~/Ansible % ansible -i hosts localhost -m debug -a \\\"msg=\\\"\\ud83d\\udc7d\\\"\\\"        \\nlocalhost | SUCCESS => {\\n    \\\"msg\\\": \\\"\\ud83d\\udc7d\\\"\\n}\\n```\\n\", \n    \"component_name\": \"ansible-playbook (i think)\", \n    \"component_raw\": \"ansible-playbook (I think)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17755\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"If a playbook contains emoji anywhere it fails to run.\", \n    \"title\": \"playbooks cannot contain emoji\"\n  }, \n  \"17757\": {\n    \"ansible_version\": \"ansible 2.0.0.2\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n- Documentation Report\\n##### COMPONENT NAME\\n\\ndocs.ansible.com, man page\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.0.0.2\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nNeither the introduction to inventories nor the ansible-playbook man page explain that you can specify a directory as inventory path, and what that means.\\n\\nhttp://docs.ansible.com/ansible/intro_inventory.html mentions inventory directories in passing, but doesn't really explain what they are, how they work, and that you can simply pass them to the `-i` option.\\n\\nThe documentation at http://docs.ansible.com/ansible/intro_dynamic_inventory.html#using-inventory-directories-and-multiple-inventory-sources is fine, but not easily discovered by reading the man page or the intro to inventories.\\n\", \n    \"component_name\": \"docs.ansible.com man page\", \n    \"component_raw\": \"docs.ansible.com, man page\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17757\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Neither the introduction to inventories nor the ansible-playbook man page explain that you can specify a directory as inventory path, and what that means.\\n\\nhttp://docs.ansible.com/ansible/intro_inventory.html mentions inventory directories in passing, but doesn't really explain what they are, how they work, and that you can simply pass them to the `-i` option.\\n\\nThe documentation at http://docs.ansible.com/ansible/intro_dynamic_inventory.html#using-inventory-directories-and-multiple-inventory-sources is fine, but not easily discovered by reading the man page or the intro to inventories.\", \n    \"title\": \"Inventory directories insufficiently documented\"\n  }, \n  \"17763\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Idea\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nYAML parser\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nThe proposal is to also support [!!omap](http://yaml.org/type/omap.html) in the YAML syntax and support it in Ansible.\\n\\nThe most simple implementation is to use OrderedDict for every dictionary in YAML. But if this is for some reason not acceptable, we could add support for [!!omap](http://yaml.org/type/omap.html) and support it as a special case.\\n\", \n    \"component_name\": \"yaml parser\", \n    \"component_raw\": \"YAML parser\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17763\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The proposal is to also support [!!omap](http://yaml.org/type/omap.html) in the YAML syntax and support it in Ansible.\\n\\nThe most simple implementation is to use OrderedDict for every dictionary in YAML. But if this is for some reason not acceptable, we could add support for [!!omap](http://yaml.org/type/omap.html) and support it as a special case.\", \n    \"title\": \"Add support for OrderedDict\"\n  }, \n  \"17782\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\npassword lookup\\n##### SUMMARY\\n\\nI have from time to time a need of random password without\\nwanting to write them down (one example is mailman list creation,\\nthat requires a password to be given to be sent to the list owner).\\n\\nBut using /dev/null do not return null, but the empty string, which\\ndoesn't generate a password at all and so do not achieve my use case.\\n\", \n    \"component_name\": \"password lookup\", \n    \"component_raw\": \"password lookup\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17782\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/lookup\", \n      \"docs\", \n      \"feature\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I have from time to time a need of random password without\\nwanting to write them down (one example is mailman list creation,\\nthat requires a password to be given to be sent to the list owner).\\n\\nBut using /dev/null do not return null, but the empty string, which\\ndoesn't generate a password at all and so do not achieve my use case.\", \n    \"title\": \"Make password lookup treat /dev/null as a special case\"\n  }, \n  \"17790\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /home/duck/tests/ansible.cfg\\nconfigured module search path = Default w/o overrides\\nThis is rc3.\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nfacts caching\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.2.0\\n  config file = /home/duck/tests/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n\\nThis is rc3.\\n##### CONFIGURATION\\n\\nSet the role path and activatd JSON facts caching.\\n##### OS / ENVIRONMENT\\n\\nFrom Debian unstable to CentOS 7.2.\\n##### SUMMARY\\n\\nSetting the variable in extra vars has no effect\\n##### STEPS TO REPRODUCE\\n\\nIn projects's ansible.cfg:\\n\\n```\\nfact_caching = jsonfile\\nfact_caching_connection = ./facts_cache\\nfact_caching_timeout = 86400\\n```\\n\\nI want to disable fact caching temporarily using the extra vars like this:\\n\\n```\\nansible-playbook -e @vars.yml deploy.yml\\n```\\n\\nwith vars.yml:\\n\\n```\\n\\n---\\nansible_fact_caching: memory\\n```\\n##### EXPECTED RESULTS\\n\\nthe facts cache directory is not created or updated.\\n##### ACTUAL RESULTS\\n\\nthe facts cache directory is used (I purged it and it kept being recreated).\\n\\nI can make it work using an envver:\\n\\n```\\nANSIBLE_CACHE_PLUGIN=memory ansible-playbook -e deploy.yml\\n```\\n\\n(btw, having a different naming make things painful, UTSL is not very user friendly)\\n\\nAs I'm using the YAML extra vars for other settings, which are generated, it would really ease things if I did not have to have an exception for this specific setting. Anyway there is no reason this variable is an exception, and if there's a technical impossibility it should be documented.\\n\", \n    \"component_name\": \"facts caching\", \n    \"component_raw\": \"facts caching\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17790\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Setting the variable in extra vars has no effect\", \n    \"title\": \"ansible_fact_caching not honored in extra vars\"\n  }, \n  \"17796\": {\n    \"ansible_version\": \"ansible 2.2.0 (plugin_path_cache_clear 866f8d99a8) last updated 2016/09/28 112341 (GMT -400)\\nlib/ansible/modules/core (detached HEAD 0a7ebef14e) last updated 2016/09/28 093755 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD aeecd8b09e) last updated 2016/09/27 143505 (GMT -400)\\nconfig file = /home/adrian/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\nlib/ansible/plugins/**init**.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0 (plugin_path_cache_clear 866f8d99a8) last updated 2016/09/28 11:23:41 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD 0a7ebef14e) last updated 2016/09/28 09:37:55 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD aeecd8b09e) last updated 2016/09/27 14:35:05 (GMT -400)\\n  config file = /home/adrian/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n\\n```\\n##### SUMMARY\\n\\nWhen directories are added to plugin and module search\\npaths, clear the plugin_path_cache and the _search_paths\\nvalues, so that find_plugin will look on fs (including added\\nrole specific paths) for plugins/modules instead of using\\npreviously found plugin/module from cache.\\n\\n_searched_paths is used for bookkeeping and to reduce unneeded\\nsearches, so it needs to be emptied as well.\\n\\n(revised version of 5a57313dd72e574d38272364df3ef01d6a3646ef)\\n\", \n    \"component_name\": \"lib/ansible/plugins/init.py\", \n    \"component_raw\": \"lib/ansible/plugins/**init**.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17796\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"in progress\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When directories are added to plugin and module search\\npaths, clear the plugin_path_cache and the _search_paths\\nvalues, so that find_plugin will look on fs (including added\\nrole specific paths) for plugins/modules instead of using\\npreviously found plugin/module from cache.\\n\\n_searched_paths is used for bookkeeping and to reduce unneeded\\nsearches, so it needs to be emptied as well.\\n\\n(revised version of 5a57313dd72e574d38272364df3ef01d6a3646ef)\", \n    \"title\": \"Enable roles to override modules\"\n  }, \n  \"17807\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0 (devel 1c7890bf86) last updated 2016/09/26 083927 (GMT +000)\\nlib/ansible/modules/core (detached HEAD edf361a5d4) last updated 2016/09/27 091449 (GMT +000)\\nlib/ansible/modules/extras (detached HEAD 8aa338ddfa) last updated 2016/09/27 091453 (GMT +000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n Bug Report\\n##### COMPONENT NAME\\n\\nasynchronous tasks\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\n$ ansible --version\\nansible 2.2.0 (devel 1c7890bf86) last updated 2016/09/26 08:39:27 (GMT +000)\\n  lib/ansible/modules/core: (detached HEAD edf361a5d4) last updated 2016/09/27 09:14:49 (GMT +000)\\n  lib/ansible/modules/extras: (detached HEAD 8aa338ddfa) last updated 2016/09/27 09:14:53 (GMT +000)\\n  config file =\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nNo config set\\n##### OS / ENVIRONMENT\\n\\n```\\n$ cat /etc/redhat-release\\nCentOS Linux release 7.2.1511 (Core)\\n```\\n##### SUMMARY\\n\\nWhen running tasks with the `async` parameter set, conditions that use attributes of the result object of these tasks do not seem to work (e.g. an `unless` checking `someresult.stdout`), seemingly because these attributes are not initialized once the condition is checked.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\nAn example task having the `async` parameter set, as well as the `until` parameter:\\n\\n```\\n  tasks:\\n    - name: get url response\\n      command: curl http://localhost:8000\\n      register: url_response\\n      until: \\\"'SUCCESS' in url_response.stdout\\\"\\n      retries: 10\\n      delay: 5\\n      async: 20\\n      poll: 3\\n```\\n\\nNote that the effect is the same for a simple `ls -la` command on which I'd check for the output.\\n##### EXPECTED RESULTS\\n\\nThe command would be executed asynchronously until the specified condition in `until` was met, after which I'd expect `async_status` to be able to treat the task as \\\"finished\\\". \\n\\nI'm not sure if this is by design of the asynchronous behavior, in that asynchronous behavior is really only meant to execute long running tasks, instead of tasks retrying until a certain condition is met. \\n##### ACTUAL RESULTS\\n\\nAn error was thrown indicating that the response object of the command did not (yet?) contain the stdout attribute.\\n\\nSSH connection logging omitted for brevity.\\n\\n```\\nfatal: [myhost]: FAILED! => {\\n    \\\"failed\\\": true,\\n    \\\"msg\\\": \\\"The conditional check ''SUCCESS' in url_response.stdout' failed. The error was: error while evaluating conditional ('SUCCESS' in url_response.stdout): Unable to look up a name or access an a\\nttribute in template string ({% if 'SUCCESS' in url_response.stdout %} True {% else %} False {% endif %}).\\\\nMake sure your variable name does not contain invalid characters like '-': argument of type 'S\\ntrictUndefined' is not iterable\\\"\\n}\\n```\\n\", \n    \"component_name\": \"asynchronous tasks\", \n    \"component_raw\": \"asynchronous tasks\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17807\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When running tasks with the `async` parameter set, conditions that use attributes of the result object of these tasks do not seem to work (e.g. an `unless` checking `someresult.stdout`), seemingly because these attributes are not initialized once the condition is checked.\", \n    \"title\": \"Async task fails doing attribute lookup during \\\"do until\\\" scenario\"\n  }, \n  \"17820\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nPacket.Net dynamic inventory script\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nAdd dynamic inventory script and config file for Packet.net\\n- The script and config have been shamelessly cargo\\n  culted from the `ec2.py` and `ec2.ini` dynamic inventory\\n  script.\\n- This is an initial version and could very well be\\n  enhanced and made better.\\n\\nExamples:\\n\\n`PACKET_NET_API_KEY=<MY_AUTH_TOKEN> --list` to get inventory for\\nall hosts in Packet.net in all projects (defaults to `--list`\\nif no argument provided).\\n\\n`PACKET_NET_API_KEY=<MY_AUTH_TOKEN> --host HOST` to get variables\\nfor a single host.\\n\\nPlease let me know if any changes are required.\\n\", \n    \"component_name\": \"packet.net dynamic inventory script\", \n    \"component_raw\": \"Packet.Net dynamic inventory script\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17820\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:inventory/contrib_script\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Add dynamic inventory script and config file for Packet.net\\n- The script and config have been shamelessly cargo\\n  culted from the `ec2.py` and `ec2.ini` dynamic inventory\\n  script.\\n- This is an initial version and could very well be\\n  enhanced and made better.\\n\\nExamples:\\n\\n`PACKET_NET_API_KEY=<MY_AUTH_TOKEN> --list` to get inventory for\\nall hosts in Packet.net in all projects (defaults to `--list`\\nif no argument provided).\\n\\n`PACKET_NET_API_KEY=<MY_AUTH_TOKEN> --host HOST` to get variables\\nfor a single host.\\n\\nPlease let me know if any changes are required.\", \n    \"title\": \"Add dynamic inventory script and config for Packet.net\"\n  }, \n  \"17822\": {\n    \"ansible_version\": \"ansible 2.2.0 (Conditional_classmethod_constructor ded30ac93e) last updated 2016/09/29 192358 (GMT -400)\\nlib/ansible/modules/core (detached HEAD 537a7eb924) last updated 2016/09/29 164801 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD a58e1d59c0) last updated 2016/09/29 164801 (GMT -400)\\nconfig file = /home/adrian/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- code cleanup\\n##### COMPONENT NAME\\n\\nlib/ansible/playbook/conditional.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0 (Conditional_classmethod_constructor ded30ac93e) last updated 2016/09/29 19:23:58 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD 537a7eb924) last updated 2016/09/29 16:48:01 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD a58e1d59c0) last updated 2016/09/29 16:48:01 (GMT -400)\\n  config file = /home/adrian/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n\\n\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\n<!---\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\ncommit message and your description; but you should still explain what\\nthe change does.\\n-->\\n\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\n\\n```\\n\\n```\\n\\nSince Conditional is primarily a mixin class, remove\\nit's **init** that had to avoid clobbering self._loader\\nand add a @classmethod alt constructor ('from_loader') that\\ncreates and returns an instance with the loader associated\\nto it.\\n\\nReplace the runtime exception with a (runtime) assert to\\nthrow errors on improper api usage.\\n\", \n    \"component_name\": \"lib/ansible/playbook/conditional.py\", \n    \"component_raw\": \"lib/ansible/playbook/conditional.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17822\", \n    \"issue_type\": \"code cleanup\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:executor/task_executor\", \n      \"c:playbook/conditional\", \n      \"c:plugins/action\", \n      \"code_cleanup\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"```\\n\\n```\\n\\nSince Conditional is primarily a mixin class, remove\\nit's **init** that had to avoid clobbering self._loader\\nand add a @classmethod alt constructor ('from_loader') that\\ncreates and returns an instance with the loader associated\\nto it.\\n\\nReplace the runtime exception with a (runtime) assert to\\nthrow errors on improper api usage.\", \n    \"title\": \"Use a alt constructor for Conditional\"\n  }, \n  \"17824\": {\n    \"ansible_version\": \"ansible 2.2.0 (hashi_vault_clean 29aff322e3) last updated 2016/09/29 195836 (GMT -400)\\nlib/ansible/modules/core (detached HEAD 537a7eb924) last updated 2016/09/29 164801 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD a58e1d59c0) last updated 2016/09/29 164801 (GMT -400)\\nconfig file = /home/adrian/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bugfix Pull Request\\n- Docs Pull Request\\n##### COMPONENT NAME\\n\\nlib/ansible/plugins/lookup/hashi_vault.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0 (hashi_vault_clean 29aff322e3) last updated 2016/09/29 19:58:36 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD 537a7eb924) last updated 2016/09/29 16:48:01 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD a58e1d59c0) last updated 2016/09/29 16:48:01 (GMT -400)\\n  config file = /home/adrian/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n\\n\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\n<!---\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\ncommit message and your description; but you should still explain what\\nthe change does.\\n-->\\n\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\n\\n```\\n\\n```\\n\\nUse standard import error handling.\\nMake error messages more specific.\\nUse more python idiomatic code.\\n\", \n    \"component_name\": \"lib/ansible/plugins/lookup/hashi_vault.py\", \n    \"component_raw\": \"lib/ansible/plugins/lookup/hashi_vault.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17824\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:plugins/lookup\", \n      \"in progress\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"```\\n\\n```\\n\\nUse standard import error handling.\\nMake error messages more specific.\\nUse more python idiomatic code.\", \n    \"title\": \"[UNTESTED] code cleanup and error improvement for hashi_vault\"\n  }, \n  \"17828\": {\n    \"ansible_version\": \"ansible 2.2.0 (inventory_host 7fe108ae20) last updated 2016/09/29 211542 (GMT -400)\\nlib/ansible/modules/core (detached HEAD 537a7eb924) last updated 2016/09/29 164801 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD a58e1d59c0) last updated 2016/09/29 164801 (GMT -400)\\nconfig file = /home/adrian/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Code style\\n##### COMPONENT NAME\\n\\nlib/ansible/inventory/host.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0 (inventory_host 7fe108ae20) last updated 2016/09/29 21:15:42 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD 537a7eb924) last updated 2016/09/29 16:48:01 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD a58e1d59c0) last updated 2016/09/29 16:48:01 (GMT -400)\\n  config file = /home/adrian/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n\\n\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\n<!---\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\ncommit message and your description; but you should still explain what\\nthe change does.\\n-->\\n\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\n\\n```\\n\\n```\\n\\nminor style cleans, mainly moving **init** to first method and whitespace\\n\", \n    \"component_name\": \"lib/ansible/inventory/host.py\", \n    \"component_raw\": \"lib/ansible/inventory/host.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17828\", \n    \"issue_type\": \"Code style\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:inventory/host\", \n      \"in progress\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"```\\n\\n```\\n\\nminor style cleans, mainly moving **init** to first method and whitespace\", \n    \"title\": \"style changes for inventory/host.py\"\n  }, \n  \"17843\": {\n    \"ansible_version\": \"NA\", \n    \"body\": \"##### ISSUE TYPE\\n\\nFeature Idea\\n##### COMPONENT NAME\\n\\nModule: nmcli - Manage Networking\\n##### ANSIBLE VERSION\\n\\nNA\\n##### CONFIGURATION\\n\\nNA\\n##### OS / ENVIRONMENT\\n\\ncontrol machine: F24 workstation\\nmanaged nodes: centos 7.2\\n##### SUMMARY\\n\\nIt would be helpful if the nmcli module had the ability to reset the search domain. \\n(some clients need some crazy patches till things can be fixed properly)\\n##### STEPS TO REPRODUCE\\n\\nManaged Node: CentOS (latest)\\n### Precondition\\n\\n``` bash\\n$ sudo cat /etc/resolv.conf \\n# Generated by NetworkManager\\nsearch bad-domain.tld\\nnameserver 8.8.8.8\\nnameserver 4.4.4.4\\n```\\n### Solution\\n\\nGet connection name\\n\\n``` bash\\nnmcli dev status\\nDEVICE       TYPE      STATE      CONNECTION  \\neno16780032  ethernet  connected  **eno16780032** \\nlo           loopback  unmanaged  --          \\n```\\n\\nCheck the search domain\\n\\n``` bash\\nsudo nmcli con show eno16780032 | grep ipv4.dns-search\\nipv4.dns-search:                        bad-domain.tld\\n```\\n\\nModify search domain associated with the connection\\n\\n``` bash\\nsudo nmcli con mod eno16780032 ipv4.dns-search \\\"good-domain.tld\\\"\\n```\\n\\nVerify changes to the search domain\\n\\n``` bash\\nsudo nmcli con show eno16780032 | grep ipv4.dns-search\\nipv4.dns-search:                        good-domain.tld\\n```\\n\\nRestart the network manager service\\n\\n``` bash\\nsudo systemctl restart NetworkManager\\n```\\n\\nGet the net results\\n\\n``` bash\\n$ sudo cat /etc/resolv.conf \\n# Generated by NetworkManager\\nsearch good-domain.tld\\nnameserver NS1-IP\\nnameserver NS2-IP\\n```\\n### The Hack\\n\\nJust issuing the command helps us get it done for now.\\n\\n```\\n- hosts: all\\n  become: yes \\n  become_method: sudo\\n  tasks:\\n      - name: setting DNS resolver config\\n        nmcli:\\n          conn_name=eno16780032\\n          dns4=[\\\"NS1-IP\\\", \\\"NS2-IP\\\"]\\n          state=present\\n      - name: setting DNS resolver - search domain\\n        command: /usr/bin/nmcli con mod connName ipv4.dns-search \\\"good-domain.tld\\\"\\n      - name: restart NetworkManager service\\n        service: name=NetworkManager state=restarted\\n```\\n##### EXPECTED RESULTS\\n\\nThe search domain is modified from the incorrect domain to the correct domain.\\nThese settings persist through reboots.\\n##### ACTUAL RESULTS\\n\\nThis works; it's just hacky. Perhaps search domain modification should exist for those \\\"special\\\" clients. Discuss it amongst yourselves. \\n\", \n    \"component_name\": \"nmcli - manage networking\", \n    \"component_raw\": \"Module: nmcli - Manage Networking\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17843\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nmcli.py\", \n    \"summary\": \"It would be helpful if the nmcli module had the ability to reset the search domain. \\n(some clients need some crazy patches till things can be fixed properly)\", \n    \"title\": \"RFE: Add network manager ipv4.dns-search to the nmcli module\"\n  }, \n  \"17852\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nwith_sequence\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.0.0\\n  config file =\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\nNo changes\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\n`with_sequence` sets item to a series of unicode values instead of integer values. This makes it impossible to do arithmetic with them.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\nThis fails:\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n- hosts: localhost\\n  tasks:\\n    - debug: msg=\\\"hello {{10+item}}\\\"\\n      with_sequence: start=1 end=9\\n```\\n\\nThis works:\\n\\n```\\n- hosts: localhost\\n  tasks:\\n    - debug: msg=\\\"hello {{10+item}}\\\"\\n      with_items: [1, 2, 3, 4, 5, 6, 7, 8, 9]\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\n\\\"hello 11\\\" to \\\"hello 19\\\"\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nTASK [debug] *******************************************************************\\nfatal: [localhost]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"Unexpected templating type error occurred on (hello {{10+item}}): unsupported operand type(s) for +: 'int' and 'unicode'\\\"}\\n```\\n\\nBut using `with_items` instead of `with_sequence` it's fine:\\n\\n```\\nok: [localhost] => (item=1) => {\\n    \\\"item\\\": 1,\\n    \\\"msg\\\": \\\"hello 11\\\"\\n}\\nok: [localhost] => (item=2) => {\\n    \\\"item\\\": 2,\\n    \\\"msg\\\": \\\"hello 12\\\"\\n}\\n... etc\\n```\\n\", \n    \"component_name\": \"with_sequence\", \n    \"component_raw\": \"with_sequence\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17852\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"`with_sequence` sets item to a series of unicode values instead of integer values. This makes it impossible to do arithmetic with them.\", \n    \"title\": \"with_sequence should provide int (not unicode) values\"\n  }, \n  \"17857\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\nasync_wrapper.ps1\\n\", \n    \"component_name\": \"async_wrapper.ps1\", \n    \"component_raw\": \"async_wrapper.ps1\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17857\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"bug\", \n      \"in progress\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"test\", \n      \"windows\"\n    ], \n    \"module_match\": null, \n    \"summary\": null, \n    \"title\": \"add windows async_wrapper integration loop test\"\n  }, \n  \"17871\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nipaddr filter\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.2.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nThe ipaddr('net') filter doesn't return anything when given a host address. It only works for network addresses.\\n##### STEPS TO REPRODUCE\\n\\n```\\ndebug: msg=\\\"{{ '192.168.0.0/255.255.255.0'|ipaddr('net') }}\\\"\\ndebug: msg=\\\"{{ '192.168.0.1/255.255.255.0'|ipaddr('net') }}\\\"\\n```\\n##### EXPECTED RESULTS\\n\\n```\\nSUCCESS => {\\n    \\\"msg\\\": \\\"192.168.0.0/24\\\"\\n}\\nSUCCESS => {\\n    \\\"msg\\\": \\\"192.168.0.0/24\\\"\\n}\\n```\\n##### ACTUAL RESULTS\\n\\n```\\nSUCCESS => {\\n    \\\"msg\\\": \\\"192.168.0.0/24\\\"\\n}\\nSUCCESS => {\\n    \\\"msg\\\": \\\"\\\"\\n}\\n```\\n##### WORKAROUND\\n\\n```\\ndebug: msg=\\\"{{ ('192.168.0.1/255.255.255.0'|ipaddr('network') ~ '/255.255.255.0')|ipaddr('net') }}\\\"\\n\\nSUCCESS => {\\n    \\\"msg\\\": \\\"192.168.0.0/24\\\"\\n}\\n```\\n\", \n    \"component_name\": \"ipaddr filter\", \n    \"component_raw\": \"ipaddr filter\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17871\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The ipaddr('net') filter doesn't return anything when given a host address. It only works for network addresses.\", \n    \"title\": \"ipaddr('net') doesn't work with host address (only network)\"\n  }, \n  \"17872\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nipaddr filter\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.2.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nThe ipaddr('network') filter returns an empty string when given a /32 subnet.\\n##### STEPS TO REPRODUCE\\n\\n```\\nitem:\\n  ip: 127.0.0.1\\n  subnet: 255.255.255.255\\n```\\n\\n```\\ndebug: msg=\\\"{{ (item.ip ~ '/' item.subnet|ipaddr('network') ~ '/' ~ item.subnet)|ipaddr('net') }}\\\"\\ndebug: msg=\\\"{{ (item.ip ~ '/' item.subnet|ipaddr('network') ~ '/' ~ item.subnet)|ipaddr('net')|default('127.0.0.1/32') }}\\\"\\n```\\n##### EXPECTED RESULTS\\n\\n```\\nSUCCESS => {\\n    \\\"msg\\\": \\\"127.0.0.1/32\\\"\\n}\\nSUCCESS => {\\n    \\\"msg\\\": \\\"127.0.0.1/32\\\"\\n}\\n```\\n##### ACTUAL RESULTS\\n\\n```\\nSUCCESS => {\\n    \\\"msg\\\": \\\"\\\"\\n}\\nSUCCESS => {\\n    \\\"msg\\\": \\\"\\\"\\n}\\n```\\n##### WORKAROUND\\n\\n```\\ndebug: msg=\\\"{{ (item.ip ~ '/32' if item.subnet == '255.255.255.255' else (item.ip ~ '/' item.subnet|ipaddr('network') ~ '/' ~ item.subnet)|ipaddr('net') }}\\\"\\n\\nSUCCESS => {\\n    \\\"msg\\\": \\\"127.0.0.1/32\\\"\\n}\\n```\\n\", \n    \"component_name\": \"ipaddr filter\", \n    \"component_raw\": \"ipaddr filter\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17872\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The ipaddr('network') filter returns an empty string when given a /32 subnet.\", \n    \"title\": \"ipaddr('network') doesn't work with /32 addresses\"\n  }, \n  \"17876\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nansible-playbook\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.2.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nUbuntu 14.04\\n\\n```\\n# ssh -V\\nOpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8, OpenSSL 1.0.1f 6 Jan 2014\\n```\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nThere is missing `~/.ansible/cp` directory. While executing `ssh` with `ControlPath` OpenSSH \\u2013 no directory inside on `~/.ansible/cp/` can be created because of missing parent dir.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\nInstall Ansible 2.1.2.0 from apt or pip. Check ~/.ansible directory.\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\n<myhost.com> ESTABLISH SSH CONNECTION FOR USER: ubuntu\\n<jzapp.io> SSH: ansible.cfg set ssh_args: (-o)(ControlMaster=auto)(-o)(ControlPersist=60s)\\n<jzapp.io> SSH: ANSIBLE_REMOTE_PORT/remote_port/ansible_port set: (-o)(Port=22)\\n<jzapp.io> SSH: ANSIBLE_PRIVATE_KEY_FILE/private_key_file/ansible_ssh_private_key_file set: (-o)(IdentityFile=\\\"ansible/keys/jzappio-key.pem\\\")\\n<jzapp.io> SSH: ansible_password/ansible_ssh_pass not set: (-o)(KbdInteractiveAuthentication=no)(-o)(PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey)(-o)(PasswordAuthentication=no)\\n<jzapp.io> SSH: ANSIBLE_REMOTE_USER/remote_user/ansible_user/user/-u set: (-o)(User=ubuntu)\\n<jzapp.io> SSH: ANSIBLE_TIMEOUT/timeout set: (-o)(ConnectTimeout=10)\\n<jzapp.io> SSH: PlayContext set ssh_common_args: ()\\n<jzapp.io> SSH: PlayContext set ssh_extra_args: ()\\n<jzapp.io> SSH: found only ControlPersist; added ControlPath: (-o)(ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r)\\n<jzapp.io> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o Port=22 -o 'IdentityFile=\\\"ansible/keys/jzappio-key.pem\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ubuntu -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r jzapp.io '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo /tmp/ansible-tmp-1475505073.67-7461893316535 `\\\" && echo ansible-tmp-1475505073.67-7461893316535=\\\"` echo /tmp/ansible-tmp-1475505073.67-7461893316535 `\\\" ) && sleep 0'\\\"'\\\"''\\nfatal: [jzappio]: UNREACHABLE! => {\\\"changed\\\": false, \\\"msg\\\": \\\"Failed to connect to the host via ssh.\\\", \\\"unreachable\\\": true}\\n```\\n\\n<myhost.com> ESTABLISH SSH CONNECTION FOR USER: ubuntu\\n<myhost.com> SSH: ansible.cfg set ssh_args: (-o)(ControlMaster=auto)(-o)(ControlPersist=60s)\\n<myhost.com> SSH: ANSIBLE_REMOTE_PORT/remote_port/ansible_port set: (-o)(Port=22)\\n<myhost.com> SSH: ANSIBLE_PRIVATE_KEY_FILE/private_key_file/ansible_ssh_private_key_file set: (-o)(IdentityFile=\\\"ansible/keys/myhost-key.pem\\\")\\n<myhost.com> SSH: ansible_password/ansible_ssh_pass not set: (-o)(KbdInteractiveAuthentication=no)(-o)(PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey)(-o)(PasswordAuthentication=no)\\n<myhost.com> SSH: ANSIBLE_REMOTE_USER/remote_user/ansible_user/user/-u set: (-o)(User=ubuntu)\\n<myhost.com> SSH: ANSIBLE_TIMEOUT/timeout set: (-o)(ConnectTimeout=10)\\n<myhost.com> SSH: PlayContext set ssh_common_args: ()\\n<myhost.com> SSH: PlayContext set ssh_extra_args: ()\\n<myhost.com> SSH: found only ControlPersist; added ControlPath: (-o)(ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r)\\n<myhost.com> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o Port=22 -o 'IdentityFile=\\\"ansible/keys/myhost-key.pem\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ubuntu -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r myhost.com '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"`echo /tmp/ansible-tmp-1475505073.67-7461893316535`\\\" && echo ansible-tmp-1475505073.67-7461893316535=\\\"`echo /tmp/ansible-tmp-1475505073.67-7461893316535`\\\" ) && sleep 0'\\\"'\\\"''\\nfatal: [myhost]: UNREACHABLE! => {\\\"changed\\\": false, \\\"msg\\\": \\\"Failed to connect to the host via ssh.\\\", \\\"unreachable\\\": true}\\n\\n```\\n\\nWhile executing above `ssh` command in terminal:\\n```\\n\\n...\\ndebug1: setting up multiplex master socket\\ndebug3: muxserver_listen: temporary control path /root/.ansible/cp/ansible-ssh-myhost.com-22-ubuntu.VMODcuk3ZKNVqT6S\\nmuxserver_listen bind(): No such file or directory\\n\\n```\\n\\nI'm not sure which part is responsible for creation of `~/.ansible/cp` but it's definitely missing.\\n```\\n\", \n    \"component_name\": \"ansible-playbook\", \n    \"component_raw\": \"ansible-playbook\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17876\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"There is missing `~/.ansible/cp` directory. While executing `ssh` with `ControlPath` OpenSSH  no directory inside on `~/.ansible/cp/` can be created because of missing parent dir.\", \n    \"title\": \"Ansible is not creating proper directory structure in ~/.ansible\"\n  }, \n  \"17885\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nplugin loader\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\n2.3\\n```\\n##### SUMMARY\\n\\nAllow for a playbook such as ...\\n\\n```\\n- hosts: el6host\\n  connection: local\\n  gather_facts: False\\n  tasks:\\n    - jctanner.pinger.pinger:\\n```\\n\\n\\\"jctanner.pinger\\\" is the galaxy role reference and \\\"pinger\\\" is a module file in the role's library path. Once the playbook is run, a few things will happen:\\n1. Check if the module has two periods in it\\n2. Split the name into the role name and the module name\\n3. Check if the role is installed, and install if not\\n4. Put the module's FQN into the plugin loader\\n\\nThe task will then operate like any other module was called.\\n\", \n    \"component_name\": \"plugin loader\", \n    \"component_raw\": \"plugin loader\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17885\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:galaxy/\", \n      \"feature\", \n      \"in progress\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Allow for a playbook such as ...\\n\\n```\\n- hosts: el6host\\n  connection: local\\n  gather_facts: False\\n  tasks:\\n    - jctanner.pinger.pinger:\\n```\\n\\n\\\"jctanner.pinger\\\" is the galaxy role reference and \\\"pinger\\\" is a module file in the role's library path. Once the playbook is run, a few things will happen:\\n1. Check if the module has two periods in it\\n2. Split the name into the role name and the module name\\n3. Check if the role is installed, and install if not\\n4. Put the module's FQN into the plugin loader\\n\\nThe task will then operate like any other module was called.\", \n    \"title\": \"Allow for namespaced galaxy module calls\"\n  }, \n  \"17888\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel 5bc3cb278c) last updated 2016/10/03 012259 (GMT -700)\\nlib/ansible/modules/core (detached HEAD e4c5a13a7a) last updated 2016/10/03 012304 (GMT -700)\\nlib/ansible/modules/extras (detached HEAD df35d324d6) last updated 2016/10/03 012308 (GMT -700)\\nconfig file = /home/mj/ansible/etc/ansible/config\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\ncompat/inventory/digital_ocean.py\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0 (devel 5bc3cb278c) last updated 2016/10/03 01:22:59 (GMT -700)\\n  lib/ansible/modules/core: (detached HEAD e4c5a13a7a) last updated 2016/10/03 01:23:04 (GMT -700)\\n  lib/ansible/modules/extras: (detached HEAD df35d324d6) last updated 2016/10/03 01:23:08 (GMT -700)\\n  config file = /home/mj/ansible/etc/ansible/config\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nThis change creates groups based on the tags assigned to droplets to allow more fine grain controls over groups.\\n\\n```\\nNo output provided as it contains private information I would rather not publish.\\n```\\n\", \n    \"component_name\": \"compat/inventory/digital_ocean.py\", \n    \"component_raw\": \"compat/inventory/digital_ocean.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17888\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This change creates groups based on the tags assigned to droplets to allow more fine grain controls over groups.\\n\\n```\\nNo output provided as it contains private information I would rather not publish.\\n```\", \n    \"title\": \"Create groups from tags\"\n  }, \n  \"17908\": {\n    \"ansible_version\": \"ansible 2.2.0.0 (detached HEAD 44faad0593) last updated 2016/10/05 115825 (GMT +100)\\nlib/ansible/modules/core (detached HEAD d66983b43e) last updated 2016/10/05 115845 (GMT +100)\\nlib/ansible/modules/extras (detached HEAD 35132b892f) last updated 2016/10/05 115851 (GMT +100)\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\n`become`\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0.0 (detached HEAD 44faad0593) last updated 2016/10/05 11:58:25 (GMT +100)\\n  lib/ansible/modules/core: (detached HEAD d66983b43e) last updated 2016/10/05 11:58:45 (GMT +100)\\n  lib/ansible/modules/extras: (detached HEAD 35132b892f) last updated 2016/10/05 11:58:51 (GMT +100)\\n  configured module search path = Default w/o overrides\\n```\\n##### OS / ENVIRONMENT\\n\\nSolaris.\\n##### SUMMARY\\n\\nDirective `become_user` fails when the sudo user can't read the home directory of the ssh user.\\n##### STEPS TO REPRODUCE\\n\\n``` bash\\nchmod og-rx ~\\n```\\n\\n``` yaml\\n- hosts: localhost\\n  tasks:\\n    - command: id\\n      become: true\\n      become_user: any_user_that_is_not_root\\n```\\n##### EXPECTED RESULTS\\n\\nThe command should be run as the `become_user` user.  This worked fine in 2.1.\\n##### ACTUAL RESULTS\\n\\n```\\nTASK [command] *****************************************************************\\ntask path: /home/mavit/etc/ansible/test.yml:3\\nUsing module file /home/mavit/src/ansible/lib/ansible/modules/core/commands/command.py\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: mavit\\n<127.0.0.1> EXEC /bin/sh -c '/usr/local/bin/sudo -H -S  -p \\\"[sudo via ansible, key=oxgugeqsazjveqbghcjlfkljckxfnhub] password: \\\" -u any_user_that_is_not_root /bin/sh -c '\\\"'\\\"'echo BECOME-SUCCESS-oxgugeqsazjveqbghcjlfkljckxfnhub; /usr/bin/python'\\\"'\\\"' && sleep 0'\\nAn exception occurred during task execution. The full traceback is:\\nTraceback (most recent call last):\\n  File \\\"<stdin>\\\", line 10, in <module>\\n  File \\\"/usr/lib/python2.7/posixpath.py\\\", line 371, in abspath\\n    cwd = os.getcwd()\\nOSError: [Errno 13] Permission denied\\n\\nfatal: [localhost]: FAILED! => {\\n    \\\"changed\\\": false, \\n    \\\"failed\\\": true, \\n    \\\"invocation\\\": {\\n        \\\"module_name\\\": \\\"command\\\"\\n    }, \\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"<stdin>\\\\\\\", line 10, in <module>\\\\n  File \\\\\\\"/usr/lib/python2.7/posixpath.py\\\\\\\", line 371, in abspath\\\\n    cwd = os.getcwd()\\\\nOSError: [Errno 13] Permission denied\\\\n\\\", \\n    \\\"module_stdout\\\": \\\"\\\", \\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\n}\\n```\\n\", \n    \"component_name\": \"become\", \n    \"component_raw\": \"`become`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17908\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Directive `become_user` fails when the sudo user can't read the home directory of the ssh user.\", \n    \"title\": \"User's home directory must be readable for become_user to work with pipelining enabled\"\n  }, \n  \"17911\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nAll tasks\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\nUsing Ansible Tower\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nUbuntu 14.04.4\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nI want to run some commands using the AWS CLI (in my particular case, creating new access keys for a user and encrypting them).  I am storing the AWS Access Keys Ansible will use to use the CLI in a Vault file and including them, then passing them to environment variables:\\n\\n```\\n  - name: \\\"Create a new access key for IAM User {{user}}\\\"\\n    shell:\\n        cmd: \\\"aws iam create-access-key --user-name {{user}}\\\"\\n    environment:\\n        AWS_ACCESS_KEY_ID: \\\"{{AUTH_AWS_ACCESS_KEY_ID}}\\\"\\n        AWS_SECRET_ACCESS_KEY: \\\"{{AUTH_AWS_SECRET_ACCESS_KEY}}\\\"\\n    register: access_key_output\\n    no_log: true\\n\\n  - name: Parse the output to JSON\\n    set_fact:\\n        access_key: \\\"{{access_key_output.stdout|from_json}}\\\"\\n    no_log: true\\n\\n  - name: Extract access key ID and secret\\n    set_fact:\\n        aws_access_key_id: \\\"{{access_key.AccessKey.AccessKeyId}}\\\"\\n        aws_secret_access_key: \\\"{{access_key.AccessKey.SecretAccessKey}}\\\"\\n    no_log: true\\n\\n    # Now we go on to save the newly-set variables into a template and encrypt it\\n```\\n\\nI can apply `no_log: true` to the tasks where there is sensitive output, to hide the values.  But there is no mechanism to prevent the values of environment variables being output in verbose logs (see the XXXs on the penultimate line):\\n\\n```\\nTASK [common : Create a new access key for IAM User bob] *****\\ntask path: /path/to/playbook/roles/common/tasks/main.yml:90\\n<10.0.1.143> ESTABLISH SSH CONNECTION FOR USER: ansible\\n<10.0.1.143> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ansible -o ConnectTimeout=10 -o ControlPath=/tmp/ansible_tower_H6lYAD/cp/ansible-ssh-%h-%p-%r 10.0.1.143 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1475680443.15-122804029783214 `\\\" && echo ansible-tmp-1475680443.15-122804029783214=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1475680443.15-122804029783214 `\\\" ) && sleep 0'\\\"'\\\"''\\n<10.0.1.143> PUT /tmp/tmpkLWcKJ TO /home/ansible/.ansible/tmp/ansible-tmp-1475680443.15-122804029783214/command\\n<10.0.1.143> SSH: EXEC sftp -b - -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ansible -o ConnectTimeout=10 -o ControlPath=/tmp/ansible_tower_H6lYAD/cp/ansible-ssh-%h-%p-%r '[10.0.1.143]'\\n<10.0.1.143> ESTABLISH SSH CONNECTION FOR USER: ansible\\n<10.0.1.143> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ansible -o ConnectTimeout=10 -o ControlPath=/tmp/ansible_tower_H6lYAD/cp/ansible-ssh-%h-%p-%r -tt 10.0.1.143 '/bin/sh -c '\\\"'\\\"'LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXXX /usr/bin/python /home/ansible/.ansible/tmp/ansible-tmp-1475680443.15-122804029783214/command; rm -rf \\\"/home/ansible/.ansible/tmp/ansible-tmp-1475680443.15-122804029783214/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\nchanged: [10.0.1.143] => {\\\"censored\\\": \\\"the output has been hidden due to the fact that 'no_log: true' was specified for this result\\\"}\\n```\\n\\nWhich means that the _really_ sensitive data is still output.  \\n\\nThere are ways I can circumvent this, by exporting the environment variables in the command, or by using an Ansible module (where the functionality is supported).  But this issue is not specific to AWS CLI, it applies whenever you have sensitive data in environment variables.\\n\\nI believe that setting `no_log: true` should suppress the output of all verbose logs as well as the 'standard' output.  If you're working in verbose mode, you are already debugging/working on a script, so temporarily commenting out the `no_log` directives should be simple enough.\\n\\nAlternatively, am I missing an existing feature?\\n\", \n    \"component_name\": \"all tasks\", \n    \"component_raw\": \"All tasks\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17911\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I want to run some commands using the AWS CLI (in my particular case, creating new access keys for a user and encrypting them).  I am storing the AWS Access Keys Ansible will use to use the CLI in a Vault file and including them, then passing them to environment variables:\\n\\n```\\n  - name: \\\"Create a new access key for IAM User {{user}}\\\"\\n    shell:\\n        cmd: \\\"aws iam create-access-key --user-name {{user}}\\\"\\n    environment:\\n        AWS_ACCESS_KEY_ID: \\\"{{AUTH_AWS_ACCESS_KEY_ID}}\\\"\\n        AWS_SECRET_ACCESS_KEY: \\\"{{AUTH_AWS_SECRET_ACCESS_KEY}}\\\"\\n    register: access_key_output\\n    no_log: true\\n\\n  - name: Parse the output to JSON\\n    set_fact:\\n        access_key: \\\"{{access_key_output.stdout|from_json}}\\\"\\n    no_log: true\\n\\n  - name: Extract access key ID and secret\\n    set_fact:\\n        aws_access_key_id: \\\"{{access_key.AccessKey.AccessKeyId}}\\\"\\n        aws_secret_access_key: \\\"{{access_key.AccessKey.SecretAccessKey}}\\\"\\n    no_log: true\\n\\n    # Now we go on to save the newly-set variables into a template and encrypt it\\n```\\n\\nI can apply `no_log: true` to the tasks where there is sensitive output, to hide the values.  But there is no mechanism to prevent the values of environment variables being output in verbose logs (see the XXXs on the penultimate line):\\n\\n```\\nTASK [common : Create a new access key for IAM User bob] *****\\ntask path: /path/to/playbook/roles/common/tasks/main.yml:90\\n<10.0.1.143> ESTABLISH SSH CONNECTION FOR USER: ansible\\n<10.0.1.143> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ansible -o ConnectTimeout=10 -o ControlPath=/tmp/ansible_tower_H6lYAD/cp/ansible-ssh-%h-%p-%r 10.0.1.143 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1475680443.15-122804029783214 `\\\" && echo ansible-tmp-1475680443.15-122804029783214=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1475680443.15-122804029783214 `\\\" ) && sleep 0'\\\"'\\\"''\\n<10.0.1.143> PUT /tmp/tmpkLWcKJ TO /home/ansible/.ansible/tmp/ansible-tmp-1475680443.15-122804029783214/command\\n<10.0.1.143> SSH: EXEC sftp -b - -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ansible -o ConnectTimeout=10 -o ControlPath=/tmp/ansible_tower_H6lYAD/cp/ansible-ssh-%h-%p-%r '[10.0.1.143]'\\n<10.0.1.143> ESTABLISH SSH CONNECTION FOR USER: ansible\\n<10.0.1.143> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ansible -o ConnectTimeout=10 -o ControlPath=/tmp/ansible_tower_H6lYAD/cp/ansible-ssh-%h-%p-%r -tt 10.0.1.143 '/bin/sh -c '\\\"'\\\"'LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXXX /usr/bin/python /home/ansible/.ansible/tmp/ansible-tmp-1475680443.15-122804029783214/command; rm -rf \\\"/home/ansible/.ansible/tmp/ansible-tmp-1475680443.15-122804029783214/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\nchanged: [10.0.1.143] => {\\\"censored\\\": \\\"the output has been hidden due to the fact that 'no_log: true' was specified for this result\\\"}\\n```\\n\\nWhich means that the _really_ sensitive data is still output.  \\n\\nThere are ways I can circumvent this, by exporting the environment variables in the command, or by using an Ansible module (where the functionality is supported).  But this issue is not specific to AWS CLI, it applies whenever you have sensitive data in environment variables.\\n\\nI believe that setting `no_log: true` should suppress the output of all verbose logs as well as the 'standard' output.  If you're working in verbose mode, you are already debugging/working on a script, so temporarily commenting out the `no_log` directives should be simple enough.\\n\\nAlternatively, am I missing an existing feature?\", \n    \"title\": \"Values of environment variables are unconditionally output in verbose logs, even when no_log: true\"\n  }, \n  \"17914\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nansible.cfg\\n##### SUMMARY\\n\\nMerge configurations instead of using the first configuration found.\\n\\nI think it would be helpful if ansible merged the configuation files instead of just using the first one it finds. This would allow to have a repo specific configurations while allowing people to keep their local settings such as forks or ssh options. Especially setting `roles_path` to `./` in a repo configs would allow big repos to place playbooks in a subdirectory while including them in site.yml in repo root. Without setting roles_path the playbooks in the sub directory can't find roles unless those are symlinked (suppose that's the same with group_vars and host_vars). Also it's not very feasible to set full paths in global or user local ansible.cfg when there are multiple ansible repos with separate roles.\\n\", \n    \"component_name\": \"ansible.cfg\", \n    \"component_raw\": \"ansible.cfg\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17914\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Merge\", \n    \"title\": \"Merge ansible config files\"\n  }, \n  \"17920\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nansible-playbook using statically included files\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.2.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nRunning ansible from the stable-2.1 branch fails after commit 6db31bb4c6f8b6338a38ae602d3b4f5ca8cbce5b was merged\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n1. Create playbook that uses include\\n2. clone ansible and use current stable-2.1 branch (currently at commit `6db31bb4c6f8b6338a38ae602d3b4f5ca8cbce5b`)\\n3. run playbook\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nPlaybook runs\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\nAnsible exits at start of playbook with\\n\\n```\\nERROR! Unexpected Exception: vv() got an unexpected keyword argument 'color'\\n```\\n\", \n    \"component_name\": \"ansible-playbook using statically included files\", \n    \"component_raw\": \"ansible-playbook using statically included files\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17920\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Running ansible from the stable-2.1 branch fails after commit 6db31bb4c6f8b6338a38ae602d3b4f5ca8cbce5b was merged\", \n    \"title\": \"vv() got an unexpected keyword argument 'color'\"\n  }, \n  \"17922\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 9962245b92) last updated 2016/10/06 095533 (GMT -400)\\nlib/ansible/modules/core (detached HEAD 0ee774ff15) last updated 2016/10/06 095559 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD 5cc72c3f06) last updated 2016/10/06 095559 (GMT -400)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\\nansible-playbook 2.2.0.0 (stable-2.2 be6396d5e9) last updated 2016/10/05 174002 (GMT -400)\\nlib/ansible/modules/core (detached HEAD a6b8215e62) last updated 2016/10/05 174510 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD d42975e068) last updated 2016/10/05 174511 (GMT -400)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\\nderek@derek-HP-EliteOne-800-G1-AiO~$ ansible-playbook play.yaml\\n[WARNING] provided hosts list is empty only localhost is available\\nansible-playbook 2.1.2.0 (stable-2.1 a7d0cc6e61) last updated 2016/10/05 174207 (GMT -400)\\nlib/ansible/modules/core (detached HEAD 4602021670) last updated 2016/10/05 174321 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD d312f34d9b) last updated 2016/10/05 174322 (GMT -400)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\\nderek@derek-HP-EliteOne-800-G1-AiO~$ ansible-playbook play.yaml\\n[WARNING] provided hosts list is empty only localhost is available\\nansible 2.1.2.0 (detached HEAD 29f2f26278) last updated 2016/10/06 112515 (GMT -400)\\nlib/ansible/modules/core (detached HEAD 17ee1cfaf9) last updated 2016/10/06 113032 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD d312f34d9b) last updated 2016/10/06 113032 (GMT -400)\\nconfig file =\\nconfigured module search path = Default w/o overrides\\nderek@derek-HP-EliteOne-800-G1-AiO~$ ansible-playbook --connection=local play.yaml\\n[WARNING] Host file not found /etc/ansible/hosts\\nansible 2.1.1.0 (detached HEAD 780c363482) last updated 2016/10/06 113254 (GMT -400)\\nlib/ansible/modules/core (detached HEAD 242368e99b) last updated 2016/10/06 113258 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD 14887a9ea8) last updated 2016/10/06 113258 (GMT -400)\\nconfig file =\\nconfigured module search path = Default w/o overrides\\nansible 2.0.0.2 (stable-2.0.0.1 3b5d7400de) last updated 2016/10/06 111152 (GMT -400)\\nlib/ansible/modules/core (detached HEAD ce6619bf5d) last updated 2016/10/06 111155 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD 29af26884e) last updated 2016/10/06 111155 (GMT -400)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report (same as #15713 and #14082)\\n##### COMPONENT NAME\\n- Handlers and variable interpolation\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.3.0 (devel 9962245b92) last updated 2016/10/06 09:55:33 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD 0ee774ff15) last updated 2016/10/06 09:55:59 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD 5cc72c3f06) last updated 2016/10/06 09:55:59 (GMT -400)\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n\\n```\\nansible-playbook 2.2.0.0 (stable-2.2 be6396d5e9) last updated 2016/10/05 17:40:02 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD a6b8215e62) last updated 2016/10/05 17:45:10 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD d42975e068) last updated 2016/10/05 17:45:11 (GMT -400)\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\nderek@derek-HP-EliteOne-800-G1-AiO:~$ ansible-playbook play.yaml \\n [WARNING]: provided hosts list is empty, only localhost is available\\n```\\n\\n```\\nansible-playbook 2.1.2.0 (stable-2.1 a7d0cc6e61) last updated 2016/10/05 17:42:07 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD 4602021670) last updated 2016/10/05 17:43:21 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD d312f34d9b) last updated 2016/10/05 17:43:22 (GMT -400)\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\nderek@derek-HP-EliteOne-800-G1-AiO:~$ ansible-playbook play.yaml \\n [WARNING]: provided hosts list is empty, only localhost is available\\n```\\n\\n```\\nansible 2.1.2.0 (detached HEAD 29f2f26278) last updated 2016/10/06 11:25:15 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD 17ee1cfaf9) last updated 2016/10/06 11:30:32 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD d312f34d9b) last updated 2016/10/06 11:30:32 (GMT -400)\\n  config file = \\n  configured module search path = Default w/o overrides\\nderek@derek-HP-EliteOne-800-G1-AiO:~$ ansible-playbook --connection=local play.yaml\\n [WARNING]: Host file not found: /etc/ansible/hosts\\n```\\n\\n```\\nansible 2.1.1.0 (detached HEAD 780c363482) last updated 2016/10/06 11:32:54 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD 242368e99b) last updated 2016/10/06 11:32:58 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD 14887a9ea8) last updated 2016/10/06 11:32:58 (GMT -400)\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n\\n```\\nansible 2.0.0.2 (stable-2.0.0.1 3b5d7400de) last updated 2016/10/06 11:11:52 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD ce6619bf5d) last updated 2016/10/06 11:11:55 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD 29af26884e) last updated 2016/10/06 11:11:55 (GMT -400)\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nNo change.\\n##### OS / ENVIRONMENT\\n- Ansible manager: Lubuntu 16.04.1\\n- Ansible worker: Ubuntu Server 16.04.1\\n- Python 2.7.12\\n##### SUMMARY\\n\\nAnsible 2.1.2.0, 2.1.1.0, and branches devel, stable-2.2, stable-2.1, and stable-2.0.0.1 do not resolve variable references in handler names.\\n##### STEPS TO REPRODUCE\\n- See #15713.\\n##### EXPECTED RESULTS\\n- See #15713.\\n\\nAnsible 2.1.0.0 produces the correct result: \\n\\n```\\nderek@derek-HP-EliteOne-800-G1-AiO:~$ ansible --version\\nansible 2.1.0.0 (detached HEAD b599477242) last updated 2016/10/06 11:36:36 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD 04a871d007) last updated 2016/10/06 11:36:38 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD b5fa2b3416) last updated 2016/10/06 11:36:38 (GMT -400)\\n  config file = \\n  configured module search path = Default w/o overrides\\nderek@derek-HP-EliteOne-800-G1-AiO:~$ ansible-playbook --connection=local play.yaml\\n [WARNING]: Host file not found: /etc/ansible/hosts\\n\\n [WARNING]: provided hosts list is empty, only localhost is available\\n\\n\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [bogus task with notify for someapp] **************************************\\nchanged: [localhost]\\n\\nRUNNING HANDLER [restart someapp] **********************************************\\nok: [localhost] => {\\n    \\\"msg\\\": \\\"some bogus module call in handler someapp\\\"\\n}\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=3    changed=1    unreachable=0    failed=0   \\n\\n```\\n\\nAnsible 2.0.2.0 on branch stable-2.0 produces the correct result: \\n\\n```\\nderek@derek-HP-EliteOne-800-G1-AiO:~$ ansible --version\\nansible 2.0.2.0 (stable-2.0 26078418e9) last updated 2016/10/06 11:13:05 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD 1e68326ea6) last updated 2016/10/06 11:13:07 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD 4eb177e545) last updated 2016/10/06 11:13:07 (GMT -400)\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\nderek@derek-HP-EliteOne-800-G1-AiO:~$ ansible-playbook --connection=local play.yaml\\n [WARNING]: provided hosts list is empty, only localhost is available\\n\\n\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [bogus task with notify for someapp] **************************************\\nchanged: [localhost]\\n\\nRUNNING HANDLER [restart someapp] **********************************************\\nok: [localhost] => {\\n    \\\"msg\\\": \\\"some bogus module call in handler someapp\\\"\\n}\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=3    changed=1    unreachable=0    failed=0   \\n\\n```\\n##### ACTUAL RESULTS\\n\\nResults for Ansible 2.1.2.0, 2.1.1.0, and branches devel, stable-2.2, stable-2.1, and stable-2.0.0.1:\\n\\n```\\n [WARNING]: provided hosts list is empty, only localhost is available\\n\\n\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [bogus task with notify for someapp] **************************************\\nchanged: [localhost]\\n\\nRUNNING HANDLER [restart {{ appname }}] ****************************************\\nok: [localhost] => {\\n    \\\"msg\\\": \\\"some bogus module call in handler someapp\\\"\\n}\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=3    changed=1    unreachable=0    failed=0   \\n\\n```\\n\", \n    \"component_name\": \"handlers and variable interpolation\", \n    \"component_raw\": \"- Handlers and variable interpolation\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17922\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Ansible 2.1.2.0, 2.1.1.0, and branches devel, stable-2.2, stable-2.1, and stable-2.0.0.1 do not resolve variable references in handler names.\", \n    \"title\": \"Ansible 2.3.0 (devel) and several earlier versions do not populate variables in handler names.\"\n  }, \n  \"17925\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nazure_rm_common.py\\n##### SUMMARY\\n\\nThe current definition of the azure_rm common module utils doesn't allow overriding the various built-in endpoints (auth, table/blob storage, service bus, etc). This will be necessary to allow connection to other Azure instances (eg, AzureChinaCloud, private Azure Stack instances). \\n\\nThe new Python SDK seems to support overriding the endpoints via host_base, so we should add the override capability to the env credential mapping and common module utility code.\\n\\nList of AzureChinaCloud endpoint URLs is at: https://github.com/Azure/azure-sdk-for-python/issues/284\\n\", \n    \"component_name\": \"azure_rm_common.py\", \n    \"component_raw\": \"azure_rm_common.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17925\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"azure\", \n      \"cloud\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/azure/azure.py\", \n    \"summary\": \"The current definition of the azure_rm common module utils doesn't allow overriding the various built-in endpoints (auth, table/blob storage, service bus, etc). This will be necessary to allow connection to other Azure instances (eg, AzureChinaCloud, private Azure Stack instances). \\n\\nThe new Python SDK seems to support overriding the endpoints via host_base, so we should add the override capability to the env credential mapping and common module utility code.\\n\\nList of AzureChinaCloud endpoint URLs is at: https://github.com/Azure/azure-sdk-for-python/issues/284\", \n    \"title\": \"Allow endpoint override in azure_rm module utils\"\n  }, \n  \"17927\": {\n    \"ansible_version\": \"devel branch\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n- stdout\\n##### ANSIBLE VERSION\\n\\n```\\ndevel branch\\n```\\n##### SUMMARY\\n\\nPer this discussion, it was suggested to put in an issue regarding static includes and to not show it with lowering the verbosity when you run the playbook\\n##### STEPS TO REPRODUCE\\n\\nHave static includes in your playbook and then run the provisioning it will output a bunch of static includes into the output.\\n##### EXPECTED RESULTS\\n\\nBe able to turn off that output either view verbosity level or override it in a stdout callback plugin.\\n##### ACTUAL RESULTS\\n\\nOutputs static includes before anything else is shown on the screen.\\n\", \n    \"component_name\": \"stdout\", \n    \"component_raw\": \"- stdout\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17927\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Per this discussion, it was suggested to put in an issue regarding static includes and to not show it with lowering the verbosity when you run the playbook\", \n    \"title\": \"Static Include Displayed in StdOut 2.2 (devel)\"\n  }, \n  \"17931\": {\n    \"ansible_version\": \"ansible 2.2.0.0 (stable-2.2-logging d24341a359) last updated 2016/10/07 102503 (GMT +100)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Feature request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nBasic\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n\\r\\n```\\r\\nansible 2.2.0.0 (stable-2.2-logging d24341a359) last updated 2016/10/07 10:25:03 (GMT +100)\\r\\n\\r\\n```\\r\\n##### SUMMARY\\r\\nAdd syslog logging when commands fail due to IOError or OSError\\r\\n\\r\\nThese two lines just add self.log() to IOErrors and OSErrors , so users will be able to see what went wrong on syslog and be able to send it to kibana and others.\\r\\n\", \n    \"component_name\": \"basic\", \n    \"component_raw\": \"Basic\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17931\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"c:module_utils/basic\", \n      \"feature\", \n      \"module_util\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Add syslog logging when commands fail due to IOError or OSError\\n\\n\\n\\nThese two lines just add self.log() to IOErrors and OSErrors , so users will be able to see what went wrong on syslog and be able to send it to kibana and others.\", \n    \"title\": \"Adding self.log() on IOErrors and OSErrros\"\n  }, \n  \"17933\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### Feature Pull Request\\n##### COMPONENT NAME\\n\\ncontrib/inventory/vultr.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.3.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nAdded vultr dynamic inventory script\\n\\n<!---\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\ncommit message and your description; but you should still explain what\\nthe change does.\\n-->\\n\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\n\\n```\\nansible -i vultr.py server.domain.com -m ping\\n```\\n\", \n    \"component_name\": \"contrib/inventory/vultr.py\", \n    \"component_raw\": \"contrib/inventory/vultr.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17933\", \n    \"issue_type\": null, \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:constants\", \n      \"c:utils/display\", \n      \"feature\", \n      \"needs_rebase\", \n      \"new_plugin\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Added vultr dynamic inventory script\\n\\n\\n\\n\\n\\n```\\nansible -i vultr.py server.domain.com -m ping\\n```\", \n    \"title\": \"Vultr Inventory script\"\n  }, \n  \"17934\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\n`contrib/inventory/azure_rm.py`\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.2.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nThe implementation of `azure_rm.py` calls `ResourceManagementClient.providers.register()`, but this seems necessary and causes it to fail if the Service Principal doesn't have any authorisations over the entire subscription (e.g., in the case we're trying to \\\"sandbox\\\" the ansible 'user' to just a single Resource Group')\\n##### STEPS TO REPRODUCE\\n\\n```\\nazure config mode arm\\nazure login\\nazure group create ansible-inventory-example northeurope\\nazure ad app create --name ansible-inventory-adapp --password XXXX --identifier-uris http://ansible-inventory-adapp --home-page http://ansible-inventory-adapp\\nazure ad sp create --applicationId XXXXXX-XXXX-XXXX-XXXX-XXXXXXX\\nazure role assignment create --roleName Owner --spn http://ansible-inventory-adapp --resource-group ansible-inventory-example\\n\\nwget https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/azure_rm.py\\npython azure_rm.py --subscription_id XXXXXXXXXXXXX --secret XXXXXXXXXXXx --tenant XXXXXXXXX --client_id XXXXXXXXXX --resource-groups ansible-inventory-example\\n\\nTraceback (most recent call last):\\n  File \\\"azure_rm.py\\\", line 798, in <module>\\n    main()\\n  File \\\"azure_rm.py\\\", line 795, in main\\n    AzureInventory()\\n  File \\\"azure_rm.py\\\", line 402, in __init__\\n    self._compute_client = rm.compute_client\\n  File \\\"azure_rm.py\\\", line 387, in compute_client\\n    self._register('Microsoft.Compute')\\n  File \\\"azure_rm.py\\\", line 365, in _register\\n    self.fail(\\\"One-time registration of {0} failed - {1}\\\".format(key, str(exc)))\\n  File \\\"azure_rm.py\\\", line 287, in fail\\n    raise Exception(msg)\\nException: One-time registration of Microsoft.Compute failed - The client 'XXXXXXXXXXXX' with object id 'XXXXXXXXXX' does not have authorization to perform action 'Microsoft.Compute/register/action' over scope '/subscriptions/XXXXXXXXXXXXXXXX'.\\n```\\n\\nIf we add 'Owner' at the Subscription level, then it works:\\n\\n```\\nazure role assignment create --roleName \\\"Owner\\\" --spn http://ansible-inventory-adapp\\npython azure_rm.py --subscription_id XXXXXXXXXXx --secret XXXXXXXXX --tenant XXXXXXX --client_id XXXXXXXXX  --resource-groups ansible-inventory-example\\n{\\\"azure\\\": [], \\\"_meta\\\": {\\\"hostvars\\\": {}}}\\n```\\n\\nThe problem can be reproduced with this small Python script:\\n\\n```\\nfrom azure.common.credentials import ServicePrincipalCredentials\\nfrom azure.mgmt.resource.resources.resource_management_client import ResourceManagementClient\\n\\nazure_credentials = ServicePrincipalCredentials(client_id=\\\"XXXX\\\",\\n                                                secret=\\\"XXXX\\\",\\n                                                tenant=\\\"XXX\\\")\\n\\nsubscription_id = \\\"XXXX\\\"\\nprint ResourceManagementClient(azure_credentials,\\n                               subscription_id).providers.register(\\\"Microsoft.Compute\\\")\\n```\\n\\nNote that without 'Owner' at the 'Subscription level', this still works to list the contents of the resource group for which my ServicePrincipal has 'Owner' (no `.register()` call was needed):\\n\\n```\\nclient = ResourceManagementClient(azure_credentials, subscription_id)\\nfor item in client.resource_groups.list_resources(\\\"ansible-inventory-example\\\"):\\n    print item\\n```\\n\\nI think this is documentation regarding 'register': https://msdn.microsoft.com/en-us/library/azure/dn790548.aspx\\n\\nI'm unsure at the moment why the 'register' is required, and if it indeed is required, how to make it successful for a ServicePrincipal which only has 'Owner' for one specific resource group.\\nI see the `.register()` call was included with the very early versions of `azure_rm.py` - https://github.com/ansible/ansible/commit/a5bed1570e827877986b8a4a067b6c8f37ef7b5c\\n\\nIf I edit `azure_rm.py` to make `_register(key)` simply 'return', then actually the inventory output _is_ created, with no errors, as I was hoping.\\n\\nMy question are:\\n- What was the `.register()` call for?\\n- How can we make it so that the `.register()` works when there is no authorisations over the entire Subscription?\\n\\nMy installed azure python modules:\\n\\n```\\nazure (2.0.0rc5)\\nazure-batch (0.30.0rc5)\\nazure-common (1.1.4)\\nazure-graphrbac (0.30.0rc5)\\nazure-mgmt (0.30.0rc5)\\nazure-mgmt-authorization (0.30.0rc5)\\nazure-mgmt-batch (0.30.0rc5)\\nazure-mgmt-cdn (0.30.0rc5)\\nazure-mgmt-cognitiveservices (0.30.0rc5)\\nazure-mgmt-commerce (0.30.0rc5)\\nazure-mgmt-common (0.20.0)\\nazure-mgmt-compute (0.30.0rc5)\\nazure-mgmt-keyvault (0.30.0rc5)\\nazure-mgmt-logic (0.30.0rc5)\\nazure-mgmt-network (0.30.0rc5)\\nazure-mgmt-notificationhubs (0.30.0rc5)\\nazure-mgmt-nspkg (1.0.0)\\nazure-mgmt-powerbiembedded (0.30.0rc5)\\nazure-mgmt-redis (0.30.0rc5)\\nazure-mgmt-resource (0.30.0rc5)\\nazure-mgmt-scheduler (0.30.0rc5)\\nazure-mgmt-storage (0.30.0rc5)\\nazure-mgmt-web (0.30.0rc5)\\nazure-nspkg (1.0.0)\\nazure-servicebus (0.20.2)\\nazure-servicemanagement-legacy (0.20.3)\\nazure-storage (0.32.0)\\nmsrestazure (0.4.1)\\n```\\n\", \n    \"component_name\": \"contrib/inventory/azure_rm.py\", \n    \"component_raw\": \"`contrib/inventory/azure_rm.py`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17934\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"azure\", \n      \"bug\", \n      \"cloud\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The implementation of `azure_rm.py` calls `ResourceManagementClient.providers.register()`, but this seems necessary and causes it to fail if the Service Principal doesn't have any authorisations over the entire subscription (e.g., in the case we're trying to \\\"sandbox\\\" the ansible 'user' to just a single Resource Group')\", \n    \"title\": \"azure_rm doesn't work if Service Principal doesn't have permission to perform 'Microsoft.Compute/register/action' over entire subscription\"\n  }, \n  \"17935\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nansible-playbook  / SSH connection type\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nNo custom config present\\n##### OS / ENVIRONMENT\\n\\n```\\n# OracleLinux 7.2\\n# cat /etc/redhat-release \\nRed Hat Enterprise Linux Server release 7.2 (Maipo)\\n```\\n##### SUMMARY\\n\\nI'm seeing random (but persistent) failures in ansible-playbook around the setup task failing due to what seems to be SSH multiplexing.\\n\\nWe run a playbook comprised of about 15 roles, each with a multitude of tasks. Almost without fail, each run of the playbook will fail at some random point during the \\\"setup\\\" stage, at which point it dumps the contents of the facts discovered about the target node and continues on to the next node. I can reproduce this with a very simple playbook, which I will link below[0] along with the error[1].\\n\\nLooking in the error output, you can see the following type of output: \\\"mux_client_read_packet: read header failed: Broken pipe\\\". I can reproduce this using a very simple SSH command, trimmed down from what Ansible is using:\\n\\n```\\n# ssh -vvv -o ControlMaster=auto -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r database02 hostname\\n...\\ndebug2: set_control_persist_exit_time: schedule exit in 60 seconds\\ndebug3: mux_client_read_packet: read header failed: Broken pipe\\ndebug2: Received exit status from master 0\\n```\\n\\nIf I remove the -o ControlPath from the above, or clean out ~/.ansible/cp, the ssh command works fine, but a re-run of ansible-playbook seems to recreate the faulty socket (at a non deterministic point in the playbook).\\n\\nI have played with _many_ different combinations of ssh_args in ~/.ansible.cfg, including higher values for ControlPersist, ServerAliveInterval, ServerAliveCountMax, changing ControlPath, and enabling pipelining, none seem to make a difference.\\n\\nCan anyone provide any other possible workarounds or ways I can debug this? Is there a way to force Ansible to disable ControlPersist?\\n##### STEPS TO REPRODUCE\\n\\n```\\nansible-playbook -i ~/multinode test.yml -vvvv\\n```\\n\\n[0] https://gist.github.com/brk3/1562e595a04d85b9df04bac9c8054273 (playbook: test.yml)\\n[1] https://gist.github.com/brk3/f06da830405d0cb3ffeed59d2901e5a9 (error output)\\n[2] https://gist.github.com/brk3/7fe02114c804eef58a108c086d8cb26c (inventory)\\n\", \n    \"component_name\": \"ansible-playbook  / ssh connection type\", \n    \"component_raw\": \"ansible-playbook  / SSH connection type\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17935\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I'm seeing random (but persistent) failures in ansible-playbook around the setup task failing due to what seems to be SSH multiplexing.\\n\\nWe run a playbook comprised of about 15 roles, each with a multitude of tasks. Almost without fail, each run of the playbook will fail at some random point during the \\\"setup\\\" stage, at which point it dumps the contents of the facts discovered about the target node and continues on to the next node. I can reproduce this with a very simple playbook, which I will link below[0] along with the error[1].\\n\\nLooking in the error output, you can see the following type of output: \\\"mux_client_read_packet: read header failed: Broken pipe\\\". I can reproduce this using a very simple SSH command, trimmed down from what Ansible is using:\\n\\n```\\n# ssh -vvv -o ControlMaster=auto -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r database02 hostname\\n...\\ndebug2: set_control_persist_exit_time: schedule exit in 60 seconds\\ndebug3: mux_client_read_packet: read header failed: Broken pipe\\ndebug2: Received exit status from master 0\\n```\\n\\nIf I remove the -o ControlPath from the above, or clean out ~/.ansible/cp, the ssh command works fine, but a re-run of ansible-playbook seems to recreate the faulty socket (at a non deterministic point in the playbook).\\n\\nI have played with _many_ different combinations of ssh_args in ~/.ansible.cfg, including higher values for ControlPersist, ServerAliveInterval, ServerAliveCountMax, changing ControlPath, and enabling pipelining, none seem to make a difference.\\n\\nCan anyone provide any other possible workarounds or ways I can debug this? Is there a way to force Ansible to disable ControlPersist?\", \n    \"title\": \"Ansible SSH multiplexing unreliable, randomly fails setup\"\n  }, \n  \"17936\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nazurerm\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.2.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\n```\\nWe need to use the private IP when addressing instances in Azure. This adds the ability to use either the default public IP or the private IP. It can be set in the `init` file or as an environment variable. \\n```\\n\", \n    \"component_name\": \"azurerm\", \n    \"component_raw\": \"azurerm\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17936\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"azure\", \n      \"cloud\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"```\\nWe need to use the private IP when addressing instances in Azure. This adds the ability to use either the default public IP or the private IP. It can be set in the `init` file or as an\", \n    \"title\": \"Use public or private IP in Azure Dynamic Inventory\"\n  }, \n  \"17937\": {\n    \"ansible_version\": \"ansible 2.1.2.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\n`module_utils`\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.2.0\\n```\\n##### CONFIGURATION\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nWhen using the `file` module (for example) to create a new directory/file, the \\\"diff\\\" output generated by the task shows \\\"old\\\" values for attributes such as the owner, group, and mode, which doesn't make sense for a newly created file.\\n\\nIt looks like this happens because the `set_*_if_different()` functions in `module_utils/basic.py` don't take into account the fact that the dir was just created when putting together the diff information.\\n##### STEPS TO REPRODUCE\\n\\nPlaybook:\\n\\n```\\n- hosts: localhost\\n  gather_facts: no\\n  tasks:\\n  - file:\\n      path: /tmp/foo\\n      state: directory\\n      owner: daemon\\n      group: daemon\\n      mode: '0711'\\n```\\n##### EXPECTED RESULTS\\n\\n```\\nTASK [file] ********************************************************************\\nchanged: [localhost]\\n--- before\\n+++ after\\n@@ -1,7 +1,7 @@\\n {\\n+    \\\"group\\\": 1, \\n+    \\\"mode\\\": \\\"0711\\\", \\n+    \\\"owner\\\": 1, \\n     \\\"path\\\": \\\"/tmp/foo\\\", \\n-    \\\"state\\\": \\\"absent\\\"\\n+    \\\"state\\\": \\\"directory\\\"\\n }\\n\\n```\\n##### ACTUAL RESULTS\\n\\n```\\nTASK [file] ********************************************************************\\nchanged: [localhost]\\n--- before\\n+++ after\\n@@ -1,7 +1,7 @@\\n {\\n-    \\\"group\\\": 0, \\n-    \\\"mode\\\": \\\"0755\\\", \\n-    \\\"owner\\\": 0, \\n+    \\\"group\\\": 1, \\n+    \\\"mode\\\": \\\"0711\\\", \\n+    \\\"owner\\\": 1, \\n     \\\"path\\\": \\\"/tmp/foo\\\", \\n-    \\\"state\\\": \\\"absent\\\"\\n+    \\\"state\\\": \\\"directory\\\"\\n }\\n```\\n\", \n    \"component_name\": \"module_utils\", \n    \"component_raw\": \"`module_utils`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17937\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When using the `file` module (for example) to create a new directory/file, the \\\"diff\\\" output generated by the task shows \\\"old\\\" values for attributes such as the owner, group, and mode, which doesn't make sense for a newly created file.\\n\\nIt looks like this happens because the `set_*_if_different()` functions in `module_utils/basic.py` don't take into account the fact that the dir was just created when putting together the diff information.\", \n    \"title\": \"set_*_if_different() functions in module_utils/basic.py show \\\"old\\\" attributes in diff for newly-created dirs\"\n  }, \n  \"17939\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /ansible/conf/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nblock/rescue/always\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n  config file = /ansible/conf/ansible.cfg\\n  configured module search path = Default w/o overrides\\n\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nn/a\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n`---\\n- block:\\n  - name: Task to fail\\n    command: /bin/false\\n\\n  rescue:\\n   - name: this should print\\n     debug: msg=\\\"In Rescue\\\"\\n\\n  always:\\n    - name: this should always pring\\n      debug: msg=\\\"In Always\\\"`\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nrescue should ru\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\nrescue nor always did not run!!!!\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\n ansible-playbook test.yml\\n\\nPLAY [hqhddev91.pclc0.merkle.local] ********************************************\\n\\nTASK [test_block : Task to fail] ***********************************************\\nfatal: [hqhddev91.pclc0.merkle.local]: FAILED! => {\\\"changed\\\": true, \\\"cmd\\\": [\\\"/bin/false\\\"], \\\"delta\\\": \\\"0:00:00.009034\\\", \\\"end\\\": \\\"2016-10-07 17:14:35.149493\\\", \\\"failed\\\": true, \\\"rc\\\": 1, \\\"start\\\": \\\"2016-10-07 17:14:35.140459\\\", \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"\\\", \\\"stdout_lines\\\": [], \\\"warnings\\\": []}\\n\\nNO MORE HOSTS LEFT *************************************************************\\n\\nPLAY RECAP *********************************************************************\\n```\\n\", \n    \"component_name\": \"block/rescue/always\", \n    \"component_raw\": \"block/rescue/always\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17939\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"\", \n    \"title\": \"blocks NOT WORKING AS EXPECTED in ROLE/tasks/main.yml\"\n  }, \n  \"17940\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Idea\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nansible logging\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\", \n    \"component_name\": \"ansible logging\", \n    \"component_raw\": \"ansible logging\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17940\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"\", \n    \"title\": \"additional options for logging \"\n  }, \n  \"17944\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nOpenstack dynamic inventory\\n##### SUMMARY\\n\\nThis change allows the Openstack inventory script to discover `ansible_user` by setting it as instance metadata.\\n\", \n    \"component_name\": \"openstack dynamic inventory\", \n    \"component_raw\": \"Openstack dynamic inventory\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17944\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"openstack\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This change allows the Openstack inventory script to discover `ansible_user` by setting it as instance metadata.\", \n    \"title\": \"Allow the Openstack dynamic inventory to discover ansible_user\"\n  }, \n  \"17948\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nOpenstack dynamic inventory\\n##### ANSIBLE VERSION\\n\\n```\\ndevel\\n```\\n##### SUMMARY\\n\\nRIght now the Openstack inventory script always requests -all- defined clouds. This is an extremely expensive operation. This change makes it possible to use the OS_CLOUD environment variable to specify a cloud the same way the openstack command uses it:\\n\\n``` shell\\nopenstack --help|grep -B1 OS_CLOUD\\n  --os-cloud <cloud-config-name>\\n                        Cloud name in clouds.yaml (Env: OS_CLOUD)\\n```\\n\", \n    \"component_name\": \"openstack dynamic inventory\", \n    \"component_raw\": \"Openstack dynamic inventory\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17948\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"openstack\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"RIght now the Openstack inventory script always requests -all- defined clouds. This is an extremely expensive operation. This change makes it possible to use the OS_CLOUD\", \n    \"title\": \"Openstack dynamic inventory: respect OS_CLOUD env var\"\n  }, \n  \"17950\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel f57f33a8e7) last updated 2016/08/26 062444 (GMT +000)\\nlib/ansible/modules/core (detached HEAD ef84dbbddd) last updated 2016/08/26 062455 (GMT +000)\\nlib/ansible/modules/extras (detached HEAD f29efb5626) last updated 2016/08/26 062458 (GMT +000)\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Idea\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nNetwork modules\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0 (devel f57f33a8e7) last updated 2016/08/26 06:24:44 (GMT +000)\\n  lib/ansible/modules/core: (detached HEAD ef84dbbddd) last updated 2016/08/26 06:24:55 (GMT +000)\\n  lib/ansible/modules/extras: (detached HEAD f29efb5626) last updated 2016/08/26 06:24:58 (GMT +000)\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nWhen using Network modules to communicate with routers like CISCO ones, there are some commands with different prompt messages for different conditions or several prompt message to interact.\\n\\nNow in lib/ansible/module_utils/netcli.py\\n\\n```\\nclass Cli(object):\\n...\\n        def to_command\\n....\\n             cmd = cmd['command']\\n         if isinstance(prompt, string_types):\\n             prompt = re.compile(re.escape(prompt))\\n```\\n\\nIt only supports to define prompt as a string not as a list.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n ios_command:\\n          commands:\\n          - command: \\\"copy scp://{{ scp_username }}@{{ scp_server }}/{{ device_config }} {{ admin_config }} -noconfirm\\\"\\n            prompt:\\n              - \\\"Target file exists, overwrite\\\"\\n              - \\\"Are you sure\\\"\\n              - \\\"password:\\\"\\n            response:\\n              - y\\n              - \\\"yes\\\"\\n              - \\\"{{ scp_password }}\\\"\\n          provider: \\\"{{ admin_cli }}\\\"\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nBecause I find it supports prompt as a list in lib/ansible/module_utils/shell.py. I expect to define multiple prompts as the playbook shown above.\\n\\nTo implement it, I tried to modify the code as below:\\n\\n```\\n--- a/lib/ansible/module_utils/netcli.py\\n+++ b/lib/ansible/module_utils/netcli.py\\n@@ -78,6 +78,11 @@ class Cli(object):\\n             cmd = cmd['command']\\n         if isinstance(prompt, string_types):\\n             prompt = re.compile(re.escape(prompt))\\n+        elif isinstance(prompt, (list, tuple)):\\n+            temp = []\\n+            for index in range(len(prompt)):\\n+                temp.append(re.compile(re.escape(prompt[index])))\\n+            prompt = temp\\n         return Command(command, output, prompt=prompt, response=response)\\n```\\n\\nTo support different prompt for different condition and only one prompt at all, this is enough.\\nBut if we want to support several prompts for one command, it would be much harder. I have tried a solution as below, but I think it would be better one.\\n\\n```\\n--- a/lib/ansible/module_utils/shell.py\\n+++ b/lib/ansible/module_utils/shell.py\\n@@ -147,10 +147,17 @@ class Shell(object):\\n             window = self.strip(recv.read())\\n\\n             if hasattr(cmd, 'prompt') and not handled:\\n-                if self.handle_prompt(window, prompt=cmd.prompt, response=cmd.response):\\n-                    handled = True\\n+                prompt_matched = self.handle_prompt(window, prompt=cmd.prompt, response=cmd.response)\\n+                if prompt_matched:\\n+                    if isinstance(cmd.prompt, (list, tuple)):\\n+                        del cmd.response[cmd.prompt.index(prompt_matched)]\\n+                        del cmd.prompt[cmd.prompt.index(prompt_matched)]\\n+                        if cmd.prompt == []:\\n+                            handled = True\\n+                    else:\\n+                        handled = True\\n                     time.sleep(cmd.delay)\\n-                    if cmd.is_reboot:\\n+                    if cmd.is_reboot and handled:\\n                         return\\n\\n             try:\\n@@ -191,7 +198,7 @@ class Shell(object):\\n             if match:\\n                 cmd = '%s\\\\r' % ans\\n                 self.shell.sendall(cmd)\\n-                return True\\n+                return pr\\n```\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\n\\n```\\n\", \n    \"component_name\": \"network  s\", \n    \"component_raw\": \"Network modules\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17950\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When using Network modules to communicate with routers like CISCO ones, there are some commands with different prompt messages for different conditions or several prompt message to interact.\\n\\nNow in lib/ansible/module_utils/netcli.py\\n\\n```\\nclass Cli(object):\\n...\\n        def to_command\\n....\\n             cmd = cmd['command']\\n         if isinstance(prompt, string_types):\\n             prompt = re.compile(re.escape(prompt))\\n```\\n\\nIt only supports to define prompt as a string not as a list.\", \n    \"title\": \"Support commands with multiple interactive operation in Network modules\"\n  }, \n  \"17953\": {\n    \"ansible_version\": \"none\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nnetwork namespace facts\\n##### ANSIBLE VERSION\\n\\nnone\\n##### CONFIGURATION\\n\\nn/a\\n##### OS / ENVIRONMENT\\n\\nLinux\\n##### SUMMARY\\n\\nAnsible currently has no support for Linux network namespaces. It would be highly useful to get at least basic support for them via facts. Right now, if an interface is a non-default network namespace, ansible won't detect it at all, and it wont show up in fact variables such as `ansible_interfaces` or `ansible_{{ifname}}`.\\n##### STEPS TO REPRODUCE\\n\\nHave an interface in a non-default network namespace.\\n##### EXPECTED RESULTS\\n\\nInterface details to show up in facts such as `ansible_interfaces` and `ansible_{{ifname}}`.\\n##### ACTUAL RESULTS\\n\\nInterface details missing.\\n##### Details\\n\\nWriting a custom fact for this would be very cumbersome as ansible gathers a lot of information about the interfaces and state of networking that would have to be duplicated.\\n\\nI think it might be simple to support this by getting a list of network namespaces, and then running the `setup` module again inside each network namespace (via `ip netns exec`). Could also enhance that by only gathering the network related facts. The resulting variables would then be available inside a `netns_{{nsname}}` tree. For example:\\n\\n```\\n{\\n  \\\"ansible_network_namespaces\\\": [\\\"foo\\\",\\\"bar\\\"],\\n  \\\"ansible_netns_foo\\\": {\\n    \\\"ansible_all_ipv4_addresses\\\": [ \\\"1.2.3.4\\\" ],\\n    \\\"ansible_interfaces: [ \\\"iffoo\\\" ],\\n    \\\"ansible_iffoo\\\": { \\\"ipv4\\\": { \\\"address\\\": \\\"1.2.3.4\\\", \\\"netmask\\\": ... } },\\n    ...\\n  },\\n  \\\"ansible_netns_bar\\\": {\\n    \\\"ansible_all_ipv4_addresses\\\": [ \\\"5.6.7.8\\\" ],\\n    \\\"ansible_interfaces: [ \\\"ifbar\\\" ],\\n    \\\"ansible_ifbar\\\": { \\\"ipv4\\\": { \\\"address\\\": \\\"5.6.7.8\\\", \\\"netmask\\\": ... } },\\n    ...\\n  },\\n```\\n\", \n    \"component_name\": \"network namespace facts\", \n    \"component_raw\": \"network namespace facts\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17953\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/facts\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Ansible currently has no support for Linux network namespaces. It would be highly useful to get at least basic support for them via facts. Right now, if an interface is a non-default network namespace, ansible won't detect it at all, and it wont show up in fact variables such as `ansible_interfaces` or `ansible_{{ifname}}`.\", \n    \"title\": \"Support for network namespace facts\"\n  }, \n  \"17960\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Documentation Report\\n##### COMPONENT NAME\\n\\nplaybooks and roles\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.2.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nWhen a playbook task or a role task references a template:\\n\\n```\\n    template: src=foo ....\\n```\\n\\nI have been unable to find documentation as to which directories it will look in for the file \\\"foo\\\". The logical place would be http://docs.ansible.com/ansible/playbooks_roles.html\\n\\nI found the following in ticket #14161:\\n\\n```\\n# if in role:\\n  for role in roles #ordered from current and goes up the dependency list\\n    role.name/templates/<file>\\n    role.name/tasks/<file>\\n    role.name/<file>\\n# always\\nplay_dir/templates/<file>\\nplay_dir/<file>\\n```\\n\\n(The wording suggests this is desired rather than actual behaviour)\\n\\nPresumably play_dir means the [playbook_dir](http://docs.ansible.com/ansible/playbooks_variables.html) variable.\\n\\nBut this still doesn't say: if one playbook includes another playbook, is \\\"play_dir\\\" the directory of the original playbook or the included playbook? Or are both searched (if so, in which order?)\\n\\nThis is important when deciding how to factor out re-usable code where templates need to be overridden. If playbook 1 (in directory X) includes playbook 2 (in directory Y), can playbook 1 override the templates?\\n##### STEPS TO REPRODUCE\\n\\nVia experimentation:\\n\\n```\\n==> ./foo/pb1.yml <==\\n- hosts: localhost\\n  vars:\\n    label: \\\"task in pb1\\\"\\n  tasks:\\n    - template: src={{item}} dest=/tmp/test/pb1-{{item}}\\n      with_items: [a,b,c,d,e,f,g,h,i,j,k,l]\\n      ignore_errors: true\\n\\n- hosts: localhost\\n  roles:\\n    - role: ../bar/roles/one\\n      prefix: pb1-bar\\n      label: \\\"role ../bar/one in pb1\\\"\\n\\n- include: ../bar/pb2.yml\\n\\n==> ./bar/pb2.yml <==\\n- hosts: localhost\\n  vars:\\n    label: \\\"task in pb2\\\"\\n  tasks:\\n    - template: src={{item}} dest=/tmp/test/pb1-{{item}}\\n      with_items: [a,b,c,d,e,f,g,h,i,j,k,l]\\n      ignore_errors: true\\n\\n- hosts: localhost\\n  roles:\\n    - role: one\\n      prefix: pb2-bar\\n      label: \\\"role one in pb2\\\"\\n\\n- hosts: localhost\\n  roles:\\n    - role: ../baz/roles/two\\n      prefix: pb2-baz\\n      label: \\\"role ../baz/roles/two in pb2\\\"\\n\\n==> ./bar/roles/one/tasks/main.yml <==\\n- template: src={{item}} dest=/tmp/test/{{prefix}}-{{item}}\\n  with_items: [a,b,c,d,e,f,g,h,i,j,k,l]\\n  ignore_errors: true\\n\\n==> ./baz/roles/two/tasks/main.yml <==\\n- template: src={{item}} dest=/tmp/test/{{prefix}}-{{item}}\\n  with_items: [a,b,c,d,e,f,g,h,i,j,k,l]\\n  ignore_errors: true\\n\\n==> ./foo/a <==\\n{{label}}: foo/a\\n\\n==> ./foo/templates/b <==\\n{{label}}: foo/templates/b\\n\\n==> ./bar/c <==\\n{{label}}: bar/c\\n\\n==> ./bar/templates/d <==\\n{{label}}: bar/templates/d\\n\\n==> ./bar/roles/one/templates/e <==\\n{{label}}: bar/roles/one/templates/e\\n\\n==> ./bar/roles/one/tasks/f <==\\n{{label}}: bar/roles/one/tasks/f\\n\\n==> ./bar/roles/one/g <==\\n{{label}}: bar/roles/one/g\\n\\n==> ./baz/h <==\\n{{label}}: baz/h\\n\\n==> ./baz/templates/i <==\\n{{label}}: baz/templates/i\\n\\n==> ./baz/roles/two/templates/j <==\\n{{label}}: baz/roles/two/templates/j\\n\\n==> ./baz/roles/two/tasks/k <==\\n{{label}}: baz/roles/two/tasks/k\\n\\n==> ./baz/roles/two/l <==\\n{{label}}: baz/roles/two/l\\n```\\n##### EXPECTED RESULTS\\n\\nI was not sure what to expect, given lack of documentation.\\n##### ACTUAL RESULTS\\n\\n```\\na b        -- task in 1st playbook\\na b e f g  -- role (in different directory) directly included from 1st playbook\\nc d        -- task in 2nd playbook included from 1st playbook\\nc d e f g  -- role in 2nd playbook included from 1st playbook\\nc d j k l  -- role (in different directory) in 2nd playbook included from 1st playbook\\n```\\n\\nIt would appear that:\\n- if playbook foo/pb1.yml includes bar/pb2.yml, then tasks in bar/pb2.yml can only find files in `bar/templates/` and `bar/`. That is: if one playbook includes another playbook, then playbook_dir changes to be the location of the included playbook, and no searching is done in the original directory.\\n- If playbook foo/pb1.yml includes bar/pb2.yml, and bar/pb2.yml invokes roles in ../baz, then the role can only find files relative to where the role is defined (i.e. `../baz/roles/rolename/` and its `templates` and `tasks` subdirectories), plus `bar/templates/` and `bar/`\\n\\nSo as far as I can see: if playbook 1 (in directory A) includes playbook 2 (in directory B), playbook 1 has no way to override any of the templates used.\\n\\nI am not questioning this behaviour: it seems reasonable. If you want to make a playbook whose templates can be overridden, you need to refactor it into a role.\\n\\nBut it would be nice if this were clearly documented, dependable behaviour.\\n\", \n    \"component_name\": \"playbooks and roles\", \n    \"component_raw\": \"playbooks and roles\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17960\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When a playbook task or a role task references a template:\\n\\n```\\n    template: src=foo ....\\n```\\n\\nI have been unable to find documentation as to which directories it will look in for the file \\\"foo\\\". The logical place would be http://docs.ansible.com/ansible/playbooks_roles.html\\n\\nI found the following in ticket #14161:\\n\\n```\\n# if in role:\\n  for role in roles #ordered from current and goes up the dependency list\\n    role.name/templates/<file>\\n    role.name/tasks/<file>\\n    role.name/<file>\\n# always\\nplay_dir/templates/<file>\\nplay_dir/<file>\\n```\\n\\n(The wording suggests this is desired rather than actual behaviour)\\n\\nPresumably play_dir means the [playbook_dir](http://docs.ansible.com/ansible/playbooks_variables.html) variable.\\n\\nBut this still doesn't say: if one playbook includes another playbook, is \\\"play_dir\\\" the directory of the original playbook or the included playbook? Or are both searched (if so, in which order?)\\n\\nThis is important when deciding how to factor out re-usable code where templates need to be overridden. If playbook 1 (in directory X) includes playbook 2 (in directory Y), can playbook 1 override the templates?\", \n    \"title\": \"Documentation of which directories a template is searched for\"\n  }, \n  \"17963\": {\n    \"ansible_version\": \"ansible-playbook 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nVariable handling\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible-playbook 2.2.0.0\\n  config file =\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nDepending on how the inventory and plays are structured, facts assigned to localhost (via set_facts) can become inaccessible through hostvars. Referencing them directly still appears to work. It also looks like localhost must be listed in the inventory for the bug to trigger.\\n\\nThis behavior was observed in 2.2.0-RC1 as well as 2.1.2.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\ninventory:\\n\\n```\\n[group1]\\nhost1\\nlocalhost ansible_connection=local\\n```\\n\\ntest.yml:\\n\\n```\\n\\n---\\n- hosts: 127.0.0.1\\n  tasks:\\n    # Dummy play\\n\\n- hosts: localhost\\n  tasks:\\n     - set_fact: var1=100\\n     - debug: var=var1\\n     - debug: var=hostvars['localhost']['var1']\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nOutput seen in Ansible 1.9.4:\\n\\n```\\nPLAY [127.0.0.1] **************************************************************\\n\\nGATHERING FACTS ***************************************************************\\n<127.0.0.1> REMOTE_MODULE setup\\nok: [127.0.0.1]\\n\\nPLAY [localhost] **************************************************************\\n\\nGATHERING FACTS ***************************************************************\\n<localhost> REMOTE_MODULE setup\\nok: [localhost]\\n\\nTASK: [set_fact var1=100] *****************************************************\\nok: [localhost] => {\\\"ansible_facts\\\": {\\\"var1\\\": \\\"100\\\"}}\\n\\nTASK: [debug var=var1] ********************************************************\\nok: [localhost] => {\\n    \\\"var\\\": {\\n        \\\"var1\\\": \\\"100\\\"\\n    }\\n}\\n\\nTASK: [debug var=hostvars['localhost']['var1']] *******************************\\nok: [localhost] => {\\n    \\\"var\\\": {\\n        \\\"hostvars['localhost']['var1']\\\": \\\"100\\\"\\n    }\\n}\\n\\nPLAY RECAP ********************************************************************\\n127.0.0.1                  : ok=1    changed=0    unreachable=0    failed=0\\nlocalhost                  : ok=4    changed=0    unreachable=0    failed=0\\n```\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\nFor this particular inventory and playbook, Ansible 2.2 is unable to access the variable through hostvars.\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nNo config file found; using defaults\\n\\nPLAYBOOK: test.yml *************************************************************\\n2 plays in ./test.yml\\n\\nPLAY [127.0.0.1] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [127.0.0.1]\\n\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [set_fact] ****************************************************************\\ntask path: /tmp/ansible-test/test.yml:8\\nok: [localhost] => {\\\"ansible_facts\\\": {\\\"var1\\\": \\\"100\\\"}, \\\"changed\\\": false}\\n\\nTASK [debug] *******************************************************************\\ntask path: /tmp/ansible-test/test.yml:9\\nok: [localhost] => {\\n    \\\"var1\\\": \\\"100\\\"\\n}\\n\\nTASK [debug] *******************************************************************\\ntask path: /tmp/ansible-test/test.yml:10\\nok: [localhost] => {\\n    \\\"hostvars['localhost']['var1']\\\": \\\"VARIABLE IS NOT DEFINED!\\\"\\n}\\n\\nPLAY RECAP *********************************************************************\\n127.0.0.1                  : ok=1    changed=0    unreachable=0    failed=0\\nlocalhost                  : ok=4    changed=0    unreachable=0    failed=0\\n\\n```\\n\", \n    \"component_name\": \"variable handling\", \n    \"component_raw\": \"Variable handling\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17963\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Depending on how the inventory and plays are structured, facts assigned to localhost (via set_facts) can become inaccessible through hostvars. Referencing them directly still appears to work. It also looks like localhost must be listed in the inventory for the bug to trigger.\\n\\nThis behavior was observed in 2.2.0-RC1 as well as 2.1.2.\", \n    \"title\": \"localhost variables not accessible through hostvars\"\n  }, \n  \"17967\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\ncore\\n##### SUMMARY\\n\\nadd vars_dirs parameter in playbook.\\nIf you specific vars_dirs, all vars files in dirs is included and appended to vars_files.\\nIt helps to manage many vars_files and referrence from many playbook.\\n##### EXAMPLE\\n###### dir tree\\n\\n```\\n<PLAYBOOK_DIR>\\n    \\u2514\\u2500\\u2500 vars_dir\\n        \\u251c\\u2500\\u2500 foo.yml\\n        \\u251c\\u2500\\u2500 bar.yml\\n        \\u2514\\u2500\\u2500 hoge.yml\\n```\\n###### playbook\\n\\n_normaly_\\n\\n```\\n- hosts: hoge\\n  vars_files:\\n    - \\\"vars_dir/foo.yml\\\"\\n    - \\\"vars_dir/bar.yml\\\"\\n    - \\\"vars_dir/hoge.yml\\\"\\n```\\n\\n_after_\\n\\n```\\n- hosts: hoge\\n  vars_dirs:\\n    - \\\"vars_dir\\\"\\n```\\n\", \n    \"component_name\": \"core\", \n    \"component_raw\": \"core\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17967\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"add vars_dirs parameter in playbook.\\nIf you specific vars_dirs, all vars files in dirs is included and appended to vars_files.\\nIt helps to manage many vars_files and referrence from many playbook.\\n##### EXAMPLE\\n###### dir tree\\n\\n```\\n<PLAYBOOK_DIR>\\n     vars_dir\\n         foo.yml\\n         bar.yml\\n         hoge.yml\\n```\\n###### playbook\\n\\n_normaly_\\n\\n```\\n- hosts: hoge\\n  vars_files:\\n    - \\\"vars_dir/foo.yml\\\"\\n    - \\\"vars_dir/bar.yml\\\"\\n    - \\\"vars_dir/hoge.yml\\\"\\n```\\n\\n_after_\\n\\n```\\n- hosts: hoge\\n  vars_dirs:\\n    - \\\"vars_dir\\\"\\n```\", \n    \"title\": \"vars_files work with directories\"\n  }, \n  \"17968\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\ninitialization\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.2.0\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\nHost: Ubuntu 14.01\\nGuest: Scientific Linux release 7.2 (Nitrogen)\\n##### SUMMARY\\n\\nVariables loaded from ./group_vars/all/config.yml~ wins over ./group_vars/all/config.yml\\nAccording to [docs](http://docs.ansible.com/ansible/intro_inventory.html#splitting-out-host-and-group-specific-data) this should not be allowed: \\n\\n> ....Valid file extensions include \\u2018.yml\\u2019, \\u2018.yaml\\u2019, \\u2018.json\\u2019, or no file extension\\n> And by \\\"include\\\" it means included in a list and not should include a sub-string in an extension.\\n##### STEPS TO REPRODUCE\\n1. Create ./group_vars/all/config.yml file with simple content\\n\\n```\\n\\n---\\nvarrr: proper_value\\n```\\n1. Copy file and concat with tilde at the end of the filename ./group_vars/all/config.yml~ \\n   . Change content\\n\\n```\\n\\n---\\nvarrr: incorrect_value\\n```\\n1. Run simple task to print variable\\n\\n```\\n- name: Print varrr\\n  debug: var=varrr\\n```\\n##### EXPECTED RESULTS\\n\\nExpected content from ./group_vars/all/config.yml\\n##### ACTUAL RESULTS\\n\\nGot content from ./group_vars/all/config.yml~\\n\", \n    \"component_name\": \"initialization\", \n    \"component_raw\": \"initialization\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17968\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"in progress\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Variables loaded from ./group_vars/all/config.yml~ wins over ./group_vars/all/config.yml\\nAccording to [docs](http://docs.ansible.com/ansible/intro_inventory.html#splitting-out-host-and-group-specific-data) this should not be allowed: \\n\\n> ....Valid file extensions include .yml, .yaml, .json, or no file extension\\n> And by \\\"include\\\" it means included in a list and not should include a sub-string in an extension.\", \n    \"title\": \"Extensions of variable files are not limited as they should be per documentation. Backup copies thus may take precedence over expected files\"\n  }, \n  \"17969\": {\n    \"ansible_version\": \"ansible 2.1.1.0+\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nAnsible\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0+\\n```\\n##### CONFIGURATION\\n\\nany\\n##### OS / ENVIRONMENT\\n\\nany\\n##### SUMMARY\\n\\nAnsible has so many bugs in pre 2.1.1.0 versions. But many people can not upgrade due to \\\"feature\\\" #16878\\n\\nPlease reopen #16878 and fix \\\"the feature\\\". It is not acceptable when you make breaking changes in a minor minor version.\\n##### STEPS TO REPRODUCE\\n\\nSee #16878\\n##### EXPECTED RESULTS\\n\\nSee #16878\\n##### ACTUAL RESULTS\\n\\nSee #16878\\n\", \n    \"component_name\": \"ansible\", \n    \"component_raw\": \"Ansible\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17969\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [], \n    \"module_match\": null, \n    \"summary\": \"Ansible has so many bugs in pre 2.1.1.0 versions. But many people can not upgrade due to \\\"feature\\\" #16878\\n\\nPlease reopen #16878 and fix \\\"the feature\\\". It is not acceptable when you make breaking changes in a minor minor version.\", \n    \"title\": \"group_vars ignored with inventory script in ansible 2.1.1.0\"\n  }, \n  \"17978\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 0a86ddc251) last updated 2016/10/05 135138 (GMT +200)\\nlib/ansible/modules/core (detached HEAD 0ee774ff15) last updated 2016/10/05 135146 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD 5cc72c3f06) last updated 2016/10/05 135153 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\nAnsible Core\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.3.0 (devel 0a86ddc251) last updated 2016/10/05 13:51:38 (GMT +200)\\n  lib/ansible/modules/core: (detached HEAD 0ee774ff15) last updated 2016/10/05 13:51:46 (GMT +200)\\n  lib/ansible/modules/extras: (detached HEAD 5cc72c3f06) last updated 2016/10/05 13:51:53 (GMT +200)\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nFixes #15103.\\n\\nMoves `variables['groups']` assignment from `if hosts:` scope to `if self._inventory:` scope, to better support task delegation within handlers (e.g. using `with_items` or `with_inventory_hostnames`).\\n\\nExample role and bug fix illustrated below.\\n\\n``` shell\\n% cat development\\n\\n[webservers]\\nmaster1.foobarsites.com\\n\\n[slaves]\\nslave1.foobarsites.com\\nslave2.foobarsites.com\\nslave2.foobarsites.com\\n```\\n\\n``` shell\\n% cat roles/test_role/tasks/main.yml\\n\\n- name: Trigger handlers.\\n  command: true\\n  notify: test_handler\\n```\\n\\n``` shell\\n% cat roles/test_role/handlers/main.yml\\n\\n- name: test_handler\\n  command: true\\n  delegate_to: \\\"{{ item }}\\\"\\n  with_inventory_hostnames: slaves\\n```\\n\\n**Before** [Doesn't Work]\\n\\n``` shell\\n% ansible-playbook -i hosts/dev site.yml\\n\\nPLAYBOOK: test.yml *************************************************************\\n1 plays in test.yml\\n\\nPLAY [webservers] **************************************************************\\n\\nTASK [test_role : Trigger handlers.] *******************************************\\n\\nERROR! Unexpected Exception: 'groups'\\nthe full traceback was:\\n\\nTraceback (most recent call last):\\n  File \\\"/usr/local/bin/ansible-playbook\\\", line 92, in <module>\\n    exit_code = cli.run()\\n  File \\\"/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages/ansible/cli/playbook.py\\\", line 154, in run\\n    results = pbex.run()\\n  File \\\"/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages/ansible/executor/playbook_executor.py\\\", line 146, in run\\n    result = self._tqm.run(play=play)\\n  File \\\"/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages/ansible/executor/task_queue_manager.py\\\", line 264, in run\\n    play_return = strategy.run(iterator, play_context)\\n  File \\\"/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages/ansible/plugins/strategy/linear.py\\\", line 271, in run\\n    results += self._wait_on_pending_results(iterator)\\n  File \\\"/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages/ansible/plugins/strategy/__init__.py\\\", line 478, in _wait_on_pending_results\\n    results = self._process_pending_results(iterator)\\n  File \\\"/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages/ansible/plugins/strategy/__init__.py\\\", line 371, in _process_pending_results\\n    target_handler = search_handler_blocks(iterator._play.handlers)\\n  File \\\"/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages/ansible/plugins/strategy/__init__.py\\\", line 326, in search_handler_blocks\\n    handler_vars = self._variable_manager.get_vars(loader=self._loader, play=iterator._play, task=handler_task)\\n  File \\\"/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages/ansible/vars/__init__.py\\\", line 379, in get_vars\\n    all_vars['ansible_delegated_vars'] = self._get_delegated_vars(loader, play, task, all_vars)\\n  File \\\"/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages/ansible/vars/__init__.py\\\", line 456, in _get_delegated_vars\\n    items = lookup_loader.get(task.loop, loader=loader, templar=templar).run(terms=loop_terms, variables=vars_copy)\\n  File \\\"/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages/ansible/plugins/lookup/inventory_hostnames.py\\\", line 49, in run\\n    that = self.get_hosts(variables, p)\\n  File \\\"/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages/ansible/plugins/lookup/inventory_hostnames.py\\\", line 35, in get_hosts\\n    if obj in variables['groups']:\\nKeyError: 'groups'\\n```\\n\\n**After** [Works as Expected]\\n\\n``` shell\\n% ansible-playbook -i hosts/dev site.yml\\n\\nPLAYBOOK: test.yml *************************************************************\\n1 plays in test.yml\\n\\nPLAY [webservers] **************************************************************\\n\\nTASK [test_role : Trigger handlers.] *******************************************\\nchanged: [localhost.foobarsites.com]\\n\\nRUNNING HANDLER [test_role : test_handler] *************************************\\nchanged: [master1.foobarsites.com -> slave1.foobarsites.com] => (item=slave1.foobarsites.com)\\nchanged: [master1.foobarsites.com -> slave2.foobarsites.com] => (item=slave2.foobarsites.com)\\nchanged: [master1.foobarsites.com -> slave3.foobarsites.com] => (item=slave3.foobarsites.com)\\n\\nPLAY RECAP *********************************************************************\\nlocalhost.foobarsites.com  : ok=0    changed=1    unreachable=0    failed=0\\n```\\n\", \n    \"component_name\": \"ansible core\", \n    \"component_raw\": \"Ansible Core\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17978\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"needs_info\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Fixes #15103.\\n\\nMoves `variables['groups']` assignment from `if hosts:` scope to `if self._inventory:` scope, to better support task delegation within handlers (e.g. using `with_items` or `with_inventory_hostnames`).\\n\\nExample role and bug fix illustrated below.\\n\\n``` shell\\n% cat development\\n\\n[webservers]\\nmaster1.foobarsites.com\\n\\n[slaves]\\nslave1.foobarsites.com\\nslave2.foobarsites.com\\nslave2.foobarsites.com\\n```\\n\\n``` shell\\n% cat roles/test_role/tasks/main.yml\\n\\n- name: Trigger handlers.\\n  command: true\\n  notify: test_handler\\n```\\n\\n``` shell\\n% cat roles/test_role/handlers/main.yml\\n\\n- name: test_handler\\n  command: true\\n  delegate_to: \\\"{{ item }}\\\"\\n  with_inventory_hostnames: slaves\\n```\\n\\n**Before** [Doesn't Work]\\n\\n``` shell\\n% ansible-playbook -i hosts/dev site.yml\\n\\nPLAYBOOK: test.yml *************************************************************\\n1 plays in test.yml\\n\\nPLAY [webservers] **************************************************************\\n\\nTASK [test_role : Trigger handlers.] *******************************************\\n\\nERROR! Unexpected Exception: 'groups'\\nthe full traceback was:\\n\\nTraceback (most recent call last):\\n  File \\\"/usr/local/bin/ansible-playbook\\\", line 92, in <module>\\n    exit_code = cli.run()\\n  File \\\"/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages/ansible/cli/playbook.py\\\", line 154, in run\\n    results = pbex.run()\\n  File \\\"/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages/ansible/executor/playbook_executor.py\\\", line 146, in run\\n    result = self._tqm.run(play=play)\\n  File \\\"/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages/ansible/executor/task_queue_manager.py\\\", line 264, in run\\n    play_return = strategy.run(iterator, play_context)\\n  File \\\"/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages/ansible/plugins/strategy/linear.py\\\", line 271, in run\\n    results += self._wait_on_pending_results(iterator)\\n  File \\\"/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages/ansible/plugins/strategy/__init__.py\\\", line 478, in _wait_on_pending_results\\n    results = self._process_pending_results(iterator)\\n  File \\\"/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages/ansible/plugins/strategy/__init__.py\\\", line 371, in _process_pending_results\\n    target_handler = search_handler_blocks(iterator._play.handlers)\\n  File \\\"/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages/ansible/plugins/strategy/__init__.py\\\", line 326, in search_handler_blocks\\n    handler_vars = self._variable_manager.get_vars(loader=self._loader, play=iterator._play, task=handler_task)\\n  File \\\"/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages/ansible/vars/__init__.py\\\", line 379, in get_vars\\n    all_vars['ansible_delegated_vars'] = self._get_delegated_vars(loader, play, task, all_vars)\\n  File \\\"/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages/ansible/vars/__init__.py\\\", line 456, in _get_delegated_vars\\n    items = lookup_loader.get(task.loop, loader=loader, templar=templar).run(terms=loop_terms, variables=vars_copy)\\n  File \\\"/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages/ansible/plugins/lookup/inventory_hostnames.py\\\", line 49, in run\\n    that = self.get_hosts(variables, p)\\n  File \\\"/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages/ansible/plugins/lookup/inventory_hostnames.py\\\", line 35, in get_hosts\\n    if obj in variables['groups']:\\nKeyError: 'groups'\\n```\\n\\n**After** [Works as Expected]\\n\\n``` shell\\n% ansible-playbook -i hosts/dev site.yml\\n\\nPLAYBOOK: test.yml *************************************************************\\n1 plays in test.yml\\n\\nPLAY [webservers] **************************************************************\\n\\nTASK [test_role : Trigger handlers.] *******************************************\\nchanged: [localhost.foobarsites.com]\\n\\nRUNNING HANDLER [test_role : test_handler] *************************************\\nchanged: [master1.foobarsites.com -> slave1.foobarsites.com] => (item=slave1.foobarsites.com)\\nchanged: [master1.foobarsites.com -> slave2.foobarsites.com] => (item=slave2.foobarsites.com)\\nchanged: [master1.foobarsites.com -> slave3.foobarsites.com] => (item=slave3.foobarsites.com)\\n\\nPLAY RECAP *********************************************************************\\nlocalhost.foobarsites.com  : ok=0    changed=1    unreachable=0    failed=0\\n```\", \n    \"title\": \"Add support for group variables to handlers\"\n  }, \n  \"17985\": {\n    \"ansible_version\": \"ansible 2.3.0 (vault-keyring-multiple-passwords 1023923885) last updated 2016/10/12 111600 (GMT -600)\\nlib/ansible/modules/core  not found - use git submodule update --init lib/ansible/modules/core\\nlib/ansible/modules/extras  not found - use git submodule update --init lib/ansible/modules/extras\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\n`contrib/vault/vault-keyring.py`\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.3.0 (vault-keyring-multiple-passwords 1023923885) last updated 2016/10/12 11:16:00 (GMT -600)\\n  lib/ansible/modules/core:  not found - use git submodule update --init lib/ansible/modules/core\\n  lib/ansible/modules/extras:  not found - use git submodule update --init lib/ansible/modules/extras\\n  config file =\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\n**Problem**\\n\\nBy hard-coding the `ansible` key name, the current `contrib/vault/vault-keyring.py` script seems to assume you will always use the same password for all vaults. It apparently does not handle cases in which people use Ansible for multiple projects containing vaults with different passwords.\\n\\n**Proposed Solution**\\n\\nBy allowing the user to specify a key name in a given project\\u2019s `ansible.cfg` file, vault passwords can be \\u201cnamespaced\\u201d such that keyring integration can be used to handle vaults with different passwords. If no key name is specified, the original default `ansible` key name will be used \\u2014 just as before.\\n\\n**Ancillary Problem**\\n\\nFor teams that utilize per-project `ansible.cfg` files, requiring users to specify a keyring username means hard-coding that single value for everyone who uses that project (since Ansible does not merge settings \\u2014 see: #17914). For example, if Alice stores her password in her login user keyring and sets `username = 'alice'` in the shared project\\u2019s `ansible.cfg` file, Bob will have a difficult time storing that vault\\u2019s password in his own login user keyring since `username = 'alice'` is now hard-coded into the project\\u2019s `ansible.cfg` file.\\n\\n**Proposed Solution**\\n\\nThe vast majority of people using this script will most likely store vault passwords in their login user keyrings. By assuming that the user invoking the script is the owner of the keyring in which the password is to be stored, we obviate the need to explicitly specify a username and allow teams to use their login user keyrings by default. At the same time, anyone who wants to specify a user keyring may still do so via the same option as before.\\n\\n**Bonus Advantages**\\n\\nThese changes have the side effect of greatly simplifying vault keyring integration and set-up, particularly since there is now no need for most users to add the `[vault]` section or any of its optional settings.\\n\\nLast but not least, this removes the need to check for the presence of a `[vault]` section. If the options are there, they will be utilized. If not, the default values will be used. In order to comply with the \\u201cprinciple of least astonishment,\\u201d invoking `python /path/to/vault-keyring.py set` will now display the user keyring and key name that will be used when setting the password:\\n\\n```\\nStoring password in \\\"justin\\\" user keyring using key name: ansible-vault-yourproject\\nPassword:\\nConfirm password:\\n```\\n\\n**Other Notes**\\n\\nOther improvements include:\\n- change string interpolation to new `.format()` style\\n- clean up and expand upon documentation\\n- enforce PEP 8 compliance\\n\", \n    \"component_name\": \"contrib/vault/vault-keyring.py\", \n    \"component_raw\": \"`contrib/vault/vault-keyring.py`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17985\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"**Problem**\\n\\nBy hard-coding the `ansible` key name, the current `contrib/vault/vault-keyring.py` script seems to assume you will always use the same password for all vaults. It apparently does not handle cases in which people use Ansible for multiple projects containing vaults with different passwords.\\n\\n**Proposed Solution**\\n\\nBy allowing the user to specify a key name in a given projects `ansible.cfg` file, vault passwords can be namespaced such that keyring integration can be used to handle vaults with different passwords. If no key name is specified, the original default `ansible` key name will be used  just as before.\\n\\n**Ancillary Problem**\\n\\nFor teams that utilize per-project `ansible.cfg` files, requiring users to specify a keyring username means hard-coding that single value for everyone who uses that project (since Ansible does not merge settings  see: #17914). For example, if Alice stores her password in her login user keyring and sets `username = 'alice'` in the shared projects `ansible.cfg` file, Bob will have a difficult time storing that vaults password in his own login user keyring since `username = 'alice'` is now hard-coded into the projects `ansible.cfg` file.\\n\\n**Proposed Solution**\\n\\nThe vast majority of people using this script will most likely store vault passwords in their login user keyrings. By assuming that the user invoking the script is the owner of the keyring in which the password is to be stored, we obviate the need to explicitly specify a username and allow teams to use their login user keyrings by default. At the same time, anyone who wants to specify a user keyring may still do so via the same option as before.\\n\\n**Bonus Advantages**\\n\\nThese changes have the side effect of greatly simplifying vault keyring integration and set-up, particularly since there is now no need for most users to add the `[vault]` section or any of its optional settings.\\n\\nLast but not least, this removes the need to check for the presence of a `[vault]` section. If the options are there, they will be utilized. If not, the default values will be used. In order to comply with the principle of least astonishment, invoking `python /path/to/vault-keyring.py set` will now display the user keyring and key name that will be used when setting the password:\\n\\n```\\nStoring password in \\\"justin\\\" user keyring using key name: ansible-vault-yourproject\\nPassword:\\nConfirm password:\\n```\\n\\n**Other Notes**\\n\\nOther improvements include:\\n- change string interpolation to new `.format()` style\\n- clean up and expand upon documentation\\n- enforce PEP 8 compliance\", \n    \"title\": \"Support multiple vault passwords in keyring script\"\n  }, \n  \"17989\": {\n    \"ansible_version\": \"ansible 2.3.0 (shell_ansi_escape_fix a616dcbe1a) last updated 2016/10/12 115417 (GMT -700)\\nlib/ansible/modules/core (detached HEAD b4f6a25195) last updated 2016/10/11 111835 (GMT -700)\\nlib/ansible/modules/extras (detached HEAD 734aa8f8e9) last updated 2016/10/11 111840 (GMT -700)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nShell\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.3.0 (shell_ansi_escape_fix a616dcbe1a) last updated 2016/10/12 11:54:17 (GMT -700)\\n  lib/ansible/modules/core: (detached HEAD b4f6a25195) last updated 2016/10/11 11:18:35 (GMT -700)\\n  lib/ansible/modules/extras: (detached HEAD 734aa8f8e9) last updated 2016/10/11 11:18:40 (GMT -700)\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nThe module_utils Shell class uses a hardcoded set of regexes to filter out ansi color sequences and terminal escape codes.  For using the Shell with some network appliances, this set of regexes needs to be overridden (or expanded).\\n\\nThis change allows a CliBase subclass to override the ansi escape regexes in the same manner that it uses to provide the prompt and errors with CLI_PROMPTS_RE and CLI_ERRORS_RE.  This checks for a CLI_ANSI_RE, and if provided, uses that instead of the default ANSI_RE for sanitizing lines read from the remote shell.\\n\", \n    \"component_name\": \"shell\", \n    \"component_raw\": \"Shell\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17989\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"feature\", \n      \"module_util\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The module_utils Shell class uses a hardcoded set of regexes to filter out ansi color sequences and terminal escape codes.  For using the Shell with some network appliances, this set of regexes needs to be overridden (or expanded).\\n\\nThis change allows a CliBase subclass to override the ansi escape regexes in the same manner that it uses to provide the prompt and errors with CLI_PROMPTS_RE and CLI_ERRORS_RE.  This checks for a CLI_ANSI_RE, and if provided, uses that instead of the default ANSI_RE for sanitizing lines read from the remote shell.\", \n    \"title\": \"Making the ANSI escape regexes configurable in the Shell class\"\n  }, \n  \"17998\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /home/okv/work/repository/hg/deploy/ansible.cfg\\nconfigured module search path = Default w/o overrides\\nProblem is the same with ansible 2.1.2.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nCore\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n  config file = /home/okv/work/repository/hg/deploy/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n\\nProblem is the same with ansible 2.1.2.0\\n##### CONFIGURATION\\n\\ndeploy/ansible.cfg:\\n\\n[defaults]\\ntimeout = 30\\nretry_files_enabled = False\\nallow_world_readable_tmpfiles = True\\ngather_subset = !hardware,!ohai,!facter\\n\\n[ssh_connection]\\npipelining = True\\nssh_args = -o PreferredAuthentications=publickey\\n##### OS / ENVIRONMENT\\n\\nControl machine: Ubuntu 14.04.5 LTS\\nManaged node: CentOS release 6.7\\nOn managed os `/` and `/home` are different mount points.\\n##### SUMMARY\\n\\nAnsible logins as ansible user (non-root), becomes root and fails to change .bashrc of unprivileged user. Error appears only on particular managed machine (playbook works fine on another hosts).\\n##### STEPS TO REPRODUCE\\n\\nModify unprivileged user file from root\\n\\n```\\n- name: modifying service user .bashrc\\n  lineinfile:\\n    dest: \\\"/home/{{ service_user }}/.bashrc\\\"\\n    state: present\\n    owner: \\\"{{ service_user }}\\\"\\n    group: \\\"{{ service_user }}\\\"\\n    line: PATH=/usr/local/sbin:/usr/local/bin:$PATH\\n    insertafter: EOF\\n  become: yes\\n  become_user: root\\n```\\n\\nabove service_user is unprivileged user\\n##### EXPECTED RESULTS\\n\\nModified .bashrc of unprivileged user with right permissions\\n##### ACTUAL RESULTS\\n\\nAnsible fails on moving file with IOError 0\\n\\n```\\nTASK [../../../../roles/system : modifying service user .bashrc] ***************\\nfatal: [hardware_server_fines]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Could not replace file: /tmp/tmpsG61Hg to /home/parking/.bashrc: [Errno 0] Error\\\"}\\n```\\n\\nThe problem is reproducible from console:\\n\\n```\\nmv /tmp/tmpsG61Hg /home/parking/.bashrc\\n```\\n\\nproduces\\n\\n```\\nmv: cannot move `/tmp/tmpsG61Hg' to `/home/parking/.bashrc'\\n```\\n\\n`/` and `/home` are different mount points and such moving can't be done between devices.\\n\\nAnsible tries to move file via `os.rename` first and fallback to another methods depending on error code. \\n\\nansible/module_utils/basic.py:\\n\\n``` python\\n        try:\\n            # Optimistically try a rename, solves some corner cases and can avoid useless work, throws exception if not atomic.\\n            os.rename(src, dest)\\n        except (IOError, OSError):\\n            e = get_exception()\\n            if e.errno not in [errno.EPERM, errno.EXDEV, errno.EACCES, errno.ETXTBSY]:\\n                # only try workarounds for errno 18 (cross device), 1 (not permitted),  13 (permission denied)\\n                # and 26 (text file busy) which happens on vagrant synced folders and other 'exotic' non posix file systems\\n                self.fail_json(msg='Could not replace file: %s to %s: %s' % (src, dest, e))\\n            else:\\n                dest_dir = os.path.dirname(dest)\\n                dest_file = os.path.basename(dest)\\n                ...\\n```\\n\\nI modified list of supported error codes by adding 0:\\n\\n``` python\\n            if e.errno not in [0, errno.EPERM, errno.EXDEV, errno.EACCES, errno.ETXTBSY]:\\n```\\n\\nand error is gone.\\n\", \n    \"component_name\": \"core\", \n    \"component_raw\": \"Core\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/17998\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Ansible logins as ansible user (non-root), becomes root and fails to change .bashrc of unprivileged user. Error appears only on particular managed machine (playbook works fine on another hosts).\", \n    \"title\": \"Ansible fails on moving file between devices with IOError 0\"\n  }, \n  \"17999\": {\n    \"ansible_version\": \"ansible 2.1.0.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\nurls.py\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.0.0\\n```\\n##### SUMMARY\\n\\nget_url on a ipv6 machine currently fails towards ipv6 web server on SSL with \\n\\\"Failed to validate the SSL certificate for hostname:443. Make sure your managed systems have a valid CA certificate installed. You can use validate_certs=False if you do not need to confirm the servers identity but this is unsafe and not recommended. Paths checked for this platform: /etc/ssl/certs, /etc/pki/ca-trust/extracted/pem, /etc/pki/tls/certs, /usr/share/ca-certificates/cacert.org, /etc/ansible\\\" \\n\\nThe error message is totally misleading, but after some debugging i figured out that it is caused by the certificate handler which can't establish a ipv6 connection. \\n\\nThis is fixed by using socket.create_connection (figures out ipv4/ipv6 automatically) instead of socket.socket. \\n\\nBefore:\\n\\n```\\nTASK [myrole : Install jdk using https] *************************\\nThursday 13 October 2016  13:34:15 +0200 (0:00:00.160)       0:06:21.364 ****** \\nfailed: [server.domain.dk] (item={u'jce': True, u'version': u'1.8.0_45', u'name': u'jdk-8u45-linux-x64.tar.gz'}) => {\\\"failed\\\": true, \\\"item\\\": {\\\"jce\\\": true, \\\"name\\\": \\\"jdk-8u45-linux-x64.tar.gz\\\", \\\"version\\\": \\\"1.8.0_45\\\"}, \\\"msg\\\": \\\"Failed to validate the SSL certificate for myreposerver.domain:443. Make sure your managed systems have a valid CA certificate installed. You can use validate_certs=False if you do not need to confirm the servers identity but this is unsafe and not recommended. Paths checked for this platform: /etc/ssl/certs, /etc/pki/ca-trust/extracted/pem, /etc/pki/tls/certs, /usr/share/ca-certificates/cacert.org, /etc/ansible\\\"}\\n```\\n\\nAfter:\\n\\n```\\nTASK [myrole : Install jdk using https] *************************\\nThursday 13 October 2016  13:49:03 +0200 (0:00:00.234)       0:06:16.652 ****** \\nok: [server.domain.dk] => (item={u'jce': True, u'version': u'1.8.0_45', u'name': u'jdk-8u45-linux-x64.tar.gz'})\\n```\\n\", \n    \"component_name\": \"urls.py\", \n    \"component_raw\": \"urls.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/17999\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"c:module_utils/urls\", \n      \"module_util\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"get_url on a ipv6 machine currently fails towards ipv6 web server on SSL with \\n\\\"Failed to validate the SSL certificate for hostname:443. Make sure your managed systems have a valid CA certificate installed. You can use validate_certs=False if you do not need to confirm the servers identity but this is unsafe and not recommended. Paths checked for this platform: /etc/ssl/certs, /etc/pki/ca-trust/extracted/pem, /etc/pki/tls/certs, /usr/share/ca-certificates/cacert.org, /etc/ansible\\\" \\n\\nThe error message is totally misleading, but after some debugging i figured out that it is caused by the certificate handler which can't establish a ipv6 connection. \\n\\nThis is fixed by using socket.create_connection (figures out ipv4/ipv6 automatically) instead of socket.socket. \\n\\nBefore:\\n\\n```\\nTASK [myrole : Install jdk using https] *************************\\nThursday 13 October 2016  13:34:15 +0200 (0:00:00.160)       0:06:21.364 ****** \\nfailed: [server.domain.dk] (item={u'jce': True, u'version': u'1.8.0_45', u'name': u'jdk-8u45-linux-x64.tar.gz'}) => {\\\"failed\\\": true, \\\"item\\\": {\\\"jce\\\": true, \\\"name\\\": \\\"jdk-8u45-linux-x64.tar.gz\\\", \\\"version\\\": \\\"1.8.0_45\\\"}, \\\"msg\\\": \\\"Failed to validate the SSL certificate for myreposerver.domain:443. Make sure your managed systems have a valid CA certificate installed. You can use validate_certs=False if you do not need to confirm the servers identity but this is unsafe and not recommended. Paths checked for this platform: /etc/ssl/certs, /etc/pki/ca-trust/extracted/pem, /etc/pki/tls/certs, /usr/share/ca-certificates/cacert.org, /etc/ansible\\\"}\\n```\\n\\nAfter:\\n\\n```\\nTASK [myrole : Install jdk using https] *************************\\nThursday 13 October 2016  13:49:03 +0200 (0:00:00.234)       0:06:16.652 ****** \\nok: [server.domain.dk] => (item={u'jce': True, u'version': u'1.8.0_45', u'name': u'jdk-8u45-linux-x64.tar.gz'})\\n```\", \n    \"title\": \"SSL ipv6 support for certificate handler in urls.py\"\n  }, \n  \"18004\": {\n    \"ansible_version\": \"ansible 2.3.0 (f/more_magicvars 8236e0aabe) last updated 2016/10/13 170607 (GMT +200)\\nlib/ansible/modules/core (detached HEAD 275fa3f055) last updated 2016/10/13 164343 (GMT +200)\\nlib/ansible/modules/extras  not found - use git submodule update --init lib/ansible/modules/extras\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\n```\\nlib/ansible/inventory/__init__.py\\nlib/ansible/vars/__init__.py\\nlib/ansible/vars/hostvars.py\\n```\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.3.0 (f/more_magicvars 8236e0aabe) last updated 2016/10/13 17:06:07 (GMT +200)\\n  lib/ansible/modules/core: (detached HEAD 275fa3f055) last updated 2016/10/13 16:43:43 (GMT +200)\\n  lib/ansible/modules/extras:  not found - use git submodule update --init lib/ansible/modules/extras\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nAdded parent_groups and child_groups magic variables to access direct children/parents groups.\\nThose lists were already exposed in the group class.\\n\\n**Example inventory**\\n\\n```\\n[toplevel:children]\\nsomesublevel\\nanothersublevel\\n\\n[somesublevel:children]\\nbottomlevel\\n\\n[anothersublevel:children]\\nbottomlevel\\n\\n[bottomlevel]\\nlocalhost\\n```\\n\\n**Example playbook**\\n\\n```\\n\\n---\\n- hosts: toplevel\\n  connection: local\\n  gather_facts: false\\n  tasks:\\n    - debug: var=child_groups['toplevel']\\n    - debug: var=parent_groups['toplevel']\\n\\n- hosts: somesublevel\\n  connection: local\\n  gather_facts: false\\n  tasks:\\n    - debug: var=child_groups['somesublevel']\\n    - debug: var=parent_groups['somesublevel']\\n\\n- hosts: anothersublevel\\n  connection: local\\n  gather_facts: false\\n  tasks:\\n    - debug: var=child_groups['anothersublevel']\\n    - debug: var=parent_groups['anothersublevel']\\n\\n- hosts: bottomlevel\\n  connection: local\\n  gather_facts: false\\n  tasks:\\n    - debug: var=child_groups['bottomlevel']\\n    - debug: var=parent_groups['bottomlevel']\\n...\\n```\\n\\n**ansible-playbook output:**\\n\\n```\\nPLAY [toplevel] ****************************************************************\\n\\nTASK [debug] *******************************************************************\\nok: [localhost] => {\\n    \\\"child_groups['toplevel']\\\": [\\n        \\\"somesublevel\\\", \\n        \\\"anothersublevel\\\"\\n    ]\\n}\\n\\nTASK [debug] *******************************************************************\\nok: [localhost] => {\\n    \\\"parent_groups['toplevel']\\\": [\\n        \\\"all\\\"\\n    ]\\n}\\n\\nPLAY [somesublevel] ************************************************************\\n\\nTASK [debug] *******************************************************************\\nok: [localhost] => {\\n    \\\"child_groups['somesublevel']\\\": [\\n        \\\"bottomlevel\\\"\\n    ]\\n}\\n\\nTASK [debug] *******************************************************************\\nok: [localhost] => {\\n    \\\"parent_groups['somesublevel']\\\": [\\n        \\\"toplevel\\\"\\n    ]\\n}\\n\\nPLAY [anothersublevel] *********************************************************\\n\\nTASK [debug] *******************************************************************\\nok: [localhost] => {\\n    \\\"child_groups['anothersublevel']\\\": [\\n        \\\"bottomlevel\\\"\\n    ]\\n}\\n\\nTASK [debug] *******************************************************************\\nok: [localhost] => {\\n    \\\"parent_groups['anothersublevel']\\\": [\\n        \\\"toplevel\\\"\\n    ]\\n}\\n\\nPLAY [bottomlevel] *************************************************************\\n\\nTASK [debug] *******************************************************************\\nok: [localhost] => {\\n    \\\"child_groups['bottomlevel']\\\": []\\n}\\n\\nTASK [debug] *******************************************************************\\nok: [localhost] => {\\n    \\\"parent_groups['bottomlevel']\\\": [\\n        \\\"somesublevel\\\", \\n        \\\"anothersublevel\\\"\\n    ]\\n}\\n```\\n\", \n    \"component_name\": \"lib/ansible/inventory/init.py\", \n    \"component_raw\": \"```\\nlib/ansible/inventory/__init__.py\\nlib/ansible/vars/__init__.py\\nlib/ansible/vars/hostvars.py\\n```\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18004\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:vars/hostvars\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Added parent_groups and child_groups magic variables to access direct children/parents groups.\\nThose lists were already exposed in the group class.\\n\\n**Example inventory**\\n\\n```\\n[toplevel:children]\\nsomesublevel\\nanothersublevel\\n\\n[somesublevel:children]\\nbottomlevel\\n\\n[anothersublevel:children]\\nbottomlevel\\n\\n[bottomlevel]\\nlocalhost\\n```\\n\\n**Example playbook**\\n\\n```\\n\\n---\\n- hosts: toplevel\\n  connection: local\\n  gather_facts: false\\n  tasks:\\n    - debug: var=child_groups['toplevel']\\n    - debug: var=parent_groups['toplevel']\\n\\n- hosts: somesublevel\\n  connection: local\\n  gather_facts: false\\n  tasks:\\n    - debug: var=child_groups['somesublevel']\\n    - debug: var=parent_groups['somesublevel']\\n\\n- hosts: anothersublevel\\n  connection: local\\n  gather_facts: false\\n  tasks:\\n    - debug: var=child_groups['anothersublevel']\\n    - debug: var=parent_groups['anothersublevel']\\n\\n- hosts: bottomlevel\\n  connection: local\\n  gather_facts: false\\n  tasks:\\n    - debug: var=child_groups['bottomlevel']\\n    - debug: var=parent_groups['bottomlevel']\\n...\\n```\\n\\n**ansible-playbook output:**\\n\\n```\\nPLAY [toplevel] ****************************************************************\\n\\nTASK [debug] *******************************************************************\\nok: [localhost] => {\\n    \\\"child_groups['toplevel']\\\": [\\n        \\\"somesublevel\\\", \\n        \\\"anothersublevel\\\"\\n    ]\\n}\\n\\nTASK [debug] *******************************************************************\\nok: [localhost] => {\\n    \\\"parent_groups['toplevel']\\\": [\\n        \\\"all\\\"\\n    ]\\n}\\n\\nPLAY [somesublevel] ************************************************************\\n\\nTASK [debug] *******************************************************************\\nok: [localhost] => {\\n    \\\"child_groups['somesublevel']\\\": [\\n        \\\"bottomlevel\\\"\\n    ]\\n}\\n\\nTASK [debug] *******************************************************************\\nok: [localhost] => {\\n    \\\"parent_groups['somesublevel']\\\": [\\n        \\\"toplevel\\\"\\n    ]\\n}\\n\\nPLAY [anothersublevel] *********************************************************\\n\\nTASK [debug] *******************************************************************\\nok: [localhost] => {\\n    \\\"child_groups['anothersublevel']\\\": [\\n        \\\"bottomlevel\\\"\\n    ]\\n}\\n\\nTASK [debug] *******************************************************************\\nok: [localhost] => {\\n    \\\"parent_groups['anothersublevel']\\\": [\\n        \\\"toplevel\\\"\\n    ]\\n}\\n\\nPLAY [bottomlevel] *************************************************************\\n\\nTASK [debug] *******************************************************************\\nok: [localhost] => {\\n    \\\"child_groups['bottomlevel']\\\": []\\n}\\n\\nTASK [debug] *******************************************************************\\nok: [localhost] => {\\n    \\\"parent_groups['bottomlevel']\\\": [\\n        \\\"somesublevel\\\", \\n        \\\"anothersublevel\\\"\\n    ]\\n}\\n```\", \n    \"title\": \"Add parent_groups and child_groups magic variables\"\n  }, \n  \"18007\": {\n    \"ansible_version\": \"ansible 2.3.0 (on_missing_callback c70d825144) last updated 2016/10/13 124430 (GMT -400)\\nlib/ansible/modules/core (detached HEAD 275fa3f055) last updated 2016/10/12 140623 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD 3e1ea76a75) last updated 2016/10/13 113441 (GMT -400)\\nconfig file = /home/adrian/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\\nPreface\\nThis is a prototype of an idea but it seems to work. If the idea seems reasonable I can flesh it out (tests etc)\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nlib/ansible/plugins/callback\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.3.0 (on_missing_callback c70d825144) last updated 2016/10/13 12:44:30 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD 275fa3f055) last updated 2016/10/12 14:06:23 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD 3e1ea76a75) last updated 2016/10/13 11:34:41 (GMT -400)\\n  config file = /home/adrian/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n\\n```\\n##### Preface\\n\\nThis is a prototype of an idea, but it seems to work. If the idea seems reasonable I can flesh it out (tests etc)\\n##### SUMMARY\\n\\nThis adds two new callback plugin wildcard methods, and a new '_callback_method_name' arg for the wildcard method.\\n### **New methods**\\n- v2_on_missing\\n- v2_on_all\\n\\nv2_on_missing is only called if the callback plugin does not provide a exact match method and it provides a v2_on_missing method. \\n\\nThe current v2_on_any can be used in place of a missing callback method, but if it exists, it will be used in place of the requested method. But the plugin cant tell if it's falling back to v2_on_any intentionally (being used as a generic method) or if it is falling back because the plugin is incomplete.\\n\\nv2_on_missing is 'I think plugin is complete, but if I missed a method, call v2_on_missing for the missed cases'\\nv2_on_any is 'I know the plugin is not complete, but if I missed a method, call v2_on_any for the other cases'\\n\\nexpected miss vs unexpected miss. signature and implementation can be essentially the same\\n\\nv2_on_missing is overrides v2_on_any. A plugin could consider v2_on_missing indicates an error, or it could treat it the same as v2_on_any. However a v2_on_missing that acts the same as v2_on_any doesn't accomplish anything (providing v2_on_any and not v2_on_missing would be equivalent to  v2_on_missing and v2_on_any being the same).\\n\\nv2_on_all however, if it exists, is **always** called, regardless if the original requested method exists in the plugin or not. It is called **in addition** to any other callback methods that may also match. \\n### **New _callback_method_name kwarg for wildcard methods**\\n\\nFor the wildcard methods [with (_args, *_kwargs) signature], they now get a '_callback_method_name' item in kwargs added when called. This allows v2_on_any/v2_on_all/v2_on_missing to know what method they are pretending to be. The generic wildcard methods can use that info to implement more specific behaviors if useful.\\n\\nOne potential use of _callback_method_name would be a callback plugin that only provides a single wildcard method, v2_on_all for ex. Then the plugins impl of v2_on_all could then handle any callback and route the method name and args to a sub-plugins. A generic plugin could have-a v1 plugin and a v2 plugin and route method invocations to the right implementation. \\n\\nThat would allow a callback plugin to implement much of the logic of task_queue_manager.send_callback(). Potentially, the base CallbackModule class could do this, routing subsets of callback api to a new type of plugins[1]\\n\\n[1] for ex, a PlaybookCallback and a TaskCallback and  a StatsCallback.\\n\", \n    \"component_name\": \"lib/ansible/plugins/callback\", \n    \"component_raw\": \"lib/ansible/plugins/callback\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18007\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"in progress\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This adds two new callback plugin wildcard methods, and a new '_callback_method_name' arg for the wildcard method.\\n### **New methods**\\n- v2_on_missing\\n- v2_on_all\\n\\nv2_on_missing is only called if the callback plugin does not provide a exact match method and it provides a v2_on_missing method. \\n\\nThe current v2_on_any can be used in place of a missing callback method, but if it exists, it will be used in place of the requested method. But the plugin cant tell if it's falling back to v2_on_any intentionally (being used as a generic method) or if it is falling back because the plugin is incomplete.\\n\\nv2_on_missing is 'I think plugin is complete, but if I missed a method, call v2_on_missing for the missed cases'\\nv2_on_any is 'I know the plugin is not complete, but if I missed a method, call v2_on_any for the other cases'\\n\\nexpected miss vs unexpected miss. signature and implementation can be essentially the same\\n\\nv2_on_missing is overrides v2_on_any. A plugin could consider v2_on_missing indicates an error, or it could treat it the same as v2_on_any. However a v2_on_missing that acts the same as v2_on_any doesn't accomplish anything (providing v2_on_any and not v2_on_missing would be equivalent to  v2_on_missing and v2_on_any being the same).\\n\\nv2_on_all however, if it exists, is **always** called, regardless if the original requested method exists in the plugin or not. It is called **in addition** to any other callback methods that may also match. \\n### **New _callback_method_name kwarg for wildcard methods**\\n\\nFor the wildcard methods [with (_args, *_kwargs) signature], they now get a '_callback_method_name' item in kwargs added when called. This allows v2_on_any/v2_on_all/v2_on_missing to know what method they are pretending to be. The generic wildcard methods can use that info to implement more specific behaviors if useful.\\n\\nOne potential use of _callback_method_name would be a callback plugin that only provides a single wildcard method, v2_on_all for ex. Then the plugins impl of v2_on_all could then handle any callback and route the method name and args to a sub-plugins. A generic plugin could have-a v1 plugin and a v2 plugin and route method invocations to the right implementation. \\n\\nThat would allow a callback plugin to implement much of the logic of task_queue_manager.send_callback(). Potentially, the base CallbackModule class could do this, routing subsets of callback api to a new type of plugins[1]\\n\\n[1] for ex, a PlaybookCallback and a TaskCallback and  a StatsCallback.\", \n    \"title\": \"new callback plugin wildcard methods and '_callback_method_name' arg\"\n  }, \n  \"18009\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel ee2e904824) last updated 2016/10/12 120912 (GMT -700)\\nlib/ansible/modules/core (detached HEAD 275fa3f055) last updated 2016/10/12 121004 (GMT -700)\\nlib/ansible/modules/extras (detached HEAD 6c31d91fa5) last updated 2016/10/12 121004 (GMT -700)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nhostvars\\nconnection: local\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.3.0 (devel ee2e904824) last updated 2016/10/12 12:09:12 (GMT -700)\\n  lib/ansible/modules/core: (detached HEAD 275fa3f055) last updated 2016/10/12 12:10:04 (GMT -700)\\n  lib/ansible/modules/extras: (detached HEAD 6c31d91fa5) last updated 2016/10/12 12:10:04 (GMT -700)\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### OS / ENVIRONMENT\\n\\nOSX + Anaconda Python (or Homebrew)\\nUbuntu 16\\nRHEL 7\\n##### SUMMARY\\n\\nTo deal with multiple python environments, on my ansible host, I have the following inventory:\\n\\n```\\nlocalhost ansible_connection=local ansible_python_interpreter=\\\"/usr/bin/env python\\\"\\n\\n<target inventory>\\n```\\n\\nI'm using an ansible directory structure based on the standard (http://docs.ansible.com/ansible/playbooks_best_practices.html#directory-layout)\\n\\nHowever, I want to be able to override the `localhost` `ansible_*` vars on a per-ansible-host basis (as multiple computers may be sharing the same ansible directory structure that's kept in git.\\n\\nThe `localhost` entry is special in that it's the only part of the system that's going to be running in different environments.  The managed hosts are all fixed environments, and easy to tailor.  But the localhost settings may need to be tailored per installation.\\n\", \n    \"component_name\": \"hostvars\", \n    \"component_raw\": \"hostvars\\nconnection: local\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18009\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"To deal with multiple python environments, on my ansible host, I have the following inventory:\\n\\n```\\nlocalhost ansible_connection=local ansible_python_interpreter=\\\"/usr/bin/env python\\\"\\n\\n<target inventory>\\n```\\n\\nI'm using an ansible directory structure based on the standard (http://docs.ansible.com/ansible/playbooks_best_practices.html#directory-layout)\\n\\nHowever, I want to be able to override the `localhost` `ansible_*` vars on a per-ansible-host basis (as multiple computers may be sharing the same ansible directory structure that's kept in git.\\n\\nThe `localhost` entry is special in that it's the only part of the system that's going to be running in different environments.  The managed hosts are all fixed environments, and easy to tailor.  But the localhost settings may need to be tailored per installation.\", \n    \"title\": \"Set \\\"localhost\\\" inventory vars via ansible.cfg\"\n  }, \n  \"18016\": {\n    \"ansible_version\": \"ansible 2.3.0 (fix_env-setup 26c4d6065c) last updated 2016/10/13 165009 (GMT -400)\\nlib/ansible/modules/core (detached HEAD 275fa3f055) last updated 2016/10/13 141211 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD 3e1ea76a75) last updated 2016/10/13 141211 (GMT -400)\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Pull Request\\n- Docs Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\nhacking/env-setup\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.3.0 (fix_env-setup 26c4d6065c) last updated 2016/10/13 16:50:09 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD 275fa3f055) last updated 2016/10/13 14:12:11 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD 3e1ea76a75) last updated 2016/10/13 14:12:11 (GMT -400)\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nMade it faster to source the hacking/env-setup by allowing gen_egg_info and removal of .pyc files to be run in the background.   I went down a path to make gen_egg dependent on file-timestamps as well, but backed out of that option.\\n\\n<!---\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\ncommit message and your description; but you should still explain what\\nthe change does.\\n-->\\n\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\n\\n```\\nNothing to see here.\\n```\\n\\nAllow egg-info creation (and .pyc removal) to happen in background when -q is\\nused to speedup sourcing hacking/env-setup.  Couple other minor fixes:\\nchdir back to parent was unnecessary due to already in subshell,\\n.\\\\* on expr matches was extraneous.\\n\\nAdded doc info to make env-setup a bit more static by adding a source command\\nto your profile\\n\", \n    \"component_name\": \"hacking/env-setup\", \n    \"component_raw\": \"hacking/env-setup\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18016\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"feature\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Made it faster to source the hacking/env-setup by allowing gen_egg_info and removal of .pyc files to be run in the background.   I went down a path to make gen_egg dependent on file-timestamps as well, but backed out of that option.\\n\\n\\n\\n\\n\\n```\\nNothing to see here.\\n```\\n\\nAllow egg-info creation (and .pyc removal) to happen in background when -q is\\nused to speedup sourcing hacking/env-setup.  Couple other minor fixes:\\nchdir back to parent was unnecessary due to already in subshell,\\n.\\\\* on expr matches was extraneous.\\n\\nAdded doc info to make env-setup a bit more static by adding a source command\\nto your profile\", \n    \"title\": \"Minor cleanup/speedup to hacking/env-setup\"\n  }, \n  \"18019\": {\n    \"ansible_version\": \"ansible 2.3.0 (uncensored_callback efa7906fe9) last updated 2016/10/13 190853 (GMT -400)\\nlib/ansible/modules/core (detached HEAD 275fa3f055) last updated 2016/10/12 140623 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD 3e1ea76a75) last updated 2016/10/13 113441 (GMT -400)\\nconfig file = /home/adrian/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\nlib/ansible/plugins/callback/uncensored.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.3.0 (uncensored_callback efa7906fe9) last updated 2016/10/13 19:08:53 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD 275fa3f055) last updated 2016/10/12 14:06:23 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD 3e1ea76a75) last updated 2016/10/13 11:34:41 (GMT -400)\\n  config file = /home/adrian/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n\\n\\n```\\n##### SUMMARY\\n\\nLike the regular 'default' callback, but it doesn't remove\\nany items from the output or respect no_log, etc.\\n\", \n    \"component_name\": \"lib/ansible/plugins/callback/uncensored.py\", \n    \"component_raw\": \"lib/ansible/plugins/callback/uncensored.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18019\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/callback\", \n      \"feature\", \n      \"in progress\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Like the regular 'default' callback, but it doesn't remove\\nany items from the output or respect no_log, etc.\", \n    \"title\": \"add an 'uncensored' callback.\"\n  }, \n  \"18033\": {\n    \"ansible_version\": \"ansible 2.3.0 (galaxy_list_again 5777d831b0) last updated 2016/10/14 162751 (GMT -400)\\nlib/ansible/modules/core (detached HEAD 275fa3f055) last updated 2016/10/12 140623 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD 3e1ea76a75) last updated 2016/10/13 113441 (GMT -400)\\nconfig file = /home/adrian/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\nlib/ansible/cli/galaxy.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.3.0 (galaxy_list_again 5777d831b0) last updated 2016/10/14 16:27:51 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD 275fa3f055) last updated 2016/10/12 14:06:23 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD 3e1ea76a75) last updated 2016/10/13 11:34:41 (GMT -400)\\n  config file = /home/adrian/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n\\n```\\n##### SUMMARY\\n\\n'ansible-galaxy list' would fail if any of the paths in rolespaths was invalid (missing or not a dir) even if there were other valid paths.\\n\\nSo this changes list to gather all the failures, then warn if there are still valid roles paths or to exit if there are no valid roles paths.\\n\\nAnd a fair amount of refactoring while isolating the various steps in 'list' from each other.\\n\\n```\\n```\\n\", \n    \"component_name\": \"lib/ansible/cli/galaxy.py\", \n    \"component_raw\": \"lib/ansible/cli/galaxy.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18033\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:cli/\", \n      \"in progress\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"'ansible-galaxy list' would fail if any of the paths in rolespaths was invalid (missing or not a dir) even if there were other valid paths.\\n\\nSo this changes list to gather all the failures, then warn if there are still valid roles paths or to exit if there are no valid roles paths.\\n\\nAnd a fair amount of refactoring while isolating the various steps in 'list' from each other.\\n\\n```\\n```\", \n    \"title\": \"[WIP] Galaxy list should not exit on invalid rolespaths if there other valid roles paths\"\n  }, \n  \"18035\": {\n    \"ansible_version\": \"ansible 2.3.0 (allow-ssh-agents 5bef826483) last updated 2016/10/14 165324 (GMT -500)\\nlib/ansible/modules/core (detached HEAD 275fa3f055) last updated 2016/10/14 160237 (GMT -500)\\nlib/ansible/modules/extras (detached HEAD 3e1ea76a75) last updated 2016/10/14 160241 (GMT -500)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nmodule_utils.shell\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.3.0 (allow-ssh-agents 5bef826483) last updated 2016/10/14 16:53:24 (GMT -500)\\n  lib/ansible/modules/core: (detached HEAD 275fa3f055) last updated 2016/10/14 16:02:37 (GMT -500)\\n  lib/ansible/modules/extras: (detached HEAD 3e1ea76a75) last updated 2016/10/14 16:02:41 (GMT -500)\\n  config file = \\n  configured module search path = Default w/o overrides\\n\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nParamiko includes SSH agent support, and this support\\nis exposed in the modules_utils.shell.Shell class.  This\\npatch exposes the functionality to CliBase class,\\nand all of the network helpers that inherit from it.  This allows users to use an existing SSH agent instead having keys with no passphrase, or having to enter the passphrase on the command line or via\\nenvironment variables.\\n\\nDefault for allow_agent is currently left as false, however it could be easily changed to allow\\nSSH agents by default.\\n\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\n\\n```\\n\\n```\\n\", \n    \"component_name\": \"module_utils.shell\", \n    \"component_raw\": \"module_utils.shell\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18035\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"feature\", \n      \"module_util\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"networking\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Paramiko includes SSH agent support, and this support\\nis exposed in the modules_utils.shell.Shell class.  This\\npatch exposes the functionality to CliBase class,\\nand all of the network helpers that inherit from it.  This allows users to use an existing SSH agent instead having keys with no passphrase, or having to enter the passphrase on the command line or via\", \n    \"title\": \"Add SSH agent support for network modules\"\n  }, \n  \"18036\": {\n    \"ansible_version\": \"ansible-playbook 2.0.1.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nansible-playbook\\n##### ANSIBLE VERSION\\n\\n```\\nansible-playbook 2.0.1.0\\n```\\n##### CONFIGURATION\\n\\nNo change\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n##### STEPS TO REPRODUCE\\n\\n```\\n$ ls playbooks/\\n.\\n.\\n.\\nelasticsearch  # directory containing more granular playbooks\\nelasticsearch.yml  # top-level playbook for elasticsearch\\n.\\n.\\n.\\n```\\n\\n```\\n- hosts: elasticsearch\\n  become: yes\\n  roles:\\n    - elasticsearch\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\nRole `elasticsearch` is included and executed.\\n##### ACTUAL RESULTS\\n\\nAnsible runs task `setup` immediately followed by play recap. It is possible to work around this behavior by renaming the punned `playbooks/elasticsearch` directory.\\n\", \n    \"component_name\": \"ansible-playbook\", \n    \"component_raw\": \"ansible-playbook\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18036\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"\", \n    \"title\": \"Role does not run when a directory of the same name exists on the playbooks path.\"\n  }, \n  \"18049\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\ntest for hg\\n\", \n    \"component_name\": \"test for hg\", \n    \"component_raw\": \"test for hg\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18049\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"in progress\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"python3\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": null, \n    \"title\": \"Enable test on mercurial for python 3\"\n  }, \n  \"18051\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\ntest\\n##### SUMMARY\\n\\ntest_hg fail on the container for python 3 with this error:\\n\\n```\\n2016-10-16 12:05:08 TASK [hg : verify that mercurial is installed so this test can continue] *******\\n2016-10-16 12:05:08 fatal: [testhost]: FAILED! => {\\\"changed\\\": true, \\\"cmd\\\": \\\"which hg\\\", \\\"delta\\\": \\\"0:00:00.002211\\\", \\\"end\\\": \\\"2016-10-16 12:05:08.450487\\\", \\\"failed\\\": true, \\\"rc\\\": 1, \\\"start\\\": \\\"2016-10-16 12:05:08.448276\\\", \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"\\\", \\\"stdout_lines\\\": [], \\\"warnings\\\": []}\\n```\\n\\nI suspect that we tried to avoid adding python 2 in the container for fear of breaking the tests, but then, since hg is python 2 for the time being, , we can't test it.\\n\", \n    \"component_name\": \"test\", \n    \"component_raw\": \"test\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18051\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"python3\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"test_hg fail on the container for python 3 with this error:\\n\\n```\\n2016-10-16 12:05:08 TASK [hg : verify that mercurial is installed so this test can continue] *******\\n2016-10-16 12:05:08 fatal: [testhost]: FAILED! => {\\\"changed\\\": true, \\\"cmd\\\": \\\"which hg\\\", \\\"delta\\\": \\\"0:00:00.002211\\\", \\\"end\\\": \\\"2016-10-16 12:05:08.450487\\\", \\\"failed\\\": true, \\\"rc\\\": 1, \\\"start\\\": \\\"2016-10-16 12:05:08.448276\\\", \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"\\\", \\\"stdout_lines\\\": [], \\\"warnings\\\": []}\\n```\\n\\nI suspect that we tried to avoid adding python 2 in the container for fear of breaking the tests, but then, since hg is python 2 for the time being, , we can't test it.\", \n    \"title\": \"Make test hg run on python 3\"\n  }, \n  \"18067\": {\n    \"ansible_version\": \"ansible 2.2.0.0 (stable-2.2 5bf850568a) last updated 2016/10/17 083453 (GMT +100)\\nlib/ansible/modules/core (detached HEAD ec4eebc92a) last updated 2016/10/17 083500 (GMT +100)\\nlib/ansible/modules/extras (detached HEAD 2b7385d15e) last updated 2016/10/17 083500 (GMT +100)\\nconfig file =\\nconfigured module search path = [/Users/brian/git/ansible/library]\", \n    \"body\": \"##### ISSUE TYPE\\n- Documentation Report\\n##### COMPONENT NAME\\n\\nroles_path\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0.0 (stable-2.2 5bf850568a) last updated 2016/10/17 08:34:53 (GMT +100)\\n  lib/ansible/modules/core: (detached HEAD ec4eebc92a) last updated 2016/10/17 08:35:00 (GMT +100)\\n  lib/ansible/modules/extras: (detached HEAD 2b7385d15e) last updated 2016/10/17 08:35:00 (GMT +100)\\n  config file =\\n  configured module search path = ['/Users/brian/git/ansible/library']\\n```\\n##### CONFIGURATION\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nBehaviour of roles_path with relative paths is not clear in [documentation](http://docs.ansible.com/ansible/intro_configuration.html#roles-path)\\n##### STEPS TO REPRODUCE\\n\\nUse case: a 'shared' roles directory alongside one or more other playbook directories.\\n\\n```\\n==> foo/foo.yml <==\\n- hosts: localhost\\n  roles:\\n    - one\\n    - two\\n\\n==> foo/roles/one/tasks/main.yml <==\\n- debug: msg=\\\"In task one\\\"\\n\\n==> shared/roles/two/tasks/main.yml <==\\n- debug: msg=\\\"In task two\\\"\\n```\\n##### EXPECTED RESULTS\\n\\nIf you set `roles_path = ../shared/roles\\\" in config, it's not clear what this would be relative to. Seems likely it would have been relative to the playbook directory, or to the current working directory.\\n##### ACTUAL RESULTS\\n\\nAs far as I can tell from experimentation, the directories searched are relative to whichever directory contains `ansible.cfg`\\n\\nYou can test this by setting ANSIBLE_CONFIG to point to some file which contains\\n\\n```\\n[defaults]\\nroles_path = ../wibble/bibble\\n```\\n\\nand then looking for the error message. e.g.\\n\\n> ANSIBLE_CONFIG=**/Users/brian/tmp/ansible/y.cfg ansible-playbook** tmp/ansible/foo/foo.yml\\n> \\n> ERROR! the role 'two' was not found in /Users/brian/tmp/ansible/foo/roles:**/Users/brian/tmp/wibble/bibble**:/Users/brian/tmp/ansible/foo\\n\\nThis is reasonable behaviour (given that the definition of roles_path is made in `ansible.cfg` itself), but I can't find this documented.\\n\", \n    \"component_name\": \"roles_path\", \n    \"component_raw\": \"roles_path\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18067\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Behaviour of roles_path with relative paths is not clear in [documentation](http://docs.ansible.com/ansible/intro_configuration.html#roles-path)\", \n    \"title\": \"Documentation of relative directories in roles_path\"\n  }, \n  \"18069\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nName of the plugin/filter/core\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.2.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nAdded seed parameter to rand and shuffle jinja2 filters to enable producing repeatable \\\"random\\\" output\\n\\nExample playbook:\\n\\n```\\n- name: test random                                                               \\n  hosts: all\\n  vars:\\n    ips: [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,x,y,z]\\n\\n  tasks:\\n    - name: random list\\n      debug:\\n        msg: \\\"{{ (ips | shuffle() | join()) }}\\\"\\n    - name: random list (seeded)\\n      debug:\\n        msg: \\\"{{ (ips | shuffle(seed=ansible_fqdn) | join()) }}\\\"\\n    - name: random number\\n      debug:\\n        msg: \\\"{{ 59 | random() }}\\\"\\n    - name: random number (seeded)\\n      debug:\\n        msg: \\\"{{ 59 | random(seed=ansible_fqdn) }}\\\"\\n```\\n\", \n    \"component_name\": \"name of the plugin/filter/core\", \n    \"component_raw\": \"Name of the plugin/filter/core\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18069\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/filter\", \n      \"docs\", \n      \"feature\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Added seed parameter to rand and shuffle jinja2 filters to enable producing repeatable \\\"random\\\" output\\n\\nExample playbook:\\n\\n```\\n- name: test random                                                               \\n  hosts: all\\n  vars:\\n    ips: [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,x,y,z]\\n\\n  tasks:\\n    - name: random list\\n      debug:\\n        msg: \\\"{{ (ips | shuffle() | join()) }}\\\"\\n    - name: random list (seeded)\\n      debug:\\n        msg: \\\"{{ (ips | shuffle(seed=ansible_fqdn) | join()) }}\\\"\\n    - name: random number\\n      debug:\\n        msg: \\\"{{ 59 | random() }}\\\"\\n    - name: random number (seeded)\\n      debug:\\n        msg: \\\"{{ 59 | random(seed=ansible_fqdn) }}\\\"\\n```\", \n    \"title\": \"Seedable random\"\n  }, \n  \"18079\": {\n    \"ansible_version\": \"ansible 2.2.0.0 (stable-2.2 7ee14f466e) last updated 2016/10/17 180105 (GMT +100)\\nlib/ansible/modules/core (detached HEAD ec4eebc92a) last updated 2016/10/17 083500 (GMT +100)\\nlib/ansible/modules/extras (detached HEAD 2b7385d15e) last updated 2016/10/17 083500 (GMT +100)\\nconfig file = /Users/brian/tmp/ansible.cfg\\nconfigured module search path = [/Users/brian/git/ansible/library]\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nroles_path\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0.0 (stable-2.2 7ee14f466e) last updated 2016/10/17 18:01:05 (GMT +100)\\n  lib/ansible/modules/core: (detached HEAD ec4eebc92a) last updated 2016/10/17 08:35:00 (GMT +100)\\n  lib/ansible/modules/extras: (detached HEAD 2b7385d15e) last updated 2016/10/17 08:35:00 (GMT +100)\\n  config file = /Users/brian/tmp/ansible.cfg\\n  configured module search path = ['/Users/brian/git/ansible/library']\\n```\\n##### CONFIGURATION\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nBe able to set roles_path within a playbook\\n##### STEPS TO REPRODUCE\\n\\nUse case: I have several directories containing playbooks and private roles, plus a directory of shared roles as a sibling directory.\\n\\n```\\nfoo/pb1.yml\\nfoo/roles/...\\nbar/pb2.yml\\nbar/roles/...\\nbaz/pb3.yml\\nbaz/roles/...\\nshared/roles/...\\n```\\n\\nI want the user to be able to checkout this bundle at any location in the filesystem, e.g. their home directory.\\n\\nI would like to be able to reference shared roles without having to give explicit paths every time:\\n\\n```\\n  roles:\\n    - role: ../shared/roles/s1\\n    - role: ../shared/roles/s2\\n```\\n##### EXPECTED RESULTS\\n\\nI was hoping for a way to set `roles_path: ../shared/roles` in the playbook itself.  I didn't find a way to do this in [playbooks_intro](http://docs.ansible.com/ansible/playbooks_intro.html) or [playbooks_special_topics](http://docs.ansible.com/ansible/playbooks_special_topics.html)\\n##### ACTUAL RESULTS\\n\\nI tried `vars: {ansible_roles_path: ../shared/roles}` and `vars: {roles_path: ../shared/roles}` but neither made a difference.\\n##### WORKAROUND\\n\\nAnsible will read a file `ansible.cfg` in the current working directory, before looking in `~/.ansible.cfg` or `/etc/ansible.cfg`. So it is possible to drop ansible.cfg in the playbook directory containing\\n\\n```\\n[defaults]\\nroles_path = ../shared/roles\\n```\\n\\nHowever this has two problems. Firstly, the user must change directory before running the playbook:\\n\\n```\\n# This works\\ncd path/to/foo\\nansible-playbook pb1.yml\\n\\n# This doesn't work\\nansible-playbook path/to/foo/pb1.yml\\n```\\n\\nSecondly, any settings in the global ansible.cfg or per-user ansible.cfg are no longer picked up.\\n\", \n    \"component_name\": \"roles_path\", \n    \"component_raw\": \"roles_path\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18079\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Be able to set roles_path within a playbook\", \n    \"title\": \"[Feature] ability to set roles_path from within playbook\"\n  }, \n  \"18085\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.1.1.0\\nconfig file = /home/deploy/rms-ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\\nAlso note the python azure sdk version\\npip show azure\\nMetadata-Version 2.0\\nName azure\\nVersion 2.0.0rc5\", \n    \"body\": \"##### ISSUE TYPE\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\ndynamic inventory for azure @ `contrib/inventory/azure_rm.py`\\n##### ANSIBLE VERSION\\n\\n```\\nansible --version\\nansible 2.1.1.0\\n  config file = /home/deploy/rms-ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n\\nAlso note the python azure sdk version\\n\\n```\\npip show azure\\n\\n---\\nMetadata-Version: 2.0\\nName: azure\\nVersion: 2.0.0rc5\\nSummary: Microsoft Azure Client Libraries for Python\\nHome-page: https://github.com/Azure/azure-sdk-for-python\\nAuthor: Microsoft Corporation\\nAuthor-email: ptvshelp@microsoft.com\\nInstaller: pip\\nLicense: MIT License\\nLocation: /usr/lib/python3.4/site-packages\\nRequires: azure-graphrbac, azure-mgmt, azure-batch, azure-servicebus, azure-storage, azure-servicemanagement-legacy\\nClassifiers:\\n  Development Status :: 5 - Production/Stable\\n  Programming Language :: Python\\n  Programming Language :: Python :: 2\\n  Programming Language :: Python :: 2.7\\n  Programming Language :: Python :: 3\\n  Programming Language :: Python :: 3.3\\n  Programming Language :: Python :: 3.4\\n  Programming Language :: Python :: 3.5\\n  License :: OSI Approved :: MIT License\\n```\\n##### SUMMARY\\n\\nWhen querying azure virtual machines that are:\\n1. Windows OS based\\n2. Have winrm enabled and listeners added.\\n\\nThe `listener.protocol` returns a complex object that causes the JSON parse to fail.\\nThe error is:\\n\\n```\\nInventory script (inventory/azure/azure_rm.py) had an execution error: Traceback (most recent call last):\\n  File \\\"/home/deploy/rms-ansible/inventory/azure/azure_rm.py\\\", line 763, in <module>\\n    main()\\n  File \\\"/home/deploy/rms-ansible/inventory/azure/azure_rm.py\\\", line 759, in main\\n    AzureInventory()\\n  File \\\"/home/deploy/rms-ansible/inventory/azure/azure_rm.py\\\", line 400, in __init__\\n    print (self._json_format_dict(pretty=self._args.pretty))\\n  File \\\"/home/deploy/rms-ansible/inventory/azure/azure_rm.py\\\", line 642, in _json_format_dict\\n    return json.dumps(self._inventory)\\n  File \\\"/usr/lib64/python2.7/json/__init__.py\\\", line 243, in dumps\\n    return _default_encoder.encode(obj)\\n  File \\\"/usr/lib64/python2.7/json/encoder.py\\\", line 207, in encode\\n    chunks = self.iterencode(o, _one_shot=True)\\n  File \\\"/usr/lib64/python2.7/json/encoder.py\\\", line 270, in iterencode\\n    return _iterencode(o, 0)\\n  File \\\"/usr/lib64/python2.7/json/encoder.py\\\", line 184, in default\\n    raise TypeError(repr(o) + \\\" is not JSON serializable\\\")\\nTypeError: <ProtocolTypes.http: 'Http'> is not JSON serializable\\n```\\n\\nUpdating the return to store `listener.protocol.value` captures the setting and allows the JSON parser work as intended.\\n\", \n    \"component_name\": \"dynamic inventory for azure @ contrib/inventory/azure_rm.py\", \n    \"component_raw\": \"dynamic inventory for azure @ `contrib/inventory/azure_rm.py`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18085\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"azure\", \n      \"bug\", \n      \"cloud\"\n    ], \n    \"module_match\": null, \n    \"summary\": \": Microsoft Azure Client Libraries for Python\\nHome-page: https://github.com/Azure/azure-sdk-for-python\\nAuthor: Microsoft Corporation\\nAuthor-email: ptvshelp@microsoft.com\\nInstaller: pip\\nLicense: MIT License\\nLocation: /usr/lib/python3.4/site-packages\\nRequires: azure-graphrbac, azure-mgmt, azure-batch, azure-servicebus, azure-storage, azure-servicemanagement-legacy\\nClassifiers:\\n  Development Status :: 5 - Production/Stable\\n  Programming Language :: Python\\n  Programming Language :: Python :: 2\\n  Programming Language :: Python :: 2.7\\n  Programming Language :: Python :: 3\\n  Programming Language :: Python :: 3.3\\n  Programming Language :: Python :: 3.4\\n  Programming Language :: Python :: 3.5\\n  License :: OSI Approved :: MIT License\\n```\\n##### SUMMARY\\n\\nWhen querying azure virtual machines that are:\\n1. Windows OS based\\n2. Have winrm enabled and listeners added.\\n\\nThe `listener.protocol` returns a complex object that causes the JSON parse to fail.\\nThe error is:\\n\\n```\\nInventory script (inventory/azure/azure_rm.py) had an execution error: Traceback (most recent call last):\\n  File \\\"/home/deploy/rms-ansible/inventory/azure/azure_rm.py\\\", line 763, in <module>\\n    main()\\n  File \\\"/home/deploy/rms-ansible/inventory/azure/azure_rm.py\\\", line 759, in main\\n    AzureInventory()\\n  File \\\"/home/deploy/rms-ansible/inventory/azure/azure_rm.py\\\", line 400, in __init__\\n    print (self._json_format_dict(pretty=self._args.pretty))\\n  File \\\"/home/deploy/rms-ansible/inventory/azure/azure_rm.py\\\", line 642, in _json_format_dict\\n    return json.dumps(self._inventory)\\n  File \\\"/usr/lib64/python2.7/json/__init__.py\\\", line 243, in dumps\\n    return _default_encoder.encode(obj)\\n  File \\\"/usr/lib64/python2.7/json/encoder.py\\\", line 207, in encode\\n    chunks = self.iterencode(o, _one_shot=True)\\n  File \\\"/usr/lib64/python2.7/json/encoder.py\\\", line 270, in iterencode\\n    return _iterencode(o, 0)\\n  File \\\"/usr/lib64/python2.7/json/encoder.py\\\", line 184, in default\\n    raise TypeError(repr(o) + \\\" is not JSON serializable\\\")\\nTypeError: <ProtocolTypes.http: 'Http'> is not JSON serializable\\n```\\n\\nUpdating the return to store `listener.protocol.value` captures the setting and allows the JSON parser work as intended.\", \n    \"title\": \"Capture only the winrm protocol value\"\n  }, \n  \"18086\": {\n    \"ansible_version\": \"ansible 2.3.0 (test_facts_cpuinfo 01d558bee7) last updated 2016/10/18 115006 (GMT -400)\\nlib/ansible/modules/core (detached HEAD 3266efb02f) last updated 2016/10/18 114920 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD 3f77bb6857) last updated 2016/10/17 174425 (GMT -400)\\nconfig file = /home/adrian/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Tests Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\ntest/units/module_utils/test_facts.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.3.0 (test_facts_cpuinfo 01d558bee7) last updated 2016/10/18 11:50:06 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD 3266efb02f) last updated 2016/10/18 11:49:20 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD 3f77bb6857) last updated 2016/10/17 17:44:25 (GMT -400)\\n  config file = /home/adrian/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n\\n\\n```\\n##### SUMMARY\\n\\nRFC branch for adding test data for module_utils/facts.py cpu info collection. \\n\\nThis adds a set of collected '/proc/cpuinfo' files for different arches to use test\\ncpu facts. \\n\\nAt the moment, there is only a few included, and only linux /proc/cpuinfo, but it could be extended\\nto include more /sys, /proc and possibly arch specific firmware tools (ie, dmiinfo).\\n(An example collection is https://github.com/alikins/socket-count-test-data)\\n\\nAdd a cpuinfo fixtures dir with some sample\\ncpuinfo files.\\n\", \n    \"component_name\": \"test/units/module_utils/test_facts.py\", \n    \"component_raw\": \"test/units/module_utils/test_facts.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18086\", \n    \"issue_type\": \"test pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"in progress\", \n      \"needs_revision\", \n      \"test\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"RFC branch for adding test data for module_utils/facts.py cpu info collection. \\n\\nThis adds a set of collected '/proc/cpuinfo' files for different arches to use test\\ncpu facts. \\n\\nAt the moment, there is only a few included, and only linux /proc/cpuinfo, but it could be extended\\nto include more /sys, /proc and possibly arch specific firmware tools (ie, dmiinfo).\\n(An example collection is https://github.com/alikins/socket-count-test-data)\\n\\nAdd a cpuinfo fixtures dir with some sample\\ncpuinfo files.\", \n    \"title\": \"Start adding unit tests for facts cpuinfo\"\n  }, \n  \"18090\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nroles_path\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\n```\\nroles_path    = ./local_roles\\n```\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nRelative directories in roles_path is broken begin from ansible 2.1.1.0, in ansible 2.1.0.0 all works correctly\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n$ cat roles/one/tasks/main.yml\\n\\n- debug: msg=\\\"one\\\"\\n\\n$ cat local_roles/two/tasks/main.yml\\n\\n- debug: msg=\\\"two\\\"\\n\\n$ cat site.yml\\n\\n- hosts: all\\n  roles:\\n    - one\\n    - two\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\n```\\n$ ansible-playbook -i \\\"localhost,\\\" -c local site.yml\\n\\nPLAY [all] *********************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [one : debug] *************************************************************\\nok: [localhost] => {\\n    \\\"msg\\\": \\\"one\\\"\\n}\\n\\nTASK [two : debug] *************************************************************\\nok: [localhost] => {\\n    \\\"msg\\\": \\\"two\\\"\\n}\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=3    changed=0    unreachable=0    failed=0\\n\\n```\\n##### ACTUAL RESULTS\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\n$ ansible-playbook -i \\\"localhost,\\\" -c local site.yml\\n\\nERROR! the role 'two' was not found in /home/akulov/ansible/bug/roles:/home/akulov/ansible/bug:/etc/ansible/local_roles\\n\\nThe error appears to have been in '/home/akulov/ansible/bug/site.yml': line 4, column 7, but may\\nbe elsewhere in the file depending on the exact syntax problem.\\n\\nThe offending line appears to be:\\n\\n    - one\\n    - two\\n      ^ here\\n```\\n\", \n    \"component_name\": \"roles_path\", \n    \"component_raw\": \"roles_path\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18090\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Relative directories in roles_path is broken begin from ansible 2.1.1.0, in ansible 2.1.0.0 all works correctly\", \n    \"title\": \"Relative directories in roles_path is broken\"\n  }, \n  \"18100\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\nmodules_utils\\n##### SUMMARY\\n\\nThis code is not used anywhere, and that's a duplicate from\\nlib/ansible/parsing/splitter.py. However, the code in ansible.parsing\\nis tested for python3, and this one is not and fail.\\n\\nSo to avoid code duplication, and license headaches, since\\nnothing in the repository use the code, better remove it.\\n\\nblockinfile import (but do not use) the module, and this is tracked in https://github.com/ansible/ansible-modules-extras/pull/3235 \\n\\nansible-lint use it too, and this is discussed on https://github.com/willthames/ansible-lint/pull/209\\n\", \n    \"component_name\": \"s_utils\", \n    \"component_raw\": \"modules_utils\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18100\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"in progress\", \n      \"module_util\", \n      \"python3\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This code is not used anywhere, and that's a duplicate from\\nlib/ansible/parsing/splitter.py. However, the code in ansible.parsing\\nis tested for python3, and this one is not and fail.\\n\\nSo to avoid code duplication, and license headaches, since\\nnothing in the repository use the code, better remove it.\\n\\nblockinfile import (but do not use) the module, and this is tracked in https://github.com/ansible/ansible-modules-extras/pull/3235 \\n\\nansible-lint use it too, and this is discussed on https://github.com/willthames/ansible-lint/pull/209\", \n    \"title\": \"Remove module_utils/splitter\"\n  }, \n  \"18102\": {\n    \"ansible_version\": \"ansible 2.1.0.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\ndictionary parser\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.0.0\\n```\\n##### CONFIGURATION\\n\\n<!---\\n\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\n```\\nhash_behaviour = merge\\n```\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nUbuntu 14.04\\n##### SUMMARY\\n\\nPlease provide a way to define dictionary value defaults. For example, by introducing special key names, i.e `default_key`.\\nThis way lengthy 'if' trees or 'default' filters could be avoided in tasks and templates, defaults definition would be as streamlined as with whole variables.\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n# defaults/main.yaml\\nhosts:\\n  default_key:\\n     production: false\\n     monitored: false\\n\\n# vars/main.yaml\\nhosts:\\n  webserver:\\n    address: 10.2.3.4\\n    production: true\\n    # 'monitored' is not defined here\\n\\n# tasks/main.yaml\\n- name: show hosts\\n  debug: msg=\\\"Host {{ item.key }}\\\\n  Address {{ item.value.address }}\\\\n  In prod {{ item.value.production }}    Monitored {{ item.value.monitored }}\\\"\\n  with_dict: \\\"{{ hosts }}\\\"\\n\\n$ ansible-playbook test.yaml \\nPLAY [dnsmaster] *************************************************************\\nTASK [test : show hosts] ********************************************************\\nok: [dnsmaster] => (item={'value': {u'production': True, u'monitored': False, u'address': u'10.2.3.4'}, 'key': u'webserver'}) => {\\n    \\\"item\\\": {\\n        \\\"key\\\": \\\"webserver\\\", \\n        \\\"value\\\": {\\n            \\\"address\\\": \\\"10.2.3.4\\\", \\n            \\\"monitored\\\": false, \\n            \\\"production\\\": true\\n        }\\n    }, \\n    \\\"msg\\\": \\\"Host webserver    Address 10.2.3.4   in prod True    Monitored False\\\"\\n}\\n```\\n\", \n    \"component_name\": \"dictionary parser\", \n    \"component_raw\": \"dictionary parser\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18102\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Please provide a way to define dictionary value defaults. For example, by introducing special key names, i.e `default_key`.\\nThis way lengthy 'if' trees or 'default' filters could be avoided in tasks and templates, defaults definition would be as streamlined as with whole variables.\", \n    \"title\": \"Dictionary values defaults\"\n  }, \n  \"18103\": {\n    \"ansible_version\": \"Ansible 2.1.2.0 upgraded via pip\\nansible 2.1.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [/usr/share/ansible]\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nAnsible Galaxy\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\nAnsible 2.1.2.0 upgraded via pip:\\n\\n```\\nansible 2.1.2.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = ['/usr/share/ansible']\\n\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\n```\\n>  cat /etc/ansible/ansible.cfg | grep -v '#' | grep -v '^$'\\n[defaults]\\nhostfile       = /etc/ansible/hosts\\nlibrary        = /usr/share/ansible\\nremote_tmp     = $HOME/.ansible/tmp\\npattern        = *\\nforks          = 5\\npoll_interval  = 15\\nsudo_user      = root\\ntransport      = smart\\nremote_port    = 22\\nsudo_exe = sudo\\ntimeout = 10\\nansible_managed = Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host}\\naction_plugins     = /usr/share/ansible_plugins/action_plugins\\ncallback_plugins   = /usr/share/ansible_plugins/callback_plugins\\nconnection_plugins = /usr/share/ansible_plugins/connection_plugins\\nlookup_plugins     = /usr/share/ansible_plugins/lookup_plugins\\nvars_plugins       = /usr/share/ansible_plugins/vars_plugins\\nfilter_plugins     = /usr/share/ansible_plugins/filter_plugins\\n[paramiko_connection]\\n[ssh_connection]\\n[accelerate]\\naccelerate_port = 5099\\naccelerate_timeout = 30\\naccelerate_connect_timeout = 5.0\\n```\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\n```\\n> lsb_release -a\\nNo LSB modules are available.\\nDistributor ID: Ubuntu\\nDescription:    Ubuntu 14.04.5 LTS\\nRelease:    14.04\\nCodename:   trusty\\n> pip --version\\npip 8.1.2 from /usr/local/lib/python2.7/dist-packages (python 2.7)\\n```\\n##### SUMMARY\\n\\n\\\"ansible-galaxy init\\\" returns an error and doesn't complete the scaffolding creation.\\n##### STEPS TO REPRODUCE\\n\\n```\\nansible-galaxy init hardening -vvvv\\n\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n```\\n\\nComplete role scaffolding:\\nREADME.md\\n.travis.yml\\ndefaults/\\n    main.yml\\nfiles/\\nhandlers/\\n    main.yml\\nmeta/\\n    main.yml\\ntemplates/\\ntests/\\n    inventory\\n    test.yml\\nvars/\\n    main.yml\\n```\\n##### ACTUAL RESULTS\\n\\n> ansible-galaxy init hardening -vvvv\\n\\n```\\nUsing /etc/ansible/ansible.cfg as config file\\nOpened /home/xir/.ansible_galaxy\\nInitial connection to galaxy_server: https://galaxy.ansible.com\\nBase API: https://galaxy.ansible.com/api/v1\\nhttps://galaxy.ansible.com/api/v1/platforms/?page_size\\nERROR! Failed to download the platforms list: name must be a byte string\\n```\\n\\n```\\n ls -R  hardening\\nhardening:\\nREADME.md  defaults  files  handlers  meta\\n\\nhardening/defaults:\\nmain.yml\\n\\nhardening/files:\\n\\nhardening/handlers:\\nmain.yml\\n\\nhardening/meta:\\n\\n```\\n\\n@gundalow updated the formatting on the above to make the bug report more readable\\n\", \n    \"component_name\": \"ansible galaxy\", \n    \"component_raw\": \"Ansible Galaxy\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18103\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"bug\", \n      \"in progress\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"\\\"ansible-galaxy init\\\" returns an error and doesn't complete the scaffolding creation.\", \n    \"title\": \"ansible-galaxy: init doesn't create whole scaffolding\"\n  }, \n  \"18108\": {\n    \"ansible_version\": \"ansible 2.1.0.0\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nwin_reboot\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.0.0\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\nretry_files_enabled = False\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nThe win_reboot action incorrectly assumes that the WinRM connection transport is being utilized to speak to the machine, however if someone is running a custom ansible transport, win_reboot assumes that the transport has properties such as `_winrm_host`, `_winrm_port`, and `_reset()`.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\nUse a custom transport to talk to a Windows machine and use the win_reboot function (sadly, our transport is not open sourced yet. Coming soon!).\\n\\nhttps://github.com/ansible/ansible/blob/6787fc70a643fb6e2bdd2c6a6202072d21db72ef/lib/ansible/plugins/action/win_reboot.py#L79-L80\\n\\nhttps://github.com/ansible/ansible/blob/6787fc70a643fb6e2bdd2c6a6202072d21db72ef/lib/ansible/plugins/action/win_reboot.py#L115\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nI would hope we can make it so that an action doesn't implicitly depend on WinRM being the transport.\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\nIt does implicitly depend on WinRM being the transport. :-)\\n\", \n    \"component_name\": \"win_reboot\", \n    \"component_raw\": \"win_reboot\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18108\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"affects_2.2\", \n      \"bug\", \n      \"feature\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_reboot.py\", \n    \"summary\": \"The win_reboot action incorrectly assumes that the WinRM connection transport is being utilized to speak to the machine, however if someone is running a custom ansible transport, win_reboot assumes that the transport has properties such as `_winrm_host`, `_winrm_port`, and `_reset()`.\", \n    \"title\": \"win_reboot is tied to winrm connection plugin\"\n  }, \n  \"18109\": {\n    \"ansible_version\": \"ansible 2.3.0 (galaxy_init_no_rest 1ff3c83863) last updated 2016/10/19 150843 (GMT -400)\\nlib/ansible/modules/core (detached HEAD 6145e24ed4) last updated 2016/10/19 123140 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD accb04b867) last updated 2016/10/19 123141 (GMT -400)\\nconfig file = /home/adrian/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\nlib/ansible/cli/galaxy.py\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.3.0 (galaxy_init_no_rest 1ff3c83863) last updated 2016/10/19 15:08:43 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD 6145e24ed4) last updated 2016/10/19 12:31:40 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD accb04b867) last updated 2016/10/19 12:31:41 (GMT -400)\\n  config file = /home/adrian/.ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nRemove platforms api request from galaxy 'init'\\n\\nInstead of populating the platform comment in the default meta/main.yml with a dict of platforms fetch from the galaxy REST api, just use the default now included in the template.\\n\\nFixes #18103\\n\", \n    \"component_name\": \"lib/ansible/cli/galaxy.py\", \n    \"component_raw\": \"lib/ansible/cli/galaxy.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18109\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"bug\", \n      \"c:cli/\", \n      \"c:galaxy/\", \n      \"in progress\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Remove platforms api request from galaxy 'init'\\n\\nInstead of populating the platform comment in the default meta/main.yml with a dict of platforms fetch from the galaxy REST api, just use the default now included in the template.\\n\\nFixes #18103\", \n    \"title\": \"Galaxy init no rest\"\n  }, \n  \"18123\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\nlib/ansible/constants.py \\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nNow relative directories in roles_path works correctly\\n\\n<!---\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\ncommit message and your description; but you should still explain what\\nthe change does.\\n-->\\n\\nFixes #18090 \\n\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\n\", \n    \"component_name\": \"lib/ansible/constants.py\", \n    \"component_raw\": \"lib/ansible/constants.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18123\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:constants\", \n      \"needs_info\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Now relative directories in roles_path works correctly\\n\\n\\n\\nFixes #18090\", \n    \"title\": \"Relative directories in roles_path Fixes #18090\"\n  }, \n  \"18124\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 4549604cc7) last updated 2016/10/20 075713 (GMT -400)\\nlib/ansible/modules/core (detached HEAD 7a7ff3ebca) last updated 2016/10/20 075715 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD accb04b867) last updated 2016/10/20 075715 (GMT -400)\\nconfig file = /root/lynx/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\ninclude_role\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.3.0 (devel 4549604cc7) last updated 2016/10/20 07:57:13 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD 7a7ff3ebca) last updated 2016/10/20 07:57:15 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD accb04b867) last updated 2016/10/20 07:57:15 (GMT -400)\\n  config file = /root/lynx/ansible.cfg\\n  configured module search path = Default w/o overrides\\n\\n```\\n##### CONFIGURATION\\n##### OS / ENVIRONMENT\\n\\ncentos 6\\n##### SUMMARY\\n\\nYou cannot use a registered variable in 'when' statement of the include_role task.\\n##### STEPS TO REPRODUCE\\n\\nCreate a role, than second role that should be included.\\nIn the first role create a task that will register a variable.\\nThen try to use that variable in a 'when' statement in the include_role task.\\n\\n``` yaml\\n\\n---\\n- name: get mysql version\\n  shell: mysql -V | awk '{split($5,vn,\\\".\\\"); print vn[1] \\\".\\\" vn[2]}'\\n  register: mysql_version\\n  ignore_errors: true\\n\\n- debug:\\n    msg: \\\"{{ mysql_version }}\\\"\\n  when: mysql_version.rc == 0\\n\\n\\n- name: update mysql version in consul if needed\\n  include_role:\\n    name: consul-kv\\n  vars:\\n    consul_environment: \\\"{{ env }}\\\"\\n    consul_key: \\\"nodes/{{ ansible_hostname }}/mysql_version\\\"\\n    consul_value: \\\"{{ mysql_version.stdout }}\\\"\\n  delegate_to: localhost\\n  when: mysql_version.rc == 0\\n```\\n##### EXPECTED RESULTS\\n\\nThe include_role task will work\\n##### ACTUAL RESULTS\\n\\nYou can see that the debug task works fine with the same 'when' check, while the include_role task fails.\\nIt also works fine without the 'when' statement. So the problem appears to be only with the 'when' statement.\\n\\n```\\n$ ansible-playbook playbooks/getmysql.yml -e 'env=lab'\\n\\nPLAY [host1] **************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [host1]\\n\\nTASK [lynx : get mysql version] ************************************************\\nchanged: [host1]\\n\\nTASK [lynx : debug] ************************************************************\\nok: [host1] => {\\n    \\\"msg\\\": {\\n        \\\"changed\\\": true, \\n        \\\"cmd\\\": \\\"mysql -V | awk '{split($5,vn,\\\\\\\".\\\\\\\"); print vn[1] \\\\\\\".\\\\\\\" vn[2]}'\\\", \\n        \\\"delta\\\": \\\"0:00:00.037524\\\", \\n        \\\"end\\\": \\\"2016-10-20 11:03:19.995857\\\", \\n        \\\"rc\\\": 0, \\n        \\\"start\\\": \\\"2016-10-20 11:03:19.958333\\\", \\n        \\\"stderr\\\": \\\"\\\", \\n        \\\"stdout\\\": \\\"5.5\\\", \\n        \\\"stdout_lines\\\": [\\n            \\\"5.5\\\"\\n        ], \\n        \\\"warnings\\\": []\\n    }\\n}\\n\\nTASK [consul-kv : debug] *******************************************************\\nfatal: [host1]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"The conditional check 'm' failed. The error was: error while evaluating conditional (m): 'm' is undefined\\\\n\\\\nThe error appears to have been in '/root/lynx/roles/lynx/tasks/main.yml': line 12, column 3, but may\\\\nbe elsewhere in the file depending on the exact syntax problem.\\\\n\\\\nThe offending line appears to be:\\\\n\\\\n\\\\n- name: update mysql version in consul if needed\\\\n  ^ here\\\\n\\\"}\\n```\\n\", \n    \"component_name\": \"include_role\", \n    \"component_raw\": \"include_role\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18124\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/include_role.py\", \n    \"summary\": \"You cannot use a registered variable in 'when' statement of the include_role task.\", \n    \"title\": \"include_role role does not work with `when:` if condition is a string\"\n  }, \n  \"18128\": {\n    \"ansible_version\": \"devel 2.2 2.1\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\nhost_vars, group_vars\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\ndevel, 2.2, 2.1\\n```\\n##### SUMMARY\\n\\nfixes #17968 \\n~~ignore~~ warn for files without a known yaml extension in group_/host_vars if directories like group_vars/group/... are used.\\n\", \n    \"component_name\": \"host_vars group_vars\", \n    \"component_raw\": \"host_vars, group_vars\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18128\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"in progress\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"fixes #17968 \\n~~ignore~~ warn for files without a known yaml extension in group_/host_vars if directories like group_vars/group/... are used.\", \n    \"title\": \"group_vars: host_vars: warn for non-yaml files in dirs\"\n  }, \n  \"18131\": {\n    \"ansible_version\": \"ansible 1.9.4\\nconfigured module search path = None\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Idea\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nplaybook\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 1.9.4\\n  configured module search path = None\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nDoing rolling updates with Ansible.\\n\\n```\\nansible-playbook -i production deploy.yml\\n\\nansible-playbook -i staging deploy.yml\\n```\\n\\n```\\n$ cat deploy.yml\\n\\n---\\n- hosts: api_frontend\\n  serial: 4\\n\\n  pre_tasks:\\n    - name: \\\"Gather EC2 facts from API nodes\\\"\\n      ec2_facts:\\n\\n    - name: \\\"Remove node from ELB\\\"\\n      local_action: ec2_elb\\n      args:\\n        instance_id: \\\"{{ ansible_ec2_instance_id }}\\\"\\n        region: \\\"{{ aws.region }}\\\"\\n        ec2_elbs: \\\"{{ aws_api_lb }}\\\"\\n        state: \\\"absent\\\"\\n\\n  roles:\\n    - { role: api-deploy }\\n\\n  post_tasks:\\n    - name: \\\"Add node to ELB\\\"\\n      local_action: ec2_elb\\n      args:\\n        instance_id: \\\"{{ ansible_ec2_instance_id }}\\\"\\n        region: \\\"{{ aws.region }}\\\"\\n        ec2_elbs: \\\"{{ aws_api_lb }}\\\"\\n        state: \\\"present\\\"\\n        wait_timeout: 30\\n```\\n\\nThe problem is, `serial: 4` works well in production, but the value is too large for staging. In staging I'd like to use `serial: 1`.\\n\\nI've tried to define a variable such as `api_deploy_serial` in places like `production/group_vars/all/vars` (and also for staging), and used that to define the value for serial in the playbook, but it does not seem to be taken into account. Seems like variables are evaluated after serial is used in the playbook.\\n\\nI do not want to maintain multiple deploy playbooks, one for each environment. That playbook needs to be created once, and pull variables from various environments for various behaviors. That's how config management is supposed to work.\\n\\nHaving multiple playbooks, one per environment, without the ability to template the behavior in the standard way, would be like a throw back to the bad old days of shell scripts.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\nIf I do:\\n\\n```\\nserial: \\\"{{ api_deploy_serial | default(1) | int }}\\\"\\n```\\n\\nthen only the default value is used, no matter what I add to `group_vars`.\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\n\\n```\\n\", \n    \"component_name\": \"playbook\", \n    \"component_raw\": \"playbook\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18131\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_1.9\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Doing rolling updates with Ansible.\\n\\n```\\nansible-playbook -i production deploy.yml\\n\\nansible-playbook -i staging deploy.yml\\n```\\n\\n```\\n$ cat deploy.yml\\n\\n---\\n- hosts: api_frontend\\n  serial: 4\\n\\n  pre_tasks:\\n    - name: \\\"Gather EC2 facts from API nodes\\\"\\n      ec2_facts:\\n\\n    - name: \\\"Remove node from ELB\\\"\\n      local_action: ec2_elb\\n      args:\\n        instance_id: \\\"{{ ansible_ec2_instance_id }}\\\"\\n        region: \\\"{{ aws.region }}\\\"\\n        ec2_elbs: \\\"{{ aws_api_lb }}\\\"\\n        state: \\\"absent\\\"\\n\\n  roles:\\n    - { role: api-deploy }\\n\\n  post_tasks:\\n    - name: \\\"Add node to ELB\\\"\\n      local_action: ec2_elb\\n      args:\\n        instance_id: \\\"{{ ansible_ec2_instance_id }}\\\"\\n        region: \\\"{{ aws.region }}\\\"\\n        ec2_elbs: \\\"{{ aws_api_lb }}\\\"\\n        state: \\\"present\\\"\\n        wait_timeout: 30\\n```\\n\\nThe problem is, `serial: 4` works well in production, but the value is too large for staging. In staging I'd like to use `serial: 1`.\\n\\nI've tried to define a variable such as `api_deploy_serial` in places like `production/group_vars/all/vars` (and also for staging), and used that to define the value for serial in the playbook, but it does not seem to be taken into account. Seems like variables are evaluated after serial is used in the playbook.\\n\\nI do not want to maintain multiple deploy playbooks, one for each environment. That playbook needs to be created once, and pull variables from various environments for various behaviors. That's how config management is supposed to work.\\n\\nHaving multiple playbooks, one per environment, without the ability to template the behavior in the standard way, would be like a throw back to the bad old days of shell scripts.\", \n    \"title\": \"The value of 'serial' in playbook cannot be set based on a variable defined per group\"\n  }, \n  \"18140\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\\nInstalled with\\npip2 install --user --upgrade git+https//github.com/ansible/ansible.git@v2.2.0.0-0.2.rc2egg=ansible\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\ninclude_role module\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n\\nInstalled with:\\n\\n```\\npip2 install --user --upgrade git+https://github.com/ansible/ansible.git@v2.2.0.0-0.2.rc2#egg=ansible\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\nNo config file.\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nSample to reproduce runs on gentoo with target also being gentoo.\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nIf I include a role with the `include_role` module from a play with handlers then its handlers from the role are not available.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\niwana@iwana-nb.concurrent.co.za:/var/tmp\\n$ git clone https://gitlab.com/iwan.aucamp/issue-ansible-201610-000-include_role.git\\nCloning into 'issue-ansible-201610-000-include_role'...\\nremote: Counting objects: 10, done.\\nremote: Compressing objects: 100% (7/7), done.\\nremote: Total 10 (delta 0), reused 0 (delta 0)\\nUnpacking objects: 100% (10/10), done.\\nChecking connectivity... done.\\niwana@iwana-nb.concurrent.co.za:/var/tmp\\n$ cd issue-ansible-201610-000-include_role\\niwana@iwana-nb.concurrent.co.za:/var/tmp/issue-ansible-201610-000-include_role\\n(failed reverse-i-search)`ansibile -p': cd issue-^Csible-201610-000-include_role\\niwana@iwana-nb.concurrent.co.za:/var/tmp/issue-ansible-201610-000-include_role\\n$ ansible-playbook main.yml \\n\\niwana@iwana-nb.concurrent.co.za:/var/tmp/issue-ansible-201610-000-include_role\\n$ find . -name .git -prune -o -type f ! -name 'README*' -print | sort | xargs grep '^'\\n./main.yml:# vim: set sts=2 ts=2 sw=2 filetype=yaml expandtab:\\n./main.yml:---\\n./main.yml:- hosts: localhost\\n./main.yml:  tasks:\\n./main.yml:  - name: \\\"this should trigger main-handler-one\\\"\\n./main.yml:    command: \\\"uname -a\\\"\\n./main.yml:    notify: \\\"main-handler-one\\\"\\n./main.yml:  - include_role: { name: \\\"test.irh\\\", static: yes }\\n./main.yml:  handlers:\\n./main.yml:  - name: \\\"main-handler-one\\\"\\n./main.yml:    debug: { msg: \\\"in main-handler-one\\\" }\\n./roles/test.irh/handlers/main.yml:# vim: set sts=2 ts=2 sw=2 filetype=yaml expandtab:\\n./roles/test.irh/handlers/main.yml:---\\n./roles/test.irh/handlers/main.yml:- name: test.irh-handler-one\\n./roles/test.irh/handlers/main.yml:  debug: { msg: \\\"in test.irh-handler-one\\\" }\\n./roles/test.irh/tasks/main.yml:# vim: set sts=2 ts=2 sw=2 filetype=yaml expandtab:\\n./roles/test.irh/tasks/main.yml:---\\n./roles/test.irh/tasks/main.yml:- name: \\\"this should trigger test.irh-handler-one\\\"\\n./roles/test.irh/tasks/main.yml:  command: \\\"uname -a\\\"\\n./roles/test.irh/tasks/main.yml:  notify: test.irh-handler-one\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nI expected `test.irh-handler-one` to run.\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\nCould not find `test.irh-handler-one`.\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\n$ ansible-playbook main.yml \\n [WARNING]: Host file not found: /etc/ansible/hosts\\n\\n [WARNING]: provided hosts list is empty, only localhost is available\\n\\n\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [this should trigger main-handler-one] ************************************\\nchanged: [localhost]\\n\\nTASK [test.irh : this should trigger test.irh-handler-one] *********************\\nERROR! The requested handler 'test.irh-handler-one' was not found in either the main handlers list nor in the listening handlers list\\n```\\n\", \n    \"component_name\": \"include_role\", \n    \"component_raw\": \"include_role module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18140\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/include_role.py\", \n    \"summary\": \"If I include a role with the `include_role` module from a play with handlers then its handlers from the role are not available.\", \n    \"title\": \"Handlers from roles included with include_role module is not found if the playbook including the role also has handlers\"\n  }, \n  \"18141\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\nFeature Pull Request\\r\\n##### COMPONENT NAME\\r\\n\\r\\nurls/get_url/uri\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nv2.3\\r\\n```\\r\\n##### SUMMARY\\r\\n\\r\\nAdds support for client cert auth in urls, via new `client_cert` and `client_key`.\\r\\n\\r\\nOnly `client_cert` needs to be provided if it contains both the key and cert.\\r\\n\\r\\nDepends on https://github.com/ansible/ansible/pull/19912 for httptester functionality.\\r\\n\", \n    \"component_name\": \"urls/get_url/uri\", \n    \"component_raw\": \"urls/get_url/uri\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18141\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"c:module_utils/urls\", \n      \"cloud\", \n      \"docker\", \n      \"feature\", \n      \"module\", \n      \"module_util\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"networking\", \n      \"test\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/basics/uri.py\", \n    \"summary\": \"Adds support for client cert auth in urls, via new `client_cert` and `client_key`.\\n\\n\\n\\nOnly `client_cert` needs to be provided if it contains both the key and cert.\\n\\n\\n\\nDepends on https://github.com/ansible/ansible/pull/19912 for httptester functionality.\", \n    \"title\": \"Urls client cert auth\"\n  }, \n  \"18142\": {\n    \"ansible_version\": \"ansible-playbook 2.1.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nfilter_plugins/core\\n##### ANSIBLE VERSION\\n\\n```\\nansible-playbook 2.1.0.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nIn ansible 2.0 setting facts with multiline expressions seems to add a trailing newline\\n##### STEPS TO REPRODUCE\\n\\n```\\n\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\n\\u2717 cat foo.yml \\n- hosts: localhost\\n  gather_facts: no\\n  tasks:\\n    - set_fact:\\n         xxx: >\\n            {{ 1 == 1\\n            }}\\n\\n    - include: \\\"bar.yml\\\"\\n      vars:\\n        yyy: \\\"{{ xxx | bool }}\\\"\\n\\n\\u2717 cat bar.yml  \\n- debug:\\n    msg: \\\"{{ yyy }}\\\"\\n\\n\\u2717 virtualenv-ansible1.9  \\ndone!\\n\\n\\u2717 ansible-playbook -i /dev/null foo.yml -vvvv\\n [WARNING]: provided hosts list is empty, only localhost is available\\n\\n\\nPLAY [localhost] ************************************************************** \\n\\nTASK: [set_fact ] ************************************************************* \\nok: [localhost] => {\\\"ansible_facts\\\": {\\\"xxx\\\": \\\"True\\\"}}\\n\\nTASK: [debug ] **************************************************************** \\nok: [localhost] => {\\n    \\\"msg\\\": \\\"True\\\"\\n}\\n\\nPLAY RECAP ******************************************************************** \\nlocalhost                  : ok=2    changed=0    unreachable=0    failed=0   \\n\\n\\u2717 virtualenv-ansible2.x\\ndone!\\n\\n\\u2717 ansible-playbook -i /dev/null foo.yml -vvvv\\nNo config file found; using defaults\\n [WARNING]: provided hosts list is empty, only localhost is available\\n\\nLoaded callback default of type stdout, v2.0\\n\\nPLAYBOOK: foo.yml **************************************************************\\n1 plays in foo.yml\\n\\nPLAY [localhost] ***************************************************************\\n\\nTASK [set_fact] ****************************************************************\\ntask path: /Users/alexnovikov/Workspace/firewalkwithme/foo.yml:4\\nok: [localhost] => {\\\"ansible_facts\\\": {\\\"xxx\\\": \\\"True\\\\n\\\"}, \\\"changed\\\": false, \\\"invocation\\\": {\\\"module_args\\\": {\\\"xxx\\\": \\\"True\\\\n\\\"}, \\\"module_name\\\": \\\"set_fact\\\"}}\\n\\nTASK [include] *****************************************************************\\ntask path: /Users/alexnovikov/Workspace/firewalkwithme/foo.yml:9\\nincluded: /Users/alexnovikov/Workspace/firewalkwithme/bar.yml for localhost\\n\\nTASK [debug] *******************************************************************\\ntask path: /Users/alexnovikov/Workspace/firewalkwithme/bar.yml:1\\nok: [localhost] => {\\n    \\\"msg\\\": false\\n}\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=3    changed=0    unreachable=0    failed=0   \\n```\\n\", \n    \"component_name\": \"filter_plugins/core\", \n    \"component_raw\": \"filter_plugins/core\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18142\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"In ansible 2.0 setting facts with multiline expressions seems to add a trailing newline\", \n    \"title\": \"Ansible 2.1.0.0 set_fact with multiline expressions adds a trailing newline\"\n  }, \n  \"18147\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\n`play_iterator.py/play.py/constants.py`\\n##### ANSIBLE VERSION\\n\\n```\\ndevel\\n```\\n##### SUMMARY\\n\\nThis change allows to configure a fact_path via playbook paramter, ansible.cfg or environment variable.\\n\\nThis is necessary to allow using local facts on systems without root access.\\n\", \n    \"component_name\": \"play_iterator.py/play.py/constants.py\", \n    \"component_raw\": \"`play_iterator.py/play.py/constants.py`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18147\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:constants\", \n      \"c:executor/play_iterator\", \n      \"c:playbook/play\", \n      \"c:playbook/play_context\", \n      \"docs\", \n      \"feature\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This change allows to configure a fact_path via playbook paramter, ansible.cfg or\", \n    \"title\": \"Configurable fact path\"\n  }, \n  \"18154\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o override\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Documentation Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nN/A\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o override\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\ninventory/playbook group_vars/<group> has high precedence than inventory file vars \\uff0cinventory file vars has high precedence than inventory/playbook group_vars/all\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\nIs document wrong? The results showed that the actual order of precedence(from low to high):\\n- playbook group_vars/all\\n- inventory group_vars/all \\n- inventory file vars\\n- inventory group_vars/test\\n- playbook group_vars/test\\n### structure\\n\\n```\\n\\u251c\\u2500\\u2500 hosts\\n\\u2502   \\u2514\\u2500\\u2500 inventory_test\\n\\u2502   \\u2514\\u2500\\u2500 group_vars\\n\\u2502      \\u251c\\u2500\\u2500 all\\n\\u2502      \\u2514\\u2500\\u2500 ansible_test\\n\\u2514\\u2500\\u2500 playbook_var.yaml\\n```\\n### invertory:\\n\\n```\\n# cat hosts/inventory_test \\n[ansible_test:children]\\ngroup1\\ngroup2\\n\\n[group1]\\n10.15.222.207\\n\\n[group2]\\n10.15.222.208\\n10.15.222.209\\n\\n[ansible_test:vars]\\nvars_test=\\\"in inventory\\\"\\n\\n[group1:vars]\\nvars_test=\\\"in group1\\\"\\n```\\n### inventory group_vars/all :\\n\\n```\\n\\ncat hosts/group_vars/all \\n\\n---\\n\\nvars_test: \\\"in group_vars/all\\\"\\n```\\n### inventory group_vars/ansible_test\\n\\n```\\n# cat hosts/group_vars/ansible_test \\n\\n---\\n\\nvars_test: \\\"in group_all/ansible_test\\\"\\n```\\n### If I use group_vars/ansible_test and group_vars/all, I can get:\\n\\n```\\n# ansible-playbook --limit=ansible_test -i hosts/inventory_test playbook_var.yml \\n\\nPLAY [ansible_test] ************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [10.15.222.208]\\nok: [10.15.222.207]\\nok: [10.15.222.209]\\n\\nTASK [debug] *******************************************************************\\nok: [10.15.222.207] => {\\n    \\\"msg\\\": \\\"in group_all/ansible_test\\\"\\n}\\nok: [10.15.222.208] => {\\n    \\\"msg\\\": \\\"in group_all/ansible_test\\\"\\n}\\nok: [10.15.222.209] => {\\n    \\\"msg\\\": \\\"in group_all/ansible_test\\\"\\n}\\n\\nPLAY RECAP *********************************************************************\\n10.15.222.207              : ok=2    changed=0    unreachable=0    failed=0   \\n10.15.222.208              : ok=2    changed=0    unreachable=0    failed=0   \\n10.15.222.209              : ok=2    changed=0    unreachable=0    failed=0   \\n\\n```\\n### And then If I do not use group_vars/ansible_test but use group_vars/all, I can get:\\n\\n```\\n# ansible-playbook --limit=ansible_test -i hosts/inventory_test playbook_var.yml \\n\\nPLAY [ansible_test] ************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [10.15.222.209]\\nok: [10.15.222.207]\\nok: [10.15.222.208]\\n\\nTASK [debug] *******************************************************************\\nok: [10.15.222.208] => {\\n    \\\"msg\\\": \\\"in inventory\\\"\\n}\\nok: [10.15.222.207] => {\\n    \\\"msg\\\": \\\"in group1\\\"\\n}\\nok: [10.15.222.209] => {\\n    \\\"msg\\\": \\\"in inventory\\\"\\n}\\n\\nPLAY RECAP *********************************************************************\\n10.15.222.207              : ok=2    changed=0    unreachable=0    failed=0   \\n10.15.222.208              : ok=2    changed=0    unreachable=0    failed=0   \\n10.15.222.209              : ok=2    changed=0    unreachable=0    failed=0 \\n```\\n\\nSo I find the vars in the inventory group_vars/all  file will be overridden by in the inventory\\n\", \n    \"component_name\": \"n/a\", \n    \"component_raw\": \"N/A\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18154\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"inventory/playbook group_vars/<group> has high precedence than inventory file vars inventory file vars has high precedence than inventory/playbook group_vars/all\", \n    \"title\": \"inventory/playbook group_vars/<group> has high precedence than inventory file vars \\uff0cinventory file vars has high precedence than inventory/playbook group_vars/all\"\n  }, \n  \"18155\": {\n    \"ansible_version\": \"ansible 2.3.0 (fixes-17922 00a67c5b55) last updated 2016/10/23 223020 (GMT +000)\\nlib/ansible/modules/core (detached HEAD ce44f0a0ae) last updated 2016/10/23 200644 (GMT +000)\\nlib/ansible/modules/extras (detached HEAD 89a8c18c6a) last updated 2016/10/23 200644 (GMT +000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\nstrategy plugin\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.3.0 (fixes-17922 00a67c5b55) last updated 2016/10/23 22:30:20 (GMT +000)\\n  lib/ansible/modules/core: (detached HEAD ce44f0a0ae) last updated 2016/10/23 20:06:44 (GMT +000)\\n  lib/ansible/modules/extras: (detached HEAD 89a8c18c6a) last updated 2016/10/23 20:06:44 (GMT +000)\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nFixes [17922](https://github.com/ansible/ansible/issues/17922) (handler names don't display variables names properly). \\n\\nHandler name shows the raw variable:\\n\\n```\\nRUNNING HANDLER [restart {{ appname }}] ****************************************\\nchanged: [localhost]\\n```\\n\\nVariable now shows correctly:\\n\\n```\\nRUNNING HANDLER [restart foo] **************************************************\\nchanged: [localhost]\\n```\\n\", \n    \"component_name\": \"strategy plugin\", \n    \"component_raw\": \"strategy plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18155\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:plugins/strategy\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Fixes [17922](https://github.com/ansible/ansible/issues/17922) (handler names don't display variables names properly). \\n\\nHandler name shows the raw variable:\\n\\n```\\nRUNNING HANDLER [restart {{ appname }}] ****************************************\\nchanged: [localhost]\\n```\\n\\nVariable now shows correctly:\\n\\n```\\nRUNNING HANDLER [restart foo] **************************************************\\nchanged: [localhost]\\n```\", \n    \"title\": \"Fixes 17922 - variables not displaying correctly in handler name\"\n  }, \n  \"18161\": {\n    \"ansible_version\": \"2.1.2.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\ncallback plugin\\n##### ANSIBLE VERSION\\n\\n```\\n2.1.2.0\\n```\\n##### CONFIGURATION\\n\\nFile /etc/ansible/hosts:\\n\\n```\\n[localhost]\\nlocalhost ansible_connection=local\\n```\\n##### OS / ENVIRONMENT\\n\\nUbuntu 16.04\\n##### SUMMARY\\n\\nI get the same warning \\\"Failure using method (v2_playbook_on_stats) in callback plugin\\\" after running any task or role on localhost, not only ping.\\n##### STEPS TO REPRODUCE\\n\\nCreate and run playbook ping.yml on localhost:\\n\\n```\\n\\n---\\n- name: Ping\\n  hosts: all\\n  tasks:\\n    - name: Test connection\\n      ping:\\n```\\n##### ACTUAL RESULTS\\n\\n```\\n$ ansible-playbook ping.yml --verbose\\nUsing /etc/ansible/ansible.cfg as config file\\n\\nPLAY [Ping] ********************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [Test connection] *********************************************************\\nok: [localhost] => {\\\"changed\\\": false, \\\"ping\\\": \\\"pong\\\"}\\n\\nPLAY RECAP *********************************************************************\\n [WARNING]: Failure using method (v2_playbook_on_stats) in callback plugin \\n(<ansible.plugins.callback.default.CallbackModule object\\nat 0x7f0c480bf510>): ''\\n```\\n\", \n    \"component_name\": \"callback plugin\", \n    \"component_raw\": \"callback plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18161\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I get the same warning \\\"Failure using method (v2_playbook_on_stats) in callback plugin\\\" after running any task or role on localhost, not only ping.\", \n    \"title\": \"Failure using method (v2_playbook_on_stats) in callback plugin\"\n  }, \n  \"18167\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\\n$ rpm -q ansible\\nansible-2.2.0.0-100.git201610182035.bce9bfc.HEAD.el7.centos.noarch\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nvmware_inventory.py\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n\\n$ rpm -q ansible\\nansible-2.2.0.0-100.git201610182035.bce9bfc.HEAD.el7.centos.noarch\\n```\\n##### CONFIGURATION\\n##### OS / ENVIRONMENT\\n\\nCentOS 7\\n##### SUMMARY\\n\\nIf pyVmomi isn't install the inventory script returns a python traceback, rather than exit with a helpful error message that pyVmomi is explicitly required.\\n##### STEPS TO REPRODUCE\\n\\n```\\n./vmware_inventory.py\\n```\\n##### EXPECTED RESULTS\\n\\nSomething nice to be said that points out I need pyVmomi :-)\\n##### ACTUAL RESULTS\\n\\n```\\nTraceback (most recent call last):\\n  File \\\"./vmware_inventory.py\\\", line 688, in <module>\\n    print(VMWareInventory().show())\\n  File \\\"./vmware_inventory.py\\\", line 128, in __init__\\n    self.do_api_calls_update_cache()\\n  File \\\"./vmware_inventory.py\\\", line 172, in do_api_calls_update_cache\\n    instances = self.get_instances()\\n  File \\\"./vmware_inventory.py\\\", line 324, in get_instances\\n    instances = self._get_instances(kwargs)\\n  File \\\"./vmware_inventory.py\\\", line 333, in _get_instances\\n    si = SmartConnect(**inkwargs)\\nNameError: global name 'SmartConnect' is not defined\\n```\\n\\n.\\n\", \n    \"component_name\": \"vmware_inventory.py\", \n    \"component_raw\": \"vmware_inventory.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18167\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"vmware\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"If pyVmomi isn't install the inventory script returns a python traceback, rather than exit with a helpful error message that pyVmomi is explicitly required.\", \n    \"title\": \"vmware_inventory.py needs to fail if pyVmomi isn't installed \"\n  }, \n  \"18174\": {\n    \"ansible_version\": \"Current 2.3.0 but goes back several versions as well.\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\nconnection.winrm\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nCurrent 2.3.0 but goes back several versions as well.\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nWinRM's fetch_file method currently calls \\\"[System.IO.File]::OpenRead\\\" which opens up the file not only in read mode but also [attempts to set the FileShare mode to \\\"Read\\\" only](https://msdn.microsoft.com/en-us/library/system.io.file.openread%28v=vs.110%29.aspx#Anchor_2) which raises the error \\\"The process cannot access the file [path] because it is being used by another process.\\\" if the file is already open for write access by another program (a log file for instance). This patch simply calls the IO.FileStream constructor explicitly so we can set the ShareMode to ReadWrite and thus allows us to transfer files even if they're open by another program. Further information about this kind of CLR error can be found at http://coding.infoconex.com/post/2009/04/21/How-do-I-open-a-file-that-is-in-use-in-C and http://stackoverflow.com/questions/12942717/read-log-file-being-used-by-another-process \\n\\n<!---\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\ncommit message and your description; but you should still explain what\\nthe change does.\\n-->\\n\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\n\\n```\\n\\n```\\n\", \n    \"component_name\": \"connection.winrm\", \n    \"component_raw\": \"connection.winrm\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18174\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:plugins/connection\", \n      \"c:plugins/connection/winrm\", \n      \"windows\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"WinRM's fetch_file method currently calls \\\"[System.IO.File]::OpenRead\\\" which opens up the file not only in read mode but also [attempts to set the FileShare mode to \\\"Read\\\" only](https://msdn.microsoft.com/en-us/library/system.io.file.openread%28v=vs.110%29.aspx#Anchor_2) which raises the error \\\"The process cannot access the file [path] because it is being used by another process.\\\" if the file is already open for write access by another program (a log file for instance). This patch simply calls the IO.FileStream constructor explicitly so we can set the ShareMode to ReadWrite and thus allows us to transfer files even if they're open by another program. Further information about this kind of CLR error can be found at http://coding.infoconex.com/post/2009/04/21/How-do-I-open-a-file-that-is-in-use-in-C and http://stackoverflow.com/questions/12942717/read-log-file-being-used-by-another-process \\n\\n\\n\\n\\n\\n```\\n\\n```\", \n    \"title\": \"Update winrm to allow fetch_file to work on files in use by processes\"\n  }, \n  \"18178\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/duck/project/ansible.cfg\\nconfigured module search path = Default w/o overrides\\nThis is RC2.\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nhandlers\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0.0\\n  config file = /home/duck/project/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n\\nThis is RC2.\\n##### CONFIGURATION\\n\\nonly the roles path is modified.\\n##### OS / ENVIRONMENT\\n\\nRunning on Debian unstable and managing CentOS 7.\\n##### SUMMARY\\n\\nTo chain multiple actions in a handler I include a file, and this leads to the handler being fired multiple times.\\n##### STEPS TO REPRODUCE\\n\\nI used an include as suggested workaround for #14270.\\n\\nMy handler defined in handlers/main.yml:\\n\\n```\\n- name: restart networkd\\n  include: apply_config.yml\\n```\\n\\nThe apply_config.yml file contains:\\n\\n```\\n- name: reboot\\n  # workaround for https://github.com/ansible/ansible/issues/14413\\n  shell: \\\"nohup bash -c 'sleep 2 && shutdown -r now' &\\\"\\n  async: 0\\n  poll: 0\\n  ignore_errors: true\\n\\n- name: waiting for server to be up\\n  local_action:\\n    module: wait_for\\n    host: \\\"{{ ansible_host | default(inventory_hostname) }}\\\"\\n    port: 22\\n    state: started\\n    delay: 5\\n    timeout: 600\\n  become: no\\n\\n# ensure the facts are updated\\n- setup:\\n```\\n##### EXPECTED RESULTS\\n\\nSeveral changes (during roles tasks) call this trigger, but it should only be executed once.\\n##### ACTUAL RESULTS\\n\\nAs you can see it is executed 5 times and breaks playbook execution:\\n\\n```\\nTASK [networkd : enable networkd] **********************************************\\nchanged: [myhost.mydom.tld]\\n\\nRUNNING HANDLER [networkd : reboot] ********************************************\\nfatal: [myhost.mydom.tld]: UNREACHABLE! => {\\\"changed\\\": false, \\\"msg\\\": \\\"SSH Error: data could not be sent to the remote host. Make sure this host can be reached over ssh\\\", \\\"unreachable\\\": true}\\nfatal: [myhost.mydom.tld]: UNREACHABLE! => {\\\"changed\\\": false, \\\"msg\\\": \\\"SSH Error: data could not be sent to the remote host. Make sure this host can be reached over ssh\\\", \\\"unreachable\\\": true}\\nfatal: [myhost.mydom.tld]: UNREACHABLE! => {\\\"changed\\\": false, \\\"msg\\\": \\\"SSH Error: data could not be sent to the remote host. Make sure this host can be reached over ssh\\\", \\\"unreachable\\\": true}\\nchanged: [myhost.mydom.tld]\\nfatal: [myhost.mydom.tld]: UNREACHABLE! => {\\\"changed\\\": false, \\\"msg\\\": \\\"SSH Error: data could not be sent to the remote host. Make sure this host can be reached over ssh\\\", \\\"unreachable\\\": true}\\n\\nRUNNING HANDLER [networkd : waiting for server to be up] ***********************\\nok: [myhost.mydom.tld -> 192.168.57.10]\\nok: [myhost.mydom.tld -> 192.168.57.10]\\nok: [myhost.mydom.tld -> 192.168.57.10]\\nok: [myhost.mydom.tld -> 192.168.57.10]\\nok: [myhost.mydom.tld -> 192.168.57.10]\\n\\nRUNNING HANDLER [networkd : setup] *********************************************\\nok: [myhost.mydom.tld]\\nok: [myhost.mydom.tld]\\nok: [myhost.mydom.tld]\\nok: [myhost.mydom.tld]\\nok: [myhost.mydom.tld]\\n        to retry, use: --limit @/home/duck/OSAS/community-cage-infra-ansible/playbooks/deploy.retry\\n```\\n\", \n    \"component_name\": \"handlers\", \n    \"component_raw\": \"handlers\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18178\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"needs_info\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"To chain multiple actions in a handler I include a file, and this leads to the handler being fired multiple times.\", \n    \"title\": \"handler+include triggered multiple times\"\n  }, \n  \"18179\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 5502da3cf8) last updated 2016/10/25 112253 (GMT +100)\\nlib/ansible/modules/core (devel 4c020102a9) last updated 2016/10/25 112257 (GMT +100)\\nlib/ansible/modules/extras (devel 8f77a0e72a) last updated 2016/10/25 112259 (GMT +100)\\nconfig file =\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nvalidate-modules\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.3.0 (devel 5502da3cf8) last updated 2016/10/25 11:22:53 (GMT +100)\\n  lib/ansible/modules/core: (devel 4c020102a9) last updated 2016/10/25 11:22:57 (GMT +100)\\n  lib/ansible/modules/extras: (devel 8f77a0e72a) last updated 2016/10/25 11:22:59 (GMT +100)\\n  config file = \\n```\\n##### CONFIGURATION\\n##### OS / ENVIRONMENT\\n##### SUMMARY\\n\\nTo allow the use of a Python debugger with Ansiballz the call to main() must be written as\\n\\n```\\nif __name__ == '__main__':\\n    main()\\n```\\n\\n`test/sanity/validate-modules/validate-module: _find_main_call` is most likely where this check should go\\n\\nOnce fixed all modules will need updating\\nAlso this need adding to the list of checks in `test/sanity/validate-modules/README.rst`\\n##### STEPS TO REPRODUCE\\n##### EXPECTED RESULTS\\n##### ACTUAL RESULTS\\n\", \n    \"component_name\": \"validate-modules\", \n    \"component_raw\": \"validate-modules\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18179\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"To allow the use of a Python debugger with Ansiballz the call to main() must be written as\\n\\n```\\nif __name__ == '__main__':\\n    main()\\n```\\n\\n`test/sanity/validate-modules/validate-module: _find_main_call` is most likely where this check should go\\n\\nOnce fixed all modules will need updating\\nAlso this need adding to the list of checks in `test/sanity/validate-modules/README.rst`\", \n    \"title\": \"validate-modules: require if __name__ == '__main__'\"\n  }, \n  \"18180\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 5502da3cf8) last updated 2016/10/25 112253 (GMT +100)\\nlib/ansible/modules/core (devel 4c020102a9) last updated 2016/10/25 112257 (GMT +100)\\nlib/ansible/modules/extras (devel 8f77a0e72a) last updated 2016/10/25 112259 (GMT +100)\\nconfig file =\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nvalidate-modules\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.3.0 (devel 5502da3cf8) last updated 2016/10/25 11:22:53 (GMT +100)\\n  lib/ansible/modules/core: (devel 4c020102a9) last updated 2016/10/25 11:22:57 (GMT +100)\\n  lib/ansible/modules/extras: (devel 8f77a0e72a) last updated 2016/10/25 11:22:59 (GMT +100)\\n  config file = \\n```\\n##### CONFIGURATION\\n##### OS / ENVIRONMENT\\n##### SUMMARY\\n\\nNew Network modules, such as https://github.com/ansible/ansible-modules-core/pull/4065 don't require `ansible.module_utils.basic`\\n\\nInstead they get access to this module via a OS specific Network module, such as:\\n\\n``````\\nfrom ansible.module_utils.eos import *\\nor\\nfrom ansible.module_utils.ios import *```\\n``````\\n\\nTo unblock the development work by @privateip, we have made this a warning see https://github.com/sivel/ansible-testing/pull/31\\n\\nA full fix is still required which is to only skip the test for `ansible.module_utils.basic` for networking modules. This could be done by looking to see if the file is under `./network/`\\n\\nAlso this need adding to the list of checks in `test/sanity/validate-modules/README.rst`\\n##### STEPS TO REPRODUCE\\n##### EXPECTED RESULTS\\n##### ACTUAL RESULTS\\n\", \n    \"component_name\": \"validate-modules\", \n    \"component_raw\": \"validate-modules\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18180\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"New Network modules, such as https://github.com/ansible/ansible-modules-core/pull/4065 don't require `ansible.module_utils.basic`\\n\\nInstead they get access to this module via a OS specific Network module, such as:\\n\\n``````\\nfrom ansible.module_utils.eos import *\\nor\\nfrom ansible.module_utils.ios import *```\\n``````\\n\\nTo unblock the development work by @privateip, we have made this a warning see https://github.com/sivel/ansible-testing/pull/31\\n\\nA full fix is still required which is to only skip the test for `ansible.module_utils.basic` for networking modules. This could be done by looking to see if the file is under `./network/`\\n\\nAlso this need adding to the list of checks in `test/sanity/validate-modules/README.rst`\", \n    \"title\": \"validate-modules: Network modules don't require ansible.module_utils.basic\"\n  }, \n  \"18181\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 5502da3cf8) last updated 2016/10/25 112253 (GMT +100)\\nlib/ansible/modules/core (devel 4c020102a9) last updated 2016/10/25 112257 (GMT +100)\\nlib/ansible/modules/extras (devel 8f77a0e72a) last updated 2016/10/25 112259 (GMT +100)\\nconfig file =\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nvalidate-modules\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.3.0 (devel 5502da3cf8) last updated 2016/10/25 11:22:53 (GMT +100)\\n  lib/ansible/modules/core: (devel 4c020102a9) last updated 2016/10/25 11:22:57 (GMT +100)\\n  lib/ansible/modules/extras: (devel 8f77a0e72a) last updated 2016/10/25 11:22:59 (GMT +100)\\n  config file = \\n```\\n##### CONFIGURATION\\n##### OS / ENVIRONMENT\\n##### SUMMARY\\n\\nLook for subprocess or os.call, etc... and error that `module.run_command` should be used\\n\\nOnce fixed all modules will need updating\\nAlso this need adding to the list of checks in `test/sanity/validate-modules/README.rst`\\n##### STEPS TO REPRODUCE\\n##### EXPECTED RESULTS\\n##### ACTUAL RESULTS\\n\", \n    \"component_name\": \"validate-modules\", \n    \"component_raw\": \"validate-modules\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18181\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Look for subprocess or os.call, etc... and error that `module.run_command` should be used\\n\\nOnce fixed all modules will need updating\\nAlso this need adding to the list of checks in `test/sanity/validate-modules/README.rst`\", \n    \"title\": \"validate-modules: Shell out using run_command\"\n  }, \n  \"18182\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 5502da3cf8) last updated 2016/10/25 112253 (GMT +100)\\nlib/ansible/modules/core (devel 4c020102a9) last updated 2016/10/25 112257 (GMT +100)\\nlib/ansible/modules/extras (devel 8f77a0e72a) last updated 2016/10/25 112259 (GMT +100)\\nconfig file =\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nvalidate-modules\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.3.0 (devel 5502da3cf8) last updated 2016/10/25 11:22:53 (GMT +100)\\n  lib/ansible/modules/core: (devel 4c020102a9) last updated 2016/10/25 11:22:57 (GMT +100)\\n  lib/ansible/modules/extras: (devel 8f77a0e72a) last updated 2016/10/25 11:22:59 (GMT +100)\\n  config file = \\n```\\n##### CONFIGURATION\\n##### OS / ENVIRONMENT\\n##### SUMMARY\\n\\nNew modules should import what they need, no longer importing `*` from module_utils.\\n\\nWe may want to make a judgement call about fixing existing modules\\n\\nAlso this need adding to the list of checks in `test/sanity/validate-modules/README.rst`\\n##### STEPS TO REPRODUCE\\n##### EXPECTED RESULTS\\n##### ACTUAL RESULTS\\n\", \n    \"component_name\": \"validate-modules\", \n    \"component_raw\": \"validate-modules\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18182\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"New modules should import what they need, no longer importing `*` from module_utils.\\n\\nWe may want to make a judgement call about fixing existing modules\\n\\nAlso this need adding to the list of checks in `test/sanity/validate-modules/README.rst`\", \n    \"title\": \"validate-modules: Error on * imports for new modules\"\n  }, \n  \"18183\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 5502da3cf8) last updated 2016/10/25 112253 (GMT +100)\\nlib/ansible/modules/core (devel 4c020102a9) last updated 2016/10/25 112257 (GMT +100)\\nlib/ansible/modules/extras (devel 8f77a0e72a) last updated 2016/10/25 112259 (GMT +100)\\nconfig file =\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nvalidate-modules\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.3.0 (devel 5502da3cf8) last updated 2016/10/25 11:22:53 (GMT +100)\\n  lib/ansible/modules/core: (devel 4c020102a9) last updated 2016/10/25 11:22:57 (GMT +100)\\n  lib/ansible/modules/extras: (devel 8f77a0e72a) last updated 2016/10/25 11:22:59 (GMT +100)\\n  config file = \\n```\\n##### CONFIGURATION\\n##### OS / ENVIRONMENT\\n##### SUMMARY\\n\\nRight now we cannot effectively analyze the `argument_spec` as we need to run the code to do so.\\n\\nSee if we can somehow mock `AnsibleModule` to allow us to run the module and inspect `argument_spec`\\n\\nThis can also help us better detect when new arguments are added. As of now, if we are updating documentation to add missing arguments, it will complain that we need to set `version_added` to the next release, which isn't correct.\\n\\nAlso this need adding to the list of checks in `test/sanity/validate-modules/README.rst`\\n##### STEPS TO REPRODUCE\\n##### EXPECTED RESULTS\\n##### ACTUAL RESULTS\\n\", \n    \"component_name\": \"validate-modules\", \n    \"component_raw\": \"validate-modules\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18183\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Right now we cannot effectively analyze the `argument_spec` as we need to run the code to do so.\\n\\nSee if we can somehow mock `AnsibleModule` to allow us to run the module and inspect `argument_spec`\\n\\nThis can also help us better detect when new arguments are added. As of now, if we are updating documentation to add missing arguments, it will complain that we need to set `version_added` to the next release, which isn't correct.\\n\\nAlso this need adding to the list of checks in `test/sanity/validate-modules/README.rst`\", \n    \"title\": \"validate-modules: Analysis of argument_spec\"\n  }, \n  \"18185\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 5502da3cf8) last updated 2016/10/25 112253 (GMT +100)\\nlib/ansible/modules/core (devel 4c020102a9) last updated 2016/10/25 112257 (GMT +100)\\nlib/ansible/modules/extras (devel 8f77a0e72a) last updated 2016/10/25 112259 (GMT +100)\\nconfig file =\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nvalidate-modules\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.3.0 (devel 5502da3cf8) last updated 2016/10/25 11:22:53 (GMT +100)\\n  lib/ansible/modules/core: (devel 4c020102a9) last updated 2016/10/25 11:22:57 (GMT +100)\\n  lib/ansible/modules/extras: (devel 8f77a0e72a) last updated 2016/10/25 11:22:59 (GMT +100)\\n  config file = \\n```\\n##### CONFIGURATION\\n##### OS / ENVIRONMENT\\n##### SUMMARY\\n\\nCurrently we are not validating the `RETURN` block.\\n\\nPossible items to validate include:\\n- Valid YAML\\n- `description` - is set\\n- `returned` - is set\\n- `type` - is set and is a valid type\\n\\nOnce fixed all modules will need updating\\nAlso this need adding to the list of checks in `test/sanity/validate-modules/README.rst`\\n##### STEPS TO REPRODUCE\\n##### EXPECTED RESULTS\\n##### ACTUAL RESULTS\\n\", \n    \"component_name\": \"validate-modules\", \n    \"component_raw\": \"validate-modules\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18185\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Currently we are not validating the `RETURN` block.\\n\\nPossible items to validate include:\\n- Valid YAML\\n- `description` - is set\\n- `returned` - is set\\n- `type` - is set and is a valid type\\n\\nOnce fixed all modules will need updating\\nAlso this need adding to the list of checks in `test/sanity/validate-modules/README.rst`\", \n    \"title\": \"validate-modules: Validate RETURN YAML formatting\"\n  }, \n  \"18186\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 5502da3cf8) last updated 2016/10/25 112253 (GMT +100)\\nlib/ansible/modules/core (devel 4c020102a9) last updated 2016/10/25 112257 (GMT +100)\\nlib/ansible/modules/extras (devel 8f77a0e72a) last updated 2016/10/25 112259 (GMT +100)\\nconfig file =\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nvalidate-modules\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 (devel 5502da3cf8) last updated 2016/10/25 11:22:53 (GMT +100)\\r\\n  lib/ansible/modules/core: (devel 4c020102a9) last updated 2016/10/25 11:22:57 (GMT +100)\\r\\n  lib/ansible/modules/extras: (devel 8f77a0e72a) last updated 2016/10/25 11:22:59 (GMT +100)\\r\\n  config file = \\r\\n```\\r\\n##### CONFIGURATION\\r\\n##### OS / ENVIRONMENT\\r\\n##### SUMMARY\\r\\n\\r\\nModule name should not conflict with other task arguments (become for example)\\r\\n\\r\\nWe need to generate such a list, perhaps we can record this in Ansible code where?\\r\\n\\r\\nOnce fixed all modules will need updating\\r\\nAlso this need adding to the list of checks in `test/sanity/validate-modules/README.rst`\\r\\n##### STEPS TO REPRODUCE\\r\\n##### EXPECTED RESULTS\\r\\n##### ACTUAL RESULTS\\r\\n\", \n    \"component_name\": \"validate-modules\", \n    \"component_raw\": \"validate-modules\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18186\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Module name should not conflict with other task arguments (become for example)\\n\\n\\n\\nWe need to generate such a list, perhaps we can record this in Ansible code where?\\n\\n\\n\\nOnce fixed all modules will need updating\\n\\nAlso this need adding to the list of checks in `test/sanity/validate-modules/README.rst`\", \n    \"title\": \"validate-modules: Module naming conflcts\"\n  }, \n  \"18187\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 5502da3cf8) last updated 2016/10/25 112253 (GMT +100)\\nlib/ansible/modules/core (devel 4c020102a9) last updated 2016/10/25 112257 (GMT +100)\\nlib/ansible/modules/extras (devel 8f77a0e72a) last updated 2016/10/25 112259 (GMT +100)\\nconfig file =\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nvalidate-modules\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.3.0 (devel 5502da3cf8) last updated 2016/10/25 11:22:53 (GMT +100)\\n  lib/ansible/modules/core: (devel 4c020102a9) last updated 2016/10/25 11:22:57 (GMT +100)\\n  lib/ansible/modules/extras: (devel 8f77a0e72a) last updated 2016/10/25 11:22:59 (GMT +100)\\n  config file = \\n```\\n##### CONFIGURATION\\n##### OS / ENVIRONMENT\\n##### SUMMARY\\n\\nIt could be useful to assign pep8 like codes to errors/warnings/etc.\\n\\nThis could also give us the ability to filter out certain codes as well.\\n\\nThinking something like:\\n\\n**E1 - Locations**\\n1. Interpreter line is not #!/usr/bin/python\\n2. main() not at the bottom of the file\\n3. Missing GPLv3 license header in module\\n4. Missing **init**.py\\n\\n**E2 - Imports**\\n1. Module does not import ansible.module_utils.basic\\n2. Modules should not import requests, instead use ansible.module_utils.urls\\n3. Use of sys.exit() instead of exit_json or fail_json\\n4. Powershell module missing WANT_JSON\\n5. Powershell module missing POWERSHELL_COMMON\\n\\n**E3 - Documentation**\\n1. DOCUMENTATION Missing\\n2. DOCUMENTATION is invalid YAML\\n3. DOCUMENTATION incorrect schema\\n4. EXAMPLES Missing\\n5. RETURN Missing for new modules\\n6. RETURN is invalid YAML\\n7. New modules have the correct version_added\\n8. New arguments have the correct version_added\\n\\n**E4 - Syntax**\\n1. Invalid Python Syntax\\n2. Tabbed indentation\\n\\nAlso this need adding to the list of checks in `test/sanity/validate-modules/README.rst`\\n##### STEPS TO REPRODUCE\\n##### EXPECTED RESULTS\\n##### ACTUAL RESULTS\\n\", \n    \"component_name\": \"validate-modules\", \n    \"component_raw\": \"validate-modules\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18187\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"It could be useful to assign pep8 like codes to errors/warnings/etc.\\n\\nThis could also give us the ability to filter out certain codes as well.\\n\\nThinking something like:\\n\\n**E1 - Locations**\\n1. Interpreter line is not #!/usr/bin/python\\n2. main() not at the bottom of the file\\n3. Missing GPLv3 license header in module\\n4. Missing **init**.py\\n\\n**E2 - Imports**\\n1. Module does not import ansible.module_utils.basic\\n2. Modules should not import requests, instead use ansible.module_utils.urls\\n3. Use of sys.exit() instead of exit_json or fail_json\\n4. Powershell module missing WANT_JSON\\n5. Powershell module missing POWERSHELL_COMMON\\n\\n**E3 - Documentation**\\n1. DOCUMENTATION Missing\\n2. DOCUMENTATION is invalid YAML\\n3. DOCUMENTATION incorrect schema\\n4. EXAMPLES Missing\\n5. RETURN Missing for new modules\\n6. RETURN is invalid YAML\\n7. New modules have the correct version_added\\n8. New arguments have the correct version_added\\n\\n**E4 - Syntax**\\n1. Invalid Python Syntax\\n2. Tabbed indentation\\n\\nAlso this need adding to the list of checks in `test/sanity/validate-modules/README.rst`\", \n    \"title\": \"validate-modules: Add codes like pep8\"\n  }, \n  \"18188\": {\n    \"ansible_version\": \"ansible 2.0.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\nSSH connectivity\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.0.2.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\n```\\n[defaults]\\nhost_key_checking = False\\ntimeout = 10\\nretry_files_save_path = /home/ansible/retry/\\n# Do not put more jobs here, or ssh will fail\\nforks = 10\\nremote_user = root\\nlog_path=/var/log/ansible.log\\n\\n[ssh_connection]\\npipelining=True\\n```\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nRedHat 7.2\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nWe have about 2000 hosts managed by ansible and everytime I run any playbook or command on all of them, I always have about 3% of them as \\\"UNREACHABLE\\\", when I restart the task, some other random servers are UNREACHABLE, they however are not unreachable and there is no network outage or anything like that.\\n\\nIf I create a loop ssh connection (for loop in bash) that connects to every one of these 2000 servers it works without troubles, so there is clearly no issues related to SSH or network connectivity itself.\\n\\nI almost believe that this is some problem with timeouts and the way how ansible determines that host is unreachable.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\nansible all -a 'echo test'\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nI expect the command to execute on 100% of hosts\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\nIt gets executed only on some hosts and random hosts are considered unreachable\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nOutput is too long pretty much something like\\nserver_name | SUCCESS | rc=0 | (stdout) ok\\nabout 1900 lines of SUCCESS and 100 UNREACHABLE even though the servers are perfectly reachable\\n```\\n\\nNote that there were similar bugreports found on different forums on internet in regards of amazon EC2 http://stackoverflow.com/questions/39973103/ansible-ec2-random-ssh-connection-failures-after-provision\\n\", \n    \"component_name\": \"ssh connectivity\", \n    \"component_raw\": \"SSH connectivity\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18188\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"We have about 2000 hosts managed by ansible and everytime I run any playbook or command on all of them, I always have about 3% of them as \\\"UNREACHABLE\\\", when I restart the task, some other random servers are UNREACHABLE, they however are not unreachable and there is no network outage or anything like that.\\n\\nIf I create a loop ssh connection (for loop in bash) that connects to every one of these 2000 servers it works without troubles, so there is clearly no issues related to SSH or network connectivity itself.\\n\\nI almost believe that this is some problem with timeouts and the way how ansible determines that host is unreachable.\", \n    \"title\": \"Ansible hosts are randomly unreachable\"\n  }, \n  \"18189\": {\n    \"ansible_version\": \"ansible-playbook 2.3.0 (devel 5502da3cf8) last updated 2016/10/25 112253 (GMT +100)\\nlib/ansible/modules/core (devel 4c020102a9) last updated 2016/10/25 112257 (GMT +100)\\nlib/ansible/modules/extras (devel 8f77a0e72a) last updated 2016/10/25 112259 (GMT +100)\", \n    \"body\": \"##### ISSUE TYPE\\n- Documentation Report\\n##### COMPONENT NAME\\n\\nansible-vault\\n##### ANSIBLE VERSION\\n\\n```\\nansible-playbook 2.3.0 (devel 5502da3cf8) last updated 2016/10/25 11:22:53 (GMT +100)\\n  lib/ansible/modules/core: (devel 4c020102a9) last updated 2016/10/25 11:22:57 (GMT +100)\\n  lib/ansible/modules/extras: (devel 8f77a0e72a) last updated 2016/10/25 11:22:59 (GMT +100)\\n\\n```\\n##### CONFIGURATION\\n##### OS / ENVIRONMENT\\n##### SUMMARY\\n\\nAs mentioned in https://github.com/ansible/ansible/issues/18184 I believe it would be useful for\\nhttp://docs.ansible.com/ansible/playbooks_vault.html\\nto link to http://docs.ansible.com/ansible/faq.html#how-do-i-keep-secret-data-in-my-playbook\\n\\nI would have fixed this myself, however I don't know how in RST to link to a anchor within another page.\\n##### STEPS TO REPRODUCE\\n##### EXPECTED RESULTS\\n##### ACTUAL RESULTS\\n\", \n    \"component_name\": \"ansible-vault\", \n    \"component_raw\": \"ansible-vault\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18189\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"As mentioned in https://github.com/ansible/ansible/issues/18184 I believe it would be useful for\\nhttp://docs.ansible.com/ansible/playbooks_vault.html\\nto link to http://docs.ansible.com/ansible/faq.html#how-do-i-keep-secret-data-in-my-playbook\\n\\nI would have fixed this myself, however I don't know how in RST to link to a anchor within another page.\", \n    \"title\": \"playbooks_vault.html to reference no_log\"\n  }, \n  \"18193\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\n\\nDocumentation Report\\n##### COMPONENT NAME\\n\\nThe `register:` mechanic in Playbook tasks.\\n##### SUMMARY\\n\\nAs a new user, I was confused as to how I could get information from one task and use it in a later task. The answer is to use registered variables, but to someone who does not know Ansible, nothing about the term \\\"Registered Variables\\\" indicates that they capture the result of executing a module.\\n\\nThe [playbooks_variables.html](http://docs.ansible.com/ansible/playbooks_variables.html) page has a long and slightly confusing TOC, with a few entries at the top named \\\"Variables defined _____\\\", followed by an entry \\\"Using Variables: About Jinja2\\\". This TOC ordering suggests that variables can only come from those locations.\\n\\nI suggest that the \\\"Registered Variables\\\" TOC entry gets renamed to \\\"Variables defined by executing modules: Registered Variables\\\" and is moved to be directly above the \\\"Using Variables: About Jinja2\\\" entry. I dunno if that's the best name for it but I figure it should be something that makes it clear they let you capture and use the results of a module execution.\\n\", \n    \"component_name\": \"the register mechanic in playbook tasks.\", \n    \"component_raw\": \"The `register:` mechanic in Playbook tasks.\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18193\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"As a new user, I was confused as to how I could get information from one task and use it in a later task. The answer is to use registered variables, but to someone who does not know Ansible, nothing about the term \\\"Registered Variables\\\" indicates that they capture the result of executing a module.\\n\\nThe [playbooks_variables.html](http://docs.ansible.com/ansible/playbooks_variables.html) page has a long and slightly confusing TOC, with a few entries at the top named \\\"Variables defined _____\\\", followed by an entry \\\"Using Variables: About Jinja2\\\". This TOC ordering suggests that variables can only come from those locations.\\n\\nI suggest that the \\\"Registered Variables\\\" TOC entry gets renamed to \\\"Variables defined by executing modules: Registered Variables\\\" and is moved to be directly above the \\\"Using Variables: About Jinja2\\\" entry. I dunno if that's the best name for it but I figure it should be something that makes it clear they let you capture and use the results of a module execution.\", \n    \"title\": \"Rename and relocate \\\"Registered Variables\\\" TOC entry to highlight that they capture module results\"\n  }, \n  \"18197\": {\n    \"ansible_version\": \"ansible 2.2.0.0 (detached HEAD eafb4043c9) last updated 2016/10/26 095734 (GMT +200)\\nlib/ansible/modules/core (detached HEAD c51ced56cc) last updated 2016/10/26 095637 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD 8ffe314ea5) last updated 2016/10/26 095637 (GMT +200)\\nansible v2.2.0.0-0.3.rc3\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nsetup module (facts.py)\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0.0 (detached HEAD eafb4043c9) last updated 2016/10/26 09:57:34 (GMT +200)\\n  lib/ansible/modules/core: (detached HEAD c51ced56cc) last updated 2016/10/26 09:56:37 (GMT +200)\\n  lib/ansible/modules/extras: (detached HEAD 8ffe314ea5) last updated 2016/10/26 09:56:37 (GMT +200)\\n\\nansible v2.2.0.0-0.3.rc3\\n```\\n##### OS / ENVIRONMENT\\n\\nrunning on MacOS 10.12.1 \\nmanaging \\\"Solaris 10 10/09 s10s_u8wos_08a SPARC\\\"\\n##### SUMMARY\\n\\nWe are using \\n`group_by: key={{ ansible_os_family }}-{{ ansible_distribution_major_version }}`\\nin our playbooks to include group_vars based on distro and major_version. Playbooks are used for Solaris, RHEL, SLES, and Debian at the same time.\\nWith ansible-2.1.2 on Solaris we get `\\\"ansible_distribution_major_version\\\": \\\"NA\\\"` and therefore our grouping is working.\\nWith ansible-2.2.0.0-0.3.rc3 \\\"ansible_distribution_major_version\\\" is missing an Solaris hosts and breaks grouping.\\n##### STEPS TO REPRODUCE\\n\\nRun ansible-playbook with following playbook:\\n\\n```\\n- hosts:\\n  - solaris-host\\n  - linux-host\\n  pre_tasks:\\n        - name: group by os-version\\n          group_by: key={{ ansible_os_family }}-{{ ansible_distribution_major_version }}\\n          changed_when: False\\n          tags: always\\n\\n```\\n##### EXPECTED RESULTS\\n\\ngroup_by pre_task still works for all OS\\n##### ACTUAL RESULTS\\n\\n```\\nfatal: [solaris-host]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'ansible_distribution_major_version' is undefined\\n```\\n\\nFor backwards compatibility  `\\\"ansible_distribution_major_version\\\": \\\"NA\\\"` should be reported for Solaris. \\nOr it should get the real number (9,10,11).\\n\", \n    \"component_name\": \"setup   (facts.py)\", \n    \"component_raw\": \"setup module (facts.py)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18197\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/facts\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/setup.py\", \n    \"summary\": \"We are using \\n`group_by: key={{ ansible_os_family }}-{{ ansible_distribution_major_version }}`\\nin our playbooks to include group_vars based on distro and major_version. Playbooks are used for Solaris, RHEL, SLES, and Debian at the same time.\\nWith ansible-2.1.2 on Solaris we get `\\\"ansible_distribution_major_version\\\": \\\"NA\\\"` and therefore our grouping is working.\\nWith ansible-2.2.0.0-0.3.rc3 \\\"ansible_distribution_major_version\\\" is missing an Solaris hosts and breaks grouping.\", \n    \"title\": \"ansible_distribution_major_version missing on Solaris\"\n  }, \n  \"18199\": {\n    \"ansible_version\": \"2.3.0 0.0.devel\", \n    \"body\": \"##### ISSUE TYPE\\n\\nFeature Pull Request\\n##### COMPONENT NAME\\n\\nsetup\\nplay_iterator\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\n2.3.0 0.0.devel\\n```\\n##### SUMMARY\\n\\nWhen internal play_iterator launch setup task, it doesn't set its name. The following changes add a generic name, basically the title of the task.\\n\\nSee #18198 \\n\", \n    \"component_name\": \"setup\", \n    \"component_raw\": \"setup\\nplay_iterator\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18199\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:executor/play_iterator\", \n      \"feature\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When internal play_iterator launch setup task, it doesn't set its name. The following changes add a generic name, basically the title of the task.\\n\\nSee #18198\", \n    \"title\": \"Add name to automatic setup task. (Closes #18198)\"\n  }, \n  \"18201\": {\n    \"ansible_version\": \"ansible 2.1.2.0\", \n    \"body\": \"# ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nansible-pull\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.2.0\\n```\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nNot sure if this is a problem or just me doing it wrong, but I can not add a custom path for the known_hosts file for ansible-pull.\\n##### STEPS TO REPRODUCE\\n\\nBy default, ansible-pull uses the known_hosts file located at `~/.ssh/known_hosts` but I should be able to add a custom one with `--ssh-common-args=UserKnownHostsFile=~/my_temporary_known_host`\\nUnfortunately, this setting is ignored by ansible-pull and the git checkout fails.\\n\\n```\\nStarting Ansible Pull at 2016-10-26 15:06:29\\n/usr/local/mydir/bin/ansible-pull -i myinventory -U ssh://git@mygit -C master --private-key=mykey --ssh-common-args=UserKnownHostsFile=~/my_temporary_known_host\\nlocalhost | FAILED! => {\\n    \\\"changed\\\": false, \\n    \\\"failed\\\": true, \\n    \\\"msg\\\": \\\"mygit has an unknown hostkey. Set accept_hostkey to True or manually add the hostkey prior to running the git module\\\"\\n}\\n```\\n\", \n    \"component_name\": \"ansible-pull\", \n    \"component_raw\": \"ansible-pull\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18201\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Not sure if this is a problem or just me doing it wrong, but I can not add a custom path for the known_hosts file for ansible-pull.\", \n    \"title\": \"Use custom known_hosts file with ansible-pull \"\n  }, \n  \"18207\": {\n    \"ansible_version\": \"Revision 0a1f3918819151b6c12596c0675609d2f50d02ce\", \n    \"body\": \"##### ISSUE TYPE\\n- Documentation Report\\n##### COMPONENT NAME\\n\\n???\\n##### ANSIBLE VERSION\\n\\nRevision 0a1f3918819151b6c12596c0675609d2f50d02ce\\n##### CONFIGURATION\\n\\nn/a\\n##### OS / ENVIRONMENT\\n\\nUbuntu 14.04\\n##### SUMMARY\\n\\nCouldn't build a deb package\\n##### STEPS TO REPRODUCE\\n\\nGet clean Ubuntu, then clone the repo\\n\\n```\\ncd ansible\\nmake deb\\n...\\nsed \\\"s/%VERSION%/2.3.0/\\\" docs/man/man1/ansible.1.asciidoc.in > docs/man/man1/ansible.1.asciidoc\\nERROR: AsciiDoc 'a2x' command is not installed but is required to build docs/man/man1/ansible.1 docs/man/man1/ansible-playbook.1 docs/man/man1/ansible-pull.1 docs/man/man1/ansible-doc.1 docs/man/man1/ansible-galaxy.1 docs/man/man1/ansible-vault.1\\nmake: *** [docs/man/man1/ansible.1] Error 1\\n```\\n##### EXPECTED RESULTS\\n\\nall needed dependencies I expect to be mentioned on Installlation page. Nope.\\n##### ACTUAL RESULTS\\n\\nI had to find out which package a2x belongs to. A found out that package is asciidoc, which is HUGE!!!\\nI had to install all that X GUI crap to my server box. Sad but true.\\n\", \n    \"component_name\": \"???\", \n    \"component_raw\": \"???\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18207\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Couldn't build a deb package\", \n    \"title\": \"Building deb from sources requires a2x utility \"\n  }, \n  \"18208\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nansible\\n##### SUMMARY\\n\\nCurrently, someone writing a action plugin will also need\\nto have a empty file in the module path to avoid triggering\\nthe error \\\"no action detected in task.\\\".\\n\\nThis PR verify that either a module or a action plugin correspond to a task, permitting to action plugin without a empty file (in case that's purely a action plugin controller side)\\n\\n( cc @dmsimard )\\n\", \n    \"component_name\": \"ansible\", \n    \"component_raw\": \"ansible\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18208\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:cli/\", \n      \"c:parsing/mod_args\", \n      \"feature\", \n      \"in progress\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Currently, someone writing a action plugin will also need\\nto have a empty file in the module path to avoid triggering\\nthe error \\\"no action detected in task.\\\".\\n\\nThis PR verify that either a module or a action plugin correspond to a task, permitting to action plugin without a empty file (in case that's purely a action plugin controller side)\\n\\n( cc @dmsimard )\", \n    \"title\": \"Permit to have a action plugin without a empty module file\"\n  }, \n  \"18209\": {\n    \"ansible_version\": \"N/A\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Feature Idea\\r\\n##### COMPONENT NAME\\r\\n\\r\\nN/A\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\nN/A\\r\\n##### CONFIGURATION\\r\\n\\r\\nN/A\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nUbuntu 16.10 Yakkety Yak\\r\\n##### SUMMARY\\r\\n\\r\\nUbuntu 16.10 Yakkety Yak has been out for a little while now. Please consider adding a yakkety Release of the official Ansible deb packages for Ubuntu to the Ansible PPA: https://launchpad.net/~ansible/+archive/ubuntu/ansible\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```\\r\\nsudo apt-add-repository ppa:ansible/ansible\\r\\nsudo apt update\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nAnsible package list downloaded successfully.\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nAnsible package list fails to download.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n\\r\\n```\\r\\n...\\r\\n...\\r\\nErr:5 http://ppa.launchpad.net/ansible/ansible/ubuntu yakkety Release                                                \\r\\n  404  Not Found\\r\\n```\\r\\n\", \n    \"component_name\": \"n/a\", \n    \"component_raw\": \"N/A\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18209\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Ubuntu 16.10 Yakkety Yak has been out for a little while now. Please consider adding a yakkety Release of the official Ansible deb packages for Ubuntu to the Ansible PPA: https://launchpad.net/~ansible/+archive/ubuntu/ansible\", \n    \"title\": \"Ubuntu 16.10 Yakkety Yak deb packages in ppa:ansible/ansible\"\n  }, \n  \"18210\": {\n    \"ansible_version\": \"ansible 2.3.0 (plugin_loader_loader_create 1297271bc1) last updated 2016/10/26 123713 (GMT -400)\\nlib/ansible/modules/core (detached HEAD c51ced56cc) last updated 2016/10/26 105951 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD 8ffe314ea5) last updated 2016/10/24 112636 (GMT -400)\\nconfig file = /home/adrian/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\nlib/ansible/plugins/\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.3.0 (plugin_loader_loader_create 1297271bc1) last updated 2016/10/26 12:37:13 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD c51ced56cc) last updated 2016/10/26 10:59:51 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD 8ffe314ea5) last updated 2016/10/24 11:26:36 (GMT -400)\\n  config file = /home/adrian/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n\\n\\n```\\n##### SUMMARY\\n\\nMove the PluginLoader class and it's global caches from\\nplugins/**init**.py to plugins/loader.py\\n\\nOne reason is so PluginLoader gets it's own module namespace\\nso that **name** is more accurate so that standard log setup\\nwill get a better logger name ('ansible.plugins.loader' vs\\n'ansible.plugins'). This will let logging be enabled for the\\nplugin loader without enabling it for all plugins.\\n\\nIt also makes it more clear that plugins/**init**.py is where all\\nthe loader objects are created instead of being at the end of the\\nfile after a large class.\\n\\nThird reason is it is a incremental step to making plugins/**init**.py be a empty package file with less side effects on import.\\n\", \n    \"component_name\": \"lib/ansible/plugins/\", \n    \"component_raw\": \"lib/ansible/plugins/\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18210\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"in progress\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Move the PluginLoader class and it's global caches from\\nplugins/**init**.py to plugins/loader.py\\n\\nOne reason is so PluginLoader gets it's own module namespace\\nso that **name** is more accurate so that standard log setup\\nwill get a better logger name ('ansible.plugins.loader' vs\\n'ansible.plugins'). This will let logging be enabled for the\\nplugin loader without enabling it for all plugins.\\n\\nIt also makes it more clear that plugins/**init**.py is where all\\nthe loader objects are created instead of being at the end of the\\nfile after a large class.\\n\\nThird reason is it is a incremental step to making plugins/**init**.py be a empty package file with less side effects on import.\", \n    \"title\": \"Move PluginLoader from __init__.py to loader.py\"\n  }, \n  \"18217\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/userdev/Documents/dlp-ansible/deploy_aqz/ansible.cfg\\nconfigured module search path = [library]\\n(branch stable-2.2)\", \n    \"body\": \"##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\ninclude_role\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0.0\\n  config file = /home/userdev/Documents/dlp-ansible/deploy_aqz/ansible.cfg\\n  configured module search path = ['library']\\n```\\n\\n(branch stable-2.2)\\n##### CONFIGURATION\\n\\nlocal roles and libraries location\\n##### OS / ENVIRONMENT\\n\\nMaster: Ubuntu 16.04.2\\nManaged: Rhel 6.6\\n##### SUMMARY\\n\\nrole vars are not visible in vars attribute of include_role\\n##### STEPS TO REPRODUCE\\n\\n```\\n- hosts: all\\n  gather_facts: True\\n\\n  tasks:\\n    - include_role:\\n        name: \\\"role_test_a\\\"\\n      vars:\\n        a: \\\"test\\\"\\n```\\n\\nrole_test_a/tasks/main.yml :\\n\\n```\\n\\n---\\n- debug: var=a\\n- debug: var=c\\n- include_role:\\n    name: \\\"role_test_b\\\"\\n  vars:\\n    b: \\\"{{ c }}\\\"\\n```\\n\\nrole_test_a/vars/main.yml\\n\\n```\\n\\n---\\nc: \\\"{{ a }} dummy\\\"\\n```\\n\\nrole_test_b/tasks/main.yml\\n\\n```\\n\\n---\\n- debug: var=b\\n```\\n##### EXPECTED RESULTS\\n\\n```\\nPLAY [all] *********************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [host]\\n\\nTASK [role_test_a : debug] *****************************************************\\nok: [host] => {\\n    \\\"a\\\": \\\"test\\\"\\n}\\n\\nTASK [role_test_a : debug] *****************************************************\\nok: [host] => {\\n    \\\"c\\\": \\\"test dummy\\\"\\n}\\n\\nTASK [role_test_b : debug] *****************************************************\\nok: [host] => {\\n    \\\"b\\\": \\\"test dummy\\\"\\n}\\n\\nPLAY RECAP *********************************************************************\\nhost : ok=4    changed=0    unreachable=0    failed=0   \\n```\\n##### ACTUAL RESULTS\\n\\n```\\nPLAY [all] *********************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [host]\\n\\nTASK [role_test_a : debug] *****************************************************\\nok: [host] => {\\n    \\\"a\\\": \\\"test\\\"\\n}\\n\\nTASK [role_test_a : debug] *****************************************************\\nok: [host] => {\\n    \\\"c\\\": \\\"test dummy\\\"\\n}\\n\\nTASK [role_test_b : debug] *****************************************************\\nok: [host] => {\\n    \\\"b\\\": \\\"VARIABLE IS NOT DEFINED!\\\"\\n}\\n\\nPLAY RECAP *********************************************************************\\nhost : ok=4    changed=0    unreachable=0    failed=0   \\n```\\n\", \n    \"component_name\": \"include_role\", \n    \"component_raw\": \"include_role\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18217\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/include_role.py\", \n    \"summary\": \"role vars are not visible in vars attribute of include_role\", \n    \"title\": \"include_role : troubleshooting passing variables\"\n  }, \n  \"18228\": {\n    \"ansible_version\": \"ansible 2.2.0\\nconfig file = /home/aws-ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"ISSUE TYPE\\n\\nFeature Pull Request\\nCOMPONENT NAME\\n\\nec2.py\\n\\nANSIBLE VERSION\\n\\n```\\nansible 2.2.0\\n  config file = /home/aws-ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\nSUMMARY\\n```\\n\\nec2.py was unable to pick ec2.ini with environment variables. This will enable it to pick environment variables where needed.\\n\\nOne use case is if we need to filter the returned host list with a particular tag name which is defined in the environment.\\n\\n```\\npattern_include = %(AWS_PROFILE)s_\\n```\\n\\nAWS_PROFILE is already defined and being used in other parts of the system.\\n\\nThis enables to use the same AWS Account for multiple environments like sandbox, test, staging etc without mixing up the nodes.\\n\", \n    \"component_name\": \"ec2.py\", \n    \"component_raw\": \"ec2.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18228\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"```\\n\\nec2.py was unable to pick ec2.ini with\", \n    \"title\": \"Add environment variables parsing in ec2.ini\"\n  }, \n  \"18236\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel dceb2a0393) last updated 2016/10/28 094834 (GMT +200)\\nlib/ansible/modules/core (detached HEAD 124bb92416) last updated 2016/10/28 094837 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD 8ffe314ea5) last updated 2016/10/25 102106 (GMT +200)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Idea\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/task/feature -->\\n\\n[CallbackModule](https://github.com/ansible/ansible/blob/devel/lib/ansible/plugins/callback/default.py) or [StrategyBase](https://github.com/ansible/ansible/blob/devel/lib/ansible/plugins/strategy/__init__.py)\\n\\nThis is the method printing the message in question:\\nCallbackModule.v2_runner_retry\\nand it's called from\\nStrategyBase._process_pending_results\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.3.0 (devel dceb2a0393) last updated 2016/10/28 09:48:34 (GMT +200)\\n  lib/ansible/modules/core: (detached HEAD 124bb92416) last updated 2016/10/28 09:48:37 (GMT +200)\\n  lib/ansible/modules/extras: (detached HEAD 8ffe314ea5) last updated 2016/10/25 10:21:06 (GMT +200)\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\nretry_files_enabled = False\\npipelining = True\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nCentOS release 6.8 (Final)\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nNot sure if this is a bug report or a feature request, but it would be nice to have the variables in task name templated when it's printed in \\\"FAILED - RETRYING: TASK:\\\" message\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\nPut a variable in name of a task that is defined to retry until a condition is fulfilled and make it retry at least once.\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n\\n---\\n- hosts: localhost\\n  tasks:\\n  - name: First run\\n    command: echo 1\\n    register: result\\n\\n  - name: Previous result {{ result.stdout }}\\n    command: echo 2\\n    register: result\\n    retries: 1\\n    delay: 1\\n    until: False\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\n```\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [First run] ***************************************************************\\nchanged: [localhost]\\n\\nTASK [Previous result 1] *******************************************************\\nFAILED - RETRYING: TASK: Previous result 2 (1 retries left).\\nfatal: [localhost]: FAILED! => {\\\"attempts\\\": 1, \\\"changed\\\": true, \\\"cmd\\\": [\\\"echo\\\", \\\"2\\\"], \\\"delta\\\": \\\"0:00:00.004803\\\", \\\"end\\\": \\\"2016-10-28 16:34:03.315666\\\", \\\"failed\\\": true, \\\"rc\\\": 0, \\\"start\\\": \\\"2016-10-28 16:34:03.310863\\\", \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"2\\\", \\\"stdout_lines\\\": [\\\"2\\\"], \\\"warnings\\\": []}\\n\\n```\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [First run] ***************************************************************\\nchanged: [localhost]\\n\\nTASK [Previous result 1] *******************************************************\\nFAILED - RETRYING: TASK: Previous result {{ result.stdout }} (1 retries left).\\nfatal: [localhost]: FAILED! => {\\\"attempts\\\": 1, \\\"changed\\\": true, \\\"cmd\\\": [\\\"echo\\\", \\\"2\\\"], \\\"delta\\\": \\\"0:00:00.004803\\\", \\\"end\\\": \\\"2016-10-28 16:34:03.315666\\\", \\\"failed\\\": true, \\\"rc\\\": 0, \\\"start\\\": \\\"2016-10-28 16:34:03.310863\\\", \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"2\\\", \\\"stdout_lines\\\": [\\\"2\\\"], \\\"warnings\\\": []}\\n\\n```\\n\", \n    \"component_name\": \"[callback ](https//github.com/ansible/ansible/blob/devel/lib/ansible/plugins/callback/default.py) or [strategybase](https//github.com/ansible/ansible/blob/devel/lib/ansible/plugins/strategy/init.py)\", \n    \"component_raw\": \"[CallbackModule](https://github.com/ansible/ansible/blob/devel/lib/ansible/plugins/callback/default.py) or [StrategyBase](https://github.com/ansible/ansible/blob/devel/lib/ansible/plugins/strategy/__init__.py)\\nThis is the method printing the message in question:\\nCallbackModule.v2_runner_retry\\nand it's called from\\nStrategyBase._process_pending_results\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18236\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"bug\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Not sure if this is a bug report or a feature request, but it would be nice to have the variables in task name templated when it's printed in \\\"FAILED - RETRYING: TASK:\\\" message\", \n    \"title\": \"Task name is not templated in \\\"FAILED - RETRYING: TASK:\\\" message\"\n  }, \n  \"18241\": {\n    \"ansible_version\": \"ansible 2.3.0 (fix_command_timeout 886f146de9) last updated 2016/10/28 151013 (GMT -400)\\nlib/ansible/modules/core (fix_command_timeout 93051cf470) last updated 2016/10/28 150212 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD 8ffe314ea5) last updated 2016/10/25 153440 (GMT -400)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n- Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nNetwork modules, shell.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n\\r\\n```\\r\\nansible 2.3.0 (fix_command_timeout 886f146de9) last updated 2016/10/28 15:10:13 (GMT -400)\\r\\n  lib/ansible/modules/core: (fix_command_timeout 93051cf470) last updated 2016/10/28 15:02:12 (GMT -400)\\r\\n  lib/ansible/modules/extras: (detached HEAD 8ffe314ea5) last updated 2016/10/25 15:34:40 (GMT -400)\\r\\n```\\r\\n##### SUMMARY\\r\\n\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n\\r\\n```\\r\\n   \\\"msg\\\": \\\"timeout waiting for next prompt from remote device\\\",\\r\\n    \\\"**stdout**\\\": \\\"copy running-config flash:test\\\\r\\\\nDestination filename [test]? \\\",\\r\\n    \\\"**stdout_lines**\\\": [\\r\\n        \\\"copy running-config flash:test\\\",\\r\\n        \\\"Destination filename [test]? \\\"\\r\\n```\\r\\n\\r\\nThe socket.timeout was not handled and causes fatal errors.\\r\\nThis is particularly noticeable when the device is doing alternative\\r\\nprompts.  This PR also adds the output of the device to the 'stdout'\\r\\nattribute and returns it to help see the hidden device interaction(s).\\r\\n\\r\\nThis PR will depend on a separate PR posted to ansible_code_modules.\\r\\n\\r\\nNote there is a change here to stdout_lines that is set in lib/ansible/plugins/action/**init**.py as well that handles both cases of 'stdout' as a string or list.  Since the the network modules do, all of the to_list() functions duplicated across network modules could thus be removed and this will handle stdout_lines for them.  One added side effect here is that it uses splitlines() vs split(\\\"\\\\n\\\"), so the extra \\\"\\\\r\\\" that sometimes showed in stdout will be gone.\\r\\n\\r\\nThis, in-part, is related to https://github.com/ansible/ansible-modules-core/issues/5402\\r\\n\\r\\nSorry to intermingle these changes somewhat, they are inter-related.\\r\\n\", \n    \"component_name\": \"network  s shell.py\", \n    \"component_raw\": \"Network modules, shell.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18241\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"c:plugins/action\", \n      \"module_util\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"```\\n\\n   \\\"msg\\\": \\\"timeout waiting for next prompt from remote device\\\",\\n\\n    \\\"**stdout**\\\": \\\"copy running-config flash:test\\\\r\\\\nDestination filename [test]? \\\",\\n\\n    \\\"**stdout_lines**\\\": [\\n\\n        \\\"copy running-config flash:test\\\",\\n\\n        \\\"Destination filename [test]? \\\"\\n\\n```\\n\\n\\n\\nThe socket.timeout was not handled and causes fatal errors.\\n\\nThis is particularly noticeable when the device is doing alternative\\n\\nprompts.  This PR also adds the output of the device to the 'stdout'\\n\\nattribute and returns it to help see the hidden device interaction(s).\\n\\n\\n\\nThis PR will depend on a separate PR posted to ansible_code_modules.\\n\\n\\n\\nNote there is a change here to stdout_lines that is set in lib/ansible/plugins/action/**init**.py as well that handles both cases of 'stdout' as a string or list.  Since the the network modules do, all of the to_list() functions duplicated across network modules could thus be removed and this will handle stdout_lines for them.  One added side effect here is that it uses splitlines() vs split(\\\"\\\\n\\\"), so the extra \\\"\\\\r\\\" that sometimes showed in stdout will be gone.\\n\\n\\n\\nThis, in-part, is related to https://github.com/ansible/ansible-modules-core/issues/5402\\n\\n\\n\\nSorry to intermingle these changes somewhat, they are inter-related.\", \n    \"title\": \"Handle the socket.timeout that paramiko can return\"\n  }, \n  \"18248\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /home/ally/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\nprofile_tasks callback plugin\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.2.0\\n  config file = /home/ally/.ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nFixes the output of `profile_tasks` to match the length of the existing default callback plugin (80 columns)\\n\\n```\\n### Before:\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nSaturday 29 October 2016  22:11:32 -0500 (0:00:00.070)       0:00:00.070 ******    # UNACCEPTABLE\\nok: [localhost]\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=0   \\n\\nSaturday 29 October 2016  22:11:34 -0500 (0:00:01.363)       0:00:01.433 ****** \\n=============================================================================== \\nsetup ------------------------------------------------------------------- 1.36s    # DIOS MIO\\n\\n### After:\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nSaturday 29 October 2016  22:03:56 -0500 (0:00:00.073)       0:00:00.073 ******* \\nok: [localhost]\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=0   \\n\\nSaturday 29 October 2016  22:03:57 -0500 (0:00:01.346)       0:00:01.419 ******* \\n================================================================================ \\nsetup -------------------------------------------------------------------- 1.35s\\n```\\n\", \n    \"component_name\": \"profile_tasks callback plugin\", \n    \"component_raw\": \"profile_tasks callback plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18248\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:plugins/callback\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Fixes the output of `profile_tasks` to match the length of the existing default callback plugin (80 columns)\\n\\n```\\n### Before:\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nSaturday 29 October 2016  22:11:32 -0500 (0:00:00.070)       0:00:00.070 ******    # UNACCEPTABLE\\nok: [localhost]\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=0   \\n\\nSaturday 29 October 2016  22:11:34 -0500 (0:00:01.363)       0:00:01.433 ****** \\n=============================================================================== \\nsetup ------------------------------------------------------------------- 1.36s    # DIOS MIO\\n\\n### After:\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nSaturday 29 October 2016  22:03:56 -0500 (0:00:00.073)       0:00:00.073 ******* \\nok: [localhost]\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=0   \\n\\nSaturday 29 October 2016  22:03:57 -0500 (0:00:01.346)       0:00:01.419 ******* \\n================================================================================ \\nsetup -------------------------------------------------------------------- 1.35s\\n```\", \n    \"title\": \"Make length of decorator match default callback plugin\"\n  }, \n  \"18257\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\ngroup/host_vars\\r\\n\\r\\n##### SUMMARY\\r\\ngroup_vars/group1:\\r\\n\\r\\n    foo_tags:\\r\\n     - bar\\r\\n\\r\\ngroup_vars/group2:\\r\\n\\r\\n    foo_tags:\\r\\n     - baz\\r\\n\\r\\n{{foo_tags|merge}} would be ['bar','baz']\\r\\n\\r\\nRelated: https://groups.google.com/forum/#!searchin/ansible-project/merge$20lists|sort:relevance/ansible-project/LfhifDwnCo4/8BWzpmSSBQAJ\", \n    \"component_name\": \"group/host_vars\", \n    \"component_raw\": \"group/host_vars\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18257\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"group_vars/group1:\\n\\n\\n\\n    foo_tags:\\n\\n     - bar\\n\\n\\n\\ngroup_vars/group2:\\n\\n\\n\\n    foo_tags:\\n\\n     - baz\\n\\n\\n\\n{{foo_tags|merge}} would be ['bar','baz']\\n\\n\\n\\nRelated: https://groups.google.com/forum/#!searchin/ansible-project/merge$20lists|sort:relevance/ansible-project/LfhifDwnCo4/8BWzpmSSBQAJ\", \n    \"title\": \"Per var merging of lists (and hashes?)\"\n  }, \n  \"18259\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 5502da3cf8) last updated 2016/10/25 112253 (GMT +100)\\nlib/ansible/modules/core (devel 4c020102a9) last updated 2016/10/25 112257 (GMT +100)\\nlib/ansible/modules/extras (devel 8f77a0e72a) last updated 2016/10/25 112259 (GMT +100)\\nconfig file =\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nvalidate-modules\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 (devel 5502da3cf8) last updated 2016/10/25 11:22:53 (GMT +100)\\r\\n  lib/ansible/modules/core: (devel 4c020102a9) last updated 2016/10/25 11:22:57 (GMT +100)\\r\\n  lib/ansible/modules/extras: (devel 8f77a0e72a) last updated 2016/10/25 11:22:59 (GMT +100)\\r\\n  config file = \\r\\n```\\r\\n##### CONFIGURATION\\r\\n##### OS / ENVIRONMENT\\r\\n##### SUMMARY\\r\\n\\r\\nA number of modules (in core & extras) are executable. This is difficult to spot during new module creation PR as GitHub doesn't display file mode flags.\\r\\n\\r\\n\\r\\n`validate-modules` needs updating to check for executable\\r\\n\\r\\nOnce fixed all modules will need updating - @gundalow will fix this \\r\\nAlso this need adding to the list of checks in `test/sanity/validate-modules/README.rst`\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n##### EXPECTED RESULTS\\r\\n##### ACTUAL RESULTS\\r\\n\", \n    \"component_name\": \"validate-modules\", \n    \"component_raw\": \"validate-modules\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18259\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"A number of modules (in core & extras) are executable. This is difficult to spot during new module creation PR as GitHub doesn't display file mode flags.\\n\\n\\n\\n\\n\\n`validate-modules` needs updating to check for executable\\n\\n\\n\\nOnce fixed all modules will need updating - @gundalow will fix this \\n\\nAlso this need adding to the list of checks in `test/sanity/validate-modules/README.rst`\", \n    \"title\": \"validate-modules: Check executable flags\"\n  }, \n  \"18263\": {\n    \"ansible_version\": \"ansible 2.3.0 (fix-template-jinja2-override-header de8a38c979) last updated 2016/10/31 104859 (GMT -400)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\ntemplate\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (fix-template-jinja2-override-header de8a38c979) last updated 2016/10/31 10:48:59 (GMT -400)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nfix jinja2 override header when the file contains none of the original markers\\r\\n\\r\\nThe templar does not send the template through the templating engine\\r\\nwhen it doesn't find any variables in the template.  It was not taking\\r\\nin to consideration the override header when deciding this.\\r\\n\\r\\nfixes #18192\", \n    \"component_name\": \"template\", \n    \"component_raw\": \"template\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18263\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"fix jinja2 override header when the file contains none of the original markers\\n\\n\\n\\nThe templar does not send the template through the templating engine\\n\\nwhen it doesn't find any variables in the template.  It was not taking\\n\\nin to consideration the override header when deciding this.\\n\\n\\n\\nfixes #18192\", \n    \"title\": \"fix jinja2 override header when the file contains none of the original markers\"\n  }, \n  \"18279\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel e4115e0b98) last updated 2016/11/01 122333 (GMT +200)\\nlib/ansible/modules/core (detached HEAD 679a0ae5e9) last updated 2016/11/01 121414 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD cf524673e1) last updated 2016/11/01 121414 (GMT +200)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\ncallback\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel e4115e0b98) last updated 2016/11/01 12:23:33 (GMT +200)\\r\\n  lib/ansible/modules/core: (detached HEAD 679a0ae5e9) last updated 2016/11/01 12:14:14 (GMT +200)\\r\\n  lib/ansible/modules/extras: (detached HEAD cf524673e1) last updated 2016/11/01 12:14:14 (GMT +200)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n###### The Bug\\r\\nWhen forcing a 'debug'-task to be flagged as 'changed' with 'changed_when': True, the task itself prints as 'ok', while it is counted as 'changed' in the end-results. This is caused by the '_clean_results'-function, which removes the 'changed'-entry from the results-variable. However, this happens after the task is counted as 'changed', so an inconsistency is born.\\r\\n\\r\\n###### The Fix\\r\\nIt's good that by default the 'changed'-entry is removed. However, if 'changed_when: True' is it's clear that the intention is that it should be marked as 'changed', both in task-result and in play-result. That's why it seemed best to prevent the 'changed'-result from being removed when it's value is True.\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\nThis is the result. The first is a normal debug task, and the second one is marked with 'changed_when: True'.\\r\\n```\\r\\nTASK [Debug Test Ok] **************************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": \\\"Test message that should be green, and ok.\\r\\n}\\r\\n\\r\\nTASK [Debug Test Changed] **************************************************************\\r\\nchanged: [localhost] => {\\r\\n    \\\"changed\\\": true, \\r\\n    \\\"msg\\\": \\\"Test message that should be yellow, and changed.\\\"\\r\\n}\\r\\n```\", \n    \"component_name\": \"callback\", \n    \"component_raw\": \"callback\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18279\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:executor/task_executor\", \n      \"feature\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"###### The Bug\\n\\nWhen forcing a 'debug'-task to be flagged as 'changed' with 'changed_when': True, the task itself prints as 'ok', while it is counted as 'changed' in the end-results. This is caused by the '_clean_results'-function, which removes the 'changed'-entry from the results-variable. However, this happens after the task is counted as 'changed', so an inconsistency is born.\\n\\n\\n\\n###### The Fix\\n\\nIt's good that by default the 'changed'-entry is removed. However, if 'changed_when: True' is it's clear that the intention is that it should be marked as 'changed', both in task-result and in play-result. That's why it seemed best to prevent the 'changed'-result from being removed when it's value is True.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nThis is the result. The first is a normal debug task, and the second one is marked with 'changed_when: True'.\\n\\n```\\n\\nTASK [Debug Test Ok] **************************************************************\\n\\nok: [localhost] => {\\n\\n    \\\"msg\\\": \\\"Test message that should be green, and ok.\\n\\n}\\n\\n\\n\\nTASK [Debug Test Changed] **************************************************************\\n\\nchanged: [localhost] => {\\n\\n    \\\"changed\\\": true, \\n\\n    \\\"msg\\\": \\\"Test message that should be yellow, and changed.\\\"\\n\\n}\\n\\n```\", \n    \"title\": \"Fix for #14430: 'changed_when: True' does not display the task as cha\\u2026\"\n  }, \n  \"18287\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file = /home/ubuntu/my/ansible/ansible.cfg\\nconfigured module search path = [/home/ubuntu/my/anisble/library/]\\nI updated to 2.2.0.0 and the behavior is identical.\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nAnible core (?)\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.1.0.0\\r\\n  config file = /home/ubuntu/my/ansible/ansible.cfg\\r\\n  configured module search path = ['/home/ubuntu/my/anisble/library/']\\r\\n```\\r\\n\\r\\nI updated to 2.2.0.0 and the behavior is identical.\\r\\n\\r\\n##### CONFIGURATION\\r\\n```\\r\\n[defaults]\\r\\nforks = 100\\r\\nnocows = 1\\r\\n\\r\\n[ssh_connection]\\r\\nssh_args = -o ConnectTimeout=20 -o ConnectionAttempts=2 -o ForwardAgent=yes -o ServerAliveInterval=10 -o ServerAliveCountMax=300 -o StrictHostKeyChecking=no -F /home/ubuntu/my/ansible/ssh.config\\r\\n```\\r\\n\\r\\nssh.config contains:\\r\\n```\\r\\nHost *\\r\\nServerAliveInterval 10\\r\\nServerAliveCountMax 300\\r\\nTCPKeepAlive yes\\r\\nStrictHostKeyChecking no\\r\\nControlMaster auto\\r\\nControlPath ~/.ssh/mux-%r_%h:%p\\r\\nControlPersist 1h\\r\\nForwardAgent yes\\r\\nUser ubuntu\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nAnsible does not allow handling of \\\"host unreachable\\\" errors. The following methods of handling errors do not catch \\\"host unreachable\\\" errors and do not allow playbook logic to detect and act upon such situations:\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n - Use any technique mentioned in ansible's [Error Handling](http://docs.ansible.com/ansible/playbooks_error_handling.html) doc\\r\\n- Hit a temporary 'host unreachable' error on the play\\r\\n- The error is not caught or error-handling logic is not triggered.\\r\\n\\r\\nAttempts to catch the error:\\r\\n\\r\\nRetries:\\r\\n\\r\\n```\\r\\n    - name: Example step\\r\\n      shell: whoami\\r\\n      retries: 10\\r\\n      register: task_result\\r\\n      until: task_result|success\\r\\n```\\r\\n\\r\\nTry/catch block:\\r\\n\\r\\n```\\r\\n  - block:\\r\\n    - name: Example step\\r\\n      shell: whoami\\r\\n    rescue:\\r\\n    - local_action: shell echo do nothing\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nHost Unreachable errors are handled by the error-handling logic in the playbook\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nAnsible behaves as if the error-handling logic does not exist.\", \n    \"component_name\": \"anible core (?)\", \n    \"component_raw\": \"Anible core (?)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18287\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Ansible does not allow handling of \\\"host unreachable\\\" errors. The following methods of handling errors do not catch \\\"host unreachable\\\" errors and do not allow playbook logic to detect and act upon such situations:\", \n    \"title\": \"Anisble does not allow handling of \\\"host unreachable\\\" errors\"\n  }, \n  \"18290\": {\n    \"ansible_version\": \"N/A\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n- Documentation \\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nN/A\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n\\\"Porting custom scripts\\\" link results in 404 page in \\\"Porting Guide\\\" document \\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n1. Navigate to this documentation page: http://docs.ansible.com/ansible/porting_guide_2.0.html#porting-custom-scripts\\r\\n2. Click on this link at the bottom of the page: https://github.com/ansible/ansible/blob/devel/docsite/rst/developing_api.rst\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nI see a document about porting custom scripts.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nI see a 404 page. \\r\\n\", \n    \"component_name\": \"documentation\", \n    \"component_raw\": \"- Documentation\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18290\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"\\\"Porting custom scripts\\\" link results in 404 page in \\\"Porting Guide\\\" document\", \n    \"title\": \"\\\"Porting custom scripts\\\" link results in 404 page in \\\"Porting Guide\\\" document \"\n  }, \n  \"18299\": {\n    \"ansible_version\": \"2.1.0.0\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/task/feature -->\\r\\nplaybook_dir variable\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.1.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nNope\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nplaybook_dir may be changed inside the playbook.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n~/Sources/ansible-roles/postgres.yml\\r\\n~/Sources/ansible-roles/nginx.yml\\r\\n~/Sources/web/playbooks/bootstrap.yml\\r\\n```\\r\\n\\n---\\r\\n- name: Install common\\r\\n  hosts: all\\r\\n  roles:\\r\\n    - common\\r\\n- include: \\\"{{ playbook_dir }}/../../ansible-roles/postgres.yml\\\"\\r\\n- include: \\\"{{ playbook_dir }}/../../ansible-roles/nginx.yml\\\"\\r\\n```\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nIn that playbook, I assume, that playbook_dir in bootstrap.yml would point to `~/Sources/web/` all the time, and Both playbooks would be successfully included.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nActually, ansible shows error - nginx.yml not found, because playbook_dir overrided after include.\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nERROR! the file_name '~/ansible-roles/nginx.yml' does not exist, or is not readable\\r\\nAnsible failed to complete successfully. Any error output should be\\r\\nvisible above. Please fix these errors and try again.\\r\\n```\", \n    \"component_name\": \"playbook_dir variable\", \n    \"component_raw\": \"playbook_dir variable\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18299\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"playbook_dir may be changed inside the playbook.\", \n    \"title\": \"playbook_dir changes leak outside of include\"\n  }, \n  \"18300\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nplugin/connection\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.1.1.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nReturn the stderr / stdout from ssh command. 255 is not always that ssh connection was not posible.\\r\\n\\r\\ntest : \\r\\n```\\r\\n$ ansible -m raw -i localhost, localhost -a \\\"echo hola; exit 255;\\\"\\r\\nlocalhost | UNREACHABLE! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"msg\\\": \\\"Failed to connect to the host via ssh.\\\", \\r\\n    \\\"unreachable\\\": true\\r\\n}\\r\\n```\\r\\nPerl default error code when it does not compile is 255\\r\\n\\r\\nIt should return stdout and stderr from ssh output:\\r\\n```\\r\\n$ ssh localhost \\\"echo hola; exit 255;\\\"\\r\\nhola\\r\\n$ echo $?\\r\\n255\\r\\n```\\r\\nBefore:\\r\\n```\\r\\nlocalhost | UNREACHABLE! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"msg\\\": \\\"Failed to connect to the host via ssh\\\"\\r\\n    \\\"unreachable\\\": true\\r\\n}\\r\\n```\\r\\nAfter (should be unreachable: false) :\\r\\n```\\r\\nlocalhost | UNREACHABLE! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"msg\\\": \\\"Failed to connect to the host via ssh or something was wrong.stdout: Global symbol \\\\\\\"$c\\\\\\\" requires explicit package name (did you forget to declare \\\\\\\"my $c\\\\\\\"?) at /home/javi/.ansible/tmp/ansible-tmp-1478071077.6-230805290959721/testing line 3.\\\\r\\\\nExecution of /home/javi/.ansible/tmp/ansible-tmp-1478071077.6-230805290959721/testing aborted due to compilation errors.\\\\r\\\\nstderr:\\\", \\r\\n    \\\"unreachable\\\": true\\r\\n}\\r\\n\\r\\n```\\r\\n\\r\\nThis is to fix the \\\"no-issue\\\" https://github.com/ansible/ansible-modules-core/issues/5410\\r\\n\\r\\nThanks\", \n    \"component_name\": \"plugin/connection\", \n    \"component_raw\": \"plugin/connection\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18300\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"affects_2.3\", \n      \"bug\", \n      \"c:plugins/connection\", \n      \"c:plugins/connection/ssh\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Return the stderr / stdout from ssh command. 255 is not always that ssh connection was not posible.\\n\\n\\n\\ntest : \\n\\n```\\n\\n$ ansible -m raw -i localhost, localhost -a \\\"echo hola; exit 255;\\\"\\n\\nlocalhost | UNREACHABLE! => {\\n\\n    \\\"changed\\\": false, \\n\\n    \\\"msg\\\": \\\"Failed to connect to the host via ssh.\\\", \\n\\n    \\\"unreachable\\\": true\\n\\n}\\n\\n```\\n\\nPerl default error code when it does not compile is 255\\n\\n\\n\\nIt should return stdout and stderr from ssh output:\\n\\n```\\n\\n$ ssh localhost \\\"echo hola; exit 255;\\\"\\n\\nhola\\n\\n$ echo $?\\n\\n255\\n\\n```\\n\\nBefore:\\n\\n```\\n\\nlocalhost | UNREACHABLE! => {\\n\\n    \\\"changed\\\": false, \\n\\n    \\\"msg\\\": \\\"Failed to connect to the host via ssh\\\"\\n\\n    \\\"unreachable\\\": true\\n\\n}\\n\\n```\\n\\nAfter (should be unreachable: false) :\\n\\n```\\n\\nlocalhost | UNREACHABLE! => {\\n\\n    \\\"changed\\\": false, \\n\\n    \\\"msg\\\": \\\"Failed to connect to the host via ssh or something was wrong.stdout: Global symbol \\\\\\\"$c\\\\\\\" requires explicit package name (did you forget to declare \\\\\\\"my $c\\\\\\\"?) at /home/javi/.ansible/tmp/ansible-tmp-1478071077.6-230805290959721/testing line 3.\\\\r\\\\nExecution of /home/javi/.ansible/tmp/ansible-tmp-1478071077.6-230805290959721/testing aborted due to compilation errors.\\\\r\\\\nstderr:\\\", \\n\\n    \\\"unreachable\\\": true\\n\\n}\\n\\n\\n\\n```\\n\\n\\n\\nThis is to fix the \\\"no-issue\\\" https://github.com/ansible/ansible-modules-core/issues/5410\\n\\n\\n\\nThanks\", \n    \"title\": \"Print ssh message even if it return 255\"\n  }, \n  \"18305\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 5fa82f2b4e) last updated 2016/10/31 120158 (GMT +200)\\nlib/ansible/modules/core (detached HEAD f9fada7db0) last updated 2016/10/31 120221 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD 5701a2e050) last updated 2016/10/31 120241 (GMT +200)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n - Feature Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nansible 2.3.0 (devel 5fa82f2b4e) last updated 2016/10/31 12:01:58 (GMT +200)\\r\\n  lib/ansible/modules/core: (detached HEAD f9fada7db0) last updated 2016/10/31 12:02:21 (GMT +200)\\r\\n  lib/ansible/modules/extras: (detached HEAD 5701a2e050) last updated 2016/10/31 12:02:41 (GMT +200)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n##### CONFIGURATION\\r\\n- ANSIBLE_DEBUG=1\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nRHEL 7.2 (Maipo)\\r\\nPython 2.7.5 (default, Oct 11 2015, 17:47:16)\\r\\n\\r\\n##### SUMMARY\\r\\nAnsible Fails to Timeout when SSH conection is OK, but command executes during long (infinite) time.\\r\\nCommon errors:\\r\\n* setup.sh - long (infinite) lsblk execution when server have I/O problems\\r\\n* yum - yum repolist or install stucks in infinite FUTEX because problems in server or yum database.\\r\\n* Ansible hanging on repoquery during yum command #12858\\r\\n* ssh + sudo password can hang indefinitely  #9544\\r\\n \\r\\nA command execution Timeout should be provided, like suggested here (adding timeout to subprocess):\\r\\nhttps://github.com/ansible/ansible/issues/9544\\r\\n\\r\\nSomething like this will be nice: \\r\\n*wait for 3600 seconds (or desired time) to finish task, if it stucks, send kill -9 to subprocess. \\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nTarget server:\\r\\n$ mv /usr/bin/rpm /usr/bin/rpm.orig\\r\\n\\r\\n$ vi /usr/bin/rpm\\r\\n#!/bin/bash\\r\\nwhile true;\\r\\ndo sleep 5;\\r\\ndone\\r\\n\\r\\n$ chmod a+x /usr/bin/rpm\\r\\n\\r\\nControl Server:\\r\\n*Launch ansible and try to remove any packet...\\r\\n---> IT stucks <----\\r\\n\\r\\n```\\r\\nTASK [Disable prelink | yum erase prelink] ***\\r\\n 31985 1477917242.42351: sending task start callback\\r\\n 31985 1477917242.42358: entering _queue_task() for Maquinita.servers.com/yum\\r\\n 31985 1477917242.42540: worker is 1 (out of 1 available)\\r\\n 31985 1477917242.42580: exiting _queue_task() for Maquinita.servers.com/yum\\r\\n 31985 1477917242.42600: done queuing things up, now waiting for results queue to drain\\r\\n 31985 1477917242.42607: waiting for pending results...\\r\\n  6380 1477917242.43023: running TaskExecutor() for Maquinita.servers.com/TASK: Disable prelink | yum erase prelink\\r\\n  6380 1477917242.43127: in run()\\r\\n  6380 1477917242.43210: calling self._execute()\\r\\n  6380 1477917242.43411: Loading FilterModule 'core' from /opt/ansible/ansible22/lib/ansible/plugins/filter/core.py (found_in_cache=True, class_only=False)\\r\\n  6380 1477917242.43430: Loading FilterModule 'ipaddr' from /opt/ansible/ansible22/lib/ansible/plugins/filter/ipaddr.py (found_in_cache=True, class_only=False)\\r\\n  6380 1477917242.43443: Loading FilterModule 'json_query' from /opt/ansible/ansible22/lib/ansible/plugins/filter/json_query.py (found_in_cache=True, class_only=False)\\r\\n  6380 1477917242.43458: Loading FilterModule 'mathstuff' from /opt/ansible/ansible22/lib/ansible/plugins/filter/mathstuff.py (found_in_cache=True, class_only=False)\\r\\n  6380 1477917242.43508: Loading TestModule 'core' from /opt/ansible/ansible22/lib/ansible/plugins/test/core.py (found_in_cache=True, class_only=False)\\r\\n  6380 1477917242.43521: Loading TestModule 'files' from /opt/ansible/ansible22/lib/ansible/plugins/test/files.py (found_in_cache=True, class_only=False)\\r\\n  6380 1477917242.43536: Loading TestModule 'mathstuff' from /opt/ansible/ansible22/lib/ansible/plugins/test/mathstuff.py (found_in_cache=True, class_only=False)\\r\\n  6380 1477917242.45836: Loading Connection 'ssh' from /opt/ansible/ansible22/lib/ansible/plugins/connection/ssh.py\\r\\n  6380 1477917242.46137: Loading ShellModule 'csh' from /opt/ansible/ansible22/lib/ansible/plugins/shell/csh.py\\r\\n  6380 1477917242.46283: Loading ShellModule 'fish' from /opt/ansible/ansible22/lib/ansible/plugins/shell/fish.py\\r\\n  6380 1477917242.46523: Loading ShellModule 'powershell' from /opt/ansible/ansible22/lib/ansible/plugins/shell/powershell.py\\r\\n  6380 1477917242.46605: Loading ShellModule 'sh' from /opt/ansible/ansible22/lib/ansible/plugins/shell/sh.py\\r\\n  6380 1477917242.46636: Loading ShellModule 'sh' from /opt/ansible/ansible22/lib/ansible/plugins/shell/sh.py (found_in_cache=True, class_only=False)\\r\\n  6380 1477917242.46661: in VariableManager get_vars()\\r\\n  6380 1477917242.46713: done with get_vars()\\r\\n  6380 1477917242.46782: Loading ActionModule 'normal' from /opt/ansible/ansible22/lib/ansible/plugins/action/normal.py\\r\\n  6380 1477917242.46800: starting attempt loop\\r\\n  6380 1477917242.46810: running the handler\\r\\n  6380 1477917242.46870: ANSIBALLZ: Using lock for yum\\r\\n  6380 1477917242.46882: ANSIBALLZ: Acquiring lock\\r\\n  6380 1477917242.46894: ANSIBALLZ: Lock acquired: 42769040\\r\\n  6380 1477917242.46905: ANSIBALLZ: Creating module\\r\\n  6380 1477917242.64700: ANSIBALLZ: Writing module\\r\\n  6380 1477917242.64734: ANSIBALLZ: Renaming module\\r\\n  6380 1477917242.64757: ANSIBALLZ: Done creating module\\r\\n  6380 1477917242.64847: _low_level_execute_command(): starting\\r\\n  6380 1477917242.64864: _low_level_execute_command(): executing: /bin/sh -c '( umask 77 && mkdir -p \\\"` echo /var/tmp/$USER/.ansible/tmp/ansible-tmp-1477917242.65-27858957513846 `\\\" && echo ansible-tmp-1477917242.65-27858957513846=\\\"` echo /var/tmp/$USER/.ansible/tmp/ansible-tmp-1477917242.65-27858957513846 `\\\" ) && sleep 0'\\r\\n  6380 1477917242.69932: stdout chunk (state=2):\\r\\n>>>ansible-tmp-1477917242.65-27858957513846=/var/tmp/root/.ansible/tmp/ansible-tmp-1477917242.65-27858957513846\\r\\n<<<\\r\\n\\r\\n  6380 1477917242.70141: stdout chunk (state=3):\\r\\n>>><<<\\r\\n\\r\\n  6380 1477917242.70149: stderr chunk (state=3):\\r\\n>>><<<\\r\\n\\r\\n  6380 1477917242.70168: _low_level_execute_command() done: rc=0, stdout=ansible-tmp-1477917242.65-27858957513846=/var/tmp/root/.ansible/tmp/ansible-tmp-1477917242.65-27858957513846\\r\\n, stderr=\\r\\n  6380 1477917242.70185: transferring module to remote /var/tmp/root/.ansible/tmp/ansible-tmp-1477917242.65-27858957513846/yum.py\\r\\n  6380 1477917242.70735: Sending initial data\\r\\n  6380 1477917242.70748: Sent initial data (94 bytes)\\r\\n  6380 1477917242.77859: stdout chunk (state=3):\\r\\n>>>sftp> put /tmp/tmp2hNGbt /var/tmp/root/.ansible/tmp/ansible-tmp-1477917242.65-27858957513846/yum.py\\r\\n<<<\\r\\n\\r\\n  6380 1477917242.79106: stdout chunk (state=3):\\r\\n>>><<<\\r\\n\\r\\n  6380 1477917242.79115: stderr chunk (state=3):\\r\\n>>><<<\\r\\n\\r\\n  6380 1477917242.79136: done transferring module to remote\\r\\n  6380 1477917242.79161: _low_level_execute_command(): starting\\r\\n  6380 1477917242.79170: _low_level_execute_command(): executing: /bin/sh -c 'chmod u+x /var/tmp/root/.ansible/tmp/ansible-tmp-1477917242.65-27858957513846/ /var/tmp/root/.ansible/tmp/ansible-tmp-1477917242.65-27858957513846/yum.py && sleep 0'\\r\\n  6380 1477917242.87016: stdout chunk (state=2):\\r\\n>>><<<\\r\\n\\r\\n  6380 1477917242.87031: stderr chunk (state=2):\\r\\n>>><<<\\r\\n\\r\\n  6380 1477917242.87052: _low_level_execute_command() done: rc=0, stdout=, stderr=\\r\\n  6380 1477917242.87067: _low_level_execute_command(): starting\\r\\n  6380 1477917242.87079: _low_level_execute_command(): executing: /bin/sh -c '/usr/bin/python /var/tmp/root/.ansible/tmp/ansible-tmp-1477917242.65-27858957513846/yum.py && sleep 0'\\r\\n^CProcess WorkerProcess-14:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/usr/lib64/python2.7/multiprocessing/process.py\\\", line 258, in _bootstrap\\r\\n 31985 1477917335.26199: RUNNING CLEANUP\\r\\n [ERROR]: User interrupted execution\\r\\n\\r\\nreal    19m24.667s\\r\\nuser    0m41.122s\\r\\nsys     0m3.459s\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nI expect task timeout and mark the host as failed\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nAnsible wait to task finalization during infinite time.\\r\\n\\r\\nThis impacts in several nightly support tasks, because playbooks not end... (requires manual intervention). \", \n    \"component_name\": \"ansible\", \n    \"component_raw\": \"ansible\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18305\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [], \n    \"module_match\": null, \n    \"summary\": \"Ansible Fails to Timeout when SSH conection is OK, but command executes during long (infinite) time.\\n\\nCommon errors:\\n\\n* setup.sh - long (infinite) lsblk execution when server have I/O problems\\n\\n* yum - yum repolist or install stucks in infinite FUTEX because problems in server or yum database.\\n\\n* Ansible hanging on repoquery during yum command #12858\\n\\n* ssh + sudo password can hang indefinitely  #9544\\n\\n \\n\\nA command execution Timeout should be provided, like suggested here (adding timeout to subprocess):\\n\\nhttps://github.com/ansible/ansible/issues/9544\\n\\n\\n\\nSomething like this will be nice: \\n\\n*wait for 3600 seconds (or desired time) to finish task, if it stucks, send kill -9 to subprocess.\", \n    \"title\": \"ansible hangs indefinitely waiting for command termination when SSH connection is OK\"\n  }, \n  \"18316\": {\n    \"ansible_version\": \"ansible 2.1.2.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndynamic inventory / vagrant\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.1.2.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nVagrant locks when communicating with it's managed instances.  When attempting to run concurrent Ansible jobs that do not interfere with each other, this locking behavior will cause the dynamic inventory to fail on one or more of the ansible processes.\\r\\n\\r\\nThis change enables wait-and-retry on `vagrant status` and `vagrant ssh-config` commands, to give us a chance of recovering from this condition.\\r\\n\", \n    \"component_name\": \"dynamic inventory / vagrant\", \n    \"component_raw\": \"dynamic inventory / vagrant\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18316\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Vagrant locks when communicating with it's managed instances.  When attempting to run concurrent Ansible jobs that do not interfere with each other, this locking behavior will cause the dynamic inventory to fail on one or more of the ansible processes.\\n\\n\\n\\nThis change enables wait-and-retry on `vagrant status` and `vagrant ssh-config` commands, to give us a chance of recovering from this condition.\", \n    \"title\": \"Support retrying `vagrant status` and `vagrant ssh-config` commands\"\n  }, \n  \"18319\": {\n    \"ansible_version\": \"ansible 1.9.3\\n(but also occurs in Ansible 2)\\nDESCRIPTION\\nWhen specifying an executable vault password file Ansible invokes it by its real path not by the path as specified. This matters if whats passed is actually a symlink to an executable and the executable uses the path by which it is invoked to determine the password to produce.\\nFor example\\n$ ls -l\\ntotal 16\\n-rwxr-xr-x  1 julian  staff  290 Nov  2 2303 get-password\\n-rw-  1 julian  staff  355 Nov  2 2310 secrets.yml\\nsecrets.yml is a dummy variables vault file created by ansible-vault create with the password foo-bar-ansible.\\n$ cat get-password\\n!/bin/sh\\nbasename=$(basename $0)\\nbasename_prefix=get-password\\ndefault_password=foo-bar\\ncase ${basename} in\\n${basename_prefix}-)\\npassword=${default_password}-${basename${basename_prefix}-}\\n)\\npassword=${default_password}\\nesac\\necho ${password}\\nThis script produces the password foo-bar if invoked directly but produces a different password when invoked through a symlink that begins with get-password- e.g. foo-bar-quux when invoked as get-password-quux. This script is a synthetic example but I actually use this mechanism with a more complicated password retrieval script that installs various symlinks for different applications Ansible being one of them.\\nNow lets create a symlink with a suitable name\\n$ ln -s get-password get-password-ansible\\n$ ls -l get-password\\n-rwxr-xr-x  1 julian  staff  290 Nov  2 2303 get-password\\nlrwxr-xr-x  1 julian  staff   12 Nov  2 2324 get-password-ansible -> get-password\\n$ ./get-password\\nfoo-bar\\n$ ./get-password-ansible\\nfoo-bar-ansible\\n$ ansible all -i localhost -c local -a uptime -e @secrets.yml --vault-password-file get-password-ansible\\nERROR Decryption failed\\nOops. Were invoking get-password-ansible which as we just saw produces the correct password foo-bar-ansible. What gives?\\nWell now lets try replacing the symlink with a straight-up copy of the real file\\n$ rm -f get-password-ansible\\n$ cp get-password get-password-ansible\\n$ ls -l get-password\\n-rwxr-xr-x  1 julian  staff  290 Nov  2 2303 get-password\\n-rwxr-xr-x  1 julian  staff  290 Nov  2 2312 get-password-ansible\\n$ ./get-password\\nfoo-bar\\n$ ./get-password-ansible\\nfoo-bar-ansible\\n$ ansible all -i localhost -c local -a uptime -e @secrets.yml --vault-password-file get-password-ansible\\nlocalhost | success | rc=0 >>\\n2312  up 29 days  246 24 users load averages 1.22 1.50 1.58\\nOh hey this time it worked!\\nAnd this is consistent with how the real_vault_password_file function is defined in https//github.com/ansible/ansible/blob/devel/lib/ansible/cli/init.pyL613. It calls os.path.realpath() on the file name provided and then invokes the script by that name.\\nIt would be more useful if the vault password files executability was determined by its real path etc. but then invoked by its original path.\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`--vault-password-file`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 1.9.3\\r\\n```\\r\\n(but also occurs in Ansible 2)\\r\\n\\r\\n##### DESCRIPTION\\r\\nWhen specifying an executable vault password file, Ansible invokes it by its \\\"real\\\" path, not by the path as specified. This matters if what's passed is actually a *symlink* to an executable, and the executable uses the path by which it is invoked to determine the password to produce.\\r\\n\\r\\nFor example:\\r\\n\\r\\n```\\r\\n$ ls -l\\r\\ntotal 16\\r\\n-rwxr-xr-x  1 julian  staff  290 Nov  2 23:03 get-password\\r\\n-rw-------  1 julian  staff  355 Nov  2 23:10 secrets.yml\\r\\n```\\r\\n\\r\\n`secrets.yml` is a dummy variables vault file created by `ansible-vault create` with the password `foo-bar-ansible`.\\r\\n\\r\\n```\\r\\n$ cat get-password\\r\\n#!/bin/sh\\r\\n\\r\\nbasename=\\\"$(basename $0)\\\"\\r\\nbasename_prefix=\\\"get-password\\\"\\r\\ndefault_password=\\\"foo-bar\\\"\\r\\n\\r\\ncase \\\"${basename}\\\" in\\r\\n  \\\"${basename_prefix}\\\"-*)\\r\\n    password=\\\"${default_password}-${basename#${basename_prefix}-}\\\"\\r\\n    ;;\\r\\n  *)\\r\\n    password=\\\"${default_password}\\\"\\r\\n    ;;\\r\\nesac\\r\\n\\r\\necho \\\"${password}\\\"\\r\\n```\\r\\n\\r\\nThis script produces the password `foo-bar` if invoked directly, but produces a different password when invoked through a symlink that begins with `get-password-`, e.g., `foo-bar-quux` when invoked as `get-password-quux`. This script is a synthetic example, but I actually use this mechanism with a more complicated password retrieval script that installs various symlinks for different applications, Ansible being one of them.\\r\\n\\r\\nNow lets create a symlink with a suitable name:\\r\\n\\r\\n```\\r\\n$ ln -s get-password get-password-ansible\\r\\n$ ls -l get-password*\\r\\n-rwxr-xr-x  1 julian  staff  290 Nov  2 23:03 get-password\\r\\nlrwxr-xr-x  1 julian  staff   12 Nov  2 23:24 get-password-ansible -> get-password\\r\\n$ ./get-password\\r\\nfoo-bar\\r\\n$ ./get-password-ansible\\r\\nfoo-bar-ansible\\r\\n$ ansible all -i localhost, -c local -a uptime -e @secrets.yml --vault-password-file get-password-ansible\\r\\nERROR: Decryption failed\\r\\n```\\r\\n\\r\\nOops. We're invoking `get-password-ansible`, which as we just saw, produces the correct password, `foo-bar-ansible`. What gives?\\r\\n\\r\\nWell, now let's try replacing the symlink with a straight-up copy of the real file:\\r\\n\\r\\n```\\r\\n$ rm -f get-password-ansible\\r\\n$ cp get-password get-password-ansible\\r\\n$ ls -l get-password*\\r\\n-rwxr-xr-x  1 julian  staff  290 Nov  2 23:03 get-password\\r\\n-rwxr-xr-x  1 julian  staff  290 Nov  2 23:12 get-password-ansible\\r\\n$ ./get-password\\r\\nfoo-bar\\r\\n$ ./get-password-ansible\\r\\nfoo-bar-ansible\\r\\n$ ansible all -i localhost, -c local -a uptime -e @secrets.yml --vault-password-file get-password-ansible\\r\\nlocalhost | success | rc=0 >>\\r\\n23:12  up 29 days,  2:46, 24 users, load averages: 1.22 1.50 1.58\\r\\n```\\r\\n\\r\\nOh, hey, this time it worked!\\r\\n\\r\\nAnd this is consistent with how the `real_vault_password_file` function is defined in https://github.com/ansible/ansible/blob/devel/lib/ansible/cli/__init__.py#L613. It calls `os.path.realpath()` on the file name provided and then invokes the script by that name.\\r\\n\\r\\nIt would be more useful if the vault password file's executability was determined by its real path, etc., but then invoked by its *original* path.\", \n    \"component_name\": \"-vault-password-file\", \n    \"component_raw\": \"`--vault-password-file`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18319\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_1.9\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": null, \n    \"title\": \"Symlinked executable vault password files should be invoked by their original path, not real path\"\n  }, \n  \"18320\": {\n    \"ansible_version\": \"ansible 1.9.3\\n(but also occurs in Ansible 2)\\nDESCRIPTION\\nWhen specifying an executable vault password file Ansible invokes it by its real path not by the path as specified. This matters if whats passed is actually a symlink to an executable and the executable uses the path by which it is invoked to determine the password to produce.\\nFor example\\n$ ls -l\\ntotal 16\\n-rwxr-xr-x  1 julian  staff  290 Nov  2 2303 get-password\\n-rw-  1 julian  staff  355 Nov  2 2310 secrets.yml\\nsecrets.yml is a dummy variables vault file created by ansible-vault create with the password foo-bar-ansible.\\n$ cat get-password\\n!/bin/sh\\nbasename=$(basename $0)\\nbasename_prefix=get-password\\ndefault_password=foo-bar\\ncase ${basename} in\\n${basename_prefix}-)\\npassword=${default_password}-${basename${basename_prefix}-}\\n)\\npassword=${default_password}\\nesac\\necho ${password}\\nThis script produces the password foo-bar if invoked directly but produces a different password when invoked through a symlink that begins with get-password- e.g. foo-bar-quux when invoked as get-password-quux. This script is a synthetic example but I actually use this mechanism with a more complicated password retrieval script that installs various symlinks for different applications Ansible being one of them.\\nNow lets create a symlink with a suitable name\\n$ ln -s get-password get-password-ansible\\n$ ls -l get-password\\n-rwxr-xr-x  1 julian  staff  290 Nov  2 2303 get-password\\nlrwxr-xr-x  1 julian  staff   12 Nov  2 2324 get-password-ansible -> get-password\\n$ ./get-password\\nfoo-bar\\n$ ./get-password-ansible\\nfoo-bar-ansible\\n$ ansible all -i localhost -c local -a uptime -e @secrets.yml --vault-password-file get-password-ansible\\nERROR Decryption failed\\nOops. Were invoking get-password-ansible which as we just saw produces the correct password foo-bar-ansible. What gives?\\nWell now lets try replacing the symlink with a straight-up copy of the real file\\n$ rm -f get-password-ansible\\n$ cp get-password get-password-ansible\\n$ ls -l get-password\\n-rwxr-xr-x  1 julian  staff  290 Nov  2 2303 get-password\\n-rwxr-xr-x  1 julian  staff  290 Nov  2 2312 get-password-ansible\\n$ ./get-password\\nfoo-bar\\n$ ./get-password-ansible\\nfoo-bar-ansible\\n$ ansible all -i localhost -c local -a uptime -e @secrets.yml --vault-password-file get-password-ansible\\nlocalhost | success | rc=0 >>\\n2312  up 29 days  246 24 users load averages 1.22 1.50 1.58\\nOh hey this time it worked!\\nAnd this is consistent with how the real_vault_password_file function is defined in https//github.com/ansible/ansible/blob/devel/lib/ansible/cli/init.pyL613. It calls os.path.realpath() on the file name provided and then invokes the script by that name.\\nIt would be more useful if the vault password files executability was determined by its real path etc. but then invoked by its original path.\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`--vault-password-file`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 1.9.3\\r\\n```\\r\\n(but also occurs in Ansible 2)\\r\\n\\r\\n##### DESCRIPTION\\r\\nWhen specifying an executable vault password file, Ansible invokes it by its \\\"real\\\" path, not by the path as specified. This matters if what's passed is actually a *symlink* to an executable, and the executable uses the path by which it is invoked to determine the password to produce.\\r\\n\\r\\nFor example:\\r\\n\\r\\n```\\r\\n$ ls -l\\r\\ntotal 16\\r\\n-rwxr-xr-x  1 julian  staff  290 Nov  2 23:03 get-password\\r\\n-rw-------  1 julian  staff  355 Nov  2 23:10 secrets.yml\\r\\n```\\r\\n\\r\\n`secrets.yml` is a dummy variables vault file created by `ansible-vault create` with the password `foo-bar-ansible`.\\r\\n\\r\\n```\\r\\n$ cat get-password\\r\\n#!/bin/sh\\r\\n\\r\\nbasename=\\\"$(basename $0)\\\"\\r\\nbasename_prefix=\\\"get-password\\\"\\r\\ndefault_password=\\\"foo-bar\\\"\\r\\n\\r\\ncase \\\"${basename}\\\" in\\r\\n  \\\"${basename_prefix}\\\"-*)\\r\\n    password=\\\"${default_password}-${basename#${basename_prefix}-}\\\"\\r\\n    ;;\\r\\n  *)\\r\\n    password=\\\"${default_password}\\\"\\r\\n    ;;\\r\\nesac\\r\\n\\r\\necho \\\"${password}\\\"\\r\\n```\\r\\n\\r\\nThis script produces the password `foo-bar` if invoked directly, but produces a different password when invoked through a symlink that begins with `get-password-`, e.g., `foo-bar-quux` when invoked as `get-password-quux`. This script is a synthetic example, but I actually use this mechanism with a more complicated password retrieval script that installs various symlinks for different applications, Ansible being one of them.\\r\\n\\r\\nNow lets create a symlink with a suitable name:\\r\\n\\r\\n```\\r\\n$ ln -s get-password get-password-ansible\\r\\n$ ls -l get-password*\\r\\n-rwxr-xr-x  1 julian  staff  290 Nov  2 23:03 get-password\\r\\nlrwxr-xr-x  1 julian  staff   12 Nov  2 23:24 get-password-ansible -> get-password\\r\\n$ ./get-password\\r\\nfoo-bar\\r\\n$ ./get-password-ansible\\r\\nfoo-bar-ansible\\r\\n$ ansible all -i localhost, -c local -a uptime -e @secrets.yml --vault-password-file get-password-ansible\\r\\nERROR: Decryption failed\\r\\n```\\r\\n\\r\\nOops. We're invoking `get-password-ansible`, which as we just saw, produces the correct password, `foo-bar-ansible`. What gives?\\r\\n\\r\\nWell, now let's try replacing the symlink with a straight-up copy of the real file:\\r\\n\\r\\n```\\r\\n$ rm -f get-password-ansible\\r\\n$ cp get-password get-password-ansible\\r\\n$ ls -l get-password*\\r\\n-rwxr-xr-x  1 julian  staff  290 Nov  2 23:03 get-password\\r\\n-rwxr-xr-x  1 julian  staff  290 Nov  2 23:12 get-password-ansible\\r\\n$ ./get-password\\r\\nfoo-bar\\r\\n$ ./get-password-ansible\\r\\nfoo-bar-ansible\\r\\n$ ansible all -i localhost, -c local -a uptime -e @secrets.yml --vault-password-file get-password-ansible\\r\\nlocalhost | success | rc=0 >>\\r\\n23:12  up 29 days,  2:46, 24 users, load averages: 1.22 1.50 1.58\\r\\n```\\r\\n\\r\\nOh, hey, this time it worked!\\r\\n\\r\\nAnd this is consistent with how the `real_vault_password_file` function is defined in https://github.com/ansible/ansible/blob/devel/lib/ansible/cli/__init__.py#L613. It calls `os.path.realpath()` on the file name provided and then invokes the script by that name.\\r\\n\\r\\nIt would be more useful if the vault password file's executability was determined by its real path, etc., but then invoked by its *original* path.\", \n    \"component_name\": \"-vault-password-file\", \n    \"component_raw\": \"`--vault-password-file`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18320\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:cli/\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": null, \n    \"title\": \"Invoke vault password scripts via original path specified\"\n  }, \n  \"18323\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/task/feature -->\\r\\nModules\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n```\\r\\n[defaults]\\r\\nhost_key_checking=False\\r\\nroles_path=~/.ansible/roles\\r\\n```\\r\\n##### OS / ENVIRONMENT\\r\\n```\\r\\nArch Linux\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nThe problem is that using string variables for multiple options in modules doesn't work, which is kind of unexpected. In `mysql_db: \\\"{{some_options}}\\\"` the \\\"some_options\\\" are being ignored entirely (the variable is a string), but `mysql_db: \\\"name=test\\\"` works perfectly.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n- set_fact:\\r\\n    some_options: \\\"name=test login_user=root state=absent login_password=root encoding=utf8\\\"\\r\\n\\r\\n- name: Create database\\r\\n  mysql_db: \\\"{{some_options}}\\\"\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nI expected to see a module's action performed.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n```\\r\\nTASK [mysql : Create database] *************************************************\\r\\nfatal: [shared1]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"missing required arguments: name\\\"}\\r\\n```\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [mysql : Create database] *************************************************\\r\\ntask path: /home/luken/dev/ci-test/roles/mysql/tasks/main.yml:30\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/core/database/mysql/mysql_db.py\\r\\n<192.168.33.30> ESTABLISH SSH CONNECTION FOR USER: vagrant\\r\\n<192.168.33.30> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\".vagrant/machines/shared/virtualbox/private_key\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=vagrant -o ConnectTimeout=10 -o ControlPath=/home/luken/.ansible/cp/ansible-ssh-%h-%p-%r 192.168.33.30 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1478136020.49-165614096551166 `\\\" && echo ansible-tmp-1478136020.49-165614096551166=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1478136020.49-165614096551166 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<192.168.33.30> PUT /tmp/tmpohznCL TO /home/vagrant/.ansible/tmp/ansible-tmp-1478136020.49-165614096551166/mysql_db.py\\r\\n<192.168.33.30> SSH: EXEC sftp -b - -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\".vagrant/machines/shared/virtualbox/private_key\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=vagrant -o ConnectTimeout=10 -o ControlPath=/home/luken/.ansible/cp/ansible-ssh-%h-%p-%r '[192.168.33.30]'\\r\\n<192.168.33.30> ESTABLISH SSH CONNECTION FOR USER: vagrant\\r\\n<192.168.33.30> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\".vagrant/machines/shared/virtualbox/private_key\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=vagrant -o ConnectTimeout=10 -o ControlPath=/home/luken/.ansible/cp/ansible-ssh-%h-%p-%r 192.168.33.30 '/bin/sh -c '\\\"'\\\"'chmod u+x /home/vagrant/.ansible/tmp/ansible-tmp-1478136020.49-165614096551166/ /home/vagrant/.ansible/tmp/ansible-tmp-1478136020.49-165614096551166/mysql_db.py && sleep 0'\\\"'\\\"''\\r\\n<192.168.33.30> ESTABLISH SSH CONNECTION FOR USER: vagrant\\r\\n<192.168.33.30> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\".vagrant/machines/shared/virtualbox/private_key\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=vagrant -o ConnectTimeout=10 -o ControlPath=/home/luken/.ansible/cp/ansible-ssh-%h-%p-%r -tt 192.168.33.30 '/bin/sh -c '\\\"'\\\"'sudo -H -S -n -u root /bin/sh -c '\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'echo BECOME-SUCCESS-ydeazrbrdkyoysbdgjqzwoqvozjxbmip; /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1478136020.49-165614096551166/mysql_db.py; rm -rf \\\"/home/vagrant/.ansible/tmp/ansible-tmp-1478136020.49-165614096551166/\\\" > /dev/null 2>&1'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"' && sleep 0'\\\"'\\\"''\\r\\nfatal: [shared1]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"collation\\\": \\\"\\\", \\r\\n            \\\"config_file\\\": \\\"~/.my.cnf\\\", \\r\\n            \\\"connect_timeout\\\": 30, \\r\\n            \\\"encoding\\\": \\\"\\\", \\r\\n            \\\"login_host\\\": \\\"localhost\\\", \\r\\n            \\\"login_port\\\": 3306, \\r\\n            \\\"quick\\\": true, \\r\\n            \\\"single_transaction\\\": false, \\r\\n            \\\"state\\\": \\\"present\\\"\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"mysql_db\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"missing required arguments: name\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"s\", \n    \"component_raw\": \"Modules\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18323\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The problem is that using string variables for multiple options in modules doesn't work, which is kind of unexpected. In `mysql_db: \\\"{{some_options}}\\\"` the \\\"some_options\\\" are being ignored entirely (the variable is a string), but `mysql_db: \\\"name=test\\\"` works perfectly.\", \n    \"title\": \"Modules don't see options if they come from the variable as name and value pairs\"\n  }, \n  \"18332\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = ~/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nCredstash Lookup\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = ~/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdd AWS profiles and IAM ARN for AssumeRole support to Credstash lookup plugin.\\r\\n\\r\\n\", \n    \"component_name\": \"credstash lookup\", \n    \"component_raw\": \"Credstash Lookup\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18332\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/lookup\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Add AWS profiles and IAM ARN for AssumeRole support to Credstash lookup plugin.\", \n    \"title\": \"Add support for AWS profiles and IAM ARN for AssumeRole.\"\n  }, \n  \"18334\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncallbacks for include_role\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nNot relevant\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nNot relevant\\r\\n\\r\\n##### SUMMARY\\r\\nThe ``include`` task, when set to ``static: no`` is seen by the callbacks with the hook ``v2_playbook_on_include``.\\r\\n\\r\\nThere is no equivalent for the ``include_role`` task. The role's tasks just gets run and there is no task recorded for the actual include.\\r\\nThe result is that the ``include_role`` task does not get printed to stdout or caught by any other callbacks.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n    # Tasks from included-role/tasks/main.yml gets run without seeing any include action/task\\r\\n    - name: Include role action\\r\\n      hosts: localhost\\r\\n      gather_facts: no\\r\\n      tasks:\\r\\n        - include_role:\\r\\n            name: \\\"included-role\\\"\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nThe ``include_role`` task has a hook so that callbacks can see it. The ``include_role`` task prints an action when used:\\r\\n\\r\\n```\\r\\n# (Pseudo-output)\\r\\n2016-11-03 13:59:45.459023 | TASK [Include role action : include_role] ***************************************************\\r\\n2016-11-03 13:59:45.459125 | task path: /home/user/ansible/playbook.yml:6\\r\\n2016-11-03 13:59:45.517905 | included_role: /home/user/ansible/roles/included-role/tasks/main.yml for localhost\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nThe ``include_role`` task runs the role tasks immediately without notifying the callbacks and no actions are printed to stdout.\", \n    \"component_name\": \"callbacks for include_role\", \n    \"component_raw\": \"callbacks for include_role\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18334\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The ``include`` task, when set to ``static: no`` is seen by the callbacks with the hook ``v2_playbook_on_include``.\\n\\n\\n\\nThere is no equivalent for the ``include_role`` task. The role's tasks just gets run and there is no task recorded for the actual include.\\n\\nThe result is that the ``include_role`` task does not get printed to stdout or caught by any other callbacks.\", \n    \"title\": \"The include_role task should be seen as an actual task by callbacks\"\n  }, \n  \"18338\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /dev/null\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/task/feature -->\\r\\nansible\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /dev/null\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n```\\r\\nexport ANSIBLE_CONFIG=/dev/null\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nI am running from macSierra 10.12.1 and Ubuntu 14.04 targeting CentOS 7, Amazon Linux 2016.09, and Ubuntu 14.04\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\ninclude directive does not respect become directive from outer block\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n1. Create an inventory file (test.ini) with the machines IPs\\r\\n2. Create main.yml with the following content:\\r\\n```\\r\\n- hosts: all\\r\\n  gather_facts: no\\r\\n\\r\\n  tasks:\\r\\n    - block:\\r\\n        - command: id -un\\r\\n          register: cmd\\r\\n\\r\\n        - debug:\\r\\n            msg: \\\"{{ cmd.stdout }}\\\"\\r\\n\\r\\n        - include: test.yml\\r\\n      become: yes\\r\\n```\\r\\n\\r\\n3. Create test.yml with the following content:\\r\\n```\\r\\n- command: id -un\\r\\n  register: cmd\\r\\n\\r\\n- debug:\\r\\n    msg: \\\"{{ cmd.stdout }}\\\"\\r\\n```\\r\\n\\r\\n4. run ```env ANSIBLE_CONFIG=/dev/null ansible-playbook -i test.ini -u ubuntu main.yml```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n```\\r\\nPLAY [all] *********************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [192.168.1.1]\\r\\n\\r\\nTASK [command] *****************************************************************\\r\\nchanged: [192.168.1.1]\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [192.168.1.1] => {\\r\\n    \\\"msg\\\": \\\"root\\\"\\r\\n}\\r\\n\\r\\nTASK [command] *****************************************************************\\r\\nchanged: [192.168.1.1]\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [192.168.1.1] => {\\r\\n    \\\"msg\\\": \\\"root\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\n192.168.1.1                 : ok=5    changed=2    unreachable=0    failed=0\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n```\\r\\nPLAY [all] *********************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [192.168.1.1]\\r\\n\\r\\nTASK [command] *****************************************************************\\r\\nchanged: [192.168.1.1]\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [192.168.1.1] => {\\r\\n    \\\"msg\\\": \\\"root\\\"\\r\\n}\\r\\n\\r\\nTASK [command] *****************************************************************\\r\\nchanged: [192.168.1.1]\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [192.168.1.1] => {\\r\\n    \\\"msg\\\": \\\"ubuntu\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\n192.168.1.1                 : ok=5    changed=2    unreachable=0    failed=0\\r\\n```\\r\\n\", \n    \"component_name\": \"ansible\", \n    \"component_raw\": \"ansible\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18338\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [], \n    \"module_match\": null, \n    \"summary\": \"include directive does not respect become directive from outer block\", \n    \"title\": \"include directive does not respect become directive from outer block\"\n  }, \n  \"18341\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ninclude_role\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nMaster: Ubuntu 16.04.2\\r\\nManaged: Rhel 6.6\\r\\n\\r\\n##### SUMMARY\\r\\ninclude_role doesn't work with 'with_items' and multi host vars\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nPlaybook\\r\\n```\\r\\n- hosts: ref\\r\\n  gather_facts: False\\r\\n\\r\\n  tasks:\\r\\n    - debug: var=\\\"item\\\"\\r\\n      with_items: \\\"{{ test_var }}\\\"\\r\\n\\r\\n    - include_role:\\r\\n        name: \\\"role_test\\\"\\r\\n      vars:\\r\\n        r_var: \\\"{{ item }}\\\"\\r\\n      with_items: \\\"{{ test_var }}\\\"\\r\\n```\\r\\nroles/role_test/tasks/main.yml\\r\\n```\\r\\n\\n---\\r\\n- debug: var=\\\"r_var\\\"\\r\\n```\\r\\n\\r\\nhosts:\\r\\n```\\r\\n[test]\\r\\nhost1\\r\\nhost2\\r\\n```\\r\\n\\r\\nhost_vars/host1/main.yml\\r\\n```\\r\\n\\n---\\r\\ntest_var:\\r\\n  - \\\"host1_val1\\\"\\r\\n  - \\\"host1_val2\\\"\\r\\n```\\r\\nhost_vars/host2/main.yml\\r\\n```\\r\\n\\n---\\r\\ntest_var:\\r\\n  - \\\"host2_val1\\\"\\r\\n  - \\\"host2_val2\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n```\\r\\nPLAY [test] *********************************************************************\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [host1] => (item=host1_val1) => {\\r\\n    \\\"item\\\": \\\"host1_val1\\\"\\r\\n}\\r\\nok: [host1] => (item=host1_val2) => {\\r\\n    \\\"item\\\": \\\"host1_val2\\\"\\r\\n}\\r\\nok: [host2] => (item=host2_val1) => {\\r\\n    \\\"item\\\": \\\"host2_val1\\\"\\r\\n}\\r\\nok: [host2] => (item=host2_val2) => {\\r\\n    \\\"item\\\": \\\"host2_val2\\\"\\r\\n}\\r\\n\\r\\nTASK [include_role] ************************************************************\\r\\n\\r\\nTASK [role_test : debug] *******************************************************\\r\\nok: [host1] => {\\r\\n    \\\"r_var\\\": \\\"host1_val1\\\"\\r\\n}\\r\\nok: [host2] => {\\r\\n    \\\"r_var\\\": \\\"host2_val1\\\"\\r\\n}\\r\\n\\r\\nTASK [role_test : debug] *******************************************************\\r\\nok: [host1] => {\\r\\n    \\\"r_var\\\": \\\"host1_val2\\\"\\r\\n}\\r\\nok: [host2] => {\\r\\n    \\\"r_var\\\": \\\"host2_val2\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nhost1 : ok=3    changed=0    unreachable=0    failed=0   \\r\\nhost2 : ok=3    changed=0    unreachable=0    failed=0  \\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nPLAY [test] *********************************************************************\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [host1] => (item=host1_val1) => {\\r\\n    \\\"item\\\": \\\"host1_val1\\\"\\r\\n}\\r\\nok: [host1] => (item=host1_val2) => {\\r\\n    \\\"item\\\": \\\"host1_val2\\\"\\r\\n}\\r\\nok: [host2] => (item=host2_val1) => {\\r\\n    \\\"item\\\": \\\"host2_val1\\\"\\r\\n}\\r\\nok: [host2] => (item=host2_val2) => {\\r\\n    \\\"item\\\": \\\"host2_val2\\\"\\r\\n}\\r\\n\\r\\nTASK [include_role] ************************************************************\\r\\n\\r\\nTASK [role_test : debug] *******************************************************\\r\\nok: [host1] => {\\r\\n    \\\"r_var\\\": \\\"host2_val1\\\"\\r\\n}\\r\\nok: [host2] => {\\r\\n    \\\"r_var\\\": \\\"host2_val1\\\"\\r\\n}\\r\\n\\r\\nTASK [role_test : debug] *******************************************************\\r\\nok: [host1] => {\\r\\n    \\\"r_var\\\": \\\"host2_val2\\\"\\r\\n}\\r\\nok: [host2] => {\\r\\n    \\\"r_var\\\": \\\"host2_val2\\\"\\r\\n}\\r\\n\\r\\nTASK [role_test : debug] *******************************************************\\r\\nok: [host1] => {\\r\\n    \\\"r_var\\\": \\\"host1_val1\\\"\\r\\n}\\r\\nok: [host2] => {\\r\\n    \\\"r_var\\\": \\\"host1_val1\\\"\\r\\n}\\r\\n\\r\\nTASK [role_test : debug] *******************************************************\\r\\nok: [host1] => {\\r\\n    \\\"r_var\\\": \\\"host1_val2\\\"\\r\\n}\\r\\nok: [host12] => {\\r\\n    \\\"r_var\\\": \\\"host1_val2\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nhost1 : ok=5    changed=0    unreachable=0    failed=0   \\r\\nhost2 : ok=5    changed=0    unreachable=0    failed=0  \\r\\n```\\r\\n\\r\\nIf test_var is an empty list for host2, play stops in error :\\r\\nERROR! Unexpected Exception: 'results'\\r\\n\", \n    \"component_name\": \"include_role\", \n    \"component_raw\": \"include_role\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18341\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/include_role.py\", \n    \"summary\": \"include_role doesn't work with 'with_items' and multi host vars\", \n    \"title\": \"include_role doesn't work with with_items and multi host vars\"\n  }, \n  \"18345\": {\n    \"ansible_version\": \"devel 2.2 2.1\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ngroup_add\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\ndevel, 2.2, 2.1\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nthis fixes an issue if group_add key is an int. \\r\\nfixes https://github.com/ansible/ansible-modules-core/issues/5415\\r\\nInventory:\\r\\n~~~\\r\\nhost1 groupkey=1\\r\\n~~~\\r\\nPlaybook\\r\\n~~~\\r\\n- hosts: all\\r\\n  gather_facts: no\\r\\n  tasks:\\r\\n  - group_by: key={{ groupkey }}\\r\\n\\r\\n- hosts: \\\"1\\\"\\r\\n  gather_facts: no\\r\\n  tasks:\\r\\n  - debug: msg=\\\"ok\\\"\\r\\n~~~\\r\\n\\r\\nWithout this patch the above play with error out with\\r\\n~~~\\r\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: AttributeError: 'int' object has no attribute 'replace'\\r\\nfatal: [host1]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"Unexpected failure during module execution.\\\", \\\"stdout\\\": \\\"\\\"}\\r\\n~~~\\r\\n\\r\\nNote: in the bug description (https://github.com/ansible/ansible-modules-core/issues/5415) the play target looks like `- hosts: 1`. This is IMHO invalid syntax (valid is `- hosts: \\\"1\\\"`) and ansible will still complain (which is expected) with\\r\\n~~~\\r\\nERROR! the field 'hosts' should be a list of (<type 'basestring'>,), but the item '1' is a <type 'int'>\\r\\n\\r\\nThe error appears to have been in '/home/resmo/Projects/resmo/ansible-bug-repo/core-5415/test.yml': line 6, column 3, but may\\r\\nbe elsewhere in the file depending on the exact syntax problem.\\r\\n\\r\\nThe offending line appears to be:\\r\\n\\r\\n\\r\\n- hosts: 1\\r\\n  ^ here\\r\\n~~~\", \n    \"component_name\": \"group_add\", \n    \"component_raw\": \"group_add\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18345\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:plugins/action\", \n      \"in progress\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"this fixes an issue if group_add key is an int. \\n\\nfixes https://github.com/ansible/ansible-modules-core/issues/5415\\n\\nInventory:\\n\\n~~~\\n\\nhost1 groupkey=1\\n\\n~~~\\n\\nPlaybook\\n\\n~~~\\n\\n- hosts: all\\n\\n  gather_facts: no\\n\\n  tasks:\\n\\n  - group_by: key={{ groupkey }}\\n\\n\\n\\n- hosts: \\\"1\\\"\\n\\n  gather_facts: no\\n\\n  tasks:\\n\\n  - debug: msg=\\\"ok\\\"\\n\\n~~~\\n\\n\\n\\nWithout this patch the above play with error out with\\n\\n~~~\\n\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: AttributeError: 'int' object has no attribute 'replace'\\n\\nfatal: [host1]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"Unexpected failure during module execution.\\\", \\\"stdout\\\": \\\"\\\"}\\n\\n~~~\\n\\n\\n\\nNote: in the bug description (https://github.com/ansible/ansible-modules-core/issues/5415) the play target looks like `- hosts: 1`. This is IMHO invalid syntax (valid is `- hosts: \\\"1\\\"`) and ansible will still complain (which is expected) with\\n\\n~~~\\n\\nERROR! the field 'hosts' should be a list of (<type 'basestring'>,), but the item '1' is a <type 'int'>\\n\\n\\n\\nThe error appears to have been in '/home/resmo/Projects/resmo/ansible-bug-repo/core-5415/test.yml': line 6, column 3, but may\\n\\nbe elsewhere in the file depending on the exact syntax problem.\\n\\n\\n\\nThe offending line appears to be:\\n\\n\\n\\n\\n\\n- hosts: 1\\n\\n  ^ here\\n\\n~~~\", \n    \"title\": \"group_add: fix when key is an int\"\n  }, \n  \"18356\": {\n    \"ansible_version\": \"2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nTask\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n2.2.0.0\\r\\n\\r\\n##### CONFIGURATION\\r\\nDefault\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nCentOS  3.10.0-327.36.1.el7.x86_64\\r\\n\\r\\n##### SUMMARY\\r\\nIf you specify localhost and 127.0.0.1 in different groups, variable not passed from one task to another.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nFile: /src/ansible-bug/environments/vars/hosts\\r\\n```\\r\\n[any-other-host]\\r\\nlocalhost\\r\\n\\r\\n[test-vars-host]\\r\\n127.0.0.1\\r\\n```\\r\\n\\r\\nFile: /src/ansible-bug/roles/test_vars/tasks/main.yml\\r\\n```\\r\\n- command: echo 1\\r\\n  register: my_var\\r\\n\\r\\n- debug: var=my_var verbosity=2\\r\\n```\\r\\n\\r\\nFile: /src/ansible-bug/test_vars.yml\\r\\n```\\r\\n- hosts: test-vars-host\\r\\n  connection: local\\r\\n  become: yes\\r\\n  become_user: root\\r\\n  become_method: sudo\\r\\n  roles:\\r\\n    - test_vars\\r\\n```\\r\\n\\r\\nRun command:\\r\\n` ansible-playbook -vvv /src/ansible-bug/test_vars.yml -i /src/ansible-bug/environments/vars/`\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nEcho my_var value. You can see it if you change 'test-vars-host' to 'localhost' or 'any-other-host' to '127.0.0.1'\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nok: [localhost] => {\\r\\n    \\\"my_var\\\": \\\"VARIABLE IS NOT DEFINED!\\\"\\r\\n}\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"task\", \n    \"component_raw\": \"Task\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18356\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"If you specify localhost and 127.0.0.1 in different groups, variable not passed from one task to another.\", \n    \"title\": \"If you specify localhost and 127.0.0.1 in different groups, variable not passed from one task to another.\"\n  }, \n  \"18359\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvariable precedence\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nverbatim `ansible.cfg` file\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n- Running from: Linux (Arch)\\r\\n- Target: Linux (Debian 8 in Azure) with static and dynamic inventory (`azure_rm.py`)\\r\\n\\r\\n##### SUMMARY\\r\\nThere's no way to override `ansible_host` variable if different from `null`.\\r\\nWhen working with dynamic inventory (`azure_rm.py`) the values for `ansible_host` contain the public IP addresses of the VMs. The idea here is that systems belonging to a particular group are accessed via a jumpbox/bastion host, where `ansible_ssh_extra_args` is populated via group vars, `ansible_host` has to be modified to `hostvars[inventory_hostname]['private_ip']` (SSH port is closed in public interface).\\r\\n\\r\\nTested with static inventory file as well (described below for simplicity).\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nIt can be reproduced with a simple static inventory file:\\r\\n\\r\\n```\\r\\n# file: hosts\\r\\n[TestGroup]\\r\\nworking\\r\\nnotok ansible_host=10.0.0.1\\r\\n```\\r\\n\\r\\n```\\r\\n# file: group_vars/TestGroup\\r\\n\\n---\\r\\nansible_ssh_common_args: -o ProxyCommand='ssh -W %h:%p my-bastion-host'\\r\\nansible_host: 20.20.20.20\\r\\n```\\r\\nCommands:\\r\\n```\\r\\nansible -i hosts -m debug -a \\\"var=ansible_host\\\" all\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nAll systems should get their `ansible_host` overriden according to the group vars (that is, in this simple example have a value of `20.20.20.20`).\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nOnly the system with null `ansible_host` in the inventory get its `ansible_host` overriden by group vars.\\r\\n```\\r\\nworking | SUCCESS => {\\r\\n    \\\"ansible_host\\\": \\\"20.20.20.20\\\"\\r\\n}\\r\\nnotok | SUCCESS => {\\r\\n    \\\"ansible_host\\\": \\\"10.0.0.1\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"variable precedence\", \n    \"component_raw\": \"variable precedence\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18359\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"needs_info\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"There's no way to override `ansible_host` variable if different from `null`.\\n\\nWhen working with dynamic inventory (`azure_rm.py`) the values for `ansible_host` contain the public IP addresses of the VMs. The idea here is that systems belonging to a particular group are accessed via a jumpbox/bastion host, where `ansible_ssh_extra_args` is populated via group vars, `ansible_host` has to be modified to `hostvars[inventory_hostname]['private_ip']` (SSH port is closed in public interface).\\n\\n\\n\\nTested with static inventory file as well (described below for simplicity).\", \n    \"title\": \"ansible_host cannot be overriden\"\n  }, \n  \"18360\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvariables\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.2.0\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nLinux Mint 18 Sarah\\r\\nUbuntu 14.04.4 LTS\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\nWe have collected  x number of salts generated by Wordpress Api to variable wp_salt, and wanted to use it later in script. But because sometimes salt sent by Wordpress Api can contain special charachters like {{ or {%. when trying to use variable ansible gives an error( for example to just print it out, or use inside jinja template). Below you can see how we collect x number of salts into one wp_salt variable. We could have used !unsafe if it was just one salt, but we want collection of salts which will be later used inside jinja template. raw/endraw also did not help.\\r\\n```\\r\\n\\r\\n- name: Fetch random salts for WordPress config\\r\\n  local_action: command curl https://api.wordpress.org/secret-key/1.1/salt/\\r\\n  become: no\\r\\n  become_method: sudo\\r\\n  with_items: \\r\\n         - key1\\r\\n         - key2\\r\\n  register: wp_salt\\r\\n```\\r\\n\\r\\n\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n```\\r\\n- name: test\\r\\nlocal_action: command curl https://api.wordpress.org/secret-key/1.1/salt/\\r\\nbecome: no\\r\\nbecome_method: sudo\\r\\nwith_items:\\r\\n- key1\\r\\n- key11\\r\\n- key111\\r\\n- key1111\\r\\n- key11111\\r\\n- key111111\\r\\n- key1111111\\r\\n- key11111111\\r\\n- key111111111\\r\\n- key1111111111\\r\\n- key11111111111\\r\\n- key111111111111\\r\\n- key1111111111111\\r\\nregister: wp_key\\r\\n- name: print\\r\\ndebug: msg={{ item.stdout }}\\r\\nwith_items: \\\"{{ wp_key.results }}\\\"\\r\\n```\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n\\n---\\r\\n- name: Add nginx vhost\\r\\nhosts: vhost\\r\\n#  gather_facts: False\\r\\n#  remote_user: administrator\\r\\nbecome: yes\\r\\nbecome_method: sudo\\r\\nroles:\\r\\n- test\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nthe items inside wp_salt.results are printed to the console without an error\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nAnsible throws an error saying unexpected tags or symbol encountered\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nfatal: [172.29.0.17]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"{'_ansible_parsed': True, u'cmd': [u'curl', u'https://api.wordpress.org/secret-key/1.1/salt/'], u'end': u'2016-11-04 20:00:07.999757', '_ansible_no_log': False, '_ansible_delegated_vars': {'ansible_host': u'localhost'}, u'stdout': u\\\\\\\"define('AUTH_KEY',         'P: KUuXm~4G]16)L;W$2<]XJY9y88~FTckMLd`ed1)-EgkqYI?WX9a&%SG<~?oi;');\\\\\\\\ndefine('SECURE_AUTH_KEY',  'S,$lttQ~Z)qp4dX~Gf [+j`=r@DfhT`{6!L|y8p${#- .{V=)KxyE5Qzm)D,D4a|');\\\\\\\\ndefine('LOGGED_IN_KEY',    'mkik(G1CJ}De)}3J_+cm+$(,e/wyksM98}dmq;WqQ1nabuG?sU)E&A6ADjGDWi#');\\\\\\\\ndefine('NONCE_KEY',        ',{pZ?91s$~Nb6W6z+vJBfA1IdF!6(:qwN;[BR1hss64UzH`O@gM!%Zi_J2|-mm4S');\\\\\\\\ndefine('AUTH_SALT',        '}%<2cAjkzdM+gwc[.v+pdrM|EXsR33#7.+aY7gbBK%lh4 Cc,?Q1-sdE;-.L}VZg');\\\\\\\\ndefine('SECURE_AUTH_SALT', '5*1XPR+{9<Gh!Nt+@|+m-/)`yl<w^i=$8+-a4j 3OM.>To,x+&ur?n)&V4bWYJPO');\\\\\\\\ndefine('LOGGED_IN_SALT',   'l5UHkA%^.~eQI)Px 7rs?-3b$20pcPVtZJ)|m<_X@L-lm%39k,phf|9*XyF4Y_|h');\\\\\\\\ndefine('NONCE_SALT',       'jFaRVl@@9FR^rHJ&n0z;n8Ld|:/b*(E!:HrAB1G@iP}^GI+[c}1(k9+wUnJWD%0l');\\\\\\\", '_ansible_item_result': True, u'rc': 0, 'item': u'key1', u'delta': u'0:00:01.762252', u'stderr': u'  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\\\\\\\\n                                 Dload  Upload   Total   Spent    Left  Speed\\\\\\\\n\\\\\\\\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\\\\\\\\r  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0\\\\\\\\r100   768    0   768    0     0    443      0 --:--:--  0:00:01 --:--:--   443', u'changed': True, 'invocation': {'module_name': u'command', u'module_args': {u'warn': True, u'executable': None, u'_uses_shell': False, u'_raw_params': u'curl https://api.wordpress.org/secret-key/1.1/salt/', u'removes': None, u'creates': None, u'chdir': None}}, 'stdout_lines': [u\\\\\\\"define('AUTH_KEY',         'P: KUuXm~4G]16)L;W$2<]XJY9y88~FTckMLd`ed1)-EgkqYI?WX9a&%SG<~?oi;');\\\\\\\", u\\\\\\\"define('SECURE_AUTH_KEY',  'S,$lttQ~Z)qp4dX~Gf [+j=r@DfhT`{6!L|y8p${#- .{V=)KxyE5Qzm)D,D4a|');\\\\\\\", u\\\\\\\"define('LOGGED_IN_KEY',    'mkik(G1CJ}De)}3J_+cm+$(,e/wyksM98}dmq;WqQ1nabuG?sU)E&A6ADjGDWi#');\\\\\\\", u\\\\\\\"define('NONCE_KEY',        ',{pZ?91s$~Nb6W6z+vJBfA1IdF!6(:qwN;[BR1hss64UzH`O@gM!%Zi_J2|-mm4S');\\\\\\\", u\\\\\\\"define('AUTH_SALT',        '}%<2cAjkzdM+gwc[.v+pdrM|EXsR33#7.+aY7gbBK%lh4 Cc,?Q1-sdE;-.L}VZg');\\\\\\\", u\\\\\\\"define('SECURE_AUTH_SALT', '5*1XPR+{9<Gh!Nt+@|+m-/)`yl<w^i=$8+-a4j 3OM.>To,x+&ur?n)&V4bWYJPO');\\\\\\\", u\\\\\\\"define('LOGGED_IN_SALT',   'l5UHkA%^.~eQI)Px 7rs?-3b$20pcPVtZJ)|m<_X@L-lm%39k,phf|9*XyF4Y_|h');\\\\\\\", u\\\\\\\"define('NONCE_SALT',       'jFaRVl@@9FR^rHJ&n0z;n8Ld|:/b*(E!:HrAB1G@iP}^GI+[c}1(k9+wUnJWD%0l');\\\\\\\"], u'start': u'2016-11-04 20:00:06.237505', u'warnings': [u'Consider using get_url or uri module rather than running curl']}: template error while templating string: Missing end of comment tag. String: define('AUTH_KEY',         'P: KUuXm~4G]16)L;W$2<]XJY9y88~FTckMLd`ed1)-EgkqYI?WX9a&%SG<~?oi;');\\\\ndefine('SECURE_AUTH_KEY',  'S,$lttQ~Z)qp4dX~Gf [+j=r@DfhT`{6!L|y8p${#- .{V=)KxyE5Qzm)D,D4a|');\\\\ndefine('LOGGED_IN_KEY',    'mkik(G1CJ}De)}3J_+cm+$(`,e/wyksM98}dmq;WqQ1nabuG?sU)E&A6ADjGDWi#');\\\\ndefine('NONCE_KEY',        ',{pZ?91s$~Nb6W6z+vJBfA1IdF!6(:qwN;[BR1hss64UzH`O@gM!%Zi_J2|-mm4S');\\\\ndefine('AUTH_SALT',        '}%<2cAjkzdM+gwc[.v+pdrM|EXsR33#7.+aY7gbBK%lh4 Cc,?Q1-sdE;-.L}VZg');\\\\ndefine('SECURE_AUTH_SALT', '5*1XPR+{9<Gh!Nt+@|+m-/)`yl<w^i=$8+-a4j 3OM.>To,x+&ur?n)&V4bWYJPO');\\\\ndefine('LOGGED_IN_SALT',   'l5UHkA%^.~eQI)Px 7rs?-3b$20pcPVtZJ)|m<_X@L-lm%39k,phf|9*XyF4Y_|h');\\\\ndefine('NONCE_SALT',       'jFaRVl@@9FR^rHJ&n0z;n8Ld|:/b*(E!:HrAB1G@iP}^GI+[c}1(k9+wUnJWD%0l');\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"variables\", \n    \"component_raw\": \"variables\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18360\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"We have collected  x number of salts generated by Wordpress Api to variable wp_salt, and wanted to use it later in script. But because sometimes salt sent by Wordpress Api can contain special charachters like {{ or {%. when trying to use variable ansible gives an error( for example to just print it out, or use inside jinja template). Below you can see how we collect x number of salts into one wp_salt variable. We could have used !unsafe if it was just one salt, but we want collection of salts which will be later used inside jinja template. raw/endraw also did not help.\\n\\n```\\n\\n\\n\\n- name: Fetch random salts for WordPress config\\n\\n  local_action: command curl https://api.wordpress.org/secret-key/1.1/salt/\\n\\n  become: no\\n\\n  become_method: sudo\\n\\n  with_items: \\n\\n         - key1\\n\\n         - key2\\n\\n  register: wp_salt\\n\\n```\", \n    \"title\": \"Special characters errors with registered vars \"\n  }, \n  \"18367\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 5502da3cf8) last updated 2016/10/25 112253 (GMT +100)\\nlib/ansible/modules/core (devel 4c020102a9) last updated 2016/10/25 112257 (GMT +100)\\nlib/ansible/modules/extras (devel 8f77a0e72a) last updated 2016/10/25 112259 (GMT +100)\\nconfig file =\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nvalidate-modules\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 (devel 5502da3cf8) last updated 2016/10/25 11:22:53 (GMT +100)\\r\\n  lib/ansible/modules/core: (devel 4c020102a9) last updated 2016/10/25 11:22:57 (GMT +100)\\r\\n  lib/ansible/modules/extras: (devel 8f77a0e72a) last updated 2016/10/25 11:22:59 (GMT +100)\\r\\n  config file = \\r\\n```\\r\\n##### CONFIGURATION\\r\\n##### OS / ENVIRONMENT\\r\\n##### SUMMARY\\r\\n\\r\\nCurrently `validate-modules` doesn't run on python 3, that needs fixing\\r\\n\\r\\nThere's code in there that intercepts stdout/stderr. It's broken on py3. So the program fails silently w/ no errors when you hit that.\\r\\n\\r\\nOnce the script works on py2 & py3 https://github.com/ansible/ansible/pull/18366 needs reverting\\r\\n\\r\\nThis need adding to the list of checks in `test/sanity/validate-modules/README.rst`\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n##### EXPECTED RESULTS\\r\\n##### ACTUAL RESULTS\\r\\n\", \n    \"component_name\": \"validate-modules\", \n    \"component_raw\": \"validate-modules\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18367\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"python3\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Currently `validate-modules` doesn't run on python 3, that needs fixing\\n\\n\\n\\nThere's code in there that intercepts stdout/stderr. It's broken on py3. So the program fails silently w/ no errors when you hit that.\\n\\n\\n\\nOnce the script works on py2 & py3 https://github.com/ansible/ansible/pull/18366 needs reverting\\n\\n\\n\\nThis need adding to the list of checks in `test/sanity/validate-modules/README.rst`\", \n    \"title\": \"validate-modules: Run on py3\"\n  }, \n  \"18371\": {\n    \"ansible_version\": \"lib/ansible/modules/core (detached HEAD 55b1813ebd) last updated 2016/11/01 140220 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD cf524673e1) last updated 2016/11/01 123951 (GMT -400)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nweb_infrastructure/apache2_module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n  lib/ansible/modules/core: (detached HEAD 55b1813ebd) last updated 2016/11/01 14:02:20 (GMT -400)\\r\\n  lib/ansible/modules/extras: (detached HEAD cf524673e1) last updated 2016/11/01 12:39:51 (GMT -400)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThis patchset updates module integration testing to\\r\\nvalidate the changes in PR #5454\\r\\n\\r\\nThis patchset instructs apache2_module to disable all\\r\\nmpm modules, enable mpm_event, then disable mpm_event\\r\\nand enable mpm_worker.\\r\\n\\r\\nFixes: #5328\", \n    \"component_name\": \"web_infrastructure/apache2_module\", \n    \"component_raw\": \"web_infrastructure/apache2_module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18371\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This patchset updates module integration testing to\\n\\nvalidate the changes in PR #5454\\n\\n\\n\\nThis patchset instructs apache2_module to disable all\\n\\nmpm modules, enable mpm_event, then disable mpm_event\\n\\nand enable mpm_worker.\\n\\n\\n\\nFixes: #5328\", \n    \"title\": \"Validate apache2 mpm module switching for bug #5328\"\n  }, \n  \"18375\": {\n    \"ansible_version\": \"ansible 2.1.3.0\\nconfig file = /home/user/.ansible.cfg\\nconfigured module search path = [/home/user/.ansible/ypid-ansible-common/ansible/library /usr/share/ansible/library]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nAnsible role min_ansible_version checking\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.3.0\\r\\n  config file = /home/user/.ansible.cfg\\r\\n  configured module search path = ['/home/user/.ansible/ypid-ansible-common/ansible/library', '/usr/share/ansible/library']\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nDebian stable\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nRole authors can currently specify which Ansible version the role requires to run using `galaxy_info.min_ansible_version`.\\r\\nIt is pointless to attempt to run a role using a older Ansible version as the author probably had a reason to set the `min_ansible_version`.\\r\\nHowever, Ansible does not even give a hint when running a role which requires a higher version.\\r\\n\\r\\nThe naming is kind of bad with `galaxy_info.min_ansible_version`, maybe when this feature idea gets implemented, the variable should be renamed.\\r\\n\\r\\nBackground:\\r\\n\\r\\nAs the recent release [fix two vulnerabilities](https://www.ansible.com/security), I would like to require at least `2.1.3`.\\r\\nSo also patch levels should be checked from `min_ansible_version`.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nCreate a role with:\\r\\n\\r\\n```\\r\\ngalaxy_info.min_ansible_version == '3.4.0'\\r\\n```\\r\\n\\r\\nin the `meta/main.yml` file. Create a playbook which runs the role. Run the Playbook.\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nAnsible should not attempt to run the role and show a error that the Ansible version requirement for some roles is not met.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nAnsible runs the whole playbook including the role without a hint that the requirement of the role might be unmet.\", \n    \"component_name\": \"ansible role min_ansible_version checking\", \n    \"component_raw\": \"Ansible role min_ansible_version checking\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18375\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Role authors can currently specify which Ansible version the role requires to run using `galaxy_info.min_ansible_version`.\\n\\nIt is pointless to attempt to run a role using a older Ansible version as the author probably had a reason to set the `min_ansible_version`.\\n\\nHowever, Ansible does not even give a hint when running a role which requires a higher version.\\n\\n\\n\\nThe naming is kind of bad with `galaxy_info.min_ansible_version`, maybe when this feature idea gets implemented, the variable should be renamed.\\n\\n\\n\\nBackground:\\n\\n\\n\\nAs the recent release [fix two vulnerabilities](https://www.ansible.com/security), I would like to require at least `2.1.3`.\\n\\nSo also patch levels should be checked from `min_ansible_version`.\", \n    \"title\": \"Check min_ansible_version for roles and don\\u2019t run the role if to old\"\n  }, \n  \"18379\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\n- lookup/keyring.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nAdd a lookup keyring.py\\r\\nI believe it would be useful to access the OS keychain directly to  get password  or token.\\r\\nHardcoding them in the playbook or leaving them on the filesystem is not always the best solution.\\r\\nIt uses python keyring module. \\r\\nThis lookup access the keyring  to fetch the secret.\\r\\n\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\nN/A\\r\\n```\\r\\n\\r\\nI tried the lookup on both OS X  and Fedora with Gnome\", \n    \"component_name\": \"lookup/keyring.py\", \n    \"component_raw\": \"- lookup/keyring.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18379\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/lookup\", \n      \"docs\", \n      \"feature\", \n      \"new_plugin\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Add a lookup keyring.py\\n\\nI believe it would be useful to access the OS keychain directly to  get password  or token.\\n\\nHardcoding them in the playbook or leaving them on the filesystem is not always the best solution.\\n\\nIt uses python keyring module. \\n\\nThis lookup access the keyring  to fetch the secret.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\nN/A\\n\\n```\\n\\n\\n\\nI tried the lookup on both OS X  and Fedora with Gnome\", \n    \"title\": \"Feature/lookup keyring\"\n  }, \n  \"18390\": {\n    \"ansible_version\": \"N/A (but would only work for 2.0+ where strategies exist)\", \n    \"body\": \"##### ISSUE TYPE\\r\\nFeature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nNew strategy: slot-based free\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nN/A (but would only work for 2.0+ where strategies exist)\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A: new feature\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A: new feature\\r\\n\\r\\n##### SUMMARY\\r\\nI would like to propose (and develop) a new strategy that follows the same model as Yahoo!'s Pogo tool: https://github.com/ytoolshed/pogo/wiki/Concepts#dispatching-commands\\r\\n\\r\\nThe goal of Pogo is to allow you to do \\\"perfect\\\" rolling updates in which you disable a set of hosts for maintenance, and each time a host finishes, you dispatch the next one. While the `serial` argument accomplishes a similar goal, slot-based rolling is muuuch faster when tasks take varying amounts of time. To exemplify this pain:\\r\\n\\r\\nWe have 10 hosts and we want to execute on only 50% at a time. In the serial model, we would disable the first 50% and wait for them all to complete before executing the second 50%. Now imagine we have two hosts (one in each batch) that take considerably longer to execute (say, 10x as long). In the serial model, we would take the 10x time in the first batch and then the 10x time again in the second batch. In the slot-based strategy, you would only take the 10x time (plus however long it took to get to the second host), because you could start on the second slow host before the first had finished.\\r\\n\\r\\nLooking through the code, I _think_ the best way to implement this is as a strategy and not try to reuse the serial batching logic. However, I'm an Ansible-core noob and would love feedback from the developers on two things:\\r\\n\\r\\n1. Is this something that you would be interested in reviewing and merging? Does it make sense as part of the Ansible ecosystem?\\r\\n2. Is a strategy the right way to implement this? Can you see any major pitfalls to building this as a self-contained strategy plugin?\\r\\n\\r\\nIf you keep reading around in Pogo, they also support \\\"global pools\\\" in which multiple executions coordinate slot usage. While interesting, I don't plan on implementing this initially (and potentially ever).\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n`hosts.ini`\\r\\n```\\r\\n[web]\\r\\n# fast drainer (1m)\\r\\nweb1\\r\\n# slow drainer (10m)\\r\\nweb2\\r\\n# fast drainer (1m)\\r\\nweb3\\r\\n# slow drainer (10m)\\r\\nweb4\\r\\n```\\r\\n\\r\\n`upgrade.yml`\\r\\n```\\r\\n\\n---\\r\\n- name: safely do a rolling maintenance\\r\\n  hosts: all\\r\\n  strategy: slots\\r\\n  slots: 50%\\r\\n  tasks:\\r\\n  - name: disable\\r\\n    # (however you do that)\\r\\n  - name: wait for traffic to drain\\r\\n    wait_for:\\r\\n      host: 0.0.0.0\\r\\n      port: 80\\r\\n      state: drained\\r\\n      timeout: 1800\\r\\n  - name: upgrade httpd\\r\\n    package: name=httpd state=latest\\r\\n  - name: restart httpd\\r\\n    service: name=httpd state=restarted\\r\\n  - name: healthcheck\\r\\n    uri: \\\"url=http://{{ ansible_nodename }}\\\"\\r\\n  - name: enable\\r\\n    # (however you do that)\\r\\n```\\r\\n\\r\\n```\\r\\nansible-playbook -i hosts.ini upgrade.yml\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n1. start 50% of hosts\\r\\n  * disable `web1`\\r\\n  * disable `web2`\\r\\n  * wait_for `web1`\\r\\n  * wait_for `web2`\\r\\n2. move on when a host finishes draining (similar to free strategy)\\r\\n  * upgrade, restart, healthcheck, enable `web1`\\r\\n3. slot free, fill it with the next host\\r\\n  * disable `web3`\\r\\n  * wait_for `web3`\\r\\n4. move on when a host finishes draining\\r\\n  * upgrade, restart, healthcheck, enable `web3`\\r\\n5. slot free, fill it with the next host\\r\\n  * disable `web4`\\r\\n  * wait_for `web4`\\r\\n6. move on when a host finishes draining\\r\\n  * upgrade, restart, healthcheck, enable `web1`\\r\\n  * upgrade, restart, healthcheck, enable `web4`\\r\\n\\r\\nTotal execution time:\\r\\n```\\r\\ndrain_time(web2) + drain_time(web3) + drain_time(web4) = 1 + 1 + 10 = 12\\r\\n```\\r\\n\\r\\nFor comparison, in the `serial` case, the total execution time would have been:\\r\\n```\\r\\ndrain_time(web1) + drain_time(web4) = 10 + 10 = 20\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nN/A: new feature\", \n    \"component_name\": \"new strategy slot-based free\", \n    \"component_raw\": \"New strategy: slot-based free\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18390\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I would like to propose (and develop) a new strategy that follows the same model as Yahoo!'s Pogo tool: https://github.com/ytoolshed/pogo/wiki/Concepts#dispatching-commands\\n\\n\\n\\nThe goal of Pogo is to allow you to do \\\"perfect\\\" rolling updates in which you disable a set of hosts for maintenance, and each time a host finishes, you dispatch the next one. While the `serial` argument accomplishes a similar goal, slot-based rolling is muuuch faster when tasks take varying amounts of time. To exemplify this pain:\\n\\n\\n\\nWe have 10 hosts and we want to execute on only 50% at a time. In the serial model, we would disable the first 50% and wait for them all to complete before executing the second 50%. Now imagine we have two hosts (one in each batch) that take considerably longer to execute (say, 10x as long). In the serial model, we would take the 10x time in the first batch and then the 10x time again in the second batch. In the slot-based strategy, you would only take the 10x time (plus however long it took to get to the second host), because you could start on the second slow host before the first had finished.\\n\\n\\n\\nLooking through the code, I _think_ the best way to implement this is as a strategy and not try to reuse the serial batching logic. However, I'm an Ansible-core noob and would love feedback from the developers on two things:\\n\\n\\n\\n1. Is this something that you would be interested in reviewing and merging? Does it make sense as part of the Ansible ecosystem?\\n\\n2. Is a strategy the right way to implement this? Can you see any major pitfalls to building this as a self-contained strategy plugin?\\n\\n\\n\\nIf you keep reading around in Pogo, they also support \\\"global pools\\\" in which multiple executions coordinate slot usage. While interesting, I don't plan on implementing this initially (and potentially ever).\", \n    \"title\": \"Slot-based (Pogo-style) Strategy\"\n  }, \n  \"18391\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /ansible/projects/test/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nCore\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /ansible/projects/test/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n```\\r\\n[defaults] \\r\\nbecome_method=sudo\\r\\nsudo_flags=-H\\r\\npipelining=True\\r\\nretry_files_enabled=False\\r\\nallow_world_readable_tmpfiles=True\\r\\nforks=20\\r\\nserial=20\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nRunning Ansible from RHEL 6 towards node with HP-UX (11+, 11.23 and others)\\r\\nFailure only on HP-UX\\r\\n\\r\\n##### SUMMARY\\r\\nWhenever using playbook with \\\"become: True\\\", it fails with:\\r\\nFailed to set file mode on remote files (rc: 2, err: chmod: can't change /tmp/ansible-tmp-1478507525.44-151149964677265/: Not owner\\\\nchmod: can't access /tmp/ansible-tmp-1478507525.44-151149964677265/setup.py\\\\n)\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nRun a playbook with become: True, with any task. The setup task will fail.\\r\\n\\r\\nplaybook.yml:\\r\\n```\\r\\n\\n---\\r\\n# This playbook to be run towards HP-UX host to test permission bug with become\\r\\n#\\r\\n- name: \\\"Test playbook\\\"\\r\\n  hosts: all\\r\\n  become: true\\r\\n  become_user: xREMOTEUSERx\\r\\n  become_method: sudo\\r\\n  tasks:\\r\\n  - name: Run whoami\\r\\n    command: whami\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nPlaybook should run successfully, running command whoami as xREMOTEUSERx.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nFails during setup with \\\"Failed to set file mode on remote files....\\\":\\r\\n```\\r\\n$ ansible-playbook -vvv -i \\\"xREMOTEHOSTx,\\\" play-test.yml \\r\\nUsing /ansible/projects/test/ansible.cfg as config file\\r\\n\\r\\nPLAYBOOK: play-test.yml ********************************************************\\r\\n1 plays in play-test.yml\\r\\n\\r\\nPLAY [Test playbook] ***********************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nUsing module file /pyVE/lib/python2.7/site-packages/ansible/modules/core/system/setup.py\\r\\n<xREMOTEHOSTx> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<xREMOTEHOSTx> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/xMYUSERx/.ansible/cp/ansible-ssh-%h-%p-%r xREMOTEHOSTx '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo /tmp/ansible-tmp-1478507525.44-151149964677265 `\\\" && echo ansible-tmp-1478507525.44-151149964677265=\\\"` echo /tmp/ansible-tmp-1478507525.44-151149964677265 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<xREMOTEHOSTx> PUT /tmp/tmplSznsB TO /tmp/ansible-tmp-1478507525.44-151149964677265/setup.py\\r\\n<xREMOTEHOSTx> SSH: EXEC sftp -b - -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/xMYUSERx/.ansible/cp/ansible-ssh-%h-%p-%r '[xREMOTEHOSTx]'\\r\\n<xREMOTEHOSTx> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<xREMOTEHOSTx> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/xMYUSERx/.ansible/cp/ansible-ssh-%h-%p-%r xREMOTEHOSTx '/bin/sh -c '\\\"'\\\"'setfacl -m u:xREMOTEUSERx:rx /tmp/ansible-tmp-1478507525.44-151149964677265/ /tmp/ansible-tmp-1478507525.44-151149964677265/setup.py && sleep 0'\\\"'\\\"''\\r\\n<xREMOTEHOSTx> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<xREMOTEHOSTx> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/xMYUSERx/.ansible/cp/ansible-ssh-%h-%p-%r xREMOTEHOSTx '/bin/sh -c '\\\"'\\\"'chmod u+x /tmp/ansible-tmp-1478507525.44-151149964677265/ /tmp/ansible-tmp-1478507525.44-151149964677265/setup.py && sleep 0'\\\"'\\\"''\\r\\n<xREMOTEHOSTx> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<xREMOTEHOSTx> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/xMYUSERx/.ansible/cp/ansible-ssh-%h-%p-%r xREMOTEHOSTx '/bin/sh -c '\\\"'\\\"'chown xREMOTEUSERx /tmp/ansible-tmp-1478507525.44-151149964677265/ /tmp/ansible-tmp-1478507525.44-151149964677265/setup.py && sleep 0'\\\"'\\\"''\\r\\n [WARNING]: Using world-readable permissions for temporary files Ansible needs to create when becoming an unprivileged user. This may be insecure. For\\r\\ninformation on securing this, see https://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user\\r\\n\\r\\n<xREMOTEHOSTx> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<xREMOTEHOSTx> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/xMYUSERx/.ansible/cp/ansible-ssh-%h-%p-%r xREMOTEHOSTx '/bin/sh -c '\\\"'\\\"'chmod a+rx /tmp/ansible-tmp-1478507525.44-151149964677265/ /tmp/ansible-tmp-1478507525.44-151149964677265/setup.py && sleep 0'\\\"'\\\"''\\r\\nfatal: [xREMOTEHOSTx]: FAILED! => {\\r\\n    \\\"failed\\\": true, \\r\\n    \\\"msg\\\": \\\"Failed to set file mode on remote files (rc: 2, err: chmod: can't change /tmp/ansible-tmp-1478507525.44-151149964677265/: Not owner\\\\nchmod: can't access /tmp/ansible-tmp-1478507525.44-151149964677265/setup.py\\\\n)\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nxREMOTEHOSTx                   : ok=0    changed=0    unreachable=0    failed=1   \\r\\n```\\r\\n\\r\\nFile permissions on the files left on remote host:\\r\\n```\\r\\n$ ls -lasd /tmp/ans*\\r\\n   0 drwx------   2 xREMOTEUSERx     xMYUSERx          96 Nov  7 09:32 /tmp/ansible-tmp-1478507525.44-151149964677265\\r\\n```\", \n    \"component_name\": \"core\", \n    \"component_raw\": \"Core\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18391\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Whenever using playbook with \\\"become: True\\\", it fails with:\\n\\nFailed to set file mode on remote files (rc: 2, err: chmod: can't change /tmp/ansible-tmp-1478507525.44-151149964677265/: Not owner\\\\nchmod: can't access /tmp/ansible-tmp-1478507525.44-151149964677265/setup.py\\\\n)\", \n    \"title\": \"Failure using become on HP-UX: Failed to set file mode on remote files\"\n  }, \n  \"18392\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nblock\\r\\ninclude\\r\\nenvironment\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nBase ansible config\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nenvironment variables do not seem to carry when using includes inside a block\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nenv.yml\\r\\n```\\r\\n\\n---\\r\\n\\r\\n- hosts: localhost\\r\\n  connection: local\\r\\n  vars:\\r\\n    env:\\r\\n      test: 123456\\r\\n  tasks:\\r\\n    - shell: env\\r\\n      environment: \\\"{{ env }}\\\"\\r\\n    - block:\\r\\n      - shell: env\\r\\n      environment: \\\"{{ env }}\\\"\\r\\n    - block:\\r\\n      - include: env_inc.yml\\r\\n      environment: \\\"{{ env }}\\\"\\r\\n```\\r\\nenv_inc.yml\\r\\n```\\r\\n\\n---\\r\\n\\r\\n- shell: env\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n```\\r\\n#ansible-playbook env.yml -vvvv | grep -e '\\\"test=123456\\\"' -e '\\\"cmd\\\": \\\"env\\\"'\\r\\n [WARNING]: Host file not found: /etc/ansible/hosts\\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n    \\\"cmd\\\": \\\"env\\\", \\r\\n        \\\"test=123456\\\", \\r\\n    \\\"cmd\\\": \\\"env\\\", \\r\\n        \\\"test=123456\\\", \\r\\n    \\\"cmd\\\": \\\"env\\\", \\r\\n        \\\"test=123456\\\", \\r\\n```\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nansible-playbook env.yml -vvvv | grep -e '\\\"test=123456\\\"' -e '\\\"cmd\\\": \\\"env\\\"'\\r\\n [WARNING]: Host file not found: /etc/ansible/hosts\\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n    \\\"cmd\\\": \\\"env\\\", \\r\\n        \\\"test=123456\\\", \\r\\n    \\\"cmd\\\": \\\"env\\\", \\r\\n        \\\"test=123456\\\", \\r\\n    \\\"cmd\\\": \\\"env\\\", \\r\\n```\\r\\n\", \n    \"component_name\": \"block\", \n    \"component_raw\": \"block\\ninclude\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18392\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"environment variables do not seem to carry when using includes inside a block\", \n    \"title\": \"includes wrapped in a block statement drop environment variables\"\n  }, \n  \"18393\": {\n    \"ansible_version\": \"2.2\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n`ansible-galaxy`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n`2.2`\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nCurrent help message of the `ansible-galaxy install` command doesn't show how to specify custom name of the role under which the role is downloaded. This PR is adding this information and changing the command help message from this:\\r\\n\\r\\n```\\r\\n$ ansible-galaxy install --help\\r\\nUsage: ansible-galaxy install [options] [-r FILE | role_name(s)[,version] | scm+role_repo_url[,version] | tar_file(s)]\\r\\n```\\r\\n\\r\\nto this:\\r\\n\\r\\n```\\r\\n$ ansible-galaxy install --help                                                                               \\r\\nUsage: ansible-galaxy install [options] (-r FILE | ((role_name | scm+role_repo_url)[,version[,name]] | tar_file[,,name])...)\\r\\n```\\r\\n\\r\\nThat corresponds with the information described in the `lib/ansible/playbook/role/requirement.py` file on the line 136. It also explicitly defines that either the requirements file or the role must be specified. The formatting of the help string is inspired by the POSIX standard IEEE Std 1003.1 used for example by [docopt](http://docopt.org/).\", \n    \"component_name\": \"ansible-galaxy\", \n    \"component_raw\": \"`ansible-galaxy`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18393\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:cli/\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Current help message of the `ansible-galaxy install` command doesn't show how to specify custom name of the role under which the role is downloaded. This PR is adding this information and changing the command help message from this:\\n\\n\\n\\n```\\n\\n$ ansible-galaxy install --help\\n\\nUsage: ansible-galaxy install [options] [-r FILE | role_name(s)[,version] | scm+role_repo_url[,version] | tar_file(s)]\\n\\n```\\n\\n\\n\\nto this:\\n\\n\\n\\n```\\n\\n$ ansible-galaxy install --help                                                                               \\n\\nUsage: ansible-galaxy install [options] (-r FILE | ((role_name | scm+role_repo_url)[,version[,name]] | tar_file[,,name])...)\\n\\n```\\n\\n\\n\\nThat corresponds with the information described in the `lib/ansible/playbook/role/requirement.py` file on the line 136. It also explicitly defines that either the requirements file or the role must be specified. The formatting of the help string is inspired by the POSIX standard IEEE Std 1003.1 used for example by [docopt](http://docopt.org/).\", \n    \"title\": \"Fixing help message for the ansible-galaxy install command\"\n  }, \n  \"18396\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\ninclude_role\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nNone specific\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nCentOS Linux release 7.2.1511 (Core) - Ansible host and server\\r\\n\\r\\n##### SUMMARY\\r\\nWhen multiple parents includes the same child role but override some variables, the variable resolution is wrong.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n./playbook.yml\\r\\n\\n---\\r\\n- hosts: localhost\\r\\n  gather_facts: no\\r\\n  roles:\\r\\n    - parent1\\r\\n    - parent2\\r\\n./roles/child/defaults/main.yml\\r\\n\\n---\\r\\nchildTestValue: ChildRoleDefault\\r\\n./roles/child/tasks/main.yml\\r\\n- debug: var=childTestValue\\r\\n./roles/parent1/defaults/main.yml\\r\\n\\n---\\r\\nparentTestValue: Parent1RoleDefault\\r\\n./roles/parent1/tasks/main.yml\\r\\n- debug: var=parentTestValue\\r\\n\\r\\n- include_role:\\r\\n    name: child\\r\\n  vars:\\r\\n    childTestValue: \\\"{{ parentTestValue }}\\\"\\r\\n\\r\\n./roles/parent2/defaults/main.yml\\r\\n\\n---\\r\\nparentTestValue: Parent2RoleDefault\\r\\n./roles/parent2/tasks/main.yml\\r\\n- debug: var=parentTestValue\\r\\n\\r\\n- include_role:\\r\\n    name: child\\r\\n  vars:\\r\\n    childTestValue: \\\"{{ parentTestValue }}\\\"\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nI was expecting the child role to be called twice with 2 differents value of childTestValue. Once With Parent1RoleDefault and an other with Parent2RoleDefault\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n\\r\\nInstead, the child role is called twice with the same value for childTestValue\\r\\n```\\r\\n[root@localhost debug]# ansible-playbook -vvvv /vagrant/ansible/debug/playbook.yml\\r\\nUsing /etc/ansible/ansible.cfg as config file\\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n\\r\\nLoading callback plugin default of type stdout, v2.0 from /usr/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc\\r\\n\\r\\nPLAYBOOK: playbook.yml *********************************************************\\r\\n1 plays in /vagrant/ansible/debug/playbook.yml\\r\\n\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [parent1 : debug] *********************************************************\\r\\ntask path: /vagrant/ansible/debug/roles/parent1/tasks/main.yml:1\\r\\nok: [localhost] => {\\r\\n    \\\"parentTestValue\\\": \\\"Parent1RoleDefault\\\"\\r\\n}\\r\\n\\r\\nTASK [child : debug] ***********************************************************\\r\\ntask path: /vagrant/ansible/debug/roles/child/tasks/main.yml:1\\r\\nok: [localhost] => {\\r\\n    \\\"childTestValue\\\": \\\"Parent2RoleDefault\\\"\\r\\n}\\r\\n\\r\\nTASK [parent2 : debug] *********************************************************\\r\\ntask path: /vagrant/ansible/debug/roles/parent2/tasks/main.yml:1\\r\\nok: [localhost] => {\\r\\n    \\\"parentTestValue\\\": \\\"Parent2RoleDefault\\\"\\r\\n}\\r\\n\\r\\nTASK [child : debug] ***********************************************************\\r\\ntask path: /vagrant/ansible/debug/roles/child/tasks/main.yml:1\\r\\nok: [localhost] => {\\r\\n    \\\"childTestValue\\\": \\\"Parent2RoleDefault\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=4    changed=0    unreachable=0    failed=0\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"include_role\", \n    \"component_raw\": \"include_role\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18396\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/include_role.py\", \n    \"summary\": \"When multiple parents includes the same child role but override some variables, the variable resolution is wrong.\", \n    \"title\": \"Wrong variable resolution when multiple parents role call the same child role\"\n  }, \n  \"18402\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n* Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n* callback/slack_github.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\nconfig file = /etc/ansible/ansible.cfg\\r\\nconfigured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nThis is an ansible callback plugin that sends full play recap to github gist and sends colored notification to  a Slack channel after play ends.\\r\\n\\r\\nThis plugin makes use of file `slack.json` in your playbook folder with following contents:\\r\\n\\r\\n```json\\r\\n{\\r\\n    \\\"webhook\\\": \\\"Slack incoming webhook url\\\",\\r\\n    \\\"channel\\\": \\\"#slackchannel\\\",\\r\\n    \\\"username\\\": \\\"Ansible\\\"\\r\\n}\\r\\n```\\r\\nNotification screenshot:\\r\\n\\r\\n![ansible-notification](https://cloud.githubusercontent.com/assets/3428087/20076519/649bbaf8-a541-11e6-80a8-2b8167f4029e.png)\\r\\n\\r\\nRecap output: https://gist.github.com/anonymous/f75e04a115ea86b730e41e2ef03cc5f0\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\nNo visual changes when running ansible, only notification in slack channel and gist with formated recap output\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"callback/slack_github.py\", \n    \"component_raw\": \"* callback/slack_github.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18402\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/callback\", \n      \"feature\", \n      \"needs_revision\", \n      \"new_plugin\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This is an ansible callback plugin that sends full play recap to github gist and sends colored notification to  a Slack channel after play ends.\\n\\n\\n\\nThis plugin makes use of file `slack.json` in your playbook folder with following contents:\\n\\n\\n\\n```json\\n\\n{\\n\\n    \\\"webhook\\\": \\\"Slack incoming webhook url\\\",\\n\\n    \\\"channel\\\": \\\"#slackchannel\\\",\\n\\n    \\\"username\\\": \\\"Ansible\\\"\\n\\n}\\n\\n```\\n\\nNotification screenshot:\\n\\n\\n\\n![ansible-notification](https://cloud.githubusercontent.com/assets/3428087/20076519/649bbaf8-a541-11e6-80a8-2b8167f4029e.png)\\n\\n\\n\\nRecap output: https://gist.github.com/anonymous/f75e04a115ea86b730e41e2ef03cc5f0\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\nNo visual changes when running ansible, only notification in slack channel and gist with formated recap output\\n\\n```\", \n    \"title\": \"Added SlackGithub callback plugin\"\n  }, \n  \"18403\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /Users/jbradley/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nplugin/lookup/chef_databag\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.1.2.0\\r\\n  config file = /Users/jbradley/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThis is a lookup plugin to provide access to chef data bags using the pychef package. It interfaces with the chef server api using the same methods to find a knife or chef-client config file to load parameters from, starting from either the given base path or the current working directory. The lookup order mirrors the one from Chef, all folders in the base path are walked back looking for the following configuration file in order : .chef/knife.rb, ~/.chef/knife.rb, /etc/chef/client.rb\\r\\n\\r\\nRequires: pychef package: https://pychef.readthedocs.io `pip install pychef`\\r\\n\\r\\nUSAGE: `{{ lookup('chef_databag', 'name=data_bag_name item=data_bag_item') }}`\\r\\n\\r\\nExample use setfacts module to store hash of ldap servers from existing chef data bag\\r\\n```\\r\\n- name: setfacts | get data bag item from chef server\\r\\n  set_fact:\\r\\n    ldap_servers: \\\"{{ lookup('chef_databag', 'name=ldap item=ldap_servers') }}\\\"\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"plugin/lookup/chef_databag\", \n    \"component_raw\": \"plugin/lookup/chef_databag\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18403\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/lookup\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This is a lookup plugin to provide access to chef data bags using the pychef package. It interfaces with the chef server api using the same methods to find a knife or chef-client config file to load parameters from, starting from either the given base path or the current working directory. The lookup order mirrors the one from Chef, all folders in the base path are walked back looking for the following\", \n    \"title\": \"adding lookup plugin for chef_databags\"\n  }, \n  \"18411\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n- include_role\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nOS X 10.11.6, Ansible installed via pip\\r\\n\\r\\n##### SUMMARY\\r\\nUsing the `include_role` directive in conjunction with `with_items` will cause the the use of any handlers defined within the role to throw an unexpected exception.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```\\r\\n./playbook.yml\\r\\n\\n---\\r\\n- hosts: localhost\\r\\n  gather_facts: no\\r\\n  tasks:\\r\\n    - include_role:\\r\\n        name: handlertest\\r\\n      with_items: [1, 2]\\r\\n\\r\\n./roles/handlertest/tasks/main.yml\\r\\n\\n---\\r\\n- command: echo\\r\\n  notify: Some handler\\r\\n\\r\\n./roles/handlertest/handlers/main.yml\\r\\n\\n---\\r\\n- name: Some handler\\r\\n  command: echo foo\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nI was expecting the playbook to complete successfully, with the handler being invoked at least once.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nansible-playbook -vvvv playbook.yml\\r\\nNo config file found; using defaults\\r\\n [WARNING]: Host file not found: /etc/ansible/hosts\\r\\n\\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n\\r\\nLoading callback plugin default of type stdout, v2.0 from /usr/local/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc\\r\\n\\r\\nPLAYBOOK: playbook.yml *********************************************************\\r\\n1 plays in playbook.yml\\r\\n\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [include_role] ************************************************************\\r\\ntask path: /Users/xxx/workspace/xxx/playbook.yml:6\\r\\n\\r\\nTASK [handlertest : command] ***************************************************\\r\\ntask path: /Users/xxx/workspace/xxx/roles/handlertest/tasks/main.yml:3\\r\\nUsing module file /usr/local/lib/python2.7/site-packages/ansible/modules/core/commands/command.py\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: xxx\\r\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1478572148.78-187995060050975 `\\\" && echo ansible-tmp-1478572148.78-187995060050975=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1478572148.78-187995060050975 `\\\" ) && sleep 0'\\r\\n<127.0.0.1> PUT /var/folders/62/pqgvprd11fb4k6shw2pdzkqm0000gq/T/tmpGA2Gau TO /Users/xxx/.ansible/tmp/ansible-tmp-1478572148.78-187995060050975/command.py\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /Users/xxx/.ansible/tmp/ansible-tmp-1478572148.78-187995060050975/ /Users/xxx/.ansible/tmp/ansible-tmp-1478572148.78-187995060050975/command.py && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/local/opt/python/bin/python2.7 /Users/xxx/.ansible/tmp/ansible-tmp-1478572148.78-187995060050975/command.py; rm -rf \\\"/Users/xxx/.ansible/tmp/ansible-tmp-1478572148.78-187995060050975/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nERROR! Unexpected Exception: HANDLER: handlertest : Some handler\\r\\nthe full traceback was:\\r\\n\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/usr/local/bin/ansible-playbook\\\", line 103, in <module>\\r\\n    exit_code = cli.run()\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/ansible/cli/playbook.py\\\", line 159, in run\\r\\n    results = pbex.run()\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/ansible/executor/playbook_executor.py\\\", line 154, in run\\r\\n    result = self._tqm.run(play=play)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/ansible/executor/task_queue_manager.py\\\", line 282, in run\\r\\n    play_return = strategy.run(iterator, play_context)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/ansible/plugins/strategy/linear.py\\\", line 278, in run\\r\\n    results += self._wait_on_pending_results(iterator)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/ansible/plugins/strategy/__init__.py\\\", line 534, in _wait_on_pending_results\\r\\n    results = self._process_pending_results(iterator)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/ansible/plugins/strategy/__init__.py\\\", line 399, in _process_pending_results\\r\\n    if original_host not in self._notified_handlers[target_handler]:\\r\\nKeyError: HANDLER: handlertest : Some handler\\r\\n```\\r\\n\", \n    \"component_name\": \"include_role\", \n    \"component_raw\": \"- include_role\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18411\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/include_role.py\", \n    \"summary\": \"Using the `include_role` directive in conjunction with `with_items` will cause the the use of any handlers defined within the role to throw an unexpected exception.\", \n    \"title\": \"include_role with with_items causes unexpected exception for role handlers\"\n  }, \n  \"18414\": {\n    \"ansible_version\": \"TIANBO-M-P05Hsrc tianbo$ ansible --version\\nansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/task/feature -->\\r\\nansible-playbook\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nTIANBO-M-P05H:src tianbo$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nTIANBO-M-P05H:src tianbo$ cat /etc/ansible/ansible.cfg \\r\\n[defaults]\\r\\ntransport=paramiko\\r\\ntimeout=5\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nTIANBO-M-P05H:src tianbo$ uname -a\\r\\nDarwin TIANBO-M-P05H 15.6.0 Darwin Kernel Version 15.6.0: Mon Aug 29 20:21:34 PDT 2016; root:xnu-3248.60.11~1/RELEASE_X86_64 x86_64\\r\\n\\r\\nTIANBO-M-P05H:src tianbo$ pip list\\r\\nansible (2.2.0.0)\\r\\ncffi (1.8.3)\\r\\nclick (6.6)\\r\\ncryptography (1.5.2)\\r\\ndominate (2.2.1)\\r\\nenum34 (1.1.6)\\r\\nFlask (0.11.1)\\r\\nFlask-Admin (1.4.2)\\r\\nFlask-Bootstrap (3.3.6.0)\\r\\nFlask-HTTPAuth (3.1.2)\\r\\nFlask-SQLAlchemy (2.1)\\r\\nFlask-WTF (0.12)\\r\\nfunctools32 (3.2.3.post2)\\r\\ngitdb (0.6.4)\\r\\nGitPython (2.0.7)\\r\\ngraphviz (0.4.10)\\r\\nidna (2.1)\\r\\nipaddr (2.1.11)\\r\\nipaddress (1.0.17)\\r\\nitsdangerous (0.24)\\r\\nJinja2 (2.8)\\r\\njsonschema (2.5.1)\\r\\nMarkupSafe (0.23)\\r\\nnumpy (1.11.2)\\r\\nparamiko (2.0.2)\\r\\npip (9.0.1)\\r\\npy-radix (0.9.6)\\r\\npyaml (15.8.2)\\r\\npyasn1 (0.1.9)\\r\\npycparser (2.17)\\r\\npycrypto (2.6.1)\\r\\nPyMySQL (0.7.5)\\r\\nPyYAML (3.12)\\r\\nrequests (2.10.0)\\r\\nsetuptools (28.8.0)\\r\\nsix (1.10.0)\\r\\nsmmap (0.9.0)\\r\\nSQLAlchemy (1.1.0b2)\\r\\ntabulate (0.7.5)\\r\\nvirtualenv (15.0.2)\\r\\nvisitor (0.1.3)\\r\\nwebsocket-client (0.37.0)\\r\\nWerkzeug (0.11.10)\\r\\nwheel (0.29.0)\\r\\nWTForms (2.1)\\r\\nxlrd (1.0.0)\\r\\nxlwt (1.1.2)\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nI install ansible on mac OSX, using 'sudo pip install ansible'. Command ansible looks well, but there's something wrong when executing ansible-playbook.  \\r\\nThe error is:   \\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"paramiko is required but does not appear to be installed.  It can be installed using  `pip install paramiko`\\\"\\r\\nI uninstalled and reinstalled paramiko, cryptography, ansible many times, but it can not be solved.\\r\\n\\r\\nI checked the paramiko, which looks well. \\r\\nTIANBO-M-P05H:src tianbo$ python\\r\\nPython 2.7.11 (default, Jun 17 2016, 20:01:51) \\r\\n[GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin\\r\\nType \\\"help\\\", \\\"copyright\\\", \\\"credits\\\" or \\\"license\\\" for more information.\\r\\n >>>import paramiko\\r\\n >>>\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\nTIANBO-M-P05H:src tianbo$ ansible centos6.5 -m ping\\r\\ncentos6.5 | SUCCESS => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"ping\\\": \\\"pong\\\"\\r\\n}\\r\\n\\r\\nTIANBO-M-P05H:src tianbo$ cat show_clock.yaml\\r\\n\\n---\\r\\n- hosts: ext2\\r\\n  gather_facts: yes\\r\\n  connection: local\\r\\n\\r\\n  vars_prompt:\\r\\n  - name: \\\"mgmt_username\\\"\\r\\n    prompt: \\\"Username\\\"\\r\\n    private: no\\r\\n  - name: \\\"mgmt_password\\\"\\r\\n    prompt: \\\"Password\\\"\\r\\n\\r\\n  tasks:\\r\\n\\r\\n  - name: SYS | Define provider\\r\\n    set_fact:\\r\\n      provider:\\r\\n        host: \\\"{{ inventory_hostname }}\\\"\\r\\n        username: \\\"{{ mgmt_username }}\\\"\\r\\n        password: \\\"{{ mgmt_password }}\\\"\\r\\n\\r\\n  - name: IOS | Show clock\\r\\n    ios_command:\\r\\n      provider: \\\"{{ provider }}\\\"\\r\\n      commands:\\r\\n        - show clock\\r\\n    register: clock\\r\\n\\r\\n  - debug: msg=\\\"{{ clock.stdout }}\\\"\\r\\n\\r\\nTIANBO-M-P05H:src tianbo$ ansible-playbook show_clock.yaml \\r\\nUsername: cisco\\r\\nPassword: \\r\\n\\r\\nPLAY [ext2] ********************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [router2]\\r\\n\\r\\nTASK [SYS | Define provider] ***************************************************\\r\\nok: [router2]\\r\\n\\r\\nTASK [IOS | Show clock] ********************************************************\\r\\nfatal: [router2]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"paramiko is required but does not appear to be installed.  It can be installed using  `pip install paramiko`\\\"}\\r\\n\\tto retry, use: --limit @/Users/xiaobowu/Documents/PyProj/ansiblePrj/src/show_clock.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nrouter2                    : ok=2    changed=0    unreachable=0    failed=1 \\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"ansible-playbook\", \n    \"component_raw\": \"ansible-playbook\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18414\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I install ansible on mac OSX, using 'sudo pip install ansible'. Command ansible looks well, but there's something wrong when executing ansible-playbook.  \\n\\nThe error is:   \\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"paramiko is required but does not appear to be installed.  It can be installed using  `pip install paramiko`\\\"\\n\\nI uninstalled and reinstalled paramiko, cryptography, ansible many times, but it can not be solved.\\n\\n\\n\\nI checked the paramiko, which looks well. \\n\\nTIANBO-M-P05H:src tianbo$ python\\n\\nPython 2.7.11 (default, Jun 17 2016, 20:01:51) \\n\\n[GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin\\n\\nType \\\"help\\\", \\\"copyright\\\", \\\"credits\\\" or \\\"license\\\" for more information.\\n\\n >>>import paramiko\\n\\n >>>\", \n    \"title\": \"Error while executing ansible-playbook commands - \\\"failed\\\": true, \\\"msg\\\": \\\"ERROR! paramiko is not installed. It can be installed using  `pip install paramiko`\\\"\"\n  }, \n  \"18416\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/task/feature -->\\r\\ntask\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nRunning ansible-playbook with \\\"--diff\\\" adds more details to a register for a file that is templated, specifically I'm interested in ['diff']['after']\\r\\nI would like to have an option to always run a specific task with --diff - so that I can use the output of the --diff without having to always run with --diff.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\nWhat I need to run to get the --diff in the variable:\\r\\n```\\r\\nansible-playbook -i tests/inventory tests/test.yml -vvv -D --connection=local \\r\\n```\\r\\n\\r\\nWhat I would like to run:\\r\\n```\\r\\nansible-playbook -i tests/inventory tests/test.yml -vvv --connection=local \\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n```\\r\\nTASK [ansible-role-slurm : print reg_slurm_conf_template] **********************\\r\\n\\u001b[1;30mtask path: /ansible-role-slurm/tasks/common.yml:46\\u001b[0m\\r\\n\\u001b[0;32mok: [localhost] => {\\r\\n    \\\"reg_slurm_conf_template\\\": {\\r\\n        \\\"changed\\\": true, \\r\\n        \\\"checksum\\\": \\\"f1b303fe0833358e41f27949db4b7ae9eae665b5\\\", \\r\\n        \\\"dest\\\": \\\"/etc/slurm/slurm.conf\\\", \\r\\n        \\\"diff\\\": {\\r\\n            \\\"after\\\": \\\"# FGCI slurm.conf\\\\n# Example slurm.conf file. Please run configurator.html\\\\n# (in doc/html) to build a configuration file customized\\\\n# for your environment.\\\\n#\\\\n#\\\\n# slurm.conf file generated by configurator.html.\\\\n#\\\\n# See the slurm.conf man page for more information.\\\\n#\\\\nClusterName=io\\\\nControlMachine=2d6055600598\\\\nSlurmUser=slurm\\\\nSlurmctldPort=6817\\\\nSlurmdPort=6818\\\\nAuthType=auth/munge\\\\nStateSaveLocation=/opt/slurmdb/tmp\\\\nSwitchType=switch/none\\\\nMpiDefault=none\\\\nMpiParams=ports=12000-12999\\\\nSlurmctldPidFile=/var/run/slurmctld.pid\\\\nSlurmdPidFile=/var/run/slurmd.pid\\\\nProctrackType=proctrack/cgroup\\\\nCacheGroups=1\\\\nFirstJobId=2230000\\\\nReturnToService=1\\\\nMaxJobCount=30000\\\\nMaxArraySize=10001\\\\nPropagateResourceLimitsExcept=MEMLOCK\\\\nEnforcePartLimits=YES\\\\nEpilog=/usr/local/libexec/slurm/epilog.d/*\\\\nTaskEpilog=/usr/bin/epilog\\\\nTaskPlugin=task/cgroup\\\\nUsePAM=1\\\\nRebootProgram=/sbin/reboot\\\\nHealthCheckInterval=300\\\\nHealthCheckProgram=/usr/sbin/nhc\\\\nGresTypes=gpu\\\\n\\\\n# TIMERS\\\\nSlurmctldTimeout=300\\\\nSlurmdTimeout=600\\\\nInactiveLimit=0\\\\nMinJobAge=30\\\\nMessageTimeout=30\\\\nKillWait=30\\\\nCompleteWait=12\\\\nWaittime=0\\\\nKillOnBadExit=1\\\\nKeepAliveTime=60\\\\nOverTimeLimit=60\\\\n\\\\n# SCHEDULING\\\\nSchedulerType=sched/backfill\\\\nSchedulerParameters=bf_max_job_test=300,bf_max_job_part=200,bf_max_job_user=30,defer,bf_continue,bf_window=7200,bf_resolution=1800,pack_serial_at_end\\\\nSchedulerPort=7321\\\\nSelectType=select/cons_res\\\\nSelectTypeParameters=CR_Core_Memory\\\\nFastSchedule=2\\\\nPriorityType=priority/multifactor\\\\nPriorityFlags=FAIR_TREE,SMALL_RELATIVE_TO_TIME,MAX_TRES\\\\nPriorityDecayHalfLife=14-0\\\\nPriorityFavorSmall=NO\\\\nPriorityWeightFairshare=10000000\\\\nPriorityWeightAge=10000\\\\nPriorityWeightPartition=0\\\\nPriorityWeightJobSize=10000\\\\nPriorityWeightQOS=10000\\\\nPriorityMaxAge=7\\\\n\\\\n# LOGGING\\\\nSlurmctldDebug=3\\\\nSlurmdDebug=3\\\\nJobCompLoc=/var/log/slurm/slurm_jobcomp.log\\\\nJobCompType=jobcomp/filetxt\\\\n\\\\n# ACCOUNTING\\\\nJobAcctGatherType=jobacct_gather/linux\\\\nJobAcctGatherFrequency=energy=60,task=60\\\\nAcctGatherEnergyType=acct_gather_energy/rapl\\\\nAcctGatherNodeFreq=60\\\\nAccountingStorageType=accounting_storage/slurmdbd\\\\nAccountingStorageHost=2d6055600598\\\\nAccountingStorageLoc=slurm_acct_db\\\\nAccountingStorageUser=slurm\\\\nAccountingStorageEnforce=safe,qos\\\\nAccountingStorageTRES=gres/gpu:teslak80\\\\n\\\\n# TOPOLOGY\\\\n#TopologyPlugin=topology/tree\\\\n\\\\n# COMPUTE NODES\\\\nNodeName=2d6055600598 RealMemory=126000 Sockets=2 CoresPerSocket=12 ThreadsPerCore=2 State=UNKNOWN\\\\n# If slurm_with_gpu is True then add some nodes and a partition for them.\\\\nNodeName=gpu Gres=gpu:teslak80:8 RealMemory=126000 Sockets=2 CoresPerSocket=12 ThreadsPerCore=2 State=UNKNOWN\\\\n\\\\n# partitions\\\\nPartitionName=normal Nodes=2d6055600598,gpu Default=YES MaxTime=7-00:00:00 State=UP DefaultTime=2:00:00\\\\nPartitionName=test Nodes=2d6055600598 Default=NO MaxTime=7-00:00:00 State=UP DefaultTime=2:00:00\\\\nPartitionName=grid Nodes=2d6055600598 Default=NO MaxTime=7-00:00:00 State=UP DefaultTime=2:00:00\\\\n\\\\n# Slurm Extra Parameters\\\\nTrackWCKey=no\\\\nTreeWidth=50\\\\n\\\", \\r\\n            \\\"after_header\\\": \\\"dynamically generated\\\", \\r\\n            \\\"before\\\": \\\"\\\"\\r\\n        }, \\r\\n        \\\"gid\\\": 0, \\r\\n        \\\"group\\\": \\\"root\\\", \\r\\n        \\\"md5sum\\\": \\\"fdcc9f5b68ca61e9c47a568ccab5ea1a\\\", \\r\\n        \\\"mode\\\": \\\"0644\\\", \\r\\n        \\\"owner\\\": \\\"root\\\", \\r\\n        \\\"size\\\": 2904, \\r\\n        \\\"src\\\": \\\"/root/.ansible/tmp/ansible-tmp-1478504807.2-247995833558548/source\\\", \\r\\n        \\\"state\\\": \\\"file\\\", \\r\\n        \\\"uid\\\": 0\\r\\n    }\\r\\n}\\u001b[0m\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [ansible-role-slurm : print reg_slurm_conf_template] **********************\\r\\n\\u001b[1;30mtask path: /ansible-role-slurm/tasks/common.yml:46\\u001b[0m\\r\\n\\u001b[0;32mok: [localhost] => {\\r\\n    \\\"reg_slurm_conf_template\\\": {\\r\\n        \\\"changed\\\": true, \\r\\n        \\\"checksum\\\": \\\"5bf543fe263067447526f43977ab7d395abc61a9\\\", \\r\\n        \\\"dest\\\": \\\"/etc/slurm/slurm.conf\\\", \\r\\n        \\\"gid\\\": 0, \\r\\n        \\\"group\\\": \\\"root\\\", \\r\\n        \\\"md5sum\\\": \\\"4c30b7ad45fb426a101e9f1fe4bbb0df\\\", \\r\\n        \\\"mode\\\": \\\"0644\\\", \\r\\n        \\\"owner\\\": \\\"root\\\", \\r\\n        \\\"size\\\": 2904, \\r\\n        \\\"src\\\": \\\"/root/.ansible/tmp/ansible-tmp-1478500886.03-211443945610238/source\\\", \\r\\n        \\\"state\\\": \\\"file\\\", \\r\\n        \\\"uid\\\": 0\\r\\n    }\\r\\n}\\u001b[0m\\r\\n```\\r\\n\", \n    \"component_name\": \"task\", \n    \"component_raw\": \"task\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18416\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Running ansible-playbook with \\\"--diff\\\" adds more details to a register for a file that is templated, specifically I'm interested in ['diff']['after']\\n\\nI would like to have an option to always run a specific task with --diff - so that I can use the output of the --diff without having to always run with --diff.\", \n    \"title\": \"Always run a task with --diff\"\n  }, \n  \"18417\": {\n    \"ansible_version\": \"ansible-playbook 2.2.0.0 (maint2.2 caba50c778) last updated 2016/11/08 100751 (GMT +200)\\nlib/ansible/modules/core (maint2.2 164225aa43) last updated 2016/11/08 100717 (GMT +200)\\nlib/ansible/modules/extras (maint2.2 18bb736cc2) last updated 2016/11/08 100737 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwith_first_found\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible-playbook 2.2.0.0 (maint2.2 caba50c778) last updated 2016/11/08 10:07:51 (GMT +200)\\r\\n  lib/ansible/modules/core: (maint2.2 164225aa43) last updated 2016/11/08 10:07:17 (GMT +200)\\r\\n  lib/ansible/modules/extras: (maint2.2 18bb736cc2) last updated 2016/11/08 10:07:37 (GMT +200)\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nwith_first_found search incorrectly also inside parent role, i.e:\\r\\n\\r\\n* role aa depends on role bb\\r\\n* with_first_found used in role bb\\r\\n* with_first_found search files in roles/aa/vars/\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```\\r\\nansible-playbook -i hosts with_first_found.yml\\r\\n```\\r\\n\\r\\n```\\r\\n==> with_first_found.yml <==\\r\\n\\n---\\r\\n- hosts: all\\r\\n  connection: local\\r\\n  gather_facts: no\\r\\n  roles:\\r\\n    - role: aa\\r\\n\\r\\n==> roles/aa/meta/main.yml <==\\r\\n\\n---\\r\\ndependencies:\\r\\n  - role: bb\\r\\n\\r\\n==> roles/aa/vars/first.yml <==\\r\\n\\n---\\r\\n\\r\\n==> roles/bb/tasks/main.yml <==\\r\\n\\n---\\r\\n- include_vars: \\\"{{item}}\\\"\\r\\n  with_first_found:\\r\\n   - first.yml\\r\\n   - default.yml\\r\\n\\r\\n==> roles/bb/vars/default.yml <==\\r\\n\\n---\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n```\\r\\nPLAY [all] *********************************************************************\\r\\n\\r\\nTASK [bb : include_vars] *******************************************************\\r\\nok: [localhost] => (item=/roles/bb/vars/default.yml)\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=0\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nPLAY [all] *********************************************************************\\r\\n\\r\\nTASK [bb : include_vars] *******************************************************\\r\\nok: [localhost] => (item=/roles/aa/vars/first.yml)\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=0\\r\\n```\\r\\n\", \n    \"component_name\": \"with_first_found\", \n    \"component_raw\": \"with_first_found\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18417\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"with_first_found search incorrectly also inside parent role, i.e:\\n\\n\\n\\n* role aa depends on role bb\\n\\n* with_first_found used in role bb\\n\\n* with_first_found search files in roles/aa/vars/\", \n    \"title\": \"with_first_found search in parent role\"\n  }, \n  \"18419\": {\n    \"ansible_version\": \"ansible 2.3.0 (feature/add_filter/to_int 32aaf298a5) last updated 2016/11/08 142318 (GMT +200)\\nlib/ansible/modules/core (detached HEAD 2584fca0ae) last updated 2016/11/08 134214 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD a1dcbf9ce5) last updated 2016/11/08 134217 (GMT +200)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n`to_int`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 (feature/add_filter/to_int 32aaf298a5) last updated 2016/11/08 14:23:18 (GMT +200)\\r\\n  lib/ansible/modules/core: (detached HEAD 2584fca0ae) last updated 2016/11/08 13:42:14 (GMT +200)\\r\\n  lib/ansible/modules/extras: (detached HEAD a1dcbf9ce5) last updated 2016/11/08 13:42:17 (GMT +200)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\n`to_int` works on recursive data structure, it will convert everything that can be to integers (keeping the rest identical).\\r\\n\\r\\nIt's useful when you have a dictionary or array of things (string or nested arrays/dictionaries) and want everything inside those to be integers. The same idea can be applied to `to_bool`, `to_*` converters if it's useful to others.\", \n    \"component_name\": \"to_int\", \n    \"component_raw\": \"`to_int`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18419\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/filter\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"`to_int` works on recursive data structure, it will convert everything that can be to integers (keeping the rest identical).\\n\\n\\n\\nIt's useful when you have a dictionary or array of things (string or nested arrays/dictionaries) and want everything inside those to be integers. The same idea can be applied to `to_bool`, `to_*` converters if it's useful to others.\", \n    \"title\": \"Add 'to_int' jinja2 filter\"\n  }, \n  \"18430\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nfirst_found lookup\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nDefaults\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nDebian Jessie 64 GNU/Linux\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThe `first_found` lookup requires different path than `with_first_found` when looking for the same file. For testing I use template module with `lookup('first_found')` used in `src` and `with_first_found` loop.\\r\\n\\r\\n```\\r\\nExcerpt from first task:\\r\\n  src: \\\"{{ item }}\\\"\\r\\n  with_first_found:\\r\\n    - files: user/user.conf.j2\\r\\n\\r\\nExceprt from second task:\\r\\n  src: \\\"{{ lookup('first_found', ['user/user.conf.j2']) }}\\\"\\r\\n```\\r\\n\\r\\nIt works in Ansible 2.1. For Ansible 2.2 second task requires path change to `../templates/user/user.conf.j2`. My guess is that it looks for the file in current directory i.e. `tasks/` not in `templates/`.\\r\\n\\r\\nI am reporting this as bug because it worked in previous version of Ansible but it might be intentional.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nplaybook.yml:\\r\\n```\\r\\n\\n---\\r\\n- hosts: localhost\\r\\n  roles:\\r\\n    - test-role\\r\\n```\\r\\n\\r\\ntest-role:\\r\\n\\r\\ntasks/main.yml:\\r\\n```\\r\\n\\n---\\r\\n- name: Copy user.conf file using with_first_found\\r\\n  template:\\r\\n     src: \\\"{{ item }}\\\"\\r\\n     dest: /tmp/user.conf\\r\\n  with_first_found:\\r\\n    - files: user/user.conf.j2\\r\\n\\r\\n- name: Copy user.conf using first_found\\r\\n  template:\\r\\n    src: \\\"{{ lookup('first_found', ['user/user.conf.j2']) }}\\\"\\r\\n    dest: /tmp/user.conf\\r\\n```\\r\\n\\r\\ntemplates/user/user.conf.j2:\\r\\n```\\r\\n# user.conf file\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nWorks in Ansible 2.1:\\r\\n\\r\\n```\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [test-role : Copy user.conf file with_first_found] ************************\\r\\nok: [localhost] => (item=/home/ansible/roles/test-role/templates/user/user.conf.j2)\\r\\n\\r\\nTASK [test-role : Copy user.conf file first_found] *****************************\\r\\nok: [localhost]\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=2    changed=0    unreachable=0    failed=0\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nIn Ansible 2.2 path in second task requires change to `../templates/user/user.conf.j2`.\\r\\n\\r\\n```\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [test-role : Copy user.conf file with_first_found] ************************\\r\\nok: [localhost] => (item=/home/ansible/roles/test-role/templates/user/user.conf.j2)\\r\\n\\r\\nTASK [test-role : Copy user.conf file first_found] *****************************\\r\\nfatal: [localhost]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"No file was found when using with_first_found. Use the 'skip: true' option to allow this task to be skipped if no files are found\\\"}\\r\\n\\r\\nmsg: No file was found when using with_first_found. Use the 'skip: true' option to allow this task to be skipped if no files are found\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=2    changed=0    unreachable=0    failed=1\\r\\n```\\r\\n\", \n    \"component_name\": \"first_found lookup\", \n    \"component_raw\": \"first_found lookup\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18430\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The `first_found` lookup requires different path than `with_first_found` when looking for the same file. For testing I use template module with `lookup('first_found')` used in `src` and `with_first_found` loop.\\n\\n\\n\\n```\\n\\nExcerpt from first task:\\n\\n  src: \\\"{{ item }}\\\"\\n\\n  with_first_found:\\n\\n    - files: user/user.conf.j2\\n\\n\\n\\nExceprt from second task:\\n\\n  src: \\\"{{ lookup('first_found', ['user/user.conf.j2']) }}\\\"\\n\\n```\\n\\n\\n\\nIt works in Ansible 2.1. For Ansible 2.2 second task requires path change to `../templates/user/user.conf.j2`. My guess is that it looks for the file in current directory i.e. `tasks/` not in `templates/`.\\n\\n\\n\\nI am reporting this as bug because it worked in previous version of Ansible but it might be intentional.\", \n    \"title\": \"first_found lookup path differs from with_first_found\"\n  }, \n  \"18437\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel 4dddea69c2) last updated 2016/11/09 163300 (GMT +300)\\nlib/ansible/modules/core  not found - use git submodule update --init lib/ansible/modules/core\\nlib/ansible/modules/extras  not found - use git submodule update --init lib/ansible/modules/extras\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nrabbitmq utils\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0 (devel 4dddea69c2) last updated 2016/11/09 16:33:00 (GMT +300)\\r\\n  lib/ansible/modules/core:  not found - use git submodule update --init lib/ansible/modules/core\\r\\n  lib/ansible/modules/extras:  not found - use git submodule update --init lib/ansible/modules/extras\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThese files complement PR ansible/ansible-modules-extras#2872\\r\\n\\r\\n\", \n    \"component_name\": \"rabbitmq utils\", \n    \"component_raw\": \"rabbitmq utils\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18437\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"feature\", \n      \"module_util\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"These files complement PR ansible/ansible-modules-extras#2872\", \n    \"title\": \"Add utils for rabbitmq modules.\"\n  }, \n  \"18438\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/task/feature -->\\r\\n- WinRM connection (PSRemoting)\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nout of the box\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\ndebian\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nI'm deploying Windows softwares with Ansible, and ran into this problem : \\r\\nI wrote a PS1 script that downloads and extracts files from a web server. There's 20 softwares, weighing about 7Go in total. When everything is extracted, it weighs 15.3 Go. Now, the script is flawless on itself, so the problem definitely comes from the connection mechanism between windows and ansible. Now, for the problem...\\r\\nI call the script using the `script` module, and it always fail the first time, **after approx. 80 seconds**. On the remode node, there are some downloaded files and extracted ones, so it IS working. I am getting this error (whole stderr output) : \\r\\n```\\r\\n[localhost] The background process closed or ended abnormally.\\r\\n+ CategoryInfo          : OpenError: (localhost:String) [], PSRemotingTransportException\\r\\n+ FullyQualifiedErrorId : 2101,PSSessionStateBroken\\r\\n[localhost] The background process closed or ended abnormally.\\r\\n+ CategoryInfo          : OpenError: (localhost:String) [], PSRemotingTransportException\\r\\n+ FullyQualifiedErrorId : 2101,PSSessionStateBroken\\r\\n[localhost] The background process closed or ended abnormally.\\r\\n+ CategoryInfo          : OpenError: (localhost:String) [], PSRemotingTransportException\\r\\n+ FullyQualifiedErrorId : 2101,PSSessionStateBroken\\r\\n```\\r\\nStrangely, if I run the script again, using the same command, it will complete normally (my script doing what it already did) and take more time : about five minutes. No stderr output, all the files are on the node. So my solution for now is to run it twice, maybe three times just to make sure.\\r\\n\\r\\nIt looks weird to me. Powershell errors are really hard to understand, and having already searching for days about PSSessionBroken, I don't remember seeing something like this... \\r\\n### _Could it have something to do with the amount of output produced ?_ \\r\\nMy script is very verbose, and when it fails through, I have a single-line, ~19 000 characters long stdout which doesn't look truncated. When it succeeds, it produces less output (around 15 000 characters, it varies), because as some files are already here it just goes over them, doing nothing.\\r\\n\\r\\nThanks for having a look at this... \\r\\nFuriml\", \n    \"component_name\": \"winrm connection (psremoting)\", \n    \"component_raw\": \"- WinRM connection (PSRemoting)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18438\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"windows\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I'm deploying Windows softwares with Ansible, and ran into this problem : \\n\\nI wrote a PS1 script that downloads and extracts files from a web server. There's 20 softwares, weighing about 7Go in total. When everything is extracted, it weighs 15.3 Go. Now, the script is flawless on itself, so the problem definitely comes from the connection mechanism between windows and ansible. Now, for the problem...\\n\\nI call the script using the `script` module, and it always fail the first time, **after approx. 80 seconds**. On the remode node, there are some downloaded files and extracted ones, so it IS working. I am getting this error (whole stderr output) : \\n\\n```\\n\\n[localhost] The background process closed or ended abnormally.\\n\\n+ CategoryInfo          : OpenError: (localhost:String) [], PSRemotingTransportException\\n\\n+ FullyQualifiedErrorId : 2101,PSSessionStateBroken\\n\\n[localhost] The background process closed or ended abnormally.\\n\\n+ CategoryInfo          : OpenError: (localhost:String) [], PSRemotingTransportException\\n\\n+ FullyQualifiedErrorId : 2101,PSSessionStateBroken\\n\\n[localhost] The background process closed or ended abnormally.\\n\\n+ CategoryInfo          : OpenError: (localhost:String) [], PSRemotingTransportException\\n\\n+ FullyQualifiedErrorId : 2101,PSSessionStateBroken\\n\\n```\\n\\nStrangely, if I run the script again, using the same command, it will complete normally (my script doing what it already did) and take more time : about five minutes. No stderr output, all the files are on the node. So my solution for now is to run it twice, maybe three times just to make sure.\\n\\n\\n\\nIt looks weird to me. Powershell errors are really hard to understand, and having already searching for days about PSSessionBroken, I don't remember seeing something like this... \\n\\n### _Could it have something to do with the amount of output produced ?_ \\n\\nMy script is very verbose, and when it fails through, I have a single-line, ~19 000 characters long stdout which doesn't look truncated. When it succeeds, it produces less output (around 15 000 characters, it varies), because as some files are already here it just goes over them, doing nothing.\\n\\n\\n\\nThanks for having a look at this... \\n\\nFuriml\", \n    \"title\": \"Launching big remote script fails (too much output ?)\"\n  }, \n  \"18443\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 9aa857cf4b) last updated 2016/11/09 190150 (GMT +100)\\nlib/ansible/modules/core (detached HEAD 2584fca0ae) last updated 2016/11/09 193228 (GMT +100)\\nlib/ansible/modules/extras (detached HEAD a1dcbf9ce5) last updated 2016/11/09 193235 (GMT +100)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nplugin/filters/mathstuff\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel 9aa857cf4b) last updated 2016/11/09 19:01:50 (GMT +100)\\r\\n  lib/ansible/modules/core: (detached HEAD 2584fca0ae) last updated 2016/11/09 19:32:28 (GMT +100)\\r\\n  lib/ansible/modules/extras: (detached HEAD a1dcbf9ce5) last updated 2016/11/09 19:32:35 (GMT +100)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThe math functions are very nice and useful but can be hard and painful if perchance the incoming data sttructure is a dictionary rather than a list.  These two functions make that transition painless, making the mathstuff functions more accessible.\\r\\n\\r\\nThe functions work equally on dictionaries and lists - special cases cause pain so the API is intended to be intuitive, simple and just do the right thing.\", \n    \"component_name\": \"plugin/filters/mathstuff\", \n    \"component_raw\": \"plugin/filters/mathstuff\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18443\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/filter\", \n      \"docs\", \n      \"feature\", \n      \"needs_info\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The math functions are very nice and useful but can be hard and painful if perchance the incoming data sttructure is a dictionary rather than a list.  These two functions make that transition painless, making the mathstuff functions more accessible.\\n\\n\\n\\nThe functions work equally on dictionaries and lists - special cases cause pain so the API is intended to be intuitive, simple and just do the right thing.\", \n    \"title\": \"+= keys and values filters\"\n  }, \n  \"18445\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\nfacts\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n\\r\\n\", \n    \"component_name\": \"facts\", \n    \"component_raw\": \"facts\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18445\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:constants\", \n      \"c:executor/task_executor\", \n      \"c:plugins/action\", \n      \"docs\", \n      \"feature\", \n      \"in progress\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"\", \n    \"title\": \"namespace facts\"\n  }, \n  \"18453\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nRunning From Source\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n`pycrypto` not listed in the Python package requirements list\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n1. Read https://docs.ansible.com/ansible/intro_installation.html#running-from-source\\r\\n2. Install the Python dependencies:\\r\\n    ```\\r\\n    $ sudo pip install paramiko PyYAML Jinja2 httplib2 six\\r\\n    ```\\r\\n3. Run the last confirmation step:\\r\\n    ```\\r\\n    $ ansible all -m ping --ask-pass\\r\\n    ```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n```\\r\\n127.0.0.1 | SUCCESS => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"ping\\\": \\\"pong\\\"\\r\\n}\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: DistributionNotFound: The 'pycrypto>=2.6' distribution was not found and is required by ansible\\r\\n127.0.0.1 | FAILED! => {\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"msg\\\": \\\"Unexpected failure during module execution.\\\",\\r\\n    \\\"stdout\\\": \\\"\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"running from source\", \n    \"component_raw\": \"Running From Source\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18453\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"`pycrypto` not listed in the Python package requirements list\", \n    \"title\": \"pycrypto not listed in the Python package requirements list\"\n  }, \n  \"18454\": {\n    \"ansible_version\": \"Tested against current devel branch.\\nansible-playbook --version\\nansible-playbook 2.3.0 (feature/add-follow-to-template-action 36b7db8fc5) last updated 2016/11/10 170811 (GMT +200)\\nlib/ansible/modules/core (detached HEAD 2584fca0ae) last updated 2016/11/10 120713 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD a1dcbf9ce5) last updated 2016/11/10 120719 (GMT +200)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nAction: `template`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\nTested against current devel branch.\\r\\n\\r\\n```\\r\\nansible-playbook --version\\r\\nansible-playbook 2.3.0 (feature/add-follow-to-template-action 36b7db8fc5) last updated 2016/11/10 17:08:11 (GMT +200)\\r\\n  lib/ansible/modules/core: (detached HEAD 2584fca0ae) last updated 2016/11/10 12:07:13 (GMT +200)\\r\\n  lib/ansible/modules/extras: (detached HEAD a1dcbf9ce5) last updated 2016/11/10 12:07:19 (GMT +200)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nThis PR introduces the `follow` option to the `template` action plugin. The desired behaviour as reported in #14469 is the same as of the `copy` and `file` module, since this action plugin just relies on these modules. This means, if this template is applied to a link with `follow` set to `False` then the link will be converted to a regular file containing the template content. \\r\\n\\r\\nFixes #14469 \\r\\n\\r\\nUsing this playbook:\\r\\n```\\r\\n- hosts: all\\r\\n  vars:\\r\\n    greetings: \\\"Hello f*ck*ng hell!\\\"\\r\\n  tasks: \\r\\n    - name: test\\r\\n      template: \\r\\n        src: \\\"test\\\"\\r\\n        dest: \\\"/tmp/link\\\"\\r\\n        follow: False\\r\\n```\\r\\n\\r\\n... and this template file:\\r\\n```\\r\\n{{ greetings }}\\r\\n```\\r\\n\\r\\nThe following output describes the new behaviour:\\r\\n```\\r\\n$ echo \\\"Hello World\\\" > /tmp/source\\r\\n$ ln -fs /tmp/source /tmp/link\\r\\n\\r\\n$ ls -la /tmp/link \\r\\nlrwxrwxrwx 1 foo foo 11 Nov 10 17:18 /tmp/link -> /tmp/source\\r\\n\\r\\n$ ansible-playbook -i inventory test.yml  -v\\r\\nUsing /etc/ansible/ansible.cfg as config file\\r\\n\\r\\nPLAY [all] *******************************************************************************************\\r\\n\\r\\nTASK [Gathering Facts] *******************************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [test] ******************************************************************************************\\r\\nchanged: [localhost] => {\\\"changed\\\": true, \\\"checksum\\\": \\\"7bc2660f74cfd11b442505e28b54be611cc013cd\\\", \\\"dest\\\": \\\"/tmp/link\\\", \\\"gid\\\": 1000, \\\"group\\\": \\\"fd\\\", \\\"md5sum\\\": \\\"6ecc0909e828485c6363d203942f580e\\\", \\\"mode\\\": \\\"0664\\\", \\\"owner\\\": \\\"fd\\\", \\\"size\\\": 26, \\\"src\\\": \\\"/home/fd/.ansible/tmp/ansible-tmp-1478794956.02-5427137697491/source\\\", \\\"state\\\": \\\"file\\\", \\\"uid\\\": 1000}\\r\\n\\r\\nPLAY RECAP *******************************************************************************************\\r\\nlocalhost                  : ok=2    changed=1    unreachable=0    failed=0 \\r\\n\\r\\n$ ls -la /tmp/link\\r\\n-rw-rw-r-- 1 foo foo 26 Nov 10 17:22 /tmp/link\\r\\n\\r\\n$ cat /tmp/link\\r\\nHello f*ck*ng hell!\\r\\n```\\r\\n\\r\\nWhereas the default of this parameter is `True` to retain backward compatibility.\", \n    \"component_name\": \"action template\", \n    \"component_raw\": \"Action: `template`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18454\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/action\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This PR introduces the `follow` option to the `template` action plugin. The desired behaviour as reported in #14469 is the same as of the `copy` and `file` module, since this action plugin just relies on these modules. This means, if this template is applied to a link with `follow` set to `False` then the link will be converted to a regular file containing the template content. \\n\\n\\n\\nFixes #14469 \\n\\n\\n\\nUsing this playbook:\\n\\n```\\n\\n- hosts: all\\n\\n  vars:\\n\\n    greetings: \\\"Hello f*ck*ng hell!\\\"\\n\\n  tasks: \\n\\n    - name: test\\n\\n      template: \\n\\n        src: \\\"test\\\"\\n\\n        dest: \\\"/tmp/link\\\"\\n\\n        follow: False\\n\\n```\\n\\n\\n\\n... and this template file:\\n\\n```\\n\\n{{ greetings }}\\n\\n```\\n\\n\\n\\nThe following output describes the new behaviour:\\n\\n```\\n\\n$ echo \\\"Hello World\\\" > /tmp/source\\n\\n$ ln -fs /tmp/source /tmp/link\\n\\n\\n\\n$ ls -la /tmp/link \\n\\nlrwxrwxrwx 1 foo foo 11 Nov 10 17:18 /tmp/link -> /tmp/source\\n\\n\\n\\n$ ansible-playbook -i inventory test.yml  -v\\n\\nUsing /etc/ansible/ansible.cfg as config file\\n\\n\\n\\nPLAY [all] *******************************************************************************************\\n\\n\\n\\nTASK [Gathering Facts] *******************************************************************************\\n\\nok: [localhost]\\n\\n\\n\\nTASK [test] ******************************************************************************************\\n\\nchanged: [localhost] => {\\\"changed\\\": true, \\\"checksum\\\": \\\"7bc2660f74cfd11b442505e28b54be611cc013cd\\\", \\\"dest\\\": \\\"/tmp/link\\\", \\\"gid\\\": 1000, \\\"group\\\": \\\"fd\\\", \\\"md5sum\\\": \\\"6ecc0909e828485c6363d203942f580e\\\", \\\"mode\\\": \\\"0664\\\", \\\"owner\\\": \\\"fd\\\", \\\"size\\\": 26, \\\"src\\\": \\\"/home/fd/.ansible/tmp/ansible-tmp-1478794956.02-5427137697491/source\\\", \\\"state\\\": \\\"file\\\", \\\"uid\\\": 1000}\\n\\n\\n\\nPLAY RECAP *******************************************************************************************\\n\\nlocalhost                  : ok=2    changed=1    unreachable=0    failed=0 \\n\\n\\n\\n$ ls -la /tmp/link\\n\\n-rw-rw-r-- 1 foo foo 26 Nov 10 17:22 /tmp/link\\n\\n\\n\\n$ cat /tmp/link\\n\\nHello f*ck*ng hell!\\n\\n```\\n\\n\\n\\nWhereas the default of this parameter is `True` to retain backward compatibility.\", \n    \"title\": \"Adds `follow` parameter to `template` action\"\n  }, \n  \"18459\": {\n    \"ansible_version\": \"$ dpkg -l ansible\\nDesired=Unknown/Install/Remove/Purge/Hold\\n| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend\\n|/ Err?=(none)/Reinst-required (StatusErr uppercase=bad)\\n||/ Name           Version      Architecture Description\\n+++-==============-============-============-=================================\\nii  ansible        2.2.0.0-1ppa all          A radically simple IT automation\\n$ ansible --version\\nansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvars_plugins\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n$ dpkg -l ansible\\r\\nDesired=Unknown/Install/Remove/Purge/Hold\\r\\n| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend\\r\\n|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)\\r\\n||/ Name           Version      Architecture Description\\r\\n+++-==============-============-============-=================================\\r\\nii  ansible        2.2.0.0-1ppa all          A radically simple IT automation \\r\\n\\r\\n$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nWorking on creating a vars plugin and discovered that in 2.2.0.0, the plugin is not getting any group vars. Downgrading to **2.1.0.0**, and the plugin can get data via `host.get_group_vars()`. I think this is potentially related to #15493 \\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nSimple single host inventory with the following `group_vars/all`\\r\\n```\\r\\ntest:\\r\\n  - a\\r\\n```\\r\\n\\r\\nCreate the following simple vars_plugin at `vars_plugins` in the root of my working directory:\\r\\n```python\\r\\nfrom __future__ import (absolute_import, division, print_function)\\r\\n__metaclass__ = type\\r\\n\\r\\n\\r\\nclass VarsModule(object):\\r\\n\\r\\n    \\\"\\\"\\\"\\r\\n    Loads variables for groups and / or hosts\\r\\n\\r\\n    \\\"\\\"\\\"\\r\\n\\r\\n    def __init__(self, inventory):\\r\\n        self.inventory = inventory\\r\\n        self.inventory_basedir = inventory.basedir()\\r\\n\\r\\n    def append_test(self, groupvars):\\r\\n        results = {}\\r\\n        if 'test' in groupvars:\\r\\n            results.update({'test_plugin': 'yes'})\\r\\n\\r\\n        return results\\r\\n\\r\\n    def get_host_vars(self, host, vault_password=None):\\r\\n        \\\"\\\"\\\" Get host specific variables. \\\"\\\"\\\"\\r\\n        return self.append_test(host.get_group_vars())\\r\\n```\\r\\n\\r\\nAnd update `ansible.cfg` with\\r\\n```ini\\r\\n[defaults]\\r\\n...\\r\\nvars_plugins = vars_plugins\\r\\n```\\r\\n\\r\\nThen I test with the following command:\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```bash\\r\\nansible -m debug -a \\\"var=hostvars[inventory_hostname]\\\" all\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nI expect the vars_plugin to add what I wanted like so:\\r\\n```bash\\r\\n$ ansible -m debug -a \\\"var=hostvars[inventory_hostname]\\\" all -vvvv\\r\\nUsing /vagrant/test/ansible.cfg as config file\\r\\nLoaded callback minimal of type stdout, v2.0\\r\\ntest1.vagrant | SUCCESS => {\\r\\n    \\\"hostvars[inventory_hostname]\\\": {\\r\\n        \\\"ansible_check_mode\\\": false, \\r\\n        \\\"ansible_version\\\": {\\r\\n            \\\"full\\\": \\\"2.1.0.0\\\", \\r\\n            \\\"major\\\": 2, \\r\\n            \\\"minor\\\": 1, \\r\\n            \\\"revision\\\": 0, \\r\\n            \\\"string\\\": \\\"2.1.0.0\\\"\\r\\n        }, \\r\\n        \\\"group_names\\\": [\\r\\n            \\\"ungrouped\\\"\\r\\n        ], \\r\\n        \\\"groups\\\": {\\r\\n            \\\"all\\\": [\\r\\n                \\\"test1.vagrant\\\"\\r\\n            ], \\r\\n            \\\"ungrouped\\\": [\\r\\n                \\\"test1.vagrant\\\"\\r\\n            ]\\r\\n        }, \\r\\n        \\\"inventory_dir\\\": \\\"/vagrant/test/inventory/vagrant\\\", \\r\\n        \\\"inventory_file\\\": null, \\r\\n        \\\"inventory_hostname\\\": \\\"test1.vagrant\\\", \\r\\n        \\\"inventory_hostname_short\\\": \\\"test1\\\", \\r\\n        \\\"omit\\\": \\\"__omit_place_holder__c1b35db14631b948fefe0c3827f517cea304164c\\\", \\r\\n        \\\"playbook_dir\\\": \\\".\\\", \\r\\n        \\\"test\\\": [\\r\\n            \\\"a\\\"\\r\\n        ], \\r\\n        \\\"test_plugin\\\": \\\"yes\\\"\\r\\n    }\\r\\n}\\r\\n```\\r\\n\\r\\nI downgraded from 2.2 step by step down to 2.1 and found all versions after **2.1.0.0** have this issue.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```bash\\r\\n$ ansible -m debug -a \\\"var=hostvars[inventory_hostname]\\\" all -vvvv\\r\\nUsing /vagrant/test/ansible.cfg as config file\\r\\nLoading callback plugin minimal of type stdout, v2.0 from /usr/lib/python2.7/dist-packages/ansible/plugins/callback/__init__.pyc\\r\\ntest1.vagrant | SUCCESS => {\\r\\n    \\\"hostvars[inventory_hostname]\\\": {\\r\\n        \\\"ansible_check_mode\\\": false, \\r\\n        \\\"ansible_version\\\": {\\r\\n            \\\"full\\\": \\\"2.2.0.0\\\", \\r\\n            \\\"major\\\": 2, \\r\\n            \\\"minor\\\": 2, \\r\\n            \\\"revision\\\": 0, \\r\\n            \\\"string\\\": \\\"2.2.0.0\\\"\\r\\n        },  \\r\\n        \\\"group_names\\\": [\\r\\n            \\\"ungrouped\\\"\\r\\n        ], \\r\\n        \\\"groups\\\": {\\r\\n            \\\"all\\\": [\\r\\n                \\\"test1.vagrant\\\"\\r\\n            ], \\r\\n            \\\"ungrouped\\\": [\\r\\n                \\\"test1.vagrant\\\"\\r\\n            ]\\r\\n        }, \\r\\n        \\\"inventory_dir\\\": \\\"/vagrant/test/inventory/vagrant\\\", \\r\\n        \\\"inventory_file\\\": null, \\r\\n        \\\"inventory_hostname\\\": \\\"test1.vagrant\\\", \\r\\n        \\\"inventory_hostname_short\\\": \\\"test1\\\", \\r\\n        \\\"omit\\\": \\\"__omit_place_holder__857b85a3093a239f7cbe078c9c82877e33561bcd\\\", \\r\\n        \\\"playbook_dir\\\": \\\".\\\", \\r\\n        \\\"test\\\": [\\r\\n            \\\"a\\\"\\r\\n        ]\\r\\n    }\\r\\n}\\r\\n```\", \n    \"component_name\": \"vars_plugins\", \n    \"component_raw\": \"vars_plugins\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18459\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"c:plugins/vars\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Working on creating a vars plugin and discovered that in 2.2.0.0, the plugin is not getting any group vars. Downgrading to **2.1.0.0**, and the plugin can get data via `host.get_group_vars()`. I think this is potentially related to #15493\", \n    \"title\": \"Group vars not passed into vars_plugins\"\n  }, \n  \"18460\": {\n    \"ansible_version\": \"ansible 2.1.2.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nExtensible strategy plugin\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.1.2.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nDuring deployment of OpenStack with Ansible, we faced issue of having multiple people reusing our playbook for different use-cases. That also added requirement to support multiple different technologies in Kolla tree, but at the long run it's not possible. We need to allow people to modify playbooks to suit their needs with minimal impact on playbooks themselves. We want to avoid asking them to fork code and support patches on top of our code.\\r\\n\\r\\nThis strategy plugin will allow to include custom tasks into ansible\\r\\nplaybook without changing playbook code. To include file after any task\\r\\nwith Aodh in name, put this into globals.yml (our ansible config run with -e @/../globals.yml)\\r\\n\\r\\nansible_override:\\r\\n    include_after:\\r\\n        task: \\\"Aodh\\\"\\r\\n        file: \\\"/home/ubuntu/test.yml\\\"\\r\\n\\r\\nThis is only PoC of mechanism, mechanism itself is a matter of discussion, same as API we want to present to actually include custom tasks to roles.\", \n    \"component_name\": \"extensible strategy plugin\", \n    \"component_raw\": \"Extensible strategy plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18460\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/strategy\", \n      \"feature\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"During deployment of OpenStack with Ansible, we faced issue of having multiple people reusing our playbook for different use-cases. That also added requirement to support multiple different technologies in Kolla tree, but at the long run it's not possible. We need to allow people to modify playbooks to suit their needs with minimal impact on playbooks themselves. We want to avoid asking them to fork code and support patches on top of our code.\\n\\n\\n\\nThis strategy plugin will allow to include custom tasks into ansible\\n\\nplaybook without changing playbook code. To include file after any task\\n\\nwith Aodh in name, put this into globals.yml (our ansible config run with -e @/../globals.yml)\\n\\n\\n\\nansible_override:\\n\\n    include_after:\\n\\n        task: \\\"Aodh\\\"\\n\\n        file: \\\"/home/ubuntu/test.yml\\\"\\n\\n\\n\\nThis is only PoC of mechanism, mechanism itself is a matter of discussion, same as API we want to present to actually include custom tasks to roles.\", \n    \"title\": \"Add extensible strategy plugin\"\n  }, \n  \"18462\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ninclude_role and conditionals\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nOS-X\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nrole execution is supposed to be skipped due to conditional check\\r\\nbut, some tasks are not skipped and as a by product fail the run\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nmyplay.yml\\r\\n\\r\\n```\\r\\n- name: Provision OnDemand ec2 instance\\r\\n  include_role: \\r\\n    name: VivaReal.aws-ec2-provisioning\\r\\n  when: false\\r\\n\\r\\n``` \\r\\n\\r\\n#### EXPECTED RESULTS\\r\\nall role tasks are skipped\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nTASK [VivaReal.aws-ec2-provisioning : fail] ************************************\\r\\ntask path: /Users/liora/git/depi-be/depi/ansible/roles/VivaReal.aws-ec2-provisioning/tasks/main.yml:3\\r\\nskipping: [localhost] => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"skip_reason\\\": \\\"Conditional check failed\\\", \\r\\n    \\\"skipped\\\": true\\r\\n}\\r\\n\\r\\nTASK [VivaReal.aws-ec2-provisioning : terminate instances] *********************\\r\\ntask path: /Users/liora/git/depi-be/depi/ansible/roles/VivaReal.aws-ec2-provisioning/tasks/terminate.yml:2\\r\\nskipping: [localhost] => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"skip_reason\\\": \\\"Conditional check failed\\\", \\r\\n    \\\"skipped\\\": true\\r\\n}\\r\\n\\r\\nTASK [VivaReal.aws-ec2-provisioning : fail] ************************************\\r\\ntask path: /Users/liora/git/depi-be/depi/ansible/roles/VivaReal.aws-ec2-provisioning/tasks/create.yml:3\\r\\nskipping: [localhost] => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"skip_reason\\\": \\\"Conditional check failed\\\", \\r\\n    \\\"skipped\\\": true\\r\\n}\\r\\n\\r\\nTASK [VivaReal.aws-ec2-provisioning : Search for the latest vivareal ami] ******\\r\\ntask path: /Users/liora/git/depi-be/depi/ansible/roles/VivaReal.aws-ec2-provisioning/tasks/create.yml:7\\r\\nskipping: [localhost] => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"skip_reason\\\": \\\"Conditional check failed\\\", \\r\\n    \\\"skipped\\\": true\\r\\n}\\r\\n\\r\\nTASK [VivaReal.aws-ec2-provisioning : set fact ec2_base_image when ec2_find_ami_name is defined] ***\\r\\ntask path: /Users/liora/git/depi-be/depi/ansible/roles/VivaReal.aws-ec2-provisioning/tasks/create.yml:18\\r\\nskipping: [localhost] => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"skip_reason\\\": \\\"Conditional check failed\\\", \\r\\n    \\\"skipped\\\": true\\r\\n}\\r\\n\\r\\nTASK [VivaReal.aws-ec2-provisioning : launch instances] ************************\\r\\ntask path: /Users/liora/git/depi-be/depi/ansible/roles/VivaReal.aws-ec2-provisioning/tasks/create.yml:22\\r\\nskipping: [localhost] => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"skip_reason\\\": \\\"Conditional check failed\\\", \\r\\n    \\\"skipped\\\": true\\r\\n}\\r\\n\\r\\nTASK [VivaReal.aws-ec2-provisioning : Add new instance to host group] **********\\r\\ntask path: /Users/liora/git/depi-be/depi/ansible/roles/VivaReal.aws-ec2-provisioning/tasks/create.yml:42\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"failed\\\": true, \\r\\n    \\\"msg\\\": \\\"'dict object' has no attribute 'instances'\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"include_role and conditionals\", \n    \"component_raw\": \"include_role and conditionals\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18462\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"role execution is supposed to be skipped due to conditional check\\n\\nbut, some tasks are not skipped and as a by product fail the run\", \n    \"title\": \"skipping filter sometimes doesn't work\"\n  }, \n  \"18469\": {\n    \"ansible_version\": \"2.2\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nAnsible core\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n2.2\\r\\n##### OS / ENVIRONMENT\\r\\nAmazon Linux 2016.9 / AWS Lambda Python 2.7\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nRun Amazon Linux on Aws\\r\\nCreate Vitualenv and activate\\r\\nInstall ansible\\r\\nPackage the Virtualenv folder according to aws docs for creating virtualenv\\r\\nAdd https://github.com/jtyr/ansible-run_playbook/blob/master/run.py or similar\\r\\nCreate AWS Lambda using the package\\r\\nRun a test\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nMy use case is to be able to invoke Ansible programically in AWS Lambda\\r\\nwhich would be responsible for automated management of services running on ec2 instances.\\r\\nI am packaging It along with some python code which calls Ansible classes directly.\\r\\n\\r\\n##### ACTUAL RESULT\\r\\nSame errors as in https://github.com/ansible/ansible/issues/13830\\r\\nThe AWS Lambda environment is specific because it does not provide /dev/shm\\r\\nwhich is required for semaphores in multiprocess.Queue used heavily in Ansible.\\r\\n\\r\\nI can provide the exact steps to repro if there is any interest in fixing this issue.\", \n    \"component_name\": \"ansible core\", \n    \"component_raw\": \"Ansible core\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18469\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"bug\", \n      \"cloud\"\n    ], \n    \"module_match\": null, \n    \"summary\": null, \n    \"title\": \"Multiprocess issues when running Ansible programically on AWS Lambda\"\n  }, \n  \"18470\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\ndeprecations\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n\\r\\n\", \n    \"component_name\": \"deprecations\", \n    \"component_raw\": \"deprecations\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18470\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:cli/\", \n      \"c:executor/task_executor\", \n      \"c:playbook/base\", \n      \"c:playbook/become\", \n      \"c:playbook/helpers\", \n      \"c:playbook/play\", \n      \"c:playbook/play_context\", \n      \"c:playbook/task\", \n      \"c:plugins/action\", \n      \"c:plugins/strategy\", \n      \"c:utils/display\", \n      \"feature\", \n      \"in progress\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": null, \n    \"title\": \"[WIP] Deprecation version enforcement\"\n  }, \n  \"18475\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/admin/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nNA\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/admin/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\ncentos 7.2\\r\\n\\r\\n##### SUMMARY\\r\\nEarlier till version 2.1.2.0 never faced this problem. Now Once I upgrade to 2.2.0 I am facing this problem.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```\\r\\n- name: add docker's public key for CS-engine (debian)\\r\\n  apt_key:\\r\\n    url: \\\"https://sks-keyservers.net/pks/lookup?op=get&search=0xee6d536cf7dc86e2d7d56f59a178ac6c6238f52e\\\"\\r\\n    state: present\\r\\n    validate_certs: \\\"{{ validate_certs }}\\\"\\r\\n\\r\\n- name: add docker CS-engine repos (debian)\\r\\n  apt_repository:\\r\\n    repo: \\\"deb https://packages.docker.com/{{ item }}/apt/repo ubuntu-{{ ansible_distribution_release }} main\\\"\\r\\n    state: present\\r\\n  with_items: \\\"{{ docker_cs_engine_supported_versions_ubuntu[ansible_distribution_release] }}\\\"\\r\\n```\\r\\n\\r\\nThough I am running this playbook on Centos 7 still this is getting executed.\\r\\nFirst task above gets skipped successfully but for second task it gives following error.\\r\\n\\r\\n```\\r\\nTASK [docker : add docker's public key for CS-engine (debian)] *****************\\r\\nskipping: [node1]\\r\\nskipping: [node2]\\r\\n\\r\\nTASK [docker : add docker CS-engine repos (debian)] ****************************\\r\\nfatal: [node1]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"'dict object' has no attribute u'Core'\\\"}\\r\\nfatal: [node2]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"'dict object' has no attribute u'Core'\\\"}\\r\\n\\tto retry, use: --limit @/home/admin/ansible/site.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nnode1                      : ok=7    changed=1    unreachable=0    failed=1\\r\\nnode2                      : ok=7    changed=1    unreachable=0    failed=1\\r\\n```\", \n    \"component_name\": \"na\", \n    \"component_raw\": \"NA\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18475\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Earlier till version 2.1.2.0 never faced this problem. Now Once I upgrade to 2.2.0 I am facing this problem.\", \n    \"title\": \"fatal: [node1]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"'dict object' has no attribute u'Core'\\\"}\"\n  }, \n  \"18486\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.3.0 (devel 11465134fa) last updated 2016/11/14 142827 (GMT -500)\\nlib/ansible/modules/core (devel d21ac8a5da) last updated 2016/11/14 142828 (GMT -500)\\nlib/ansible/modules/extras (devel 19c7d5b31b) last updated 2016/11/14 142830 (GMT -500)\\nconfig file = /Users/tanner/projects/ansible.git/playbooks.git/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/task/feature -->\\r\\nCore\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.3.0 (devel 11465134fa) last updated 2016/11/14 14:28:27 (GMT -500)\\r\\n  lib/ansible/modules/core: (devel d21ac8a5da) last updated 2016/11/14 14:28:28 (GMT -500)\\r\\n  lib/ansible/modules/extras: (devel 19c7d5b31b) last updated 2016/11/14 14:28:30 (GMT -500)\\r\\n  config file = /Users/tanner/projects/ansible.git/playbooks.git/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nUnchanged from git pull from devel branch\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nRunning Ansible from macOS\\r\\nManaging OpenSolaris, OpenIndiana, Linux\\r\\n\\r\\n##### SUMMARY\\r\\nansible_os_family value is lost when using \\\"- include\\\" of another yaml file and from what I can tell the \\r\\n\\\"- debug\\\" command doesn't function properly either.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```\\r\\n---\\r\\n# file: updates/main.yml\\r\\n- debug: msg=\\\"main.yml {{ ansible_os_family }}\\\"\\r\\n- include: debian.yml\\r\\n  when: ansible_os_family == 'Debian'\\r\\n- include: solaris.yml\\r\\n  when: ansible_os_family == 'Solaris'\\r\\n```\\r\\n```\\r\\n---\\r\\n# tasks file for updates/debian.yml\\r\\n- debug: msg=\\\"inside debian.yml\\\"\\r\\n- debug: msg=\\\"{{ ansible_os_family }}\\\"\\r\\n```\\r\\n```\\r\\n---\\r\\n# tasks file for updates/solaris.yml\\r\\n- debug: msg=\\\"inside solaris.yml\\\"\\r\\n- debug: msg=\\\"{{ ansible_os_family }}\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nOn a Debian based Linux installation, debug would output \\\"main.yml Debian\\\", \\\"inside debian.yml\\\", \\\"Debian\\\"\\r\\n\\r\\nOn a Solaris based installation, debug would output \\\"main.yml Solaris\\\", \\\"inside solaris.yml\\\", \\\"Solaris\\\"\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nOn Solaris installations\\r\\n```\\r\\nTASK [Gathering Facts] *********************************************************\\r\\nok: [test-oi1.local]\\r\\nok: [test-o2.local]\\r\\n\\r\\nTASK [updates : debug] *********************************************************\\r\\nok: [test-oi1] => {\\r\\n    \\\"msg\\\": \\\"main.yml Solaris\\\"\\r\\n}\\r\\nok: [test-oi2 => {\\r\\n    \\\"msg\\\": \\\"main.yml Solaris\\\"\\r\\n}\\r\\n\\r\\nTASK [updates : debug] *********************************************************\\r\\n\\r\\nTASK [updates : debug] *********************************************************\\r\\n\\r\\n(processes the debian.yml tasks)\\r\\n```\", \n    \"component_name\": \"core\", \n    \"component_raw\": \"Core\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18486\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"ansible_os_family value is lost when using \\\"- include\\\" of another yaml file and from what I can tell the \\n\\n\\\"- debug\\\" command doesn't function properly either.\", \n    \"title\": \"ansible_os_family value lost when using -include\"\n  }, \n  \"18489\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/cherti/.ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Bug Report, Regression\\r\\n##### COMPONENT NAME\\r\\n\\r\\ntasks-execution, path-creation, to be observed at least in the `copy`-module\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/cherti/.ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n##### CONFIGURATION\\r\\n\\r\\nCentral ansible-folder changed to ~/.ansible\\r\\nroles-folder configured to ~/.ansible/roles\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nLinux, but most likely unrelated to OS\\r\\n##### SUMMARY\\r\\n\\r\\n`copy: src=template/foobar.txt dest=/etc/foobar.txt` used to work in roles.\\r\\n\\r\\nWith the above mentioned version, this must be changed to \\r\\n`copy: src=foobar.txt dest=/etc/foobar.txt` with `foobar.txt` moved to the `files`-folder of the role to work.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\ncreate a role with files\\r\\n\\r\\n```\\r\\ntemplates/foobar.txt\\r\\ntasks/main.yml\\r\\n```\\r\\n\\r\\nin the main.yml, put:\\r\\n\\r\\n```\\r\\n- name: demonstration\\r\\n  copy: src=templates/foobar.txt dest=/etc/foobar.txt\\r\\n```\\r\\n\\r\\nand execute that. With ansible 2.1.2 this works, with the above noted version, it doesn't.\\r\\n\\r\\nError: `\\\"Unable to find 'templates/foobar.txt' in expected paths.\\\"`\\r\\n\\r\\nChanging to \\r\\n\\r\\n```\\r\\n- name: demonstration\\r\\n  copy: src=foobar.txt dest=/etc/foobar.txt\\r\\n```\\r\\n\\r\\nwith `foobar.txt` moved to `files` fixes the issue for the copy-module.\\r\\n\\r\\nThere has been a similar issue which seems to have been fixed, possibly related: #17877 \", \n    \"component_name\": \"tasks-execution path-creation to be observed at least in the copy-\", \n    \"component_raw\": \"tasks-execution, path-creation, to be observed at least in the `copy`-module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18489\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/at.py\", \n    \"summary\": \"`copy: src=template/foobar.txt dest=/etc/foobar.txt` used to work in roles.\\n\\n\\n\\nWith the above mentioned version, this must be changed to \\n\\n`copy: src=foobar.txt dest=/etc/foobar.txt` with `foobar.txt` moved to the `files`-folder of the role to work.\", \n    \"title\": \"Path construction regression for source-fields of modules\"\n  }, \n  \"18491\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /home/siddharth/myansible/playbook/ansible-elasticsearch-upgrade/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"#### ISSUE TYPE\\r\\n- Bug Report\\r\\n\\r\\n#### COMPONENT NAME\\r\\nsetting up ES cluster using playbook scripts\\r\\n\\r\\n#### ANSIBLE VERSION\\r\\nansible 2.1.2.0\\r\\n  config file = /home/siddharth/myansible/playbook/ansible-elasticsearch-upgrade/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n#### SUMMARY\\r\\nHi All,\\r\\n\\r\\nWe are currently working on automating ES installation using ansible playbook scripts. I am trying to setup multi node ES cluster in remote machine and below is the attached customized playbook.\\r\\n\\r\\nI executed the below command to setup ES\\r\\n**ansible-playbook --vv multi-elasticsearch.yml**\\r\\nbut getting error,\\r\\n\\r\\n> An exception occurred during task execution. To see the full traceback, use -vvv. The error was: KeyError: u'{u\\\\'discovery.zen.minimum_master_nodes\\\\': 1, u\\\\'node.data\\\\': False, u\\\\'bootstrap.mlockall\\\\': True, u\\\\'discovery.zen.ping.unicast.hosts\\\\': u\\\"{{ groups[\\\\'master-nodes\\\\'] | map(\\\\'extract\\\\', hostvars, [\\\\'ansible_eth0\\\\', \\\\'ipv4\\\\', \\\\'address\\\\']) | join(\\\\':9302,\\\\') }}:9302\\\", u\\\\'http.port\\\\': 9202, u\\\\'network.host\\\\': u\\\\'{{ansible_default_ipv4.address}}\\\\', u\\\\'discovery.zen.ping.multicast.enabled\\\\': False, u\\\\'transport.tcp.port\\\\': 9302, u\\\\'cluster.name\\\\': u\\\\'ES_LOCAL_CLUSTER\\\\', u\\\\'node.name\\\\': u\\\\'master_node\\\\', u\\\\'node.master\\\\': True}: ipv4'\\r\\nfatal: [10.7.147.21]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"Unexpected failure during module execution.\\\", \\\"stdout\\\": \\\"\\\"}\\r\\n\\r\\n[es_playbooks.zip](https://github.com/ansible/ansible/files/591231/es_playbooks.zip)\\r\\n\\r\\nAlso If I am trying to run with this (rdaas-elasticsearch.yml) playbook and its working fine.\\r\\n\\r\\nPlease kindly correct me if am doing anything wrong in playbook.\\r\\n\\r\\n```\\r\\nNote:- Below is the etc/ansible/hosts file contains like this\\r\\n10.7.147.21\\r\\n[master-nodes]\\r\\n10.7.147.21 ansible_connection=ssh ansible_ssh_user=esadmin\\r\\n[data-nodes]\\r\\n10.7.147.21 ansible_connection=ssh ansible_ssh_user=esadmin\\r\\n```\\r\\n\\r\\n\\r\\nRegards,\\r\\nGaneshbabu R\\r\\n\", \n    \"component_name\": \"setting up es cluster using playbook scripts\", \n    \"component_raw\": \"setting up ES cluster using playbook scripts\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18491\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\", \n      \"needs_info\"\n    ], \n    \"module_match\": \"lib/ansible/modules/commands/script.py\", \n    \"summary\": \"Hi All,\\n\\n\\n\\nWe are currently working on automating ES installation using ansible playbook scripts. I am trying to setup multi node ES cluster in remote machine and below is the attached customized playbook.\\n\\n\\n\\nI executed the below command to setup ES\\n\\n**ansible-playbook --vv multi-elasticsearch.yml**\\n\\nbut getting error,\\n\\n\\n\\n> An exception occurred during task execution. To see the full traceback, use -vvv. The error was: KeyError: u'{u\\\\'discovery.zen.minimum_master_nodes\\\\': 1, u\\\\'node.data\\\\': False, u\\\\'bootstrap.mlockall\\\\': True, u\\\\'discovery.zen.ping.unicast.hosts\\\\': u\\\"{{ groups[\\\\'master-nodes\\\\'] | map(\\\\'extract\\\\', hostvars, [\\\\'ansible_eth0\\\\', \\\\'ipv4\\\\', \\\\'address\\\\']) | join(\\\\':9302,\\\\') }}:9302\\\", u\\\\'http.port\\\\': 9202, u\\\\'network.host\\\\': u\\\\'{{ansible_default_ipv4.address}}\\\\', u\\\\'discovery.zen.ping.multicast.enabled\\\\': False, u\\\\'transport.tcp.port\\\\': 9302, u\\\\'cluster.name\\\\': u\\\\'ES_LOCAL_CLUSTER\\\\', u\\\\'node.name\\\\': u\\\\'master_node\\\\', u\\\\'node.master\\\\': True}: ipv4'\\n\\nfatal: [10.7.147.21]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"Unexpected failure during module execution.\\\", \\\"stdout\\\": \\\"\\\"}\\n\\n\\n\\n[es_playbooks.zip](https://github.com/ansible/ansible/files/591231/es_playbooks.zip)\\n\\n\\n\\nAlso If I am trying to run with this (rdaas-elasticsearch.yml) playbook and its working fine.\\n\\n\\n\\nPlease kindly correct me if am doing anything wrong in playbook.\\n\\n\\n\\n```\\n\\nNote:- Below is the etc/ansible/hosts file contains like this\\n\\n10.7.147.21\\n\\n[master-nodes]\\n\\n10.7.147.21 ansible_connection=ssh ansible_ssh_user=esadmin\\n\\n[data-nodes]\\n\\n10.7.147.21 ansible_connection=ssh ansible_ssh_user=esadmin\\n\\n```\\n\\n\\n\\n\\n\\nRegards,\\n\\nGaneshbabu R\", \n    \"title\": \"Playbook failed due to Unexpected failure during module execution\"\n  }, \n  \"18496\": {\n    \"ansible_version\": \"macbookansible tim$ ansible --version\\nansible 2.2.0.0\\nconfig file = /Users/tim/XXXX/ansible/ansible.cfg\\nconfigured module search path = [modules]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2.py dynamic inventory\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nmacbook:ansible tim$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /Users/tim/XXXX/ansible/ansible.cfg\\r\\n  configured module search path = ['modules']\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nCreated simple AWS profiles in .aws/config and .aws/credentials\\r\\n\\r\\n$HOME/.aws/credentials\\r\\n```\\r\\n[example]\\r\\naws_access_key_id = XXXX\\r\\naws_access_key_id  = YYYY\\r\\n```\\r\\n\\r\\n$HOME/.aws/config\\r\\n```\\r\\n[profile example]\\r\\nregion = eu-west-1\\r\\noutput = json\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nmacOS 10.11.6\\r\\nAnsible installed via pip (pip install -U git+git://github.com/ansible/ansible.git@stable-2.2)\\r\\n\\r\\n##### SUMMARY\\r\\nCalling the inventory script with a profile on the command line gives an error, calling it with the same config file but passing the profile name as an environment variable works.\\r\\n\\r\\nI suspect it may be related to or the same root cause as bug #9984\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nCall ec2.py with AWS profile name on the command line\\r\\n\\r\\n```\\r\\n./ec2.py --profile example \\r\\nTraceback (most recent call last):\\r\\n  File \\\"./ec2.py\\\", line 1510, in <module>\\r\\n    Ec2Inventory()\\r\\n  File \\\"./ec2.py\\\", line 188, in __init__\\r\\n    self.do_api_calls_update_cache()\\r\\n  File \\\"./ec2.py\\\", line 494, in do_api_calls_update_cache\\r\\n    self.include_rds_clusters_by_region(region)\\r\\n  File \\\"./ec2.py\\\", line 608, in include_rds_clusters_by_region\\r\\n    account_id = boto.connect_iam().get_user().arn.split(':')[4]\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/boto/__init__.py\\\", line 382, in connect_iam\\r\\n    return IAMConnection(aws_access_key_id, aws_secret_access_key, **kwargs)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/boto/iam/connection.py\\\", line 73, in __init__\\r\\n    profile_name=profile_name)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/boto/connection.py\\\", line 1100, in __init__\\r\\n    provider=provider)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/boto/connection.py\\\", line 569, in __init__\\r\\n    host, config, self.provider, self._required_auth_capability())\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/boto/auth.py\\\", line 993, in get_auth_handler\\r\\n    'Check your credentials' % (len(names), str(names)))\\r\\nboto.exception.NoAuthHandlerFound: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV4Handler'] Check your credentials\\r\\n```\\r\\nCall the ec2.py inventory script with the profile name passed as an environment variable works correctly as shown:\\r\\n```\\r\\nAWS_PROFILE=example ./ec2.py \\r\\n{\\r\\n  \\\"_meta\\\": {\\r\\n    \\\"hostvars\\\": {}\\r\\n  }, \\r\\n  \\\"db_clusters\\\": {}\\r\\n}\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"ec2.py dynamic inventory\", \n    \"component_raw\": \"ec2.py dynamic inventory\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18496\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"bug\", \n      \"cloud\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Calling the inventory script with a profile on the command line gives an error, calling it with the same config file but passing the profile name as an environment variable works.\\n\\n\\n\\nI suspect it may be related to or the same root cause as bug #9984\", \n    \"title\": \"Ansible dynamic inventory script ec2.py fails with --profile\"\n  }, \n  \"18497\": {\n    \"ansible_version\": \"/data01/home/jenkins/.pyenv/versions/2.7.11/lib/python2.7/site-packages/Crypto/Util/number.py57 PowmInsecureWarning Not using mpz_powm_sec.  You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.\\n_warn(Not using mpz_powm_sec.  You should rebuild using libgmp >= 5 to avoid timing attack vulnerability. PowmInsecureWarning)\\nansible 2.1.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n`AnsibleDockerClient` (`lib/ansible/module_utils/docker_common.py`)\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\n/data01/home/jenkins/.pyenv/versions/2.7.11/lib/python2.7/site-packages/Crypto/Util/number.py:57: PowmInsecureWarning: Not using mpz_powm_sec.  You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.\\r\\n  _warn(\\\"Not using mpz_powm_sec.  You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.\\\", PowmInsecureWarning)\\r\\nansible 2.1.1.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\nNone\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nRed Hat Enterprise Linux Server release 6.5 (Santiago)\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\n`AnsibleDockerClient.get_container()` crashes when any container is missing a name.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nThis is not really a steps to reproduce but I hope it gives enough context...\\r\\n\\r\\nI'm not sure how but I have ended up with a container without a name,\\r\\n\\r\\n```\\r\\n# docker ps -a | grep -P '(^CONTAINER|f548e5960eff)'\\r\\nCONTAINER ID        IMAGE                           COMMAND                CREATED             STATUS                     PORTS                                  NAMES\\r\\nf548e5960eff        my-image:3.44.0-2               \\\"/usr/local/bin/pyth   13 days ago         Dead                       8000/tcp                                            \\r\\n```\\r\\n\\r\\nI have a task like,\\r\\n\\r\\n```yaml\\r\\n    - name: my-container\\r\\n      docker_container:\\r\\n        name: my-container\\r\\n        api_version: 1.19\\r\\n        image: my-image\\r\\n        user: root\\r\\n        state: started\\r\\n        restart_policy: on-failure\\r\\n```\\r\\n\\r\\nThe task fails with this error,\\r\\n\\r\\n```\\r\\n15:10:40 TASK [my-container] *************************************************\\r\\n\\r\\n15:10:42 fatal: [my-host]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Error retrieving container list: argument of type 'NoneType' is not iterable\\\"}\\r\\n```\\r\\n\\r\\nI found that the error originates from [lib/ansible/module_utils/docker_common.py#L357](https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/docker_common.py#L357) and is due to assumption that [`container['Names']` is iterable](https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/docker_common.py#L345).  I suppose not only does one have to have a container missing a name but it also has to happen to appear in the containers result before the desired container.  What can I say... I'm a lucky fellow.\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nI expect the task to start the container.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nThe task fails with this error,\\r\\n\\r\\n```\\r\\n15:10:40 TASK [my-container] *************************************************\\r\\n\\r\\n15:10:42 fatal: [my-host]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Error retrieving container list: argument of type 'NoneType' is not iterable\\\"}\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"ansibledockerclient (lib/ansible/module_utils/docker_common.py)\", \n    \"component_raw\": \"`AnsibleDockerClient` (`lib/ansible/module_utils/docker_common.py`)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18497\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [], \n    \"module_match\": null, \n    \"summary\": \"`AnsibleDockerClient.get_container()` crashes when any container is missing a name.\", \n    \"title\": \"\\\"Error retrieving container list\\\" due to `AnsibleDockerClient.get_container()` crashing when any container is missing a name.\"\n  }, \n  \"18499\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/xxx/ansible/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/task/feature -->\\r\\nPlaybook Roles and Include Statements\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/xxx/ansible/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n[defaults]\\r\\nask_sudo_pass = True\\r\\nbecome_method = sudo\\r\\nhostfile = hosts \\r\\nhash_behaviour = merge\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nFedora release 24 (Twenty Four)\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nhttp://docs.ansible.com/ansible/playbooks_roles.html\\r\\n\\r\\n> Finally, you may wish to assign tags to the roles you specify. You can do so inline:\\r\\n> (...)\\r\\n> Note that this tags all of the tasks in that role with the tags specified, overriding any tags that are specified inside the role. If you find yourself building a role with lots of tags and you want to call subsets of the role at different times, you should consider just splitting that role into multiple roles.\\r\\n\\r\\nIt's not really true, as task tags are still \\\"visible\\\" and respected. Just take a look at the example below. First tag is a role tag, second one is a task tag.\\r\\n\\r\\n```\\r\\n(admin@server ansible)$ ansible-playbook group-internal.yml --list-tags\\r\\n\\r\\nplaybook: group-internal.yml\\r\\n\\r\\n  play #1 (internal-group): Common tasks\\tTAGS: []\\r\\n      TASK TAGS: [linux-config, linux-config-ipv6]\\r\\n```\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\nTo reproduce include whole role with tags and assign different tag to one of the task inside the role.\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\nExample PLAYBOOK:\\r\\n- name: Common tasks\\r\\n  hosts: internal-group\\r\\n  become: yes\\r\\n  roles:\\r\\n    - { role: linux-config, tags: ['linux-config'] }\\r\\n\\r\\nExample TASK:\\r\\n- debug: msg=\\\"Bla bla bla.\\\"\\r\\n  when: ipv6_disabled is defined and ipv6_disabled\\r\\n  tags: linux-config-ipv6\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nAccording to documentation, task tags inside the role should not be respected.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nTask tags inside the role are respected. It's worth to notice, that in my opinion, it's a **correct behavior** and this should persist. Only documentation should be corrected.\\r\\n\", \n    \"component_name\": \"playbook roles and include statements\", \n    \"component_raw\": \"Playbook Roles and Include Statements\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18499\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"http://docs.ansible.com/ansible/playbooks_roles.html\\n\\n\\n\\n> Finally, you may wish to assign tags to the roles you specify. You can do so inline:\\n\\n> (...)\\n\\n> Note that this tags all of the tasks in that role with the tags specified, overriding any tags that are specified inside the role. If you find yourself building a role with lots of tags and you want to call subsets of the role at different times, you should consider just splitting that role into multiple roles.\\n\\n\\n\\nIt's not really true, as task tags are still \\\"visible\\\" and respected. Just take a look at the example below. First tag is a role tag, second one is a task tag.\\n\\n\\n\\n```\\n\\n(admin@server ansible)$ ansible-playbook group-internal.yml --list-tags\\n\\n\\n\\nplaybook: group-internal.yml\\n\\n\\n\\n  play #1 (internal-group): Common tasks\\tTAGS: []\\n\\n      TASK TAGS: [linux-config, linux-config-ipv6]\\n\\n```\", \n    \"title\": \"Wrong information in documentation about overriding task tags by role tags\"\n  }, \n  \"18501\": {\n    \"ansible_version\": \"N/A\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nconstants.py - actions/__init__.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nN/A\\r\\n##### SUMMARY\\r\\nAdded `C(DIFF_ALWAYS)` \\r\\nWhen set to True, always print the diff. Defaults to False.\\r\\n\\r\\nFixes #18416 #16073\", \n    \"component_name\": \"constants.py - actions/init.py\", \n    \"component_raw\": \"constants.py - actions/__init__.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18501\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:constants\", \n      \"c:playbook/play\", \n      \"c:playbook/play_context\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Added `C(DIFF_ALWAYS)` \\n\\nWhen set to True, always print the diff. Defaults to False.\\n\\n\\n\\nFixes #18416 #16073\", \n    \"title\": \"Added DIFF_ALWAYS constant\"\n  }, \n  \"18510\": {\n    \"ansible_version\": \"nsible-playbook 2.3.0 (devel fe95d71fbd) last updated 2016/11/16 133703 (GMT +100)\\nlib/ansible/modules/core (devel 00e64def78) last updated 2016/11/11 153934 (GMT +100)\\nlib/ansible/modules/extras (devel 09f6af8732) last updated 2016/11/11 153943 (GMT +100)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodule_utils/network.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nnsible-playbook 2.3.0 (devel fe95d71fbd) last updated 2016/11/16 13:37:03 (GMT +100)\\r\\n  lib/ansible/modules/core: (devel 00e64def78) last updated 2016/11/11 15:39:34 (GMT +100)\\r\\n  lib/ansible/modules/extras: (devel 09f6af8732) last updated 2016/11/11 15:39:43 (GMT +100)\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\n##### SUMMARY\\r\\nThe network modules throw a backtrace if they get a `BadHostKeyException`.\\r\\n\\r\\nThis fix needs to go into `devel`, and `stable-2.2`\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```yaml\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/tmp/ansible_EGGdsg/ansible_module_iosxr_command.py\\\", line 239, in <module>\\r\\n    main()\\r\\n  File \\\"/tmp/ansible_EGGdsg/ansible_module_iosxr_command.py\\\", line 202, in main\\r\\n    runner.add_command(**cmd)\\r\\n  File \\\"/tmp/ansible_EGGdsg/ansible_modlib.zip/ansible/module_utils/netcli.py\\\", line 147, in add_command\\r\\n  File \\\"/tmp/ansible_EGGdsg/ansible_modlib.zip/ansible/module_utils/network.py\\\", line 117, in cli\\r\\n  File \\\"/tmp/ansible_EGGdsg/ansible_modlib.zip/ansible/module_utils/network.py\\\", line 148, in connect\\r\\n  File \\\"/tmp/ansible_EGGdsg/ansible_modlib.zip/ansible/module_utils/iosxr.py\\\", line 57, in connect\\r\\n  File \\\"/tmp/ansible_EGGdsg/ansible_modlib.zip/ansible/module_utils/shell.py\\\", line 226, in connect\\r\\n  File \\\"/tmp/ansible_EGGdsg/ansible_modlib.zip/ansible/module_utils/shell.py\\\", line 96, in open\\r\\n  File \\\"/home/johnb/.local/lib/python2.7/site-packages/paramiko/client.py\\\", line 366, in connect\\r\\n    raise BadHostKeyException(hostname, server_key, our_server_key)\\r\\nparamiko.ssh_exception.BadHostKeyException: ('iosxr01', <paramiko.rsakey.RSAKey object at 0x7f618658cbd0>, <paramiko.rsakey.RSAKey object at 0x7f618658ca10>)\\r\\n\\r\\nfatal: [iosxr01]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"iosxr_command\\\"\\r\\n    }, \\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_EGGdsg/ansible_module_iosxr_command.py\\\\\\\", line 239, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_EGGdsg/ansible_module_iosxr_command.py\\\\\\\", line 202, in main\\\\n    runner.add_command(**cmd)\\\\n  File \\\\\\\"/tmp/ansible_EGGdsg/ansible_modlib.zip/ansible/module_utils/netcli.py\\\\\\\", line 147, in add_command\\\\n  File \\\\\\\"/tmp/ansible_EGGdsg/ansible_modlib.zip/ansible/module_utils/network.py\\\\\\\", line 117, in cli\\\\n  File \\\\\\\"/tmp/ansible_EGGdsg/ansible_modlib.zip/ansible/module_utils/network.py\\\\\\\", line 148, in connect\\\\n  File \\\\\\\"/tmp/ansible_EGGdsg/ansible_modlib.zip/ansible/module_utils/iosxr.py\\\\\\\", line 57, in connect\\\\n  File \\\\\\\"/tmp/ansible_EGGdsg/ansible_modlib.zip/ansible/module_utils/shell.py\\\\\\\", line 226, in connect\\\\n  File \\\\\\\"/tmp/ansible_EGGdsg/ansible_modlib.zip/ansible/module_utils/shell.py\\\\\\\", line 96, in open\\\\n  File \\\\\\\"/home/johnb/.local/lib/python2.7/site-packages/paramiko/client.py\\\\\\\", line 366, in connect\\\\n    raise BadHostKeyException(hostname, server_key, our_server_key)\\\\nparamiko.ssh_exception.BadHostKeyException: ('iosxr01', <paramiko.rsakey.RSAKey object at 0x7f618658cbd0>, <paramiko.rsakey.RSAKey object at 0x7f618658ca10>)\\\\n\\\", \\r\\n    \\\"module_stdout\\\": \\\"\\\", \\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"module_utils/network.py\", \n    \"component_raw\": \"module_utils/network.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18510\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"bug\", \n      \"networking\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The network modules throw a backtrace if they get a `BadHostKeyException`.\\n\\n\\n\\nThis fix needs to go into `devel`, and `stable-2.2`\", \n    \"title\": \"Network modules: Graceful message on BadHostKeyException\"\n  }, \n  \"18513\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /Users/ekaufman/GIT/evolution/wordpress/temp/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`fetch_url` helper in module utils\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /Users/ekaufman/GIT/evolution/wordpress/temp/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n```\\r\\n[ssh_connection]\\r\\ncontrol_path = %(directory)s/%%h-%%p-%%r\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nControl is OSX 10.11.6, running python 2.7.10\\r\\n\\r\\nRemote is a vagrant vm of Ubuntu 14.04.5, running python 2.7.6, with pip installs of urllib3, pyopenssl, ndg-httpsclient, pyasn1 (for SNI support)\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nA `get_url` task is failing with the vague response: `An unknown error occurred: []`\\r\\n\\r\\nI traced it back to [a caught exception](https://github.com/ansible/ansible/blob/fcca6245d175bc2577e68478f69330020d70f330/lib/ansible/module_utils/urls.py#L1012-L1014) in the `fetch_url` helper call.\\r\\n\\r\\nThe exception itself has no message or args, but I gleaned a class type from it: `<class 'OpenSSL.SSL.Error'>`\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nRun the below playbook against a vagrant machine, via: `ansible-playbook --user=vagrant -k -vvv test.yml`\\r\\n\\r\\n```yml\\r\\n---\\r\\n- hosts: \\\"local.example.com\\\"\\r\\n  gather_facts: yes\\r\\n\\r\\n  tasks:\\r\\n  - get_url:\\r\\n      dest: /tmp/purge-kernels.py\\r\\n      url: https://raw.githubusercontent.com/EvanK/ubuntu-purge-kernels/master/purge-kernels.py\\r\\n      force: yes\\r\\n      mode: '0755'\\r\\n    sudo: yes\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nA file to be fetched from given url and stored to the filesystem\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nTASK [get_url] *****************************************************************\\r\\ntask path: /Users/ekaufman/GIT/evolution/wordpress/temp/test.yml:7\\r\\nUsing module file /Library/Python/2.7/site-packages/ansible/modules/core/network/basics/get_url.py\\r\\n<local.example.com> ESTABLISH CONNECTION FOR USER: vagrant on PORT 22 TO local.example.com\\r\\n<local.example.com> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1479327279.3-53595418976079 `\\\" && echo ansible-tmp-1479327279.3-53595418976079=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1479327279.3-53595418976079 `\\\" ) && sleep 0'\\r\\n<local.example.com> PUT /var/folders/r1/_2bh2l655811g6vp_k_d25pm0000gn/T/tmpQjROE0 TO /home/vagrant/.ansible/tmp/ansible-tmp-1479327279.3-53595418976079/get_url.py\\r\\n<local.example.com> EXEC /bin/sh -c 'chmod u+x /home/vagrant/.ansible/tmp/ansible-tmp-1479327279.3-53595418976079/ /home/vagrant/.ansible/tmp/ansible-tmp-1479327279.3-53595418976079/get_url.py && sleep 0'\\r\\n<local.example.com> EXEC /bin/sh -c 'sudo -H -S -n -u root /bin/sh -c '\\\"'\\\"'echo BECOME-SUCCESS-rrcyczcjwlazwbbltbfcfbdmwncejkmg; /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1479327279.3-53595418976079/get_url.py; rm -rf \\\"/home/vagrant/.ansible/tmp/ansible-tmp-1479327279.3-53595418976079/\\\" > /dev/null 2>&1'\\\"'\\\"' && sleep 0'\\r\\nfatal: [local.example.com]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"dest\\\": \\\"/tmp/purge-kernels.py\\\", \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"backup\\\": false, \\r\\n            \\\"checksum\\\": \\\"\\\", \\r\\n            \\\"content\\\": null, \\r\\n            \\\"delimiter\\\": null, \\r\\n            \\\"dest\\\": \\\"/tmp/purge-kernels.py\\\", \\r\\n            \\\"directory_mode\\\": null, \\r\\n            \\\"follow\\\": false, \\r\\n            \\\"force\\\": true, \\r\\n            \\\"force_basic_auth\\\": false, \\r\\n            \\\"group\\\": null, \\r\\n            \\\"headers\\\": null, \\r\\n            \\\"http_agent\\\": \\\"ansible-httpget\\\", \\r\\n            \\\"mode\\\": \\\"0755\\\", \\r\\n            \\\"owner\\\": null, \\r\\n            \\\"regexp\\\": null, \\r\\n            \\\"remote_src\\\": null, \\r\\n            \\\"selevel\\\": null, \\r\\n            \\\"serole\\\": null, \\r\\n            \\\"setype\\\": null, \\r\\n            \\\"seuser\\\": null, \\r\\n            \\\"sha256sum\\\": \\\"\\\", \\r\\n            \\\"src\\\": null, \\r\\n            \\\"timeout\\\": 10, \\r\\n            \\\"tmp_dest\\\": \\\"\\\", \\r\\n            \\\"unsafe_writes\\\": null, \\r\\n            \\\"url\\\": \\\"https://raw.githubusercontent.com/EvanK/ubuntu-purge-kernels/master/purge-kernels.py\\\", \\r\\n            \\\"url_password\\\": null, \\r\\n            \\\"url_username\\\": null, \\r\\n            \\\"use_proxy\\\": true, \\r\\n            \\\"validate_certs\\\": true\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"get_url\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"Request failed\\\", \\r\\n    \\\"response\\\": \\\"An unknown error occurred: []\\\", \\r\\n    \\\"state\\\": \\\"absent\\\", \\r\\n    \\\"status_code\\\": -1, \\r\\n    \\\"url\\\": \\\"https://raw.githubusercontent.com/EvanK/ubuntu-purge-kernels/master/purge-kernels.py\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"fetch_url helper in   utils\", \n    \"component_raw\": \"`fetch_url` helper in module utils\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18513\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/fetch.py\", \n    \"summary\": \"A `get_url` task is failing with the vague response: `An unknown error occurred: []`\\n\\n\\n\\nI traced it back to [a caught exception](https://github.com/ansible/ansible/blob/fcca6245d175bc2577e68478f69330020d70f330/lib/ansible/module_utils/urls.py#L1012-L1014) in the `fetch_url` helper call.\\n\\n\\n\\nThe exception itself has no message or args, but I gleaned a class type from it: `<class 'OpenSSL.SSL.Error'>`\", \n    \"title\": \"fetch_url fails with empty exception\"\n  }, \n  \"18517\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n \\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\nmodule_utils\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nadded better way of adding warnings to return data\\r\\nbackwards compatible if warnings key already exists\", \n    \"component_name\": \"module_utils\", \n    \"component_raw\": \"module_utils\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18517\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"c:module_utils/basic\", \n      \"feature\", \n      \"in progress\", \n      \"module_util\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"added better way of adding warnings to return data\\n\\nbackwards compatible if warnings key already exists\", \n    \"title\": \"added warnings list to module and autoadd\"\n  }, \n  \"18527\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndocker-container\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nn/a\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nOSx\\r\\nDocker for Mac 1.12.3\\r\\n\\r\\n##### SUMMARY\\r\\ndocker-images module was updated to pull images but not docker-container\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nuse docker-container module with pull: True\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nthe docker image is pulled\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nthe playbook fails but the image is pulled\\r\\n\\r\\nrelated issue: https://github.com/ansible/ansible-modules-core/issues/3964\\r\\n\", \n    \"component_name\": \"docker-container\", \n    \"component_raw\": \"docker-container\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18527\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/_docker.py\", \n    \"summary\": \"docker-images module was updated to pull images but not docker-container\", \n    \"title\": \"docker-container module does not let docker-py decode pull response in ansible 2.2.0.0\"\n  }, \n  \"18528\": {\n    \"ansible_version\": \"Everything since [commit 6e9c09d](https//github.com/ansible/ansible/commit/6e9c09d7f76decbbf50ee9804da69b7c25dba9f9)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nSNI support provided by `ansible.module_utils.urls`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nEverything since [commit 6e9c09d](https://github.com/ansible/ansible/commit/6e9c09d7f76decbbf50ee9804da69b7c25dba9f9)\\r\\n\\r\\n##### SUMMARY\\r\\n[As seen here](https://github.com/ansible/ansible/blob/77af3a68de3d054ddb3be905d96b1d07c2e89adf/lib/ansible/module_utils/urls.py#L148), Ansible currently tests for SNI support by attempting to import `ssl_wrap_socket` from `urllib3.contrib.pyopenssl`, falling back to importing from `requests.packages.urllib3.contrib.pyopenssl`.  However, version 1.19 of urllib3 [removed this function](https://github.com/shazow/urllib3/commit/1db3bba5f5bc83812810fb95803ea21971c6c052) (\\\"As we never exported `ssl_wrap_socket` nobody should be using it.\\\"), and requests [updated its vendorized copy of urllib3 to match](https://github.com/kennethreitz/requests/commit/99fa7becf263473c7bfc1998b41c2c6c80a0f499) in version 2.12.0.  As a result, on systems using the latest versions of these packages, Ansible will falsely conclude that SNI is not supported, leading to attempts to connect to SNI-dependent sites (say, with `get_url`) to fail.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```\\r\\n- name: Install the latest versions of SNI-related packages\\r\\n  # Not shown here: Installing the SSL, FFI, and Python development libraries that are needed to build these modules.\\r\\n  pip: name={{item}} state=latest\\r\\n  with_items:\\r\\n    - ndg-httpsclient\\r\\n    - pyasn1\\r\\n    - pyopenssl\\r\\n    - requests\\r\\n    - urllib3\\r\\n\\r\\n- name: Try to download a file from an SNI-dependent site\\r\\n  get_url:\\r\\n    url: https://downloads.atlassian.com\\r\\n    dest: /tmp/whatever\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe file would be downloaded.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nTASK [get_url] *****************************************************************\\r\\nfatal: [sshbase]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failed to validate the SSL certificate for downloads.atlassian.com:443. Make sure your managed systems have a valid CA certificate installed. If the website serving the url uses SNI you need python >= 2.7.9 on your managed machine or you can install the `urllib3`, `pyopenssl`, `ndg-httpsclient`, and `pyasn1` python modules to perform SNI verification in python >= 2.6. You can use validate_certs=False if you do not need to confirm the servers identity but this is unsafe and not recommended. Paths checked for this platform: /etc/ssl/certs, /etc/pki/ca-trust/extracted/pem, /etc/pki/tls/certs, /usr/share/ca-certificates/cacert.org, /etc/ansible\\\"}\\r\\n```\", \n    \"component_name\": \"sni support provided by ansible.module_utils.urls\", \n    \"component_raw\": \"SNI support provided by `ansible.module_utils.urls`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18528\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"[As seen here](https://github.com/ansible/ansible/blob/77af3a68de3d054ddb3be905d96b1d07c2e89adf/lib/ansible/module_utils/urls.py#L148), Ansible currently tests for SNI support by attempting to import `ssl_wrap_socket` from `urllib3.contrib.pyopenssl`, falling back to importing from `requests.packages.urllib3.contrib.pyopenssl`.  However, version 1.19 of urllib3 [removed this function](https://github.com/shazow/urllib3/commit/1db3bba5f5bc83812810fb95803ea21971c6c052) (\\\"As we never exported `ssl_wrap_socket` nobody should be using it.\\\"), and requests [updated its vendorized copy of urllib3 to match](https://github.com/kennethreitz/requests/commit/99fa7becf263473c7bfc1998b41c2c6c80a0f499) in version 2.12.0.  As a result, on systems using the latest versions of these packages, Ansible will falsely conclude that SNI is not supported, leading to attempts to connect to SNI-dependent sites (say, with `get_url`) to fail.\", \n    \"title\": \"SNI support is broken for new versions of urllib3\"\n  }, \n  \"18537\": {\n    \"ansible_version\": \"ansible-vault 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/task/feature -->\\r\\nvault edit\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible-vault 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nvault edit attempts to restore file permissions when it moves a file in place. https://github.com/ansible/ansible/blob/devel/lib/ansible/parsing/vault/__init__.py#L538-L551\\r\\n\\r\\nhowever this doesn't account for ACLs which may exist on the original file.\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nCreate a vault file. Set non-standard acls on it\\r\\nvault edit the file to make a change.\\r\\nObserve the ACLs have reverted.\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nACLs should be restored\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nACLs are not restored.\", \n    \"component_name\": \"vault edit\", \n    \"component_raw\": \"vault edit\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18537\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"c:parsing/vault/\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"vault edit attempts to restore file permissions when it moves a file in place. https://github.com/ansible/ansible/blob/devel/lib/ansible/parsing/vault/__init__.py#L538-L551\\n\\n\\n\\nhowever this doesn't account for ACLs which may exist on the original file.\", \n    \"title\": \"vault edit does not handle file ACLs\"\n  }, \n  \"18541\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nazure_rm\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nWhen SSH access to VMs are proxied by a jumpbox, but these VMs still have an assigned public IP address (for example, web servers listening on SSH only from a private network), `azure_rm.py` should fill `ansible_host` value to the private IP address instead of the public one.\\r\\nAdditionally a small refactoring was done and style corrections done to comply to PEP8.\", \n    \"component_name\": \"azure_rm\", \n    \"component_raw\": \"azure_rm\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18541\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"azure\", \n      \"cloud\", \n      \"feature\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When SSH access to VMs are proxied by a jumpbox, but these VMs still have an assigned public IP address (for example, web servers listening on SSH only from a private network), `azure_rm.py` should fill `ansible_host` value to the private IP address instead of the public one.\\n\\nAdditionally a small refactoring was done and style corrections done to comply to PEP8.\", \n    \"title\": \"Add the ability to fill ansible_host with VM private IP\"\n  }, \n  \"18549\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/task/feature -->\\r\\nwith_fileglob\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nLinux - RHEL 7\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nThis is appears to be fairly specific, but there is an issue with running with_fileglob and \\\"delegate_to: localhost\\\".  Normally, when delegate_to: localhost is called, it will use the \\\"ansible_connection: local\\\".  But, with the combination mentioned, it is trying to do an SSH connection to localhost.\\r\\n\\r\\nThe weird thing, if I change the code and remove \\\"delegate_to: localhost\\\", or change with_fileglob to with_items, I no longer see the ssh execution.\\r\\n\\r\\nPlease see the steps to reproduce.  This might easier to explain and show in example.\\r\\n\\r\\nThis isn't normally a big deal, but when trying to run ansible from within a docker container, this tries to do an SSH to the localhost running docker, not the actual docker container itself.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n$ touch foobar\\r\\n$ cat test.yml \\r\\n- hosts: localhost\\r\\n  gather_facts: no\\r\\n\\r\\n  pre_tasks:\\r\\n  - stat:\\r\\n      path: \\\"{{ item }}\\\"\\r\\n    with_fileglob:\\r\\n    - foo*\\r\\n    delegate_to: localhost\\r\\n```\\r\\n\\r\\nwhen run, notice the SSH that it tries to use:\\r\\n\\r\\n```\\r\\n$ ansible-playbook -vvvvv test.yml\\r\\nUsing /etc/ansible/ansible.cfg as config file\\r\\nLoading callback plugin default of type stdout, v2.0 from /usr/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc\\r\\n\\r\\nPLAYBOOK: test.yml *************************************************************\\r\\n1 plays in test.yml\\r\\n\\r\\nPLAY [localhost] ***************************************************************\\r\\nlooking for \\\"\\\" at \\\"/files/\\\"\\r\\nlooking for \\\"\\\" at \\\"/\\\"\\r\\n\\r\\nTASK [stat] ********************************************************************\\r\\ntask path: /home/mwoodson/tmp/playbooks/test.yml:5\\r\\nlooking for \\\"\\\" at \\\"/home/mwoodson/tmp/playbooks/files/\\\"\\r\\nlooking for \\\"\\\" at \\\"/home/mwoodson/tmp/playbooks/\\\"\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/core/files/stat.py\\r\\n<localhost> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<localhost> SSH: ansible.cfg set ssh_args: (-o)(ControlMaster=auto)(-o)(ControlPersist=600s)\\r\\n<localhost> SSH: ANSIBLE_HOST_KEY_CHECKING/host_key_checking disabled: (-o)(StrictHostKeyChecking=no)\\r\\n<localhost> SSH: ansible_password/ansible_ssh_pass not set: (-o)(KbdInteractiveAuthentication=no)(-o)(PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey)(-o)(PasswordAuthentication=no)\\r\\n<localhost> SSH: ANSIBLE_TIMEOUT/timeout set: (-o)(ConnectTimeout=10)\\r\\n<localhost> SSH: PlayContext set ssh_common_args: ()\\r\\n<localhost> SSH: PlayContext set ssh_extra_args: ()\\r\\n<localhost> SSH: found only ControlPersist; added ControlPath: (-o)(ControlPath=/home/mwoodson/.ansible/cp/ansible-ssh-%h-%p-%r)\\r\\n<localhost> SSH: EXEC ssh -vvv -o ControlMaster=auto -o ControlPersist=600s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/mwoodson/.ansible/cp/ansible-ssh-%h-%p-%r localhost '/bin/sh -c '\\\"'\\\"'/usr/bin/python && sleep 0'\\\"'\\\"''\\r\\nok: [localhost] => (item=/home/mwoodson/tmp/playbooks/foobar) => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"checksum_algorithm\\\": \\\"sha1\\\", \\r\\n            \\\"follow\\\": false, \\r\\n            \\\"get_checksum\\\": true, \\r\\n            \\\"get_md5\\\": true, \\r\\n            \\\"mime\\\": false, \\r\\n            \\\"path\\\": \\\"/home/mwoodson/tmp/playbooks/foobar\\\"\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"stat\\\"\\r\\n    }, \\r\\n    \\\"item\\\": \\\"/home/mwoodson/tmp/playbooks/foobar\\\", \\r\\n    \\\"stat\\\": {\\r\\n        \\\"atime\\\": 1479491278.491219, \\r\\n        \\\"checksum\\\": \\\"da39a3ee5e6b4b0d3255bfef95601890afd80709\\\", \\r\\n...\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=0   \\r\\n\\r\\n```\\r\\n\\r\\n\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nI would expect it to run on localhost, and not cause an SSH connection.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n<localhost> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<localhost> SSH: ansible.cfg set ssh_args: (-o)(ControlMaster=auto)(-o)(ControlPersist=600s)\\r\\n<localhost> SSH: ANSIBLE_HOST_KEY_CHECKING/host_key_checking disabled: (-o)(StrictHostKeyChecking=no)\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"with_fileglob\", \n    \"component_raw\": \"with_fileglob\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18549\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This is appears to be fairly specific, but there is an issue with running with_fileglob and \\\"delegate_to: localhost\\\".  Normally, when delegate_to: localhost is called, it will use the \\\"ansible_connection: local\\\".  But, with the combination mentioned, it is trying to do an SSH connection to localhost.\\n\\n\\n\\nThe weird thing, if I change the code and remove \\\"delegate_to: localhost\\\", or change with_fileglob to with_items, I no longer see the ssh execution.\\n\\n\\n\\nPlease see the\", \n    \"title\": \"Using with_fileglob and \\\"delegate_to: localhost\\\" causes ansible to make ssh connection to localhost\"\n  }, \n  \"18555\": {\n    \"ansible_version\": \"ansible 2.1.2.0\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/task/feature -->\\r\\nansiballz compression / wrapper\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.2.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nFrom RHEL7 to Z/os 2.1 aka   OS/390   (realize this is unsupported, attempting to make this work across an enterprise environment)\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nAnsiballz compression places the compressed file a single string, it appears we're hitting a magic number limit on the mainframe of 64336.   The zipped string transmits correctly but is truncated at 64336 and zipfile.py never sees the end of file marker.   I'm able to extract the module on linux, ftp to the mainframe and run the module.\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nRun any module from Linux to Z/os.\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n---\\r\\n- hosts: mainframe\\r\\n  gather_facts: no\\r\\n  remote_user: redacted\\r\\n\\r\\n  tasks:\\r\\n  - setup:\\r\\n    environment:\\r\\n      LANG: C\\r\\n      LC_ALL: C\\r\\n      LC_MESSAGES: C\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n{\\\"invocation\\\": {\\\"module_args\\\": {\\\"filter\\\": \\\"*\\\", \\\"gather_subset\\\": [\\\"all\\\"], \\\"fact_path\\\": \\\"/etc/ansible/facts.d\\\"}}, \\\"ansible_facts\\\": {\\\"module_setup\\\": true, \\\"ansible_dns\\\": {}, \\\"ansible_user_gid\\\": xxxxxxxxxxxxx, \\\"ansible_user_uid\\\": xxxxxxxxxxx, \\\"ansible_selinux\\\": false, \\\"ansible_userspace_bits\\\": \\\"32\\\", \\\"ansible_distribution\\\": \\\"NA\\\", \\\"ansible_system\\\": \\\"OS/390\\\", \\\"ansible_user_id\\\": \\\"redacted\\\", \\\"ansible_architecture\\\": \\\"2964\\\", \\\"ansible_os_family\\\": \\\"NA\\\", \\\"ansible_user_shell\\\": \\\"/bin/sh\\\", \\\"ansible_env\\\": {\\\"LIBPATH\\\": \\\"/lib:/usr/lib:/usr/lpp/netview/lib:.\\\", \\\"_CC_CLIB_PREFIX\\\": \\\"SYS1.CCPP\\\", \\\"_CC_PLIB_PREFIX\\\": \\\"SYS1.LE\\\", \\\"TERM\\\": \\\"xterm\\\", \\\"SHELL\\\": \\\"/bin/sh\\\", \\\"EDITOR\\\": \\\"ed\\\", \\\"_C89_LIBDIRS\\\": \\\"/lib /usr/lib\\\", \\\"TZ\\\": \\\"CST6CDT\\\", \\\"_CXX_LIBDIRS\\\": \\\"/lib /usr/lib\\\", \\\"USER\\\": \\\"redacted\\\", \\\"_CXX_INCDIRS\\\": \\\"/usr/include /usr/lpp/ioclib/include\\\", \\\"_BPXK_AUTOCVT\\\": \\\"ON\\\", \\\"_CC_SLIB_PREFIX\\\": \\\"SYS1\\\", \\\"TMPDIR\\\": \\\"/tmp\\\", \\\"_CC_WORK_UNIT\\\": \\\"3390\\\", \\\"_CC_INCDIRS\\\": \\\"/usr/include /usr/lpp/ioclib/include\\\", \\\"_C89_PLIB_PREFIX\\\": \\\"SYS1.LE\\\", \\\"_CXX_WORK_UNIT\\\": \\\"3390\\\", \\\"SSH2_CLIENT_HOSTKEY_ALG\\\": \\\"ssh-rsa\\\", \\\"_C89_SLIB_PREFIX\\\": \\\"SYS1\\\", \\\"SSH_SFTP_ADVISOR_RECORD_TRUNCATE\\\": \\\"yes\\\", \\\"SSH2_CLIENT_VERSION\\\": \\\"SSH-2.0-OpenSSH_6.6.1\\\", \\\"SSH_SFT_ADVISOR_RECORD_TRUNCATE\\\": \\\"yes\\\", \\\"LANG\\\": \\\"C\\\", \\\"LD_LIBRARY_PATH\\\": \\\"/usr/lpp/netview/bin\\\", \\\"DBRMLIB\\\": \\\"SYS1.WIIR.SASNDBRM\\\", \\\"HOME\\\": \\\"/redacted\\\", \\\"SSH2_CLIENT_LOGIN_METHOD\\\": \\\"publickey\\\", \\\"PATH\\\": \\\"/bin:/usr/lpp/netview/bin:/usr/local/bin:/usr/lpp/java/alias/bin:/usr/lpp/wiir/alias/bin:.:/redacted:\\\", \\\"PS1\\\": \\\"$LOGNAME:$PWD: >\\\", \\\"SSH2_CLIENT_CIPHER\\\": \\\"aes128-cbc\\\", \\\"SSH2_CLIENT_COMPRESSION\\\": \\\"none\\\", \\\"SSH2_SFTP_LOG_FACILITY\\\": \\\"-1\\\", \\\"SSH_SFTP_RECORD_TRUNCATE\\\": \\\"yes\\\", \\\"_CXX_CLIB_PREFIX\\\": \\\"SYS1.CCPP\\\", \\\"SYSPROC\\\": \\\"SYS1.DB2.SDSNCLST\\\", \\\"_C89_INCDIRS\\\": \\\"/usr/include /usr/lpp/ioclib/include\\\", \\\"LOGNAME\\\": \\\"redacted\\\", \\\"_CC_LIBDIRS\\\": \\\"/lib /usr/lib\\\", \\\"_C89_CLIB_PREFIX\\\": \\\"SYS1.CCPP\\\", \\\"SSH2_CLIENT\\\": \\\"redacted\\\", \\\"_C89_WORK_UNIT\\\": \\\"3390\\\", \\\"_CXX_PLIB_PREFIX\\\": \\\"SYS1.LE\\\", \\\"_CEE_RUNOPTS\\\": \\\"FILETAG(AUTOCVT,NOAUTOTAG),TRAP(ON)\\\", \\\"_\\\": \\\"./setup\\\", \\\"MAIL\\\": \\\"/usr/mail/redacted\\\", \\\"MANPATH\\\": \\\"/usr/man/%L:/usr/lpp/netview/man/%L:/usr/lpp/ssh2/man/%L\\\", \\\"NLSPATH\\\": \\\"/usr/lib/nls/msg/%L/%N:/usr/lpp/wiir/alias/msg/En_US/db2asn.cat\\\", \\\"STEPLIB\\\": \\\"none\\\", \\\"_CXX_SLIB_PREFIX\\\": \\\"SYS1\\\"}, \\\"ansible_python_version\\\": \\\"2.7.6\\\", \\\"ansible_distribution_version\\\": \\\"NA\\\", \\\"ansible_date_time\\\": {\\\"tz\\\": \\\"CST\\\", \\\"weekday_number\\\": \\\"5\\\", \\\"minute\\\": \\\"34\\\", \\\"second\\\": \\\"34\\\", \\\"epoch\\\": \\\"1479508474\\\", \\\"weekday\\\": \\\"Friday\\\", \\\"month\\\": \\\"11\\\", \\\"day\\\": \\\"18\\\", \\\"date\\\": \\\"2016-11-18\\\", \\\"weeknumber\\\": \\\"46\\\", \\\"tz_offset\\\": \\\"-0600\\\", \\\"iso8601\\\": \\\"2016-11-18T22:34:34Z\\\", \\\"iso8601_basic_short\\\": \\\"20161118T163434\\\", \\\"hour\\\": \\\"16\\\", \\\"year\\\": \\\"2016\\\", \\\"iso8601_basic\\\": \\\"20161118T163434911760\\\", \\\"time\\\": \\\"16:34:34\\\", \\\"iso8601_micro\\\": \\\"2016-11-18T22:34:34.911905Z\\\"}, \\\"ansible_service_mgr\\\": \\\"service\\\", \\\"ansible_machine\\\": \\\"2964\\\", \\\"ansible_user_dir\\\": \\\"/u/redacted\\\", \\\"ansible_python\\\": {\\\"executable\\\": \\\"/usr/local/python/bin/python\\\", \\\"version_info\\\": [2, 7, 6, \\\"final\\\", 0], \\\"version\\\": {\\\"major\\\": 2, \\\"minor\\\": 7, \\\"serial\\\": 0, \\\"micro\\\": 6, \\\"releaselevel\\\": \\\"final\\\"}, \\\"type\\\": \\\"CPython\\\", \\\"has_sslcontext\\\": false}, \\\"ansible_pkg_mgr\\\": \\\"unknown\\\", \\\"ansible_domain\\\": \\\"\\\", \\\"ansible_hostname\\\": \\\"\\\", \\\"ansible_kernel\\\": \\\"24.00\\\", \\\"ansible_user_gecos\\\": \\\"\\\", \\\"ansible_fqdn\\\": \\\"VLINKT2\\\", \\\"ansible_gather_subset\\\": [\\\"virtual\\\", \\\"hardware\\\", \\\"network\\\"], \\\"ansible_nodename\\\": \\\"\\\", \\\"ansible_fips\\\": false, \\\"ansible_distribution_major_version\\\": \\\"NA\\\", \\\"ansible_distribution_release\\\": \\\"NA\\\"}, \\\"_ansible_verbose_override\\\": true, \\\"changed\\\": false}\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nansible-playbook system_z.yml -i demo_inventory -vvvv\\r\\nUsing /etc/ansible/ansible.cfg as config file\\r\\nLoaded callback default of type stdout, v2.0\\r\\n\\r\\nPLAYBOOK: system_z.yml *********************************************************\\r\\n1 plays in system_z.yml\\r\\n\\r\\nPLAY [mainframe] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\ntask path: /u/ansible/demo-day/system_z.yml:7\\r\\n<> ESTABLISH SSH CONNECTION FOR USER: \\r\\n<> SSH: EXEC ssh -C -vvv -o ForwardAgent=yes -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User= -o ConnectTimeout=500  '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1479508623.33-83022043867538 `\\\" && echo ansible-tmp-1479508623.33-83022043867538=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1479508623.33-83022043867538 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<> PUT /tmp/tmpgfHXQE TO /u//.ansible/tmp/ansible-tmp-1479508623.33-83022043867538/setup\\r\\n<> SSH: EXEC sftp -b - -C -vvv -o ForwardAgent=yes -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User= -o ConnectTimeout=500 '[]'\\r\\n<> ESTABLISH SSH CONNECTION FOR USER: \\r\\n<> SSH: EXEC ssh -C -vvv -o ForwardAgent=yes -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User= -o ConnectTimeout=500  '/bin/sh -c '\\\"'\\\"'chmod u+x /u//.ansible/tmp/ansible-tmp-1479508623.33-83022043867538/ /u//.ansible/tmp/ansible-tmp-1479508623.33-83022043867538/setup && sleep 0'\\\"'\\\"''\\r\\n<> ESTABLISH SSH CONNECTION FOR USER: \\r\\n<> SSH: EXEC ssh -C -vvv -o ForwardAgent=yes -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User= -o ConnectTimeout=500 -tt  '/bin/sh -c '\\\"'\\\"'LANG=C LC_MESSAGES=C LC_ALL=C /usr/local/python/bin/python /u//.ansible/tmp/ansible-tmp-1479508623.33-83022043867538/setup; rm -rf \\\"/u//.ansible/tmp/ansible-tmp-1479508623.33-83022043867538/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\ns/tal: []: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"invocation\\\": {\\\"module_name\\\": \\\"setup\\\"}, \\\"module_stderr\\\": \\\"OpenSSH_6.6.1, OpenSSL 1.0.1e-fips 11 Feb 2013\\\\r\\\\ndebug1: Reading configuration data /etc/ssh/ssh_config\\\\r\\\\ndebug1: /etc/ssh/ssh_config line 56: Applying options for *\\\\r\\\\ndebug2: ssh_connect: needpriv 0\\\\r\\\\ndebug1: Connecting to  [] port 22.\\\\r\\\\ndebug2: fd 3 setting O_NONBLOCK\\\\r\\\\ndebug1: fd 3 clearing O_NONBLOCK\\\\r\\\\ndebug1: Connection established.\\\\r\\\\ndebug3: timeout: 500000 ms remain after connect\\\\r\\\\ndebug3: Incorrect RSA1 identifier\\\\r\\\\ndebug3: Could not load \\\\\\\"/u/users/ansible/.ssh/id_rsa\\\\\\\" as a RSA1 public key\\\\r\\\\ndebug1: identity file /u/users/ansible/.ssh/id_rsa type 1\\\\r\\\\ndebug1: identity file /u/users/ansible/.ssh/id_rsa-cert type -1\\\\r\\\\ndebug1: identity file /u/users/ansible/.ssh/id_dsa type -1\\\\r\\\\ndebug1: identity file /u/users/ansible/.ssh/id_dsa-cert type -1\\\\r\\\\ndebug1: identity file /u/users/ansible/.ssh/id_ecdsa type -1\\\\r\\\\ndebug1: identity file /u/users/ansible/.ssh/id_ecdsa-cert type -1\\\\r\\\\ndebug1: identity file /u/users/ansible/.ssh/id_ed25519 type -1\\\\r\\\\ndebug1: identity file /u/users/ansible/.ssh/id_ed25519-cert type -1\\\\r\\\\ndebug1: Enabling compatibility mode for protocol 2.0\\\\r\\\\ndebug1: Local version string SSH-2.0-OpenSSH_6.6.1\\\\r\\\\ndebug1: Remote protocol version 2.0, remote software version 4.3.645.1 SSH Secure Shell\\\\r\\\\ndebug1: no match: 4.3.645.1 SSH Secure Shell\\\\r\\\\ndebug2: fd 3 setting O_NONBLOCK\\\\r\\\\ndebug3: load_hostkeys: loading entries for host \\\\\\\"\\\\\\\" from file \\\\\\\"/dev/null\\\\\\\"\\\\r\\\\ndebug3: load_hostkeys: loaded 0 keys\\\\r\\\\ndebug1: SSH2_MSG_KEXINIT sent\\\\r\\\\ndebug3: Received SSH2_MSG_IGNORE\\\\r\\\\ndebug1: SSH2_MSG_KEXINIT received\\\\r\\\\ndebug2: kex_parse_kexinit: curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1\\\\r\\\\ndebug2: kex_parse_kexinit: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,ssh-rsa,ssh-dss\\\\r\\\\ndebug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se\\\\r\\\\ndebug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se\\\\r\\\\ndebug2: kex_parse_kexinit: hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96\\\\r\\\\ndebug2: kex_parse_kexinit: hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96\\\\r\\\\ndebug2: kex_parse_kexinit: zlib@openssh.com,zlib,none\\\\r\\\\ndebug2: kex_parse_kexinit: zlib@openssh.com,zlib,none\\\\r\\\\ndebug2: kex_parse_kexinit: \\\\r\\\\ndebug2: kex_parse_kexinit: \\\\r\\\\ndebug2: kex_parse_kexinit: first_kex_follows 0 \\\\r\\\\ndebug2: kex_parse_kexinit: reserved 0 \\\\r\\\\ndebug2: kex_parse_kexinit: diffie-hellman-group14-sha1,diffie-hellman-group1-sha1,diffie-hellman-group14-sha256@ssh.com\\\\r\\\\ndebug2: kex_parse_kexinit: ssh-rsa,ssh-rsa-sha256@ssh.com\\\\r\\\\ndebug2: kex_parse_kexinit: aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc\\\\r\\\\ndebug2: kex_parse_kexinit: aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc\\\\r\\\\ndebug2: kex_parse_kexinit: hmac-sha1,hmac-sha1-96,hmac-sha256-2@ssh.com,hmac-sha224@ssh.com,hmac-sha256@ssh.com,hmac-sha384@ssh.com,hmac-sha512@ssh.com\\\\r\\\\ndebug2: kex_parse_kexinit: hmac-sha1,hmac-sha1-96,hmac-sha256-2@ssh.com,hmac-sha224@ssh.com,hmac-sha256@ssh.com,hmac-sha384@ssh.com,hmac-sha512@ssh.com\\\\r\\\\ndebug2: kex_parse_kexinit: none,zlib\\\\r\\\\ndebug2: kex_parse_kexinit: none,zlib\\\\r\\\\ndebug2: kex_parse_kexinit: \\\\r\\\\ndebug2: kex_parse_kexinit: \\\\r\\\\ndebug2: kex_parse_kexinit: first_kex_follows 0 \\\\r\\\\ndebug2: kex_parse_kexinit: reserved 0 \\\\r\\\\ndebug2: mac_setup: setup hmac-sha1\\\\r\\\\ndebug1: kex: server->client aes128-cbc hmac-sha1 zlib\\\\r\\\\ndebug2: mac_setup: setup hmac-sha1\\\\r\\\\ndebug1: kex: client->server aes128-cbc hmac-sha1 zlib\\\\r\\\\ndebug1: kex: diffie-hellman-group14-sha1 need=20 dh_need=20\\\\r\\\\ndebug1: kex: diffie-hellman-group14-sha1 need=20 dh_need=20\\\\r\\\\ndebug2: bits set: 1033/2048\\\\r\\\\ndebug1: sending SSH2_MSG_KEXDH_INIT\\\\r\\\\ndebug1: expecting SSH2_MSG_KEXDH_REPLY\\\\r\\\\ndebug3: Received SSH2_MSG_IGNORE\\\\r\\\\ndebug1: Server host key: RSA 17:42:f3:e5:d0:dc:3b:0f:57:8b:7a:b5:17:eb:0d:08\\\\r\\\\ndebug3: load_hostkeys: loading entries for host \\\\\\\"\\\\\\\" from file \\\\\\\"/dev/null\\\\\\\"\\\\r\\\\ndebug3: load_hostkeys: loaded 0 keys\\\\r\\\\ndebug3: load_hostkeys: loading entries for host \\\\\\\"\\\\\\\" from file \\\\\\\"/dev/null\\\\\\\"\\\\r\\\\ndebug3: load_hostkeys: loaded 0 keys\\\\r\\\\nWarning: Permanently added ',' (RSA) to the list of known hosts.\\\\r\\\\ndebug2: bits set: 1015/2048\\\\r\\\\ndebug1: ssh_rsa_verify: signature correct\\\\r\\\\ndebug2: kex_derive_keys\\\\r\\\\ndebug2: set_newkeys: mode 1\\\\r\\\\ndebug1: Enabling compression at level 6.\\\\r\\\\ndebug1: SSH2_MSG_NEWKEYS sent\\\\r\\\\ndebug1: expecting SSH2_MSG_NEWKEYS\\\\r\\\\ndebug3: Received SSH2_MSG_IGNORE\\\\r\\\\ndebug2: set_newkeys: mode 0\\\\r\\\\ndebug1: SSH2_MSG_NEWKEYS received\\\\r\\\\ndebug1: SSH2_MSG_SERVICE_REQUEST sent\\\\r\\\\ndebug3: Received SSH2_MSG_IGNORE\\\\r\\\\ndebug3: Received SSH2_MSG_IGNORE\\\\r\\\\ndebug3: Received SSH2_MSG_IGNORE\\\\r\\\\ndebug2: service_accept: ssh-userauth\\\\r\\\\ndebug1: SSH2_MSG_SERVICE_ACCEPT received\\\\r\\\\ndebug2: key: /u/users/ansible/.ssh/id_rsa (0x7f3930cf7e50),\\\\r\\\\ndebug2: key: /u/users/ansible/.ssh/id_dsa ((nil)),\\\\r\\\\ndebug2: key: /u/users/ansible/.ssh/id_ecdsa ((nil)),\\\\r\\\\ndebug2: key: /u/users/ansible/.ssh/id_ed25519 ((nil)),\\\\r\\\\ndebug3: Received SSH2_MSG_IGNORE\\\\r\\\\ndebug1: Authentications that can continue: publickey,password\\\\r\\\\ndebug3: start over, passed a different list publickey,password\\\\r\\\\ndebug3: preferred gssapi-with-mic,gssapi-keyex,hostbased,publickey\\\\r\\\\ndebug3: authmethod_lookup publickey\\\\r\\\\ndebug3: remaining preferred: ,gssapi-keyex,hostbased,publickey\\\\r\\\\ndebug3: authmethod_is_enabled publickey\\\\r\\\\ndebug1: Next authentication method: publickey\\\\r\\\\ndebug1: Offering RSA public key: /u/users/ansible/.ssh/id_rsa\\\\r\\\\ndebug3: send_pubkey_test\\\\r\\\\ndebug2: we sent a publickey packet, wait for reply\\\\r\\\\ndebug3: Received SSH2_MSG_IGNORE\\\\r\\\\ndebug1: Server accepts key: pkalg ssh-rsa blen 279\\\\r\\\\ndebug2: input_userauth_pk_ok: fp a3:51:62:ac:7d:f7:bd:1b:be:e3:ce:c0:c0:9b:ca:60\\\\r\\\\ndebug3: sign_and_send_pubkey: RSA a3:51:62:ac:7d:f7:bd:1b:be:e3:ce:c0:c0:9b:ca:60\\\\r\\\\ndebug1: key_parse_private2: missing begin marker\\\\r\\\\ndebug1: read PEM private key done: type RSA\\\\r\\\\ndebug3: Received SSH2_MSG_IGNORE\\\\r\\\\ndebug1: Authentication succeeded (publickey).\\\\r\\\\nAuthenticated to  ([]:22).\\\\r\\\\ndebug2: fd 5 setting O_NONBLOCK\\\\r\\\\ndebug2: fd 6 setting O_NONBLOCK\\\\r\\\\ndebug1: channel 0: new [client-session]\\\\r\\\\ndebug3: ssh_session2_open: channel_new: 0\\\\r\\\\ndebug2: channel 0: send open\\\\r\\\\ndebug1: Entering interactive session.\\\\r\\\\ndebug3: Received SSH2_MSG_IGNORE\\\\r\\\\ndebug2: callback start\\\\r\\\\ndebug2: fd 3 setting TCP_NODELAY\\\\r\\\\ndebug3: packet_set_tos: set IP_TOS 0x10\\\\r\\\\ndebug2: client_session2_setup: id 0\\\\r\\\\ndebug2: channel 0: request pty-req confirm 1\\\\r\\\\ndebug1: Sending environment.\\\\r\\\\ndebug3: Ignored env XDG_SESSION_ID\\\\r\\\\ndebug3: Ignored env HOSTNAME\\\\r\\\\ndebug3: Ignored env SHELL\\\\r\\\\ndebug3: Ignored env TERM\\\\r\\\\ndebug3: Ignored env HISTSIZE\\\\r\\\\ndebug3: Ignored env USER\\\\r\\\\ndebug3: Ignored env LS_COLORS\\\\r\\\\ndebug3: Ignored env COBBLER_SERVER\\\\r\\\\ndebug3: Ignored env MAIL\\\\r\\\\ndebug3: Ignored env PATH\\\\r\\\\ndebug3: Ignored env PWD\\\\r\\\\ndebug1: Sending env LANG = en_US.UTF-8\\\\r\\\\ndebug2: channel 0: request env confirm 0\\\\r\\\\ndebug3: Ignored env HISTCONTROL\\\\r\\\\ndebug3: Ignored env SHLVL\\\\r\\\\ndebug3: Ignored env HOME\\\\r\\\\ndebug3: Ignored env LOGNAME\\\\r\\\\ndebug3: Ignored env LESSOPEN\\\\r\\\\ndebug3: Ignored env _\\\\r\\\\ndebug3: Ignored env OLDPWD\\\\r\\\\ndebug1: Sending command: /bin/sh -c 'LANG=C LC_MESSAGES=C LC_ALL=C /usr/local/python/bin/python /u/b/.ansible/tmp/ansible-tmp-1479508623.33-83022043867538/setup; rm -rf \\\\\\\"/u/b/.ansible/tmp/ansible-tmp-1479508623.33-83022043867538/\\\\\\\" > /dev/null 2>&1 && sleep 0'\\\\r\\\\ndebug2: channel 0: request exec confirm 1\\\\r\\\\ndebug2: callback done\\\\r\\\\ndebug2: channel 0: open confirm rwindow 100000 rmax 16384\\\\r\\\\ndebug3: Received SSH2_MSG_IGNORE\\\\r\\\\ndebug2: channel_input_status_confirm: type 99 id 0\\\\r\\\\ndebug2: PTY allocation request accepted on channel 0\\\\r\\\\ndebug3: Received SSH2_MSG_IGNORE\\\\r\\\\ndebug2: channel_input_status_confirm: type 99 id 0\\\\r\\\\ndebug2: exec request accepted on channel 0\\\\r\\\\ndebug3: Received SSH2_MSG_IGNORE\\\\r\\\\ndebug3: Received SSH2_MSG_IGNORE\\\\r\\\\ndebug3: Received SSH2_MSG_IGNORE\\\\r\\\\ndebug3: Received SSH2_MSG_IGNORE\\\\r\\\\ndebug3: Received SSH2_MSG_IGNORE\\\\r\\\\ndebug3: Received SSH2_MSG_IGNORE\\\\r\\\\ndebug3: Received SSH2_MSG_IGNORE\\\\r\\\\ndebug3: Received SSH2_MSG_IGNORE\\\\r\\\\ndebug3: Received SSH2_MSG_IGNORE\\\\r\\\\ndebug1: client_input_channel_req: channel 0 rtype exit-status reply 0\\\\r\\\\ndebug3: Received SSH2_MSG_IGNORE\\\\r\\\\ndebug2: channel 0: rcvd close\\\\r\\\\ndebug2: channel 0: output open -> drain\\\\r\\\\ndebug2: channel 0: close_read\\\\r\\\\ndebug2: channel 0: input open -> closed\\\\r\\\\ndebug3: channel 0: will not send data after close\\\\r\\\\ndebug2: channel 0: obuf empty\\\\r\\\\ndebug2: channel 0: close_write\\\\r\\\\ndebug2: channel 0: output drain -> closed\\\\r\\\\ndebug2: channel 0: almost dead\\\\r\\\\ndebug2: channel 0: gc: notify user\\\\r\\\\ndebug2: channel 0: gc: user detached\\\\r\\\\ndebug2: channel 0: send close\\\\r\\\\ndebug2: channel 0: is dead\\\\r\\\\ndebug2: channel 0: garbage collecting\\\\r\\\\ndebug1: channel 0: free: client-session, nchannels 1\\\\r\\\\ndebug3: channel 0: status: The following connections are open:\\\\r\\\\n  #0 client-session (t4 r0 i3/0 o3/0 fd -1/-1 cc -1)\\\\r\\\\n\\\\r\\\\ndebug1: fd 1 clearing O_NONBLOCK\\\\r\\\\ndebug1: fd 2 clearing O_NONBLOCK\\\\r\\\\nConnection to  closed.\\\\r\\\\nTransferred: sent 3472, received 7152 bytes, in 0.4 seconds\\\\r\\\\nBytes per second: sent 8204.2, received 16900.0\\\\r\\\\ndebug1: Exit status 0\\\\r\\\\ndebug1: compress outgoing: raw data 1676, compressed 1067, factor 0.64\\\\r\\\\ndebug1: compress incoming: raw data 7761, compressed 5020, factor 0.65\\\\r\\\\n\\\", \\\"module_stdout\\\": \\\"debug[67240527]: 18/11/2016 23:37:06:648 SshCharConv/sshcharconv.c:214/autocvt_set: fd 7 had fccsid 0, pccsid 819 and cvt OFF, now 0,0 and OFF\\\\r\\\\r\\\\ndebug[67240527]: setsid() failed, but we just forked, so this is because we have already called setsid() (e.g. in pty-allocation).\\\\r\\\\r\\\\ndebug[67240527]: /etc/nologin_VLINKT2 does not exist.\\\\r\\\\r\\\\ndebug[67240527]: 18/11/2016 23:37:06:649 SshUnixUser/sshunixuser.c:1487/ssh_user_login_is_allowed: login_allowed = TRUE, password_expired = FALSE, ignore_password_expiration = FALSE, aix_rlogin_prohibited = FALSE, ignore_aix_rlogin_prohibition = FALSE, nisplus_no_permission = FALSE, ignore_nisplus_no_permission = FALSE\\\\r\\\\r\\\\ndebug[67240527]: 18/11/2016 23:37:06:649 Ssh2Common/sshcommon.c:918/ssh_common_confidential_data_cleanup: Freeing confidential data.\\\\r\\\\r\\\\ndebug[67240527]: 18/11/2016 23:37:06:649 SshADTList/sshadt_list.c:56/destr: Reference to non-existent callback (doing nothing).\\\\r\\\\r\\\\ndebug[67240527]: 18/11/2016 23:37:06:649 SshADTList/sshadt_list.c:56/destr: Reference to non-existent callback (doing nothing).\\\\r\\\\r\\\\ndebug[67240527]: 18/11/2016 23:37:06:649 SshADTList/sshadt_list.c:56/destr: Reference to non-existent callback (doing nothing).\\\\r\\\\r\\\\ndebug[67240527]: 18/11/2016 23:37:06:649 SshADTList/sshadt_list.c:56/destr: Reference to non-existent callback (doing nothing).\\\\r\\\\r\\\\ndebug[67240527]: 18/11/2016 23:37:06:649 SshADTList/sshadt_list.c:407/detach: Detach: handle=38c6a418\\\\r\\\\r\\\\ndebug[67240527]: 18/11/2016 23:37:06:649 SshADTList/sshadt_list.c:442/delet: Invoking callback @38c1bbb8.\\\\r\\\\r\\\\ndebug[67240527]: 18/11/2016 23:37:06:649 SshADTList/sshadt_list.c:442/delet: Callback @38c1bbb8 returned.\\\\r\\\\r\\\\ndebug[67240527]: 18/11/2016 23:37:06:649 SshADTList/sshadt_list.c:56/destr: Reference to non-existent callback (doing nothing).\\\\r\\\\r\\\\ndebug[67240527]: 18/11/2016 23:37:06:649 SshUnixUser/sshunixuser.c:2073/ssh_user_close_fds: max_fd: 2048\\\\r\\\\r\\\\ndebug[67240527]: 18/11/2016 23:37:06:651 Ssh2ChannelSession/sshchsession.c:1175/close_fds_and_openlog: Opening log... (facility: 32)\\\\r\\\\r\\\\nsshd2[67240527]: Now running on 's privileges.\\\\r\\\\r\\\\ndebug[67240527]: 18/11/2016 23:37:06:660 Ssh2ChannelSession/sshchsession.c:739/ssh_session_init_env: Init env for \\\\r\\\\r\\\\ndebug[67240527]: 18/11/2016 23:37:06:660 SshUnixUser/sshunixuser.c:1487/ssh_user_login_is_allowed: login_allowed = TRUE, password_expired = FALSE, ignore_password_expiration = FALSE, aix_rlogin_prohibited = FALSE, ignore_aix_rlogin_prohibition = FALSE, nisplus_no_permission = FALSE, ignore_nisplus_no_permission = FALSE\\\\r\\\\r\\\\ndebug[67240527]: 18/11/2016 23:37:06:660 SshUserFiles/sshuserfiles.c:125/ssh_user_build_dir: path_template = %D/.ssh2\\\\r\\\\r\\\\ndebug[67240527]: Environment:\\\\r\\\\r\\\\ndebug[67240527]:   HOME=/u/\\\\r\\\\r\\\\ndebug[67240527]:   USER=\\\\r\\\\r\\\\ndebug[67240527]:   LOGNAME=\\\\r\\\\r\\\\ndebug[67240527]:   PATH=/bin:/usr/bin:/usr/ucb:/usr/bin/X11:/usr/local/bin:/opt/tectia/bin\\\\r\\\\r\\\\ndebug[67240527]:   MAIL=/var/mail/\\\\r\\\\r\\\\ndebug[67240527]:   SHELL=/bin/sh\\\\r\\\\r\\\\ndebug[67240527]:   SSH2_CLIENT= 40530  22\\\\r\\\\r\\\\ndebug[67240527]:   SSH2_CLIENT_VERSION=SSH-2.0-OpenSSH_6.6.1\\\\r\\\\r\\\\ndebug[67240527]:   SSH2_CLIENT_HOSTKEY_ALG=ssh-rsa\\\\r\\\\r\\\\ndebug[67240527]:   SSH2_CLIENT_CIPHER=aes128-cbc\\\\r\\\\r\\\\ndebug[67240527]:   SSH2_CLIENT_COMPRESSION=zlib\\\\r\\\\r\\\\ndebug[67240527]:   SSH2_CLIENT_LOGIN_METHOD=publickey\\\\r\\\\r\\\\ndebug[67240527]:   TERM=screen\\\\r\\\\r\\\\ndebug[67240527]:   LIBPATH=/opt/tectia/lib\\\\r\\\\r\\\\ndebug[67240527]:   SSH_SFTP_RECORD_TRUNCATE=yes\\\\r\\\\r\\\\ndebug[67240527]:   SSH_SFT_ADVISOR_RECORD_TRUNCATE=yes\\\\r\\\\r\\\\ndebug[67240527]:   SSH_SFTP_ADVISOR_RECORD_TRUNCATE=yes\\\\r\\\\r\\\\ndebug[67240527]:   LANG=en_US.UTF-8\\\\r\\\\r\\\\ndebug[67240527]:   _BPXK_AUTOCVT=ON\\\\r\\\\r\\\\ndebug[67240527]:   _CEE_RUNOPTS=FILETAG(AUTOCVT,NOAUTOTAG),TRAP(ON)\\\\r\\\\r\\\\ndebug[67240527]:   SSH2_SFTP_LOG_FACILITY=-1\\\\r\\\\r\\\\ndebug[67240527]: 18/11/2016 23:37:06:660 SshUserFiles/sshuserfiles.c:125/ssh_user_build_dir: path_template = %D/.ssh2\\\\r\\\\r\\\\nTraceback (most recent call last):\\\\r\\\\n  File \\\\\\\"/u//.ansible/tmp/ansible-tmp-1479508623.33-83022043867538/setup\\\\\\\", line 109, in <module>\\\\r\\\\n    z = zipfile.ZipFile(zipped_mod, mode='r')\\\\r\\\\n  File \\\\\\\"/usr/local/python/lib/python2.7/zipfile.py\\\\\\\", line 766, in __init__\\\\r\\\\n    self._RealGetContents()\\\\r\\\\n  File \\\\\\\"/usr/local/python/lib/python2.7/zipfile.py\\\\\\\", line 807, in _RealGetContents\\\\r\\\\n    raise BadZipfile, \\\\\\\"File is not a zip file\\\\\\\"\\\\r\\\\nzipfile.BadZipfile: File is not a zip file\\\\r\\\\nCannot set locale: The internationalization variable settings are invalid.\\\\r\\\\n\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\"}\\r\\n\\r\\nNO MORE HOSTS LEFT *************************************************************\\r\\n\\tto retry, use: --limit @/u/ansible/demo-day/system_z.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\n                    : ok=0    changed=0    unreachable=0    failed=1\\r\\n\\r\\n```\", \n    \"component_name\": \"ansiballz compression / wrapper\", \n    \"component_raw\": \"ansiballz compression / wrapper\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18555\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"waiting_on_contributor\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Ansiballz compression places the compressed file a single string, it appears we're hitting a magic number limit on the mainframe of 64336.   The zipped string transmits correctly but is truncated at 64336 and zipfile.py never sees the end of file marker.   I'm able to extract the module on linux, ftp to the mainframe and run the module.\", \n    \"title\": \"Fix ansiballz use of Base64 for Z/os (EBCDIC encoding)\"\n  }, \n  \"18557\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncontrib/inventory/proxmox.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdds a `proxmox_node` value for each VM/container which gives you information about where it is running.\\r\\n\\r\\nExample:\\r\\n```\\r\\n$ ./contrib/inventory/proxmox.py --list --pretty\\r\\n\\r\\n[...]\\r\\n\\r\\n  \\\"_meta\\\": {\\r\\n    \\\"hostvars\\\": {\\r\\n      \\\"env-daniel\\\": {\\r\\n        \\\"proxmox_vmid\\\": 101,\\r\\n        \\\"proxmox_maxdisk\\\": 107374182400, \\r\\n        \\\"proxmox_status\\\": \\\"running\\\", \\r\\n        \\\"proxmox_netout\\\": 443291, \\r\\n        \\\"proxmox_cpus\\\": 6, \\r\\n        \\\"proxmox_node\\\": \\\"pmox02\\\", \\r\\n        \\\"proxmox_cpu\\\": 0.00282061084721094, \\r\\n        \\\"proxmox_uptime\\\": 15042, \\r\\n        \\\"proxmox_netin\\\": 8946716, \\r\\n        \\\"proxmox_pid\\\": \\\"32129\\\", \\r\\n        \\\"proxmox_diskwrite\\\": 0, \\r\\n        \\\"proxmox_diskread\\\": 0, \\r\\n        \\\"groups\\\": [\\r\\n          \\\"base\\\"\\r\\n        ], \\r\\n        \\\"proxmox_name\\\": \\\"env-daniel\\\", \\r\\n        \\\"proxmox_template\\\": \\\"\\\", \\r\\n        \\\"proxmox_maxmem\\\": 10737418240, \\r\\n        \\\"proxmox_mem\\\": 982559724, \\r\\n        \\\"proxmox_disk\\\": 0\\r\\n      },\\r\\n\\r\\n[...]\\r\\n```\", \n    \"component_name\": \"contrib/inventory/proxmox.py\", \n    \"component_raw\": \"contrib/inventory/proxmox.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18557\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Adds a `proxmox_node` value for each VM/container which gives you information about where it is running.\\n\\n\\n\\nExample:\\n\\n```\\n\\n$ ./contrib/inventory/proxmox.py --list --pretty\\n\\n\\n\\n[...]\\n\\n\\n\\n  \\\"_meta\\\": {\\n\\n    \\\"hostvars\\\": {\\n\\n      \\\"env-daniel\\\": {\\n\\n        \\\"proxmox_vmid\\\": 101,\\n\\n        \\\"proxmox_maxdisk\\\": 107374182400, \\n\\n        \\\"proxmox_status\\\": \\\"running\\\", \\n\\n        \\\"proxmox_netout\\\": 443291, \\n\\n        \\\"proxmox_cpus\\\": 6, \\n\\n        \\\"proxmox_node\\\": \\\"pmox02\\\", \\n\\n        \\\"proxmox_cpu\\\": 0.00282061084721094, \\n\\n        \\\"proxmox_uptime\\\": 15042, \\n\\n        \\\"proxmox_netin\\\": 8946716, \\n\\n        \\\"proxmox_pid\\\": \\\"32129\\\", \\n\\n        \\\"proxmox_diskwrite\\\": 0, \\n\\n        \\\"proxmox_diskread\\\": 0, \\n\\n        \\\"groups\\\": [\\n\\n          \\\"base\\\"\\n\\n        ], \\n\\n        \\\"proxmox_name\\\": \\\"env-daniel\\\", \\n\\n        \\\"proxmox_template\\\": \\\"\\\", \\n\\n        \\\"proxmox_maxmem\\\": 10737418240, \\n\\n        \\\"proxmox_mem\\\": 982559724, \\n\\n        \\\"proxmox_disk\\\": 0\\n\\n      },\\n\\n\\n\\n[...]\\n\\n```\", \n    \"title\": \"Add the proxmox node name as meta for a vm\"\n  }, \n  \"18558\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ngce module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nFixes #17075\\r\\n\\r\\nGCE internal authorization or installed application authentications stopped working when checking if the credentials_file is actually a JSON file.\\r\\n\\r\\nThe reason for this check is to make sure that the current version of libcloud supports JSON file, but the content itself is not checked, nor is the module failing if the file is not a JSON file.\\r\\n\\r\\nThis change reverts to the previous behaviour before the check was introduced which is to ignore if the file doesn't exist and to let libcloud module detect which kind of authentication is used. It also fixes module arguments being ignored if configured for internal authorization (use of empty strings as stated in Ansible documentation).\", \n    \"component_name\": \"gce\", \n    \"component_raw\": \"gce module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18558\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"module_util\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Fixes #17075\\n\\n\\n\\nGCE internal authorization or installed application authentications stopped working when checking if the credentials_file is actually a JSON file.\\n\\n\\n\\nThe reason for this check is to make sure that the current version of libcloud supports JSON file, but the content itself is not checked, nor is the module failing if the file is not a JSON file.\\n\\n\\n\\nThis change reverts to the previous behaviour before the check was introduced which is to ignore if the file doesn't exist and to let libcloud module detect which kind of authentication is used. It also fixes module arguments being ignored if configured for internal authorization (use of empty strings as stated in Ansible documentation).\", \n    \"title\": \"Fix broken authentication for GCE modules (#17075)\"\n  }, \n  \"18559\": {\n    \"ansible_version\": \"ansible 2.1.3.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible-playbook\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.1.3.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nDefaults from pip\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nWhen deprecated features disappear, the results of a playbook may change and yet not fail.\\r\\nUsers would benefit from a mode in `ansible-playbook` where deprecated tasks would fail, so as to identify them early on.\\r\\n\\r\\nFor example, in Ansible up to 2.1.x, this fake playbook should adds 4 configuration lines, but in 2.2 it would silently changes to adding a bogus line \\\"my_config\\\".\\r\\n```\\r\\n---\\r\\n- hosts: bla\\r\\n  vars:\\r\\n    my_config:\\r\\n      - \\\"vx200.configure=automagic\\\"\\r\\n      - \\\"autofibulator.variation_mode=static\\\"\\r\\n  tasks:\\r\\n    - lineinfile:\\r\\n        dest=/etc/some-critical-file\\r\\n        line: \\\"{{ item }}\\\"\\r\\n      with_flattened:\\r\\n        - my_config\\r\\n        - ['kevo=levo', 'ano=revo']\\r\\n```\\r\\n##### STEPS TO REPRODUCE\\r\\nThe default would remain to not throw errors on deprecation.\\r\\n\\r\\nDeprecation errors would be enabled/disabled through :\\r\\n- environment variable `ANSIBLE_ERROR_ON_DEPRECATION`\\r\\n- configuration option `error_on_deprecation`\\r\\n- command-line option `--error-on-deprecation`\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nPlaybooks plainly fail when they are not upgrade-proof regarding Ansible.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nPlaybooks run with deprecation warnings which are non-blocking and may be difficult to spot in the output flow.\", \n    \"component_name\": \"ansible-playbook\", \n    \"component_raw\": \"ansible-playbook\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18559\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When deprecated features disappear, the results of a playbook may change and yet not fail.\\n\\nUsers would benefit from a mode in `ansible-playbook` where deprecated tasks would fail, so as to identify them early on.\\n\\n\\n\\nFor example, in Ansible up to 2.1.x, this fake playbook should adds 4 configuration lines, but in 2.2 it would silently changes to adding a bogus line \\\"my_config\\\".\\n\\n```\\n\\n---\\n\\n- hosts: bla\\n\\n  vars:\\n\\n    my_config:\\n\\n      - \\\"vx200.configure=automagic\\\"\\n\\n      - \\\"autofibulator.variation_mode=static\\\"\\n\\n  tasks:\\n\\n    - lineinfile:\\n\\n        dest=/etc/some-critical-file\\n\\n        line: \\\"{{ item }}\\\"\\n\\n      with_flattened:\\n\\n        - my_config\\n\\n        - ['kevo=levo', 'ano=revo']\\n\\n```\", \n    \"title\": \"Add option to fail on deprecated features\"\n  }, \n  \"18567\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /Users/danielzitzman/projects/ops-tools-infrastructure/ansible.cfg\\nconfigured module search path = [library/]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\nec2.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /Users/danielzitzman/projects/ops-tools-infrastructure/ansible.cfg\\r\\n  configured module search path = ['library/']\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nIf the elasticcache cluster dose not have a primary endpoint the inventory script fails\", \n    \"component_name\": \"ec2.py\", \n    \"component_raw\": \"ec2.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18567\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"If the elasticcache cluster dose not have a primary endpoint the inventory script fails\", \n    \"title\": \"Elasticcache primaryEndpoint can be unassigned\"\n  }, \n  \"18568\": {\n    \"ansible_version\": \"Next release?\", \n    \"body\": \"<!---\\nPlease do not report issues/requests related to Ansible modules here !!\\n\\nReport them to the appropriate modules-core or modules-extras project:\\n  - https://github.com/ansible/ansible-modules-core/issues\\n  - https://github.com/ansible/ansible-modules-extras/issues\\n\\nAlso verify first that your issue/request is not already reported in GitHub\\n-->\\n\\n\\n##### ISSUE TYPE\\n<!--- Pick one below and delete the rest: -->\\n - Feature Idea\\n\\n##### COMPONENT NAME\\n<!--- Name of the plugin/task/feature -->\\n- SophosUTM\\nProbably this would be applicable for the XG firewall aswell.\\n\\n##### ANSIBLE VERSION\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n```\\nNext release?\\n```\\n\\n##### SUMMARY\\n<!--- Explain the problem briefly -->\\nI would like to see a module in the same manner as the other network OS that are already supported by ansible.\\nEven though the feature set of the UTM is bigger.\\nMost important would be Routing, firewall, networks, interfaces, up2date.\\n\\n\\n\", \n    \"component_name\": \"sophosutm\", \n    \"component_raw\": \"- SophosUTM\\nProbably this would be applicable for the XG firewall aswell.\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18568\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"networking\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I would like to see a module in the same manner as the other network OS that are already supported by ansible.\\nEven though the feature set of the UTM is bigger.\\nMost important would be Routing, firewall, networks, interfaces, up2date.\", \n    \"title\": \"Feature Request: ansible module to support Sophos UTM Restful API since v9.408\"\n  }, \n  \"18577\": {\n    \"ansible_version\": \"ansible 2.3.0 (moriyoshi/python3-fix 3dc4aa2530) last updated 2016/11/22 110053 (GMT +900)\\nlib/ansible/modules/core (detached HEAD 5c986306be) last updated 2016/11/22 081239 (GMT +900)\\nlib/ansible/modules/extras (detached HEAD 9511de1e3d) last updated 2016/11/22 081239 (GMT +900)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwinrm\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (moriyoshi/python3-fix 3dc4aa2530) last updated 2016/11/22 11:00:53 (GMT +900)\\r\\n  lib/ansible/modules/core: (detached HEAD 5c986306be) last updated 2016/11/22 08:12:39 (GMT +900)\\r\\n  lib/ansible/modules/extras: (detached HEAD 9511de1e3d) last updated 2016/11/22 08:12:39 (GMT +900)\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\n* This PR contains a number of fixes for the insufficient py3 support of winrm connector.\\r\\n* As for the hunk containing `format_exc()`, this simply seems to be a bug.\", \n    \"component_name\": \"winrm\", \n    \"component_raw\": \"winrm\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18577\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:plugins/connection\", \n      \"c:plugins/connection/winrm\", \n      \"c:plugins/shell\", \n      \"needs_revision\", \n      \"python3\", \n      \"windows\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"* This PR contains a number of fixes for the insufficient py3 support of winrm connector.\\n\\n* As for the hunk containing `format_exc()`, this simply seems to be a bug.\", \n    \"title\": \"Get windows support to work with Python 3\"\n  }, \n  \"18579\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nProxmox (Dynamic Inventory script)\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nUbuntu 16.04 LTS\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nThe [Proxmox inventory plugin](https://github.com/ansible/ansible/blob/devel/contrib/inventory/proxmox.py) does not work properly connecting to a Proxmox cluster (4.3.10). \\r\\n\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\nApparently it tries to get the VM config from an incorrect node:\\r\\n\\r\\n```sh\\r\\n$ python proxmox.py \\\\\\r\\n  --username=myuser@pve \\\\\\r\\n  --password=mypass \\\\\\r\\n  --url=https://myproxnode1:8006/ \\\\\\r\\n  --list --pretty\\r\\nTraceback (most recent call last):\\r\\n  File \\\"proxmox.py\\\", line 245, in <module>\\r\\n    main()\\r\\n  File \\\"proxmox.py\\\", line 231, in main\\r\\n    data = main_list(options)\\r\\n  File \\\"proxmox.py\\\", line 172, in main_list\\r\\n    description = proxmox_api.vm_description_by_type(node, vmid, type)['description']\\r\\n  File \\\"proxmox.py\\\", line 124, in vm_description_by_type\\r\\n    return self.get('api2/json/nodes/{}/{}/{}/config'.format(node, type, vm))\\r\\n  File \\\"proxmox.py\\\", line 112, in get\\r\\n    validate_certs=self.options.validate)\\r\\n  File \\\"/usr/lib/python2.7/dist-packages/ansible/module_utils/urls.py\\\", line 877, in open_url\\r\\n    r = urllib_request.urlopen(*urlopen_args)\\r\\n  File \\\"/usr/lib/python2.7/urllib2.py\\\", line 154, in urlopen\\r\\n    return opener.open(url, data, timeout)\\r\\n  File \\\"/usr/lib/python2.7/urllib2.py\\\", line 435, in open\\r\\n    response = meth(req, response)\\r\\n  File \\\"/usr/lib/python2.7/urllib2.py\\\", line 548, in http_response\\r\\n    'http', request, response, code, msg, hdrs)\\r\\n  File \\\"/usr/lib/python2.7/urllib2.py\\\", line 473, in error\\r\\n    return self._call_chain(*args)\\r\\n  File \\\"/usr/lib/python2.7/urllib2.py\\\", line 407, in _call_chain\\r\\n    result = func(*args)\\r\\n  File \\\"/usr/lib/python2.7/urllib2.py\\\", line 556, in http_error_default\\r\\n    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)\\r\\nurllib2.HTTPError: HTTP Error 500: Configuration file 'nodes/myproxnode1/qemu-server/110.conf' does not exist\\r\\n```\\r\\n\\r\\nThe VM 110 is not hosted in myproxnode1, but in myproxnode2\\r\\n\", \n    \"component_name\": \"proxmox (dynamic inventory script)\", \n    \"component_raw\": \"Proxmox (Dynamic Inventory script)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18579\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The [Proxmox inventory plugin](https://github.com/ansible/ansible/blob/devel/contrib/inventory/proxmox.py) does not work properly connecting to a Proxmox cluster (4.3.10).\", \n    \"title\": \"Proxmox dynamic inventory fails on a Proxmox Cluster\"\n  }, \n  \"18580\": {\n    \"ansible_version\": \"ansible 2.0.0.2\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\nplugin: lookup/etcd.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.0.0.2\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nImproved lookup/etcd.py added posibity to check remote etcd servers set directly from playbooks\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\\r\\n\\r\\n\\u2026 etcd server to query\\r\\n\\r\\n\\r\\ngundalow changed this to a feature (rather than bug) pull request\", \n    \"component_name\": \"plugin lookup/etcd.py\", \n    \"component_raw\": \"plugin: lookup/etcd.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18580\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/lookup\", \n      \"docs\", \n      \"feature\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Improved lookup/etcd.py added posibity to check remote etcd servers set directly from playbooks\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n\\n\\n```\\n\\n\\n\\n etcd server to query\\n\\n\\n\\n\\n\\ngundalow changed this to a feature (rather than bug) pull request\", \n    \"title\": \"etcd.py module improved . added posibility to configure from playbook\\u2026\"\n  }, \n  \"18583\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\ncontrib/inventory/consul_io.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nWhen datacenter is defined in the consul.ini conf file, kv groups are not retrieved for nodes, we should set self.current_dc with the right value to fix it\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n\", \n    \"component_name\": \"contrib/inventory/consul_io.py\", \n    \"component_raw\": \"contrib/inventory/consul_io.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18583\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When datacenter is defined in the consul.ini conf file, kv groups are not retrieved for nodes, we should set self.current_dc with the right value to fix it\", \n    \"title\": \"fix datacenter value in case where the datacenter is defined in the conf file\"\n  }, \n  \"18596\": {\n    \"ansible_version\": \"ansible 2.3.0 (remove_host f7f455dd84) last updated 2016/11/23 112143 (GMT +200)\\nlib/ansible/modules/core (detached HEAD b598611afb) last updated 2016/11/23 112332 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD 25292b3ebd) last updated 2016/11/23 112332 (GMT +200)\\nconfig file = /home/jpic/.ansible.cfg\\nconfigured module search path = [/home/jpic/ansible/library /usr/share/ansible]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nremove_host\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (remove_host f7f455dd84) last updated 2016/11/23 11:21:43 (GMT +200)\\r\\n  lib/ansible/modules/core: (detached HEAD b598611afb) last updated 2016/11/23 11:23:32 (GMT +200)\\r\\n  lib/ansible/modules/extras: (detached HEAD 25292b3ebd) last updated 2016/11/23 11:23:32 (GMT +200)\\r\\n  config file = /home/jpic/.ansible.cfg\\r\\n  configured module search path = ['/home/jpic/ansible/library', '/usr/share/ansible']\\r\\n```\\r\\n##### SUMMARY\\r\\nAdded remove_host module. This is for when a task actually destroys a host, then it can be removed from further plays.\", \n    \"component_name\": \"remove_host\", \n    \"component_raw\": \"remove_host\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18596\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:inventory/group\", \n      \"c:inventory/host\", \n      \"c:parsing/mod_args\", \n      \"c:plugins/action\", \n      \"c:plugins/strategy\", \n      \"feature\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Added remove_host module. This is for when a task actually destroys a host, then it can be removed from further plays.\", \n    \"title\": \"New module: remove_host\"\n  }, \n  \"18602\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/task/feature -->\\r\\nBlocks\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.2.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\nMac OS X El Capitan 10.11.5\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\nWhen setting `any_errors_fatal: true` in a playbook, the `rescue` and `always` tasks of a `block` are not being executed.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nThe following playbook can be used for reproducing:\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n---\\r\\n  - hosts: all\\r\\n    any_errors_fatal: true\\r\\n    tasks:\\r\\n      - block:\\r\\n          - debug: msg='i execute normally'\\r\\n          - command: /bin/false\\r\\n          - debug: msg='i never execute, cause ERROR!'\\r\\n        rescue:\\r\\n          - debug: msg='I caught an error'\\r\\n          - command: /bin/false\\r\\n          - debug: msg='I also never execute :-('\\r\\n        always:\\r\\n          - debug: msg=\\\"this always executes\\\"\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nThe rescue and always tasks should still be executed.\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nThe rescue and always tasks are not being executed.\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nPLAYBOOK: test.yaml ************************************************************\\r\\n1 plays in ansible/playbooks/test.yaml\\r\\n\\r\\nPLAY [all] *********************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\n<147.75.194.193> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<147.75.194.193> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r 147.75.194.193 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1479937439.84-251558112090132 `\\\" && echo ansible-tmp-1479937439.84-251558112090132=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1479937439.84-251558112090132 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<147.75.194.187> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<147.75.194.185> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<147.75.194.187> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r 147.75.194.187 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1479937439.85-156090383679565 `\\\" && echo ansible-tmp-1479937439.85-156090383679565=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1479937439.85-156090383679565 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<147.75.194.185> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r 147.75.194.185 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1479937439.85-136808136462208 `\\\" && echo ansible-tmp-1479937439.85-136808136462208=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1479937439.85-136808136462208 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<147.75.194.193> PUT /var/folders/rl/v6g1ht0s0cg53sqhfdvp3tvn2gcsw6/T/tmphtKlra TO /root/.ansible/tmp/ansible-tmp-1479937439.84-251558112090132/setup\\r\\n<147.75.194.193> SSH: EXEC sftp -b - -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r '[147.75.194.193]'\\r\\n<147.75.194.187> PUT /var/folders/rl/v6g1ht0s0cg53sqhfdvp3tvn2gcsw6/T/tmpxi9hLP TO /root/.ansible/tmp/ansible-tmp-1479937439.85-156090383679565/setup\\r\\n<147.75.194.187> SSH: EXEC sftp -b - -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r '[147.75.194.187]'\\r\\n<147.75.194.185> PUT /var/folders/rl/v6g1ht0s0cg53sqhfdvp3tvn2gcsw6/T/tmpMqMiUP TO /root/.ansible/tmp/ansible-tmp-1479937439.85-136808136462208/setup\\r\\n<147.75.194.185> SSH: EXEC sftp -b - -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r '[147.75.194.185]'\\r\\n<147.75.194.193> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<147.75.194.193> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r 147.75.194.193 '/bin/sh -c '\\\"'\\\"'chmod u+x /root/.ansible/tmp/ansible-tmp-1479937439.84-251558112090132/ /root/.ansible/tmp/ansible-tmp-1479937439.84-251558112090132/setup && sleep 0'\\\"'\\\"''\\r\\n<147.75.194.187> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<147.75.194.187> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r 147.75.194.187 '/bin/sh -c '\\\"'\\\"'chmod u+x /root/.ansible/tmp/ansible-tmp-1479937439.85-156090383679565/ /root/.ansible/tmp/ansible-tmp-1479937439.85-156090383679565/setup && sleep 0'\\\"'\\\"''\\r\\n<147.75.194.185> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<147.75.194.185> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r 147.75.194.185 '/bin/sh -c '\\\"'\\\"'chmod u+x /root/.ansible/tmp/ansible-tmp-1479937439.85-136808136462208/ /root/.ansible/tmp/ansible-tmp-1479937439.85-136808136462208/setup && sleep 0'\\\"'\\\"''\\r\\n<147.75.194.193> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<147.75.194.193> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r -tt 147.75.194.193 '/bin/sh -c '\\\"'\\\"'LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1479937439.84-251558112090132/setup; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1479937439.84-251558112090132/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\n<147.75.194.187> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<147.75.194.187> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r -tt 147.75.194.187 '/bin/sh -c '\\\"'\\\"'LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1479937439.85-156090383679565/setup; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1479937439.85-156090383679565/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\n<147.75.194.185> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<147.75.194.185> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r -tt 147.75.194.185 '/bin/sh -c '\\\"'\\\"'LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1479937439.85-136808136462208/setup; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1479937439.85-136808136462208/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\nok: [kismatic-1479933322-etcd-0]\\r\\nok: [kismatic-1479933322-master-0]\\r\\nok: [kismatic-1479933322-worker-0]\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\ntask path: /Users/abrand/Dev/go/src/github.com/apprenda/kismatic/out/ansible/playbooks/test.yaml:6\\r\\nok: [kismatic-1479933322-worker-0] => {\\r\\n    \\\"msg\\\": \\\"i execute normally\\\"\\r\\n}\\r\\nok: [kismatic-1479933322-master-0] => {\\r\\n    \\\"msg\\\": \\\"i execute normally\\\"\\r\\n}\\r\\nok: [kismatic-1479933322-etcd-0] => {\\r\\n    \\\"msg\\\": \\\"i execute normally\\\"\\r\\n}\\r\\n\\r\\nTASK [command] *****************************************************************\\r\\ntask path: /Users/abrand/Dev/go/src/github.com/apprenda/kismatic/out/ansible/playbooks/test.yaml:7\\r\\n<147.75.194.193> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<147.75.194.193> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r 147.75.194.193 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1479937441.82-17242985279238 `\\\" && echo ansible-tmp-1479937441.82-17242985279238=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1479937441.82-17242985279238 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<147.75.194.187> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<147.75.194.185> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<147.75.194.187> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r 147.75.194.187 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1479937441.82-81278325460380 `\\\" && echo ansible-tmp-1479937441.82-81278325460380=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1479937441.82-81278325460380 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<147.75.194.185> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r 147.75.194.185 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1479937441.82-229832611546373 `\\\" && echo ansible-tmp-1479937441.82-229832611546373=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1479937441.82-229832611546373 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<147.75.194.193> PUT /var/folders/rl/v6g1ht0s0cg53sqhfdvp3tvn2gcsw6/T/tmpmJiq4J TO /root/.ansible/tmp/ansible-tmp-1479937441.82-17242985279238/command\\r\\n<147.75.194.185> PUT /var/folders/rl/v6g1ht0s0cg53sqhfdvp3tvn2gcsw6/T/tmpq_XZnc TO /root/.ansible/tmp/ansible-tmp-1479937441.82-229832611546373/command\\r\\n<147.75.194.193> SSH: EXEC sftp -b - -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r '[147.75.194.193]'\\r\\n<147.75.194.185> SSH: EXEC sftp -b - -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r '[147.75.194.185]'\\r\\n<147.75.194.187> PUT /var/folders/rl/v6g1ht0s0cg53sqhfdvp3tvn2gcsw6/T/tmpiA7pMZ TO /root/.ansible/tmp/ansible-tmp-1479937441.82-81278325460380/command\\r\\n<147.75.194.187> SSH: EXEC sftp -b - -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r '[147.75.194.187]'\\r\\n<147.75.194.185> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<147.75.194.193> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<147.75.194.187> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<147.75.194.193> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r 147.75.194.193 '/bin/sh -c '\\\"'\\\"'chmod u+x /root/.ansible/tmp/ansible-tmp-1479937441.82-17242985279238/ /root/.ansible/tmp/ansible-tmp-1479937441.82-17242985279238/command && sleep 0'\\\"'\\\"''\\r\\n<147.75.194.187> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r 147.75.194.187 '/bin/sh -c '\\\"'\\\"'chmod u+x /root/.ansible/tmp/ansible-tmp-1479937441.82-81278325460380/ /root/.ansible/tmp/ansible-tmp-1479937441.82-81278325460380/command && sleep 0'\\\"'\\\"''\\r\\n<147.75.194.185> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r 147.75.194.185 '/bin/sh -c '\\\"'\\\"'chmod u+x /root/.ansible/tmp/ansible-tmp-1479937441.82-229832611546373/ /root/.ansible/tmp/ansible-tmp-1479937441.82-229832611546373/command && sleep 0'\\\"'\\\"''\\r\\n<147.75.194.185> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<147.75.194.185> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r -tt 147.75.194.185 '/bin/sh -c '\\\"'\\\"'LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1479937441.82-229832611546373/command; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1479937441.82-229832611546373/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\n<147.75.194.193> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<147.75.194.187> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<147.75.194.193> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r -tt 147.75.194.193 '/bin/sh -c '\\\"'\\\"'LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1479937441.82-17242985279238/command; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1479937441.82-17242985279238/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\n<147.75.194.187> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=22 -o 'IdentityFile=\\\"/Users/abrand/.ssh/id_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=60 -o ControlPath=/Users/abrand/.ansible/cp/ansible-ssh-%h-%p-%r -tt 147.75.194.187 '/bin/sh -c '\\\"'\\\"'LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1479937441.82-81278325460380/command; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1479937441.82-81278325460380/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\nfatal: [kismatic-1479933322-etcd-0]: FAILED! => {\\\"changed\\\": true, \\\"cmd\\\": [\\\"/bin/false\\\"], \\\"delta\\\": \\\"0:00:00.002309\\\", \\\"end\\\": \\\"2016-11-23 21:44:02.179849\\\", \\\"failed\\\": true, \\\"invocation\\\": {\\\"module_args\\\": {\\\"_raw_params\\\": \\\"/bin/false\\\", \\\"_uses_shell\\\": false, \\\"chdir\\\": null, \\\"creates\\\": null, \\\"executable\\\": null, \\\"removes\\\": null, \\\"warn\\\": true}, \\\"module_name\\\": \\\"command\\\"}, \\\"rc\\\": 1, \\\"start\\\": \\\"2016-11-23 21:44:02.177540\\\", \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"\\\", \\\"stdout_lines\\\": [], \\\"warnings\\\": []}\\r\\nfatal: [kismatic-1479933322-worker-0]: FAILED! => {\\\"changed\\\": true, \\\"cmd\\\": [\\\"/bin/false\\\"], \\\"delta\\\": \\\"0:00:00.002343\\\", \\\"end\\\": \\\"2016-11-23 21:44:02.179822\\\", \\\"failed\\\": true, \\\"invocation\\\": {\\\"module_args\\\": {\\\"_raw_params\\\": \\\"/bin/false\\\", \\\"_uses_shell\\\": false, \\\"chdir\\\": null, \\\"creates\\\": null, \\\"executable\\\": null, \\\"removes\\\": null, \\\"warn\\\": true}, \\\"module_name\\\": \\\"command\\\"}, \\\"rc\\\": 1, \\\"start\\\": \\\"2016-11-23 21:44:02.177479\\\", \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"\\\", \\\"stdout_lines\\\": [], \\\"warnings\\\": []}\\r\\nfatal: [kismatic-1479933322-master-0]: FAILED! => {\\\"changed\\\": true, \\\"cmd\\\": [\\\"/bin/false\\\"], \\\"delta\\\": \\\"0:00:00.002380\\\", \\\"end\\\": \\\"2016-11-23 21:44:02.171827\\\", \\\"failed\\\": true, \\\"invocation\\\": {\\\"module_args\\\": {\\\"_raw_params\\\": \\\"/bin/false\\\", \\\"_uses_shell\\\": false, \\\"chdir\\\": null, \\\"creates\\\": null, \\\"executable\\\": null, \\\"removes\\\": null, \\\"warn\\\": true}, \\\"module_name\\\": \\\"command\\\"}, \\\"rc\\\": 1, \\\"start\\\": \\\"2016-11-23 21:44:02.169447\\\", \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"\\\", \\\"stdout_lines\\\": [], \\\"warnings\\\": []}\\r\\n\\r\\nNO MORE HOSTS LEFT *************************************************************\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nkismatic-1479933322-etcd-0 : ok=2    changed=0    unreachable=0    failed=0\\r\\nkismatic-1479933322-master-0 : ok=2    changed=0    unreachable=0    failed=0\\r\\nkismatic-1479933322-worker-0 : ok=2    changed=0    unreachable=0    failed=0\\r\\n```\\r\\n\", \n    \"component_name\": \"blocks\", \n    \"component_raw\": \"Blocks\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18602\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When setting `any_errors_fatal: true` in a playbook, the `rescue` and `always` tasks of a `block` are not being executed.\", \n    \"title\": \"Rescue and Always tasks are not executed if playbook has any_errors_fatal: true\"\n  }, \n  \"18611\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodule_utils.docker_common\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nfix docker container with empty name\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\nfatal: [****]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Error retrieving container list: argument of type 'NoneType' is not iterable\\\"}\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"module_utils.docker_common\", \n    \"component_raw\": \"module_utils.docker_common\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18611\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"cloud\", \n      \"docker\", \n      \"module_util\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"fix docker container with empty name\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\nfatal: [****]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Error retrieving container list: argument of type 'NoneType' is not iterable\\\"}\\n\\n```\", \n    \"title\": \"fix docker container with empty name\"\n  }, \n  \"18619\": {\n    \"ansible_version\": \"ansible 1.9.6\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible connection closed frequently, at the same time, native ssh test is running normally\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 1.9.6\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n[defaults]\\r\\nforks = 100\\r\\ninventory = /home/test/inventory \\r\\npipelining = True\\r\\nhost_key_checking = False\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nCentOS Linux release 7.2.1511 (Core)\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nIn our test environment, ansible lost connection frequently.\\r\\n  \\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n1. copy below ansible test script\\r\\n2. change the inventory and host ip in the script, and copy public key to target host\\r\\n3. run the ansible test script\\r\\n\\r\\nat the same time, I start another native ssh test\\r\\n\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\nansible-test.bash\\r\\n```\\r\\ncount=0\\r\\necho `date` >> ansible.log\\r\\nwhile [ true ];do\\r\\n        count=$((count + 1))\\r\\n        echo $count >> ansible.log\\r\\n        ansible -vvvv -i /home/test/inventory 172.20.198.103 -m shell -a \\\"ls && sleep 5\\\" >> ansible.log 2>&1\\r\\n        if [ $? -eq 0 ];then\\r\\n                sleep 1\\r\\n        else\\r\\n                echo `date` >> ansible.log\\r\\n                echo \\\"failed\\\" >> ansible.log\\r\\n                exit 1\\r\\n        fi\\r\\ndone\\r\\n```\\r\\nnative-ssh-test.bash\\r\\n```\\r\\ncount=0\\r\\nwhile [ true ];do\\r\\n\\tcount=$((count + 1))\\r\\n        echo $count >> shell.log\\r\\n\\tssh root@172.20.198.103 'ls && sleep 5' >> shell.log 2>&1\\r\\n\\tif [ $? -eq 0 ];then\\r\\n\\t\\tsleep 1\\r\\n\\telse\\r\\n\\t\\techo date >> shell.log\\r\\n\\t\\techo \\\"failed\\\" >> shell.log\\r\\n\\t\\texit 1\\r\\n\\tfi\\r\\ndone\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nThe test process should not be break.\\r\\nIf network problem, all test scripts will break at the same time.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nAfter long time run(maybe half hour or one hour), the ansible test script will break while native ssh test script running all the  time.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n172.20.198.103 | FAILED >> {\\r\\n    \\\"failed\\\": true, \\r\\n    \\\"msg\\\": \\\"OpenSSH_6.6.1, OpenSSL 1.0.1e-fips 11 Feb 2013\\\\r\\\\ndebug1: Reading configuration data /etc/ssh/ssh_config\\\\r\\\\ndebug1: /etc/ssh/ssh_config line 57: Applying options for *\\\\r\\\\ndebug1: auto-mux: Trying existing master\\\\r\\\\ndebug2: fd 3 setting O_NONBLOCK\\\\r\\\\ndebug2: mux_client_hello_exchange: master version 4\\\\r\\\\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\\\\r\\\\ndebug3: mux_client_request_session: entering\\\\r\\\\ndebug3: mux_client_request_alive: entering\\\\r\\\\ndebug3: mux_client_request_alive: done pid = 18621\\\\r\\\\ndebug3: mux_client_request_session: session request sent\\\\r\\\\ndebug1: mux_client_request_session: master session id: 2\\\\r\\\\ndebug3: mux_client_read_packet: read header failed: Broken pipe\\\\r\\\\ndebug2: Received exit status from master 0\\\\r\\\\nShared connection to 172.20.198.103 closed.\\\\r\\\\n\\\", \\r\\n    \\\"parsed\\\": false\\r\\n} \\r\\n```\\r\\n\", \n    \"component_name\": \"ansible connection closed frequently at the same time native ssh test is running normally\", \n    \"component_raw\": \"ansible connection closed frequently, at the same time, native ssh test is running normally\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18619\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_1.9\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"In our test environment, ansible lost connection frequently.\", \n    \"title\": \"ansible connection closed when running task\"\n  }, \n  \"18621\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\nplugins/callback/skippy.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nImplements/fixes #9034\\r\\n\\r\\nThis modification of skippy callback plugin just hides banner for skipped tasks (original plugin prints task banner). Reasons you can read in issue.\\r\\n\\r\\nOriginal developer is @varunkatta, I just updated plugin for ansible v2.2\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n**Output fefore**\\r\\n```\\r\\nPLAY [all] *********************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [antoshka.front]\\r\\n\\r\\nTASK [antoshka : Add 'Backup db' cronjob] **************************************\\r\\n\\r\\nTASK [antoshka : Add 'Upload db backup' cronjob] *******************************\\r\\n\\r\\nTASK [antoshka : Add 'Backup media' cronjob] ***********************************\\r\\n\\r\\nTASK [antoshka : Add 'sync media' cronjob] *************************************\\r\\n\\r\\nTASK [antoshka : Add 'sync pdf_view' cronjob] **********************************\\r\\n\\r\\nTASK [antoshka : Add Magento cronjob] ******************************************\\r\\n\\r\\nTASK [antoshka : Add 'ERP import' cronjob] *************************************\\r\\n\\r\\nTASK [antoshka : Add 'ERP full import' cronjob] ********************************\\r\\n\\r\\nTASK [antoshka : Add 'ERP warehouse stock import' cronjob] *********************\\r\\n\\r\\nTASK [antoshka : Add 'ERP warehouse full stock import' cronjob] ****************\\r\\n\\r\\nTASK [antoshka : Add 'ERP offers full import' cronjob] *************************\\r\\n\\r\\nTASK [antoshka : Add 'Connector export' cronjob] *******************************\\r\\n\\r\\nTASK [antoshka : Add 'Prom.ua export' cronjob] *********************************\\r\\n\\r\\nTASK [antoshka : Add 'NovaPoshta Sync' cronjob] ********************************\\r\\n\\r\\nTASK [antoshka : Add 'Clean Magento Cache' cronjob] ****************************\\r\\nok: [antoshka.front]\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nantoshka.front             : ok=2    changed=0    unreachable=0    failed=0   \\r\\n```\\r\\n\\r\\n**Output after**\\r\\n```\\r\\nPLAY [all] *********************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [antoshka.front]\\r\\n\\r\\nTASK [antoshka : Add 'Clean Magento Cache' cronjob] ****************************\\r\\nok: [antoshka.front]\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nantoshka.front             : ok=2    changed=0    unreachable=0    failed=0   \\r\\n```\", \n    \"component_name\": \"plugins/callback/skippy.py\", \n    \"component_raw\": \"plugins/callback/skippy.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18621\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/callback\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Implements/fixes #9034\\n\\n\\n\\nThis modification of skippy callback plugin just hides banner for skipped tasks (original plugin prints task banner). Reasons you can read in issue.\\n\\n\\n\\nOriginal developer is @varunkatta, I just updated plugin for ansible v2.2\\n\\n\\n\\n\\n\\n\\n\\n**Output fefore**\\n\\n```\\n\\nPLAY [all] *********************************************************************\\n\\n\\n\\nTASK [setup] *******************************************************************\\n\\nok: [antoshka.front]\\n\\n\\n\\nTASK [antoshka : Add 'Backup db' cronjob] **************************************\\n\\n\\n\\nTASK [antoshka : Add 'Upload db backup' cronjob] *******************************\\n\\n\\n\\nTASK [antoshka : Add 'Backup media' cronjob] ***********************************\\n\\n\\n\\nTASK [antoshka : Add 'sync media' cronjob] *************************************\\n\\n\\n\\nTASK [antoshka : Add 'sync pdf_view' cronjob] **********************************\\n\\n\\n\\nTASK [antoshka : Add Magento cronjob] ******************************************\\n\\n\\n\\nTASK [antoshka : Add 'ERP import' cronjob] *************************************\\n\\n\\n\\nTASK [antoshka : Add 'ERP full import' cronjob] ********************************\\n\\n\\n\\nTASK [antoshka : Add 'ERP warehouse stock import' cronjob] *********************\\n\\n\\n\\nTASK [antoshka : Add 'ERP warehouse full stock import' cronjob] ****************\\n\\n\\n\\nTASK [antoshka : Add 'ERP offers full import' cronjob] *************************\\n\\n\\n\\nTASK [antoshka : Add 'Connector export' cronjob] *******************************\\n\\n\\n\\nTASK [antoshka : Add 'Prom.ua export' cronjob] *********************************\\n\\n\\n\\nTASK [antoshka : Add 'NovaPoshta Sync' cronjob] ********************************\\n\\n\\n\\nTASK [antoshka : Add 'Clean Magento Cache' cronjob] ****************************\\n\\nok: [antoshka.front]\\n\\n\\n\\nPLAY RECAP *********************************************************************\\n\\nantoshka.front             : ok=2    changed=0    unreachable=0    failed=0   \\n\\n```\\n\\n\\n\\n**Output after**\\n\\n```\\n\\nPLAY [all] *********************************************************************\\n\\n\\n\\nTASK [setup] *******************************************************************\\n\\nok: [antoshka.front]\\n\\n\\n\\nTASK [antoshka : Add 'Clean Magento Cache' cronjob] ****************************\\n\\nok: [antoshka.front]\\n\\n\\n\\nPLAY RECAP *********************************************************************\\n\\nantoshka.front             : ok=2    changed=0    unreachable=0    failed=0   \\n\\n```\", \n    \"title\": \"skippy callback plugin: hides banner for skipped tasks\"\n  }, \n  \"18629\": {\n    \"ansible_version\": \"2.2.0.0\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/task/feature -->\\r\\nexecutor/module_common.py\\r\\nmodule_utils/base.py\\r\\nmodule_utils/_text.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nlocal OS = CentOS 7, Python 2.7.5\\r\\nremote OS = FreeBSD 8.2, Python 3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nTrying to run ansible on the remote host fails with syntax errors, I'm able to get modules to run after editting the three files above.  Most of the issues where statically defining a string as unicode (u'test' will fail).  Also had to statically define ZIPDATA a binary (in Python 3, ZIPDATE = b\\\"\\\"\\\"(blah)\\\"\\\"\\\")\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nJust run ansible on a py2 local OS on a py3 remote OS (and only py3)\\r\\n\\r\\nansible host -m ping\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"executor/module_common.py\", \n    \"component_raw\": \"executor/module_common.py\\nmodule_utils/base.py\\nmodule_utils/_text.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18629\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"python3\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Trying to run ansible on the remote host fails with syntax errors, I'm able to get modules to run after editting the three files above.  Most of the issues where statically defining a string as unicode (u'test' will fail).  Also had to statically define ZIPDATA a binary (in Python 3, ZIPDATE = b\\\"\\\"\\\"(blah)\\\"\\\"\\\")\", \n    \"title\": \"SyntaxError on Python 3 remote hosts in module wrappers\"\n  }, \n  \"18636\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndocker_common\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\ndevel\\r\\n\\r\\n##### SUMMARY\\r\\nAnsible does not allow addressing docker images by ID. But, docker supports the same.\\r\\n\\r\\nI couldn't find a method in docker-py to lookup images by its ID. As a workaround, lets fetch the list of all images in the system and operate on it.\\r\\n\\r\\nFixes issue ( https://github.com/ansible/ansible-modules-core/issues/5731 )\\r\\n\\r\\n### Before:\\r\\n\\r\\n```\\r\\n# ansible -m docker_container -a 'name=foo image=ad99ce1f7ccc0eebd6dcd0543ca9e8e28ca7ec571cc533a3aea8b6378a77aa97 command=true' localhost\\r\\nlocalhost | FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"msg\\\": \\\"Error pulling image ad99ce1f7ccc0eebd6dcd0543ca9e8e28ca7ec571cc533a3aea8b6378a77aa97:latest - 500 Server Error: Internal Server Error (\\\\\\\"Invalid repository name (ad99ce1f7ccc0eebd6dcd0543ca9e8e28ca7ec571cc533a3aea8b6378a77aa97), cannot specify 64-byte hexadecimal strings\\\\\\\")\\\"\\r\\n}\\r\\n```\\r\\n\\r\\n### After:\\r\\n\\r\\n```\\r\\n# ansible -m docker_container -a 'name=foo image=ad99ce1f7ccc0eebd6dcd0543ca9e8e28ca7ec571cc533a3aea8b6378a77aa97 command=true' localhost\\r\\nlocalhost | SUCCESS => {\\r\\n    \\\"ansible_facts\\\": {},\\r\\n    \\\"changed\\\": true\\r\\n}\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"docker_common\", \n    \"component_raw\": \"docker_common\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18636\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"cloud\", \n      \"docker\", \n      \"feature\", \n      \"module_util\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Ansible does not allow addressing docker images by ID. But, docker supports the same.\\n\\n\\n\\nI couldn't find a method in docker-py to lookup images by its ID. As a workaround, lets fetch the list of all images in the system and operate on it.\\n\\n\\n\\nFixes issue ( https://github.com/ansible/ansible-modules-core/issues/5731 )\\n\\n\\n\\n### Before:\\n\\n\\n\\n```\\n\\n# ansible -m docker_container -a 'name=foo image=ad99ce1f7ccc0eebd6dcd0543ca9e8e28ca7ec571cc533a3aea8b6378a77aa97 command=true' localhost\\n\\nlocalhost | FAILED! => {\\n\\n    \\\"changed\\\": false,\\n\\n    \\\"failed\\\": true,\\n\\n    \\\"msg\\\": \\\"Error pulling image ad99ce1f7ccc0eebd6dcd0543ca9e8e28ca7ec571cc533a3aea8b6378a77aa97:latest - 500 Server Error: Internal Server Error (\\\\\\\"Invalid repository name (ad99ce1f7ccc0eebd6dcd0543ca9e8e28ca7ec571cc533a3aea8b6378a77aa97), cannot specify 64-byte hexadecimal strings\\\\\\\")\\\"\\n\\n}\\n\\n```\\n\\n\\n\\n### After:\\n\\n\\n\\n```\\n\\n# ansible -m docker_container -a 'name=foo image=ad99ce1f7ccc0eebd6dcd0543ca9e8e28ca7ec571cc533a3aea8b6378a77aa97 command=true' localhost\\n\\nlocalhost | SUCCESS => {\\n\\n    \\\"ansible_facts\\\": {},\\n\\n    \\\"changed\\\": true\\n\\n}\\n\\n```\", \n    \"title\": \"docker_common - Add support for lookup image by Id\"\n  }, \n  \"18643\": {\n    \"ansible_version\": \"ansible 2.3.0 (file_transfer_pipeline 44cf3bb916) last updated 2016/11/27 214618 (GMT -600)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`ssh` connection plugin\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (file_transfer_pipeline 44cf3bb916) last updated 2016/11/27 21:46:18 (GMT -600)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThis commit adds a new `dd`-based method for pushing/pulling files over SSH. It also introduces a new config option (`transfer_method`) that overrides `scp_if_ssh` if set.\\r\\n\\r\\nThis new transfer method is useful in cases where neither `sftp` or `scp` are functional, or where you're pulling dirty tricks that make paths not line up between the `ssh` commands and the file transfer commands.\\r\\n\\r\\n\", \n    \"component_name\": \"ssh connection plugin\", \n    \"component_raw\": \"`ssh` connection plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18643\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:constants\", \n      \"c:playbook/play\", \n      \"c:playbook/play_context\", \n      \"c:plugins/connection\", \n      \"c:plugins/connection/ssh\", \n      \"feature\", \n      \"needs_revision\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This commit adds a new `dd`-based method for pushing/pulling files over SSH. It also introduces a new config option (`transfer_method`) that overrides `scp_if_ssh` if set.\\n\\n\\n\\nThis new transfer method is useful in cases where neither `sftp` or `scp` are functional, or where you're pulling dirty tricks that make paths not line up between the `ssh` commands and the file transfer commands.\", \n    \"title\": \"Add pipeline-ish method using dd for file transfer over SSH (#18642)\"\n  }, \n  \"18650\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/task/feature -->\\r\\nansible/module_utils/ovirt.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWe should add an common option to all Ansible oVirt modules, which will say if we should fetch additional data from entities in API, which are provided as links. This would cost are addinional API calls and so performance degradation, but in favor of more user data.\\r\\n\\r\\nWe should add an new parameter called 'fetch_data' or similar, which will fetch names and ids of additinal entities, we should also consider doing it an integer so we can fetch another nested entities of nested entities.\", \n    \"component_name\": \"ansible/module_utils/ovirt.py\", \n    \"component_raw\": \"ansible/module_utils/ovirt.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18650\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [], \n    \"module_match\": null, \n    \"summary\": \"We should add an common option to all Ansible oVirt modules, which will say if we should fetch additional data from entities in API, which are provided as links. This would cost are addinional API calls and so performance degradation, but in favor of more user data.\\n\\n\\n\\nWe should add an new parameter called 'fetch_data' or similar, which will fetch names and ids of additinal entities, we should also consider doing it an integer so we can fetch another nested entities of nested entities.\", \n    \"title\": \"Add possibility to list nested level of linked object in returned type of oVirt modules\"\n  }, \n  \"18659\": {\n    \"ansible_version\": \"ansible 2.1.3.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`hashi_vault` lookup plugin\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.1.3.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThis allows getting the Vault token from the `VAULT_TOKEN` env var or from the file `$HOME/.vault-token`, as both of these are understood by the Vault CLI and are a common place to put Vault tokens. This allows avoiding hard-coding a Vault token into playbooks or having to include lookups.\\r\\n\\r\\n`HOME/.vault-token` is nice because a user can authenticate with the CLI using `vault auth` and then the token will be stored in `$HOME/.vault-token`. If we read this file, then we allow someone to do `vault auth` \\\"out of band\\\" to set up Vault access.\\r\\n\", \n    \"component_name\": \"hashi_vault lookup plugin\", \n    \"component_raw\": \"`hashi_vault` lookup plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18659\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/lookup\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This allows getting the Vault token from the `VAULT_TOKEN` env var or from the file `$HOME/.vault-token`, as both of these are understood by the Vault CLI and are a common place to put Vault tokens. This allows avoiding hard-coding a Vault token into playbooks or having to include lookups.\\n\\n\\n\\n`HOME/.vault-token` is nice because a user can authenticate with the CLI using `vault auth` and then the token will be stored in `$HOME/.vault-token`. If we read this file, then we allow someone to do `vault auth` \\\"out of band\\\" to set up Vault access.\", \n    \"title\": \"hashi_vault: Get token from env var or file\"\n  }, \n  \"18661\": {\n    \"ansible_version\": \"ansible 2.3.0 (feature/role_templates 520a12f6f0) last updated 2016/11/28 193106 (GMT +900)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible-galaxy cli\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (feature/role_templates 520a12f6f0) last updated 2016/11/28 19:31:06 (GMT +900)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAs a role developer I want to use custom role templates for each of my projects\\r\\nand still use `ansible-galaxy init` for initial role skeleton generation. The\\r\\nadditional `-t` argument sets the path to search for such templates instead of\\r\\nstandard one. It may be useful in corporate environment where each team has it's\\r\\nown role templates.\\r\\n\\r\\nUsage example: \\r\\n```\\r\\nansible-galaxy init  -p ~/Project1/roles -t ~/Project1/role_templates role1\\r\\n```\\r\\n\", \n    \"component_name\": \"ansible-galaxy cli\", \n    \"component_raw\": \"ansible-galaxy cli\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18661\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:cli/\", \n      \"c:galaxy/\", \n      \"docs\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"As a role developer I want to use custom role templates for each of my projects\\n\\nand still use `ansible-galaxy init` for initial role skeleton generation. The\\n\\nadditional `-t` argument sets the path to search for such templates instead of\\n\\nstandard one. It may be useful in corporate\", \n    \"title\": \"Support external templates directory for role init\"\n  }, \n  \"18662\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nplugins/lookup/template.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\ndevel\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThis allows template evaluation to be controlled with inline variable\\r\\ndefinitions that augment whatever variables are defined already:\\r\\n\\r\\n    {{ lookup('template','x.j2',set_variables=dict(x=42)) }}\", \n    \"component_name\": \"plugins/lookup/template.py\", \n    \"component_raw\": \"plugins/lookup/template.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18662\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/lookup\", \n      \"docs\", \n      \"feature\", \n      \"in progress\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This allows template evaluation to be controlled with inline variable\\n\\ndefinitions that augment whatever variables are defined already:\\n\\n\\n\\n    {{ lookup('template','x.j2',set_variables=dict(x=42)) }}\", \n    \"title\": \"Allow variables to be passed in to the template lookup plugin\"\n  }, \n  \"18665\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 8e4d95b125) last updated 2016/11/29 184542 (GMT +1000)\\nlib/ansible/modules/core (rds_split 8f4cfaee07) last updated 2016/11/28 223805 (GMT +1000)\\nlib/ansible/modules/extras (detached HEAD 43bb97bc37) last updated 2016/11/28 203643 (GMT +1000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansiballz\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel 8e4d95b125) last updated 2016/11/29 18:45:42 (GMT +1000)\\r\\n  lib/ansible/modules/core: (rds_split 8f4cfaee07) last updated 2016/11/28 22:38:05 (GMT +1000)\\r\\n  lib/ansible/modules/extras: (detached HEAD 43bb97bc37) last updated 2016/11/28 20:36:43 (GMT +1000)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nOS X with python from homebrew or virtualenv\\r\\n\\r\\n##### SUMMARY\\r\\nRunning `python $module_package execute` runs under /usr/bin/python, whether virtualenv or homebrew in use\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```\\r\\nvirtualenv /path/to/venv\\r\\nsource /path/to/venv/bin/activate\\r\\npip install ansible epdb\\r\\nANSIBLE_KEEP_REMOTE_FILES=1 ansible-playbook playbook.yml -vvv\\r\\npython $module_package explode\\r\\n# add an `import epdb` statement and `epdb.st()`\\r\\npython $module_package execute\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nPython drops into epdb session\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\n$ python /Users/will/.ansible/tmp/ansible-tmp-1480409869.55-272491715446155/rds_instance.py execute\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/Users/will/.ansible/tmp/ansible-tmp-1480409869.55-272491715446155/debug_dir/ansible_module_rds_instance.py\\\", line 710, in <module>\\r\\n    main()\\r\\n  File \\\"/Users/will/.ansible/tmp/ansible-tmp-1480409869.55-272491715446155/debug_dir/ansible_module_rds_instance.py\\\", line 678, in main\\r\\n    import epdb\\r\\nImportError: No module named epdb\\r\\n```\\r\\n\\r\\nIf I update the path in the ansiballz module (to remove the `/usr/bin/` in front of python) it works fine.\", \n    \"component_name\": \"ansiballz\", \n    \"component_raw\": \"ansiballz\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18665\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Running `python $module_package execute` runs under /usr/bin/python, whether virtualenv or homebrew in use\", \n    \"title\": \"ansiballz invoking incorrect interpreter\"\n  }, \n  \"18687\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n - systemd module (core/systemd.py)\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n```\\r\\n[defaults]\\r\\nforks=40\\r\\ntimeout=60\\r\\nremote_user=root\\r\\nmodule_name=shell\\r\\nerror_on_undefined_vars=True\\r\\njinja2_extensions=jinja2.ext.do\\r\\nretry_files_enabled = False\\r\\nretry_files_save_path = ~/\\r\\n#host_key_checking=True\\r\\n\\r\\n[ssh_connection]\\r\\npipelining=True\\r\\nscp_if_ssh=True\\r\\ncontrol_path=%(directory)s/%%h-%%p-%%r\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n - MacOS controlling host\\r\\n - Debian 8.6 target/managed host\\r\\n\\r\\n##### SUMMARY\\r\\nWe experience the following issue with ansible 2.2.0. On a systemd OS (Debian 8), the systemd.py module seems to fail to workaround the Debian issue with the broken 'is-enabled' target on daemons that only provide sysv scripts and no systemd scripts. If a systemd .service file is present in addition to the sysv /etc/init.d/script or standalone it functions fine. Please find some additional details and a proposed patch against 2.2.0.0 (which seems will be different against HEAD) further in this ticket.\\r\\n\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```\\r\\napt-get install atop # (an example deamon without systemd service file. it enables itself upon install by creating the required symlinks)\\r\\n\\r\\n# ls -l /etc/rc?.d/S??atop\\r\\nlrwxrwxrwx 1 root root 14 Nov 29 19:20 /etc/rc2.d/S02atop -> ../init.d/atop\\r\\nlrwxrwxrwx 1 root root 14 Nov 29 19:20 /etc/rc3.d/S02atop -> ../init.d/atop\\r\\nlrwxrwxrwx 1 root root 14 Nov 29 19:20 /etc/rc4.d/S02atop -> ../init.d/atop\\r\\nlrwxrwxrwx 1 root root 14 Nov 29 19:20 /etc/rc5.d/S02atop -> ../init.d/atop\\r\\n\\r\\nansible -i inventory host -m service -a 'name=atop enabled=no'\\r\\n... \\\"changed\\\": true, \\\"enabled\\\": false ...\\r\\n\\r\\nls -l /etc/rc?.d/S??atop\\r\\nls: cannot access /etc/rc?.d/S??atop: No such file or directory\\r\\n```\\r\\n\\r\\nSo far so good! Ansible has successfully disabled the service. Now let's try to re-enable it.\\r\\n\\r\\n```\\r\\nansible -i inventory host -m service -a 'name=atop enabled=yes'\\r\\n... \\\"changed\\\": false, \\\"enabled\\\": true ...\\r\\n\\r\\n# ls -l /etc/rc?.d/S??atop\\r\\nls: cannot access /etc/rc?.d/S??atop: No such file or directory\\r\\n```\\r\\n\\r\\nAs you can see ansible did not re-enable the service, even though it reports that it is enabled in the output (and no change).\\r\\n\\r\\nThe underlying issue lies in:\\r\\n```\\r\\n# systemctl is-enabled atop\\r\\nFailed to get unit file state for atop.service: No such file or directory\\r\\n\\r\\n# echo $?\\r\\n1\\r\\n```\\r\\nThis is a well-known, long-standing bug in the Debian 8 systemd which was supposed to be worked around in Ansible 2.x. It might be a regression in 2.2.0.\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nExpected to see the service being reenabled again after execution.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nAnsible fails to reenable the service, thinking incorrectly that it is already enabled\\r\\n\\r\\n```\\r\\nansible -i inventory host -m service -a 'name=atop enabled=yes'\\r\\n... \\\"changed\\\": false, \\\"enabled\\\": true ...\\r\\n```\\r\\n\\r\\n##### SUGGESTED PATCH\\r\\nsystemd.py assumes that if the exit code of systemctl is 1 and the output does not start with 'disabled' then the service must already be enabled. Unfortunately due to the Ansible bug the output is empty. The following patch has been tested against 2.2.0 but it might need adaptation against HEAD.\\r\\n\\r\\n```\\r\\n--- systemd.py.bkp    2016-11-28 16:24:23.000000000 -0800\\r\\n+++ systemd.py    2016-11-29 15:10:26.000000000 -0800\\r\\n@@ -322,12 +322,12 @@\\r\\n         # check systemctl result or if it is a init script\\r\\n         if rc == 0:\\r\\n             enabled = True\\r\\n-        elif rc == 1:\\r\\n+        elif rc == 1 and out.rstrip() != 'disabled':\\r\\n             # Deals with init scripts\\r\\n             # if both init script and unit file exist stdout should have enabled/disabled, otherwise use rc entries\\r\\n             initscript = '/etc/init.d/' + unit\\r\\n             if os.path.exists(initscript) and os.access(initscript, os.X_OK) and \\\\\\r\\n-               (not out.startswith('disabled') or bool(glob.glob('/etc/rc?.d/S??' + unit))):\\r\\n+               bool(glob.glob('/etc/rc?.d/S??' + unit)):\\r\\n                 enabled = True\\r\\n\\r\\n         # default to current state\\r\\n```\", \n    \"component_name\": \"systemd   (core/systemd.py)\", \n    \"component_raw\": \"- systemd module (core/systemd.py)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18687\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/systemd.py\", \n    \"summary\": \"We experience the following issue with ansible 2.2.0. On a systemd OS (Debian 8), the systemd.py module seems to fail to workaround the Debian issue with the broken 'is-enabled' target on daemons that only provide sysv scripts and no systemd scripts. If a systemd .service file is present in addition to the sysv /etc/init.d/script or standalone it functions fine. Please find some additional details and a proposed patch against 2.2.0.0 (which seems will be different against HEAD) further in this ticket.\", \n    \"title\": \"systemd fails to enable sysv services\"\n  }, \n  \"18688\": {\n    \"ansible_version\": \"current devel (https//github.com/ansible/ansible/commit/461dcf8ce3edb0fafcbb608c846b9a68eddde019)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodule_utils\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\ncurrent devel (https://github.com/ansible/ansible/commit/461dcf8ce3edb0fafcbb608c846b9a68eddde019)\\r\\n\\r\\n##### CONFIGURATION\\r\\n(unrelated)\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nPOSIX environments that use PATH (Linux, OSX, *BSD, etc)\\r\\n\\r\\n##### SUMMARY\\r\\nThe [`is_executable` function](https://github.com/ansible/ansible/blob/461dcf8ce3edb0fafcbb608c846b9a68eddde019/lib/ansible/module_utils/basic.py#L557) in module_utils.basic doesn't check whether the input file is a directory or not. This causes [`get_bin_path`](https://github.com/ansible/ansible/blob/461dcf8ce3edb0fafcbb608c846b9a68eddde019/lib/ansible/module_utils/basic.py#L1815) in the same module, which is used by a number of ansible modules, to return directories as executables instead of continuing the search to find the actual, appropriate executable. This manifested itself for me by causing `unarchive` to fail when it found a directory named `tar` on my `PATH` before the actual directory named `tar`. `bash` and other shells skip directories when searching on `PATH`.\\r\\n\\r\\nNote that the executable bit on directories are used to signal that the user can cwd into the directory; it has nothing to do with actually being executable.\\r\\n\\r\\nIf the correct fix is just to add a `not os.path.isdir` to `is_executable`, let me know and I'd be happy to send a PR! I'm not familiar enough with the entire codebase to know whether that's an acceptable fix, though.\", \n    \"component_name\": \"module_utils\", \n    \"component_raw\": \"module_utils\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18688\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The [`is_executable` function](https://github.com/ansible/ansible/blob/461dcf8ce3edb0fafcbb608c846b9a68eddde019/lib/ansible/module_utils/basic.py#L557) in module_utils.basic doesn't check whether the input file is a directory or not. This causes [`get_bin_path`](https://github.com/ansible/ansible/blob/461dcf8ce3edb0fafcbb608c846b9a68eddde019/lib/ansible/module_utils/basic.py#L1815) in the same module, which is used by a number of ansible modules, to return directories as executables instead of continuing the search to find the actual, appropriate executable. This manifested itself for me by causing `unarchive` to fail when it found a directory named `tar` on my `PATH` before the actual directory named `tar`. `bash` and other shells skip directories when searching on `PATH`.\\n\\n\\n\\nNote that the executable bit on directories are used to signal that the user can cwd into the directory; it has nothing to do with actually being executable.\\n\\n\\n\\nIf the correct fix is just to add a `not os.path.isdir` to `is_executable`, let me know and I'd be happy to send a PR! I'm not familiar enough with the entire codebase to know whether that's an acceptable fix, though.\", \n    \"title\": \"module_utils.basic.is_executable returns true for directories\"\n  }, \n  \"18692\": {\n    \"ansible_version\": \"v2.2 and older\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/task/feature -->\\r\\nsetup / facts\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.2 and older\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nLooking at the code https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/facts.py#L420 it defines ansible_selinux either as a boolean (False) when HAVE_SELINUX is False, but as a dictionary when HAVE_SELINUX is True.\\r\\n\\r\\nThat is bad design, it makes it harder to test for specific properties.\\r\\nhttps://github.com/ansible/ansible/pull/18690/files#diff-6ef0fa8be07ffd2967bf772e9d792339R20\\r\\n\\r\\n```yaml\\r\\nwhen: ansible_selinux is defined and ansible_selinux.status == 'enabled'\\r\\n```\\r\\n\\r\\nfails if it is a boolean, so I now have to rewrite this as:\\r\\n\\r\\n```yaml\\r\\nwhen: ansible_selinux is defined and ansible_selinux != False and ansible_selinux.status == 'enabled'\\r\\n```\\r\\n\\r\\nand I won't be certain that this will not fail in some weird way (like maybe on some platform it returns True instead of a dictionary with status key).\", \n    \"component_name\": \"setup / facts\", \n    \"component_raw\": \"setup / facts\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18692\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"c:module_utils/facts\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Looking at the code https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/facts.py#L420 it defines ansible_selinux either as a boolean (False) when HAVE_SELINUX is False, but as a dictionary when HAVE_SELINUX is True.\\n\\n\\n\\nThat is bad design, it makes it harder to test for specific properties.\\n\\nhttps://github.com/ansible/ansible/pull/18690/files#diff-6ef0fa8be07ffd2967bf772e9d792339R20\\n\\n\\n\\n```yaml\\n\\nwhen: ansible_selinux is defined and ansible_selinux.status == 'enabled'\\n\\n```\\n\\n\\n\\nfails if it is a boolean, so I now have to rewrite this as:\\n\\n\\n\\n```yaml\\n\\nwhen: ansible_selinux is defined and ansible_selinux != False and ansible_selinux.status == 'enabled'\\n\\n```\\n\\n\\n\\nand I won't be certain that this will not fail in some weird way (like maybe on some platform it returns True instead of a dictionary with status key).\", \n    \"title\": \"setup defines ansible_selinux as a boolean or as a dict\"\n  }, \n  \"18694\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /srv/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nhashi_vault\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /srv/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n```\\r\\n[defaults]\\r\\ninventory = /srv/ansible/inventory\\r\\nlookup_plugins = /usr/lib/python2.7/site-packages/ansible/plugins/lookup/\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nRunning on Centos\\r\\n```\\r\\nVAULT_ADDR=https://vault.prod.xxx.com:8200/\\r\\nVAULT_CACERT=/etc/ipa/ca.crt\\r\\n```\\r\\n\\r\\n\\r\\n##### SUMMARY\\r\\nhashi_vault is unable to read VAULT_CACERT or system CA bundle and is unable to connect to vault with SSL enabled.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```\\r\\nansible -m debug -a msg=\\\"{{ lookup('hashi_vault', 'secret=/secret/infrastructure/mysql_debian_user:password token=9c9a0b81-03b9-5418-6971-a6191e259e18') }}\\\" localhost\\r\\n\\r\\n```\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nSee retrieved password\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/executor/task_executor.py\\\", line 119, in run\\r\\n    res = self._execute()\\r\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/executor/task_executor.py\\\", line 431, in _execute\\r\\n    self._task.post_validate(templar=templar)\\r\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/playbook/task.py\\\", line 248, in post_validate\\r\\n    super(Task, self).post_validate(templar)\\r\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/playbook/base.py\\\", line 371, in post_validate\\r\\n    value = templar.template(getattr(self, name))\\r\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/template/__init__.py\\\", line 359, in template\\r\\n    d[k] = self.template(variable[k], preserve_trailing_newlines=preserve_trailing_newlines, fail_on_undefined=fail_on_undefined, overrides=overrides)\\r\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/template/__init__.py\\\", line 331, in template\\r\\n    result = self._do_template(variable, preserve_trailing_newlines=preserve_trailing_newlines, escape_backslashes=escape_backslashes, fail_on_undefined=fail_on_undefined, overrides=overrides)\\r\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/template/__init__.py\\\", line 507, in _do_template\\r\\n    res = j2_concat(rf)\\r\\n  File \\\"<template>\\\", line 8, in root\\r\\n  File \\\"/usr/lib/python2.7/site-packages/jinja2/runtime.py\\\", line 196, in call\\r\\n    return __obj(*args, **kwargs)\\r\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/template/__init__.py\\\", line 429, in _lookup\\r\\n    ran = instance.run(loop_terms, variables=self._available_variables, **kwargs)\\r\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/plugins/lookup/hashi_vault.py\\\", line 102, in run\\r\\n    vault_conn = HashiVault(**vault_dict)\\r\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/plugins/lookup/hashi_vault.py\\\", line 70, in __init__\\r\\n    if self.client.is_authenticated():\\r\\n  File \\\"/usr/lib/python2.7/site-packages/hvac/v1/__init__.py\\\", line 470, in is_authenticated\\r\\n    self.lookup_token()\\r\\n  File \\\"/usr/lib/python2.7/site-packages/hvac/v1/__init__.py\\\", line 414, in lookup_token\\r\\n    return self._get('/v1/auth/token/lookup-self', wrap_ttl=wrap_ttl).json()\\r\\n  File \\\"/usr/lib/python2.7/site-packages/hvac/v1/__init__.py\\\", line 894, in _get\\r\\n    return self.__request('get', url, **kwargs)\\r\\n  File \\\"/usr/lib/python2.7/site-packages/hvac/v1/__init__.py\\\", line 922, in __request\\r\\n    allow_redirects=False, **_kwargs)\\r\\n  File \\\"/usr/lib/python2.7/site-packages/requests/sessions.py\\\", line 488, in request\\r\\n    resp = self.send(prep, **send_kwargs)\\r\\n  File \\\"/usr/lib/python2.7/site-packages/requests/sessions.py\\\", line 609, in send\\r\\n    r = adapter.send(request, **kwargs)\\r\\n  File \\\"/usr/lib/python2.7/site-packages/requests/adapters.py\\\", line 497, in send\\r\\n    raise SSLError(e, request=request)\\r\\nSSLError: (\\\"bad handshake: Error([('SSL routines', 'SSL3_GET_SERVER_CERTIFICATE', 'certificate verify failed')],)\\\",)\\r\\n\\r\\nlocalhost | FAILED! => {\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"msg\\\": \\\"Unexpected failure during module execution.\\\",\\r\\n    \\\"stdout\\\": \\\"\\\"\\r\\n}\\r\\n```\\r\\n\\r\\nNote, I have also tried installing the private CA pem file in the system ca bundle \\r\\n```\\r\\nsudo cp /etc/ipa/ca.crt /etc/pki/ca-trust/source/anchors/\\r\\nsudo update-ca-trust extract\\r\\n```\\r\\n\\r\\nThis works because curl does not complain\\r\\n```\\r\\ncurl https:/vault.prod.xxxxxx.com:8200\\r\\n```\\r\\n\", \n    \"component_name\": \"hashi_vault\", \n    \"component_raw\": \"hashi_vault\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18694\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"c:plugins/lookup\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"hashi_vault is unable to read VAULT_CACERT or system CA bundle and is unable to connect to vault with SSL enabled.\", \n    \"title\": \"hashi_vault does not work with ssl vault\"\n  }, \n  \"18695\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`contrib/inventory/azure_rm.py`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.1.2.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nFix issue #17934 \\r\\n\\r\\nFailing to register a provider in ARM must not be blocking for the plugin. Especially, in this issue the credentials do not have the necessary RBAC to add a provider, but it's unnecessary since the Azure subscription already has it. Since we don't check enabled provided providers before trying to register it, we failed for no reason. Keep trying to register strategy is fine, but not blocking.\\r\\n\\r\\nUse cases matrix:\\r\\n\\r\\n|                                                                                | Before         | After                                     |\\r\\n|--------------------------------------------------------------------------------|----------------|-------------------------------------------|\\r\\n| Sub. has provider registered + Credentials has register RBAC                   | Ok             | Ok                                        |\\r\\n| Sub. has provider registered + Credentials doesn't have register RBAC          | #17934         | Log a warning message                     |\\r\\n| Sub. doesn't have provider registered + Credentials has register RBAC          | Ok             | Ok                                        |\\r\\n| Sub. doesn't have provider registered + Credentials doesn't have register RBAC | Fail on config | Log a warning message + Fail on execution |\\r\\n\\r\\nNote that the warning message includes a link to the Azure Python CLI to register the provider using an admin credentials.\\r\\n\\r\\n@pipern + @squillace to test this with real case scenario\", \n    \"component_name\": \"contrib/inventory/azure_rm.py\", \n    \"component_raw\": \"`contrib/inventory/azure_rm.py`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18695\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"azure\", \n      \"bug\", \n      \"cloud\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Fix issue #17934 \\n\\n\\n\\nFailing to register a provider in ARM must not be blocking for the plugin. Especially, in this issue the credentials do not have the necessary RBAC to add a provider, but it's unnecessary since the Azure subscription already has it. Since we don't check enabled provided providers before trying to register it, we failed for no reason. Keep trying to register strategy is fine, but not blocking.\\n\\n\\n\\nUse cases matrix:\\n\\n\\n\\n|                                                                                | Before         | After                                     |\\n\\n|--------------------------------------------------------------------------------|----------------|-------------------------------------------|\\n\\n| Sub. has provider registered + Credentials has register RBAC                   | Ok             | Ok                                        |\\n\\n| Sub. has provider registered + Credentials doesn't have register RBAC          | #17934         | Log a warning message                     |\\n\\n| Sub. doesn't have provider registered + Credentials has register RBAC          | Ok             | Ok                                        |\\n\\n| Sub. doesn't have provider registered + Credentials doesn't have register RBAC | Fail on config | Log a warning message + Fail on execution |\\n\\n\\n\\nNote that the warning message includes a link to the Azure Python CLI to register the provider using an admin credentials.\\n\\n\\n\\n@pipern + @squillace to test this with real case scenario\", \n    \"title\": \"Fix bug 17934 : Azure register failure must not be blocking\"\n  }, \n  \"18697\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/task/feature -->\\r\\nlib/ansible/module_utils/basic\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nNO configuration changes\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nUbuntu 14.04 LTS\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nmake hacking test network module base of lib/ansible/module_utils/basic.py\\uff0chacking test does not work well\\uff0cerror with: 'NetworkModule' object has no attribute '_name'\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\nroot@localhost:/usr/ansible# source ./hacking/env-setup\\r\\nroot@localhost:/usr/ansible# ./hacking/test-module -m ./lib/ansible/moudles/core/network/cloudengine/ce_vlan.py -a \\\"vlan_id=1 state=absent host=*** port *** username=*** password=***\\\"\\r\\nnote: cloudengine/ce_vlan.py is our network test module, you can use other network module to reproduce instead, i.e. Cisco's nxos_config.py or nxos_vlan.py module\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nhacking test network module base of lib/ansible/module_utils/basic.py work well\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nroot@localhost:/usr/ansible# ./hacking/test-module -m ./lib/ansible/moudles/core/network/cloudengine/ce_vlan.py -a \\\"vlan_id=1 state=absent host=*** port *** username=*** password=***\\\"\\r\\n* including generated source, if any, saving to: /root/.ansible_module_generated\\r\\n* ansiballz module detected; extracted module source to: /root/debug_dir\\r\\n************************\\r\\nRAW OUTPUT\\r\\n\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/root/debug_dir/ansible_module_ce_vlan.py\\\", line 737, in <module>\\r\\n    main()\\r\\n  File \\\"/root/debug_dir/ansible_module_ce_vlan.py\\\", line 729, in main\\r\\n    vlancfg = Vlan(argument_spec)\\r\\n  File \\\"/root/debug_dir/ansible_module_ce_vlan.py\\\", line 265, in __init__\\r\\n    setf.init_module()\\r\\n  File \\\"/root/debug_dri/ansible_module_ce_vlan.py\\\", line 299, in init_module\\r\\n    argument_spec=self.spec, supports_check_mode=True) \\r\\n  File \\\"/root/debug_dir/ansible/module_utils/network.py\\\", line 111, in __init__\\r\\n    self.connect()\\r\\n  File \\\"/root/debug_dir/ansible/module_utils/network.py\\\", line 154, in connect\\r\\n    self.params['port'], self.params['transport']))\\r\\n  File \\\"/root/debug_dir/ansible/module_utils/basic.py\\\", line 1630, in log\\r\\n    module = 'ansible-%s' % self._name\\r\\nAttributeError: 'NetworkModule' object has no attribute '_name'\\r\\n```\\r\\n\", \n    \"component_name\": \"lib/ansible/module_utils/basic\", \n    \"component_raw\": \"lib/ansible/module_utils/basic\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18697\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"networking\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"make hacking test network module base of lib/ansible/module_utils/basic.pyhacking test does not work wellerror with: 'NetworkModule' object has no attribute '_name'\", \n    \"title\": \"hacking test error\\uff0c'NetworkModule' object has no attribute '_name'\"\n  }, \n  \"18702\": {\n    \"ansible_version\": \"N/A\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Feature Idea\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nN/A\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvault\\r\\n\\r\\n##### SUMMARY\\r\\nI know the copy module was updated to support ansible-vault encrypted files. Is it possible to extend the ansible-vault coverage to include template files that are copied over. This can be done by decrypting the file on the ansible host, creating the template and then transferring it over. \", \n    \"component_name\": \"vault\", \n    \"component_raw\": \"vault\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18702\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:parsing/vault/\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I know the copy module was updated to support ansible-vault encrypted files. Is it possible to extend the ansible-vault coverage to include template files that are copied over. This can be done by decrypting the file on the ansible host, creating the template and then transferring it over.\", \n    \"title\": \"Feature: Ansible Vault Template Module Support\"\n  }, \n  \"18716\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nGlossary\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.1.1.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nFocus on what the learner needs to know first.\\r\\n\\r\\n```\\r\\nNo code required: Github diffs should allow evaluation of change\\r\\n```\\r\\n\\r\\nThis rewording is intended to focus on the most salient facts first but retain the useful ancillary information.\\r\\n\\r\\nIt should be checked for factual accuracy and pedagogical usefulness.\", \n    \"component_name\": \"glossary\", \n    \"component_raw\": \"Glossary\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18716\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Focus on what the learner needs to know first.\\n\\n\\n\\n```\\n\\nNo code required: Github diffs should allow evaluation of change\\n\\n```\\n\\n\\n\\nThis rewording is intended to focus on the most salient facts first but retain the useful ancillary information.\\n\\n\\n\\nIt should be checked for factual accuracy and pedagogical usefulness.\", \n    \"title\": \"Improve Glossary description of Tasks\"\n  }, \n  \"18719\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nWinRM\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nDefault everything\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nUbuntu 16.04  (ansible installed from pip)\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nAnytime a connection attempt is made to a Windows host, it fails with `ssl: Failed to parse: <ipv6 address eradicated>`\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nConnect to any \\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\nansible windows  -m win_ping\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nShould connect to IPv6 the same as IPv4\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nfatal: [windows]: UNREACHABLE! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"msg\\\": \\\"ssl: Failed to parse: <ipv6 address eradicated>\\\",\\r\\n    \\\"unreachable\\\": true\\r\\n}\\r\\n```\\r\\n(I believe it has to do with the way it's using the IPv6 address in the https:// url..  by not including []  brackets around the address.\\r\\n\\r\\nWith ANSIBLE_DEBUG:\\r\\n```\\r\\n 28169 1480704112.34636: _low_level_execute_command(): executing: PowerShell -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -EncodedCommand ......\\r\\n<<ipv6 address eradicated>> ESTABLISH WINRM CONNECTION FOR USER: Administrator on PORT 5986 TO <ipv6 address eradicated>\\r\\n<<ipv6 address eradicated>> WINRM CONNECT: transport=ssl endpoint=https://<ipv6 address eradicated>:5986/wsman\\r\\n<<ipv6 address eradicated>> WINRM CONNECTION ERROR: Failed to parse: <ipv6 address eradicated>\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/plugins/connection/winrm.py\\\", line 154, in _winrm_connect\\r\\n    self.shell_id = protocol.open_shell(codepage=65001)  # UTF-8\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/winrm/protocol.py\\\", line 132, in open_shell\\r\\n    res = self.send_message(xmltodict.unparse(req))\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/winrm/protocol.py\\\", line 207, in send_message\\r\\n    return self.transport.send_message(message)\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/winrm/transport.py\\\", line 170, in send_message\\r\\n    prepared_request = self.session.prepare_request(request)\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/requests/sessions.py\\\", line 407, in prepare_request\\r\\n    hooks=merge_hooks(request.hooks, self.hooks),\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/requests/models.py\\\", line 302, in prepare\\r\\n    self.prepare_url(url, params)\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/requests/models.py\\\", line 357, in prepare_url\\r\\n    raise InvalidURL(*e.args)\\r\\nInvalidURL: Failed to parse: \\r\\n```\", \n    \"component_name\": \"winrm\", \n    \"component_raw\": \"WinRM\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18719\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"windows\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Anytime a connection attempt is made to a Windows host, it fails with `ssl: Failed to parse: <ipv6 address eradicated>`\", \n    \"title\": \"WINRM Unable to connect via IPv6\"\n  }, \n  \"18720\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nEC2 dynamic inventory\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nWhen specifying a literal whitelist of AWS EC2 regions in the dynamic\\r\\ninventory configuration file, it should not be necessary to also include\\r\\na literal blacklist, especially as the blacklist is not honored in this\\r\\ncase anyway. By reading the literal blacklist only when necessary, it is\\r\\npossible for a user to provide a more minimal EC2 configuration file.\\r\\n\\r\\nSigned-off-by: Steve Kuznetsov <skuznets@redhat.com>\", \n    \"component_name\": \"ec2 dynamic inventory\", \n    \"component_raw\": \"EC2 dynamic inventory\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18720\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When specifying a literal whitelist of AWS EC2 regions in the dynamic\\n\\ninventory\", \n    \"title\": \"Only read EC2 `regions_exclude` list if necessary\"\n  }, \n  \"18721\": {\n    \"ansible_version\": \"jforman@stonecrab/tank/git/ansible-configs$ /tmp/ansible/bin/ansible --version\\nansible 2.2.0.0\\nconfig file = /tank/git/ansible-configs/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nTASK [setup]\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\njforman@stonecrab:/tank/git/ansible-configs$ /tmp/ansible/bin/ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /tank/git/ansible-configs/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nOrigin OS: Ubuntu Desktop 16.10\\r\\nDestination OS: OpenBSD 6.0\\r\\n\\r\\n##### SUMMARY\\r\\nSuddenly (I can't remember when I last had issues with this) any Ansible operation on the OpenBSD machine hangs at the 'task setup' state.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nWorks as expected:\\r\\n/tmp/ansible/bin/ansible -vvvv --become-method doas -i hosts -k $openbsdhost -m setup\\r\\n\\r\\nHangs:\\r\\n/tmp/ansible/bin/ansible --ask-become-pass -b -vvvv --become-method doas -i hosts -k $openbsdhost -m setup\\r\\nUsing /tank/git/ansible-configs/ansible.cfg as config file\\r\\nSSH password: <entered password>\\r\\nDOAS password[defaults to SSH password]:  <enter>\\r\\n.......\\r\\n<$openbsdhost> SSH: EXEC sshpass -d12 ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/home/jforman/.ssh/id_rsa\\\"' -o User=ansibler -o ConnectTimeout=10 -o ControlPath=/home/jforman/.ansible/cp/%h-%p-%r -tt $openbsdhost '/bin/sh -c '\\\"'\\\"'doas  -u root  echo BECOME-SUCCESS-jehbbhnejigevhrwtomnvrghnfnumhpj && doas  -u root  env ANSIBLE=true /usr/local/bin/python /home/ansibler/.ansible/tmp/ansible-tmp-1480716111.08-113929165791759/setup.py; rm -rf \\\"/home/ansibler/.ansible/tmp/ansible-tmp-1480716111.08-113929165791759/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nExpected setup json output.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nThe second command execution above hangs\\r\\n\\r\\n\", \n    \"component_name\": \"task [setup]\", \n    \"component_raw\": \"TASK [setup]\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18721\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Suddenly (I can't remember when I last had issues with this) any Ansible operation on the OpenBSD machine hangs at the 'task setup' state.\", \n    \"title\": \"ansible hangs waiting for/to send doas password\"\n  }, \n  \"18722\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.1.2.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n  - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n  - Evaluation of jinja2 templates\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.1.2.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A (assumed. Only tested on macOS)\\r\\n\\r\\n##### SUMMARY\\r\\nYou can't have non-string variables as the result of arithmetic/filters/etc in jinja2 templates\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nConsider a playbook and a vars file:\\r\\n\\r\\n```yaml\\r\\n# test_vars.yml\\r\\nseven: 7\\r\\nseven_again: \\\"{{ seven }}\\\"\\r\\nseven_once_more: \\\"{{ seven | int }}\\\"\\r\\nfourteen: \\\"{{ (seven * 2) | int }}\\\"\\r\\n```\\r\\n\\r\\n```yaml\\r\\n# test.yml\\r\\n- hosts: all\\r\\n  gather_facts: False\\r\\n  vars_files:\\r\\n    - test_vars.yml\\r\\n  tasks:\\r\\n    - debug:\\r\\n        msg: \\\"{{ seven | to_json}} {{ seven_again | to_json }} {{ seven_once_more | to_json }} {{ fourteen | to_json }}\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nI would have expected all four numbers to appear unquoted, as follows (abridged):\\r\\n\\r\\n```\\r\\n$ ansible-playbook test.yml -i localhost, -c local -vvv\\r\\n(...)\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": \\\"7 7 7 14\\\"\\r\\n}\\r\\n(...)\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nInstead, the last two numbers are quoted, as follows (abridged):\\r\\n\\r\\n```\\r\\n$ ansible-playbook test.yml -i localhost, -c local -vvv\\r\\n(...)\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": \\\"7 7 \\\\\\\"7\\\\\\\" \\\\\\\"14\\\\\\\"\\\"\\r\\n}\\r\\n(...)\\r\\n```\", \n    \"component_name\": \"evaluation of jinja2 templates\", \n    \"component_raw\": \"- Evaluation of jinja2 templates\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18722\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"You can't have non-string variables as the result of arithmetic/filters/etc in jinja2 templates\", \n    \"title\": \"jinja2 templates can only yield strings\"\n  }, \n  \"18723\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Feature\\r\\n\\r\\n##### COMPONENT NAME\\r\\nloading of group_vars \\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\ncentos6 / centos6\\r\\n\\r\\n##### SUMMARY\\r\\nA playbook can map to hosts using regex. However when that is done, those hosts should be able to load group_vars using the same regex\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\nFor example when hosts within groups tc02_mytest_vms, tc03_mytest_vms, tc04_mytest_vms execute the following playbook. \\r\\n```\\r\\n---\\r\\n- name: Play tc_vmconfig\\r\\n  hosts: ~tc.*_vms\\r\\n  gather_facts: true\\r\\n  tags: tc_vmconfig\\r\\n\\r\\n\\r\\n  roles:\\r\\n\\r\\n        - { role: tc_vmconfig, tags: ['tc_vmconfig'] }\\r\\n\\r\\n\\r\\n  tasks:\\r\\n\\r\\n    - debug: msg=\\\"tc_vmconfig complete\\\"\\r\\n      run_once: true\\r\\n      connection: local\\r\\n\\r\\n\\r\\n```\\r\\nI believe that it makes sense that the group vars should be loaded using a regex match as well in this case and that these group_vars files should be loaded when they exist.\\r\\n\\r\\ntc02_vms.yml\\r\\ntc03_vms.yml\\r\\ntc04_vms.yml\\r\\n\\r\\n\\r\\nCurrently only the vars which match the group name explicitly are loaded\\r\\n\\r\\ntc02_mytest_vms.yml\\r\\ntc03_mytest_vms.yml\\r\\ntc04_mytest_vms.yml\\r\\n\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nWhen hosts regex match a playbook , i would expect that the group vars for the playbook are loaded using the same regex match\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nThey properties are not loaded as I would expect.\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"loading of group_vars\", \n    \"component_raw\": \"loading of group_vars\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18723\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"A playbook can map to hosts using regex. However when that is done, those hosts should be able to load group_vars using the same regex\", \n    \"title\": \"Load group_vars using regex match\"\n  }, \n  \"18726\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\njunos_command\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible --version\\r\\nansible 2.3.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\n\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\nAdd support to retrieve output in 'json' format for junos_command module.\\r\\n```\\r\\nRelated PR https://github.com/ansible/ansible/pull/19045\\r\\nFixes issue: https://github.com/ansible/ansible-modules-core/issues/4103\\r\\n\\r\\n\\r\\n\", \n    \"component_name\": \"junos_command\", \n    \"component_raw\": \"junos_command\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18726\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"feature\", \n      \"module_util\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"```\\n\\nAdd support to retrieve output in 'json' format for junos_command module.\\n\\n```\\n\\nRelated PR https://github.com/ansible/ansible/pull/19045\\n\\nFixes issue: https://github.com/ansible/ansible-modules-core/issues/4103\", \n    \"title\": \"Support json format in junos_command module\"\n  }, \n  \"18727\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\nFeature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvca_vapp\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nWe want to use single-sign-on with SAML for the vca_vapp module.\\r\\nSo we need to pass the vcloud director authentication token directly to the ansible module,\\r\\nafter obtaining the token from the single-sign-on identity provider (idp) host.\\r\\n\\r\\nWe are introducing two more parameters \\\"token\\\" and \\\"org_url\\\" to the vca_vapp ansible module, which are required by the pyvcloud VCA login method to login without a username/password.\\r\\n\\r\\nUnfortunately the pyvcloud module does not store the token into self.token in vcd token mode, so we need to do a workaround here in ansible module_utils if we are using a token:\\r\\n```\\r\\n        if login_token:\\r\\n          self.vca.token = login_token\\r\\n```\\r\\nA possibly cleaner way would be to fix this in the pyvcloud module.\\r\\n\\r\\nExample of usage of vca_vapp module after introducing the token/org_uri parameters:\\r\\n```\\r\\n  - name: \\\"delete vapp :: delete vApp {{ name }} from all virtual datacenters\\\"\\r\\n    local_action: vca_vapp\\r\\n    args:\\r\\n      service_type: \\\"vcd\\\"\\r\\n      org: \\\"{{ org.name }}\\\"\\r\\n      host: \\\"{{ api.hostname }}\\\"\\r\\n      api_version: \\\"{{ api.version }}\\\"\\r\\n      token: \\\"{{ vcd_auth_token_obtained_via_saml }}\\\"\\r\\n      org_url: \\\"{{api.url}}/org/{{org.id}}\\\"\\r\\n      vdc_name: \\\"{{ item.value.name }}\\\"\\r\\n      vapp_name: \\\"{{ name }}\\\"\\r\\n      state: \\\"absent\\\"\\r\\n    with_dict: \\\"{{ vdc }}\\\"\\r\\n```\", \n    \"component_name\": \"vca_vapp\", \n    \"component_raw\": \"vca_vapp\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18727\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"feature\", \n      \"module_util\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"We want to use single-sign-on with SAML for the vca_vapp module.\\n\\nSo we need to pass the vcloud director authentication token directly to the ansible module,\\n\\nafter obtaining the token from the single-sign-on identity provider (idp) host.\\n\\n\\n\\nWe are introducing two more parameters \\\"token\\\" and \\\"org_url\\\" to the vca_vapp ansible module, which are required by the pyvcloud VCA login method to login without a username/password.\\n\\n\\n\\nUnfortunately the pyvcloud module does not store the token into self.token in vcd token mode, so we need to do a workaround here in ansible module_utils if we are using a token:\\n\\n```\\n\\n        if login_token:\\n\\n          self.vca.token = login_token\\n\\n```\\n\\nA possibly cleaner way would be to fix this in the pyvcloud module.\\n\\n\\n\\nExample of usage of vca_vapp module after introducing the token/org_uri parameters:\\n\\n```\\n\\n  - name: \\\"delete vapp :: delete vApp {{ name }} from all virtual datacenters\\\"\\n\\n    local_action: vca_vapp\\n\\n    args:\\n\\n      service_type: \\\"vcd\\\"\\n\\n      org: \\\"{{ org.name }}\\\"\\n\\n      host: \\\"{{ api.hostname }}\\\"\\n\\n      api_version: \\\"{{ api.version }}\\\"\\n\\n      token: \\\"{{ vcd_auth_token_obtained_via_saml }}\\\"\\n\\n      org_url: \\\"{{api.url}}/org/{{org.id}}\\\"\\n\\n      vdc_name: \\\"{{ item.value.name }}\\\"\\n\\n      vapp_name: \\\"{{ name }}\\\"\\n\\n      state: \\\"absent\\\"\\n\\n    with_dict: \\\"{{ vdc }}\\\"\\n\\n```\", \n    \"title\": \"vca_vapp module: allow vcd authentication token instead of user/password combination\"\n  }, \n  \"18728\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\nfeature pull request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ngit module\\r\\n\\r\\n##### SUMMARY\\r\\nThis PR fixes an issue with updating a branch of a shallow clone (`--depth 1`)\\r\\n\\r\\nThe test fails without this PR. When the PR is merged, the test succeeds.\", \n    \"component_name\": \"git\", \n    \"component_raw\": \"git module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18728\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"core_review\", \n      \"feature\", \n      \"module\", \n      \"test\"\n    ], \n    \"module_match\": \"lib/ansible/modules/source_control/git.py\", \n    \"summary\": \"This PR fixes an issue with updating a branch of a shallow clone (`--depth 1`)\\n\\n\\n\\nThe test fails without this PR. When the PR is merged, the test succeeds.\", \n    \"title\": \"[git] Fix fetching branch of shallow clone\"\n  }, \n  \"18730\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n- Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ngit module\\r\\n\\r\\n##### SUMMARY\\r\\nThis PR fixes an issue with shallow (`--depth 1`) cloning a tag. (Fixes https://github.com/ansible/ansible-modules-core/issues/3817)\\r\\n\\r\\nUnfortunately, I am unable to reproduce this without using an external git repository (like I did with #18728). So I used the git repository of the PR that trigged this fix: https://github.com/ansible/ansible-modules-core/issues/3817. If someone with a git repo for Ansible tests is willing to provide the necessary commits, I can update the PR to use the dedicated test repo.\\r\\n\\r\\n@robinro you already have such a repo which is used by the git tests?)\", \n    \"component_name\": \"git\", \n    \"component_raw\": \"git module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18730\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"needs_revision\", \n      \"test\"\n    ], \n    \"module_match\": \"lib/ansible/modules/source_control/git.py\", \n    \"summary\": \"This PR fixes an issue with shallow (`--depth 1`) cloning a tag. (Fixes https://github.com/ansible/ansible-modules-core/issues/3817)\\n\\n\\n\\nUnfortunately, I am unable to reproduce this without using an external git repository (like I did with #18728). So I used the git repository of the PR that trigged this fix: https://github.com/ansible/ansible-modules-core/issues/3817. If someone with a git repo for Ansible tests is willing to provide the necessary commits, I can update the PR to use the dedicated test repo.\\n\\n\\n\\n@robinro you already have such a repo which is used by the git tests?)\", \n    \"title\": \"[git] Fix shallow cloning a tag (Fixes #19074)\"\n  }, \n  \"18731\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nmodule_utils/basic\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nhttps://docs.python.org/2/library/stdtypes.html#str.split\\r\\nstr.split([sep[, maxsplit]])\\r\\nIf sep is given, consecutive delimiters are not grouped together and are deemed\\r\\nto delimit empty strings.\\r\\n\\r\\n>>> \\\"85563      ----------------C-- /var/lib/libvirt/images\\\".split(' ')[0:2]\\r\\n['85563', '']\\r\\n>>> \\\"85563      ----------------C-- /var/lib/libvirt/images\\\".split()[0:2]\\r\\n['85563', '----------------C--']\", \n    \"component_name\": \"module_utils/basic\", \n    \"component_raw\": \"module_utils/basic\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18731\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"c:module_utils/basic\", \n      \"module_util\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"https://docs.python.org/2/library/stdtypes.html#str.split\\n\\nstr.split([sep[, maxsplit]])\\n\\nIf sep is given, consecutive delimiters are not grouped together and are deemed\\n\\nto delimit empty strings.\\n\\n\\n\\n>>> \\\"85563      ----------------C-- /var/lib/libvirt/images\\\".split(' ')[0:2]\\n\\n['85563', '']\\n\\n>>> \\\"85563      ----------------C-- /var/lib/libvirt/images\\\".split()[0:2]\\n\\n['85563', '----------------C--']\", \n    \"title\": \"fix file attributes changed detection\"\n  }, \n  \"18732\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nfile module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nIf the attributes aren't set in the right order the module always detect an attributes change.\", \n    \"component_name\": \"file\", \n    \"component_raw\": \"file module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18732\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"If the attributes aren't set in the right order the module always detect an attributes change.\", \n    \"title\": \"documentation: add important information about attributes parameter\"\n  }, \n  \"18733\": {\n    \"ansible_version\": \"ansible 2.3.0 (solaris-devices b1574635f3) last updated 2016/11/27 114850 (GMT +200)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodule_utils/facts.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (solaris-devices b1574635f3) last updated 2016/11/27 11:48:50 (GMT +200)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nThis module adds support for gathering device and uptime statistics. It aims for compatibility with these systems:\\r\\n\\r\\n* Oracle Solaris 11\\r\\n* OpenIndiana/OmniOS\\r\\n\", \n    \"component_name\": \"module_utils/facts.py\", \n    \"component_raw\": \"module_utils/facts.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18733\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"feature\", \n      \"module_util\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This module adds support for gathering device and uptime statistics. It aims for compatibility with these systems:\\n\\n\\n\\n* Oracle Solaris 11\\n\\n* OpenIndiana/OmniOS\", \n    \"title\": \"Gather uptime and device facts from Solarish systems\"\n  }, \n  \"18734\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel ea5c3df043) last updated 2016/12/02 235621 (GMT +300)\\nlib/ansible/modules/core (detached HEAD 6890003c4f) last updated 2016/12/02 235915 (GMT +300)\\nlib/ansible/modules/extras (detached HEAD 20ea46642b) last updated 2016/12/02 235921 (GMT +300)\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible.module_utils.basic.known_hosts\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel ea5c3df043) last updated 2016/12/02 23:56:21 (GMT +300)\\r\\n  lib/ansible/modules/core: (detached HEAD 6890003c4f) last updated 2016/12/02 23:59:15 (GMT +300)\\r\\n  lib/ansible/modules/extras: (detached HEAD 20ea46642b) last updated 2016/12/02 23:59:21 (GMT +300)\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nThis change fixes `git` module's `accept_hostkey` behavior for non-standard ports. \\r\\n\\r\\nCurrently, when git url uses non-standard port (my repo sits on 7999, for example), incorrect hostkey is added to `~/.ssh/known_hosts`. \\r\\n\\r\\nAfter the fix, non-standard ports will be explicitly passed as an argument to `ssh-keyscan` which will then add proper hostkey.\\r\\n\\r\\n__not sure what to write here__\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"ansible. _utils.basic.known_hosts\", \n    \"component_raw\": \"ansible.module_utils.basic.known_hosts\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18734\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"module_util\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This change fixes `git` module's `accept_hostkey` behavior for non-standard ports. \\n\\n\\n\\nCurrently, when git url uses non-standard port (my repo sits on 7999, for example), incorrect hostkey is added to `~/.ssh/known_hosts`. \\n\\n\\n\\nAfter the fix, non-standard ports will be explicitly passed as an argument to `ssh-keyscan` which will then add proper hostkey.\\n\\n\\n\\n__not sure what to write here__\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"Fix to correctly add hostkey for non-standard git ports\"\n  }, \n  \"18737\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n[Developing Dynamic Inventory Sources](http://docs.ansible.com/ansible/dev_guide/developing_inventory.html)\\r\\n\\r\\n##### SUMMARY\\r\\nA link to intro_dynamic_inventory page is broken and not working\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n1. Go to [Developing Dynamic Inventory Sources](http://docs.ansible.com/ansible/dev_guide/developing_inventory.html)\\r\\n2. Search for \\\"As described in **intro_dynamic_inventory**, ansible can\\\"\\r\\n3. Observe that **intro_dynamic_inventory** is not a link but just a plain text\", \n    \"component_name\": \"[developing dynamic inventory sources](http//docs.ansible.com/ansible/dev_guide/developing_inventory.html)\", \n    \"component_raw\": \"[Developing Dynamic Inventory Sources](http://docs.ansible.com/ansible/dev_guide/developing_inventory.html)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18737\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"A link to intro_dynamic_inventory page is broken and not working\", \n    \"title\": \"Link is broken on Developing Dynamic Inventory Sources page\"\n  }, \n  \"18748\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncore\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\ndevel\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\ninclude_role+with_items executes once per item per host **on each host**.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nx.yml::\\r\\n```\\r\\n---\\r\\n- hosts: all\\r\\n  gather_facts: no\\r\\n  tasks:\\r\\n    - include_role: name=p\\r\\n      with_items: [1,2]\\r\\n```\\r\\n\\r\\nroles/p/tasks/main.yml::\\r\\n```\\r\\n- command: cat /proc/uptime\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nI expected ``cat /proc/uptime`` to be executed twice on a and twice on b.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nIt actually executes ``cat /proc/uptime`` **four times** on both hosts.\\r\\n\\r\\n```\\r\\nTASK [p : command] ****************************************************************************************************************************************************************************\\r\\nchanged: [b] => {\\\"changed\\\": true, \\\"cmd\\\": [\\\"cat\\\", \\\"/proc/uptime\\\"], \\\"delta\\\": \\\"0:00:00.002532\\\", \\\"end\\\": \\\"2016-12-05 20:00:08.080587\\\", \\\"rc\\\": 0, \\\"start\\\": \\\"2016-12-05 20:00:08.078055\\\", \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"987830.64 3614256.86\\\", \\\"stdout_lines\\\": [\\\"987830.64 3614256.86\\\"], \\\"warnings\\\": []}\\r\\nchanged: [a] => {\\\"changed\\\": true, \\\"cmd\\\": [\\\"cat\\\", \\\"/proc/uptime\\\"], \\\"delta\\\": \\\"0:00:00.002532\\\", \\\"end\\\": \\\"2016-12-05 20:00:08.080587\\\", \\\"rc\\\": 0, \\\"start\\\": \\\"2016-12-05 20:00:08.078055\\\", \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"987830.64 3614256.86\\\", \\\"stdout_lines\\\": [\\\"987830.64 3614256.86\\\"], \\\"warnings\\\": []}\\r\\n\\r\\nTASK [p : command] ****************************************************************************************************************************************************************************\\r\\nchanged: [b] => {\\\"changed\\\": true, \\\"cmd\\\": [\\\"cat\\\", \\\"/proc/uptime\\\"], \\\"delta\\\": \\\"0:00:00.002069\\\", \\\"end\\\": \\\"2016-12-05 20:00:08.214287\\\", \\\"rc\\\": 0, \\\"start\\\": \\\"2016-12-05 20:00:08.212218\\\", \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"987830.77 3614257.08\\\", \\\"stdout_lines\\\": [\\\"987830.77 3614257.08\\\"], \\\"warnings\\\": []}\\r\\nchanged: [a] => {\\\"changed\\\": true, \\\"cmd\\\": [\\\"cat\\\", \\\"/proc/uptime\\\"], \\\"delta\\\": \\\"0:00:00.002710\\\", \\\"end\\\": \\\"2016-12-05 20:00:08.214238\\\", \\\"rc\\\": 0, \\\"start\\\": \\\"2016-12-05 20:00:08.211528\\\", \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"987830.77 3614257.08\\\", \\\"stdout_lines\\\": [\\\"987830.77 3614257.08\\\"], \\\"warnings\\\": []}\\r\\n\\r\\nTASK [p : command] ****************************************************************************************************************************************************************************\\r\\nchanged: [a] => {\\\"changed\\\": true, \\\"cmd\\\": [\\\"cat\\\", \\\"/proc/uptime\\\"], \\\"delta\\\": \\\"0:00:00.002648\\\", \\\"end\\\": \\\"2016-12-05 20:00:08.340613\\\", \\\"rc\\\": 0, \\\"start\\\": \\\"2016-12-05 20:00:08.337965\\\", \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"987830.90 3614257.30\\\", \\\"stdout_lines\\\": [\\\"987830.90 3614257.30\\\"], \\\"warnings\\\": []}\\r\\nchanged: [b] => {\\\"changed\\\": true, \\\"cmd\\\": [\\\"cat\\\", \\\"/proc/uptime\\\"], \\\"delta\\\": \\\"0:00:00.002124\\\", \\\"end\\\": \\\"2016-12-05 20:00:08.345231\\\", \\\"rc\\\": 0, \\\"start\\\": \\\"2016-12-05 20:00:08.343107\\\", \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"987830.91 3614257.30\\\", \\\"stdout_lines\\\": [\\\"987830.91 3614257.30\\\"], \\\"warnings\\\": []}\\r\\n\\r\\nTASK [p : command] ****************************************************************************************************************************************************************************\\r\\nchanged: [b] => {\\\"changed\\\": true, \\\"cmd\\\": [\\\"cat\\\", \\\"/proc/uptime\\\"], \\\"delta\\\": \\\"0:00:00.002734\\\", \\\"end\\\": \\\"2016-12-05 20:00:08.475102\\\", \\\"rc\\\": 0, \\\"start\\\": \\\"2016-12-05 20:00:08.472368\\\", \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"987831.04 3614257.51\\\", \\\"stdout_lines\\\": [\\\"987831.04 3614257.51\\\"], \\\"warnings\\\": []}\\r\\nchanged: [a] => {\\\"changed\\\": true, \\\"cmd\\\": [\\\"cat\\\", \\\"/proc/uptime\\\"], \\\"delta\\\": \\\"0:00:00.002468\\\", \\\"end\\\": \\\"2016-12-05 20:00:08.478968\\\", \\\"rc\\\": 0, \\\"start\\\": \\\"2016-12-05 20:00:08.476500\\\", \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"987831.04 3614257.52\\\", \\\"stdout_lines\\\": [\\\"987831.04 3614257.52\\\"], \\\"warnings\\\": []}\\r\\n\\r\\nPLAY RECAP ************************************************************************************************************************************************************************************\\r\\na                          : ok=4    changed=4    unreachable=0    failed=0   \\r\\nb                          : ok=4    changed=4    unreachable=0    failed=0   \\r\\n```\\r\\n\", \n    \"component_name\": \"core\", \n    \"component_raw\": \"core\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18748\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"include_role+with_items executes once per item per host **on each host**.\", \n    \"title\": \"include_role+with_items executes tasks num_hosts*num_items times on *each* host\"\n  }, \n  \"18752\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel fccb434d4e) last updated 2016/11/30 210018 (GMT +200)\\nlib/ansible/modules/core (detached HEAD 6890003c4f) last updated 2016/11/30 230122 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD 20ea46642b) last updated 2016/11/30 230122 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\nlib/ansible/module_utils/urls.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel fccb434d4e) last updated 2016/11/30 21:00:18 (GMT +200)\\r\\n  lib/ansible/modules/core: (detached HEAD 6890003c4f) last updated 2016/11/30 23:01:22 (GMT +200)\\r\\n  lib/ansible/modules/extras: (detached HEAD 20ea46642b) last updated 2016/11/30 23:01:22 (GMT +200)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nFix \\\"FIXME:\\\" comments in lib/ansible/module_utils/urls.py and add missing quotation mark into an example.\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"lib/ansible/module_utils/urls.py\", \n    \"component_raw\": \"lib/ansible/module_utils/urls.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18752\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"c:module_utils/urls\", \n      \"module_util\", \n      \"needs_rebase\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Fix \\\"FIXME:\\\" comments in lib/ansible/module_utils/urls.py and add missing quotation mark into an example.\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"Fix missing generic_urlparse() in functions of urls.py\"\n  }, \n  \"18753\": {\n    \"ansible_version\": null, \n    \"body\": \"We need a guide for people who are contributing to Ansible.\\r\\n\\r\\nHere's the beginning of a page on how to create new special variable.  There are various types of variables which are unrelated.  Not sure if these should be grouped together or separately.\\r\\n\\r\\nhttps://docs.google.com/document/d/1vb9-OPXTLeySlPF40gXI3pRDkJzBPbJAJTYwcSAe7yI/edit\\r\\n\\r\\n##### ISSUE TYPE\\r\\n\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/task/feature -->\\r\\n\\r\\nUnknown.  This is both a new page and a new guide.\\r\\n\\r\\n\", \n    \"component_name\": \"unknown.  this is both a new page and a new guide.\", \n    \"component_raw\": \"Unknown.  This is both a new page and a new guide.\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18753\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": null, \n    \"title\": \"Hacking on Core Ansible: Special variables\"\n  }, \n  \"18768\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 39c2249e49)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\ncron module\\r\\n\\r\\n##### SUMMARY\\r\\nWhile doing:\\r\\n\\r\\n- name: Crontab Setting for Program\\r\\n  cron: name=\\\"Check Program is running\\\" minute=\\\"*/7\\\" user=\\\"test\\\"\\r\\n        job='bash -c \\\"source {{ homedir }}/.bashrc && $TEST_HOME/bin/Program.sh start\\\" > /dev/null'\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nansible 2.3.0 (devel 39c2249e49)\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nCentOS 3.10.0-327.36.2.el7.x86_64\\r\\n\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nIt sets the Crontab as:\\r\\n\\r\\n#Ansible: Check Program is running\\r\\n*/7 * * * * bash -c \\\"source /home/test/.bashrc && $TEST_HOME/ARL/Program.sh start\\\" > /dev/null\\r\\n\\r\\n\\r\\nbut returns back with:\\r\\n\\r\\n FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"\\\", \\\"module_stdout\\\": \\\"Traceback (most recent call last):\\\\r\\\\n  File \\\\\\\"/tmp/ansible_vHdMFc/ansible_module_cron.py\\\\\\\", line 773, in <module>\\\\r\\\\n    main()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_vHdMFc/ansible_module_cron.py\\\\\\\", line 741, in main\\\\r\\\\n    crontab.write()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_vHdMFc/ansible_module_cron.py\\\\\\\", line 345, in write\\\\r\\\\n    selinux.selinux_lsetfilecon_default(self.cron_file)\\\\r\\\\nOSError: [Errno 14] Bad address\\\\r\\\\n\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"cron\", \n    \"component_raw\": \"cron module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18768\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/cron.py\", \n    \"summary\": \"While doing:\\n\\n\\n\\n- name: Crontab Setting for Program\\n\\n  cron: name=\\\"Check Program is running\\\" minute=\\\"*/7\\\" user=\\\"test\\\"\\n\\n        job='bash -c \\\"source {{ homedir }}/.bashrc && $TEST_HOME/bin/Program.sh start\\\" > /dev/null'\", \n    \"title\": \"Cron - Module Failure\"\n  }, \n  \"18769\": {\n    \"ansible_version\": \"N/A\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nN/A\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nReplaced dict.iteritems for py3 compatibility. \\r\\nAddresses part of #18506\\r\\n\", \n    \"component_name\": \"n/a\", \n    \"component_raw\": \"N/A\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18769\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"azure\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"c:module_utils/basic\", \n      \"c:playbook/play\", \n      \"c:plugins/callback\", \n      \"cloud\", \n      \"module_util\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"python3\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Replaced dict.iteritems for py3 compatibility. \\n\\nAddresses part of #18506\", \n    \"title\": \"Replaced dict.iteritems() with iteritems\"\n  }, \n  \"18772\": {\n    \"ansible_version\": \"2.3.0\\n2.2.1.0\\nand probably earlier versions\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/task/feature -->\\r\\nlib/ansible/module_utils/basic.py - get_bin_path(self, arg, required=False, opt_dirs=[]) function\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n2.3.0\\r\\n2.2.1.0 \\r\\nand probably earlier versions \\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\ndefault\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nSLES 12.1 \\r\\nCentOS 7.2\\r\\nbut should be all linux destribution\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nAll methods / modules which are using the method get_bin_path from basic.py for getting system executables are failing when there are folders with executable permissions (+x) in the PATH variable.\\r\\ne.g. /etc/rpm/ <-> /bin/rpm\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\nPATH: /usr/local/etc:/etc:/usr/etc:/usr/local/bin:/sbin:/usr/sbin:/bin:/usr/bin\\r\\ne.g. /etc/rpm/ (permissions: 755) \\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n...\\r\\n- hosts: localhost\\r\\n  gather_facts: yes\\r\\n  become: yes\\r\\n  tasks:\\r\\n    - name: Bug report\\r\\n      rpm_key:\\r\\n        state: present\\r\\n        key: DEADB33F\\r\\n...\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nUsing the executable (e.g. /bin/rpm) to execute the specified task\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nFailure since /etc/rpm is no executable\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"cmd\\\": \\\"/etc/rpm -qa gpg-pubkey\\\",\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"key\\\": \\\"DEADB33F\\\",\\r\\n            \\\"state\\\": \\\"present\\\",\\r\\n            \\\"validate_certs\\\": true\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"rpm_key\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"[Errno 13] Permission denied\\\",\\r\\n    \\\"rc\\\": 13\\r\\n}\\r\\n\\r\\n```\\r\\n\\r\\n##### FIX?\\r\\nif os.path.exists(path) and is_executable(path):\\r\\n                bin_path = path\\r\\n\\r\\nshould probably be something like this? \\r\\nif os.path.exists(path) and is_executable(path) and os.path.isfile(path)\\r\\n\\r\\n\\r\\nSimilar to #18688 but they are talking about is_executable\", \n    \"component_name\": \"lib/ansible/module_utils/basic.py - get_bin_path(self arg required=false opt_dirs=[]) function\", \n    \"component_raw\": \"lib/ansible/module_utils/basic.py - get_bin_path(self, arg, required=False, opt_dirs=[]) function\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18772\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [], \n    \"module_match\": null, \n    \"summary\": \"All methods / modules which are using the method get_bin_path from basic.py for getting system executables are failing when there are folders with executable permissions (+x) in the PATH variable.\\n\\ne.g. /etc/rpm/ <-> /bin/rpm\", \n    \"title\": \"get_bin_path fails when folder with execute permission in path\"\n  }, \n  \"18775\": {\n    \"ansible_version\": \"$ ansible --version                                                                                                                                              [01537]\\nansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [/usr/share/ansible]\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/task/feature -->\\r\\nunarchive\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n $ ansible --version                                                                                                                                              [0:15:37]\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = ['/usr/share/ansible']\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nubuntu14.04\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nget a exception when exec unarchive moudle \\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n        - name: unarchive the guacad\\r\\n          unarchive:\\r\\n               src: files/guacamole-server-0.9.9.tar.gz\\r\\n               dest: /path/to/dest\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\nthe get this error:\\r\\n\\r\\n```\\r\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: TypeError: 'bool' object is not iterable\\r\\nfatal: [wei-test]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"Unexpected failure during module execution.\\\", \\\"stdout\\\": \\\"\\\"}\\r\\n```\\r\\n\\r\\nthen I use the `-vvv` get more info:\\r\\n\\r\\n```\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/executor/task_executor.py\\\", line 119, in run\\r\\n    res = self._execute()\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/executor/task_executor.py\\\", line 490, in _execute\\r\\n    result = self._handler.run(task_vars=variables)\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/plugins/action/unarchive.py\\\", line 70, in run\\r\\n    if self._remote_file_exists(creates):\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/plugins/action/__init__.py\\\", line 101, in _remote_file_exists\\r\\n    cmd = self._connection._shell.exists(path)\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/plugins/shell/__init__.py\\\", line 90, in exists\\r\\n    cmd = ['test', '-e', pipes.quote(path)]\\r\\n  File \\\"/usr/lib/python2.7/pipes.py\\\", line 269, in quote\\r\\n    for c in file:\\r\\nTypeError: 'bool' object is not iterable\\r\\n\\r\\nfatal: [wei-test]: FAILED! => {\\r\\n    \\\"failed\\\": true,     \\\"msg\\\": \\\"Unexpected failure during module execution.\\\",     \\\"stdout\\\": \\\"\\\"}\\r\\n\\r\\n``` \\r\\nmaybe this also affects the unarchive moudle \\r\\n\\r\\n```\\r\\n        - name: unarchive the guacad\\r\\n          unarchive:\\r\\n               src: files/guacamole-server-0.9.9.tar.gz\\r\\n               dest: /path/to/dest\\r\\n```\\r\\n\\r\\nthe get this error:\\r\\n\\r\\n```\\r\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: The error was: AttributeError: 'list' object has no attribute 'startswith'\\r\\nfatal: [wei-test]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"Unexpected failure during module execution.\\\", \\\"stdout\\\": \\\"\\\"}\\r\\n```\\r\\n\\r\\nthen I use the `-vvv` get more info:\\r\\n\\r\\n```\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/executor/task_executor.py\\\", line 119, in run\\r\\n    res = self._execute()\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/executor/task_executor.py\\\", line 490, in _execute\\r\\n    result = self._handler.run(task_vars=variables)\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/plugins/action/unarchive.py\\\", line 76, in run\\r\\n    dest = self._remote_expand_user(dest) # CCTODO: Fix path for Windows hosts.\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/plugins/action/__init__.py\\\", line 483, in _remote_expand_user\\r\\n    if not path.startswith('~'):  # FIXME: Windows paths may start with \\\"~ instead of just ~\\r\\nAttributeError: 'list' object has no attribute 'startswith'\\r\\n\\r\\nfatal: [wei-test]: FAILED! => {\\r\\n    \\\"failed\\\": true, \\r\\n    \\\"msg\\\": \\\"Unexpected failure during module execution.\\\", \\r\\n    \\\"stdout\\\": \\\"\\\"\\r\\n}\\r\\n``` \\r\\n\\r\\n\\r\\n\", \n    \"component_name\": \"unarchive\", \n    \"component_raw\": \"unarchive\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18775\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/unarchive.py\", \n    \"summary\": \"get a exception when exec unarchive moudle\", \n    \"title\": \"can't use unarchive moudle\"\n  }, \n  \"18782\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nAbort/fail if host is unreachable\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nAnsible does not seem to treat an unreachable host as a failure, and in some cases (especially tasks where Ansible is involved in monitoring), I need any and all unreachable hosts to exit failure immediately, instead of continuing on to other hosts.\\r\\n\\r\\nIt looks like I'm not the only one either:\\r\\nhttp://stackoverflow.com/questions/25930503/aborting-ansible-playbook-if-a-host-is-unreachable\\r\\nhttp://stackoverflow.com/questions/31221165/ansible-abort-execution-if-a-host-is-unreachable\\r\\nhttp://stackoverflow.com/questions/39657431/ansible-unreachable-instead-failed\\r\\n\\r\\nFWIW, none of the suggestions in the posts above worked for me.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nThe feature would hopefully be as simple as a boolean that a user can toggle, e.g. 'fail_on_unreachable: true'\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nI expected some method for failing/aborting on unreachable hosts.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nCouldn't find a good way to do it.\\r\\n\", \n    \"component_name\": \"abort/fail if host is unreachable\", \n    \"component_raw\": \"Abort/fail if host is unreachable\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18782\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Ansible does not seem to treat an unreachable host as a failure, and in some cases (especially tasks where Ansible is involved in monitoring), I need any and all unreachable hosts to exit failure immediately, instead of continuing on to other hosts.\\n\\n\\n\\nIt looks like I'm not the only one either:\\n\\nhttp://stackoverflow.com/questions/25930503/aborting-ansible-playbook-if-a-host-is-unreachable\\n\\nhttp://stackoverflow.com/questions/31221165/ansible-abort-execution-if-a-host-is-unreachable\\n\\nhttp://stackoverflow.com/questions/39657431/ansible-unreachable-instead-failed\\n\\n\\n\\nFWIW, none of the suggestions in the posts above worked for me.\", \n    \"title\": \"Abort/fail if host is unreachable\"\n  }, \n  \"18795\": {\n    \"ansible_version\": \"% ansible --version\\nansible 2.0.1.0\\nconfig file = /Users/jsumners/Projects/Ansible/banapi-servers/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @jsumners on April 20, 2016 15:15_\\n\\n##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nnpm\\n##### ANSIBLE VERSION\\n\\n```\\n% ansible --version                                                                                                 \\nansible 2.0.1.0\\n  config file = /Users/jsumners/Projects/Ansible/banapi-servers/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### OS / ENVIRONMENT\\n\\nOS X - MacPorts\\n##### SUMMARY\\n\\nThe npm module has a limited subset of switches available to it. This makes some things impossible. For example, annoying modules that require `node-gyp` need to download things from the Internet. Not all systems have a direct, or proxied, connection to the Internet. Therefore, `npm` needs the `--nodedir` switch passed to it as outlined in https://github.com/nodejs/node-gyp/issues/812 . This is not possible as the `npm` module currently exists.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#2071_\", \n    \"component_name\": \"npm\", \n    \"component_raw\": \"npm\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18795\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/language/npm.py\", \n    \"summary\": \"The npm module has a limited subset of switches available to it. This makes some things impossible. For example, annoying modules that require `node-gyp` need to download things from the Internet. Not all systems have a direct, or proxied, connection to the Internet. Therefore, `npm` needs the `--nodedir` switch passed to it as outlined in https://github.com/nodejs/node-gyp/issues/812 . This is not possible as the `npm` module currently exists.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#2071_\", \n    \"title\": \"npm module should allow passing extra switches\"\n  }, \n  \"18807\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"_From @ilpianista on November 29, 2016 10:45_\\n\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_firewall_rule\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nTarget host is Windows 7 with German language.\\r\\n\\r\\n##### SUMMARY\\r\\nI've a task to open a firewall port.\\r\\nThe rule creation succeeded, but on the next execution of the same task it fails because win_firewall_rule tries to parse the output which is in German and not in English as the module does expect.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nThe rule is e.g.\\r\\n```\\r\\nname: Open required port on the firewall\\r\\nwin_firewall_rule: name=\\\"Foo 8080\\\" localport=\\\"8080\\\" protocol=TCP action=allow direction=In profile=public enable=yes state=present force=true\\r\\n```\\r\\n##### EXPECTED RESULTS\\r\\nTask returns ok on every execution.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nTask fails on rule check.\\n\\n_Copied from original issue: ansible/ansible-modules-extras#3563_\", \n    \"component_name\": \"win_firewall_rule\", \n    \"component_raw\": \"win_firewall_rule\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18807\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_firewall_rule.ps1\", \n    \"summary\": \"I've a task to open a firewall port.\\n\\nThe rule creation succeeded, but on the next execution of the same task it fails because win_firewall_rule tries to parse the output which is in German and not in English as the module does expect.\", \n    \"title\": \"win_firewall_rule fails when locale isn't English\"\n  }, \n  \"18815\": {\n    \"ansible_version\": \"ansible 2.1.0.0\", \n    \"body\": \"_From @font on July 28, 2016 15:57_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Idea\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n- dnf\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.0.0\\n```\\n\\n<!---##### CONFIGURATION\\n\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n- Managing Linux\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nAt times it is necessary, particularly for cleanup plays, to remove all unneeded packages that were originally installed as dependencies. Currently this can be done via a `command: dnf -y autoremove`. However, it would be best to incorporate it into the dnf module.\\n\\n<!---\\n##### STEPS TO REPRODUCE\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below \\n```\\n\\n```\\n-->\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n\\n<!---##### EXPECTED RESULTS\\n What did you expect to happen when running the steps above? -->\\n\\n<!---##### ACTUAL RESULTS\\n What actually happened? If possible run with high verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below \\n```\\n\\n```\\n-->\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#2629_\", \n    \"component_name\": \"dnf\", \n    \"component_raw\": \"- dnf\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18815\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\", \n      \"module\", \n      \"waiting_on_contributor\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/dnf.py\", \n    \"summary\": \"At times it is necessary, particularly for cleanup plays, to remove all unneeded packages that were originally installed as dependencies. Currently this can be done via a `command: dnf -y autoremove`. However, it would be best to incorporate it into the dnf module.\", \n    \"title\": \"Support dnf autoremove\"\n  }, \n  \"18818\": {\n    \"ansible_version\": \"N/A\", \n    \"body\": \"_From @dagwieers on May 13, 2016 9:45_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Idea\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\nsysctl\\n##### ANSIBLE VERSION\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nAs part of transforming all command/shell actions into proper modules, we have a need to reload sysctl (`command: sysctl -p`). The main use-case is to use this as a notification handler when we template/assemble the sysctl.conf file.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#3645_\", \n    \"component_name\": \"sysctl\", \n    \"component_raw\": \"sysctl\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18818\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/sysctl.py\", \n    \"summary\": \"As part of transforming all command/shell actions into proper modules, we have a need to reload sysctl (`command: sysctl -p`). The main use-case is to use this as a notification handler when we template/assemble the sysctl.conf file.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#3645_\", \n    \"title\": \"Implement sysctl reload functionality\"\n  }, \n  \"18819\": {\n    \"ansible_version\": \"v2.1\", \n    \"body\": \"_From @dagwieers on May 28, 2016 6:44_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Idea\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\nwin_regmerge\\n##### ANSIBLE VERSION\\n\\nv2.1\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nThe win_regmerge module does not check each registry item it modifies to validate if there was a change. It instead always applies the list of changes regardless.\\n\\nThe proper implementation of win_regmerge would read the file and verify each individual setting with the registry, and report back changes and diff-output.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#2332_\", \n    \"component_name\": \"win_regmerge\", \n    \"component_raw\": \"win_regmerge\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18819\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\", \n      \"module\", \n      \"waiting_on_contributor\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_regmerge.ps1\", \n    \"summary\": \"The win_regmerge module does not check each registry item it modifies to validate if there was a change. It instead always applies the list of changes regardless.\\n\\nThe proper implementation of win_regmerge would read the file and verify each individual setting with the registry, and report back changes and diff-output.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#2332_\", \n    \"title\": \"win_regmerge is not idempotent, and does not support check-mode and diff-mode\"\n  }, \n  \"18833\": {\n    \"ansible_version\": \"ansible 2.3.0 (feature/infiniband_type 51e665d8d2) last updated 2016/12/07 123627 (GMT +300)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\nfacts.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (feature/infiniband_type 51e665d8d2) last updated 2016/12/07 12:36:27 (GMT +300)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nAdd type: \\\"infiniband\\\" for Infiniband interfaces. \\r\\n\\r\\nChecked on DDR and FDR Infiniband cards from Mellanox in both HP and Bull servers and it was always /sys/class/net/ib0/type was always \\\"32\\\". Linux kernel code [1] also says that infiniband should have type 32.\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n\\r\\n```\\r\\n$ ansible -m setup server|grep -A 80 ansible_ib0|grep type\\r\\n            \\\"type\\\": \\\"unknown\\\"\\r\\n```\\r\\n\\r\\n```\\r\\n$ ansible -m setup server|grep -A 80 ansible_ib0|grep type\\r\\n            \\\"type\\\": \\\"infiniband\\\"\\r\\n\\r\\n```\\r\\n\\r\\n\\r\\n[1]: https://github.com/torvalds/linux/blob/master/include/uapi/linux/if_arp.h\\r\\n\", \n    \"component_name\": \"facts.py\", \n    \"component_raw\": \"facts.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18833\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"c:module_utils/facts\", \n      \"docs\", \n      \"feature\", \n      \"module_util\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Add type: \\\"infiniband\\\" for Infiniband interfaces. \\n\\n\\n\\nChecked on DDR and FDR Infiniband cards from Mellanox in both HP and Bull servers and it was always /sys/class/net/ib0/type was always \\\"32\\\". Linux kernel code [1] also says that infiniband should have type 32.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n$ ansible -m setup server|grep -A 80 ansible_ib0|grep type\\n\\n            \\\"type\\\": \\\"unknown\\\"\\n\\n```\\n\\n\\n\\n```\\n\\n$ ansible -m setup server|grep -A 80 ansible_ib0|grep type\\n\\n            \\\"type\\\": \\\"infiniband\\\"\\n\\n\\n\\n```\\n\\n\\n\\n\\n\\n[1]: https://github.com/torvalds/linux/blob/master/include/uapi/linux/if_arp.h\", \n    \"title\": \"Add infiniband as a network interface type - facts\"\n  }, \n  \"18835\": {\n    \"ansible_version\": \"ansible-playbook 2.2.0.0\\nconfig file = /home/ansible/ansible/ansible.cfg\\nconfigured module search path = [/usr/local/share/ansible/modules]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible-2.2.0.0\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nansible-playbook 2.2.0.0\\r\\n  config file = /home/ansible/ansible/ansible.cfg\\r\\n  configured module search path = ['/usr/local/share/ansible/modules']\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n[defaults]\\r\\ninventory      = /home/ansible/ansible/inventory/hosts\\r\\nlibrary        = /usr/local/share/ansible/modules\\r\\nforks          = 20\\r\\nroles_path    = /home/ansible/ansible/roles\\r\\nremote_user = ansible\\r\\nlog_path = /home/ansible/ansible/ansible.log\\r\\nhash_behaviour = merge\\r\\nprivate_role_vars = no\\r\\nprivate_key_file = /home/ansible/.ssh/id_rsa\\r\\nvault_password_file = /home/ansible/ansible/secrets/vault-password-file\\r\\nansible_managed = Ansible managed: {file} on {host}\\r\\naction_plugins     = /usr/local/share/ansible/plugins/action\\r\\ncallback_plugins   = /usr/local/share/ansible/plugins/callback\\r\\nconnection_plugins = /usr/local/share/ansible/plugins/connection\\r\\nlookup_plugins     = /usr/local/share/ansible/plugins/lookup\\r\\nvars_plugins       = /usr/local/share/ansible/plugins/vars\\r\\nfilter_plugins     = /usr/local/share/ansible/plugins/filter\\r\\ntest_plugins       = /usr/local/share/ansible/plugins/test\\r\\nstrategy_plugins   = /usr/local/share/ansible/plugins/strategy\\r\\n[privilege_escalation]\\r\\n[paramiko_connection]\\r\\n[ssh_connection]\\r\\n[accelerate]\\r\\n[selinux]\\r\\n[colors]\\r\\ndiff_remove = bright blue\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nController: ansible-2.2.0.0\\r\\nControlled node: FreeBSD\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nI have a role, ossec_hids_agent, which has a dependency on a subordinate role, ossec_hids_common. The subordinate role has a dynamic task include and loads tasks from ossec_hids_agent space. I believe this is incorrect, a child role should not run tasks defined in it's parent.\\r\\n\\r\\nThis behaviour changed in ansible-2.2.0.0\\r\\nansible-2.1.3.0 has what I consider the correct behaviour\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n**roles/ossec_hids_agent/meta/main.yml**:\\r\\ndependencies:\\r\\n  - role: ossec_hids_common\\r\\n\\r\\n**roles/ossec_hids_common_tasks/config.yml** (included from main.yml):\\r\\n- name: Include OS-specific config tasks.\\r\\n  include: \\\"{{ item }}\\\"\\r\\n  with_first_found:\\r\\n    ...\\r\\n    - \\\"./includes/{{ ansible_distribution }}-config.yml\\\"\\r\\n    ...\\r\\n\\r\\n**ls roles/ossec_hids_agent/tasks/includes/**:\\r\\nFreeBSD-config.yml\\r\\n\\r\\n**ls roles/ossec_hids_common/tasks/includes/**:\\r\\n<nothing>\\r\\n\\r\\n**playbooks/test/ossec_hids.yml**:\\r\\n- hosts: ossec-agent\\r\\n  roles:\\r\\n  - role: ossec_hids_agent\\r\\n    tags: [ \\\"ossec\\\", \\\"ossec-agent\\\" ]\\r\\n\\r\\n**playbook command**:\\r\\nansible-playbook playbooks/test/ossec_hids.yml -b -D -t ossec-agent\\r\\n\\r\\nThe intent is that on e.g. a FreeBSD node, if a file includes/FreeBSD-config.yml exists, it will be included and executed. I expect that ossec_hids_common will only include files defined in it's own role structure and not search through the parent's includes as well\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe include in ossec_hids_common should be a noop\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n**ansible-2.2.0.0**:\\r\\nTASK [ossec_hids_common : Include OS-specific config tasks.] *******************\\r\\nincluded: /home/alan/gitwork/ansible/roles/role_ossec_hids_agent/tasks/includes/FreeBSD-config.yml for freebsd-9-3, freebsd-10-2, freebsd-10-3\\r\\n\\r\\nClearly, the child role is including files defined in it's parent.\\r\\n\\r\\n**ansible-2.1.3.0**\\r\\nTASK [ossec_hids_common : Include OS-specific config tasks.] *******************\\r\\nTASK [ossec_hids_common : Enable ossec_hids_common services] *******************\\r\\n\\r\\nWith this version the operation is a noop\", \n    \"component_name\": \"ansible-2.2.0.0\", \n    \"component_raw\": \"ansible-2.2.0.0\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18835\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I have a role, ossec_hids_agent, which has a dependency on a subordinate role, ossec_hids_common. The subordinate role has a dynamic task include and loads tasks from ossec_hids_agent space. I believe this is incorrect, a child role should not run tasks defined in it's parent.\\n\\n\\n\\nThis behaviour changed in ansible-2.2.0.0\\n\\nansible-2.1.3.0 has what I consider the correct behaviour\", \n    \"title\": \"Dynamic include tasks in a dependant role execute tasks from the parent role, ansible-2.2.0.0\"\n  }, \n  \"18842\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`ec2_group_facts`\\r\\n\\r\\nSigned-off-by: Steve Kuznetsov <skuznets@redhat.com>\", \n    \"component_name\": \"ec2_group_facts\", \n    \"component_raw\": \"`ec2_group_facts`\\nSigned-off-by: Steve Kuznetsov <skuznets@redhat.com>\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18842\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"community_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_group_facts.py\", \n    \"summary\": null, \n    \"title\": \"ec2_group_facts: Fail correctly when boto3 is not installed\"\n  }, \n  \"18844\": {\n    \"ansible_version\": \"any\", \n    \"body\": \"_From @Atoms on September 15, 2016 11:36_\\n\\n##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nzabbix_host\\n##### ANSIBLE VERSION\\n\\nany\\n##### SUMMARY\\n\\nStarting zabbix 3.0 zabbix host can be configured using encryption. Please add settings for encryption to module\\n##### EXPECTED RESULTS\\n\\nAdding zabbix host configuration for encryption is added.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#2921_\", \n    \"component_name\": \"zabbix_host\", \n    \"component_raw\": \"zabbix_host\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18844\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/monitoring/zabbix_host.py\", \n    \"summary\": \"Starting zabbix 3.0 zabbix host can be configured using encryption. Please add settings for encryption to module\", \n    \"title\": \"Zabbix module encryption support\"\n  }, \n  \"18848\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Feature Pull Request\\r\\n##### COMPONENT NAME\\r\\n\\r\\n`make`\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n##### SUMMARY\\r\\n\\r\\nIn order to run a `make` target with options, we need to not\\r\\nassume that the target that is passed in to the module is to\\r\\nbe interpreted as one command-line argument. This allows us\\r\\nto support targets with options like:\\r\\n  $ make some-target -o some-file\\r\\n\\r\\nWhere the `some-target` target skips rebuilding `some-file`\\r\\neven if the file is old. Currently, the implementation would\\r\\nattempt to run the `some-target -o some-file` target, which\\r\\ndoes not exist.\\r\\n\\r\\n`make` does not allow for targets with spaces in their names,\\r\\nso we should be safe to break up the command-line arguments\\r\\nlike this and not risk mutilating a valid target name.\\r\\n\\r\\nSigned-off-by: Steve Kuznetsov skuznets@redhat.com\\r\\n###### BEFORE\\r\\n\\r\\n```\\r\\nTASK [make : execute make target(s) \\\"test -o build\\\" in the origin-web-console repository] ***\\r\\nfailed: [openshiftdevel] (item=test -o build) => {\\r\\n    \\\"cmd\\\": \\\"/bin/make 'test -o build'\\\", \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"chdir\\\": \\\"/data/src/github.com/openshift/origin-web-console\\\", \\r\\n            \\\"params\\\": null, \\r\\n            \\\"target\\\": \\\"test -o build\\\"\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"make\\\"\\r\\n    }, \\r\\n    \\\"item\\\": \\\"test -o build\\\", \\r\\n    \\\"msg\\\": \\\"make: *** No rule to make target 'test -o build'.  Stop.\\\", \\r\\n    \\\"rc\\\": 2, \\r\\n    \\\"stderr\\\": \\\"make: *** No rule to make target 'test -o build'.  Stop.\\\\n\\\", \\r\\n    \\\"stdout\\\": \\\"\\\", \\r\\n    \\\"stdout_lines\\\": []\\r\\n}\\r\\n```\\r\\n###### AFTER\\r\\n\\r\\n```\\r\\nTASK [make : execute make target(s) \\\"test -o build\\\" in the origin-web-console repository] ***\\r\\nfailed: [openshiftdevel] (item=test -o build) => {\\r\\n    \\\"cmd\\\": \\\"/bin/make test -o build\\\", \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"chdir\\\": \\\"/data/src/github.com/openshift/origin-web-console\\\", \\r\\n            \\\"params\\\": null, \\r\\n            \\\"target\\\": \\\"test -o build\\\"\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"make\\\"\\r\\n    }, \\r\\n    \\\"item\\\": \\\"test -o build\\\", \\r\\n    \\\"msg\\\": \\\"<snip>make: *** [test] Error 3\\\", \\r\\n    \\\"rc\\\": 2, \\r\\n    \\\"stderr\\\": \\\"<snip>make: *** [test] Error 3\\\\n\\\", \\r\\n    \\\"stdout\\\": \\\"<snip>Makefile:45: recipe for target 'test' failed\\\\n\\\", \\r\\n    \\\"stdout_lines\\\": [\\r\\n        <snip>\\r\\n        \\\"Makefile:45: recipe for target 'test' failed\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n(example after has a failed `make` target, but it runs correctly, just that example failed in the middle of the run)\\r\\n\\r\\n@LinusU @gregdek  I've added the version comment in the documentation.\", \n    \"component_name\": \"make\", \n    \"component_raw\": \"`make`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18848\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/make.py\", \n    \"summary\": \"In order to run a `make` target with options, we need to not\\n\\nassume that the target that is passed in to the module is to\\n\\nbe interpreted as one command-line argument. This allows us\\n\\nto support targets with options like:\\n\\n  $ make some-target -o some-file\\n\\n\\n\\nWhere the `some-target` target skips rebuilding `some-file`\\n\\neven if the file is old. Currently, the implementation would\\n\\nattempt to run the `some-target -o some-file` target, which\\n\\ndoes not exist.\\n\\n\\n\\n`make` does not allow for targets with spaces in their names,\\n\\nso we should be safe to break up the command-line arguments\\n\\nlike this and not risk mutilating a valid target name.\\n\\n\\n\\nSigned-off-by: Steve Kuznetsov skuznets@redhat.com\\n\\n###### BEFORE\\n\\n\\n\\n```\\n\\nTASK [make : execute make target(s) \\\"test -o build\\\" in the origin-web-console repository] ***\\n\\nfailed: [openshiftdevel] (item=test -o build) => {\\n\\n    \\\"cmd\\\": \\\"/bin/make 'test -o build'\\\", \\n\\n    \\\"failed\\\": true, \\n\\n    \\\"invocation\\\": {\\n\\n        \\\"module_args\\\": {\\n\\n            \\\"chdir\\\": \\\"/data/src/github.com/openshift/origin-web-console\\\", \\n\\n            \\\"params\\\": null, \\n\\n            \\\"target\\\": \\\"test -o build\\\"\\n\\n        }, \\n\\n        \\\"module_name\\\": \\\"make\\\"\\n\\n    }, \\n\\n    \\\"item\\\": \\\"test -o build\\\", \\n\\n    \\\"msg\\\": \\\"make: *** No rule to make target 'test -o build'.  Stop.\\\", \\n\\n    \\\"rc\\\": 2, \\n\\n    \\\"stderr\\\": \\\"make: *** No rule to make target 'test -o build'.  Stop.\\\\n\\\", \\n\\n    \\\"stdout\\\": \\\"\\\", \\n\\n    \\\"stdout_lines\\\": []\\n\\n}\\n\\n```\\n\\n###### AFTER\\n\\n\\n\\n```\\n\\nTASK [make : execute make target(s) \\\"test -o build\\\" in the origin-web-console repository] ***\\n\\nfailed: [openshiftdevel] (item=test -o build) => {\\n\\n    \\\"cmd\\\": \\\"/bin/make test -o build\\\", \\n\\n    \\\"failed\\\": true, \\n\\n    \\\"invocation\\\": {\\n\\n        \\\"module_args\\\": {\\n\\n            \\\"chdir\\\": \\\"/data/src/github.com/openshift/origin-web-console\\\", \\n\\n            \\\"params\\\": null, \\n\\n            \\\"target\\\": \\\"test -o build\\\"\\n\\n        }, \\n\\n        \\\"module_name\\\": \\\"make\\\"\\n\\n    }, \\n\\n    \\\"item\\\": \\\"test -o build\\\", \\n\\n    \\\"msg\\\": \\\"<snip>make: *** [test] Error 3\\\", \\n\\n    \\\"rc\\\": 2, \\n\\n    \\\"stderr\\\": \\\"<snip>make: *** [test] Error 3\\\\n\\\", \\n\\n    \\\"stdout\\\": \\\"<snip>Makefile:45: recipe for target 'test' failed\\\\n\\\", \\n\\n    \\\"stdout_lines\\\": [\\n\\n        <snip>\\n\\n        \\\"Makefile:45: recipe for target 'test' failed\\\"\\n\\n    ]\\n\\n}\\n\\n```\\n\\n\\n\\n(example after has a failed `make` target, but it runs correctly, just that example failed in the middle of the run)\\n\\n\\n\\n@LinusU @gregdek  I've added the version comment in the documentation.\", \n    \"title\": \"Add support to the `make` module for targets with options\"\n  }, \n  \"18860\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @edrozenberg on November 12, 2016 16:4_\\n\\n##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nhomebrew\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n```\\r\\n[defaults]\\r\\ninventory             = hosts/hosts\\r\\nvault_password_file   = ~/.ansible/vault/password.txt\\r\\nretry_files_enabled   = False\\r\\nretry_files_save_path = ~/.ansible/retry\\r\\nremote_user           = root\\r\\nnocows                = 0\\r\\n\\r\\n[ssh_connection]\\r\\npipelining = True\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nMacOS 10.12.1 (16B2555) managing same\\r\\n\\r\\n##### SUMMARY\\r\\nThere are various cases where passing '--force' to a homebrew action is useful.\\r\\n\\r\\nFor example:\\r\\n* Once in a while have multiple versions of the same brew installed, such as php56-xdebug 2.4.1 and 2.3.3.\\r\\n\\r\\n* Currently the Ansible module with \\\"absent\\\" does not remove all versions of the package name, which is fine because some users need different versions of the same package.\\r\\n\\r\\n* What is needed is a module 'force' param to tell the brew command to uninstall all versions as brew documents - ```Remove all versions with `brew uninstall --force php56-xdebug` ```\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n* Install two versions of the same brew package. Ensure both are installed: ```brew info <mypkg>``` or ```brew list --versions | grep <mypkg>```\\r\\n\\r\\n* Run ansible playbook to remove the package:\\r\\n```\\r\\n-  homebrew:\\r\\n    name: <mypkg>    state: absent\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nOnly one version is removed. Would need a new module option 'force' for the Ansible homebrew module to be able to tell 'brew' to remove all versions.\\r\\n\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#3446_\", \n    \"component_name\": \"homebrew\", \n    \"component_raw\": \"homebrew\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18860\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/homebrew.py\", \n    \"summary\": \"There are various cases where passing '--force' to a homebrew action is useful.\\n\\n\\n\\nFor example:\\n\\n* Once in a while have multiple versions of the same brew installed, such as php56-xdebug 2.4.1 and 2.3.3.\\n\\n\\n\\n* Currently the Ansible module with \\\"absent\\\" does not remove all versions of the package name, which is fine because some users need different versions of the same package.\\n\\n\\n\\n* What is needed is a module 'force' param to tell the brew command to uninstall all versions as brew documents - ```Remove all versions with `brew uninstall --force php56-xdebug` ```\", \n    \"title\": \"homebrew module needs '--force' for ex. when multiple versions of a pkg installed\"\n  }, \n  \"18861\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 03765ba65e) last updated 2016/10/10 201720 (GMT +800)\\nlib/ansible/modules/core (detached HEAD b4f6a25195) last updated 2016/10/10 201743 (GMT +800)\\nlib/ansible/modules/extras (detached HEAD 734aa8f8e9) last updated 2016/10/10 201758 (GMT +800)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @j3ffrw on October 10, 2016 12:38_\\n\\n##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nwin_firewall_rule\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.3.0 (devel 03765ba65e) last updated 2016/10/10 20:17:20 (GMT +800)\\n  lib/ansible/modules/core: (detached HEAD b4f6a25195) last updated 2016/10/10 20:17:43 (GMT +800)\\n  lib/ansible/modules/extras: (detached HEAD 734aa8f8e9) last updated 2016/10/10 20:17:58 (GMT +800)\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\n-->\\n##### OS / ENVIRONMENT\\n\\nUsing Linux Mint 17.2 Rafaela to manage Windows Server 2008 R2 Datacenter\\n##### SUMMARY\\n\\nService option should not have a default value \\\"any\\\" as this will prevent from creating a rule that \\\"Apply to all programs and services\\\"\\n\\nfrom technet docs:\\n-Service<String>\\n\\nSpecifies the short name of a Windows Server 2012 service to which the firewall rule applies. If this parameter is not specified, then network traffic generated by any program or service matches this rule.\\nNote: Querying for rules with this parameter can only be performed using filter objects. See the Get-NetFirewallServiceFilter cmdlet for more information. https://technet.microsoft.com/en-us/library/jj554908%28v=wps.630%29.aspx\\n##### STEPS TO REPRODUCE\\n\\nRun the ff playbook. \\n- hosts: windows\\n  tasks:\\n  - name: Open firewall ports\\n    action: win_firewall_rule\\n    args:\\n      name: \\\"test\\\"\\n      enable: yes\\n      state: present\\n      localport: \\\"80\\\"\\n      remoteip: \\\"192.168.1.100\\\"\\n      force: yes\\n      profile: any\\n      action: allow\\n      direction: In\\n      protocol: TCP\\n##### EXPECTED RESULTS\\n\\n Able to create rules where rules services applies to \\\"Apply to all programs and services\\\"\\n##### ACTUAL RESULTS\\n\\nWhen service option is not defined Service defaults to \\\"Apply to services only\\\"\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#3131_\", \n    \"component_name\": \"win_firewall_rule\", \n    \"component_raw\": \"win_firewall_rule\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18861\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_firewall_rule.ps1\", \n    \"summary\": \"Service option should not have a default value \\\"any\\\" as this will prevent from creating a rule that \\\"Apply to all programs and services\\\"\\n\\nfrom technet docs:\\n-Service<String>\\n\\nSpecifies the short name of a Windows Server 2012 service to which the firewall rule applies. If this parameter is not specified, then network traffic generated by any program or service matches this rule.\\nNote: Querying for rules with this parameter can only be performed using filter objects. See the Get-NetFirewallServiceFilter cmdlet for more information. https://technet.microsoft.com/en-us/library/jj554908%28v=wps.630%29.aspx\", \n    \"title\": \"After commit 9392943 win_firewall_rules rules default to services only\"\n  }, \n  \"18868\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /Users/kkirsche/git/yaml/mac_setup/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report with X-Ref: ansible/ansible-modules-extras#3677\\r\\nClosed on extras repo due to repo merge\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\n[Pushover](http://docs.ansible.com/ansible/pushover_module.html)\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /Users/kkirsche/git/yaml/mac_setup/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n```\\r\\n[defaults]\\r\\ninventory: ./production\\r\\nremote_user: kkirsche\\r\\nremote_port: 22\\r\\nforks: 20\\r\\npipelining: true\\r\\ncallback_whitelist: json\\r\\n#stdout_callback: json\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nmacOS 10.12.1 -> macOS 10.12.1 (localhost) \\u2014 N/A\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nRunning the pushover module results in the error:\\r\\n```\\r\\nhostname 'api.pushover.net:443' doesn't match either of '*.pushover.net', 'pushover.net'\\\\\\\", \\\\\\\"failed\\\\\\\": true, \\\\\\\"invocation\\r\\n```\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n**tasks/main.yml**\\r\\n```\\r\\n---\\r\\n# tasks file for ssh_config\\r\\n\\r\\n- name: Notify that SSH Configuration is being changed\\r\\n  pushover:\\r\\n    msg: Mac SSH Configuration is being updated\\r\\n    app_token: \\\"{{ pushoverAppToken }}\\\"\\r\\n    user_key: \\\"{{ pushoverUserKey }}\\\"\\r\\n\\r\\n- name: Create ~/.ssh if it doesn't exist\\r\\n  file:\\r\\n    path: \\\"{{ ansible_env.HOME }}/.ssh\\\"\\r\\n    state: directory\\r\\n    mode: \\\"{{ ssh_directory_mode }}\\\"\\r\\n\\r\\n- name: Create ssh configuration file\\r\\n  template:\\r\\n    dest: \\\"{{ ansible_env.HOME }}/.ssh/config\\\"\\r\\n    src: config.j2\\r\\n    mode: \\\"{{ ssh_config_mode }}\\\"\\r\\n```\\r\\n\\r\\n**templates/config.j2**\\r\\n```\\r\\n{% for host in ssh_config_hosts %}\\r\\nHost {{ ssh_config_hosts[host].host }}\\r\\n{% if ssh_config_hosts[host].hostname is defined %}\\r\\nHostname {{ ssh_config_hosts[host].hostname }}\\r\\n{% endif %}\\r\\n{% if ssh_config_hosts[host].user is defined %}\\r\\nUser {{ ssh_config_hosts[host].user }}\\r\\n{% endif %}\\r\\n{% if ssh_config_hosts[host].port is defined %}\\r\\nPort {{ ssh_config_hosts[host].port }}\\r\\n{% endif %}\\r\\n{% if ssh_config_hosts[host].proxy_command is defined %}\\r\\nProxyCommand {{ ssh_config_hosts[host].proxy_command }}\\r\\n{% endif %}\\r\\n{% if ssh_config_hosts[host].identity_file is defined %}\\r\\nIdentityFile {{ ssh_config_hosts[host].identity_file }}\\r\\n{% endif %}\\r\\n{% if ssh_config_hosts[host].local_forward is defined %}\\r\\nLocalForward {{ ssh_config_hosts[host].local_forward }}\\r\\n{% endif %}\\r\\n\\r\\n{% endfor %}\\r\\n```\\r\\n\\r\\n**defaults/main.yml**\\r\\n```\\r\\n---\\r\\n# defaults file for ssh_config\\r\\nssh_directory_mode: 0700\\r\\nssh_config_mode: 0600\\r\\n\\r\\nssh_remote_user: kkirsche\\r\\n\\r\\nssh_config_hosts:\\r\\n  googledns:\\r\\n    host: gdns\\r\\n    hostname: 8.8.8.8\\r\\n    user: \\\"{{ ssh_remote_user }}\\\"\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nFor it to send a pushover notification prior to running the configuration changes\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with high verbosity (-vvvv) -->\\r\\nThe pushover notification failed with `hostname 'api.pushover.net:443' doesn't match either of '*.pushover.net', 'pushover.net'\\\\\\\", \\\\\\\"failed\\\\\\\": true, \\\\\\\"invocation`\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n___________________________________________________________\\r\\n/ TASK [ssh_config : Notify that SSH Configuration is being \\\\\\r\\n\\\\ changed]                                                  /\\r\\n-----------------------------------------------------------\\r\\n       \\\\   ^__^\\r\\n        \\\\  (oo)\\\\_______\\r\\n           (__)\\\\       )\\\\/\\\\\\r\\n               ||----w |\\r\\n               ||     ||\\r\\n\\r\\ntask path: /Users/kkirsche/git/yaml/mac_setup/roles/ssh_config/tasks/main.yml:4\\r\\nUsing module file /usr/local/Cellar/ansible/2.2.0.0_1/libexec/lib/python2.7/site-packages/ansible/modules/extras/notification/pushover.py\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: kkirsche\\r\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1481047350.24-71608570119340 `\\\" && echo ansible-tmp-1481047350.24-71608570119340=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1481047350.24-71608570119340 `\\\" ) && sleep 0'\\r\\n<127.0.0.1> PUT /var/folders/8y/pj9zz4b12r37490xnlqb7gb13tt57z/T/tmpO7biWl TO /Users/kkirsche/.ansible/tmp/ansible-tmp-1481047350.24-71608570119340/pushover.py\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /Users/kkirsche/.ansible/tmp/ansible-tmp-1481047350.24-71608570119340/ /Users/kkirsche/.ansible/tmp/ansible-tmp-1481047350.24-71608570119340/pushover.py && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python /Users/kkirsche/.ansible/tmp/ansible-tmp-1481047350.24-71608570119340/pushover.py; rm -rf \\\"/Users/kkirsche/.ansible/tmp/ansible-tmp-1481047350.24-71608570119340/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nfatal: [127.0.0.1]: FAILED! => {\\r\\n   \\\"changed\\\": false,\\r\\n   \\\"failed\\\": true,\\r\\n   \\\"invocation\\\": {\\r\\n       \\\"module_name\\\": \\\"pushover\\\"\\r\\n   },\\r\\n   \\\"module_stderr\\\": \\\"\\\",\\r\\n   \\\"module_stdout\\\": \\\"\\\\n{\\\\\\\"msg\\\\\\\": \\\\\\\"hostname 'api.pushover.net:443' doesn't match either of '*.pushover.net', 'pushover.net'\\\\\\\", \\\\\\\"failed\\\\\\\": true, \\\\\\\"invocation\\\\\\\": {\\\\\\\"module_args\\\\\\\": {\\\\\\\"msg\\\\\\\": \\\\\\\"Mac SSH Configuration is being updated\\\\\\\", \\\\\\\"user_key\\\\\\\": \\\\\\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\\\\\", \\\\\\\"app_token\\\\\\\": \\\\\\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\\\\\", \\\\\\\"pri\\\\\\\": \\\\\\\"0\\\\\\\"}}}\\\\n\\\\n{\\\\\\\"msg\\\\\\\": \\\\\\\"Unable to send msg via pushover\\\\\\\", \\\\\\\"failed\\\\\\\": true, \\\\\\\"invocation\\\\\\\": {\\\\\\\"module_args\\\\\\\": {\\\\\\\"msg\\\\\\\": \\\\\\\"Mac SSH Configuration is being updated\\\\\\\", \\\\\\\"user_key\\\\\\\": \\\\\\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\\\\\", \\\\\\\"app_token\\\\\\\": \\\\\\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\\\\\", \\\\\\\"pri\\\\\\\": \\\\\\\"0\\\\\\\"}}}\\\\n\\\",\\r\\n   \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n...ignoring\\r\\n```\\r\\n\", \n    \"component_name\": \"[pushover](http//docs.ansible.com/ansible/pushover_module\", \n    \"component_raw\": \"[Pushover](http://docs.ansible.com/ansible/pushover_module.html)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18868\", \n    \"issue_type\": \"ansible-modules-extras3677\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/notification/pushover.py\", \n    \"summary\": \"Running the pushover module results in the error:\\n\\n```\\n\\nhostname 'api.pushover.net:443' doesn't match either of '*.pushover.net', 'pushover.net'\\\\\\\", \\\\\\\"failed\\\\\\\": true, \\\\\\\"invocation\\n\\n```\", \n    \"title\": \"Pushover Hostname api.pushover.net:443 doesn't match\"\n  }, \n  \"18871\": {\n    \"ansible_version\": \"ansible 1.9.3\\nconfigured module search path = None\\n(but broken in Ansible 2 as well)\", \n    \"body\": \"_From @jmehnle on October 27, 2016 19:8_\\n\\n##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\n`logentries` module\\n##### ANSIBLE VERSION\\n\\n```\\nansible 1.9.3\\n  configured module search path = None\\n```\\n\\n(but broken in Ansible 2 as well)\\n##### OS / ENVIRONMENT\\n\\nManaging Ubuntu 14.04 and 16.04.\\n`logentries` agent 1.4.39 (latest as of 2016-10-27), but tried various versions.\\n##### SUMMARY\\n\\nThe `logentries` module fails to correctly unfollow logs. The `le` command it issues is `le rm <logfile-path>`, but that only results in an error message:\\n\\n```\\nfailed: [<hostname>] => (item={'path': '/var/log/diskutil.log', 'state': 'absent', 'name': 'Diskutil'}) => {\\\"failed\\\": true, \\\"item\\\": {\\\"name\\\": \\\"Diskutil\\\", \\\"path\\\": \\\"/var/log/diskutil.log\\\", \\\"state\\\": \\\"absent\\\"}}\\nmsg: failed to remove '/var/log/diskutil.log': Error: Resource var not found.\\n```\\n\\nThe play in the playbook is:\\n\\n```\\n- name: logentries\\n  hosts: all\\n  sudo: yes\\n  roles:\\n    - role: logentries\\n      logentries_logs:\\n        - \\u2026\\n        - name: \\\"Diskutil\\\"\\n          path: \\\"/var/log/diskutil.log\\\"\\n          state: absent\\n```\\n\\nThe relevant task is:\\n\\n```\\n- name: Follow logs\\n  logentries: path={{ item.path }} state={{ item.state | default('present') }}\\n  with_items: logentries_logs\\n```\\n\\nAccording to https://docs.logentries.com/docs/linux-agent and https://github.com/logentries/le/issues/66, the correct argument to pass to `le rm` is not the log file's file system path but a virtual path composed of 1. the prefix `hosts/`, 2. the fully qualified name of the host, and 3. the symbolic name of the log file specified during the initial `follow` action (defaulting to the base name of the log file path), e.g., `hosts/<hostname>/diskutil.log`.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#3307_\", \n    \"component_name\": \"logentries\", \n    \"component_raw\": \"`logentries` module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18871\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_1.9\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/monitoring/logentries.py\", \n    \"summary\": \"The `logentries` module fails to correctly unfollow logs. The `le` command it issues is `le rm <logfile-path>`, but that only results in an error message:\\n\\n```\\nfailed: [<hostname>] => (item={'path': '/var/log/diskutil.log', 'state': 'absent', 'name': 'Diskutil'}) => {\\\"failed\\\": true, \\\"item\\\": {\\\"name\\\": \\\"Diskutil\\\", \\\"path\\\": \\\"/var/log/diskutil.log\\\", \\\"state\\\": \\\"absent\\\"}}\\nmsg: failed to remove '/var/log/diskutil.log': Error: Resource var not found.\\n```\\n\\nThe play in the playbook is:\\n\\n```\\n- name: logentries\\n  hosts: all\\n  sudo: yes\\n  roles:\\n    - role: logentries\\n      logentries_logs:\\n        - \\n        - name: \\\"Diskutil\\\"\\n          path: \\\"/var/log/diskutil.log\\\"\\n          state: absent\\n```\\n\\nThe relevant task is:\\n\\n```\\n- name: Follow logs\\n  logentries: path={{ item.path }} state={{ item.state | default('present') }}\\n  with_items: logentries_logs\\n```\\n\\nAccording to https://docs.logentries.com/docs/linux-agent and https://github.com/logentries/le/issues/66, the correct argument to pass to `le rm` is not the log file's file system path but a virtual path composed of 1. the prefix `hosts/`, 2. the fully qualified name of the host, and 3. the symbolic name of the log file specified during the initial `follow` action (defaulting to the base name of the log file path), e.g., `hosts/<hostname>/diskutil.log`.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#3307_\", \n    \"title\": \"logentries module fails to correctly unfollow logs\"\n  }, \n  \"18872\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\nGithub/ISSUE_TEMPLATE\\r\\n\\r\\nFixes #18870\", \n    \"component_name\": \"github/issue_template\", \n    \"component_raw\": \"Github/ISSUE_TEMPLATE\\nFixes #18870\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18872\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:cli/\", \n      \"docs\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": null, \n    \"title\": \"Remove's post issue to ansible-modules-extras statement\"\n  }, \n  \"18873\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel f1b37a184c) last updated 2016/12/07 171758 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nCow support.\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel f1b37a184c) last updated 2016/12/07 17:17:58 (GMT +200)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nNone\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nCurrently a cow whitelist is mandatory, but it would be nice to be able to not enforce one.\\r\\nFor example, I use Ponysay instead of cowsay and they use completely different \\\"cows\\\" names. If I want to have all of the ponies, I must do :\\r\\n```\\r\\nexport ANSIBLE_COW_WHITELIST=ace,ahuizotl,airheart,allie,aloe,amethyststar,amira,angel,applebloom,applebloomdance,applebumpkin,applecore,applefritter,applejack,applejackscarecrow,applesplit,archer,babseed,basil,bastionyorsets,bear,beautybrass,berrydreams,berrypinch,berrypunch,bigmac,bigmacsleep,billneigh,blaze,blinkie,blossomforth,blueberry,blueberrycake,blueblood,blueharvest,blues,bonbon,bonbonlyra,bonbonstand,bonvoyage,boxxy,brad,braeburn,brucemane,bulkbiceps,buttonmash,cadance,cadancecrystal,cadancescruffy,caesar,candylicious,candymane,caramel,carecake,carrot,carrotcake,carrottop,celestia,celestiasmall,cerberus,changeling,changelingqueen,cheerilee,cheerilee80,cheesesandwich,cherryberry,cherrycola,cherryfizzy,chrysalis,clockwork,cloudchaser,cloudkicker,clyde,coldheart,colgate,colton,cottoncloudy,cow,crackle,craftycrate,creampuff,cremebrulee,cupcake,cutiemarkcrusaders,daisy,dancefever,daringdo,davenport,deepblue,derpy,derpybags,derpycloud,derpysad,derpysit,derpystand,derpystandwing,descent,diamondmint,diamondtiara,dinky,discord,discordamused,discordpuppetmaster,djpon-3,doctor,drhooves,elsie,epona,fancypants,featherweight,fiddlesticks,fido,fillycadance,fillydash,fillydashfly,fillyjack,fillyjacktravel,fillypinkie,fillypinkiecurly,fillyrarity,fillyshy,fillytwilight,filmreel,filthyrich,firestreak,flam,flashsentry,fleetfoot,fleurdelis,fleurdelishair,fleurdelislay,flim,flitter,flowertrio,fluttershy,fluttershygala,fluttershyshy,fluttershystare,forestspirit,frederickhorseshoepin,georgewashingtony,gilda,gildastand,gingergold,gingersnap,goldenharvest,granny,grannychair,grannysleep,gummy,gustavelegrand,haakim,hairytipper,harpass,harshwhinny,hayfever,hayseed,heartstrings,highscore,hoity,hollydash,horsemd,horsepower,horte,hughjelly,inky,ironwill,ironwillwalk,jeffletrotski,jesuspezuna,joe,joetuxedo,jubileena,junebug,laflour,lemonhearts,lightning,lightningdust,lily,lilyvalley,lintsalot,lotus,lotusblossom,lulamoon,luna,lunafly,lyra,lyrabonbon,lyrasit,mabel,magnum,mane-iac,mannyroar,manticore,mantishy,maredowell,maredowellfly,master,maudepie,maybelle,mayor,meadowsong,melilot,midnightstrike,milkyway,minuette,misty,mjolna,mrbreezy,mrsparkle,mrssparkle,mule,nightingale,nightlight,nightmaremoon,nightmarerarity,noi,noteworthy,octavia,oinkoinkoink,opal,orange,orangebird,orangefrog,owl,owlowiscious,pansyshy,papermoon,parasprite,peachbottom,pearl,perry,perrypierce,persnickety,petunia,philomena,philomenaphoenix,photofinish,pictureperfect,pigpen,pinacolada,pinkacopter,pinkamina,pinkie,pinkiebounce,pinkiecannon,pinkiecannonfront,pinkiecannonhappy,pinkiechicken,pinkiecrazyface,pinkiefly,pinkiegala,pinkiegummy,pinkiegummydisguise,pinkiehugfluttershy,pinkiehugsfluttershy,pinkieoink,pinkieparade,pinkiepartycannon,pinkieprincess,pinkiesilly,pinkietongue,pinkieumbrellahat,pinkieumbrellahatfear,pinkiewhoops,pinkiewhoopseat,pinkiewhoopsout,pipsqueak,pipsqueakpirate,pokey,pokeypierce,ponet,poppycock,poundcake,poundfly,powderrouge,prettyvision,princesserroria,pumpkincake,purplehaze,quickfix,raccoon,raggedy,rainbow,rainbowblitz,rainbowdashcrystal,rainbowdrag,rainbowdrop,rainbowfim,rainbowfly,rainbowgala,rainbowhurricane,rainbowsalute,rainbowshadowbolt,rainbowshine,rainbowsleep,raindrops,rarity,raritycomplaining,raritydrama,rarityelite,rarityfly,raritygala,rarityponder,raritysdad,raritysmom,raven,ravenearth,ravenunicorn,redheart,rhyme,rocky,rose,roseluck,rover,royalguard,royalnightguard,royalribbon,royalunicornguard,ruby,rumble,sapphire,scootaloo,screwball,screwloose,seabreeze,seaswirl,shiningarmor,shiningarmorcrystal,shiningarmorguard,shiningarmorwedding,shoeshine,shortround,silverspeed,silverspoon,silverstar,sindy,skyra,snails,snips,snowflake,snowheart,soarin,soarinofficer,soigne,sombra,sparkler,spike,spikecrystal,spikefloat,spikelove,spikemustache,spitfire,spot,squirrel,starlight,stella,stevenmagnet,stevenmagnettrue,strawberrycream,strongheart,sue,suedance,sunnyrays,sunsetshimmer,surprise,sweetcream,sweetie,sweetiedrops,sweetiesing,tank,tealove,tenderheart,theodoredonaldkerabatsos,theoldenpony,thunderlane,timeturner,tom,tornadobolt,trixie,trixieamulet,trixielulamoon,trixiestage,trixiestand,truffleshuffle,turf,turnip,twilacorn,twilight,twilightcrazyfromball,twilightcrystal,twilightfly,twilightprincess,twilightrage,twilightspike,twilightthebearded,twilighttime,twilightvelvet,twilightwings,twilightzero,twinkleshine,twist,unclewing,vinyl,violet,walter,waltercoltchak,wildfire,wildflower,winona,woona,yearling,zecora,zecorabalance\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nUn-setting ANSIBLE_COW_WHITELIST (or setting it to an empty string) could allow all \\\"cows\\\" to be whitelisted.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nWe need to explicitly whitelist all \\\"cows\\\".\", \n    \"component_name\": \"cow support.\", \n    \"component_raw\": \"Cow support.\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18873\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Currently a cow whitelist is mandatory, but it would be nice to be able to not enforce one.\\n\\nFor example, I use Ponysay instead of cowsay and they use completely different \\\"cows\\\" names. If I want to have all of the ponies, I must do :\\n\\n```\\n\\nexport ANSIBLE_COW_WHITELIST=ace,ahuizotl,airheart,allie,aloe,amethyststar,amira,angel,applebloom,applebloomdance,applebumpkin,applecore,applefritter,applejack,applejackscarecrow,applesplit,archer,babseed,basil,bastionyorsets,bear,beautybrass,berrydreams,berrypinch,berrypunch,bigmac,bigmacsleep,billneigh,blaze,blinkie,blossomforth,blueberry,blueberrycake,blueblood,blueharvest,blues,bonbon,bonbonlyra,bonbonstand,bonvoyage,boxxy,brad,braeburn,brucemane,bulkbiceps,buttonmash,cadance,cadancecrystal,cadancescruffy,caesar,candylicious,candymane,caramel,carecake,carrot,carrotcake,carrottop,celestia,celestiasmall,cerberus,changeling,changelingqueen,cheerilee,cheerilee80,cheesesandwich,cherryberry,cherrycola,cherryfizzy,chrysalis,clockwork,cloudchaser,cloudkicker,clyde,coldheart,colgate,colton,cottoncloudy,cow,crackle,craftycrate,creampuff,cremebrulee,cupcake,cutiemarkcrusaders,daisy,dancefever,daringdo,davenport,deepblue,derpy,derpybags,derpycloud,derpysad,derpysit,derpystand,derpystandwing,descent,diamondmint,diamondtiara,dinky,discord,discordamused,discordpuppetmaster,djpon-3,doctor,drhooves,elsie,epona,fancypants,featherweight,fiddlesticks,fido,fillycadance,fillydash,fillydashfly,fillyjack,fillyjacktravel,fillypinkie,fillypinkiecurly,fillyrarity,fillyshy,fillytwilight,filmreel,filthyrich,firestreak,flam,flashsentry,fleetfoot,fleurdelis,fleurdelishair,fleurdelislay,flim,flitter,flowertrio,fluttershy,fluttershygala,fluttershyshy,fluttershystare,forestspirit,frederickhorseshoepin,georgewashingtony,gilda,gildastand,gingergold,gingersnap,goldenharvest,granny,grannychair,grannysleep,gummy,gustavelegrand,haakim,hairytipper,harpass,harshwhinny,hayfever,hayseed,heartstrings,highscore,hoity,hollydash,horsemd,horsepower,horte,hughjelly,inky,ironwill,ironwillwalk,jeffletrotski,jesuspezuna,joe,joetuxedo,jubileena,junebug,laflour,lemonhearts,lightning,lightningdust,lily,lilyvalley,lintsalot,lotus,lotusblossom,lulamoon,luna,lunafly,lyra,lyrabonbon,lyrasit,mabel,magnum,mane-iac,mannyroar,manticore,mantishy,maredowell,maredowellfly,master,maudepie,maybelle,mayor,meadowsong,melilot,midnightstrike,milkyway,minuette,misty,mjolna,mrbreezy,mrsparkle,mrssparkle,mule,nightingale,nightlight,nightmaremoon,nightmarerarity,noi,noteworthy,octavia,oinkoinkoink,opal,orange,orangebird,orangefrog,owl,owlowiscious,pansyshy,papermoon,parasprite,peachbottom,pearl,perry,perrypierce,persnickety,petunia,philomena,philomenaphoenix,photofinish,pictureperfect,pigpen,pinacolada,pinkacopter,pinkamina,pinkie,pinkiebounce,pinkiecannon,pinkiecannonfront,pinkiecannonhappy,pinkiechicken,pinkiecrazyface,pinkiefly,pinkiegala,pinkiegummy,pinkiegummydisguise,pinkiehugfluttershy,pinkiehugsfluttershy,pinkieoink,pinkieparade,pinkiepartycannon,pinkieprincess,pinkiesilly,pinkietongue,pinkieumbrellahat,pinkieumbrellahatfear,pinkiewhoops,pinkiewhoopseat,pinkiewhoopsout,pipsqueak,pipsqueakpirate,pokey,pokeypierce,ponet,poppycock,poundcake,poundfly,powderrouge,prettyvision,princesserroria,pumpkincake,purplehaze,quickfix,raccoon,raggedy,rainbow,rainbowblitz,rainbowdashcrystal,rainbowdrag,rainbowdrop,rainbowfim,rainbowfly,rainbowgala,rainbowhurricane,rainbowsalute,rainbowshadowbolt,rainbowshine,rainbowsleep,raindrops,rarity,raritycomplaining,raritydrama,rarityelite,rarityfly,raritygala,rarityponder,raritysdad,raritysmom,raven,ravenearth,ravenunicorn,redheart,rhyme,rocky,rose,roseluck,rover,royalguard,royalnightguard,royalribbon,royalunicornguard,ruby,rumble,sapphire,scootaloo,screwball,screwloose,seabreeze,seaswirl,shiningarmor,shiningarmorcrystal,shiningarmorguard,shiningarmorwedding,shoeshine,shortround,silverspeed,silverspoon,silverstar,sindy,skyra,snails,snips,snowflake,snowheart,soarin,soarinofficer,soigne,sombra,sparkler,spike,spikecrystal,spikefloat,spikelove,spikemustache,spitfire,spot,squirrel,starlight,stella,stevenmagnet,stevenmagnettrue,strawberrycream,strongheart,sue,suedance,sunnyrays,sunsetshimmer,surprise,sweetcream,sweetie,sweetiedrops,sweetiesing,tank,tealove,tenderheart,theodoredonaldkerabatsos,theoldenpony,thunderlane,timeturner,tom,tornadobolt,trixie,trixieamulet,trixielulamoon,trixiestage,trixiestand,truffleshuffle,turf,turnip,twilacorn,twilight,twilightcrazyfromball,twilightcrystal,twilightfly,twilightprincess,twilightrage,twilightspike,twilightthebearded,twilighttime,twilightvelvet,twilightwings,twilightzero,twinkleshine,twist,unclewing,vinyl,violet,walter,waltercoltchak,wildfire,wildflower,winona,woona,yearling,zecora,zecorabalance\\n\\n```\", \n    \"title\": \"Missing an option to disable cow whitelisting\"\n  }, \n  \"18874\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel ce6ee3a59e) last updated 2016/12/08 001959 (GMT +800)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_firewall_rule\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel ce6ee3a59e) last updated 2016/12/08 00:19:59 (GMT +800)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nChange default value of service option from 'any' to null, so that \\\"Apply to all programs and services\\\" will be selected. https://technet.microsoft.com/en-us/library/jj554908%28v=wps.630%29.aspx\\r\\n\", \n    \"component_name\": \"win_firewall_rule\", \n    \"component_raw\": \"win_firewall_rule\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18874\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:cli/\", \n      \"docs\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Change default value of service option from 'any' to null, so that \\\"Apply to all programs and services\\\" will be selected. https://technet.microsoft.com/en-us/library/jj554908%28v=wps.630%29.aspx\", \n    \"title\": \"fix for issue #18861: do not set default value for service\"\n  }, \n  \"18876\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\ninfrastructure/foreman/katello\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nAdds the force parameter as an option to promote operations using the Katello module.\", \n    \"component_name\": \"infrastructure/foreman/katello\", \n    \"component_raw\": \"infrastructure/foreman/katello\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18876\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": \"lib/ansible/modules/remote_management/foreman/katello.py\", \n    \"summary\": \"Adds the force parameter as an option to promote operations using the Katello module.\", \n    \"title\": \"Add force parameter option to promote for Katello\"\n  }, \n  \"18879\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel f1b37a184c) last updated 2016/12/07 171758 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nCowsay support.\\r\\nAnd... ponies!\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel f1b37a184c) last updated 2016/12/07 17:17:58 (GMT +200)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nNone\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nI'd like to use `ponysay` (https://github.com/erkin/ponysay) instead of `cowsay`.\\r\\n\\r\\nOthers would like to use `cowsay` from a specific location for reasons like building cowsay without root privilege or using homebrew (https://github.com/ansible/ansible/issues/13465).\\r\\n\\r\\nAn option to set the cowsay path instead of guessing it would be useful to us minority-cowsay-variants enthusiasts.\\r\\n\\r\\nIt would be a nice complement if https://github.com/ansible/ansible/issues/18873 is fixed too.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nSetting `ANSIBLE_COWSAY_EXECUTABLE` would be a nice way to explicitly set the path to cowsay.\\r\\nThe executable itself would not need to be named `cowsay`.\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nColorful ponies when using `ANSIBLE_COWSAY_EXECUTABLE=/usr/bin/ponysay`.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nAs a workaround we currently need to link our executables to one of the paths supported by Ansible.\", \n    \"component_name\": \"cowsay support.\", \n    \"component_raw\": \"Cowsay support.\\nAnd... ponies!\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18879\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I'd like to use `ponysay` (https://github.com/erkin/ponysay) instead of `cowsay`.\\n\\n\\n\\nOthers would like to use `cowsay` from a specific location for reasons like building cowsay without root privilege or using homebrew (https://github.com/ansible/ansible/issues/13465).\\n\\n\\n\\nAn option to set the cowsay path instead of guessing it would be useful to us minority-cowsay-variants enthusiasts.\\n\\n\\n\\nIt would be a nice complement if https://github.com/ansible/ansible/issues/18873 is fixed too.\", \n    \"title\": \"Custom cowsay executable\"\n  }, \n  \"18880\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @jmighion on October 10, 2016 20:18_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\nwin_regedit\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nOS : OS X 10.11.6\\nManaging: Windows 2008 R2 MS and Windows 2012 R2 DC\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nModule changed data when it didn't need to when setting binary values without 2 bytes represented by hex.\\nI'm trying to set a registry data to 0 when the datatype is binary. The module reports the data changed unless you provide the data as data: hex:0,0 or data: 0x0,0x0. Windows represents those slightly differently in the registry. The default binary value is shown as 00, but passing 0x0,0x0 shows in Windows as 0000. Manually editing the registry allows 1 octect, but the module requires 2 to verify if a change is needed.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n- name: \\\"Set binary data\\\"\\n  win_regedit: \\n      key: 'HKLM:\\\\System\\\\CurrentControlSet\\\\Control\\\\Lsa'\\n      value: FullPrivilegeAuditing\\n      data: 0x0\\n      datatype: binary\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nAfter 2nd run : \\n\\n```\\nok: [] => {\\n    \\\"changed\\\": false, \\n    \\\"data_changed\\\": false, \\n    \\\"data_type_changed\\\": false, \\n    \\\"invocation\\\": {\\n        \\\"module_name\\\": \\\"win_regedit\\\"\\n    }\\n}\\n```\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with high verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nchanged: [] => {\\n    \\\"changed\\\": true, \\n    \\\"data_changed\\\": true, \\n    \\\"data_type_changed\\\": false, \\n    \\\"invocation\\\": {\\n        \\\"module_name\\\": \\\"win_regedit\\\"\\n    }\\n}\\n```\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#3134_\", \n    \"component_name\": \"win_regedit\", \n    \"component_raw\": \"win_regedit\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18880\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_regedit.py\", \n    \"summary\": \"Module changed data when it didn't need to when setting binary values without 2 bytes represented by hex.\\nI'm trying to set a registry data to 0 when the datatype is binary. The module reports the data changed unless you provide the data as data: hex:0,0 or data: 0x0,0x0. Windows represents those slightly differently in the registry. The default binary value is shown as 00, but passing 0x0,0x0 shows in Windows as 0000. Manually editing the registry allows 1 octect, but the module requires 2 to verify if a change is needed.\", \n    \"title\": \"Using win_regedit with binary values always results in \\\"changed\\\" state\"\n  }, \n  \"18881\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/brian/ansible-configs/auth-servers/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @candlerb on December 5, 2016 12:45_\\n\\n##### ISSUE TYPE\\r\\n\\r\\n- Feature Idea\\r\\n \\r\\n##### COMPONENT NAME\\r\\n\\r\\nlxd_container module and lxd connection plugin\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/brian/ansible-configs/auth-servers/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nI want to do these two things:\\r\\n\\r\\n1. Create containers on a remote host. This is what the `lxd_container` module does.\\r\\n2. Manage containers on a remote host. This is what the `lxd` connection plugin does. [^1]\\r\\n\\r\\nBy \\\"remote\\\" I mean that the host running the lxd container is not the host where ansible is running. However, referring to a remote target host is done in two completely different ways:\\r\\n\\r\\n* lxd_container requires a `url` for the remote host\\r\\n* the lxd connection plugin requires named remotes (`<remote>:<container>`). e.g. if you create a remote called `hostb` then you can add to your inventory:\\r\\n\\r\\n    ~~~\\r\\n    foo ansible_connection=lxd ansible_host=hostb:foo\\r\\n    ~~~\\r\\n\\r\\nBut there is no ansible module for managing named remotes.\\r\\n\\r\\n> [^1] Of course, you can also manage remote containers by ssh'ing into them directly just like a normal host. But then the container must already have IP networking fully configured, and ssh authorized_keys set up. If we want ansible to bootstrap the container to this state then we need to use lxd native mechanisms.\\r\\n\\r\\nRelates to: #2208, #2743, #2744\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nI can configure a remote lxd server once and use it with both the lxd_container module and the lxd connection plugin.\\r\\n\\r\\n##### DETAIL\\r\\n\\r\\n(Sorry, this may become a bit of a ramble)\\r\\n\\r\\nLet's say ansible runs on `hosta`, the lxd server is `hostb`, and the container on hostb is called `foo`\\r\\n\\r\\nIf you think about it, there are actually four different ways you can manage a remote lxd instance. I'll call these \\\"modes\\\" for want of a better name.\\r\\n\\r\\n1. Use the REST API to talk directly to lxd daemon on host B\\r\\n2. ssh to host B, and use the REST API to talk to lxd on localhost\\r\\n3. Shell out to the lxc command line on host A using named remotes, e.g. `lxc exec hostb:foo ...`\\r\\n4. ssh to host B, and shell out to the lxc command line there, e.g. `lxc exec foo ...`\\r\\n\\r\\nUnfortunately, the current ansible code is a mixture of these.\\r\\n\\r\\nThe `lxd_container` module uses the REST API. You can use it in mode 1:\\r\\n\\r\\n~~~\\r\\n- hosts: foo\\r\\n  gather_facts: no\\r\\n  tasks:\\r\\n    - name: create container\\r\\n      delegate_to: localhost\\r\\n      lxd_container:\\r\\n        url: https://192.168.5.82:8443\\r\\n        name: '{{inventory_hostname}}'\\r\\n        state: started\\r\\n        source: ...\\r\\n~~~\\r\\n\\r\\nFor this to work the trust relationships must be set up between the hosts. It is sufficient if you've previously created a remote (with `lxd remote add ...`) which prompts interactively for the trust password; or you can provide the trust_password as an argument to the module.\\r\\n\\r\\n> Oddly it doesn't appear to verify the server certificate, even when the remote has been removed. I think this is a bug and I'll report it separately.\\r\\n\\r\\nYou can also use it in mode 2:\\r\\n\\r\\n~~~\\r\\n- hosts: foo\\r\\n  gather_facts: no\\r\\n  tasks:\\r\\n    - name: create container\\r\\n      delegate_to: hostb\\r\\n      lxd_container:\\r\\n        name: '{{inventory_hostname}}'\\r\\n        state: started\\r\\n        source: ...\\r\\n~~~\\r\\n\\r\\nThis assumes you're already using ansible to manage hostb (i.e. ssh is setup and working). This is convenient because you don't have to worry about certificate setup, as it uses a Unix domain socket on hostB to talk to the local lxd instance.\\r\\n\\r\\nAll this is fine so far.\\r\\n\\r\\nNow onto the lxd connection plugin. This currently works by shelling out to the `lxc` command line tool, i.e. `lxc exec ...` to run commands, and `lxc file push/pull` to copy files.\\r\\n\\r\\nMy first attempt to do this on a remote host was with `delegate_to` (mode 4), but it doesn't work. It's not surprising really: `delegate_to` delegates the whole action to some other host, not just the `lxc exec` or `lxc file push/pull` part of that action [^2]\\r\\n\\r\\nSo we are left with mode 3, i.e. using container names of the form `<remote>:<container>`. This only works if `<remote>` has already have been created as a named remote on the local host - and unfortunately, ansible doesn't have a module for creating remotes, so this needs to be done manually.\\r\\n\\r\\nOnce that's setup, you can do this in the inventory:\\r\\n\\r\\n~~~\\r\\nfoo ansible_connection=lxd ansible_host=hostb:foo\\r\\n~~~\\r\\n\\r\\nAnd now this works:\\r\\n\\r\\n~~~\\r\\n- hosts: foo\\r\\n  gather_facts: no\\r\\n  tasks:\\r\\n    - name: do something\\r\\n      raw: hostname\\r\\n~~~\\r\\n\\r\\n> Aside: `gather_facts: no` and `raw` are used here because the fresh container doesn't have python2 yet\\r\\n\\r\\n##### PROPOSAL\\r\\n\\r\\nSo we have two completely different mechanisms for referring to remote hosts. How can this be made consistent?\\r\\n\\r\\nOption 1: change the lxd connection plugin to use the REST API. There would have to be some way to give it a `url` parameter (and/or `trust_password`), as with the lxd_container module. Maybe:\\r\\n\\r\\n~~~\\r\\nfoo ansible_connection=lxd ansible_host=foo ansible_lxd_url=https://192.168.5.52:8443\\r\\n~~~\\r\\n\\r\\nReplacing `lxc exec` this way is not trivial; it requires using a websocket to redirect stdin/stdout/stderr for the [REST API](https://github.com/lxc/lxd/blob/master/doc/rest-api.md)\\r\\n\\r\\nOption 2: implement an ansible module to manage named remotes, in the same way as there is lxd_profile to manage named profiles.\\r\\n\\r\\nThen at least you can create the remotes that the lxd connection plugin currently requires.\\r\\n\\r\\nOption 3: like option 2, but also change the lxd_container module to use named remotes instead of the rest API. That is: either lxd_connection would read the remotes configuration, or it would shell out to the `lxc` command line tool and not directly use the REST API at all.  But that would be a rewrite of the lxd_container module; extensive discussion took place at the time (#2208) and it was decided the REST API was preferred.\\r\\n\\r\\n\\r\\n--------\\r\\n\\r\\n[^2] Example: suppose in the inventory we have\\r\\n\\r\\n~~~\\r\\nfoo ansible_connection=lxd\\r\\nhostb ansible_host=192.168.5.82\\r\\n~~~\\r\\n\\r\\nThe following doesn't do what we want:\\r\\n\\r\\n~~~\\r\\n- hosts: foo\\r\\n  gather_facts: no\\r\\n  tasks:\\r\\n    - name: do something\\r\\n      delegate_to: hostb\\r\\n      shell: hostname\\r\\n~~~\\r\\n\\r\\nThe `hostname` command here runs on hostb, not inside the container 'foo'.  That's fair enough, since we are delegating the `hostname` command directly to hostb.\\r\\n\\r\\nAnd the following doesn't work either:\\r\\n\\r\\n~~~\\r\\n- hosts: foo\\r\\n  gather_facts: no\\r\\n  connection: lxd\\r\\n  tasks:\\r\\n    - name: do something\\r\\n      delegate_to: hostb\\r\\n      shell: hostname\\r\\n~~~\\r\\n\\r\\nThis gives:\\r\\n\\r\\n~~~\\r\\nfatal: [foo]: UNREACHABLE! => {\\\"changed\\\": false, \\\"msg\\\": \\\"container not found: 192.168.5.82\\\", \\\"unreachable\\\": true}\\r\\n~~~\\r\\n\\r\\ni.e. now it's trying to treat hostb itself as an lxd container.\\n\\n_Copied from original issue: ansible/ansible-modules-extras#3660_\", \n    \"component_name\": \"lxd_container   and lxd connection plugin\", \n    \"component_raw\": \"lxd_container module and lxd connection plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18881\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"cloud\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/lxd/lxd_container.py\", \n    \"summary\": \"I want to do these two things:\\n\\n\\n\\n1. Create containers on a remote host. This is what the `lxd_container` module does.\\n\\n2. Manage containers on a remote host. This is what the `lxd` connection plugin does. [^1]\\n\\n\\n\\nBy \\\"remote\\\" I mean that the host running the lxd container is not the host where ansible is running. However, referring to a remote target host is done in two completely different ways:\\n\\n\\n\\n* lxd_container requires a `url` for the remote host\\n\\n* the lxd connection plugin requires named remotes (`<remote>:<container>`). e.g. if you create a remote called `hostb` then you can add to your inventory:\\n\\n\\n\\n    ~~~\\n\\n    foo ansible_connection=lxd ansible_host=hostb:foo\\n\\n    ~~~\\n\\n\\n\\nBut there is no ansible module for managing named remotes.\\n\\n\\n\\n> [^1] Of course, you can also manage remote containers by ssh'ing into them directly just like a normal host. But then the container must already have IP networking fully configured, and ssh authorized_keys set up. If we want ansible to bootstrap the container to this state then we need to use lxd native mechanisms.\\n\\n\\n\\nRelates to: #2208, #2743, #2744\", \n    \"title\": \"Easier management of remote hosts for lxd connection plugin; consistency with lxd_container?\"\n  }, \n  \"18882\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/brian/ansible-configs/auth-servers/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @candlerb on December 5, 2016 16:32_\\n\\n##### ISSUE TYPE\\r\\n\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nlxd_container\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/brian/ansible-configs/auth-servers/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nlxd_container does not appear to validate server certificate when connecting via REST API to a remote host using HTTPS, and therefore seems to be using it insecurely.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```\\r\\n- hosts: localhost\\r\\n  tasks:\\r\\n    - name: create container\\r\\n      lxd_container:\\r\\n        url: https://192.168.5.82:8443\\r\\n        trust_password: XXXXXXXX\\r\\n        name: foo\\r\\n        state: started\\r\\n        source:\\r\\n          type: image\\r\\n          mode: pull\\r\\n          server: https://cloud-images.ubuntu.com/releases\\r\\n          protocol: simplestreams\\r\\n          alias: '16.04'\\r\\n```\\r\\n\\r\\n... where 192.168.5.82 is some remote lxd server which has remote access enabled using\\r\\n\\r\\n~~~\\r\\nlxc config set core.https_address \\\"[::]\\\"\\r\\nlxc config set core.trust_password XXXXXXXX\\r\\n~~~\\r\\n\\r\\nRemove trust password and repeat. ansible is happy to talk to the host again (it is caching its own client certificate). However it doesn't appear to have cached the server certificate anywhere, so has no way to confirm it is still talking to the same host.\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n* lxd_container module should require that the server certificate fingerprint is provided, or explicitly that no fingerprint check is to be done\\r\\n* even if no fingerprint check is done initially, the first time the connection is made to the server the server certificate is cached and used to validate subsequent connections\\r\\n\\r\\nThe 'lxc' command line tool does exactly this:\\r\\n\\r\\n* It shows the server certificate fingerprint and asks you to confirm it's OK (unless you pass `--accept-certificate`)\\r\\n* It creates `~/.config/lxc/servercerts/<remote>.crt` to cache the server certificate\\r\\n* If you remove this file, it complains that it can't validate the certificate\\r\\n\\r\\n~~~\\r\\nerror: Get https://192.168.5.82:8443/1.0/containers?recursion=1: x509: certificate signed by unknown authority\\r\\n~~~\\r\\n\\r\\n(Aside: until recently, lxd created certificates with \\\"DNS:192.168.5.82\\\" in the SubjectAltName. This has now been [fixed](https://github.com/lxc/lxd/issues/2457) so it has \\\"IP:192.168.5.82\\\". But you still need to accept the certificate since it's self-signed)\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nNo server certificate checking or caching appears to be taking place\\r\\n\\r\\n##### NOTES\\r\\n\\r\\nIn `lib/ansible/module_utils/lxd.py` the ssl context is created using:\\r\\n\\r\\n~~~\\r\\n            ctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)\\r\\n~~~\\r\\n\\r\\nHowever according to the [documentation](https://docs.python.org/2/library/ssl.html) Purpose.CLIENT_AUTH is used for when you are building an SSL server. If you are connecting *to* an SSL server you are supposed to use Purpose.SERVER_AUTH.\\r\\n\\r\\n(But it's not entirely clear to me what the 'purpose' is doing. It does say that \\\"Passing SERVER_AUTH as purpose sets verify_mode to CERT_REQUIRED\\\" and loads CA certificates. But in this case we may wish to validate the server certificate *and* present a client certificate to the server)\\n\\n_Copied from original issue: ansible/ansible-modules-extras#3663_\", \n    \"component_name\": \"lxd_container\", \n    \"component_raw\": \"lxd_container\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18882\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/lxd/lxd_container.py\", \n    \"summary\": \"lxd_container does not appear to validate server certificate when connecting via REST API to a remote host using HTTPS, and therefore seems to be using it insecurely.\", \n    \"title\": \"lxd_container does not validate HTTPS server certificate\"\n  }, \n  \"18883\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.2.0.0\\nconfig file = /Users/james/Documents/work/SCIF/git/windows_STIGs/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @jmighion on November 21, 2016 22:44_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\nwin_regedit\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /Users/james/Documents/work/SCIF/git/windows_STIGs/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n[defaults]\\r\\ninventory = ./hosts\\r\\nlog_path = ./ansible.log\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nThe win_regedit module does not compare multistring data correctly to determine if it needs changing or not. For Windows, multistring values are null terminated strings https://msdn.microsoft.com/en-us/library/windows/desktop/ms724884(v=vs.85).aspx . The comparison does not take that into account, so the provided data to the module contains \\\\0's which are not given by the OS when using `Get-ItemProperty -Path $registryKey | Select-Object -ExpandProperty $registryValue`. This means that even if the result would've been the same, the change is still made anyways, making this not idempotent.\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nRun the following multiple times. Each time will report as changed.\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n  win_regedit:\\r\\n    key: 'HKLM:\\\\Path\\\\To\\\\Test\\\\Key'\\r\\n    value: ValueName\\r\\n    data: \\\"Line one\\\\0Line two\\\"\\r\\n    datatype: multistring\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n```\\r\\nok: [ip.ip.ip.ip] => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"data_changed\\\": false, \\r\\n    \\\"data_type_changed\\\": false, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_regedit\\\"\\r\\n    }\\r\\n}\\r\\n```\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with high verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nchanged: [ip.ip.ip.ip] => {\\r\\n    \\\"changed\\\": true, \\r\\n    \\\"data_changed\\\": true, \\r\\n    \\\"data_type_changed\\\": false, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_regedit\\\"\\r\\n    }\\r\\n}\\r\\n```\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#3510_\", \n    \"component_name\": \"win_regedit\", \n    \"component_raw\": \"win_regedit\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18883\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_regedit.py\", \n    \"summary\": \"The win_regedit module does not compare multistring data correctly to determine if it needs changing or not. For Windows, multistring values are null terminated strings https://msdn.microsoft.com/en-us/library/windows/desktop/ms724884(v=vs.85).aspx . The comparison does not take that into account, so the provided data to the module contains \\\\0's which are not given by the OS when using `Get-ItemProperty -Path $registryKey | Select-Object -ExpandProperty $registryValue`. This means that even if the result would've been the same, the change is still made anyways, making this not idempotent.\", \n    \"title\": \"win_regedit is not idempotent for multistring datatypes\"\n  }, \n  \"18885\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.2.0.0\\nconfig file = /Users/james/Documents/work/SCIF/git/windows_STIGs/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @jmighion on November 21, 2016 22:33_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\nwin_regedit\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /Users/james/Documents/work/SCIF/git/windows_STIGs/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n[defaults]\\r\\ninventory = ./hosts\\r\\nlog_path = ./ansible.log\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nIf the registry data is null, win_regedit throws an error on line 164 of win_regedit.ps1 because the currentRegistryData is null. \\r\\n\\r\\nCompare-RegistryData -ReferenceData $currentRegistryData -DifferenceData $registryData\\r\\n\\r\\nNeeds a null check for probably both ReferenceData and DifferenceData before comparing.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nSet the data of some registry value to null by erasing everything there or just create a new one without data like :\\r\\nreg add HKM\\\\Path\\\\To\\\\Test\\\\Key /v ValueName /t REG_MULTI_SZ /f\\r\\n\\r\\nThen try to use win_regedit to change the data in that value.\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\nwin_regedit:\\r\\n    key: 'HKLM:\\\\Path\\\\To\\\\Test\\\\Key'\\r\\n    value: ValueName\\r\\n    data: \\\"This will break\\\"\\r\\n    datatype: multistring\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nChange the data or not depending on if data matches.\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with high verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nAt C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1479761831.87-6854030696966\\\\win_regedit.ps1:410 char:63\\r\\n+             elseif (-Not (Compare-RegistryData -ReferenceData $currentRegistryDa ...\\r\\n+                                                               ~~~~~~~~~~~~~~~~~~\\r\\nfatal: [ip.ip.ip.ip]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_regedit\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"Cannot bind argument to parameter 'ReferenceData' because it is null.\\\"\\r\\n}\\r\\n```\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#3509_\", \n    \"component_name\": \"win_regedit\", \n    \"component_raw\": \"win_regedit\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18885\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_regedit.py\", \n    \"summary\": \"If the registry data is null, win_regedit throws an error on line 164 of win_regedit.ps1 because the currentRegistryData is null. \\n\\n\\n\\nCompare-RegistryData -ReferenceData $currentRegistryData -DifferenceData $registryData\\n\\n\\n\\nNeeds a null check for probably both ReferenceData and DifferenceData before comparing.\", \n    \"title\": \"Null check needed when comparing old vs new data for registry entry\"\n  }, \n  \"18889\": {\n    \"ansible_version\": \"N/A\", \n    \"body\": \"_From @scottnonnenberg on September 29, 2014 20:37_\\n\\n##### ISSUE TYPE\\n\\nFeature Idea\\n##### COMPONENT NAME\\n\\napt\\n##### ANSIBLE VERSION\\n\\nN/A\\n##### SUMMARY\\n\\nThis issue had reasonable interest, and all the `apt`-related modules are Core Modules, so opening a bug here. Here's the original issue: https://github.com/ansible/ansible/issues/8060\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#19_\", \n    \"component_name\": \"apt\", \n    \"component_raw\": \"apt\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18889\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/apt.py\", \n    \"summary\": \"This issue had reasonable interest, and all the `apt`-related modules are Core Modules, so opening a bug here. Here's the original issue: https://github.com/ansible/ansible/issues/8060\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#19_\", \n    \"title\": \"Support apt-mark hold\"\n  }, \n  \"18893\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @ymartin59 on September 20, 2016 8:51_\\n\\n##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nsystem/filesystem.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### OS / ENVIRONMENT\\n\\nDebian Stretch/testing GNU/Linux \\n##### SUMMARY\\n\\nfilesystem task does not allow to pass \\\"size\\\" last argument of mkfs command\\n##### STEPS TO REPRODUCE\\n\\n```\\nfilesystem:\\n  fstype=\\\"ext4\\\"\\n  dev=\\\"/dev/drbd0\\\"\\n  size=\\\"2048\\\"\\n```\\n##### EXPECTED RESULTS\\n\\nInvoke `mkfs -t ext4 /dev/drbd0 2048`\\n##### ACTUAL RESULTS\\n\\nIt is not possible to use `opts` to pass file system size in blocks \\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#2986_\", \n    \"component_name\": \"system/filesystem.py\", \n    \"component_raw\": \"system/filesystem.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18893\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/filesystem.py\", \n    \"summary\": \"filesystem task does not allow to pass \\\"size\\\" last argument of mkfs command\", \n    \"title\": \"Add size argument support to filesystem task\"\n  }, \n  \"18894\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file = /home/ubuntu/ansible_mail/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @oskapt on July 27, 2016 21:15_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\nget_url\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.0.0\\n  config file = /home/ubuntu/ansible_mail/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\n```\\n[defaults]\\ninventory = hosts\\ngathering = smart\\nhost_key_checking = False\\nremote_user = ubuntu\\nask_vault_pass = True\\njinja2_extensions = jinja2.ext.do\\n\\n[ssh_connection]\\npipelining = True\\n```\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nUbuntu 14.04 LTS\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\n`get_url` works locally but fails when configuring remote host\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n1. Run the playbook below with `ansible-playbook -c local test.yml` and it will work\\n2. Run it again connecting to a remote system and it will fail\\n\\nI have the same behavior on multiple hosts. I turned off pipelining to see if it mattered, and it didn't.\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n\\n---\\n- hosts: host.foo.com\\n  gather_facts: False\\n  vars:\\n    - tarsnap_version: 1.0.35\\n    - sha256sum: 6c9f6756bc43bc225b842f7e3a0ec7204e0cf606e10559d27704e1cc33098c9a\\n  tasks:\\n    - name: Download Tarsnap source\\n      get_url:\\n        url=https://www.tarsnap.com/download/tarsnap-autoconf-{{ tarsnap_version }}.tgz\\n        dest=/var/tmp/tarsnap-autoconf-{{ tarsnap_version }}.tgz\\n        sha256sum={{ sha256sum }}\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nI expected that the tarsnap source would be downloaded.\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\nIt fails with \\\"failed to create temporary content file: (-1, 'Unexpected EOF')\\\"\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nubuntu@docker01:~/ansible_mail$ ansible-playbook -vvvv test.yml \\nUsing /home/ubuntu/ansible_mail/ansible.cfg as config file\\nVault password: \\nLoaded callback default of type stdout, v2.0\\n\\nPLAYBOOK: test.yml *************************************************************\\n1 plays in test.yml\\n\\nPLAY [host.foo.com] ********************************************************\\n\\nTASK [Download Tarsnap source] *************************************************\\ntask path: /home/ubuntu/ansible_mail/test.yml:8\\n<31.171.245.146> ESTABLISH SSH CONNECTION FOR USER: ubuntu\\n<31.171.245.146> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ubuntu -o ConnectTimeout=10 -o ControlPath=/home/ubuntu/.ansible/cp/ansible-ssh-%h-%p-%r 31.171.245.146 '/bin/sh -c '\\\"'\\\"'LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python && sleep 0'\\\"'\\\"''\\nfatal: [host.foo.com]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"invocation\\\": {\\\"module_args\\\": {\\\"backup\\\": false, \\\"checksum\\\": \\\"\\\", \\\"content\\\": null, \\\"delimiter\\\": null, \\\"dest\\\": \\\"/var/tmp/tarsnap-autoconf-1.0.35.tgz\\\", \\\"directory_mode\\\": null, \\\"follow\\\": false, \\\"force\\\": false, \\\"force_basic_auth\\\": false, \\\"group\\\": null, \\\"headers\\\": null, \\\"http_agent\\\": \\\"ansible-httpget\\\", \\\"mode\\\": null, \\\"owner\\\": null, \\\"regexp\\\": null, \\\"remote_src\\\": null, \\\"selevel\\\": null, \\\"serole\\\": null, \\\"setype\\\": null, \\\"seuser\\\": null, \\\"sha256sum\\\": \\\"6c9f6756bc43bc225b842f7e3a0ec7204e0cf606e10559d27704e1cc33098c9a\\\", \\\"src\\\": null, \\\"timeout\\\": 10, \\\"tmp_dest\\\": \\\"\\\", \\\"url\\\": \\\"https://www.tarsnap.com/download/tarsnap-autoconf-1.0.35.tgz\\\", \\\"url_password\\\": null, \\\"url_username\\\": null, \\\"use_proxy\\\": true, \\\"validate_certs\\\": true}, \\\"module_name\\\": \\\"get_url\\\"}, \\\"msg\\\": \\\"failed to create temporary content file: (-1, 'Unexpected EOF')\\\"}\\n\\nNO MORE HOSTS LEFT *************************************************************\\n        to retry, use: --limit @test.retry\\n\\nPLAY RECAP *********************************************************************\\nhost.foo.com           : ok=0    changed=0    unreachable=0    failed=1   \\n\\n```\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#4269_\", \n    \"component_name\": \"get_url\", \n    \"component_raw\": \"get_url\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18894\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\", \n      \"networking\", \n      \"waiting_on_contributor\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/basics/get_url.py\", \n    \"summary\": \"`get_url` works locally but fails when configuring remote host\", \n    \"title\": \"get_url fails with \\\"failed to create temporary content file: (-1, 'Unexpected EOF')\\\" when not running locally\"\n  }, \n  \"18896\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_ami_find\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nCentOS's [cloud image wiki page](https://wiki.centos.org/Cloud/AWS) gives an example of using their product code to search for AMIs. This commit adds an optional parameter `product_code` to ec2_ami_find to allow this filtering.\\r\\n\\r\\nImplemented with the `product-code` filter described in the [CLI documentation](https://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/ApiReference-cmd-DescribeInstances.html#ApiReference-cmd-DescribeInstances-Syntax) (see \\\"Supported Filters\\\")\\r\\n\\r\\n(Migrated from approved [ansible-modules-core PR 4215](https://github.com/ansible/ansible-modules-core/pull/4215))\", \n    \"component_name\": \"ec2_ami_find\", \n    \"component_raw\": \"ec2_ami_find\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18896\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"community_review\", \n      \"docs\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_ami_find.py\", \n    \"summary\": \"CentOS's [cloud image wiki page](https://wiki.centos.org/Cloud/AWS) gives an example of using their product code to search for AMIs. This commit adds an optional parameter `product_code` to ec2_ami_find to allow this filtering.\\n\\n\\n\\nImplemented with the `product-code` filter described in the [CLI documentation](https://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/ApiReference-cmd-DescribeInstances.html#ApiReference-cmd-DescribeInstances-Syntax) (see \\\"Supported Filters\\\")\\n\\n\\n\\n(Migrated from approved [ansible-modules-core PR 4215](https://github.com/ansible/ansible-modules-core/pull/4215))\", \n    \"title\": \"update ec2_ami_find to allow product-code filter\"\n  }, \n  \"18897\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n##### ISSUE TYPE\\r\\n\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n- Bug Report\\r\\n##### COMPONENT NAME\\r\\n\\r\\n<!--- Name of the plugin/module/task -->\\r\\n\\r\\n`unarchive`\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n##### CONFIGURATION\\r\\n\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\nN/A\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\nNode: Fedora 23\\r\\nTarget Host: Fedora 24\\r\\n##### SUMMARY\\r\\n\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\nThe combination of a `src:` field with `://` and `remote_src: yes` does not correctly download remote archives from the net, whereas the (deprecated as of 2.2) option `copy: no` works fine.\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n#### working playbook\\r\\n\\r\\n``` yml\\r\\n\\r\\n---\\r\\n- name: try to unarchive from URL\\r\\n  hosts: hostname \\r\\n  become: yes\\r\\n  become_method: sudo\\r\\n  become_user: root \\r\\n\\r\\n  tasks:\\r\\n    - name: install ChromeDriver to enable headless UI testing\\r\\n      unarchive:\\r\\n        src: https://chromedriver.storage.googleapis.com/2.16/chromedriver_linux64.zip\\r\\n        copy: no\\r\\n        dest: /usr/bin\\r\\n        mode: u=rwx,g=rx,o=rx\\r\\n        owner: root\\r\\n        creates: /usr/bin/chromedriver\\r\\n```\\r\\n#### broken playbook\\r\\n\\r\\n``` yml\\r\\n\\r\\n---\\r\\n- name: try to unarchive from URL\\r\\n  hosts: openshiftdevel \\r\\n  become: yes\\r\\n  become_method: sudo\\r\\n  become_user: root \\r\\n\\r\\n  tasks:\\r\\n    - name: install ChromeDriver to enable headless UI testing\\r\\n      unarchive:\\r\\n        src: https://chromedriver.storage.googleapis.com/2.16/chromedriver_linux64.zip\\r\\n        remote_src: yes\\r\\n        dest: /usr/bin\\r\\n        mode: u=rwx,g=rx,o=rx\\r\\n        owner: root\\r\\n        creates: /usr/bin/chromedriver\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n```\\r\\nPLAY [try to unarchive from URL] ***********************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [openshiftdevel]\\r\\n\\r\\nTASK [install ChromeDriver to enable headless UI testing] **********************\\r\\nskipping: [openshiftdevel]\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nopenshiftdevel             : ok=1    changed=0    unreachable=0    failed=0   \\r\\n```\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n```\\r\\nUsing /etc/ansible/ansible.cfg as config file\\r\\nLoaded callback default of type stdout, v2.0\\r\\n\\r\\nPLAYBOOK: playbook.yml *********************************************************\\r\\n1 plays in playbook.yml\\r\\n\\r\\nPLAY [try to unarchive from URL] ***********************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/core/system/setup.py\\r\\n<openshiftdevel> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<openshiftdevel> SSH: ansible.cfg set ssh_args: (-C)(-o)(ControlMaster=auto)(-o)(ControlPersist=60s)\\r\\n<openshiftdevel> SSH: ansible_password/ansible_ssh_pass not set: (-o)(KbdInteractiveAuthentication=no)(-o)(PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey)(-o)(PasswordAuthentication=no)\\r\\n<openshiftdevel> SSH: ANSIBLE_TIMEOUT/timeout set: (-o)(ConnectTimeout=10)\\r\\n<openshiftdevel> SSH: PlayContext set ssh_common_args: ()\\r\\n<openshiftdevel> SSH: PlayContext set ssh_extra_args: ()\\r\\n<openshiftdevel> SSH: found only ControlPersist; added ControlPath: (-o)(ControlPath=/home/skuznets/.ansible/cp/ansible-ssh-%C)\\r\\n<openshiftdevel> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/skuznets/.ansible/cp/ansible-ssh-%C openshiftdevel '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1473366787.28-273491531764948 `\\\" && echo ansible-tmp-1473366787.28-273491531764948=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1473366787.28-273491531764948 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<openshiftdevel> PUT /tmp/tmpXirT3h TO /home/vagrant/.ansible/tmp/ansible-tmp-1473366787.28-273491531764948/setup.py\\r\\n<openshiftdevel> SSH: ansible.cfg set ssh_args: (-C)(-o)(ControlMaster=auto)(-o)(ControlPersist=60s)\\r\\n<openshiftdevel> SSH: ansible_password/ansible_ssh_pass not set: (-o)(KbdInteractiveAuthentication=no)(-o)(PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey)(-o)(PasswordAuthentication=no)\\r\\n<openshiftdevel> SSH: ANSIBLE_TIMEOUT/timeout set: (-o)(ConnectTimeout=10)\\r\\n<openshiftdevel> SSH: PlayContext set ssh_common_args: ()\\r\\n<openshiftdevel> SSH: PlayContext set sftp_extra_args: ()\\r\\n<openshiftdevel> SSH: found only ControlPersist; added ControlPath: (-o)(ControlPath=/home/skuznets/.ansible/cp/ansible-ssh-%C)\\r\\n<openshiftdevel> SSH: EXEC sftp -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/skuznets/.ansible/cp/ansible-ssh-%C '[openshiftdevel]'\\r\\n<openshiftdevel> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<openshiftdevel> SSH: ansible.cfg set ssh_args: (-C)(-o)(ControlMaster=auto)(-o)(ControlPersist=60s)\\r\\n<openshiftdevel> SSH: ansible_password/ansible_ssh_pass not set: (-o)(KbdInteractiveAuthentication=no)(-o)(PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey)(-o)(PasswordAuthentication=no)\\r\\n<openshiftdevel> SSH: ANSIBLE_TIMEOUT/timeout set: (-o)(ConnectTimeout=10)\\r\\n<openshiftdevel> SSH: PlayContext set ssh_common_args: ()\\r\\n<openshiftdevel> SSH: PlayContext set ssh_extra_args: ()\\r\\n<openshiftdevel> SSH: found only ControlPersist; added ControlPath: (-o)(ControlPath=/home/skuznets/.ansible/cp/ansible-ssh-%C)\\r\\n<openshiftdevel> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/skuznets/.ansible/cp/ansible-ssh-%C openshiftdevel '/bin/sh -c '\\\"'\\\"'chmod u+x /home/vagrant/.ansible/tmp/ansible-tmp-1473366787.28-273491531764948/ /home/vagrant/.ansible/tmp/ansible-tmp-1473366787.28-273491531764948/setup.py && sleep 0'\\\"'\\\"''\\r\\n<openshiftdevel> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<openshiftdevel> SSH: ansible.cfg set ssh_args: (-C)(-o)(ControlMaster=auto)(-o)(ControlPersist=60s)\\r\\n<openshiftdevel> SSH: ansible_password/ansible_ssh_pass not set: (-o)(KbdInteractiveAuthentication=no)(-o)(PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey)(-o)(PasswordAuthentication=no)\\r\\n<openshiftdevel> SSH: ANSIBLE_TIMEOUT/timeout set: (-o)(ConnectTimeout=10)\\r\\n<openshiftdevel> SSH: PlayContext set ssh_common_args: ()\\r\\n<openshiftdevel> SSH: PlayContext set ssh_extra_args: ()\\r\\n<openshiftdevel> SSH: found only ControlPersist; added ControlPath: (-o)(ControlPath=/home/skuznets/.ansible/cp/ansible-ssh-%C)\\r\\n<openshiftdevel> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/skuznets/.ansible/cp/ansible-ssh-%C -tt openshiftdevel '/bin/sh -c '\\\"'\\\"'sudo -H -S -n -u root /bin/sh -c '\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'echo BECOME-SUCCESS-qbuxuugmtzextvxjultbpsbnjymjpbtp; /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1473366787.28-273491531764948/setup.py; rm -rf \\\"/home/vagrant/.ansible/tmp/ansible-tmp-1473366787.28-273491531764948/\\\" > /dev/null 2>&1'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"' && sleep 0'\\\"'\\\"''\\r\\nok: [openshiftdevel]\\r\\n\\r\\nTASK [install ChromeDriver to enable headless UI testing] **********************\\r\\ntask path: /tmp/playbook.yml:9\\r\\n<openshiftdevel> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<openshiftdevel> SSH: ansible.cfg set ssh_args: (-C)(-o)(ControlMaster=auto)(-o)(ControlPersist=60s)\\r\\n<openshiftdevel> SSH: ansible_password/ansible_ssh_pass not set: (-o)(KbdInteractiveAuthentication=no)(-o)(PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey)(-o)(PasswordAuthentication=no)\\r\\n<openshiftdevel> SSH: ANSIBLE_TIMEOUT/timeout set: (-o)(ConnectTimeout=10)\\r\\n<openshiftdevel> SSH: PlayContext set ssh_common_args: ()\\r\\n<openshiftdevel> SSH: PlayContext set ssh_extra_args: ()\\r\\n<openshiftdevel> SSH: found only ControlPersist; added ControlPath: (-o)(ControlPath=/home/skuznets/.ansible/cp/ansible-ssh-%C)\\r\\n<openshiftdevel> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/skuznets/.ansible/cp/ansible-ssh-%C openshiftdevel '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1473366787.65-8300840725131 `\\\" && echo ansible-tmp-1473366787.65-8300840725131=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1473366787.65-8300840725131 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/core/files/stat.py\\r\\n<openshiftdevel> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<openshiftdevel> SSH: ansible.cfg set ssh_args: (-C)(-o)(ControlMaster=auto)(-o)(ControlPersist=60s)\\r\\n<openshiftdevel> SSH: ansible_password/ansible_ssh_pass not set: (-o)(KbdInteractiveAuthentication=no)(-o)(PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey)(-o)(PasswordAuthentication=no)\\r\\n<openshiftdevel> SSH: ANSIBLE_TIMEOUT/timeout set: (-o)(ConnectTimeout=10)\\r\\n<openshiftdevel> SSH: PlayContext set ssh_common_args: ()\\r\\n<openshiftdevel> SSH: PlayContext set ssh_extra_args: ()\\r\\n<openshiftdevel> SSH: found only ControlPersist; added ControlPath: (-o)(ControlPath=/home/skuznets/.ansible/cp/ansible-ssh-%C)\\r\\n<openshiftdevel> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/skuznets/.ansible/cp/ansible-ssh-%C openshiftdevel '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1473366787.8-22825179676049 `\\\" && echo ansible-tmp-1473366787.8-22825179676049=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1473366787.8-22825179676049 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<openshiftdevel> PUT /tmp/tmpAbT6xq TO /home/vagrant/.ansible/tmp/ansible-tmp-1473366787.8-22825179676049/stat.py\\r\\n<openshiftdevel> SSH: ansible.cfg set ssh_args: (-C)(-o)(ControlMaster=auto)(-o)(ControlPersist=60s)\\r\\n<openshiftdevel> SSH: ansible_password/ansible_ssh_pass not set: (-o)(KbdInteractiveAuthentication=no)(-o)(PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey)(-o)(PasswordAuthentication=no)\\r\\n<openshiftdevel> SSH: ANSIBLE_TIMEOUT/timeout set: (-o)(ConnectTimeout=10)\\r\\n<openshiftdevel> SSH: PlayContext set ssh_common_args: ()\\r\\n<openshiftdevel> SSH: PlayContext set sftp_extra_args: ()\\r\\n<openshiftdevel> SSH: found only ControlPersist; added ControlPath: (-o)(ControlPath=/home/skuznets/.ansible/cp/ansible-ssh-%C)\\r\\n<openshiftdevel> SSH: EXEC sftp -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/skuznets/.ansible/cp/ansible-ssh-%C '[openshiftdevel]'\\r\\n<openshiftdevel> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<openshiftdevel> SSH: ansible.cfg set ssh_args: (-C)(-o)(ControlMaster=auto)(-o)(ControlPersist=60s)\\r\\n<openshiftdevel> SSH: ansible_password/ansible_ssh_pass not set: (-o)(KbdInteractiveAuthentication=no)(-o)(PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey)(-o)(PasswordAuthentication=no)\\r\\n<openshiftdevel> SSH: ANSIBLE_TIMEOUT/timeout set: (-o)(ConnectTimeout=10)\\r\\n<openshiftdevel> SSH: PlayContext set ssh_common_args: ()\\r\\n<openshiftdevel> SSH: PlayContext set ssh_extra_args: ()\\r\\n<openshiftdevel> SSH: found only ControlPersist; added ControlPath: (-o)(ControlPath=/home/skuznets/.ansible/cp/ansible-ssh-%C)\\r\\n<openshiftdevel> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/skuznets/.ansible/cp/ansible-ssh-%C openshiftdevel '/bin/sh -c '\\\"'\\\"'chmod u+x /home/vagrant/.ansible/tmp/ansible-tmp-1473366787.8-22825179676049/ /home/vagrant/.ansible/tmp/ansible-tmp-1473366787.8-22825179676049/stat.py && sleep 0'\\\"'\\\"''\\r\\n<openshiftdevel> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<openshiftdevel> SSH: ansible.cfg set ssh_args: (-C)(-o)(ControlMaster=auto)(-o)(ControlPersist=60s)\\r\\n<openshiftdevel> SSH: ansible_password/ansible_ssh_pass not set: (-o)(KbdInteractiveAuthentication=no)(-o)(PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey)(-o)(PasswordAuthentication=no)\\r\\n<openshiftdevel> SSH: ANSIBLE_TIMEOUT/timeout set: (-o)(ConnectTimeout=10)\\r\\n<openshiftdevel> SSH: PlayContext set ssh_common_args: ()\\r\\n<openshiftdevel> SSH: PlayContext set ssh_extra_args: ()\\r\\n<openshiftdevel> SSH: found only ControlPersist; added ControlPath: (-o)(ControlPath=/home/skuznets/.ansible/cp/ansible-ssh-%C)\\r\\n<openshiftdevel> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/skuznets/.ansible/cp/ansible-ssh-%C -tt openshiftdevel '/bin/sh -c '\\\"'\\\"'sudo -H -S -n -u root /bin/sh -c '\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'echo BECOME-SUCCESS-rcwsdhynpqubmaieahcwarpfhtuqkcyy; /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1473366787.8-22825179676049/stat.py; rm -rf \\\"/home/vagrant/.ansible/tmp/ansible-tmp-1473366787.8-22825179676049/\\\" > /dev/null 2>&1'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"' && sleep 0'\\\"'\\\"''\\r\\nlooking for \\\"https://chromedriver.storage.googleapis.com/2.16/chromedriver_linux64.zip\\\" at \\\"/tmp/files/https://chromedriver.storage.googleapis.com/2.16/chromedriver_linux64.zip\\\"\\r\\nlooking for \\\"https://chromedriver.storage.googleapis.com/2.16/chromedriver_linux64.zip\\\" at \\\"/tmp/https://chromedriver.storage.googleapis.com/2.16/chromedriver_linux64.zip\\\"\\r\\nlooking for \\\"https://chromedriver.storage.googleapis.com/2.16/chromedriver_linux64.zip\\\" at \\\"/tmp/files/https://chromedriver.storage.googleapis.com/2.16/chromedriver_linux64.zip\\\"\\r\\nlooking for \\\"https://chromedriver.storage.googleapis.com/2.16/chromedriver_linux64.zip\\\" at \\\"/tmp/https://chromedriver.storage.googleapis.com/2.16/chromedriver_linux64.zip\\\"\\r\\n<openshiftdevel> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<openshiftdevel> SSH: ansible.cfg set ssh_args: (-C)(-o)(ControlMaster=auto)(-o)(ControlPersist=60s)\\r\\n<openshiftdevel> SSH: ansible_password/ansible_ssh_pass not set: (-o)(KbdInteractiveAuthentication=no)(-o)(PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey)(-o)(PasswordAuthentication=no)\\r\\n<openshiftdevel> SSH: ANSIBLE_TIMEOUT/timeout set: (-o)(ConnectTimeout=10)\\r\\n<openshiftdevel> SSH: PlayContext set ssh_common_args: ()\\r\\n<openshiftdevel> SSH: PlayContext set ssh_extra_args: ()\\r\\n<openshiftdevel> SSH: found only ControlPersist; added ControlPath: (-o)(ControlPath=/home/skuznets/.ansible/cp/ansible-ssh-%C)\\r\\n<openshiftdevel> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/skuznets/.ansible/cp/ansible-ssh-%C openshiftdevel '/bin/sh -c '\\\"'\\\"'rm -f -r /home/vagrant/.ansible/tmp/ansible-tmp-1473366787.65-8300840725131/ > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\nfatal: [openshiftdevel]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"checksum_algorithm\\\": \\\"sha1\\\", \\r\\n            \\\"follow\\\": false, \\r\\n            \\\"get_checksum\\\": true, \\r\\n            \\\"get_md5\\\": true, \\r\\n            \\\"mime\\\": false, \\r\\n            \\\"path\\\": \\\"/usr/bin/chromedriver\\\"\\r\\n        }\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"Unable to find 'https://chromedriver.storage.googleapis.com/2.16/chromedriver_linux64.zip' in expected paths.\\\", \\r\\n    \\\"stat\\\": {\\r\\n        \\\"exists\\\": false\\r\\n    }\\r\\n}\\r\\n\\r\\nNO MORE HOSTS LEFT *************************************************************\\r\\n    to retry, use: --limit @playbook.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nopenshiftdevel             : ok=1    changed=0    unreachable=0    failed=1   \\r\\n```\\r\\n\", \n    \"component_name\": \"unarchive\", \n    \"component_raw\": \"`unarchive`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18897\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/unarchive.py\", \n    \"summary\": \"The combination of a `src:` field with `://` and `remote_src: yes` does not correctly download remote archives from the net, whereas the (deprecated as of 2.2) option `copy: no` works fine.\", \n    \"title\": \"unarchive - does not properly download archive with `remote_src: yes`\"\n  }, \n  \"18901\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /home/teresaejunior/system/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @teresaejunior on August 27, 2016 23:10_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\napt\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n  config file = /home/teresaejunior/system/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n```\\n[privilege_escalation]\\nbecome = True\\n```\\n##### OS / ENVIRONMENT\\n\\nXubuntu 16.04 with Linux 4.6-4.dmz.3-liquorix-amd64\\n##### SUMMARY\\n\\nThe convention from other core modules, like copy, unarchive and script, is to find role files under the files/ directory. The apt module does not search for file under files/, though.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n- apt: deb=files/google-earth-stable_7.1.4.1529-r0_amd64.deb\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\n`files/google-earth-stable_7.1.4.1529-r0_amd64.deb` should be installed\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\nIt says \\\"file or directory not found\\\".\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nTASK [earth : install google-earth-stable] *************************************\\ntask path: /home/teresaejunior/system-test/earth/tasks/main.yml:25\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: teresaejunior\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1472339216.81-203435995230828 `\\\" && echo ansible-tmp-1472339216.81-203435995230828=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1472339216.81-203435995230828 `\\\" ) && sleep 0'\\n<127.0.0.1> PUT /tmp/tmpbLER8k TO /home/teresaejunior/.ansible/tmp/ansible-tmp-1472339216.81-203435995230828/apt\\n<127.0.0.1> EXEC /bin/sh -c 'sudo -H -S -n -u root /bin/sh -c '\\\"'\\\"'echo BECOME-SUCCESS-tmqwrwbbslflzilydplhrasyhjuszxof; LANG=pt_BR.UTF-8 LC_ALL=pt_BR.UTF-8 LC_MESSAGES=pt_BR.UTF-8 /usr/bin/python /home/teresaejunior/.ansible/tmp/ansible-tmp-1472339216.81-203435995230828/apt; rm -rf \\\"/home/teresaejunior/.ansible/tmp/ansible-tmp-1472339216.81-203435995230828/\\\" > /dev/null 2>&1'\\\"'\\\"' && sleep 0'\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"invocation\\\": {\\\"module_args\\\": {\\\"allow_unauthenticated\\\": false, \\\"autoremove\\\": false, \\\"cache_valid_time\\\": null, \\\"deb\\\": \\\"files/google-earth-stable_7.1.4.1529-r0_amd64.deb\\\", \\\"default_release\\\": null, \\\"dpkg_options\\\": \\\"force-confdef,force-confold\\\", \\\"force\\\": false, \\\"install_recommends\\\": null, \\\"only_upgrade\\\": false, \\\"package\\\": null, \\\"purge\\\": false, \\\"state\\\": \\\"present\\\", \\\"update_cache\\\": false, \\\"upgrade\\\": null}, \\\"module_name\\\": \\\"apt\\\"}, \\\"msg\\\": \\\"Unable to install package: E:N\\u00e3o foi poss\\u00edvel abrir arquivo files/google-earth-stable_7.1.4.1529-r0_amd64.deb - open (2: Arquivo ou diret\\u00f3rio n\\u00e3o encontrado)\\\"}\\n```\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#4584_\", \n    \"component_name\": \"apt\", \n    \"component_raw\": \"apt\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18901\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/apt.py\", \n    \"summary\": \"The convention from other core modules, like copy, unarchive and script, is to find role files under the files/ directory. The apt module does not search for file under files/, though.\", \n    \"title\": \"apt module does not install deb from files/\"\n  }, \n  \"18904\": {\n    \"ansible_version\": \"ansible 2.1.0.0\", \n    \"body\": \"_From @font on July 28, 2016 15:50_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Idea\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n- yum\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.0.0\\n```\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n- Managing Linux\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nAt times it is necessary, particularly for cleanup plays, to remove all unneeded packages that were originally installed as dependencies. Currently this can be done via a `command: yum -y autoremove`. However, it would be best to incorporate it into the yum module, especially because ansible issues a `[WARNING]: Consider using yum module rather than running yum` when not using the yum module.\\n\\n<!---\\n##### STEPS TO REPRODUCE\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below \\n```\\n\\n```\\n-->\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n\\n<!--- ##### EXPECTED RESULTS\\nWhat did you expect to happen when running the steps above? -->\\n\\n<!--- ##### ACTUAL RESULTS\\nWhat actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below \\n```\\n\\n```\\n-->\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#4273_\", \n    \"component_name\": \"yum\", \n    \"component_raw\": \"- yum\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18904\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/yum.py\", \n    \"summary\": \"At times it is necessary, particularly for cleanup plays, to remove all unneeded packages that were originally installed as dependencies. Currently this can be done via a `command: yum -y autoremove`. However, it would be best to incorporate it into the yum module, especially because ansible issues a `[WARNING]: Consider using yum module rather than running yum` when not using the yum module.\", \n    \"title\": \"Support yum autoremove\"\n  }, \n  \"18907\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"_From @bencromwell on November 1, 2016 11:7_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnpm\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n```\\r\\n[defaults]\\r\\ninventory      = etc/inventory\\r\\nlibrary        = modules\\r\\nforks          = 50\\r\\npoll_interval  = 15\\r\\nsudo_user      = root\\r\\ntimeout        = 30\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nubuntu 14.04.5 LTS\\r\\n\\r\\n##### SUMMARY\\r\\nnpm install is unable to locate the path to a repo checkout that it's installing to\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nvars:\\r\\n```\\r\\n  project_path: git_clones/dsr\\r\\n  git_branch: master\\r\\n```\\r\\n\\r\\nFailing section of playbook is the npm install, the git checkout is included for context. The git checkout was successful which suggests the git module is using the `{{ project_path }}` correctly still whereas the npm module is perhaps doing something different.\\r\\n\\r\\n```\\r\\n  - name: git checkout\\r\\n    git:\\r\\n      repo: git@gitlab.example.org:repo/dsr.git\\r\\n      depth: 1\\r\\n      clone: yes\\r\\n      dest: \\\"{{ project_path }}\\\"\\r\\n      version: \\\"{{ git_branch }}\\\"\\r\\n\\r\\n  - name: npm install\\r\\n    npm:\\r\\n      path: \\\"{{ project_path }}/frontend\\\"\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nIn 2.1.0.0 it works:\\r\\n```\\r\\nTASK [dsr : npm install] *******************************************************\\r\\n\\r\\ntask path: /home/ben/projects/ansible/roles/dsr/tasks/build-application.yml:18\\r\\n\\r\\n<localhost> ESTABLISH LOCAL CONNECTION FOR USER: ben\\r\\n\\r\\n<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1477997562.56-257415478162095 `\\\" && echo ansible-tmp-1477997562.56-257415478162095=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1477997562.56-257415478162095 `\\\" ) && sleep 0'\\r\\n\\r\\n<localhost> PUT /tmp/tmpJMgUjJ TO /home/ben/.ansible/tmp/ansible-tmp-1477997562.56-257415478162095/npm\\r\\n\\r\\n<localhost> EXEC /bin/sh -c 'LANG=en_GB.UTF-8 LC_ALL=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8 /usr/bin/python /home/ben/.ansible/tmp/ansible-tmp-1477997562.56-257415478162095/npm; rm -rf \\\"/home/ben/.ansible/tmp/ansible-tmp-1477997562.56-257415478162095/\\\" > /dev/null 2>&1 && sleep 0'\\r\\n\\r\\nchanged: [npower-app1 -> localhost] => {\\\"changed\\\": true, \\\"invocation\\\": {\\\"module_args\\\": {\\\"executable\\\": null, \\\"global\\\": false, \\\"ignore_scripts\\\": false, \\\"name\\\": null, \\\"path\\\": \\\"git_clones/dsr/frontend\\\", \\\"production\\\": false, \\\"registry\\\": null, \\\"state\\\": \\\"present\\\", \\\"version\\\": null}, \\\"module_name\\\": \\\"npm\\\"}}\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nIn 2.2.0.0 it fails\\r\\n\\r\\n```\\r\\nTASK [dsr : npm install] *******************************************************\\r\\n\\r\\ntask path: /home/ben/projects/ansible/roles/dsr/tasks/build-application.yml:18\\r\\n\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/extras/packaging/language/npm.py\\r\\n\\r\\n<localhost> ESTABLISH LOCAL CONNECTION FOR USER: ben\\r\\n\\r\\n<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1477997240.23-141530120990139 `\\\" && echo ansible-tmp-1477997240.23-141530120990139=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1477997240.23-141530120990139 `\\\" ) && sleep 0'\\r\\n\\r\\n<localhost> PUT /tmp/tmp6LAC3v TO /home/ben/.ansible/tmp/ansible-tmp-1477997240.23-141530120990139/npm.py\\r\\n\\r\\n<localhost> EXEC /bin/sh -c 'chmod u+x /home/ben/.ansible/tmp/ansible-tmp-1477997240.23-141530120990139/ /home/ben/.ansible/tmp/ansible-tmp-1477997240.23-141530120990139/npm.py && sleep 0'\\r\\n\\r\\n<localhost> EXEC /bin/sh -c '/usr/bin/python /home/ben/.ansible/tmp/ansible-tmp-1477997240.23-141530120990139/npm.py; rm -rf \\\"/home/ben/.ansible/tmp/ansible-tmp-1477997240.23-141530120990139/\\\" > /dev/null 2>&1 && sleep 0'\\r\\n\\r\\nfatal: [npower-app1 -> localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"cmd\\\": \\\"/usr/bin/npm list --json\\\",\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"executable\\\": null,\\r\\n            \\\"global\\\": false,\\r\\n            \\\"ignore_scripts\\\": false,\\r\\n            \\\"name\\\": null,\\r\\n            \\\"path\\\": \\\"git_clones/dsr/frontend\\\",\\r\\n            \\\"production\\\": false,\\r\\n            \\\"registry\\\": null,\\r\\n            \\\"state\\\": \\\"present\\\",\\r\\n            \\\"version\\\": null\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"npm\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"[Errno 2] No such file or directory: 'git_clones/dsr/frontend'\\\",\\r\\n    \\\"rc\\\": 2\\r\\n}\\r\\n```\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#3332_\", \n    \"component_name\": \"npm\", \n    \"component_raw\": \"npm\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18907\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/language/npm.py\", \n    \"summary\": \"npm install is unable to locate the path to a repo checkout that it's installing to\", \n    \"title\": \"NPM install fails to find directory in ansible 2.2.0.0 (worked in 2.1.0.0)\"\n  }, \n  \"18911\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @qji77 on November 21, 2016 16:33_\\n\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncapabilities\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nnothing special.\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nI use Ubuntu (14.04 and 16.04) on both side, but I guess the issue is more generic.\\r\\n\\r\\n##### SUMMARY\\r\\nI use the capabilities module to set cap_net_raw=pe capability on a binary, like this:\\r\\n```\\r\\n      capabilities: path=/usr/local/bin/sipp-3.5.1 capability=cap_net_raw+pe state=present\\r\\n```\\r\\nAnsible reports this task as changed all the time when I run the playbook.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\npartial playbook:\\r\\n```\\r\\n    - name: set capability\\r\\n      capabilities: path=/usr/local/bin/sipp-3.5.1 capability=cap_net_raw+pe state=present\\r\\n```\\r\\ncommands:\\r\\n```\\r\\nansible-playbook -i hosts test-playbook.yml # <-should change the capability (and it does)\\r\\nansible-playbook -i hosts test-playbook.yml # <- should report the capability as 'ok' (but it reports as 'changed')\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nrun the playbook 2 times on a host, second time it should be status should be 'ok' (instead of 'changed')\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nthe status is 'changed' all the time.\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#3505_\", \n    \"component_name\": \"capabilities\", \n    \"component_raw\": \"capabilities\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18911\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/capabilities.py\", \n    \"summary\": \"I use the capabilities module to set cap_net_raw=pe capability on a binary, like this:\\n\\n```\\n\\n      capabilities: path=/usr/local/bin/sipp-3.5.1 capability=cap_net_raw+pe state=present\\n\\n```\\n\\nAnsible reports this task as changed all the time when I run the playbook.\", \n    \"title\": \"capabilities: show \\\"changes\\\" all the time\"\n  }, \n  \"18914\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.1.2.0\", \n    \"body\": \"_From @peerster on October 7, 2016 7:17_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\nos_user.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\n$ ansible --version\\nansible 2.1.2.0\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nWhen creating users in Openstack it's possible to enter a description for the user.\\nThe module `os_user` is missing this option.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\n\\n```\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5182_\", \n    \"component_name\": \"os_user.py\", \n    \"component_raw\": \"os_user.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18914\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_user.py\", \n    \"summary\": \"When creating users in Openstack it's possible to enter a description for the user.\\nThe module `os_user` is missing this option.\", \n    \"title\": \"Openstack/os_user missing description parameter\"\n  }, \n  \"18915\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.1.2.0\", \n    \"body\": \"_From @peerster on October 7, 2016 12:23_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\nos_router.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\n$ ansible --version\\nansible 2.1.2.0\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nCentOS7 with Openstack Mitaka release\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nGetting a fatal error when using the paramter `interfaces`\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n1. First setup a subnet for the project TEST called `Private Subnet`.\\n2. Define following vars for authentication\\n\\n```\\n    test_auth_dict:\\n      password: my-password\\n      auth_url: http://my-url/v2.0\\n      username: test\\n      project_name: TEST\\n```\\n\\nThen run following task:\\n\\n```\\n  - name: \\\"Setup router for test project\\\"\\n    os_router:\\n      auth: '{{ test_auth_dict }}'\\n      name: Router 1\\n      state: present\\n      interfaces: Private Subnet\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nA router created with an interface connected to the subnet specified\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nTASK [Setup router for DCO project] ********************************************\\n<10.207.80.8> ESTABLISH SSH CONNECTION FOR USER: root\\n<10.207.80.8> SSH: EXEC sshpass -d12 ssh -C -q -o ControlMaster=auto -o ControlPersist=60s -o User=root -o ConnectTimeout=10 -o ControlPath=/home/my-user/.ansible/cp/ansible-ssh-%h-%p-%r 10.207.80.8 '/bin/sh -c '\\\"'\\\"'LANG=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8  LC_ALL=en_US.UTF-8 /usr/bin/python && sleep 0'\\\"'\\\"''\\nAn exception occurred during task execution. The full traceback is:\\nTraceback (most recent call last):\\n  File \\\"/tmp/ansible_xX7nkA/ansible_module_os_router.py\\\", line 367, in <module>\\n    main()\\n  File \\\"/tmp/ansible_xX7nkA/ansible_module_os_router.py\\\", line 323, in main\\n    if _needs_update(cloud, module, router, net, internal_ids):\\n  File \\\"/tmp/ansible_xX7nkA/ansible_module_os_router.py\\\", line 202, in _needs_update\\n    for port in cloud.list_router_interfaces(router, 'internal'):\\n  File \\\"/usr/lib/python2.7/site-packages/shade/openstackcloud.py\\\", line 2507, in list_router_interfaces\\n    'external_fixed_ips' in router['external_gateway_info']):\\nTypeError: argument of type 'NoneType' is not iterable\\n\\nfatal: [my-host]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"invocation\\\": {\\\"module_name\\\": \\\"os_router\\\"}, \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_xX7nkA/ansible_module_os_router.py\\\\\\\", line 367, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_xX7nkA/ansible_module_os_router.py\\\\\\\", line 323, in main\\\\n    if _needs_update(cloud, module, router, net, internal_ids):\\\\n  File \\\\\\\"/tmp/ansible_xX7nkA/ansible_module_os_router.py\\\\\\\", line 202, in _needs_update\\\\n    for port in cloud.list_router_interfaces(router, 'internal'):\\\\n  File \\\\\\\"/usr/lib/python2.7/site-packages/shade/openstackcloud.py\\\\\\\", line 2507, in list_router_interfaces\\\\n    'external_fixed_ips' in router['external_gateway_info']):\\\\nTypeError: argument of type 'NoneType' is not iterable\\\\n\\\", \\\"module_stdout\\\": \\\"\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\"}\\n\\n```\\n\\nHave changed/obfuscated some to remove unecessary information not related to the problem\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5188_\", \n    \"component_name\": \"os_router.py\", \n    \"component_raw\": \"os_router.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18915\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_router.py\", \n    \"summary\": \"Getting a fatal error when using the paramter `interfaces`\", \n    \"title\": \"Openstack/os_router fails with \\\"interfaces\\\" option\"\n  }, \n  \"18918\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"_From @mxxcon on August 29, 2016 20:31_\\n\\n##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nec2_elb, ec2_elb_lb, ec2_elb_facts\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n```\\n##### SUMMARY\\n\\nPlease add support to work with ELB security policies as reported by AWS's `describe-load-balancer-policies` api call, for example setting ELB's SSL security policies as documented in https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-security-policy-table.html\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#4594_\", \n    \"component_name\": \"ec2_elb ec2_elb_lb ec2_elb_facts\", \n    \"component_raw\": \"ec2_elb, ec2_elb_lb, ec2_elb_facts\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18918\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"aws\", \n      \"cloud\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_elb.py\", \n    \"summary\": \"Please add support to work with ELB security policies as reported by AWS's `describe-load-balancer-policies` api call, for example setting ELB's SSL security policies as documented in https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-security-policy-table.html\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#4594_\", \n    \"title\": \"ec2_elb_* modules should support operations on ELB policies\"\n  }, \n  \"18922\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\ncloud/digital_ocean/do_floating_ip\\ncloud/digital_ocean/do_floating_ip_facts\\n##### SUMMARY\\n\\nAdd support for create delete and assign Digital Ocean Floating IPs to a droplet.\\n\", \n    \"component_name\": \"cloud/digital_ocean/do_floating_ip\", \n    \"component_raw\": \"cloud/digital_ocean/do_floating_ip\\ncloud/digital_ocean/do_floating_ip_facts\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18922\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"digital_ocean\", \n      \"feature\", \n      \"module\", \n      \"new_module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/digital_ocean/do_floating_ip_facts.py\", \n    \"summary\": \"Add support for create delete and assign Digital Ocean Floating IPs to a droplet.\", \n    \"title\": \"Created do_floating_ip module\"\n  }, \n  \"18923\": {\n    \"ansible_version\": \"ansible 1.7.2\\nAnsible\", \n    \"body\": \"_From @candlerb on January 28, 2016 17:5_\\n\\n##### Issue Type:\\n\\nBug Report\\n##### Component Name:\\n\\nsetup module\\n##### Ansible Version:\\n\\n```\\nansible 1.7.2\\n```\\n##### Ansible Configuration:\\n\\nNo changes\\n##### Environment:\\n\\ndebian wheezy both source and target\\n##### Summary:\\n\\nansible_interfaces comes out in an odd order; and ansible_default_ipv4 may not deterministically pick an interface when there is more than one to choose from.\\n##### Steps To Reproduce:\\n\\nVirtual machine with three interfaces, eth0/eth1/eth2.\\n\\n```\\nansible -m setup <machine>\\n...\\n        \\\"ansible_interfaces\\\": [\\n            \\\"lo\\\",\\n            \\\"eth2\\\",\\n            \\\"eth1\\\",\\n            \\\"eth0\\\"\\n        ],\\n```\\n\\nIn addition: if eth2 and eth0 pick up an address via dhcp, and eth2 happens to be initialized first, then ansible_default_ipv4 has the address of eth2, not eth0.\\n##### Expected Results:\\n\\nI would expect interfaces to be ordered eth0, eth1, eth2. It's not clear what the algorithm is for choice of \\\"default interface\\\". Maybe related to what default route(s) are present?\\n##### Actual Results:\\n\\nAs above\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#2910_\", \n    \"component_name\": \"setup\", \n    \"component_raw\": \":\\nsetup module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18923\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_1.7\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/setup.py\", \n    \"summary\": \":\\n\\nansible_interfaces comes out in an odd order; and ansible_default_ipv4 may not deterministically pick an interface when there is more than one to choose from.\", \n    \"title\": \"network interfaces not in logical order\"\n  }, \n  \"18927\": {\n    \"ansible_version\": \"1.8.1\", \n    \"body\": \"_From @smiller171 on December 3, 2014 18:34_\\n\\n##### Issue Type:\\n\\nFeature Idea\\n##### Component Name:\\n\\nec2_elb_lb module\\n##### Ansible Version:\\n\\n1.8.1\\n##### Environment:\\n\\nManaging EC2 from generic.\\n##### Summary:\\n\\nCurrently there is no way to tag an ELB because it does not have a resource_id, so it can't be tagged by ec2_tag.\\n##### Steps To Reproduce:\\n\\nI think that you should either have a \\\"tags\\\" parameter in the ec2_elb_lb module (like instance_tags in the ec2 module) or allow for the use of the resource name in ec2_tag.\\n##### Expected Results:\\n\\nI expect to be able to add tags to ELBs by using either a parameter in the ec2_elb_lb module or using the ec2_tag module.\\n##### Actual Results:\\n\\nCurrently you can't tag ELBs from Ansible.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#439_\", \n    \"component_name\": \"ec2_elb_lb\", \n    \"component_raw\": \":\\nec2_elb_lb module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18927\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_1.8\", \n      \"aws\", \n      \"cloud\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\", \n    \"summary\": \":\\n\\nCurrently there is no way to tag an ELB because it does not have a resource_id, so it can't be tagged by ec2_tag.\", \n    \"title\": \"can't tag ELBs\"\n  }, \n  \"18928\": {\n    \"ansible_version\": \"ansible 1.8.1\", \n    \"body\": \"_From @dbrgn on December 5, 2014 15:47_\\n\\n##### Issue Type:\\n\\nFeature Idea\\n##### Component Name:\\n\\nec2 module\\n##### Ansible Version:\\n\\nansible 1.8.1\\n##### Environment:\\n\\nN/A\\n##### Summary:\\n\\nI did not find a way to change EC2 Security Groups on an existing instance. It is possible to define the groups when creating a new instance with the \\\"ec2\\\" module, but nto to alter, add or remove groups on an existing instance.\\n\\nRationale: I create an instance with a limited set of security groups, so that the software cannot connect to the server yet during provisioning. Then I provision the host, and at the end I want to add a security group so that the host can start connecting to the server and process work.\\n##### Steps To Reproduce:\\n\\nN/A\\n##### Expected Results:\\n\\nBeing able to:\\n- Add security groups to an existing EC2 instance\\n- Remove security groups from an existing EC2 instance\\n- Overwrite the security groups on an existing EC2 instance\\n##### Actual Results:\\n\\nN/A\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#454_\", \n    \"component_name\": \"ec2\", \n    \"component_raw\": \":\\nec2 module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18928\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_1.8\", \n      \"aws\", \n      \"cloud\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2.py\", \n    \"summary\": \":\\n\\nI did not find a way to change EC2 Security Groups on an existing instance. It is possible to define the groups when creating a new instance with the \\\"ec2\\\" module, but nto to alter, add or remove groups on an existing instance.\\n\\nRationale: I create an instance with a limited set of security groups, so that the software cannot connect to the server yet during provisioning. Then I provision the host, and at the end I want to add a security group so that the host can start connecting to the server and process work.\", \n    \"title\": \"Alter Security Groups on EC2 Instances\"\n  }, \n  \"18930\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\n- New Module Pull Request\\n##### COMPONENT NAME\\n- cloud/digital_ocean/do_sshkeys\\n- cloud/digital_ocean/do_sshkeys_facts\\n##### SUMMARY\\n\\nAdd module to manage (create, delete and rename)  Digital Ocean SSH Keys\\n\", \n    \"component_name\": \"cloud/digital_ocean/do_sshkeys\", \n    \"component_raw\": \"- cloud/digital_ocean/do_sshkeys\\n- cloud/digital_ocean/do_sshkeys_facts\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18930\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"digital_ocean\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/digital_ocean/do_sshkeys_facts.py\", \n    \"summary\": \"Add module to manage (create, delete and rename)  Digital Ocean SSH Keys\", \n    \"title\": \"add new module do_sshkeys\"\n  }, \n  \"18931\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnotification/telegramm\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nFix token variable \\r\\nToken is created without a string bot, it is used only in the API URL\\r\\n\\r\\n\\r\\n\", \n    \"component_name\": \"notification/telegramm\", \n    \"component_raw\": \"notification/telegramm\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18931\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:cli/\", \n      \"docs\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Fix token variable \\n\\nToken is created without a string bot, it is used only in the API URL\", \n    \"title\": \"hotfix token param for telegram notification\"\n  }, \n  \"18932\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @mwjackson on November 25, 2016 14:43_\\n\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n- Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nlib/ansible/template/__init__.py#L477\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.2.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nAnsible on ubuntu 14.04, targeting same & windows server 2012r2\\r\\n\\r\\n##### SUMMARY\\r\\naddition of ast.literal_eval breaks the documentation suggestion of fixing newlines in windows templating by using newline_sequence header\\r\\n\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nadd the following header to a template file and render using win_template:\\r\\n\\r\\n> #jinja2: newline_sequence:\\u2019\\\\r\\\\n\\u2019 \\r\\n\\r\\ncan also verify this by opening a python REPL\\r\\n\\r\\n```\\r\\nimport ast\\r\\nast.literal_eval('\\\\r\\\\n')\\r\\nast.literal_eval('\\\"\\\\\\\\r\\\\\\\\n\\\"')\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nwindows end of lines in the output file (\\\\r\\\\n) and the jinja2 header removed from the output file\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\njinja2 header remains and line endings not fixed\\n\\n_Copied from original issue: ansible/ansible-modules-core#5736_\", \n    \"component_name\": \"lib/ansible/template/init.pyl477\", \n    \"component_raw\": \"lib/ansible/template/__init__.py#L477\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18932\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"addition of ast.literal_eval breaks the documentation suggestion of fixing newlines in windows templating by using newline_sequence header\", \n    \"title\": \"jinja2 newline_sequence header broken \"\n  }, \n  \"18933\": {\n    \"ansible_version\": \"ansible 1.7.0\", \n    \"body\": \"_From @dan-mcdonald on November 10, 2014 18:55_\\r\\n\\r\\n##### Issue Type:\\r\\n\\r\\nBug report\\r\\n\\r\\n##### COMPONENT NAME:\\r\\npostgres_user module\\r\\n\\r\\n##### Ansible Version:\\r\\n\\r\\nansible 1.7.0\\r\\n##### Environment:\\r\\n\\r\\nOSX Mavericks 10.9.4\\r\\n##### Summary:\\r\\n\\r\\nWhen running against an AWS RDS Postgresql instance, the postgres_user module can't set up new users.\\r\\n##### Steps To Reproduce:\\r\\n\\r\\nRun this task:\\r\\n\\r\\n```\\r\\n- name: Ensure user has access to the database\\r\\n  postgresql_user: login_host={{ db_host }}\\r\\n                   port={{ db_port }}\\r\\n                   login_user={{ db_admin_user }}\\r\\n                   login_password={{ db_admin_password }}\\r\\n                   db={{ db_name }}\\r\\n                   name={{ db_user }}\\r\\n                   password={{ db_password }}\\r\\n                   priv=ALL\\r\\n                   state=present \\r\\n```\\r\\n##### Expected Results:\\r\\n\\r\\n```\\r\\nok: [...] => {\\\"changed\\\": true, \\\"db\\\": \\\"database\\\"}\\r\\n```\\r\\n##### Actual Results:\\r\\n\\r\\n```\\r\\nfailed: [...] => {\\\"failed\\\": true, \\\"parsed\\\": false}\\r\\ninvalid output was: SUDO-SUCCESS-qwpjepgvenunnlewzwjddpnrbfjyptxo\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/home/ubuntu/.ansible/tmp/ansible-tmp-1407775799.05-32923950289495/postgresql_user\\\", line 1869, in <module>\\r\\n    main()\\r\\n  File \\\"/home/ubuntu/.ansible/tmp/ansible-tmp-1407775799.05-32923950289495/postgresql_user\\\", line 497, in main\\r\\n    changed = user_alter(cursor, module, user, password, role_attr_flags, encrypted, expires)\\r\\n  File \\\"/home/ubuntu/.ansible/tmp/ansible-tmp-1407775799.05-32923950289495/postgresql_user\\\", line 201, in user_alter\\r\\n    cursor.execute(select, {\\\"user\\\": user})\\r\\npsycopg2.ProgrammingError: permission denied for relation pg_authid\\r\\n```\\r\\n\\r\\nApparently the `pg_authid` relation [is not available in RDS](https://forums.aws.amazon.com/thread.jspa?threadID=151248).\\r\\n\\r\\nPossible workaround: if access denied for `pg_authid`, then always set the password.\\r\\n\\r\\n\\r\\n_Copied from original issue: ansible/ansible-modules-core#297_\", \n    \"component_name\": \"postgres_user\", \n    \"component_raw\": \":\\npostgres_user module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18933\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_1.7\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/user.py\", \n    \"summary\": \":\\n\\n\\n\\nWhen running against an AWS RDS Postgresql instance, the postgres_user module can't set up new users.\", \n    \"title\": \"postgres_user module doesn't work with AWS RDS databases\"\n  }, \n  \"18934\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @dwoo4dwoo on November 15, 2016 9:1_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_updates\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nLinux foo 3.10.0-327.4.5.el7.x86_64 #1 SMP Mon Jan 25 22:07:14 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux\\r\\nCentOS Linux release 7.2.1511 (Core)\\r\\nWindows Server 2016\\r\\n\\r\\n##### SUMMARY\\r\\nWindows Malicious Software Removal Tool always causes a failure.  It looks like KB890830 is being installed twice.  From the log:\\r\\n``` \\r\\n2016-11-15 07:49:17Z Adding update c63fe382-cad6-4125-b65a-64d23e64a709 - Cumulative Update for Windows Server 2016 for x64-based Systems (KB3197954)\\r\\n2016-11-15 07:49:18Z Adding update 423e965f-7870-457c-8c29-18d74eac29b0 - Update for Windows Server 2016 for x64-based Systems (KB3199986)\\r\\n2016-11-15 07:49:18Z Adding update 25bb083e-21f1-46cf-9000-124c57cf8568 - Cumulative Update for Windows Server 2016 for x64-based Systems (KB3200970)\\r\\n2016-11-15 07:49:18Z Adding update 5eeca461-8de6-46f3-8653-f1162c7ef67f - Windows Malicious Software Removal Tool for Windows 8, 8.1, 10 and Windows Server 2012, 2012 R2, 2016 x64 Edition - November 2016 (KB890830)\\r\\n2016-11-15 07:49:18Z Adding update a9dc4255-70ae-4969-bfc1-b348331c6871 - Windows Malicious Software Removal Tool for Windows Insider Preview and Server Technical Preview x64 - November 2016 (KB890830)\\r\\n2016-11-15 07:49:18Z Adding update 4dd19183-d3bb-436e-9b7e-9db5b336c885 - Definition Update for Windows Defender - KB2267602 (Definition 1.231.1958.0)\\r\\n```\\r\\n\\r\\nNotice there are two different MSRT entries both pointing to KB890830.\\r\\n\\r\\n---\\r\\n\\r\\nFor completeness ... I should note that upon reboot two patches were rolled back:\\r\\n```\\r\\nInstallation Failure: Windows failed to install the following update with error 0x800F0922: Cumulative Update for Windows Server 2016 for x64-based Systems (KB3200970).\\r\\nInstallation Failure: Windows failed to install the following update with error 0x800F0922: Cumulative Update for Windows Server 2016 for x64-based Systems (KB3197954).\\r\\n```\\r\\n\\r\\nI do **not** have this problem if I apply the updates manually via the GUI.  I don't know if this is a problem with win_updates or the Windows Update Agent API.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n* Spin up a new EC2 instance using ami-30540427 (Windows Server 2016 Base 2016.10.18)\\r\\n* Run ansible-playbook using the following playbook:\\r\\n```\\r\\n- name: install updates\\r\\n  tags: updates\\r\\n  win_updates:\\r\\n    log_path: 'C:\\\\Windows\\\\Temp\\\\win_updates.txt'\\r\\n    category_names: [ 'Application',\\r\\n                      'Connectors',\\r\\n                      'CriticalUpdates',\\r\\n                      'DefinitionUpdates',\\r\\n                      'DeveloperKits',\\r\\n                      'FeaturePacks',\\r\\n                      'Guidance',\\r\\n                      'SecurityUpdates',\\r\\n                      'ServicePacks',\\r\\n                      'Tools',\\r\\n                      'UpdateRollups',\\r\\n                      'Updates' ]\\r\\n  register: results\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nI expected all updates to be applied without error.  Applying the updates manually via the GUI completes without error.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nfatal: [foo]: FAILED! => \\r\\n{\\r\\n  \\\"changed\\\": false,\\r\\n  \\\"failed\\\": true,\\r\\n  \\\"failed_update_count\\\": 1,\\r\\n  \\\"found_update_count\\\": 6,\\r\\n  \\\"installed_update_count\\\": 5,\\r\\n  \\\"msg\\\": \\\"Failed to install one or more updates\\\",\\r\\n  \\\"reboot_required\\\": true,\\r\\n  \\\"updates\\\": {\\r\\n    \\\"25bb083e-21f1-46cf-9000-124c57cf8568\\\": {\\r\\n      \\\"id\\\": \\\"25bb083e-21f1-46cf-9000-124c57cf8568\\\",\\r\\n      \\\"installed\\\": true,\\r\\n      \\\"kb\\\": [\\r\\n        \\\"3200970\\\"\\r\\n      ],\\r\\n      \\\"title\\\": \\\"Cumulative Update for Windows Server 2016 for x64-based Systems (KB3200970)\\\"\\r\\n    },\\r\\n    \\\"423e965f-7870-457c-8c29-18d74eac29b0\\\": {\\r\\n      \\\"id\\\": \\\"423e965f-7870-457c-8c29-18d74eac29b0\\\",\\r\\n      \\\"installed\\\": true,\\r\\n      \\\"kb\\\": [\\r\\n        \\\"3199986\\\"\\r\\n      ],\\r\\n      \\\"title\\\": \\\"Update for Windows Server 2016 for x64-based Systems (KB3199986)\\\"\\r\\n    },\\r\\n    \\\"4dd19183-d3bb-436e-9b7e-9db5b336c885\\\": {\\r\\n      \\\"id\\\": \\\"4dd19183-d3bb-436e-9b7e-9db5b336c885\\\",\\r\\n      \\\"installed\\\": true,\\r\\n      \\\"kb\\\": [\\r\\n        \\\"2267602\\\"\\r\\n      ],\\r\\n      \\\"title\\\": \\\"Definition Update for Windows Defender - KB2267602 (Definition 1.231.1958.0)\\\"\\r\\n    },\\r\\n    \\\"5eeca461-8de6-46f3-8653-f1162c7ef67f\\\": {\\r\\n      \\\"id\\\": \\\"5eeca461-8de6-46f3-8653-f1162c7ef67f\\\",\\r\\n      \\\"installed\\\": true,\\r\\n      \\\"kb\\\": [\\r\\n        \\\"890830\\\"\\r\\n      ],\\r\\n      \\\"title\\\": \\\"Windows Malicious Software Removal Tool for Windows 8, 8.1, 10 and Windows Server 2012, 2012 R2, 2016 x64 Edition - November 2016 (KB890830)\\\"\\r\\n    },\\r\\n    \\\"a9dc4255-70ae-4969-bfc1-b348331c6871\\\": {\\r\\n      \\\"failed\\\": true,\\r\\n      \\\"failure_hresult_code\\\": -2147023293,\\r\\n      \\\"id\\\": \\\"a9dc4255-70ae-4969-bfc1-b348331c6871\\\",\\r\\n      \\\"installed\\\": false,\\r\\n      \\\"kb\\\": [\\r\\n        \\\"890830\\\"\\r\\n      ],\\r\\n      \\\"title\\\": \\\"Windows Malicious Software Removal Tool for Windows Insider Preview and Server Technical Preview x64 - November 2016 (KB890830)\\\"\\r\\n    },\\r\\n    \\\"c63fe382-cad6-4125-b65a-64d23e64a709\\\": {\\r\\n      \\\"id\\\": \\\"c63fe382-cad6-4125-b65a-64d23e64a709\\\",\\r\\n      \\\"installed\\\": true,\\r\\n      \\\"kb\\\": [\\r\\n        \\\"3197954\\\"\\r\\n      ],\\r\\n      \\\"title\\\": \\\"Cumulative Update for Windows Server 2016 for x64-based Systems (KB3197954)\\\"\\r\\n    }\\r\\n  }\\r\\n}\\r\\n\\r\\n```\\r\\n\\r\\nTail of C:\\\\Windows\\\\Temp\\\\win_updates.txt:\\r\\n```\\r\\n2016-11-15 07:49:11Z Creating Windows Update session...\\r\\n2016-11-15 07:49:11Z Create Windows Update searcher...\\r\\n2016-11-15 07:49:11Z Search criteria: (IsInstalled = 0 AND CategoryIDs contains '5C9376AB-8CE6-464A-B136-22113DD69801') OR (IsInstalled = 0 AND CategoryIDs contains '434DE588-ED14-48F5-8EED-A15E09A991F6') OR (IsInstalled = 0 AND CategoryIDs contains 'E6CF1350-C01B-414D-A61F-263D14D133B4') OR (IsInstalled = 0 AND CategoryIDs contains 'E0789628-CE08-4437-BE74-2495B842F43B') OR (IsInstalled = 0 AND CategoryIDs contains 'E140075D-8433-45C3-AD87-E72345B36078') OR (IsInstalled = 0 AND CategoryIDs contains 'B54E7D24-7ADD-428F-8B75-90A396FA584F') OR (IsInstalled = 0 AND CategoryIDs contains '9511D615-35B2-47BB-927F-F73D8E9260BB') OR (IsInstalled = 0 AND CategoryIDs contains '0FA1201D-4330-4FA8-8AE9-B877473B6441') OR (IsInstalled = 0 AND CategoryIDs contains '68C5B0A3-D1A6-4553-AE49-01D3A7827828') OR (IsInstalled = 0 AND CategoryIDs contains 'B4832BD8-E735-4761-8DAF-37F882276DAB') OR (IsInstalled = 0 AND CategoryIDs contains '28BC880E-0592-4CBF-8F95-C79B17911D5F') OR (IsInstalled = 0 AND CategoryIDs contains 'CD5FFD1E-E932-4E3A-BF74-18BF0B1BBD83')\\r\\n2016-11-15 07:49:11Z Searching for updates to install in category IDs 5C9376AB-8CE6-464A-B136-22113DD69801 434DE588-ED14-48F5-8EED-A15E09A991F6 E6CF1350-C01B-414D-A61F-263D14D133B4 E0789628-CE08-4437-BE74-2495B842F43B E140075D-8433-45C3-AD87-E72345B36078 B54E7D24-7ADD-428F-8B75-90A396FA584F 9511D615-35B2-47BB-927F-F73D8E9260BB 0FA1201D-4330-4FA8-8AE9-B877473B6441 68C5B0A3-D1A6-4553-AE49-01D3A7827828 B4832BD8-E735-4761-8DAF-37F882276DAB 28BC880E-0592-4CBF-8F95-C79B17911D5F CD5FFD1E-E932-4E3A-BF74-18BF0B1BBD83...\\r\\n2016-11-15 07:49:17Z Creating update collection...\\r\\n2016-11-15 07:49:17Z Found 6 updates\\r\\n2016-11-15 07:49:17Z Adding update c63fe382-cad6-4125-b65a-64d23e64a709 - Cumulative Update for Windows Server 2016 for x64-based Systems (KB3197954)\\r\\n2016-11-15 07:49:18Z Adding update 423e965f-7870-457c-8c29-18d74eac29b0 - Update for Windows Server 2016 for x64-based Systems (KB3199986)\\r\\n2016-11-15 07:49:18Z Adding update 25bb083e-21f1-46cf-9000-124c57cf8568 - Cumulative Update for Windows Server 2016 for x64-based Systems (KB3200970)\\r\\n2016-11-15 07:49:18Z Adding update 5eeca461-8de6-46f3-8653-f1162c7ef67f - Windows Malicious Software Removal Tool for Windows 8, 8.1, 10 and Windows Server 2012, 2012 R2, 2016 x64 Edition - November 2016 (KB890830)\\r\\n2016-11-15 07:49:18Z Adding update a9dc4255-70ae-4969-bfc1-b348331c6871 - Windows Malicious Software Removal Tool for Windows Insider Preview and Server Technical Preview x64 - November 2016 (KB890830)\\r\\n2016-11-15 07:49:18Z Adding update 4dd19183-d3bb-436e-9b7e-9db5b336c885 - Definition Update for Windows Defender - KB2267602 (Definition 1.231.1958.0)\\r\\n2016-11-15 07:49:18Z Calculating pre-install reboot requirement...\\r\\n2016-11-15 07:49:18Z No reboot is pending...\\r\\n2016-11-15 07:49:18Z Downloading updates...\\r\\n2016-11-15 07:49:18Z Creating downloader object...\\r\\n2016-11-15 07:49:18Z Creating download collection...\\r\\n2016-11-15 07:49:18Z Adding update c63fe382-cad6-4125-b65a-64d23e64a709\\r\\n2016-11-15 07:49:18Z Downloading update c63fe382-cad6-4125-b65a-64d23e64a709...\\r\\n2016-11-15 08:05:58Z Creating downloader object...\\r\\n2016-11-15 08:05:58Z Creating download collection...\\r\\n2016-11-15 08:05:58Z Adding update 423e965f-7870-457c-8c29-18d74eac29b0\\r\\n2016-11-15 08:05:58Z Downloading update 423e965f-7870-457c-8c29-18d74eac29b0...\\r\\n2016-11-15 08:06:36Z Creating downloader object...\\r\\n2016-11-15 08:06:37Z Creating download collection...\\r\\n2016-11-15 08:06:37Z Adding update 25bb083e-21f1-46cf-9000-124c57cf8568\\r\\n2016-11-15 08:06:37Z Downloading update 25bb083e-21f1-46cf-9000-124c57cf8568...\\r\\n2016-11-15 08:14:54Z Creating downloader object...\\r\\n2016-11-15 08:14:55Z Creating download collection...\\r\\n2016-11-15 08:14:55Z Adding update 5eeca461-8de6-46f3-8653-f1162c7ef67f\\r\\n2016-11-15 08:14:55Z Downloading update 5eeca461-8de6-46f3-8653-f1162c7ef67f...\\r\\n2016-11-15 08:14:56Z Creating downloader object...\\r\\n2016-11-15 08:14:56Z Creating download collection...\\r\\n2016-11-15 08:14:56Z Adding update a9dc4255-70ae-4969-bfc1-b348331c6871\\r\\n2016-11-15 08:14:56Z Downloading update a9dc4255-70ae-4969-bfc1-b348331c6871...\\r\\n2016-11-15 08:14:57Z Creating downloader object...\\r\\n2016-11-15 08:14:57Z Creating download collection...\\r\\n2016-11-15 08:14:57Z Adding update 4dd19183-d3bb-436e-9b7e-9db5b336c885\\r\\n2016-11-15 08:14:58Z Downloading update 4dd19183-d3bb-436e-9b7e-9db5b336c885...\\r\\n2016-11-15 08:14:59Z Installing updates...\\r\\n2016-11-15 08:14:59Z Creating installer object...\\r\\n2016-11-15 08:14:59Z Creating install collection...\\r\\n2016-11-15 08:15:00Z Adding update c63fe382-cad6-4125-b65a-64d23e64a709\\r\\n2016-11-15 08:15:00Z Adding update 423e965f-7870-457c-8c29-18d74eac29b0\\r\\n2016-11-15 08:15:00Z Adding update 25bb083e-21f1-46cf-9000-124c57cf8568\\r\\n2016-11-15 08:15:00Z Adding update 5eeca461-8de6-46f3-8653-f1162c7ef67f\\r\\n2016-11-15 08:15:00Z Adding update a9dc4255-70ae-4969-bfc1-b348331c6871\\r\\n2016-11-15 08:15:00Z Adding update 4dd19183-d3bb-436e-9b7e-9db5b336c885\\r\\n2016-11-15 08:15:00Z Installing updates...\\r\\n2016-11-15 08:24:59Z Update c63fe382-cad6-4125-b65a-64d23e64a709 succeeded\\r\\n2016-11-15 08:24:59Z Update 423e965f-7870-457c-8c29-18d74eac29b0 succeeded\\r\\n2016-11-15 08:24:59Z Update 25bb083e-21f1-46cf-9000-124c57cf8568 succeeded\\r\\n2016-11-15 08:25:00Z Update 5eeca461-8de6-46f3-8653-f1162c7ef67f succeeded\\r\\n2016-11-15 08:25:00Z Update a9dc4255-70ae-4969-bfc1-b348331c6871 failed resultcode -2147023293 hresult -2147023293\\r\\n2016-11-15 08:25:00Z Update 4dd19183-d3bb-436e-9b7e-9db5b336c885 succeeded\\r\\n2016-11-15 08:25:01Z Performing post-install reboot requirement check...\\r\\n2016-11-15 08:25:01Z Return value: \\r\\nName                           Value                                                              \\r\\n----                           -----                                                              \\r\\nupdates                        {423e965f-7870-457c-8c29-18d74eac29b0, 5eeca461-8de6-46f3-8653-f...\\r\\nfound_update_count             6                                                                  \\r\\nfailed                         True                                                               \\r\\nchanged                        False                                                              \\r\\nreboot_required                True                                                               \\r\\ninstalled_update_count         5                                                                  \\r\\nmsg                            Failed to install one or more updates                              \\r\\nfailed_update_count            1                                                                  \\r\\n\\r\\n\\r\\n\\r\\n2016-11-15 08:25:04Z Scheduled job completed with output: \\r\\nName                           Value                                                                                                                                                                                                                                                                        \\r\\n----                           -----                                                                                                                                                                                                                                                                        \\r\\nupdates                        {423e965f-7870-457c-8c29-18d74eac29b0, 5eeca461-8de6-46f3-8653-f1162c7ef67f, 4dd19183-d3bb-436e-9b7e-9db5b336c885, 25bb083e-21f1-46cf-9000-124c57cf8568...}                                                                                                                  \\r\\nfound_update_count             6                                                                                                                                                                                                                                                                            \\r\\nfailed                         True                                                                                                                                                                                                                                                                         \\r\\nchanged                        False                                                                                                                                                                                                                                                                        \\r\\nreboot_required                True                                                                                                                                                                                                                                                                         \\r\\ninstalled_update_count         5                                                                                                                                                                                                                                                                            \\r\\nmsg                            Failed to install one or more updates                                                                                                                                                                                                                                        \\r\\nfailed_update_count            1                                                                                                                                                                                                                                                                            \\r\\n\\r\\n\\r\\n```\\n\\n_Copied from original issue: ansible/ansible-modules-extras#3471_\", \n    \"component_name\": \"win_updates\", \n    \"component_raw\": \"win_updates\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18934\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_updates.ps1\", \n    \"summary\": \"Windows Malicious Software Removal Tool always causes a failure.  It looks like KB890830 is being installed twice.  From the log:\\n\\n``` \\n\\n2016-11-15 07:49:17Z Adding update c63fe382-cad6-4125-b65a-64d23e64a709 - Cumulative Update for Windows Server 2016 for x64-based Systems (KB3197954)\\n\\n2016-11-15 07:49:18Z Adding update 423e965f-7870-457c-8c29-18d74eac29b0 - Update for Windows Server 2016 for x64-based Systems (KB3199986)\\n\\n2016-11-15 07:49:18Z Adding update 25bb083e-21f1-46cf-9000-124c57cf8568 - Cumulative Update for Windows Server 2016 for x64-based Systems (KB3200970)\\n\\n2016-11-15 07:49:18Z Adding update 5eeca461-8de6-46f3-8653-f1162c7ef67f - Windows Malicious Software Removal Tool for Windows 8, 8.1, 10 and Windows Server 2012, 2012 R2, 2016 x64 Edition - November 2016 (KB890830)\\n\\n2016-11-15 07:49:18Z Adding update a9dc4255-70ae-4969-bfc1-b348331c6871 - Windows Malicious Software Removal Tool for Windows Insider Preview and Server Technical Preview x64 - November 2016 (KB890830)\\n\\n2016-11-15 07:49:18Z Adding update 4dd19183-d3bb-436e-9b7e-9db5b336c885 - Definition Update for Windows Defender - KB2267602 (Definition 1.231.1958.0)\\n\\n```\\n\\n\\n\\nNotice there are two different MSRT entries both pointing to KB890830.\\n\\n\\n\\n---\\n\\n\\n\\nFor completeness ... I should note that upon reboot two patches were rolled back:\\n\\n```\\n\\nInstallation Failure: Windows failed to install the following update with error 0x800F0922: Cumulative Update for Windows Server 2016 for x64-based Systems (KB3200970).\\n\\nInstallation Failure: Windows failed to install the following update with error 0x800F0922: Cumulative Update for Windows Server 2016 for x64-based Systems (KB3197954).\\n\\n```\\n\\n\\n\\nI do **not** have this problem if I apply the updates manually via the GUI.  I don't know if this is a problem with win_updates or the Windows Update Agent API.\", \n    \"title\": \"win_updates: Windows Malicious Software Removal Tool failure\"\n  }, \n  \"18935\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n##### ISSUE TYPE\\r\\n- Bug Report\\r\\n##### COMPONENT NAME\\r\\n\\r\\nuri\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.1.1.0\\r\\n```\\r\\n##### CONFIGURATION\\r\\n\\r\\nstandard\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\ndebian to raspbian\\r\\n##### SUMMARY\\r\\n\\r\\nstatus \\\"changed\\\" never thrown by a uri task, even if an http call is sent\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nCreate a task that generate an http call:\\r\\n\\r\\n```\\r\\n- name: create the database and the database schema\\r\\n  uri: url=https://{{ hostname }}/{{ app_path }}/install.php\\r\\n       creates={{ apps_install_path }}/database.sqlite3\\r\\n       validate_certs=no\\r\\n```\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nThe task should be executed the first time you launch the playbook, because the file database.sqlite3 does not exist. You can see the http call in the logfile of your http server. The task status should be `ok` or `changed`, I'm not sure what would be the best solution.\\r\\n\\r\\nOn the second run of the playbook, the task shouldn't be executed, because the file database.sqlite3 does exist. You shouldn't see any http call in the logfile of your http server. The task status should be `skipped`.\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nThe task is executed the first time, because the file database.sqlite3 does not exist. I can see the http call in the logfile of the http server. The task status is `ok`.\\r\\n\\r\\nOn the second run of the playbook, the file database.sqlite3 does exist. I can't see any http call in the logfile of the http server, which is normal. But the task status is `ok`.\\r\\n\\r\\nThe main problem is then the status report, which is alway `ok` whenever an http call has been sent or not.\\r\\n\\r\\n```\\r\\nTASK [myapp : create the database and the database schema] **********\\r\\nok: [myserver]\\r\\n```\\r\\n\\r\\nSee also ansible/ansible-modules-core#4490\", \n    \"component_name\": \"uri\", \n    \"component_raw\": \"uri\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18935\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/basics/uri.py\", \n    \"summary\": \"status \\\"changed\\\" never thrown by a uri task, even if an http call is sent\", \n    \"title\": \"uri: status \\\"changed\\\" never thrown\"\n  }, \n  \"18936\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel f508d29c16) last updated 2016/11/25 175601 (GMT -700)\", \n    \"body\": \"_From @tedelhourani on November 26, 2016 2:3_\\n\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\nansible-modules-extras/network/bigswitch/bigmon_chain.py\\r\\nansible-modules-extras/network/bigswitch/bigmon_chain_endpointpair.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel f508d29c16) last updated 2016/11/25 17:56:01 (GMT -700)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnnn\\\" in your commit\\r\\nmessage and your description; but you should still explain what the change does.\\r\\n-->\\r\\n\\r\\n<!--- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\\r\\n\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras/pull/3549_\", \n    \"component_name\": \"ansible- s-extras/network/bigswitch/bigmon_chain.py\", \n    \"component_raw\": \"ansible-modules-extras/network/bigswitch/bigmon_chain.py\\nansible-modules-extras/network/bigswitch/bigmon_chain_endpointpair.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18936\", \n    \"issue_type\": \"New Module Pull Request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"networking\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/bigswitch/bigmon_chain.py\", \n    \"summary\": \"```\\n\\n\\n\\n```\\n\\n\\n\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras/pull/3549_\", \n    \"title\": \"Add big switch big mon inline chain modules\"\n  }, \n  \"18937\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /Users/aleksandr.vinokurov/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @aleksandr-vin on October 31, 2016 14:29_\\n\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`postgresql_user` module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.1.2.0\\r\\n  config file = /Users/aleksandr.vinokurov/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n`$ cat ~/.ansible.cfg`:\\r\\n```\\r\\n[ssh_connection]\\r\\npipelining = True\\r\\ncontrol_path = /tmp/ansible-ssh-%%h-%%p-%%r\\r\\n\\r\\n[defaults]\\r\\ncallback_plugins = plugins/callbacks/\\r\\nvault_password_file = ~/the_ansible_vault.sh\\r\\nnocows = 1\\r\\nansible_managed = This file is managed by Ansible, all changes will be lost.\\r\\n```\\r\\n\\r\\n`env | grep ANSIBLE_`:\\r\\n```\\r\\nANSIBLE_VAULT_PASSWORD_FILE=/Users/aleksandr.vinokurov/the_ansible_vault.sh\\r\\nANSIBLE_HOME=/Users/aleksandr.vinokurov/ansible\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nOS running:\\r\\n```\\r\\nDarwin Vinokurovs-Mac.local 15.6.0 Darwin Kernel Version 15.6.0: Mon Aug 29 20:21:34 PDT 2016; root:xnu-3248.60.11~1/RELEASE_X86_64 x86_64\\r\\n```\\r\\n\\r\\nOS managing:\\r\\n```\\r\\nLinux all-in-one-services.test 4.4.0-31-generic #50-Ubuntu SMP Wed Jul 13 00:07:12 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nWhen using `postgresql_user` module with quoted identifier, then checks fail (because of regexp) and the task is always *changed* even when you rerun.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nYou need a POSTGRES_BOX with Postgresql (checked on 9.6) and 'foo-bar' db on it. Then run next commands:\\r\\n```\\r\\necho \\\"First run\\\"\\r\\nansible POSTGRES_BOX -i inventory -m postgresql_user -a \\\"name=foo-bar db=foo-bar port=5432 priv='ALL' state=present\\\" --one-line\\r\\n\\r\\necho \\\"Second run\\\"\\r\\nansible POSTGRES_BOX -i inventory -m postgresql_user -a \\\"name=foo-bar db=foo-bar port=5432 priv='ALL' state=present\\\" --one-line\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n```\\r\\nFirst run\\r\\nPOSTGRES_BOX | SUCCESS => {\\\"changed\\\": true, \\\"user\\\": \\\"foo-bar\\\"}\\r\\nSecond run\\r\\nPOSTGRES_BOX | SUCCESS => {\\\"changed\\\": false, \\\"user\\\": \\\"foo-bar\\\"}\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nFirst run\\r\\nPOSTGRES_BOX | SUCCESS => {\\\"changed\\\": true, \\\"user\\\": \\\"foo-bar\\\"}\\r\\nSecond run\\r\\nPOSTGRES_BOX | SUCCESS => {\\\"changed\\\": true, \\\"user\\\": \\\"foo-bar\\\"}\\r\\n```\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5441_\", \n    \"component_name\": \"postgresql_user\", \n    \"component_raw\": \"`postgresql_user` module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18937\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/database/postgresql/postgresql_user.py\", \n    \"summary\": \"When using `postgresql_user` module with quoted identifier, then checks fail (because of regexp) and the task is always *changed* even when you rerun.\", \n    \"title\": \"`postgresql_user` module does not treat quoted identifier well\"\n  }, \n  \"18938\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /Users/aleksandr.vinokurov/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`postgresql_user` module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.1.2.0\\r\\n  config file = /Users/aleksandr.vinokurov/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nFailed regex updated to respect escaped quotes for the quoted identifiers. Also pattern for granter of the permissions made more open. Fixes #18937 \\r\\n\\r\\n##### CHECK RUN\\r\\n```\\r\\necho \\\"First run\\\"\\r\\nansible POSTGRES_BOX -i inventory -m postgresql_user -a \\\"name=foo-bar db=foo-bar port=5432 priv='ALL' state=present\\\" --one-line\\r\\n\\r\\necho \\\"Second run\\\"\\r\\nansible POSTGRES_BOX -i inventory -m postgresql_user -a \\\"name=foo-bar db=foo-bar port=5432 priv='ALL' state=present\\\" --one-line\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nFirst run\\r\\nPOSTGRES_BOX | SUCCESS => {\\\"changed\\\": true, \\\"user\\\": \\\"foo-bar\\\"}\\r\\nSecond run\\r\\nPOSTGRES_BOX | SUCCESS => {\\\"changed\\\": true, \\\"user\\\": \\\"foo-bar\\\"}\\r\\n```\\r\\n\\r\\n##### AFTER THE FIX\\r\\n```\\r\\nFirst run\\r\\nPOSTGRES_BOX | SUCCESS => {\\\"changed\\\": true, \\\"user\\\": \\\"foo-bar\\\"}\\r\\nSecond run\\r\\nPOSTGRES_BOX | SUCCESS => {\\\"changed\\\": false, \\\"user\\\": \\\"foo-bar\\\"}\\r\\n```\", \n    \"component_name\": \"postgresql_user\", \n    \"component_raw\": \"`postgresql_user` module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18938\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"community_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/database/postgresql/postgresql_user.py\", \n    \"summary\": \"Failed regex updated to respect escaped quotes for the quoted identifiers. Also pattern for granter of the permissions made more open. Fixes #18937 \\n\\n\\n\\n##### CHECK RUN\\n\\n```\\n\\necho \\\"First run\\\"\\n\\nansible POSTGRES_BOX -i inventory -m postgresql_user -a \\\"name=foo-bar db=foo-bar port=5432 priv='ALL' state=present\\\" --one-line\\n\\n\\n\\necho \\\"Second run\\\"\\n\\nansible POSTGRES_BOX -i inventory -m postgresql_user -a \\\"name=foo-bar db=foo-bar port=5432 priv='ALL' state=present\\\" --one-line\\n\\n```\", \n    \"title\": \"Fix `postgresql_user` module to treat quoted identifier well, Fixes #18937\"\n  }, \n  \"18943\": {\n    \"ansible_version\": \"NA\", \n    \"body\": \"_From @HanXHX on April 15, 2016 9:59_\\n\\n##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nFile\\n##### ANSIBLE VERSION\\n\\nNA\\n##### CONFIGURATION\\n\\nNA\\n##### OS / ENVIRONMENT\\n\\nNA\\n##### SUMMARY\\n\\nSee: http://www.independent.co.uk/life-style/gadgets-and-tech/news/man-accidentally-deletes-his-entire-company-with-one-line-of-bad-code-a6984256.html\\n\\nI think we can avoid some part this problem on file module.\\n##### STEPS TO REPRODUCE\\n\\n```\\n- hosts: dummy\\n  vars:\\n    a: \\\"\\\"\\n    b: \\\"\\\"\\n  tasks:\\n    - file: path=\\\"{{ a }}/{{ b }}\\\" state=absent\\n```\\n##### EXPECTED RESULTS\\n\\nFatal error!\\n##### ACTUAL RESULTS\\n\\nIt destroys all your data.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#3443_\", \n    \"component_name\": \"file\", \n    \"component_raw\": \"File\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18943\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/file.py\", \n    \"summary\": \"See: http://www.independent.co.uk/life-style/gadgets-and-tech/news/man-accidentally-deletes-his-entire-company-with-one-line-of-bad-code-a6984256.html\\n\\nI think we can avoid some part this problem on file module.\", \n    \"title\": \"Idea on file module: avoid rm -fr /\"\n  }, \n  \"18945\": {\n    \"ansible_version\": \"2.2.0.0\", \n    \"body\": \"_From @maxkueng on November 21, 2016 13:1_\\n\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nsysctl\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n\\\"2.2.0.0\\\"\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n```\\r\\n[defaults]\\r\\nhostfile = hosts\\r\\nask_sudo_pass = True\\r\\nsudo_flags=-H -S -n\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nRunning Manjaro Linux, managing Manjaro Linux (local connection)\\r\\n\\r\\n##### SUMMARY\\r\\nOn Arch Linux and Manjaro Linux `/etc/sysctl.conf` [is deprecated](https://www.archlinux.org/news/deprecation-of-etcsysctlconf/) but Ansible still saves configurations there. I'm aware that you can specify `sysctl_file` in the task but on Arch or Manjaro it shouldn't put any configs in to `/etc/sysctl.conf` since it's not going to be read.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```\\r\\n- name: set inotify watchers\\r\\n  become: yes\\r\\n  sysctl:\\r\\n    name=fs.inotify.max_user_watches\\r\\n    value=524288\\r\\n    state=present\\r\\n    reload=yes\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nWrites `fs.inotify.max_user_watches=524288` in to a file in `/etc/sysctl.conf.d/`\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nWrites `fs.inotify.max_user_watches=524288` in `/etc/sysctl.conf`\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5687_\", \n    \"component_name\": \"sysctl\", \n    \"component_raw\": \"sysctl\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18945\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/sysctl.py\", \n    \"summary\": \"On Arch Linux and Manjaro Linux `/etc/sysctl.conf` [is deprecated](https://www.archlinux.org/news/deprecation-of-etcsysctlconf/) but Ansible still saves configurations there. I'm aware that you can specify `sysctl_file` in the task but on Arch or Manjaro it shouldn't put any configs in to `/etc/sysctl.conf` since it's not going to be read.\", \n    \"title\": \"sysctl config should not be written to /etc/sysctl.conf on Arch Linux and Manjaro\"\n  }, \n  \"18947\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/gdanielson/ansible-asa/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nNetwork module asa_config\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/gdanielson/ansible-asa/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n```\\r\\n$ cat /home/gdanielson/ansible-asa/ansible.cfg\\r\\n[defaults]\\r\\ninventory = ./inventories/devel/inventory\\r\\nroles_path = ./.imported_roles:/some/dev/place/with/roles\\r\\ntransport=local\\r\\nhost_key_checking = False\\r\\nretry_files_enabled = False\\r\\ngather_subset = network\\r\\n```\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n##### SUMMARY\\r\\nasa_config does not detect some failures returned by the ASA. Ansible task completes OK even though the intended operation has failed on the device.\\r\\nThe underlying problem is that the ASA does not always return the string `error:` in it's error messages.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nOn the ASA CLI attempting to delete an object-group that is referenced in an access-list will result in an error e.g.\\r\\n```\\r\\n# show run access-list GDTEST\\r\\naccess-list GDTEST extended permit icmp object-group NG_TESTNET_GROUP_A any\\r\\n\\r\\naklads-lab-fw1(config)# no object-group network NG_TESTNET_GROUP_A\\r\\nRemoving object-group (NG_TESTNET_GROUP_A) not allowed, it is being used.\\r\\naklads-lab-fw1(config)#\\r\\n```\\r\\nExecuting the above operation in Ansible does not fail as there is the string `error:` is not returned\\r\\n```\\r\\n  tasks:\\r\\n  - asa_config:\\r\\n      lines:\\r\\n        - no object-group network NG_TESTNET_GROUP_A\\r\\n      provider: \\\"{{ provider }}\\\"\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe task should fail with something like fatal: failed: true\\r\\n##### ACTUAL RESULTS\\r\\nThe Ansible task completes without error while the underlying ASA CLI operation fails\\r\\n```\\r\\nchanged: [aklads-lab-fw1] => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"after\\\": null,\\r\\n            \\\"auth_pass\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n            \\\"authorize\\\": true,\\r\\n            \\\"backup\\\": false,\\r\\n            \\\"before\\\": null,\\r\\n            \\\"config\\\": null,\\r\\n            \\\"context\\\": null,\\r\\n            \\\"defaults\\\": false,\\r\\n            \\\"host\\\": \\\"10.204.10.90\\\",\\r\\n            \\\"lines\\\": [\\r\\n                \\\"no object-group network NG_TESTNET_GROUP_A\\\"\\r\\n            ],\\r\\n            \\\"match\\\": \\\"line\\\",\\r\\n            \\\"parents\\\": null,\\r\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n            \\\"passwords\\\": false,\\r\\n            \\\"port\\\": null,\\r\\n            \\\"provider\\\": {\\r\\n                \\\"authorize\\\": true,\\r\\n                \\\"host\\\": \\\"10.204.10.90\\\",\\r\\n                \\\"username\\\": \\\"admin\\\"\\r\\n            },\\r\\n            \\\"replace\\\": \\\"line\\\",\\r\\n            \\\"save\\\": false,\\r\\n            \\\"src\\\": null,\\r\\n            \\\"ssh_keyfile\\\": null,\\r\\n            \\\"timeout\\\": 10,\\r\\n            \\\"transport\\\": null,\\r\\n            \\\"username\\\": \\\"admin\\\"\\r\\n        }\\r\\n    },\\r\\n    \\\"updates\\\": [\\r\\n        \\\"no object-group network NG_TESTNET_GROUP_A\\\"\\r\\n    ]\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\naklads-lab-fw1             : ok=1    changed=1    unreachable=0    failed=0\\r\\n```\\r\\n\", \n    \"component_name\": \"network   asa_config\", \n    \"component_raw\": \"Network module asa_config\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18947\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/asa/asa_config.py\", \n    \"summary\": \"asa_config does not detect some failures returned by the ASA. Ansible task completes OK even though the intended operation has failed on the device.\\n\\nThe underlying problem is that the ASA does not always return the string `error:` in it's error messages.\", \n    \"title\": \"asa_config erroneously completes as OK while the underlying ASA operation has failed\"\n  }, \n  \"18950\": {\n    \"ansible_version\": \"2.1.2.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nscript\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n2.1.2.0\\r\\n```\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n[ssh_connection]\\r\\nssh_args = -C -o ControlMaster=auto -o ControlPersist=60s\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nubuntu 16.04\\r\\n\\r\\n##### SUMMARY\\r\\nafter execute ansible console, the result shows: failed=True, rc=1.\\r\\nbut i found stderr=u'', so i cannot find any message about error.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n$ ansible nnops -m script -a './remote.sh'\\r\\n\\r\\nremote.sh\\r\\n```\\r\\ncd /bkv/bkv1.1.1\\r\\n./bk.sh status nginx\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nnnops | FAILED! => {\\r\\n    \\\"changed\\\": true, \\r\\n    \\\"failed\\\": false, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"_raw_params\\\": \\\"./remote.sh\\\"\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"script\\\"\\r\\n    }, \\r\\n    \\\"rc\\\": 0, \\r\\n......\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nUsing /home/kawa/iga/workspace/py-yard/projects/ansible-projects/ansible-api-trainning/ansible.cfg as config file\\r\\nLoaded callback minimal of type stdout, v2.0\\r\\n<123.207.244.43> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<123.207.244.43> SSH: EXEC sshpass -d12 ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o Port=22 -o User=root -o ConnectTimeout=10 -o ControlPath=/home/kawa/.ansible/cp/ansible-ssh-%h-%p-%r 123.207.244.43 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1481171106.55-255609997434627 `\\\" && echo ansible-tmp-1481171106.55-255609997434627=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1481171106.55-255609997434627 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<123.207.244.43> PUT /home/kawa/iga/workspace/py-yard/projects/ansible-projects/ansible-api-trainning/remote.sh TO /root/.ansible/tmp/ansible-tmp-1481171106.55-255609997434627/remote.sh\\r\\n<123.207.244.43> SSH: EXEC sshpass -d12 sftp -o BatchMode=no -b - -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o Port=22 -o User=root -o ConnectTimeout=10 -o ControlPath=/home/kawa/.ansible/cp/ansible-ssh-%h-%p-%r '[123.207.244.43]'\\r\\n<123.207.244.43> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<123.207.244.43> SSH: EXEC sshpass -d12 ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o Port=22 -o User=root -o ConnectTimeout=10 -o ControlPath=/home/kawa/.ansible/cp/ansible-ssh-%h-%p-%r 123.207.244.43 '/bin/sh -c '\\\"'\\\"'chmod u+x /root/.ansible/tmp/ansible-tmp-1481171106.55-255609997434627/ /root/.ansible/tmp/ansible-tmp-1481171106.55-255609997434627/remote.sh && sleep 0'\\\"'\\\"''\\r\\n<123.207.244.43> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<123.207.244.43> SSH: EXEC sshpass -d12 ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o Port=22 -o User=root -o ConnectTimeout=10 -o ControlPath=/home/kawa/.ansible/cp/ansible-ssh-%h-%p-%r -tt 123.207.244.43 '/bin/sh -c '\\\"'\\\"'LANG=zh_CN.UTF-8 LC_ALL=zh_CN.UTF-8 LC_MESSAGES=zh_CN.UTF-8 /root/.ansible/tmp/ansible-tmp-1481171106.55-255609997434627/remote.sh  && sleep 0'\\\"'\\\"''\\r\\n<123.207.244.43> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<123.207.244.43> SSH: EXEC sshpass -d12 ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o Port=22 -o User=root -o ConnectTimeout=10 -o ControlPath=/home/kawa/.ansible/cp/ansible-ssh-%h-%p-%r 123.207.244.43 '/bin/sh -c '\\\"'\\\"'rm -f -r /root/.ansible/tmp/ansible-tmp-1481171106.55-255609997434627/ > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\nnnops | FAILED! => {\\r\\n    \\\"changed\\\": true, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"_raw_params\\\": \\\"./remote.sh\\\"\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"script\\\"\\r\\n    }, \\r\\n    \\\"rc\\\": 1, \\r\\n    \\\"stderr\\\": \\\"\\\", \\r\\n    \\\"stdout\\\": \\\"Current Version: 1.1.1 \\\\r\\\\nMonit 5.19.0 uptime: 9d 2h 14m\\\\r\\\\n\\\\r\\\\n\\\\u001b[1;36mProcess 'nginx'\\\\u001b[0m\\\\r\\\\n  status                       \\\\u001b[0;92mRunning\\\\u001b[0m\\\\r\\\\n  monitoring status            Monitored\\\\r\\\\n  monitoring mode              active\\\\r\\\\n  on reboot                    start\\\\r\\\\n  pid                          \\\\u001b[0;39m4393\\\\u001b[0m\\\\r\\\\n  parent pid                   \\\\u001b[0;39m1\\\\u001b[0m\\\\r\\\\n  uid                          \\\\u001b[0;39m0\\\\u001b[0m\\\\r\\\\n  effective uid                \\\\u001b[0;39m0\\\\u001b[0m\\\\r\\\\n  gid                          \\\\u001b[0;39m0\\\\u001b[0m\\\\r\\\\n  uptime                       \\\\u001b[0;39m9d 2h 11m\\\\u001b[0m\\\\r\\\\n  threads                      \\\\u001b[0;39m1\\\\u001b[0m\\\\r\\\\n  children                     \\\\u001b[0;39m1\\\\u001b[0m\\\\r\\\\n  cpu                          \\\\u001b[0;39m0.0%\\\\u001b[0m\\\\r\\\\n  cpu total                    \\\\u001b[0;39m0.0%\\\\u001b[0m\\\\r\\\\n  memory                       \\\\u001b[0;39m0.0% [488 kB]\\\\u001b[0m\\\\r\\\\n  memory total                 \\\\u001b[0;39m0.2% [2.2 MB]\\\\u001b[0m\\\\r\\\\n  data collected               \\\\u001b[0;39mThu, 08 Dec 2016 12:25:04\\\\u001b[0m\\\\r\\\\n\\\\r\\\\n\\\", \\r\\n    \\\"stdout_lines\\\": [\\r\\n        \\\"Current Version: 1.1.1 \\\", \\r\\n        \\\"Monit 5.19.0 uptime: 9d 2h 14m\\\", \\r\\n        \\\"\\\", \\r\\n        \\\"\\\\u001b[1;36mProcess 'nginx'\\\\u001b[0m\\\", \\r\\n        \\\"  status                       \\\\u001b[0;92mRunning\\\\u001b[0m\\\", \\r\\n        \\\"  monitoring status            Monitored\\\", \\r\\n        \\\"  monitoring mode              active\\\", \\r\\n        \\\"  on reboot                    start\\\", \\r\\n        \\\"  pid                          \\\\u001b[0;39m4393\\\\u001b[0m\\\", \\r\\n        \\\"  parent pid                   \\\\u001b[0;39m1\\\\u001b[0m\\\", \\r\\n        \\\"  uid                          \\\\u001b[0;39m0\\\\u001b[0m\\\", \\r\\n        \\\"  effective uid                \\\\u001b[0;39m0\\\\u001b[0m\\\", \\r\\n        \\\"  gid                          \\\\u001b[0;39m0\\\\u001b[0m\\\", \\r\\n        \\\"  uptime                       \\\\u001b[0;39m9d 2h 11m\\\\u001b[0m\\\", \\r\\n        \\\"  threads                      \\\\u001b[0;39m1\\\\u001b[0m\\\", \\r\\n        \\\"  children                     \\\\u001b[0;39m1\\\\u001b[0m\\\", \\r\\n        \\\"  cpu                          \\\\u001b[0;39m0.0%\\\\u001b[0m\\\", \\r\\n        \\\"  cpu total                    \\\\u001b[0;39m0.0%\\\\u001b[0m\\\", \\r\\n        \\\"  memory                       \\\\u001b[0;39m0.0% [488 kB]\\\\u001b[0m\\\", \\r\\n        \\\"  memory total                 \\\\u001b[0;39m0.2% [2.2 MB]\\\\u001b[0m\\\", \\r\\n        \\\"  data collected               \\\\u001b[0;39mThu, 08 Dec 2016 12:25:04\\\\u001b[0m\\\", \\r\\n        \\\"\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"script\", \n    \"component_raw\": \"script\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18950\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/commands/script.py\", \n    \"summary\": \"after execute ansible console, the result shows: failed=True, rc=1.\\n\\nbut i found stderr=u'', so i cannot find any message about error.\", \n    \"title\": \"Ansible return rc=1, failed=True, but stderr=u'', how do i do to find the error message?\"\n  }, \n  \"18952\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /Users/mbl/workspace/betterfelt/devops/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @mblarsen on October 28, 2016 7:37_\\n\\n##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nfile\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.2.0\\n  config file = /Users/mbl/workspace/betterfelt/devops/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nLikely not relevant but: \\n\\n```\\n[defaults]\\nroles_path = ./roles\\n\\n[ssh_connection]\\ncontrol_path = %(directory)s/%%h-%%r\\npipelining = true\\n```\\n##### OS / ENVIRONMENT\\n\\nRunning Ansible on macOS Sierra setting up Ubuntu 14.04.5 LTS\\n##### SUMMARY\\n\\nWhen setting directory mode using a variable a value such as `2755` (that is with set gid flag) the mode turns into this:\\n\\n```\\nd-ws----wt\\n```\\n\\nIf setting `mode: 2755` directly it works as expected. \\n\\nNote: A value such as `0755` _does_ work using variables.\\n##### STEPS TO REPRODUCE\\n\\nA playbook with file module will work.\\n\\n```\\n  vars:\\n    diretory_mode: 2755\\n\\n  tasks:\\n    - name: create backend root\\n      file:\\n        name={{ server_root }}/backend/\\n        state=directory\\n        owner={{ webuser }}\\n        group={{ webgroup }}\\n        mode={{ directory_mode }}\\n```\\n##### EXPECTED RESULTS\\n\\nDiretory mode:\\n\\n```\\ndrwxr-sr-x\\n```\\n\\n.. and the set gid flag set as well.\\n##### ACTUAL RESULTS\\n\\nDiretory mode:\\n\\n```\\nd-ws----wt\\n```\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5424_\", \n    \"component_name\": \"file\", \n    \"component_raw\": \"file\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18952\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/file.py\", \n    \"summary\": \"When setting directory mode using a variable a value such as `2755` (that is with set gid flag) the mode turns into this:\\n\\n```\\nd-ws----wt\\n```\\n\\nIf setting `mode: 2755` directly it works as expected. \\n\\nNote: A value such as `0755` _does_ work using variables.\", \n    \"title\": \"file module directory mode with set-git flag (e.g 2755) in variable garbled\"\n  }, \n  \"18953\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Feature Pull Request\\r\\n##### COMPONENT NAME\\r\\n\\r\\nkubernetes\\r\\n\\r\\n``` yaml\\r\\n- name: Create kubernetes cloud logging Daemon Set (logstash)             \\r\\n  kubernetes:                                                             \\r\\n    api_endpoint: 127.0.0.1:8080                                          \\r\\n    insecure: yes                                                         \\r\\n    inline_data: \\\"{{ lookup('template', 'logstash-daemonset.yaml.j2' ) }}\\\"\\r\\n```\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.1.1.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n##### SUMMARY\\r\\n\\r\\nAdd ability to operate on kubernetes resources from `apiVersion: extensions/v1beta1`\\r\\n\\r\\n<!--- Paste verbatim command output below, e.g. before and after your change -->\\r\\n\\r\\nBefore\\r\\n\\r\\n```\\r\\nTASK [kube-master/cloud-logging : Create kubernetes cloud logging Daemon Set (logstash)] ***\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"\\\", \\\"module_stdout\\\": \\\"Traceback (most recent call last):\\\\r\\\\n  File \\\\\\\"/tmp/ansible_x0OjsW/ansible_module_kubernetes.py\\\\\\\", line 399, in <module>\\\\r\\\\n    main()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_x0OjsW/ansible_module_kubernetes.py\\\\\\\", line 373, in main\\\\r\\\\n    module.fail_json(\\\\\\\"invalid resource kind specified in the data: '%s'\\\\\\\" % kind)\\\\r\\\\nTypeError: fail_json() takes exactly 1 argument (2 given)\\\\r\\\\n\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\", \\\"parsed\\\": false}\\r\\n```\\r\\n\\r\\nAfter\\r\\n\\r\\n```\\r\\nTASK [kube-master/cloud-logging : Create kubernetes cloud logging Daemon Set (logstash)] ***\\r\\nok: [localhost]\\r\\n```\\r\\n\", \n    \"component_name\": \"kubernetes\", \n    \"component_raw\": \"kubernetes\\n``` yaml\\n- name: Create kubernetes cloud logging Daemon Set (logstash)\\nkubernetes:\\napi_endpoint: 127.0.0.1:8080\\ninsecure: yes\\ninline_data: \\\"{{ lookup('template', 'logstash-daemonset.yaml.j2' ) }}\\\"\\n```\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18953\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/clustering/kubernetes.py\", \n    \"summary\": \"Add ability to operate on kubernetes resources from `apiVersion: extensions/v1beta1`\\n\\n\\n\\n\\n\\n\\n\\nBefore\\n\\n\\n\\n```\\n\\nTASK [kube-master/cloud-logging : Create kubernetes cloud logging Daemon Set (logstash)] ***\\n\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"\\\", \\\"module_stdout\\\": \\\"Traceback (most recent call last):\\\\r\\\\n  File \\\\\\\"/tmp/ansible_x0OjsW/ansible_module_kubernetes.py\\\\\\\", line 399, in <module>\\\\r\\\\n    main()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_x0OjsW/ansible_module_kubernetes.py\\\\\\\", line 373, in main\\\\r\\\\n    module.fail_json(\\\\\\\"invalid resource kind specified in the data: '%s'\\\\\\\" % kind)\\\\r\\\\nTypeError: fail_json() takes exactly 1 argument (2 given)\\\\r\\\\n\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\", \\\"parsed\\\": false}\\n\\n```\\n\\n\\n\\nAfter\\n\\n\\n\\n```\\n\\nTASK [kube-master/cloud-logging : Create kubernetes cloud logging Daemon Set (logstash)] ***\\n\\nok: [localhost]\\n\\n```\", \n    \"title\": \"add kubernetes beta resources to clustering/kubernetes module\"\n  }, \n  \"18954\": {\n    \"ansible_version\": \"ansible 2.1.2.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Bug Report / Feature Idea\\r\\n##### COMPONENT NAME\\r\\n\\r\\nauthorized_keys\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.1.2.0\\r\\n```\\r\\n##### SUMMARY\\r\\n\\r\\nauthorized_keys can't add a key in 2 different modes, trying to add both:\\r\\n\\r\\nssh-ed25519 AAAAC3NzaC1lZDI1... user@box\\r\\ncert-authority ssh-ed25519 AAAAC3NzaC1lZDI1... user@box\\r\\n\\r\\nwill overwrite the first with the latest...\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```\\r\\n# With the same key with and without cert-authority:\\r\\n- name: \\\"Add authorized_keys to {{ user }}\\\"\\r\\n  authorized_key:\\r\\n    user: \\\"{{ user }}\\\"\\r\\n    key: \\\"{{ lookup('file', item) }}\\\"\\r\\n  with_fileglob:\\r\\n    - authorized_keys/*\\r\\n```\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nBoth keys should end up in the authorized_keys\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nOnly the last one is present.\\r\\n\\r\\n\\r\\n_Copied from original issue: ansible/ansible-modules-core#5401_\", \n    \"component_name\": \"authorized_keys\", \n    \"component_raw\": \"authorized_keys\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18954\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"authorized_keys can't add a key in 2 different modes, trying to add both:\\n\\n\\n\\nssh-ed25519 AAAAC3NzaC1lZDI1... user@box\\n\\ncert-authority ssh-ed25519 AAAAC3NzaC1lZDI1... user@box\\n\\n\\n\\nwill overwrite the first with the latest...\", \n    \"title\": \"authorized_keys can't handle key in [normal + cert-authority] mode together\"\n  }, \n  \"18956\": {\n    \"ansible_version\": \"ansible 2.3.0 (opkg 7a860e59a1) last updated 2016/12/07 192749 (GMT +200)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`opkg`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (opkg 7a860e59a1) last updated 2016/12/07 19:27:49 (GMT +200)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n* implement check_mode for opkg module\\r\\n* implement installing single ipk files, this works from either a local file or an URL, inspired by the \\\"deb\\\" param of the apt module\\r\\n\", \n    \"component_name\": \"opkg\", \n    \"component_raw\": \"`opkg`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18956\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/opkg.py\", \n    \"summary\": \"* implement check_mode for opkg module\\n\\n* implement installing single ipk files, this works from either a local file or an URL, inspired by the \\\"deb\\\" param of the apt module\", \n    \"title\": \"check_mode and single file install for the opkg module\"\n  }, \n  \"18960\": {\n    \"ansible_version\": \"ansible 2.2.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @ElectronicRU on September 9, 2016 13:54_\\n\\n##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nModule: source_control/git\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nIf the only thing that interests us is if there are any changed files in the repository, we can circumvent\\nparsing `git status` output.\\nInstead of capturing, splitting and regexp filtering unknown files, it's much easier to just tell git to ignore them.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core/pull/4763_\", \n    \"component_name\": \"source_control/git\", \n    \"component_raw\": \"Module: source_control/git\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18960\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/source_control/git.py\", \n    \"summary\": \"If the only thing that interests us is if there are any changed files in the repository, we can circumvent\\nparsing `git status` output.\\nInstead of capturing, splitting and regexp filtering unknown files, it's much easier to just tell git to ignore them.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core/pull/4763_\", \n    \"title\": \"Better filtering of unknown files.\"\n  }, \n  \"18961\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.1.2.0\\nconfig file = /home/kb/opt/infrastructure/playbooks/client/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/task/feature -->\\r\\n\\r\\ndelegate_to\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.1.2.0\\r\\n  config file = /home/kb/opt/infrastructure/playbooks/client/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nAnsible playbook was running from the following host\\r\\n```\\r\\n$ cat /etc/issue\\r\\nUbuntu 16.04.1 LTS \\\\n \\\\l\\r\\n\\r\\n$ uname -a\\r\\nLinux skyfall 4.4.0-53-generic #74-Ubuntu SMP Fri Dec 2 15:59:10 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux\\r\\n```\\r\\nAnsible is managing the following host:\\r\\n```\\r\\n[~]:cat /etc/issue\\r\\n\\r\\nWelcome to SUSE Linux Enterprise Server 12 SP1  (x86_64) - Kernel \\\\r (\\\\l).\\r\\n\\r\\n[~]:uname -a\\r\\nLinux 3.12.62-60.62-default #1 SMP Thu Aug 4 09:06:08 UTC 2016 (b0e5a26) x86_64 x86_64 x86_64 GNU/Linux\\r\\n\\r\\n```\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n'delegate_to' doesn't use proper vars of inventory host when 'with_items' with 'loop_control' and 'loop_var' are specified.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n- add_host:\\r\\n    hostname: \\\"{{ item.name }}\\\"\\r\\n    groups: \\\"sample_group\\\"\\r\\n    ansible_ssh_host: \\\"{{ item.host }}\\\"\\r\\n    ansible_ssh_port: \\\"{{ item.port }}\\\"\\r\\n    ansible_ssh_user: \\\"{{ username }}\\\"\\r\\n    ansible_ssh_pass: \\\"{{ password }}\\\"\\r\\n    ansible_become: True\\r\\n    ansible_become_user: root\\r\\n    ansible_become_pass: \\\"{{ password }}\\\"\\r\\n  with_items:\\r\\n  - \\\"{{ delegated_hosts }}\\\"\\r\\n\\r\\n- shell: whoami; pwd\\r\\n  delegate_to: \\\"{{ delegated_item.name }}\\\"\\r\\n  with_items:\\r\\n  - \\\"{{ delegated_hosts }}\\\"\\r\\n  loop_control:\\r\\n    loop_var: delegated_item\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n```\\r\\n<host-01> ESTABLISH SSH CONNECTION FOR USER: username\\r\\n<host-01> SSH: EXEC sshpass -d12 ssh -C -q -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=40001 -o User=username -o ConnectTimeout=10 -o ControlPath=/home/kb/.ansible/cp/ansible-ssh-%h-%p-%r host-01 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1481185797.44-119810802831560 `\\\" && echo ansible-tmp-1481185797.44-119810802831560=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1481185797.44-119810802831560 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<host-01> PUT /tmp/tmpY5dkzx TO /home/username/.ansible/tmp/ansible-tmp-1481185797.44-119810802831560/command\\r\\n<host-01> SSH: EXEC sshpass -d12 scp -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=40001 -o User=username -o ConnectTimeout=10 -o ControlPath=/home/kb/.ansible/cp/ansible-ssh-%h-%p-%r /tmp/tmpY5dkzx '[host-01]:/home/username/.ansible/tmp/ansible-tmp-1481185797.44-119810802831560/command'\\r\\n<host-01> ESTABLISH SSH CONNECTION FOR USER: username\\r\\n<host-01> SSH: EXEC sshpass -d12 ssh -C -q -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=40001 -o User=username -o ConnectTimeout=10 -o ControlPath=/home/kb/.ansible/cp/ansible-ssh-%h-%p-%r host-01 '/bin/sh -c '\\\"'\\\"'chmod u+x /home/username/.ansible/tmp/ansible-tmp-1481185797.44-119810802831560/ /home/username/.ansible/tmp/ansible-tmp-1481185797.44-119810802831560/command && sleep 0'\\\"'\\\"''\\r\\n<host-01> ESTABLISH SSH CONNECTION FOR USER: username\\r\\n<host-01> SSH: EXEC sshpass -d12 ssh -C -q -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o Port=40001 -o User=username -o ConnectTimeout=10 -o ControlPath=/home/kb/.ansible/cp/ansible-ssh-%h-%p-%r -tt host-01 '/bin/sh -c '\\\"'\\\"'sudo -H -S  -p \\\"[sudo via ansible, key=zazsdpqjybdwpvclmnnfwdnoozkfxifl] password: \\\" -u root /bin/sh -c '\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'echo BECOME-SUCCESS-zazsdpqjybdwpvclmnnfwdnoozkfxifl; LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /home/username/.ansible/tmp/ansible-tmp-1481185797.44-119810802831560/command; rm -rf \\\"/home/username/.ansible/tmp/ansible-tmp-1481185797.44-119810802831560/\\\" > /dev/null 2>&1'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"' && sleep 0'\\\"'\\\"''\\r\\nchanged: [localhost -> None] => (item=host-01) => {\\\"changed\\\": true, \\\"cmd\\\": \\\"whoami; pwd\\\", \\\"delta\\\": \\\"0:00:00.005780\\\", \\\"end\\\": \\\"2016-12-08 00:30:02.533354\\\", \\\"invocation\\\": {\\\"module_args\\\": {\\\"_raw_params\\\": \\\"whoami; pwd\\\", \\\"_uses_shell\\\": true, \\\"chdir\\\": null, \\\"creates\\\": null, \\\"executable\\\": null, \\\"removes\\\": null, \\\"warn\\\": true}, \\\"module_name\\\": \\\"command\\\"}, \\\"item\\\": \\\"host-01\\\", \\\"rc\\\": 0, \\\"start\\\": \\\"2016-12-08 00:30:02.527574\\\", \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"root\\\\n/home/username\\\", \\\"stdout_lines\\\": [\\\"root\\\", \\\"/home/username\\\"], \\\"warnings\\\": []}\\r\\n\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n<host-01> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<host-01> SSH: EXEC ssh -C -q -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/kb/.ansible/cp/ansible-ssh-%h-%p-%r host-01 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1481185181.57-270639976841678 `\\\" && echo ansible-tmp-1481185181.57-270639976841678=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1481185181.57-270639976841678 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\nfailed: [localhost] (item=None) => {\\\"delegated_item\\\": \\\"host-01\\\", \\\"msg\\\": \\\"Failed to connect to the host via ssh.\\\", \\\"unreachable\\\": true}\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"delegate_to\", \n    \"component_raw\": \"delegate_to\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18961\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"'delegate_to' doesn't use proper vars of inventory host when 'with_items' with 'loop_control' and 'loop_var' are specified.\", \n    \"title\": \"Improper behaviour of 'delegate_to' option when 'with_items' with 'loop_control' and 'loop_var' are specified.\"\n  }, \n  \"18965\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/vagrant/source/GHE/ansible-playground/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @jhart1685 on November 3, 2016 15:54_\\n\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nservice module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/vagrant/source/GHE/ansible-playground/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nUbuntu 14.04 (but probably many others)\\r\\n\\r\\n##### SUMMARY\\r\\nOn Ansible 2.1 , async could be specified on tasks using the `service` module. This was extremely useful to avoid playbooks from hanging if a service start did not return in a reasonable amount of time.\\r\\nAt Ansible 2.2, this fails with `async mode is not supported with the service module`\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nCreate a dummy service that is guaranteed to take a certain amount of time to start.\\r\\nFor this reproduce, create file `/etc/init/testservice.conf` , as root, with the following contents:\\r\\n```\\r\\npre-start script\\r\\n  #!/bin/bash\\r\\n  i=0\\r\\n  while [ \\\"$i\\\" -lt 10 ]\\r\\n  do\\r\\n    echo \\\"Attempt $i\\\"\\r\\n    sleep 2\\r\\n    i=$((i+1))\\r\\n  done\\r\\n  exit 0\\r\\nend script\\r\\n\\r\\nscript\\r\\n  echo \\\"Started\\\"\\r\\nend script\\r\\n```\\r\\nThis service is guaranteed to take 20 seconds to start.\\r\\n\\r\\nRun the following playbook against localhost:\\r\\n```\\r\\n\\n---\\r\\n- hosts: all\\r\\n  become: yes\\r\\n  become_user: root\\r\\n  become_method: sudo\\r\\n  tasks:\\r\\n  - name: upstart restart\\r\\n    service: \\\"name=testservice state=restarted sleep=1\\\"\\r\\n    async: 10\\r\\n    poll: 5\\r\\n    ignore_errors: yes\\r\\n    register: restart_status\\r\\n  - name: fail deploy if upstart restart failed\\r\\n    fail: msg=\\\"The upstart restart step failed.\\\"\\r\\n    when: restart_status | failed\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nAt Ansible 2.1.2 restart timed out : `async task did not complete within the requested time`\\r\\n\\r\\n```\\r\\nPLAYBOOK: testservices.yml *****************************************************\\r\\n1 plays in testservices.yml\\r\\n\\r\\nPLAY [all] *********************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: vagrant\\r\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1478188242.21-246358132149554 `\\\" && echo ansible-tmp-1478188242.21-246358132149554=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1478188242.21-246358132149554 `\\\" ) && sleep 0'\\r\\n<127.0.0.1> PUT /tmp/tmpUugRdk TO /home/vagrant/.ansible/tmp/ansible-tmp-1478188242.21-246358132149554/setup\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /home/vagrant/.ansible/tmp/ansible-tmp-1478188242.21-246358132149554/ /home/vagrant/.ansible/tmp/ansible-tmp-1478188242.21-246358132149554/setup && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c 'sudo -H -S -n -u root /bin/sh -c '\\\"'\\\"'echo BECOME-SUCCESS-gpflpphtwddftzrfkoriswnuymaymkrl; LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1478188242.21-246358132149554/setup; rm -rf \\\"/home/vagrant/.ansible/tmp/ansible-tmp-1478188242.21-246358132149554/\\\" > /dev/null 2>&1'\\\"'\\\"' && sleep 0'\\r\\nok: [127.0.0.1]\\r\\n\\r\\nTASK [upstart restart] *********************************************************\\r\\ntask path: /home/vagrant/source/GHE/ansible-playground/testservices.yml:7\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: vagrant\\r\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1478188244.41-125126621993988 `\\\" && echo ansible-tmp-1478188244.41-125126621993988=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1478188244.41-125126621993988 `\\\" ) && sleep 0'\\r\\n<127.0.0.1> PUT /tmp/tmpUByg0S TO /home/vagrant/.ansible/tmp/ansible-tmp-1478188244.41-125126621993988/service\\r\\n<127.0.0.1> PUT /tmp/tmpw0Z12E TO /home/vagrant/.ansible/tmp/ansible-tmp-1478188244.41-125126621993988/async_wrapper\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /home/vagrant/.ansible/tmp/ansible-tmp-1478188244.41-125126621993988/ /home/vagrant/.ansible/tmp/ansible-tmp-1478188244.41-125126621993988/service /home/vagrant/.ansible/tmp/ansible-tmp-1478188244.41-125126621993988/async_wrapper && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c 'sudo -H -S -n -u root /bin/sh -c '\\\"'\\\"'echo BECOME-SUCCESS-yxjgpmoqcwfowpsyvbxridnwklvypoha; LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /home/vagrant/.ansible/tmp/ansible-tmp-1478188244.41-125126621993988/async_wrapper 164650715721 10 /home/vagrant/.ansible/tmp/ansible-tmp-1478188244.41-125126621993988/service'\\\"'\\\"' && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c 'rm -f -r /home/vagrant/.ansible/tmp/ansible-tmp-1478188244.41-125126621993988/ > /dev/null 2>&1 && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1478188250.68-192180370745608 `\\\" && echo ansible-tmp-1478188250.68-192180370745608=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1478188250.68-192180370745608 `\\\" ) && sleep 0'\\r\\n<127.0.0.1> PUT /tmp/tmprydg9E TO /home/vagrant/.ansible/tmp/ansible-tmp-1478188250.68-192180370745608/async_status\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /home/vagrant/.ansible/tmp/ansible-tmp-1478188250.68-192180370745608/ /home/vagrant/.ansible/tmp/ansible-tmp-1478188250.68-192180370745608/async_status && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c 'sudo -H -S -n -u root /bin/sh -c '\\\"'\\\"'echo BECOME-SUCCESS-gepyxugizyhafzmhsvczcvexlulqhfgw; LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1478188250.68-192180370745608/async_status; rm -rf \\\"/home/vagrant/.ansible/tmp/ansible-tmp-1478188250.68-192180370745608/\\\" > /dev/null 2>&1'\\\"'\\\"' && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1478188255.79-182646281999246 `\\\" && echo ansible-tmp-1478188255.79-182646281999246=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1478188255.79-182646281999246 `\\\" ) && sleep 0'\\r\\n<127.0.0.1> PUT /tmp/tmpiswcWa TO /home/vagrant/.ansible/tmp/ansible-tmp-1478188255.79-182646281999246/async_status\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /home/vagrant/.ansible/tmp/ansible-tmp-1478188255.79-182646281999246/ /home/vagrant/.ansible/tmp/ansible-tmp-1478188255.79-182646281999246/async_status && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c 'sudo -H -S -n -u root /bin/sh -c '\\\"'\\\"'echo BECOME-SUCCESS-ynrcmnmeylrhanlnoauwffgvwlzuwbgq; LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1478188255.79-182646281999246/async_status; rm -rf \\\"/home/vagrant/.ansible/tmp/ansible-tmp-1478188255.79-182646281999246/\\\" > /dev/null 2>&1'\\\"'\\\"' && sleep 0'\\r\\nfatal: [127.0.0.1]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"async task did not complete within the requested time\\\"}\\r\\n...ignoring\\r\\n\\r\\nTASK [fail deploy if upstart restart failed] ***********************************\\r\\ntask path: /home/vagrant/source/GHE/ansible-playground/testservices.yml:13\\r\\nfatal: [127.0.0.1]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"invocation\\\": {\\\"module_args\\\": {\\\"msg\\\": \\\"The upstart restart step failed.\\\"}, \\\"module_name\\\": \\\"fail\\\"}, \\\"msg\\\": \\\"The upstart restart step failed.\\\"}\\r\\n\\r\\nNO MORE HOSTS LEFT *************************************************************\\r\\n\\tto retry, use: --limit @/home/vagrant/source/GHE/ansible-playground/testservices.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\n127.0.0.1                  : ok=2    changed=0    unreachable=0    failed=1 \\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nAt Ansible 2.2 :  `async mode is not supported with the service module`\\r\\n\\r\\n```\\r\\nPLAYBOOK: testservices.yml *****************************************************\\r\\n1 plays in testservices.yml\\r\\n\\r\\nPLAY [all] *********************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nUsing module file /usr/local/lib/python2.7/dist-packages/ansible/modules/core/system/setup.py\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: vagrant\\r\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1478188095.18-113784857458696 `\\\" && echo ansible-tmp-1478188095.18-113784857458696=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1478188095.18-113784857458696 `\\\" ) && sleep 0'\\r\\n<127.0.0.1> PUT /tmp/tmphWWy6b TO /home/vagrant/.ansible/tmp/ansible-tmp-1478188095.18-113784857458696/setup.py\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /home/vagrant/.ansible/tmp/ansible-tmp-1478188095.18-113784857458696/ /home/vagrant/.ansible/tmp/ansible-tmp-1478188095.18-113784857458696/setup.py && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c 'sudo -H -S -n -u root /bin/sh -c '\\\"'\\\"'echo BECOME-SUCCESS-bulczgwqvdnbjvnyovwlypoyymqngdvk; /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1478188095.18-113784857458696/setup.py; rm -rf \\\"/home/vagrant/.ansible/tmp/ansible-tmp-1478188095.18-113784857458696/\\\" > /dev/null 2>&1'\\\"'\\\"' && sleep 0'\\r\\nok: [127.0.0.1]\\r\\n\\r\\nTASK [upstart restart] *********************************************************\\r\\ntask path: /home/vagrant/source/GHE/ansible-playground/testservices.yml:7\\r\\nfatal: [127.0.0.1]: FAILED! => {\\r\\n    \\\"failed\\\": true, \\r\\n    \\\"msg\\\": \\\"async mode is not supported with the service module\\\"\\r\\n}\\r\\n...ignoring\\r\\n\\r\\nTASK [fail deploy if upstart restart failed] ***********************************\\r\\ntask path: /home/vagrant/source/GHE/ansible-playground/testservices.yml:13\\r\\nfatal: [127.0.0.1]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"msg\\\": \\\"The upstart restart step failed.\\\"\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"fail\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"The upstart restart step failed.\\\"\\r\\n}\\r\\n\\tto retry, use: --limit @/home/vagrant/source/GHE/ansible-playground/testservices.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\n127.0.0.1                  : ok=2    changed=0    unreachable=0    failed=1\\r\\n```\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5472_\", \n    \"component_name\": \"service\", \n    \"component_raw\": \"service module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18965\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/service.py\", \n    \"summary\": \"On Ansible 2.1 , async could be specified on tasks using the `service` module. This was extremely useful to avoid playbooks from hanging if a service start did not return in a reasonable amount of time.\\n\\nAt Ansible 2.2, this fails with `async mode is not supported with the service module`\", \n    \"title\": \"Service module no longer works with async \"\n  }, \n  \"18966\": {\n    \"ansible_version\": \"ansible --version\\n2.3.0 (commit 20161123.089ffae)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Bug Report\\r\\n##### COMPONENT NAME\\r\\n\\r\\nios_command\\r\\nbut the issue might be caused by another module such as \\\"include_role\\\" for instance.\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible --version\\r\\n2.3.0 (commit 20161123.089ffae)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n##### CONFIGURATION\\r\\n\\r\\ninventory   = ./hosts\\r\\ngathering = explicit\\r\\nroles_path = /home/actionmystique/Program-Files/Ubuntu/Ansible/git-Ansible/Roles/roles\\r\\nprivate_role_vars = yes\\r\\nlog_path = /var/log/ansible.log\\r\\nfact_caching = redis\\r\\nfact_caching_timeout = 86400\\r\\nretry_files_enabled = False\\r\\n##### OS / ENVIRONMENT\\r\\n- **Local host**: Ubuntu 16.10 4.8\\r\\n- **Target nodes**: IOSv_L2 15.2(4.0.55)E\\r\\n##### SUMMARY\\r\\n\\r\\nThis issue happens only when using a '|' pipe within a show command ('which is legit on Cisco CLI).\\r\\nNo such weird stdout happens when the same command is used directly on the device CLI.\\r\\nAlso, the results[].cli_command field is always present when the show command does not include a pipe.\\r\\nWe can verify with results[].invocation.module_args.commands[0 that the right show command is sent to the device.\\r\\n##### STEPS TO REPRODUCE\\r\\nroles/ios_pull_tables/tasks/main.yml\\r\\n```\\r\\n...\\r\\n- name: Including the right module\\r\\n  include: \\\"PACL_Table.yml\\\"\\r\\n```\\r\\nroles/ios_pull_tables/tasks/PACL_Table.yml\\r\\n```\\r\\n- name: Fetching interfaces facts from the remote node\\r\\n  ios_facts:\\r\\n        gather_subset: interfaces\\r\\n        provider: \\\"{{ connections.ssh }}\\\"\\r\\n  register: facts\\r\\n\\r\\n- name: Fetching PACL_Table on all L2 interfaces from the remote node\\r\\n  ios_command:\\r\\n        provider: \\\"{{ connections.ssh }}\\\"\\r\\n        commands:\\r\\n          - \\\"show run interface {{ net_item.key }} | include ^interface|access-group\\\"\\r\\n  with_dict: \\\"{{ ansible_net_interfaces }}\\\"\\r\\n  when: net_item.value.ipv4.address is not defined\\r\\n  loop_control:\\r\\n    loop_var: net_item\\r\\n  register: table\\r\\n\\r\\n- name: Saving the fetched table locally\\r\\n  include_role: \\r\\n        name: save_table\\r\\n```\\r\\nroles/save_table/tasks/main.yml (with item=PACL_Table)\\r\\n```\\r\\n- name: Printing the returned table(s)\\r\\n  debug: var=table.results\\r\\n...\\r\\n- name: Saving \\\"{{ item }}\\\" into local file\\r\\n  blockinfile:\\r\\n        dest: \\\"{{ dest_file }}\\\"\\r\\n        create: yes\\r\\n        block: '{{ stdout_item.stdout[0] }}'\\r\\n        marker: \\\"<--- {mark} {{item}} fetched with {{ stdout_item.cli_command }} --->\\\"\\r\\n        insertafter: EOF\\r\\n  with_items: \\\"{{ table.results }}\\\"\\r\\n  loop_control:\\r\\n    loop_var: stdout_item\\r\\n  ignore_errors: yes\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nThe results[].stdout[0] should contain the result of the previous show command.\\r\\nThe results[].cli_command field should be accessed without issue allowing \\\"PACL_Table\\\" to be saved without error in this example\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\n...\\r\\nTASK [save_table : Printing the returned table(s)] **************************************************************************************************************************\\r\\nok: [IOSv_L2_10] => {\\r\\n    \\\"table.results\\\": [\\r\\n        {\\r\\n            \\\"_ansible_item_label\\\": {\\r\\n                \\\"key\\\": \\\"GigabitEthernet1/2\\\", \\r\\n                \\\"value\\\": {\\r\\n                    \\\"bandwidth\\\": 1000000, \\r\\n                    \\\"description\\\": \\\"Connected to [u'IOSv_Leaf_16.actionmystique.net'] on its port [u'Gi0/0']\\\", \\r\\n                    \\\"duplex\\\": \\\"Full\\\", \\r\\n                    \\\"ipv4\\\": null, \\r\\n                    \\\"lineprotocol\\\": \\\"up (connected) \\\", \\r\\n                    \\\"macaddress\\\": \\\"0036.2586.7e06\\\", \\r\\n                    \\\"mediatype\\\": \\\"unknown media type\\\", \\r\\n                    \\\"mtu\\\": 1500, \\r\\n                    \\\"operstatus\\\": \\\"up\\\", \\r\\n                    \\\"type\\\": \\\"iGbE\\\"\\r\\n                }\\r\\n            }, \\r\\n            \\\"_ansible_item_result\\\": true, \\r\\n            \\\"_ansible_no_log\\\": false, \\r\\n            \\\"_ansible_parsed\\\": true, \\r\\n            \\\"changed\\\": false, \\r\\n            \\\"invocation\\\": {\\r\\n                \\\"module_args\\\": {\\r\\n                    \\\"auth_pass\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n                    \\\"authorize\\\": true, \\r\\n                    \\\"commands\\\": [\\r\\n                        \\\"show run interface GigabitEthernet1/2 | include ^interface|access-group\\\"\\r\\n                    ], \\r\\n                    \\\"host\\\": \\\"172.21.100.210\\\", \\r\\n                    \\\"interval\\\": 1, \\r\\n                    \\\"match\\\": \\\"all\\\", \\r\\n                    \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n                    \\\"port\\\": 22, \\r\\n                    \\\"provider\\\": {\\r\\n                        \\\"auth_pass\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n                        \\\"authorize\\\": true, \\r\\n                        \\\"host\\\": \\\"172.21.100.210\\\", \\r\\n                        \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n                        \\\"port\\\": 22, \\r\\n                        \\\"ssh_keyfile\\\": \\\"~/.ssh/id_rsa\\\", \\r\\n                        \\\"timeout\\\": 10, \\r\\n                        \\\"transport\\\": \\\"cli\\\", \\r\\n                        \\\"username\\\": \\\"admin\\\", \\r\\n                        \\\"version\\\": 2\\r\\n                    }, \\r\\n                    \\\"retries\\\": 10, \\r\\n                    \\\"ssh_keyfile\\\": \\\"/root/.ssh/id_rsa\\\", \\r\\n                    \\\"timeout\\\": 10, \\r\\n                    \\\"transport\\\": \\\"cli\\\", \\r\\n                    \\\"use_ssl\\\": true, \\r\\n                    \\\"username\\\": \\\"admin\\\", \\r\\n                    \\\"validate_certs\\\": true, \\r\\n                    \\\"wait_for\\\": null\\r\\n                }, \\r\\n                \\\"module_name\\\": \\\"ios_command\\\"\\r\\n            }, \\r\\n            \\\"net_item\\\": {\\r\\n                \\\"key\\\": \\\"GigabitEthernet1/2\\\", \\r\\n                \\\"value\\\": {\\r\\n                    \\\"bandwidth\\\": 1000000, \\r\\n                    \\\"description\\\": \\\"Connected to [u'IOSv_Leaf_16.actionmystique.net'] on its port [u'Gi0/0']\\\", \\r\\n                    \\\"duplex\\\": \\\"Full\\\", \\r\\n                    \\\"ipv4\\\": null, \\r\\n                    \\\"lineprotocol\\\": \\\"up (connected) \\\", \\r\\n                    \\\"macaddress\\\": \\\"0036.2586.7e06\\\", \\r\\n                    \\\"mediatype\\\": \\\"unknown media type\\\", \\r\\n                    \\\"mtu\\\": 1500, \\r\\n                    \\\"operstatus\\\": \\\"up\\\", \\r\\n                    \\\"type\\\": \\\"iGbE\\\"\\r\\n                }\\r\\n            }, \\r\\n            \\\"stdout\\\": [\\r\\n                \\\"show run interface GigabitEthernet1/2 | include ^interface|access-$terface GigabitEthernet1/2 | include ^interface|access-g         roup\\\\ninterface GigabitEthernet1/2\\\"\\r\\n            ], \\r\\n            \\\"stdout_lines\\\": [\\r\\n                [\\r\\n                    \\\"show run interface GigabitEthernet1/2 | include ^interface|access-$terface GigabitEthernet1/2 | include ^interface|access-g         roup\\\", \\r\\n                    \\\"interface GigabitEthernet1/2\\\"\\r\\n                ]\\r\\n            ], \\r\\n            \\\"warnings\\\": []\\r\\n        }, \\r\\n...\\r\\nTASK [save_table : Saving \\\"PACL_Table\\\" into local file] *********************************************************************************************************************\\r\\nfatal: [IOSv_L2_10]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'dict object' has no attribute 'cli_command'\\\\n\\\\nThe error appears to have been in '/home/actionmystique/Program-Files/Ubuntu/Ansible/Roles/roles/save_table/tasks/main.yml': line 80, column 3, but may\\\\nbe elsewhere in the file depending on the exact syntax problem.\\\\n\\\\nThe offending line appears to be:\\\\n\\\\n\\\\n- name: Saving \\\\\\\"{{ item }}\\\\\\\" into local file\\\\n  ^ here\\\\nWe could be wrong, but this one looks like it might be an issue with\\\\nmissing quotes.  Always quote template expression brackets when they\\\\nstart a value. For instance:\\\\n\\\\n    with_items:\\\\n      - {{ foo }}\\\\n\\\\nShould be written as:\\\\n\\\\n    with_items:\\\\n      - \\\\\\\"{{ foo }}\\\\\\\"\\\\n\\\"}\\r\\n```\\r\\nWe can see that:\\r\\n- **results[].stdout[0] is very strange**: it contains the command which is repeated & twisted several times, without any result.\\r\\n- **'dict object' has no attribute 'cli_command'**\\r\\n\\r\\nDespite a correct stdout on the device CLI:\\r\\n```\\r\\nIOSv_L2_10#show run interface G1/2 | include ^interface|access-group \\r\\ninterface GigabitEthernet1/2\\r\\n ip access-group ip_acl in\\r\\n mac access-group mac_acl in\\r\\n```\", \n    \"component_name\": \"ios_command\", \n    \"component_raw\": \"ios_command\\nbut the issue might be caused by another module such as \\\"include_role\\\" for instance.\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18966\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/ios/ios_command.py\", \n    \"summary\": \"This issue happens only when using a '|' pipe within a show command ('which is legit on Cisco CLI).\\n\\nNo such weird stdout happens when the same command is used directly on the device CLI.\\n\\nAlso, the results[].cli_command field is always present when the show command does not include a pipe.\\n\\nWe can verify with results[].invocation.module_args.commands[0 that the right show command is sent to the device.\", \n    \"title\": \"ios_command: Weird stdout & missing results[].cli_command field when a pipe is used\"\n  }, \n  \"18967\": {\n    \"ansible_version\": \"ansible --version\\n2.3.0 (commit 20160706.246e32a)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Bug Report\\r\\n##### COMPONENT NAME\\r\\n\\r\\nios_command\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible --version\\r\\n2.3.0 (commit 20160706.246e32a)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n##### CONFIGURATION\\r\\n\\r\\ninventory   = ./hosts\\r\\ngathering = explicit\\r\\nroles_path = /home/actionmystique/Program-Files/Ubuntu/Ansible/git-Ansible/Roles/roles\\r\\nprivate_role_vars = yes\\r\\nlog_path = /var/log/ansible.log\\r\\nfact_caching = redis\\r\\nfact_caching_timeout = 86400\\r\\nretry_files_enabled = False\\r\\n##### OS / ENVIRONMENT\\r\\n- **Local host**: Ubuntu 16.10 4.8\\r\\n- **Target nodes**: IOSv       15.6(2)T \\r\\n                               IOSv_L2 15.2(4.0.55)E\\r\\n##### SUMMARY\\r\\n\\r\\nThis exception happens with different types of targets (IOSv & IOSv_L2), although there is no issue running ios_facts with the same targets.\\r\\n##### STEPS TO REPRODUCE\\r\\nWith config=running-config or config=startup-config\\r\\n```\\r\\n- name: Fetching config from the remote node\\r\\n  ios_command:\\r\\n        provider: \\\"{{ connections.ssh }}\\\"\\r\\n        commands:\\r\\n          - \\\"show {{ config }}\\\"\\r\\n  register: configuration\\r\\n```\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nSuccessful \\\"show running-config\\\" or \\\"show startup-config\\\"\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nTASK [ios_pull_config : Fetching config from the remote node] ***************************************************************************************************************\\r\\ntask path: /home/actionmystique/Program-Files/Ubuntu/Ansible/Roles/roles/ios_pull_config/tasks/main.yml:76\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/core/network/ios/ios_command.py\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/core/network/ios/ios_command.py\\r\\n<172.21.100.210> ESTABLISH LOCAL CONNECTION FOR USER: root\\r\\n<172.21.100.210> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1479307602.12-88135957770534 `\\\" && echo ansible-tmp-1479307602.12-88135957770534=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1479307602.12-88135957770534 `\\\" ) && sleep 0'\\r\\n<172.21.100.220> ESTABLISH LOCAL CONNECTION FOR USER: root\\r\\n<172.21.100.220> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1479307602.13-213866714018858 `\\\" && echo ansible-tmp-1479307602.13-213866714018858=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1479307602.13-213866714018858 `\\\" ) && sleep 0'\\r\\n<172.21.100.220> PUT /tmp/tmpT5ggUh TO /root/.ansible/tmp/ansible-tmp-1479307602.13-213866714018858/ios_command.py\\r\\n<172.21.100.210> PUT /tmp/tmpqxKZuu TO /root/.ansible/tmp/ansible-tmp-1479307602.12-88135957770534/ios_command.py\\r\\n<172.21.100.220> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1479307602.13-213866714018858/ /root/.ansible/tmp/ansible-tmp-1479307602.13-213866714018858/ios_command.py && sleep 0'\\r\\n<172.21.100.210> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1479307602.12-88135957770534/ /root/.ansible/tmp/ansible-tmp-1479307602.12-88135957770534/ios_command.py && sleep 0'\\r\\n<172.21.100.220> EXEC /bin/sh -c '/usr/bin/python /root/.ansible/tmp/ansible-tmp-1479307602.13-213866714018858/ios_command.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1479307602.13-213866714018858/\\\" > /dev/null 2>&1 && sleep 0'\\r\\n<172.21.100.210> EXEC /bin/sh -c '/usr/bin/python /root/.ansible/tmp/ansible-tmp-1479307602.12-88135957770534/ios_command.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1479307602.12-88135957770534/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/usr/lib/python2.7/dist-packages/ansible/executor/task_executor.py\\\", line 126, in run\\r\\n    res = self._execute()\\r\\n  File \\\"/usr/lib/python2.7/dist-packages/ansible/executor/task_executor.py\\\", line 502, in _execute\\r\\n    result = self._handler.run(task_vars=variables)\\r\\n  File \\\"/usr/lib/python2.7/dist-packages/ansible/plugins/action/normal.py\\\", line 33, in run\\r\\n    results = merge_hash(results, self._execute_module(tmp=tmp, task_vars=task_vars))\\r\\n  File \\\"/usr/lib/python2.7/dist-packages/ansible/plugins/action/__init__.py\\\", line 662, in _execute_module\\r\\n    data['stdout_lines'] = data.get('stdout', u'').splitlines()\\r\\nAttributeError: 'list' object has no attribute 'splitlines'\\r\\n\\r\\nfatal: [IOSv_L2_10]: FAILED! => {\\r\\n    \\\"failed\\\": true, \\r\\n    \\\"msg\\\": \\\"Unexpected failure during module execution.\\\", \\r\\n    \\\"stdout\\\": \\\"\\\"\\r\\n}\\r\\n```\\r\\nDespite being able to retrieve its facts with ios_facts:\\r\\n- name: Fetching facts from the remote node\\r\\n  ios_facts:\\r\\n        gather_subset: all\\r\\n        provider: \\\"{{ connections.ssh }}\\\"\\r\\n  register: facts\\r\\n```\\r\\nTASK [ios_pull_facts : Fetching facts from the remote node] *****************************************************************************************************************\\r\\nok: [IOSv_L2_10] => {\\\"ansible_facts\\\": {\\\"ansible_net_all_ipv4_addresses\\\": [\\\"172.21.100.210\\\"], \\\"ansible_net_all_ipv6_addresses\\\": [], \\\"ansible_net_config\\\": \\\"Building configuration...\\\\n\\\\nCurrent configuration : 7126 bytes\\\\n!\\\\n! Last configuration change at 14:42:21 UTC Wed Nov 16 2016 by admin\\\\n!\\\\nversion 15.2\\\\nservice timestamps debug datetime msec\\\\nservice timestamps log datetime msec\\\\nservice password-encryption\\\\nservice compress-config\\\\n!\\\\nhostname IOSv_L2_10\\\\n!\\\\nboot-start-marker\\\\nboot-end-marker\\\\n!\\\\n!\\\\nenable se\\r\\n...nged\\\": false, \\\"failed_commands\\\": []}\\r\\n```\", \n    \"component_name\": \"ios_command\", \n    \"component_raw\": \"ios_command\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18967\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/ios/ios_command.py\", \n    \"summary\": \"This exception happens with different types of targets (IOSv & IOSv_L2), although there is no issue running ios_facts with the same targets.\", \n    \"title\": \"Exception with ios_command: AttributeError: 'list' object has no attribute 'splitlines' \"\n  }, \n  \"18968\": {\n    \"ansible_version\": \"ansible --version\\n2.3.0 (commit c064dce)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\\nor\\n2.2.0.0-0.2.rc2\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Bug Report\\r\\n##### COMPONENT NAME\\r\\n\\r\\nnxos_facts\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible --version\\r\\n2.3.0 (commit c064dce)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\nor\\r\\n2.2.0.0-0.2.rc2\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n##### CONFIGURATION\\r\\n\\r\\ninventory   = ./hosts\\r\\ngathering = explicit\\r\\nroles_path = /home/actionmystique/Program-Files/Ubuntu/Ansible/git-Ansible/roles\\r\\nprivate_role_vars = yes\\r\\nlog_path = /var/log/ansible.log\\r\\nfact_caching = redis\\r\\nfact_caching_timeout = 86400\\r\\nretry_files_enabled = False\\r\\n##### OS / ENVIRONMENT\\r\\n- **Local host**: Ubuntu 16.04 4.4.0\\r\\n- **Target nodes**: NX-OSv 7.3(0)D1(1) (last release available in Cisco VIRL)\\r\\n##### SUMMARY\\r\\n\\r\\nRunning nxos_facts triggers a fatal error (connection timeout), whereas I can manually login into the target node with SSH or run nxos-feature on the same targets.\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```\\r\\n- include_vars: \\\"../defaults/{{ os_family }}/http.yml\\\"\\r\\n- include_vars: \\\"../defaults/{{ os_family }}/connections.yml\\\"\\r\\n\\r\\n- name: Fetching facts from the remote node\\r\\n  nxos_facts:\\r\\n        gather_subset: all\\r\\n        provider: \\\"{{ connections.nxapi }}\\\"\\r\\n  register: return\\r\\n```\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nSuccessful nxos_facts\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nTASK [nxos_pull_facts : Fetching facts from the remote node] *******************\\r\\ntask path: /home/actionmystique/Program-Files/Ubuntu/Ansible/Roles/roles/nxos_pull_facts/tasks/main.yml:74\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/core/network/nxos/nxos_facts.py\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/core/network/nxos/nxos_facts.py\\r\\n<172.21.100.12> ESTABLISH LOCAL CONNECTION FOR USER: root\\r\\n<172.21.100.12> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1476884246.75-158252726280111 `\\\" && echo ansible-tmp-1476884246.75-158252726280111=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1476884246.75-158252726280111 `\\\" ) && sleep 0'\\r\\n<172.21.100.11> ESTABLISH LOCAL CONNECTION FOR USER: root\\r\\n<172.21.100.11> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1476884246.75-116017618040720 `\\\" && echo ansible-tmp-1476884246.75-116017618040720=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1476884246.75-116017618040720 `\\\" ) && sleep 0'\\r\\n<172.21.100.12> PUT /tmp/tmpbsH8md TO /root/.ansible/tmp/ansible-tmp-1476884246.75-158252726280111/nxos_facts.py\\r\\n<172.21.100.11> PUT /tmp/tmpiPM3JI TO /root/.ansible/tmp/ansible-tmp-1476884246.75-116017618040720/nxos_facts.py\\r\\n<172.21.100.12> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1476884246.75-158252726280111/ /root/.ansible/tmp/ansible-tmp-1476884246.75-158252726280111/nxos_facts.py && sleep 0'\\r\\n<172.21.100.11> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1476884246.75-116017618040720/ /root/.ansible/tmp/ansible-tmp-1476884246.75-116017618040720/nxos_facts.py && sleep 0'\\r\\n<172.21.100.12> EXEC /bin/sh -c '/usr/bin/python /root/.ansible/tmp/ansible-tmp-1476884246.75-158252726280111/nxos_facts.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1476884246.75-158252726280111/\\\" > /dev/null 2>&1 && sleep 0'\\r\\n<172.21.100.11> EXEC /bin/sh -c '/usr/bin/python /root/.ansible/tmp/ansible-tmp-1476884246.75-116017618040720/nxos_facts.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1476884246.75-116017618040720/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nfatal: [NX_OSv_Spine_11]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"auth_pass\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n            \\\"authorize\\\": false, \\r\\n            \\\"gather_subset\\\": [\\r\\n                \\\"all\\\"\\r\\n            ], \\r\\n            \\\"host\\\": \\\"172.21.100.11\\\", \\r\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n            \\\"port\\\": 8080, \\r\\n            \\\"provider\\\": {\\r\\n                \\\"auth_pass\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n                \\\"host\\\": \\\"172.21.100.11\\\", \\r\\n                \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n                \\\"port\\\": \\\"8080\\\", \\r\\n                \\\"transport\\\": \\\"nxapi\\\", \\r\\n                \\\"use_ssl\\\": false, \\r\\n                \\\"username\\\": \\\"admin\\\", \\r\\n                \\\"validate_certs\\\": false\\r\\n            }, \\r\\n            \\\"ssh_keyfile\\\": null, \\r\\n            \\\"timeout\\\": 10, \\r\\n            \\\"transport\\\": \\\"nxapi\\\", \\r\\n            \\\"use_ssl\\\": false, \\r\\n            \\\"username\\\": \\\"admin\\\", \\r\\n            \\\"validate_certs\\\": false\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"nxos_facts\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"Connection failure: timed out\\\", \\r\\n    \\\"status\\\": -1, \\r\\n    \\\"url\\\": \\\"http://172.21.100.11:8080/ins\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"nxos_facts\", \n    \"component_raw\": \"nxos_facts\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18968\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nxos/nxos_facts.py\", \n    \"summary\": \"Running nxos_facts triggers a fatal error (connection timeout), whereas I can manually login into the target node with SSH or run nxos-feature on the same targets.\", \n    \"title\": \"Cannot pull all facts with nxos_facts\"\n  }, \n  \"18970\": {\n    \"ansible_version\": \"ansible 2.3.0 commit d9b570a\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\\ncore modules commit ec4eebc\\nextras modules commit edbddf6\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Bug Report\\r\\n##### COMPONENT NAME\\r\\n\\r\\nios_config\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 commit d9b570a\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\ncore modules commit ec4eebc\\r\\nextras modules commit edbddf6\\r\\n```\\r\\n##### CONFIGURATION\\r\\n\\r\\ninventory   = ./hosts\\r\\ngathering = explicit\\r\\nroles_path = /home/actionmystique/Program-Files/Ubuntu/Ansible/git-Ansible/roles\\r\\nprivate_role_vars = yes\\r\\nlog_path = /var/log/ansible.log\\r\\nfact_caching = redis\\r\\nfact_caching_timeout = 86400\\r\\nretry_files_enabled = False\\r\\n##### OS / ENVIRONMENT\\r\\n- host: Ubuntu 16.04 4.4.0\\r\\n- target: **CSR-1000v 16.2.2**\\r\\n##### SUMMARY\\r\\n\\r\\nThere is a strange behavior when some commands are correctly applied multiple times in a row: the previous occurrences are not seen as changed.\\r\\nFor instance, the following tasks are always applied even though they have already been successfully run:\\r\\n\\r\\n```\\r\\n- name: Configuring location, contact & chassis ID information in new SNMPv{{ snmp.new_version }}\\r\\n  ios_config:\\r\\n        provider: \\\"{{ connections.ssh }}\\\"\\r\\n        lines:\\r\\n          - \\\"snmp-server location {{ snmp.location }}\\\"\\r\\n          - \\\"snmp-server contact {{ snmp.contact }}\\\"\\r\\n          - \\\"snmp-server chassis-id {{ snmp.chassis_id }}\\\"\\r\\n          - \\\"snmp-server ifindex persist\\\"\\r\\n  when: snmp.admin_state == \\\"up\\\"\\r\\n  register: result\\r\\n```\\r\\n\\r\\n```\\r\\nTASK [ios_snmp : Configuring location, contact & chassis ID information in new SNMPv2c] ***\\r\\nchanged: [XEv_Spine_31] => {\\\"changed\\\": true, \\\"updates\\\": [\\\"snmp-server ifindex persist\\\"], \\\"warnings\\\": []}\\r\\nchanged: [XEv_Spine_32] => {\\\"changed\\\": true, \\\"updates\\\": [\\\"snmp-server ifindex persist\\\"], \\\"warnings\\\": []}\\r\\n```\\r\\n\\r\\n```\\r\\n- name: Configuring RO/RW community string in new IPv4/SNMPv{{ snmp.new_version }}\\r\\n  ios_config:\\r\\n        provider: \\\"{{ connections.ssh }}\\\"\\r\\n        lines:\\r\\n          - \\\"snmp-server community {{ snmp.ssh.community }} {{ snmp.community_type }} {{ snmp.acl_name }}\\\"\\r\\n  when: snmp.ip_version == 'ip'\\r\\n  register: result\\r\\n```\\r\\n\\r\\n```\\r\\nTASK [ios_snmp : Configuring RO/RW community string in new IPv4/SNMPv2c] *******\\r\\nchanged: [XEv_Spine_32] => {\\\"changed\\\": true, \\\"updates\\\": [\\\"snmp-server community xxxxxxxx ro authorized-snmp-nms\\\"], \\\"warnings\\\": []}\\r\\nchanged: [XEv_Spine_31] => {\\\"changed\\\": true, \\\"updates\\\": [\\\"snmp-server community xxxxxxxx ro authorized-snmp-nms\\\"], \\\"warnings\\\": []}\\r\\n```\\r\\n\\r\\n```\\r\\n- name: Configuring which NMS is allowed to receive the traps in new SNMPv{{ snmp.new_version }}\\r\\n  ios_config:\\r\\n        provider: \\\"{{ connections.ssh }}\\\"\\r\\n        lines:\\r\\n          - \\\"snmp-server host {{ nms_mgt_ip_address }} {{ snmp.notifications_type }} version {{ snmp.new_version }} {{ snmp.ssh.community }} udp-port {{ snmp.trap_port }}\\\"\\r\\n  when: (snmp.notifications == 'all') or (snmp.notifications == 'list')\\r\\n  register: result\\r\\n```\\r\\n\\r\\n```\\r\\nTASK [ios_snmp : Configuring which NMS is allowed to receive the traps in new SNMPv2c] ***\\r\\nchanged: [XEv_Spine_31] => {\\\"changed\\\": true, \\\"updates\\\": [\\\"snmp-server host 172.21.100.1 traps version 2c xxxxxxxx udp-port 162\\\"], \\\"warnings\\\": []}\\r\\nchanged: [XEv_Spine_32] => {\\\"changed\\\": true, \\\"updates\\\": [\\\"snmp-server host 172.21.100.1 traps version 2c xxxxxxxx udp-port 162\\\"], \\\"warnings\\\": []}\\r\\n```\\r\\n\\r\\nNot all commands are concerned with this glitch. For instance, the second passage does not lead to a change for:\\r\\n\\r\\n```\\r\\n- name: Configuring the ACL for authorized NMS in new SNMPv{{ snmp.new_version }}\\r\\n  ios_config:\\r\\n        provider: \\\"{{ connections.ssh }}\\\"\\r\\n        parents:\\r\\n          - \\\"{{ snmp.ip_version }} access-list extended {{ snmp.acl_name }}\\\"\\r\\n        lines:\\r\\n          - \\\"permit {{ snmp.ip_version }} host {{ nms_mgt_ip_address }} host {{ ansible_host }} log\\\"\\r\\n  when: snmp.admin_state == \\\"up\\\"\\r\\n  register: result\\r\\n```\\r\\n\\r\\n```\\r\\nTASK [ios_snmp : Configuring the ACL for authorized NMS in new SNMPv2c] ********\\r\\nok: [XEv_Spine_32] => {\\\"changed\\\": false, \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => {\\\"changed\\\": false, \\\"warnings\\\": []}\\r\\n```\\r\\n\\r\\n```\\r\\n- name: Configuring the list of notifications in new SNMPv{{ snmp.new_version }}\\r\\n  ios_config:\\r\\n        provider: \\\"{{ connections.ssh }}\\\"\\r\\n        lines:\\r\\n          - \\\"snmp-server enable traps {{ item }}\\\"\\r\\n  with_items:  \\\"{{ snmp.notifications_list.traps }}\\\"\\r\\n  when: (snmp.notifications == 'list')\\r\\n  register: result\\r\\n```\\r\\n\\r\\nThe previous task works as expected for all the notifications I have tested, except for a few:\\r\\n- cpu\\r\\n- memory\\r\\n- ospf\\r\\n- snmp\\r\\n\\r\\n```\\r\\nTASK [ios_snmp : Configuring the list of notifications in new SNMPv2c] *********\\r\\nok: [XEv_Spine_31] => (item=bfd) => {\\\"changed\\\": false, \\\"item\\\": \\\"bfd\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=bfd) => {\\\"changed\\\": false, \\\"item\\\": \\\"bfd\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=bgp) => {\\\"changed\\\": false, \\\"item\\\": \\\"bgp\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=bgp) => {\\\"changed\\\": false, \\\"item\\\": \\\"bgp\\\", \\\"warnings\\\": []}\\r\\nchanged: [XEv_Spine_31] => (item=cpu) => {\\\"changed\\\": true, \\\"item\\\": \\\"cpu\\\", \\\"updates\\\": [\\\"snmp-server enable traps cpu\\\"], \\\"warnings\\\": []}\\r\\nchanged: [XEv_Spine_32] => (item=cpu) => {\\\"changed\\\": true, \\\"item\\\": \\\"cpu\\\", \\\"updates\\\": [\\\"snmp-server enable traps cpu\\\"], \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=eigrp) => {\\\"changed\\\": false, \\\"item\\\": \\\"eigrp\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=eigrp) => {\\\"changed\\\": false, \\\"item\\\": \\\"eigrp\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=event-manager) => {\\\"changed\\\": false, \\\"item\\\": \\\"event-manager\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=event-manager) => {\\\"changed\\\": false, \\\"item\\\": \\\"event-manager\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=firewall serverstatus) => {\\\"changed\\\": false, \\\"item\\\": \\\"firewall serverstatus\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=firewall serverstatus) => {\\\"changed\\\": false, \\\"item\\\": \\\"firewall serverstatus\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=ike policy add) => {\\\"changed\\\": false, \\\"item\\\": \\\"ike policy add\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=ike policy add) => {\\\"changed\\\": false, \\\"item\\\": \\\"ike policy add\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=ike policy delete) => {\\\"changed\\\": false, \\\"item\\\": \\\"ike policy delete\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=ike policy delete) => {\\\"changed\\\": false, \\\"item\\\": \\\"ike policy delete\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=ike tunnel start) => {\\\"changed\\\": false, \\\"item\\\": \\\"ike tunnel start\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=ike tunnel start) => {\\\"changed\\\": false, \\\"item\\\": \\\"ike tunnel start\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=ike tunnel stop) => {\\\"changed\\\": false, \\\"item\\\": \\\"ike tunnel stop\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=ike tunnel stop) => {\\\"changed\\\": false, \\\"item\\\": \\\"ike tunnel stop\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=ipsec cryptomap add) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec cryptomap add\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=ipsec cryptomap add) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec cryptomap add\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=ipsec cryptomap attach) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec cryptomap attach\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=ipsec cryptomap attach) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec cryptomap attach\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=ipsec cryptomap delete) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec cryptomap delete\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=ipsec cryptomap delete) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec cryptomap delete\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=ipsec cryptomap detach) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec cryptomap detach\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=ipsec cryptomap detach) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec cryptomap detach\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=ipsec too-many-sas) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec too-many-sas\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=ipsec too-many-sas) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec too-many-sas\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=ipsec tunnel start) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec tunnel start\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=ipsec tunnel start) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec tunnel start\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=ipsec tunnel stop) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec tunnel stop\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=ipsec tunnel stop) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec tunnel stop\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=ipsla) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsla\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=ipsla) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsla\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=isis) => {\\\"changed\\\": false, \\\"item\\\": \\\"isis\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=isis) => {\\\"changed\\\": false, \\\"item\\\": \\\"isis\\\", \\\"warnings\\\": []}\\r\\nchanged: [XEv_Spine_32] => (item=memory) => {\\\"changed\\\": true, \\\"item\\\": \\\"memory\\\", \\\"updates\\\": [\\\"snmp-server enable traps memory\\\"], \\\"warnings\\\": []}\\r\\nchanged: [XEv_Spine_31] => (item=memory) => {\\\"changed\\\": true, \\\"item\\\": \\\"memory\\\", \\\"updates\\\": [\\\"snmp-server enable traps memory\\\"], \\\"warnings\\\": []}\\r\\nchanged: [XEv_Spine_32] => (item=ospf) => {\\\"changed\\\": true, \\\"item\\\": \\\"ospf\\\", \\\"updates\\\": [\\\"snmp-server enable traps ospf\\\"], \\\"warnings\\\": []}\\r\\nchanged: [XEv_Spine_31] => (item=ospf) => {\\\"changed\\\": true, \\\"item\\\": \\\"ospf\\\", \\\"updates\\\": [\\\"snmp-server enable traps ospf\\\"], \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=ospfv3 errors) => {\\\"changed\\\": false, \\\"item\\\": \\\"ospfv3 errors\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=ospfv3 errors) => {\\\"changed\\\": false, \\\"item\\\": \\\"ospfv3 errors\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=ospfv3 rate-limit 60 150) => {\\\"changed\\\": false, \\\"item\\\": \\\"ospfv3 rate-limit 60 150\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=ospfv3 rate-limit 60 150) => {\\\"changed\\\": false, \\\"item\\\": \\\"ospfv3 rate-limit 60 150\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=ospfv3 state-change) => {\\\"changed\\\": false, \\\"item\\\": \\\"ospfv3 state-change\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=ospfv3 state-change) => {\\\"changed\\\": false, \\\"item\\\": \\\"ospfv3 state-change\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=pfr) => {\\\"changed\\\": false, \\\"item\\\": \\\"pfr\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=pfr) => {\\\"changed\\\": false, \\\"item\\\": \\\"pfr\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=pki) => {\\\"changed\\\": false, \\\"item\\\": \\\"pki\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=pki) => {\\\"changed\\\": false, \\\"item\\\": \\\"pki\\\", \\\"warnings\\\": []}\\r\\nchanged: [XEv_Spine_32] => (item=snmp) => {\\\"changed\\\": true, \\\"item\\\": \\\"snmp\\\", \\\"updates\\\": [\\\"snmp-server enable traps snmp\\\"], \\\"warnings\\\": []}\\r\\nchanged: [XEv_Spine_31] => (item=snmp) => {\\\"changed\\\": true, \\\"item\\\": \\\"snmp\\\", \\\"updates\\\": [\\\"snmp-server enable traps snmp\\\"], \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=syslog) => {\\\"changed\\\": false, \\\"item\\\": \\\"syslog\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=syslog) => {\\\"changed\\\": false, \\\"item\\\": \\\"syslog\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_32] => (item=tty) => {\\\"changed\\\": false, \\\"item\\\": \\\"tty\\\", \\\"warnings\\\": []}\\r\\nok: [XEv_Spine_31] => (item=tty) => {\\\"changed\\\": false, \\\"item\\\": \\\"tty\\\", \\\"warnings\\\": []}\\r\\n```\\r\\n\\r\\nSaving the running-config in between multiple runs does not change the situation at all.\\r\\n\", \n    \"component_name\": \"ios_config\", \n    \"component_raw\": \"ios_config\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18970\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/ios/ios_config.py\", \n    \"summary\": \"There is a strange behavior when some commands are correctly applied multiple times in a row: the previous occurrences are not seen as changed.\\n\\nFor instance, the following tasks are always applied even though they have already been successfully run:\\n\\n\\n\\n```\\n\\n- name: Configuring location, contact & chassis ID information in new SNMPv{{ snmp.new_version }}\\n\\n  ios_config:\\n\\n        provider: \\\"{{ connections.ssh }}\\\"\\n\\n        lines:\\n\\n          - \\\"snmp-server location {{ snmp.location }}\\\"\\n\\n          - \\\"snmp-server contact {{ snmp.contact }}\\\"\\n\\n          - \\\"snmp-server chassis-id {{ snmp.chassis_id }}\\\"\\n\\n          - \\\"snmp-server ifindex persist\\\"\\n\\n  when: snmp.admin_state == \\\"up\\\"\\n\\n  register: result\\n\\n```\\n\\n\\n\\n```\\n\\nTASK [ios_snmp : Configuring location, contact & chassis ID information in new SNMPv2c] ***\\n\\nchanged: [XEv_Spine_31] => {\\\"changed\\\": true, \\\"updates\\\": [\\\"snmp-server ifindex persist\\\"], \\\"warnings\\\": []}\\n\\nchanged: [XEv_Spine_32] => {\\\"changed\\\": true, \\\"updates\\\": [\\\"snmp-server ifindex persist\\\"], \\\"warnings\\\": []}\\n\\n```\\n\\n\\n\\n```\\n\\n- name: Configuring RO/RW community string in new IPv4/SNMPv{{ snmp.new_version }}\\n\\n  ios_config:\\n\\n        provider: \\\"{{ connections.ssh }}\\\"\\n\\n        lines:\\n\\n          - \\\"snmp-server community {{ snmp.ssh.community }} {{ snmp.community_type }} {{ snmp.acl_name }}\\\"\\n\\n  when: snmp.ip_version == 'ip'\\n\\n  register: result\\n\\n```\\n\\n\\n\\n```\\n\\nTASK [ios_snmp : Configuring RO/RW community string in new IPv4/SNMPv2c] *******\\n\\nchanged: [XEv_Spine_32] => {\\\"changed\\\": true, \\\"updates\\\": [\\\"snmp-server community xxxxxxxx ro authorized-snmp-nms\\\"], \\\"warnings\\\": []}\\n\\nchanged: [XEv_Spine_31] => {\\\"changed\\\": true, \\\"updates\\\": [\\\"snmp-server community xxxxxxxx ro authorized-snmp-nms\\\"], \\\"warnings\\\": []}\\n\\n```\\n\\n\\n\\n```\\n\\n- name: Configuring which NMS is allowed to receive the traps in new SNMPv{{ snmp.new_version }}\\n\\n  ios_config:\\n\\n        provider: \\\"{{ connections.ssh }}\\\"\\n\\n        lines:\\n\\n          - \\\"snmp-server host {{ nms_mgt_ip_address }} {{ snmp.notifications_type }} version {{ snmp.new_version }} {{ snmp.ssh.community }} udp-port {{ snmp.trap_port }}\\\"\\n\\n  when: (snmp.notifications == 'all') or (snmp.notifications == 'list')\\n\\n  register: result\\n\\n```\\n\\n\\n\\n```\\n\\nTASK [ios_snmp : Configuring which NMS is allowed to receive the traps in new SNMPv2c] ***\\n\\nchanged: [XEv_Spine_31] => {\\\"changed\\\": true, \\\"updates\\\": [\\\"snmp-server host 172.21.100.1 traps version 2c xxxxxxxx udp-port 162\\\"], \\\"warnings\\\": []}\\n\\nchanged: [XEv_Spine_32] => {\\\"changed\\\": true, \\\"updates\\\": [\\\"snmp-server host 172.21.100.1 traps version 2c xxxxxxxx udp-port 162\\\"], \\\"warnings\\\": []}\\n\\n```\\n\\n\\n\\nNot all commands are concerned with this glitch. For instance, the second passage does not lead to a change for:\\n\\n\\n\\n```\\n\\n- name: Configuring the ACL for authorized NMS in new SNMPv{{ snmp.new_version }}\\n\\n  ios_config:\\n\\n        provider: \\\"{{ connections.ssh }}\\\"\\n\\n        parents:\\n\\n          - \\\"{{ snmp.ip_version }} access-list extended {{ snmp.acl_name }}\\\"\\n\\n        lines:\\n\\n          - \\\"permit {{ snmp.ip_version }} host {{ nms_mgt_ip_address }} host {{ ansible_host }} log\\\"\\n\\n  when: snmp.admin_state == \\\"up\\\"\\n\\n  register: result\\n\\n```\\n\\n\\n\\n```\\n\\nTASK [ios_snmp : Configuring the ACL for authorized NMS in new SNMPv2c] ********\\n\\nok: [XEv_Spine_32] => {\\\"changed\\\": false, \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => {\\\"changed\\\": false, \\\"warnings\\\": []}\\n\\n```\\n\\n\\n\\n```\\n\\n- name: Configuring the list of notifications in new SNMPv{{ snmp.new_version }}\\n\\n  ios_config:\\n\\n        provider: \\\"{{ connections.ssh }}\\\"\\n\\n        lines:\\n\\n          - \\\"snmp-server enable traps {{ item }}\\\"\\n\\n  with_items:  \\\"{{ snmp.notifications_list.traps }}\\\"\\n\\n  when: (snmp.notifications == 'list')\\n\\n  register: result\\n\\n```\\n\\n\\n\\nThe previous task works as expected for all the notifications I have tested, except for a few:\\n\\n- cpu\\n\\n- memory\\n\\n- ospf\\n\\n- snmp\\n\\n\\n\\n```\\n\\nTASK [ios_snmp : Configuring the list of notifications in new SNMPv2c] *********\\n\\nok: [XEv_Spine_31] => (item=bfd) => {\\\"changed\\\": false, \\\"item\\\": \\\"bfd\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=bfd) => {\\\"changed\\\": false, \\\"item\\\": \\\"bfd\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=bgp) => {\\\"changed\\\": false, \\\"item\\\": \\\"bgp\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=bgp) => {\\\"changed\\\": false, \\\"item\\\": \\\"bgp\\\", \\\"warnings\\\": []}\\n\\nchanged: [XEv_Spine_31] => (item=cpu) => {\\\"changed\\\": true, \\\"item\\\": \\\"cpu\\\", \\\"updates\\\": [\\\"snmp-server enable traps cpu\\\"], \\\"warnings\\\": []}\\n\\nchanged: [XEv_Spine_32] => (item=cpu) => {\\\"changed\\\": true, \\\"item\\\": \\\"cpu\\\", \\\"updates\\\": [\\\"snmp-server enable traps cpu\\\"], \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=eigrp) => {\\\"changed\\\": false, \\\"item\\\": \\\"eigrp\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=eigrp) => {\\\"changed\\\": false, \\\"item\\\": \\\"eigrp\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=event-manager) => {\\\"changed\\\": false, \\\"item\\\": \\\"event-manager\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=event-manager) => {\\\"changed\\\": false, \\\"item\\\": \\\"event-manager\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=firewall serverstatus) => {\\\"changed\\\": false, \\\"item\\\": \\\"firewall serverstatus\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=firewall serverstatus) => {\\\"changed\\\": false, \\\"item\\\": \\\"firewall serverstatus\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=ike policy add) => {\\\"changed\\\": false, \\\"item\\\": \\\"ike policy add\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=ike policy add) => {\\\"changed\\\": false, \\\"item\\\": \\\"ike policy add\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=ike policy delete) => {\\\"changed\\\": false, \\\"item\\\": \\\"ike policy delete\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=ike policy delete) => {\\\"changed\\\": false, \\\"item\\\": \\\"ike policy delete\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=ike tunnel start) => {\\\"changed\\\": false, \\\"item\\\": \\\"ike tunnel start\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=ike tunnel start) => {\\\"changed\\\": false, \\\"item\\\": \\\"ike tunnel start\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=ike tunnel stop) => {\\\"changed\\\": false, \\\"item\\\": \\\"ike tunnel stop\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=ike tunnel stop) => {\\\"changed\\\": false, \\\"item\\\": \\\"ike tunnel stop\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=ipsec cryptomap add) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec cryptomap add\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=ipsec cryptomap add) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec cryptomap add\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=ipsec cryptomap attach) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec cryptomap attach\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=ipsec cryptomap attach) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec cryptomap attach\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=ipsec cryptomap delete) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec cryptomap delete\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=ipsec cryptomap delete) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec cryptomap delete\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=ipsec cryptomap detach) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec cryptomap detach\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=ipsec cryptomap detach) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec cryptomap detach\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=ipsec too-many-sas) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec too-many-sas\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=ipsec too-many-sas) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec too-many-sas\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=ipsec tunnel start) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec tunnel start\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=ipsec tunnel start) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec tunnel start\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=ipsec tunnel stop) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec tunnel stop\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=ipsec tunnel stop) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsec tunnel stop\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=ipsla) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsla\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=ipsla) => {\\\"changed\\\": false, \\\"item\\\": \\\"ipsla\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=isis) => {\\\"changed\\\": false, \\\"item\\\": \\\"isis\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=isis) => {\\\"changed\\\": false, \\\"item\\\": \\\"isis\\\", \\\"warnings\\\": []}\\n\\nchanged: [XEv_Spine_32] => (item=memory) => {\\\"changed\\\": true, \\\"item\\\": \\\"memory\\\", \\\"updates\\\": [\\\"snmp-server enable traps memory\\\"], \\\"warnings\\\": []}\\n\\nchanged: [XEv_Spine_31] => (item=memory) => {\\\"changed\\\": true, \\\"item\\\": \\\"memory\\\", \\\"updates\\\": [\\\"snmp-server enable traps memory\\\"], \\\"warnings\\\": []}\\n\\nchanged: [XEv_Spine_32] => (item=ospf) => {\\\"changed\\\": true, \\\"item\\\": \\\"ospf\\\", \\\"updates\\\": [\\\"snmp-server enable traps ospf\\\"], \\\"warnings\\\": []}\\n\\nchanged: [XEv_Spine_31] => (item=ospf) => {\\\"changed\\\": true, \\\"item\\\": \\\"ospf\\\", \\\"updates\\\": [\\\"snmp-server enable traps ospf\\\"], \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=ospfv3 errors) => {\\\"changed\\\": false, \\\"item\\\": \\\"ospfv3 errors\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=ospfv3 errors) => {\\\"changed\\\": false, \\\"item\\\": \\\"ospfv3 errors\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=ospfv3 rate-limit 60 150) => {\\\"changed\\\": false, \\\"item\\\": \\\"ospfv3 rate-limit 60 150\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=ospfv3 rate-limit 60 150) => {\\\"changed\\\": false, \\\"item\\\": \\\"ospfv3 rate-limit 60 150\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=ospfv3 state-change) => {\\\"changed\\\": false, \\\"item\\\": \\\"ospfv3 state-change\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=ospfv3 state-change) => {\\\"changed\\\": false, \\\"item\\\": \\\"ospfv3 state-change\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=pfr) => {\\\"changed\\\": false, \\\"item\\\": \\\"pfr\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=pfr) => {\\\"changed\\\": false, \\\"item\\\": \\\"pfr\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=pki) => {\\\"changed\\\": false, \\\"item\\\": \\\"pki\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=pki) => {\\\"changed\\\": false, \\\"item\\\": \\\"pki\\\", \\\"warnings\\\": []}\\n\\nchanged: [XEv_Spine_32] => (item=snmp) => {\\\"changed\\\": true, \\\"item\\\": \\\"snmp\\\", \\\"updates\\\": [\\\"snmp-server enable traps snmp\\\"], \\\"warnings\\\": []}\\n\\nchanged: [XEv_Spine_31] => (item=snmp) => {\\\"changed\\\": true, \\\"item\\\": \\\"snmp\\\", \\\"updates\\\": [\\\"snmp-server enable traps snmp\\\"], \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=syslog) => {\\\"changed\\\": false, \\\"item\\\": \\\"syslog\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=syslog) => {\\\"changed\\\": false, \\\"item\\\": \\\"syslog\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_32] => (item=tty) => {\\\"changed\\\": false, \\\"item\\\": \\\"tty\\\", \\\"warnings\\\": []}\\n\\nok: [XEv_Spine_31] => (item=tty) => {\\\"changed\\\": false, \\\"item\\\": \\\"tty\\\", \\\"warnings\\\": []}\\n\\n```\\n\\n\\n\\nSaving the running-config in between multiple runs does not change the situation at all.\", \n    \"title\": \"ios_config changes some items which do not need to be changed\"\n  }, \n  \"18971\": {\n    \"ansible_version\": \"ansible 2.3.0~git20161010.03765ba\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Bug Report\\r\\n##### COMPONENT NAME\\r\\n\\r\\nnxos_command\\r\\nnxos_config\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0~git20161010.03765ba\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n##### CONFIGURATION\\r\\n\\r\\ninventory   = ./hosts\\r\\ngathering = explicit\\r\\nroles_path = /home/actionmystique/Program-Files/Ubuntu/Ansible/Roles/roles\\r\\nprivate_role_vars = yes\\r\\nlog_path = /var/log/ansible.log\\r\\nfact_caching = redis\\r\\nfact_caching_timeout = 86400\\r\\nretry_files_enabled = False\\r\\n##### OS / ENVIRONMENT\\r\\n- host: Ubuntu 16.04 4.4.0\\r\\n- target: **NX-OSv 7.3(0)D1(1)**\\r\\n##### SUMMARY\\r\\n\\r\\ncf. title\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n**Inventory ./hosts**:\\r\\n\\r\\n```\\r\\n[all:vars]\\r\\nnms_mgt_ip_address=172.21.100.1\\r\\n[spines]\\r\\nNX_OSv_Spine_11 ansible_host=172.21.100.11 \\r\\nNX_OSv_Spine_12 ansible_host=172.21.100.12 \\r\\n```\\r\\n\\r\\nStructure passed as \\\"**provider**\\\": connections.ssh\\r\\nDefined in group_vars/nx_osv/connections.yml and a symbolic link in roles/nxos_snmp/defaults points to nx_osv\\r\\n\\r\\n```\\r\\nconnections\\r\\n...\\r\\n        nxapi:\\r\\n          transport: nxapi\\r\\n          host: \\\"{{ ansible_host }}\\\"\\r\\n          # ansible_port\\r\\n          port: \\\"{{ http.port }}\\\"\\r\\n          # ansible_user\\r\\n          username: admin\\r\\n          password: xxxxxxxx\\r\\n          # enable_secret_password\\r\\n          auth_pass: xxxxxxxx\\r\\n          # http or https\\r\\n          use_ssl: no\\r\\n          validate_certs: \\\"{{ https.validate_certs }}\\\"\\r\\n```\\r\\n\\r\\n**Role**: nxos_snmp:\\r\\n\\r\\n```\\r\\n- include_vars: \\\"../defaults/{{ os_family }}/connections.yml\\\"\\r\\n...\\r\\n- name: Saving the running-config\\r\\n  nxos_command:\\r\\n        provider: \\\"{{ connections.nxapi }}\\\"\\r\\n        commands:\\r\\n          - \\\"copy running-config startup-config\\\"\\r\\n  register: result\\r\\n```\\r\\n\\r\\n**Playbook**:\\r\\n\\r\\n```\\r\\n- name: Configuring SNMP on NX-OS/NX-OSv\\r\\n  hosts:\\r\\n    - nx_osv\\r\\n  roles:\\r\\n    - nxos_snmp\\r\\n```\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nWe should be able to save the modifications.\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nTASK [nxos_snmp : Saving the running-config] ***********************************\\r\\nfatal: [NX_OSv_Spine_12]: FAILED! => {\\\"changed\\\": false, \\\"clierror\\\": \\\"Syntax error while parsing 'copy running-config startup-config  | xml '\\\\n\\\\n\\\\nCmd exec error.\\\\n\\\", \\\"code\\\": \\\"400\\\", \\\"failed\\\": true, \\\"input\\\": \\\"copy running-config startup-config\\\", \\\"msg\\\": \\\"Input CLI command error\\\", \\\"output\\\": {\\\"clierror\\\": \\\"Syntax error while parsing 'copy running-config startup-config  | xml '\\\\n\\\\n\\\\nCmd exec error.\\\\n\\\", \\\"code\\\": \\\"400\\\", \\\"input\\\": \\\"copy running-config startup-config\\\", \\\"msg\\\": \\\"Input CLI command error\\\"}, \\\"url\\\": \\\"http://172.21.100.12:8080/ins\\\"}\\r\\n```\\r\\n\\r\\nNo issue when configuring through the CLI:\\r\\n\\r\\n```\\r\\nNX_OSv_Spine_12# copy running-config startup-config \\r\\n[########################################] 100%\\r\\nCopy complete.\\r\\nNX_OSv_Spine_12# show startup-config\\r\\n\\r\\n!Command: show startup-config\\r\\n!Time: Mon Oct 10 18:12:08 2016\\r\\n!Startup config saved at: Mon Oct 10 18:01:55 2016\\r\\n\\r\\nversion 7.3(0)D1(1)\\r\\npower redundancy-mode redundant\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"nxos_command\", \n    \"component_raw\": \"nxos_command\\nnxos_config\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18971\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nxos/nxos_command.py\", \n    \"summary\": \"cf. title\", \n    \"title\": \"Timeout: Cannot save running-config with nxos_command or save: yes in nxos_config\"\n  }, \n  \"18972\": {\n    \"ansible_version\": \"2.1.0\", \n    \"body\": \"_From @theraser on January 8, 2016 14:7_\\n\\n##### ISSUE TYPE\\n\\nBug Report\\n##### COMPONENT NAME\\n\\ntemplate module\\n##### ANSIBLE VERSION\\n\\n2.1.0\\n##### SUMMARY\\n\\nIssue Type: Bug Report\\nAnsible Version: ansible-playbook 2.1.0 (devel 45355cd566) last updated 2016/01/08 15:07:35 (GMT +200)\\nEnvironment: Ubuntu 15.04\\nProblem: I thing the expected behaviour is that Ansible fails on runtime when a source file is missing.\\n\\nThe old error looks like this:\\n\\n```\\nfatal: [{{hostname}}] => input file not found at /{foobar}/roles/foobar/templates/etc/apt/foo/bar.j2 or /{foobar}/etc/apt/foo/bar.j2\\n```\\n\\nUsing the development version a non-existing source file is just ignored and marked as green during runtime - the destination file isn't touched at all.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#2784_\", \n    \"component_name\": \"template\", \n    \"component_raw\": \"template module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18972\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/template.py\", \n    \"summary\": \"Issue Type: Bug Report\\nAnsible Version: ansible-playbook 2.1.0 (devel 45355cd566) last updated 2016/01/08 15:07:35 (GMT +200)\", \n    \"title\": \"template_module: does not fail anymore when source file is absent\"\n  }, \n  \"18973\": {\n    \"ansible_version\": \"ansible 2.1.0 (devel 210cf06d9a) last updated 2016/01/04 112126 (GMT +200)\", \n    \"body\": \"_From @theraser on January 7, 2016 13:46_\\n\\nIssue Type: Feature Idea\\nComponent Name: find module\\nAnsible Version: ansible 2.1.0 (devel 210cf06d9a) last updated 2016/01/04 11:21:26 (GMT +200)\\nEnvironment: Ubuntu 15.04\\nExample: To replace a simple\\n\\n```\\nfind /home/*/foo/bar/\\n```\\n\\nwith the new \\\"find\\\" module you have to use a lot of nested \\\"find\\\" calls (one for each sub folder level). It would be great if this could be done with one simple call.\\n\\nAt the moment this is the result:\\n\\n```\\n\\\"msg\\\": \\\"/home/*/foo/bar/ was skipped as it does not seem to be a valid directory or it cannot be accessed\\\\n\\\"\\n```\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#2775_\", \n    \"component_name\": \"find\", \n    \"component_raw\": \": find module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18973\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/find.py\", \n    \"summary\": null, \n    \"title\": \"find_module: allow regex in paths\"\n  }, \n  \"18974\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Bug Report\\r\\n##### COMPONENT NAME\\r\\n\\r\\nnxos_nxapi\\r\\nnxos_command\\r\\nnxos_template\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible --version\\r\\nansible 2.3.0\\r\\n```\\r\\n##### CONFIGURATION\\r\\n\\r\\ninventory = ./hosts\\r\\nroles_path = /home/actionmystique/Program-Files/Ubuntu/Ansible/git-Ansible/Roles/roles\\r\\nfact_caching = redis\\r\\nfact_caching_timeout = 86400\\r\\n##### OS / ENVIRONMENT\\r\\n- **Local host**: Ubuntu 16.10 4.8\\r\\n- **Target nodes**: \\r\\n  - NX-OSv 7.3(0)D1(1) (last release available in Cisco VIRL)\\r\\n  - NX-OSv 7.2(0)\\r\\n##### SUMMARY\\r\\n\\r\\nRunning nxos_nxapi triggers an exception, whereas I can manually login into the target node with SSH.\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n**Inventory ./hosts**:\\r\\n\\r\\n```\\r\\n[nx_osv]\\r\\n192.168.137.244 ansible_host=NX_OSv_1 mgt_interface=mgmt0\\r\\n192.168.137.234 ansible_host=NX_OSv_2 mgt_interface=mgmt0\\r\\n```\\r\\n\\r\\nStructure passed as \\\"**provider**\\\": connections.ssh\\r\\nDefined in group_vars/nx_osv/connections.yml\\r\\n\\r\\n```\\r\\nconnections:\\r\\n        compute: local\\r\\n...\\r\\n        ssh:\\r\\n          transport: cli \\r\\n          host: \\\"{{ inventory_hostname }}\\\"\\r\\n          # ansible_port\\r\\n          port: 22\\r\\n          # ansible_user\\r\\n          username: admin\\r\\n          # ansible_ssh_pass\\r\\n          password: xxxxxxxxxxx\\r\\n          authorize: yes\\r\\n          # enable_secret_password\\r\\n          auth_pass: xxxxxxxxxx\\r\\n          # private_key_file\\r\\n          ssh_keyfile: \\\"~/.ssh/id_rsa\\\"\\r\\n          version: 2\\r\\n          timeout: 10\\r\\nansible_connection: \\\"{{ connections.compute }}\\\" \\r\\n```\\r\\n\\r\\nStructures http & https\\r\\nDefined in group_vars/nx_osv/http.yml\\r\\n\\r\\n```\\r\\nhttp:\\r\\n        # enable_http can be true / false\\r\\n        service: true\\r\\n        port: 80\\r\\nhttps:\\r\\n        # enable_https can be true / false\\r\\n        service: false\\r\\n        port: 10443\\r\\n```\\r\\n\\r\\n**Role**: nxos_init\\r\\n\\r\\n```\\r\\n- include_vars: \\\"{{ role_path }}/../../group_vars/{{ hostvars[inventory_hostname].group_names[0] }}/connections.yml\\\"\\r\\n- include_vars: \\\"{{ role_path }}/../../group_vars/{{ hostvars[inventory_hostname].group_names[0] }}/http.yml\\\"\\r\\n\\r\\n- name: Enable NX-API\\r\\n  nxos_nxapi: \\r\\n      state=started \\r\\n      sandbox=false\\r\\n      http={{ http.service }}\\r\\n      http_port={{ http.port }}\\r\\n      https={{ https.service }}\\r\\n      https_port={{ https.port }}\\r\\n      provider={{ connections.ssh }}\\r\\n  register: return\\r\\n...\\r\\n```\\r\\n\\r\\n**Playbook**: init.yml\\r\\n\\r\\n```\\r\\n- name: Initialize all NX-OS features & save facts\\r\\n  hosts:\\r\\n    - nx_os\\r\\n    - nx_osv\\r\\n  roles:\\r\\n    - nxos_init\\r\\n```\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nSuccessful nxos_nxapi\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nTASK [nxos_init : Enable NX-API] ***********************************************\\r\\ntask path: /home/actionmystique/Program-Files/Ubuntu/Ansible/git-Ansible/roles/nxos_init/tasks/main.yml:29\\r\\n<NX_OSv_1> ESTABLISH LOCAL CONNECTION FOR USER: root\\r\\n<NX_OSv_1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1470230351.99-196486228076050 `\\\" && echo ansible-tmp-1470230351.99-196486228076050=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1470230351.99-196486228076050 `\\\" ) && sleep 0'\\r\\n<NX_OSv_2> ESTABLISH LOCAL CONNECTION FOR USER: root\\r\\n<NX_OSv_2> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1470230351.99-268650786865216 `\\\" && echo ansible-tmp-1470230351.99-268650786865216=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1470230351.99-268650786865216 `\\\" ) && sleep 0'\\r\\n<NX_OSv_2> PUT /tmp/tmpu2bixy TO /root/.ansible/tmp/ansible-tmp-1470230351.99-268650786865216/nxos_nxapi\\r\\n<NX_OSv_1> PUT /tmp/tmpyyn3Hd TO /root/.ansible/tmp/ansible-tmp-1470230351.99-196486228076050/nxos_nxapi\\r\\n<NX_OSv_2> EXEC /bin/sh -c 'LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1470230351.99-268650786865216/nxos_nxapi; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1470230351.99-268650786865216/\\\" > /dev/null 2>&1 && sleep 0'\\r\\n<NX_OSv_1> EXEC /bin/sh -c 'LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1470230351.99-196486228076050/nxos_nxapi; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1470230351.99-196486228076050/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/tmp/ansible_4CyDsX/ansible_module_nxos_nxapi.py\\\", line 257, in <module>\\r\\n    main()\\r\\n  File \\\"/tmp/ansible_4CyDsX/ansible_module_nxos_nxapi.py\\\", line 248, in main\\r\\n    result = config_server(module)\\r\\n  File \\\"/tmp/ansible_4CyDsX/ansible_module_nxos_nxapi.py\\\", line 156, in config_server\\r\\n    nxapi_state = get_nxapi_state(module)\\r\\n  File \\\"/tmp/ansible_4CyDsX/ansible_module_nxos_nxapi.py\\\", line 148, in get_nxapi_state\\r\\n    features = module.execute(['show feature | grep nxapi'])[0]\\r\\n  File \\\"/tmp/ansible_4CyDsX/ansible_modlib.zip/ansible/module_utils/nxos.py\\\", line 253, in execute\\r\\n  File \\\"/tmp/ansible_4CyDsX/ansible_modlib.zip/ansible/module_utils/nxos.py\\\", line 230, in connect\\r\\n  File \\\"/tmp/ansible_4CyDsX/ansible_modlib.zip/ansible/module_utils/nxos.py\\\", line 182, in connect\\r\\n  File \\\"/tmp/ansible_4CyDsX/ansible_modlib.zip/ansible/module_utils/shell.py\\\", line 120, in open\\r\\n  File \\\"/tmp/ansible_4CyDsX/ansible_modlib.zip/ansible/module_utils/shell.py\\\", line 129, in receive\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/paramiko/channel.py\\\", line 615, in recv\\r\\n    raise socket.timeout()\\r\\nsocket.timeout\\r\\n...\\r\\n```\\r\\n##### Troubleshooting\\r\\n- Downgrading paramiko from 2.0.1 to 1.16 does not change anything\\r\\n- When trying to manually ssh into the target:\\r\\n\\r\\n```\\r\\n# ssh admin@192.168.137.234\\r\\nUser Access Verification\\r\\nCisco NX-OS Software\\r\\nCopyright (c) 2002-2016, Cisco Systems, Inc. All rights reserved.\\r\\nNX-OSv software (\\\"NX-OSv Software\\\") and related documentation,\\r\\n...\\r\\nNX_OSv_2# exit\\r\\nConnection to 192.168.137.234 closed.\\r\\n```\\r\\n\", \n    \"component_name\": \"nxos_nxapi\", \n    \"component_raw\": \"nxos_nxapi\\nnxos_command\\nnxos_template\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18974\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nxos/nxos_nxapi.py\", \n    \"summary\": \"Running nxos_nxapi triggers an exception, whereas I can manually login into the target node with SSH.\", \n    \"title\": \"timeout [regression] Exception in multiple nxos_* modules when using SSH transport\"\n  }, \n  \"18976\": {\n    \"ansible_version\": \"N/A\", \n    \"body\": \"_From @mapreri on December 22, 2014 20:2_\\n\\n##### ISSUE TYPE\\n\\nFeature Idea\\n##### COMPONENT NAME\\n\\nauthorized_key module\\n##### ANSIBLE VERSION\\n\\nN/A\\n##### SUMMARY\\n\\nI'd like to be able to specify:\\n1) owner/group of the AuthorizedKeysFile directory (currently weird: it's the last processes users, in my case where I iterate over a list of user+keys and put them in /etc/ssh/authorized_keys)\\n2) mode of the file: there is rarely point in having it 0600 (the standard, ok, but still)....\\n3) owner/group of the file: let's say I don't want to let the user to be able to change the file on their own.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#552_\", \n    \"component_name\": \"authorized_key\", \n    \"component_raw\": \"authorized_key module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18976\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/authorized_key.py\", \n    \"summary\": \"I'd like to be able to specify:\\n1) owner/group of the AuthorizedKeysFile directory (currently weird: it's the last processes users, in my case where I iterate over a list of user+keys and put them in /etc/ssh/authorized_keys)\\n2) mode of the file: there is rarely point in having it 0600 (the standard, ok, but still)....\\n3) owner/group of the file: let's say I don't want to let the user to be able to change the file on their own.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#552_\", \n    \"title\": \"please add more options to authorized_key\"\n  }, \n  \"18977\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/dminca/Repos/work/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/task/feature -->\\r\\n`modules/core/cloud/google/gce.py`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/dminca/Repos/work/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n```yaml\\r\\n[defaults]\\r\\ninventory      = ./inventories\\r\\nroles_path    = ./roles\\r\\nhost_key_checking = False\\r\\nlog_path = /var/log/ansible.log\\r\\nvault_password_file = ./vault_password_file\\r\\nansible_managed = Ansible managed: {file} on {host}\\r\\nretry_files_save_path = /tmp/.ansible-retry\\r\\n\\r\\n[ssh_connection]\\r\\ncontrol_path = %(directory)s/%%h-%%p-%%r\\r\\npipelining = True\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n`Ubuntu 16.04.1 LTS`\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n`gce` cloud module errors out `AttributeError: 'NoneType' object has no attribute 'startswith'`\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n- populate with your credentials & api token `roles/debian-gce/vars/main.yml`\\r\\n```yaml\\r\\nzone: \\r\\n  eu03: europe-west-1-d\\r\\n\\r\\nmachine_type:\\r\\n  std03: n1-standard-4\\r\\n\\r\\nimage:\\r\\n  debian: debian-8\\r\\n\\r\\netc...\\r\\n```\\r\\n- add the `service-account.json` file in `roles/debian-gce/files/service-account.json`\\r\\n- encrypt with `ansible-vault` the following:\\r\\n  - `files/service-account.json`\\r\\n  - `vars/main.yml`\\r\\n- run the playbook\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n---\\r\\n- name: create GCE instance(s)\\r\\n  gce:\\r\\n    instance_names: rancher01,rancher02\\r\\n    zone: \\\"{{ zone.eu03 }}\\\"\\r\\n    machine_type: \\\"{{ machine_type.std03 }}\\\"\\r\\n    image: \\\"{{ image.debian }}\\\"\\r\\n    state: present\\r\\n    service_account_email: \\\"{{ service_account_email }}\\\"\\r\\n    credentials_file: \\\"{{ role_path + '/files/' + creds_file }}\\\"\\r\\n    project_id: \\\"{{ project_id }}\\\"\\r\\n  register: gce\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n- create the GCE instances rancher01,rancher02\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n- errors out with `AttributeError: 'NoneType' object has no attribute 'startswith'`\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```sh\\r\\n# if ran with ansible-vault encrypted files\\r\\n\\u279c  work/ansible git:(feat/gce_staging) \\u2717 ansible-playbook playbooks/groups/gce-staging.yml\\r\\n\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [debian-google-gce : create GCE instance(s)] ******************************\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"RSA key format is not supported\\\"}\\r\\n        to retry, use: --limit @/tmp/.ansible-retry/gce-staging.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=1   \\r\\n\\r\\n\\r\\n# if ran with ansible-vault decrypted files\\r\\n\\u279c  work/ansible git:(feat/gce_staging) \\u2717 ansible-playbook playbooks/groups/gce-staging.yml -vvv          \\r\\nUsing /home/dminca/Repos/work/ansible/ansible.cfg as config file\\r\\nstatically included: /home/dminca/Repos/work/ansible/roles/debian-google-gce/tasks/create-instance.yml\\r\\n\\r\\nPLAYBOOK: gce-staging.yml ******************************************************\\r\\n1 plays in playbooks/groups/gce-staging.yml\\r\\n\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/core/system/setup.py\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: dminca\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python && sleep 0'\\r\\nok: [localhost]\\r\\n\\r\\nTASK [debian-google-gce : create GCE instance(s)] ******************************\\r\\ntask path: /home/dminca/Repos/work/ansible/roles/debian-google-gce/tasks/create-instance.yml:2\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/core/cloud/google/gce.py\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: dminca\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python && sleep 0'\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/tmp/ansible_XlLg3h/ansible_module_gce.py\\\", line 671, in <module>\\r\\n    main()\\r\\n  File \\\"/tmp/ansible_XlLg3h/ansible_module_gce.py\\\", line 633, in main\\r\\n    module, gce, inames)\\r\\n  File \\\"/tmp/ansible_XlLg3h/ansible_module_gce.py\\\", line 390, in create_instances\\r\\n    lc_machine_type = gce.ex_get_size(machine_type)\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/libcloud/compute/drivers/gce.py\\\", line 6898, in ex_get_size\\r\\n    zone = self.ex_get_zone(zone)\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/libcloud/compute/drivers/gce.py\\\", line 7167, in ex_get_zone\\r\\n    if name.startswith('https://'):\\r\\nAttributeError: 'NoneType' object has no attribute 'startswith'\\r\\n\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"gce\\\"\\r\\n    }, \\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_XlLg3h/ansible_module_gce.py\\\\\\\", line 671, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_XlLg3h/ansible_module_gce.py\\\\\\\", line 633, in main\\\\n    module, gce, inames)\\\\n  File \\\\\\\"/tmp/ansible_XlLg3h/ansible_module_gce.py\\\\\\\", line 390, in create\\r\\n_instances\\\\n    lc_machine_type = gce.ex_get_size(machine_type)\\\\n  File \\\\\\\"/usr/local/lib/python2.7/dist-packages/libcloud/compute/drivers/gce.py\\\\\\\", line 6898, in ex_get_size\\\\n    zone = self.ex_get_zone(zone)\\\\n  File \\\\\\\"/usr/local/lib/python2.7/dist-packages/libcloud/compute/drivers/gce.py\\\\\\\", line 7167, in ex_get_zone\\\\\\r\\nn    if name.startswith('https://'):\\\\nAttributeError: 'NoneType' object has no attribute 'startswith'\\\\n\\\", \\r\\n    \\\"module_stdout\\\": \\\"\\\", \\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n        to retry, use: --limit @/tmp/.ansible-retry/gce-staging.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=1   \\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"s/core/cloud/google/gce.py\", \n    \"component_raw\": \"`modules/core/cloud/google/gce.py`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18977\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"gce\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/google/gce.py\", \n    \"summary\": \"`gce` cloud module errors out `AttributeError: 'NoneType' object has no attribute 'startswith'`\", \n    \"title\": \"GCE cloud module 'NoneType' object has no attribute 'startswith'\"\n  }, \n  \"18978\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Feature Idea\\r\\n##### COMPONENT NAME\\r\\n\\r\\nsnmp_facts\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n##### CONFIGURATION\\r\\n\\r\\ninventory   = ./hosts\\r\\ngathering = explicit\\r\\nroles_path = /home/actionmystique/Program-Files/Ubuntu/Ansible/git-Ansible/roles\\r\\nprivate_role_vars = yes\\r\\nlog_path = /var/log/ansible.log\\r\\nfact_caching = redis\\r\\nfact_caching_timeout = 86400\\r\\nretry_files_enabled = False\\r\\n##### OS / ENVIRONMENT\\r\\n- host: Ubuntu 16.04 4.4.0\\r\\n- target: **all network devices**\\r\\n##### SUMMARY\\r\\n\\r\\nsnmp_facts does not offer a provider parameter, unlike many other networking modules from Cisco, Arista, Juniper, and so on.... This feature would be very useful, allowing us to hand over only one structured variable which can be reused in other roles. \\r\\nThis feature should be extended to all network, system, ... modules.\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nStructure which could be handed over as \\\"**provider**\\\": snmp.ssh\\r\\n\\r\\n``````\\r\\nsnmp\\r\\n...\\r\\n        ssh:\\r\\n          transport: cli \\r\\n          host: \\\"{{ ansible_host }}\\\"\\r\\n          # Username is part of the following required group in v3\\r\\n          group_name: admin\\r\\n          # Username required if version is v3\\r\\n          username: admin\\r\\n          # New SNMP Version to use\\r\\n          version: v3\\r\\n          # community string, required if version is v1/v2c - up to 32 alphanumeric characters long. Spaces are not permitted.\\r\\n          community: xxxxxxxx\\r\\n          # Authentication level, required if version is v3\\r\\n          level: authPriv\\r\\n          # Authentication key, required if version is v3\\r\\n          authkey: xxxxxxxx\\r\\n          # Type of password\\r\\n          authkey_type: \\r\\n          # Hashing algoritm, required if version is v3\\r\\n          integrity: sha\\r\\n          # Encryption algoritm, required if level is authPriv\\r\\n          privacy: aes\\r\\n          # Encryption key, required if version is authPriv\\r\\n          privkey: xxxxxxxx```\\r\\n``````\\r\\n\", \n    \"component_name\": \"snmp_facts\", \n    \"component_raw\": \"snmp_facts\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18978\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/snmp_facts.py\", \n    \"summary\": \"snmp_facts does not offer a provider parameter, unlike many other networking modules from Cisco, Arista, Juniper, and so on.... This feature would be very useful, allowing us to hand over only one structured variable which can be reused in other roles. \\n\\nThis feature should be extended to all network, system, ... modules.\", \n    \"title\": \"[Enhancement] Add a \\\"provider\\\" parameter to snmp_facts module\"\n  }, \n  \"18979\": {\n    \"ansible_version\": \"ansible 2.1.2.0 (v2.1.2.0-1 29f2f26278) last updated 2016/11/28 110919 (GMT +100)\\nlib/ansible/modules/core (detached HEAD 17ee1cfaf9) last updated 2016/11/28 115846 (GMT +100)\\nlib/ansible/modules/extras (detached HEAD d312f34d9b) last updated 2016/11/28 115847 (GMT +100)\\nconfig file = /home/ansible/opencast-ansible/ansible.cfg\\nconfigured module search path = [/home/ansible/src/ansible/lib/ansible/modules/core /home/ansible/src/ansible/lib/anisble/modules/extra]\", \n    \"body\": \"_From @JamesUoM on November 29, 2016 13:38_\\n\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nyum\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.2.0 (v2.1.2.0-1 29f2f26278) last updated 2016/11/28 11:09:19 (GMT +100)\\r\\n  lib/ansible/modules/core: (detached HEAD 17ee1cfaf9) last updated 2016/11/28 11:58:46 (GMT +100)\\r\\n  lib/ansible/modules/extras: (detached HEAD d312f34d9b) last updated 2016/11/28 11:58:47 (GMT +100)\\r\\n  config file = /home/ansible/opencast-ansible/ansible.cfg\\r\\n  configured module search path = ['/home/ansible/src/ansible/lib/ansible/modules/core', '/home/ansible/src/ansible/lib/anisble/modules/extra']\\r\\n\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nRed Hat 6\\r\\n\\r\\n##### SUMMARY\\r\\nThe Yum module fails when trying make sure an RPM is installed via a URL if it must do so via a http proxy.\\r\\n\\r\\nI found that line 246 in the yum module it tries to fetch the url directly possibly circumventing the proxy settings: \\r\\nhttps://github.com/ansible/ansible-modules-core/blob/c67315fc4e0c3bc5cb519ef2651cccf4bc659780/packaging/os/yum.py#L246\\r\\n\\r\\nNote: the proxy settings are also set in /etc/profile.d/proxy.sh but I guess these are not picked up when when the remote module code is executed.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nmyserver must use a http_proxy which has been correctly set in  /etc/yum.conf\\r\\n\\r\\nI'm using a playbook but the single command also fails:\\r\\n\\r\\n```\\r\\nansible myserver -i inventory/ -s -m yum -a \\\"state=present name=http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm\\\"\\r\\n```\\r\\n\\r\\nNote: it doesn't matter if the rpm is already cached  in /var/tmp/yum-### or already installed or not.\\r\\nNote: running the yum command below on myserver works as expected.\\r\\n \\r\\n```\\r\\nsudo yum install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm\\r\\n````\\r\\n##### EXPECTED RESULTS\\r\\nSUCCESS or Changed\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nFails to confirm that it is installed\\r\\n```\\r\\nfatal: [myserver]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failure downloading http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm, 'NoneType' object has no attribute 'read'\\\"}\\r\\n```\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5757_\", \n    \"component_name\": \"yum\", \n    \"component_raw\": \"yum\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18979\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/yum.py\", \n    \"summary\": \"The Yum module fails when trying make sure an RPM is installed via a URL if it must do so via a http proxy.\\n\\n\\n\\nI found that line 246 in the yum module it tries to fetch the url directly possibly circumventing the proxy settings: \\n\\nhttps://github.com/ansible/ansible-modules-core/blob/c67315fc4e0c3bc5cb519ef2651cccf4bc659780/packaging/os/yum.py#L246\\n\\n\\n\\nNote: the proxy settings are also set in /etc/profile.d/proxy.sh but I guess these are not picked up when when the remote module code is executed.\", \n    \"title\": \"Yum module fails when installing via URL if a yum http_proxy is required\"\n  }, \n  \"18980\": {\n    \"ansible_version\": \"2.2\", \n    \"body\": \"_From @Plork on October 20, 2016 11:11_\\n\\n##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nvmware_portgroup\\n##### ANSIBLE VERSION\\n\\n```\\n2.2\\n```\\n##### OS / ENVIRONMENT\\n\\nUbuntu 14.04\\n##### SUMMARY\\n\\nWhen specifiying a vcenter server only 1 host of your datacenter is changed.\\n##### STEPS TO REPRODUCE\\n\\n```\\n    - name: Add Management Network VM Portgroup\\n      local_action:\\n        module: vmware_portgroup\\n        hostname: vcenter_hostname\\n        username: vcenter_username\\n        password: vcenter_password\\n        switch_name: vswitch_name\\n        portgroup_name: portgroup_name\\n        vlan_id: vlan_id\\n```\\n##### EXPECTED RESULTS\\n\\nWhen specifying a vcenter server you should be able to specify a cluster of all the hosts you want changed.\\n##### ACTUAL RESULTS\\n\\n```\\n    host = get_all_objs(content, [vim.HostSystem])\\n    if not host:\\n        raise SystemExit(\\\"Unable to locate Physical Host.\\\")\\n    host_system = host.keys()[0] <<\\n```\\n\\nonly the first item in host.keys is changed with the new portgroup\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#3248_\", \n    \"component_name\": \"vmware_portgroup\", \n    \"component_raw\": \"vmware_portgroup\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18980\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_portgroup.py\", \n    \"summary\": \"When specifiying a vcenter server only 1 host of your datacenter is changed.\", \n    \"title\": \"vsphere_portgroup only updates 1 host.\"\n  }, \n  \"18983\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel 28feba2fb3) last updated 2016/09/14 122532 (GMT +200)\\nlib/ansible/modules/core (detached HEAD ae6992bf8c) last updated 2016/09/14 122532 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD afd0b23836) last updated 2016/09/14 122532 (GMT +200)\", \n    \"body\": \"_From @tumbl3w33d on October 14, 2016 12:57_\\n\\n##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\ndocker_container\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0 (devel 28feba2fb3) last updated 2016/09/14 12:25:32 (GMT +200)\\n  lib/ansible/modules/core: (detached HEAD ae6992bf8c) last updated 2016/09/14 12:25:32 (GMT +200)\\n  lib/ansible/modules/extras: (detached HEAD afd0b23836) last updated 2016/09/14 12:25:32 (GMT +200)\\n```\\n##### CONFIGURATION\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nDocker uses the log driver 'json-file' by default (also stated in the docker_container documentation). If you want to provide log_options (e.g. for log rotation) you have to explicitly set the log_driver to json-file, else this module attribute is ignored, although it should IMHO assume the Docker default.\\n\\nThis behavior is probably caused by the [following code](https://github.com/ansible/ansible-modules-core/blob/devel/cloud/docker/docker_container.py#L1091)\\n\\n```\\n    def _parse_log_config(self):\\n        '''\\n        Create a LogConfig object\\n        '''\\n        if self.log_driver is None:\\n            return None\\n```\\n##### STEPS TO REPRODUCE\\n\\n```\\n  docker_container:\\n    name: mongodb\\n    image: bitnami/mongodb\\n    log_options:\\n      max-size: \\\"512m\\\"\\n      max-file: \\\"5\\\"\\n```\\n##### EXPECTED RESULTS\\n\\nWhen you check the specs of the running container (docker inspect) you see should see the passed log options.\\n\\n```\\n            \\\"LogConfig\\\": {\\n                \\\"Type\\\": \\\"json-file\\\",\\n                \\\"Config\\\": {\\n                    \\\"max-file\\\": \\\"5\\\",\\n                    \\\"max-size\\\": \\\"512m\\\"\\n                }\\n```\\n##### ACTUAL RESULTS\\n\\nWhen you check the specs of the running container you see that the log config block is empty.\\n\\n```\\n            \\\"LogConfig\\\": {\\n                \\\"Type\\\": \\\"json-file\\\",\\n                \\\"Config\\\": {}\\n            },\\n```\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5269_\", \n    \"component_name\": \"docker_container\", \n    \"component_raw\": \"docker_container\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18983\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"summary\": \"Docker uses the log driver 'json-file' by default (also stated in the docker_container documentation). If you want to provide log_options (e.g. for log rotation) you have to explicitly set the log_driver to json-file, else this module attribute is ignored, although it should IMHO assume the Docker default.\\n\\nThis behavior is probably caused by the [following code](https://github.com/ansible/ansible-modules-core/blob/devel/cloud/docker/docker_container.py#L1091)\\n\\n```\\n    def _parse_log_config(self):\\n        '''\\n        Create a LogConfig object\\n        '''\\n        if self.log_driver is None:\\n            return None\\n```\", \n    \"title\": \"docker_container doesn't allow setting log_options without setting log_driver\"\n  }, \n  \"18984\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel 28feba2fb3) last updated 2016/09/14 122532 (GMT +200)\\nlib/ansible/modules/core (detached HEAD ae6992bf8c) last updated 2016/09/14 122532 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD afd0b23836) last updated 2016/09/14 122532 (GMT +200)\", \n    \"body\": \"_From @tumbl3w33d on October 20, 2016 20:2_\\n\\n##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\ndocker_container\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0 (devel 28feba2fb3) last updated 2016/09/14 12:25:32 (GMT +200)\\n  lib/ansible/modules/core: (detached HEAD ae6992bf8c) last updated 2016/09/14 12:25:32 (GMT +200)\\n  lib/ansible/modules/extras: (detached HEAD afd0b23836) last updated 2016/09/14 12:25:32 (GMT +200)\\n```\\n##### CONFIGURATION\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nIt is not possible to disable container logging, although 'none' is a valid option for docker run.\\n\\n> none  Disables any logging for the container. docker logs won\\u2019t be available with this driver.\\n> Source: https://docs.docker.com/engine/admin/logging/overview/\\n##### STEPS TO REPRODUCE\\n\\n```\\n  docker_container:\\n   [...]\\n    log_driver: none\\n```\\n##### EXPECTED RESULTS\\n\\nContainer with disabled logging started.\\n##### ACTUAL RESULTS\\n\\n```\\nFAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"value of log_driver must be one of: json-file,syslog,journald,gelf,fluentd,awslogs,splunk, got: none\\\"}\\n```\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5337_\", \n    \"component_name\": \"docker_container\", \n    \"component_raw\": \"docker_container\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18984\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"summary\": \"It is not possible to disable container logging, although 'none' is a valid option for docker run.\\n\\n> none  Disables any logging for the container. docker logs wont be available with this driver.\\n> Source: https://docs.docker.com/engine/admin/logging/overview/\", \n    \"title\": \"docker_container does not allow to disable container logging via log_driver\"\n  }, \n  \"18985\": {\n    \"ansible_version\": \"2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nBlock.\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAnsible disallow to use \\\"name\\\" attribute for a Block. At the same time list of block attributes in documentation contains \\\"name\\\".\\r\\nhttp://docs.ansible.com/ansible/playbooks_directives.html#block\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n- name: Block name\\r\\n  block:\\r\\n    - name: Task name\\r\\n      command: true\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nPlaybook executed successfully.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nAnsible prints error:\\r\\n```\\r\\nERROR! 'name' is not a valid attribute for a Block\\r\\n```\\r\\n\", \n    \"component_name\": \"block.\", \n    \"component_raw\": \"Block.\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18985\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Ansible disallow to use \\\"name\\\" attribute for a Block. At the same time list of block attributes in documentation contains \\\"name\\\".\\n\\nhttp://docs.ansible.com/ansible/playbooks_directives.html#block\", \n    \"title\": \"Cannot use \\\"name\\\" attribute for a Block\"\n  }, \n  \"18986\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\ncontrib/inventory/consul\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nTake in account boolean value, actually their are ignored and we can not switch off use of suffixe for groups\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"contrib/inventory/consul\", \n    \"component_raw\": \"contrib/inventory/consul\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18986\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Take in account boolean value, actually their are ignored and we can not switch off use of suffixe for groups\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"Consul inventory : take in account boolean value in config file\"\n  }, \n  \"18987\": {\n    \"ansible_version\": \"ansible 2.0.1.0\", \n    \"body\": \"_From @tjbenator on April 23, 2016 7:18_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n- apt\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.0.1.0\\n```\\n##### CONFIGURATION\\n\\nMostly defaults, nothing that would affect this.\\nhttps://github.com/binarypenguin/automation/blob/master/ansible.cfg\\n##### OS / ENVIRONMENT\\n\\nUbuntu 16.04 -> Ubuntu 16.04\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n```\\nansible [HOSTNAME] -m apt -a 'update_cache=yes cache_valid_time=3600'\\n```\\n##### EXPECTED RESULTS\\n\\nDownload apt updates\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with high verbosity (-vvvv) -->\\n\\n```\\nHOSTNAME | FAILED! => {\\n    \\\"changed\\\": false, \\n    \\\"failed\\\": true, \\n    \\\"invocation\\\": {\\n        \\\"module_args\\\": {\\n            \\\"cache_valid_time\\\": 3600, \\n            \\\"deb\\\": null, \\n            \\\"default_release\\\": null, \\n            \\\"dpkg_options\\\": \\\"force-confdef,force-confold\\\", \\n            \\\"force\\\": false, \\n            \\\"install_recommends\\\": null, \\n            \\\"package\\\": null, \\n            \\\"purge\\\": false, \\n            \\\"state\\\": \\\"present\\\", \\n            \\\"update_cache\\\": true, \\n            \\\"upgrade\\\": null\\n        }, \\n        \\\"module_name\\\": \\\"apt\\\"\\n    }, \\n    \\\"msg\\\": \\\"Could not fetch updated apt files\\\"\\n}\\n```\\n\\n`sudo apt-get update` works fine on the host. I thought the issue was that Ubuntu 16.04 LTS does not include Aptitude by default. Also python-apt wasn't installed. Installing them both on the remote machine did not fix the issue.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#3523_\", \n    \"component_name\": \"apt\", \n    \"component_raw\": \"- apt\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18987\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/apt.py\", \n    \"summary\": \"\", \n    \"title\": \"Apt module failing to update cache in Ubuntu 16.04 LTS\"\n  }, \n  \"18988\": {\n    \"ansible_version\": \"ansible 2.1.2.0\", \n    \"body\": \"<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n##### ISSUE TYPE\\r\\n- Bug Report\\r\\n  ##### COMPONENT NAME\\r\\n  iptables\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n\\r\\n```\\r\\nansible 2.1.2.0\\r\\n```\\r\\n##### CONFIGURATION\\r\\n\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\nVanilla\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\nDebian Testing\\r\\n##### SUMMARY\\r\\n\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\nWhen using the iptables module with _reject_with_ and _jump: REJECT_ it results in\\r\\n\\r\\n```\\r\\nfailed: [127.0.0.1] (item=ipv4) => {\\\"cmd\\\": \\\"/sbin/iptables -t filter -A INPUT -p tcp -j REJECT -j REJECT --reject-with tcp-reset\\\", \\\"failed\\\": true, \\\"item\\\": \\\"ipv4\\\", \\\"msg\\\": \\\"iptables v1.6.0: multiple -j flags not allowed\\\\nTry `iptables -h' or 'iptables --help' for more information.\\\", \\\"rc\\\": 2, \\\"stderr\\\": \\\"iptables v1.6.0: multiple -j flags not allowed\\\\nTry `iptables -h' or 'iptables --help' for more information.\\\\n\\\", \\\"stdout\\\": \\\"\\\", \\\"stdout_lines\\\": []}\\r\\n```\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n``` yaml\\r\\n- name: Reject tcp with tcp-reset\\r\\n  iptables:\\r\\n    chain: INPUT\\r\\n    protocol: tcp\\r\\n    jump: REJECT\\r\\n    reject_with: tcp-reset\\r\\n    ip_version: ipv4\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nI expect it to be usable as an iptables statement would be\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nResults in failure\\r\\n\\r\\nWas previously in https://github.com/ansible/ansible-modules-extras/issues/3315\\r\\n\", \n    \"component_name\": \"iptables\", \n    \"component_raw\": \"iptables\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18988\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/iptables.py\", \n    \"summary\": \"When using the iptables module with _reject_with_ and _jump: REJECT_ it results in\\n\\n\\n\\n```\\n\\nfailed: [127.0.0.1] (item=ipv4) => {\\\"cmd\\\": \\\"/sbin/iptables -t filter -A INPUT -p tcp -j REJECT -j REJECT --reject-with tcp-reset\\\", \\\"failed\\\": true, \\\"item\\\": \\\"ipv4\\\", \\\"msg\\\": \\\"iptables v1.6.0: multiple -j flags not allowed\\\\nTry `iptables -h' or 'iptables --help' for more information.\\\", \\\"rc\\\": 2, \\\"stderr\\\": \\\"iptables v1.6.0: multiple -j flags not allowed\\\\nTry `iptables -h' or 'iptables --help' for more information.\\\\n\\\", \\\"stdout\\\": \\\"\\\", \\\"stdout_lines\\\": []}\\n\\n```\", \n    \"title\": \"Using reject_with with a previously defined jump: REJECT results in two Jump statements\"\n  }, \n  \"18989\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/madonius/.ansible.cfg\\nconfigured module search path = [/home/madonius/.ansible/library]\", \n    \"body\": \"<!---\\r\\nPlease do not report issues/requests related to Ansible modules here !!\\r\\n\\r\\nReport them to the appropriate modules-core or modules-extras project:\\r\\n  - https://github.com/ansible/ansible-modules-core/issues\\r\\n  - https://github.com/ansible/ansible-modules-extras/issues\\r\\n\\r\\nAlso verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\niptables module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/madonius/.ansible.cfg\\r\\n  configured module search path = ['/home/madonius/.ansible/library']\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n```ini\\r\\n[defaults]\\r\\ninventory      = $HOME/.ansible/hosts\\r\\nlibrary        = $HOME/.ansible/library\\r\\nremote_tmp     = $HOME/.ansible/tmp\\r\\nlocal_tmp      = $HOME/.ansible/tmp\\r\\nroles_path    = $HOME/.ansible/roles\\r\\nnocows = 1\\r\\n[privilege_escalation]\\r\\n[paramiko_connection]\\r\\n[ssh_connection]\\r\\ncontrol_path = %(directory)s/%%C\\r\\n[accelerate]\\r\\n[selinux]\\r\\n[colors]\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nDebian Testing\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWhen using the iptables with ipv6 and a specified icmp type it returns an error\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n```yaml\\r\\n- name: Permit ICMP echo requests and replies for v4 and v6\\r\\n  iptables:\\r\\n    chain: INPUT\\r\\n    protocol: icmp\\r\\n    icmp_type: \\\"{{ item[0] }}\\\"\\r\\n    jump: ACCEPT\\r\\n    ip_version: \\\"{{ item[1] }}\\\"\\r\\n  with_nested:\\r\\n  - [ 'echo-reply', 'echo-request', 'destination-unreachable' ]\\r\\n  - [ 'ipv4', 'ipv6' ]\\r\\n  when: ansible_version.major >= 2 and ansible_version.minor >= 2\\r\\n```\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nI would expect the role to ignore the icmp-type if ipv6 is beeing used, since it is not supported by ip6tables\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"iptables\", \n    \"component_raw\": \"iptables module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18989\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/iptables.py\", \n    \"summary\": \"When using the iptables with ipv6 and a specified icmp type it returns an error\", \n    \"title\": \"When using the icmp-type switch along with ipv6 in the iptables the switch is not beeing ignored\"\n  }, \n  \"18990\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/testuser0/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\nwin_updates\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/testuser0/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nOS I'm running from:\\r\\n```\\r\\nDebian Jessie (8.6)\\r\\nuname -a\\r\\nLinux wmgm 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2+deb8u3 (2016-07-02) x86_64 GNU/Linux\\r\\n```\\r\\n\\r\\nOS I'm managing:\\r\\n```\\r\\nPS C:\\\\Users\\\\testuser> gwmi win32_operatingsystem | select caption, OSArchitecture, Version, BuildNumber | fl\\r\\n\\r\\ncaption        : Microsoft Windows Server 2012 R2 Standard\\r\\nOSArchitecture : 64-\\u0440\\u0430\\u0437\\u0440\\u044f\\u0434\\u043d\\u0430\\u044f\\r\\nVersion        : 6.3.9600\\r\\nBuildNumber    : 9600\\r\\n```\\r\\n\\r\\n```\\r\\nPS C:\\\\Users\\\\testuser> $PSVersionTable\\r\\n\\r\\nName                           Value\\r\\n----                           -----\\r\\nPSVersion                      4.0\\r\\nWSManStackVersion              3.0\\r\\nSerializationVersion           1.1.0.1\\r\\nCLRVersion                     4.0.30319.34014\\r\\nBuildVersion                   6.3.9600.17090\\r\\nPSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}\\r\\nPSRemotingProtocolVersion      2.2\\r\\n```\\r\\n\\r\\nLocalization:\\r\\n```\\r\\nC:\\\\Windows\\\\system32>dism /online /get-intl\\r\\n\\r\\nDeployment Image Servicing and Management tool\\r\\nVersion: 6.3.9600.17031\\r\\n\\r\\nImage Version: 6.3.9600.17031\\r\\n\\r\\nReporting online international settings.\\r\\n\\r\\nDefault system UI language : ru-RU\\r\\nThe UI language fallback is : en-US\\r\\nSystem locale : ru-RU\\r\\nDefault time zone : Russian Standard Time\\r\\nActive keyboard(s) : 0419:00000419, 0409:00000409\\r\\nKeyboard layered driver : PC/AT Enhanced Keyboard (101/102-Key)\\r\\n\\r\\nInstalled language(s): en-US\\r\\n  Type : Fully localized language.\\r\\nInstalled language(s): ru-RU\\r\\n  Type : Partially localized language, MUI type.\\r\\n  Fallback Languages en-US\\r\\n```\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nI tried to install windows updates on localized russian windows server 2012R2 (ru_windows_server_2012_r2_vl_with_update_x64_dvd_6052827.iso) via win_updates module, but I got error: \\r\\n```\\r\\n\\\"Definition\\\": \\\"System.Management.Automation.JobDefinition\\\", \\\"InstanceId\\\": \\\"78bcd293-1626-4999-a3ad-4fc9ab6705ae\\\", \\\"Name\\\": \\\"ansible-win-updates\\\", \\\"Parameters\\\": \\\"System.Management.Automation.Runspaces.CommandParameterCollection\\\"}, \\\"JobTriggers\\\": [], \\\"Name\\\": \\\"ansible-win-updates\\\", \\\"Options\\\": {\\\"DoNotAllowDemandStart\\\": false, \\\"IdleDuration\\\": \\\"00:10:00\\\", \\\"IdleTimeout\\\": \\\"01:00:00\\\", \\\"JobDefinition\\\": \\\"Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition\\\", \\\"MultipleInstancePolicy\\\": 1, \\\"RestartOnIdleResume\\\": false, \\\"RunElevated\\\": true, \\\"RunWithoutNetwork\\\": true, \\\"ShowInTaskScheduler\\\": true, \\\"StartIfNotIdle\\\": true, \\\"StartIfOnBatteries\\\": false, \\\"StopIfGoingOffIdle\\\": false, \\\"StopIfGoingOnBatteries\\\": true, \\\"WakeToRun\\\": false}, \\\"PSExecutionArgs\\\": \\\"-NoLogo -NonInteractive -WindowStyle Hidden -Command \\\\\\\"Import-Module PSScheduledJob; $jobDef = [Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition]::LoadFromStore('ansible-win-updates', 'C:\\\\\\\\Users\\\\\\\\testuser\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Microsoft\\\\\\\\Windows\\\\\\\\PowerShell\\\\\\\\ScheduledJobs'); $jobDef.Run()\\\\\\\"\\\", \\\"PSExecutionPath\\\": \\\"powershell.exe\\\"}}, \\\"failed\\\": true, \\\"msg\\\": \\\"An error occurred while registering scheduled job definition ansible-win-updates to the Windows Task Scheduler.  The Task Scheduler error is: Cannot create a file when that file already exists. (Exception from HRESULT: 0x800700B7).\\\"\\r\\n```\\r\\nI've installed english Windows Server 2012r2 (en_windows_server_2012_r2_vl_with_update_x64_dvd_6052766.iso) and put it into the same OU in Active Directory - win_updates works perfect!!!\\r\\n\\r\\nIf you want to reproduce this bug I can help you to deploy localized windows version, or I can send it to you as a VmWare virtual machine...\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n~/ansible/group_vars/all.yml:\\r\\n```\\r\\nansible_user: testuser@TESTDOMAIN.LAN\\r\\nansible_port: 5985\\r\\nansible_connection: winrm\\r\\nansible_listener: http\\r\\nansible_winrm_server_cert_validation: ignore\\r\\n```\\r\\n~/ansible/hosts:\\r\\n```\\r\\n[test]\\r\\ndssw2012r2.testdomain.lan\\r\\n```\\r\\n~/ansible/update_t.yml:\\r\\n```\\r\\n---\\r\\n- name: Update Installation and reboot for test servers\\r\\n  hosts: test\\r\\n\\r\\n  tasks:\\r\\n  - include: roles/service/tasks/install_updates.yml\\r\\n  - include: roles/service/tasks/reboot.yml\\r\\n    when: check_finish.reboot_required == true\\r\\n  - pause: minutes=5\\r\\n```\\r\\n~/ansible/roles/service/tasks/install_updates.yml:\\r\\n```\\r\\n---\\r\\n- name: install (all) updates\\r\\n  win_updates:\\r\\n   category_names:\\r\\n     - Application\\r\\n     - Connectors\\r\\n     - DefinitionUpdates\\r\\n     - DeveloperKits\\r\\n     - FeaturePacks\\r\\n     - Guidance\\r\\n     - ServicePacks\\r\\n     - Tools\\r\\n     - UpdateRollups\\r\\n     - CriticalUpdates\\r\\n     - SecurityUpdates\\r\\n   log_path:\\r\\n    c:/Scripts/ansible_wu.txt\\r\\n  register: check_finish\\r\\n```\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nc:/Scripts/ansible_wu.txt:\\r\\n```\\r\\n2016-12-06 18:40:59Z Arguments: System.Collections.Hashtable | out-string\\r\\n2016-12-06 18:40:59Z OS Version: \\r\\nMajor  Minor  Build  Revision\\r\\n-----  -----  -----  --------\\r\\n6      3      9600   0       \\r\\n\\r\\n\\r\\n\\r\\n2016-12-06 18:40:59Z Running as user: TESTDOMAIN\\\\testuser\\r\\n2016-12-06 18:40:59Z Powershell version: \\r\\nName                           Value                                           \\r\\n----                           -----                                           \\r\\nPSVersion                      4.0                                             \\r\\nWSManStackVersion              3.0                                             \\r\\nSerializationVersion           1.1.0.1                                         \\r\\nCLRVersion                     4.0.30319.34014                                 \\r\\nBuildVersion                   6.3.9600.17090                                  \\r\\nPSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}                            \\r\\nPSRemotingProtocolVersion      2.2                                             \\r\\n\\r\\n\\r\\n\\r\\n2016-12-06 18:40:59Z Starting scheduled job with args: \\r\\nName                           Value                                                                                                                                                                                                                                                                        \\r\\n----                           -----                                                                                                                                                                                                                                                                        \\r\\n_ansible_debug                 False\\r\\n_ansible_version               2.2.0.0\\r\\n_ansible_diff                  False\\r\\ncategory_names                 {Application, Connectors, DefinitionUpdates, DeveloperKits...}  \\r\\n_ansible_syslog_facility       LOG_USER                                                                                                                                                                                                                                                                     \\r\\n_ansible_check_mode            False                                                                                                                                                                                                                                                                        \\r\\n_ansible_selinux_special_fs    {fuse, nfs, vboxsf, ramfs}                                                                                                                                                                                                                                                   \\r\\n_ansible_module_name           win_updates                                                                                                                                                                                                                                                                  \\r\\nlog_path                       c:/Scripts/ansible_wu.txt                                                                                                                                                                                                                                                    \\r\\n_ansible_no_log                False                                                                                                                                                                                                                                                                        \\r\\n_ansible_verbosity             0                                                                                                                                                                                                                                                                            \\r\\n\\r\\n\\r\\n\\r\\n2016-12-06 18:40:59Z Registering scheduled job with args \\r\\nName                           Value                                                                                                                                                                                                                                                                        \\r\\n----                           -----                                                                                                                                                                                                                                                                        \\r\\nScheduledJobOption             {RunElevated}                                                                                                                                                                                                                                                                \\r\\nArgumentList                   {System.Collections.Hashtable}                                                                                                                                                                                                                                               \\r\\nInitializationScript           ...                                                                                                                                                                                                                                                                          \\r\\nName                           ansible-win-updates                                                                                                                                                                                                                                                          \\r\\nScriptBlock                    ...                                                                                                                                                                                                                                                                          \\r\\nErrorAction                    Stop                     \\r\\n```\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with high verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nroot@wmgm:~/ansible# ansible-playbook update_t.yml -i hosts \\r\\n\\r\\nPLAY [Update Installation and reboot for test servers] *************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [dssw2012r2.testdomain.lan]\\r\\n\\r\\nTASK [Set zabbix maintenance for portal.nalog.dmz] *****************************\\r\\nskipping: [dssw2012r2.testdomain.lan]\\r\\n\\r\\nTASK [Set zabbix maintenance] **************************************************\\r\\nok: [dssw2012r2.testdomain.lan -> 127.0.0.1]\\r\\n\\r\\nTASK [install (all) updates] ***************************************************\\r\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: +               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\r\\nfatal: [dssw2012r2.testdomain.lan]: FAILED! => {\\\"changed\\\": false, \\\"error_record\\\": {\\\"CategoryInfo\\\": {\\\"Activity\\\": \\\"Register-ScheduledJob\\\", \\\"Category\\\": 7, \\\"Reason\\\": \\\"ScheduledJobException\\\", \\\"TargetName\\\": \\\"Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition\\\", \\\"TargetType\\\": \\\"ScheduledJobDefinition\\\"}, \\\"ErrorDetails\\\": null, \\\"Exception\\\": {\\\"Data\\\": {}, \\\"HResult\\\": -2146233087, \\\"HelpLink\\\": null, \\\"InnerException\\\": {\\\"Data\\\": \\\"System.Collections.ListDictionaryInternal\\\", \\\"ErrorCode\\\": -2147024713, \\\"HResult\\\": -2147024713, \\\"HelpLink\\\": null, \\\"InnerException\\\": null, \\\"Message\\\": \\\"Cannot create a file when that file already exists. (Exception from HRESULT: 0x800700B7)\\\", \\\"Source\\\": \\\"Microsoft.PowerShell.ScheduledJob\\\", \\\"StackTrace\\\": \\\"   at TaskScheduler.ITaskFolder.RegisterTaskDefinition(String Path, ITaskDefinition pDefinition, Int32 flags, Object UserId, Object password, _TASK_LOGON_TYPE LogonType, Object sddl)\\\\r\\\\n   at Microsoft.PowerShell.ScheduledJob.ScheduledJobWTS.CreateTask(ScheduledJobDefinition definition)\\\\r\\\\n   at Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition.AddToWTS()\\\\r\\\\n   at Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition.Register()\\\", \\\"TargetSite\\\": \\\"TaskScheduler.IRegisteredTask RegisterTaskDefinition(System.String, TaskScheduler.ITaskDefinition, Int32, System.Object, System.Object, TaskScheduler._TASK_LOGON_TYPE, System.Object)\\\"}, \\\"Message\\\": \\\"An error occurred while registering scheduled job definition ansible-win-updates to the Windows Task Scheduler.  The Task Scheduler error is: Cannot create a file when that file already exists. (Exception from HRESULT: 0x800700B7).\\\", \\\"Source\\\": \\\"Microsoft.PowerShell.ScheduledJob\\\", \\\"StackTrace\\\": \\\"   at Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition.Register()\\\\r\\\\n   at Microsoft.PowerShell.ScheduledJob.RegisterScheduledJobCommand.ProcessRecord()\\\", \\\"TargetSite\\\": {\\\"Attributes\\\": 134, \\\"CallingConvention\\\": 33, \\\"ContainsGenericParameters\\\": false, \\\"CustomAttributes\\\": \\\"\\\", \\\"DeclaringType\\\": \\\"Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition\\\", \\\"IsAbstract\\\": false, \\\"IsAssembly\\\": false, \\\"IsConstructor\\\": false, \\\"IsFamily\\\": false, \\\"IsFamilyAndAssembly\\\": false, \\\"IsFamilyOrAssembly\\\": false, \\\"IsFinal\\\": false, \\\"IsGenericMethod\\\": false, \\\"IsGenericMethodDefinition\\\": false, \\\"IsHideBySig\\\": true, \\\"IsPrivate\\\": false, \\\"IsPublic\\\": true, \\\"IsSecurityCritical\\\": true, \\\"IsSecuritySafeCritical\\\": false, \\\"IsSecurityTransparent\\\": false, \\\"IsSpecialName\\\": false, \\\"IsStatic\\\": false, \\\"IsVirtual\\\": false, \\\"MemberType\\\": 8, \\\"MetadataToken\\\": 100663399, \\\"MethodHandle\\\": \\\"System.RuntimeMethodHandle\\\", \\\"MethodImplementationFlags\\\": 0, \\\"Module\\\": \\\"Microsoft.PowerShell.ScheduledJob.dll\\\", \\\"Name\\\": \\\"Register\\\", \\\"ReflectedType\\\": \\\"Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition\\\", \\\"ReturnParameter\\\": \\\"Void \\\", \\\"ReturnType\\\": \\\"void\\\", \\\"ReturnTypeCustomAttributes\\\": \\\"Void \\\"}}, \\\"FullyQualifiedErrorId\\\": \\\"CantRegisterScheduledJobDefinition,Microsoft.PowerShell.ScheduledJob.RegisterScheduledJobCommand\\\", \\\"InvocationInfo\\\": {\\\"BoundParameters\\\": {}, \\\"CommandOrigin\\\": 1, \\\"DisplayScriptPosition\\\": null, \\\"ExpectingInput\\\": false, \\\"HistoryId\\\": 1, \\\"InvocationName\\\": \\\"Register-ScheduledJob\\\", \\\"Line\\\": \\\"  $schedjob = Register-ScheduledJob @rsj_args\\\\n\\\", \\\"MyCommand\\\": {\\\"CommandType\\\": 8, \\\"DefaultParameterSet\\\": \\\"ScriptBlock\\\", \\\"Definition\\\": \\\"\\\\r\\\\nRegister-ScheduledJob [-Name] <string> [-ScriptBlock] <scriptblock> [-Trigger <ScheduledJobTrigger[]>] [-InitializationScript <scriptblock>] [-RunAs32] [-Credential <pscredential>] [-Authentication <AuthenticationMechanism>] [-ScheduledJobOption <ScheduledJobOptions>] [-ArgumentList <Object[]>] [-MaxResultCount <int>] [-RunNow] [-WhatIf] [-Confirm] [<CommonParameters>]\\\\r\\\\n\\\\r\\\\nRegister-ScheduledJob [-Name] <string> [-FilePath] <string> [-Trigger <ScheduledJobTrigger[]>] [-InitializationScript <scriptblock>] [-RunAs32] [-Credential <pscredential>] [-Authentication <AuthenticationMechanism>] [-ScheduledJobOption <ScheduledJobOptions>] [-ArgumentList <Object[]>] [-MaxResultCount <int>] [-RunNow] [-WhatIf] [-Confirm] [<CommonParameters>]\\\\r\\\\n\\\", \\\"HelpFile\\\": \\\"Microsoft.PowerShell.ScheduledJob.dll-Help.xml\\\", \\\"ImplementingType\\\": \\\"Microsoft.PowerShell.ScheduledJob.RegisterScheduledJobCommand\\\", \\\"Module\\\": \\\"PSScheduledJob\\\", \\\"ModuleName\\\": \\\"PSScheduledJob\\\", \\\"Name\\\": \\\"Register-ScheduledJob\\\", \\\"Noun\\\": \\\"ScheduledJob\\\", \\\"Options\\\": 1, \\\"OutputType\\\": \\\"Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition\\\", \\\"PSSnapIn\\\": null, \\\"ParameterSets\\\": \\\"[-Name] <string> [-ScriptBlock] <scriptblock> [-Trigger <ScheduledJobTrigger[]>] [-InitializationScript <scriptblock>] [-RunAs32] [-Credential <pscredential>] [-Authentication <AuthenticationMechanism>] [-ScheduledJobOption <ScheduledJobOptions>] [-ArgumentList <Object[]>] [-MaxResultCount <int>] [-RunNow] [-WhatIf] [-Confirm] [<CommonParameters>] [-Name] <string> [-FilePath] <string> [-Trigger <ScheduledJobTrigger[]>] [-InitializationScript <scriptblock>] [-RunAs32] [-Credential <pscredential>] [-Authentication <AuthenticationMechanism>] [-ScheduledJobOption <ScheduledJobOptions>] [-ArgumentList <Object[]>] [-MaxResultCount <int>] [-RunNow] [-WhatIf] [-Confirm] [<CommonParameters>]\\\", \\\"Parameters\\\": \\\"System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]\\\", \\\"RemotingCapability\\\": 1, \\\"Verb\\\": \\\"Register\\\", \\\"Visibility\\\": 0}, \\\"OffsetInLine\\\": 15, \\\"PSCommandPath\\\": \\\"C:\\\\\\\\Users\\\\\\\\testuser\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Temp\\\\\\\\ansible-tmp-1481043370.46-211730871360256\\\\\\\\win_updates.ps1\\\", \\\"PSScriptRoot\\\": \\\"C:\\\\\\\\Users\\\\\\\\testuser\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Temp\\\\\\\\ansible-tmp-1481043370.46-211730871360256\\\", \\\"PipelineLength\\\": 0, \\\"PipelinePosition\\\": 0, \\\"PositionMessage\\\": \\\"At C:\\\\\\\\Users\\\\\\\\testuser\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Temp\\\\\\\\ansible-tmp-1481043370.46-211730871360256\\\\\\\\win_updates.ps1:558 char:15\\\\r\\\\n+   $schedjob = Register-ScheduledJob @rsj_args\\\\r\\\\n+               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\\", \\\"ScriptLineNumber\\\": 558, \\\"ScriptName\\\": \\\"C:\\\\\\\\Users\\\\\\\\testuser\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Temp\\\\\\\\ansible-tmp-1481043370.46-211730871360256\\\\\\\\win_updates.ps1\\\", \\\"UnboundArguments\\\": []}, \\\"PSMessageDetails\\\": null, \\\"PipelineIterationInfo\\\": [], \\\"ScriptStackTrace\\\": \\\"at RunAsScheduledJob, C:\\\\\\\\Users\\\\\\\\testuser\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Temp\\\\\\\\ansible-tmp-1481043370.46-211730871360256\\\\\\\\win_updates.ps1: line 558\\\\r\\\\nat <ScriptBlock>, C:\\\\\\\\Users\\\\\\\\testuser\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Temp\\\\\\\\ansible-tmp-1481043370.46-211730871360256\\\\\\\\win_updates.ps1: line 666\\\\r\\\\nat <ScriptBlock>, <No file>: line 4\\\", \\\"TargetObject\\\": {\\\"Command\\\": \\\"\\\\n    Param(\\\\n    [hashtable]$boundparms=@{},\\\\n    [Object[]]$unboundargs=$()\\\\n    )\\\\n\\\\n    Set-StrictMode -Version 2\\\\n\\\\n    $ErrorActionPreference = \\\\\\\"Stop\\\\\\\"\\\\n    $DebugPreference = \\\\\\\"Continue\\\\\\\"\\\\n    $FormatEnumerationLimit = -1 # prevent out-string et al from truncating collection dumps\\\\n\\\\n    # set this as a global for the Write-DebugLog function\\\\n    $log_path = $boundparms['log_path']\\\\n\\\\n    Write-DebugLog \\\\\\\"Scheduled job started with boundparms $($boundparms | out-string) and unboundargs $($unboundargs | out-string)\\\\\\\"\\\\n\\\\n    # FUTURE: elevate this to module arg validation once we have it\\\\n    Function MapCategoryNameToGuid {\\\\n        Param([string] $category_name)\\\\n\\\\n        $category_guid = switch -exact ($category_name) {\\\\n            # as documented by TechNet @ https://technet.microsoft.com/en-us/library/ff730937.aspx\\\\n            \\\\\\\"Application\\\\\\\" {\\\\\\\"5C9376AB-8CE6-464A-B136-22113DD69801\\\\\\\"}\\\\n            \\\\\\\"Connectors\\\\\\\" {\\\\\\\"434DE588-ED14-48F5-8EED-A15E09A991F6\\\\\\\"}\\\\n            \\\\\\\"CriticalUpdates\\\\\\\" {\\\\\\\"E6CF1350-C01B-414D-A61F-263D14D133B4\\\\\\\"}\\\\n            \\\\\\\"DefinitionUpdates\\\\\\\" {\\\\\\\"E0789628-CE08-4437-BE74-2495B842F43B\\\\\\\"}\\\\n            \\\\\\\"DeveloperKits\\\\\\\" {\\\\\\\"E140075D-8433-45C3-AD87-E72345B36078\\\\\\\"}\\\\n            \\\\\\\"FeaturePacks\\\\\\\" {\\\\\\\"B54E7D24-7ADD-428F-8B75-90A396FA584F\\\\\\\"}\\\\n            \\\\\\\"Guidance\\\\\\\" {\\\\\\\"9511D615-35B2-47BB-927F-F73D8E9260BB\\\\\\\"}\\\\n            \\\\\\\"SecurityUpdates\\\\\\\" {\\\\\\\"0FA1201D-4330-4FA8-8AE9-B877473B6441\\\\\\\"}\\\\n            \\\\\\\"ServicePacks\\\\\\\" {\\\\\\\"68C5B0A3-D1A6-4553-AE49-01D3A7827828\\\\\\\"}\\\\n            \\\\\\\"Tools\\\\\\\" {\\\\\\\"B4832BD8-E735-4761-8DAF-37F882276DAB\\\\\\\"}\\\\n            \\\\\\\"UpdateRollups\\\\\\\" {\\\\\\\"28BC880E-0592-4CBF-8F95-C79B17911D5F\\\\\\\"}\\\\n            \\\\\\\"Updates\\\\\\\" {\\\\\\\"CD5FFD1E-E932-4E3A-BF74-18BF0B1BBD83\\\\\\\"}\\\\n            default { throw \\\\\\\"Unknown category_name $category_name, must be one of (Application,Connectors,CriticalUpdates,DefinitionUpdates,DeveloperKits,FeaturePacks,Guidance,SecurityUpdates,ServicePacks,Tools,UpdateRollups,Updates)\\\\\\\" }\\\\n        }\\\\n\\\\n        return $category_guid\\\\n    }\\\\n\\\\n    Function DoWindowsUpdate {\\\\n        Param(\\\\n        [string[]]$category_names=@(\\\\\\\"CriticalUpdates\\\\\\\",\\\\\\\"SecurityUpdates\\\\\\\",\\\\\\\"UpdateRollups\\\\\\\"),\\\\n        [ValidateSet(\\\\\\\"installed\\\\\\\", \\\\\\\"searched\\\\\\\")]\\\\n        [string]$state=\\\\\\\"installed\\\\\\\",\\\\n        [bool]$_ansible_check_mode=$false\\\\n        )\\\\n\\\\n        $is_check_mode = $($state -eq \\\\\\\"searched\\\\\\\") -or $_ansible_check_mode\\\\n\\\\n        $category_guids = $category_names | % { MapCategoryNameToGUID $_ }\\\\n\\\\n        $update_status = @{ changed = $false }\\\\n\\\\n        Write-DebugLog \\\\\\\"Creating Windows Update session...\\\\\\\"\\\\n        $session = New-Object -ComObject Microsoft.Update.Session\\\\n\\\\n        Write-DebugLog \\\\\\\"Create Windows Update searcher...\\\\\\\"\\\\n        $searcher = $session.CreateUpdateSearcher()\\\\n\\\\n        # OR is only allowed at the top-level, so we have to repeat base criteria inside\\\\n        # FUTURE: change this to client-side filtered?\\\\n        $criteriabase = \\\\\\\"IsInstalled = 0\\\\\\\"\\\\n        $criteria_list = $category_guids | % { \\\\\\\"($criteriabase AND CategoryIDs contains '$_')\\\\\\\" }\\\\n\\\\n        $criteria = [string]::Join(\\\\\\\" OR \\\\\\\", $criteria_list)\\\\n\\\\n        Write-DebugLog \\\\\\\"Search criteria: $criteria\\\\\\\"\\\\n\\\\n        Write-DebugLog \\\\\\\"Searching for updates to install in category IDs $category_guids...\\\\\\\"\\\\n        $searchresult = $searcher.Search($criteria)\\\\n\\\\n        Write-DebugLog \\\\\\\"Creating update collection...\\\\\\\"\\\\n    \\\\n        $updates_to_install = New-Object -ComObject Microsoft.Update.UpdateColl\\\\n\\\\n        Write-DebugLog \\\\\\\"Found $($searchresult.Updates.Count) updates\\\\\\\"\\\\n\\\\n        $update_status.updates = @{ }\\\\n\\\\n        # FUTURE: add further filtering options\\\\n        foreach($update in $searchresult.Updates) {\\\\n          if(-Not $update.EulaAccepted) {\\\\n            Write-DebugLog \\\\\\\"Accepting EULA for $($update.Identity.UpdateID)\\\\\\\"\\\\n            $update.AcceptEula()\\\\n          }\\\\n\\\\n          if($update.IsHidden) {\\\\n            Write-DebugLog \\\\\\\"Skipping hidden update $($update.Title)\\\\\\\"\\\\n            continue\\\\n          }\\\\n\\\\n          Write-DebugLog \\\\\\\"Adding update $($update.Identity.UpdateID) - $($update.Title)\\\\\\\"\\\\n          $res = $updates_to_install.Add($update)\\\\n\\\\n          $update_status.updates[$update.Identity.UpdateID] = @{\\\\n            title = $update.Title\\\\n            # TODO: pluck the first KB out (since most have just one)?\\\\n            kb = $update.KBArticleIDs\\\\n            id = $update.Identity.UpdateID\\\\n            installed = $false\\\\n          }\\\\n        }\\\\n\\\\n        Write-DebugLog \\\\\\\"Calculating pre-install reboot requirement...\\\\\\\"\\\\n\\\\n        # calculate this early for check mode, and to see if we should allow updates to continue\\\\n        $sysinfo = New-Object -ComObject Microsoft.Update.SystemInfo\\\\n        $update_status.reboot_required = $sysinfo.RebootRequired\\\\n        $update_status.found_update_count = $updates_to_install.Count\\\\n        $update_status.installed_update_count = 0\\\\n\\\\n        # bail out here for check mode  \\\\n        if($is_check_mode -eq $true) { \\\\n          Write-DebugLog \\\\\\\"Check mode; exiting...\\\\\\\"\\\\n          Write-DebugLog \\\\\\\"Return value: $($update_status | out-string)\\\\\\\"\\\\n\\\\n          if($updates_to_install.Count -gt 0) { $update_status.changed = $true }\\\\n          return $update_status \\\\n        }\\\\n\\\\n        if($updates_to_install.Count -gt 0) {   \\\\n          if($update_status.reboot_required) { \\\\n            throw \\\\\\\"A reboot is required before more updates can be installed.\\\\\\\"\\\\n          }\\\\n          else {\\\\n            Write-DebugLog \\\\\\\"No reboot is pending...\\\\\\\"\\\\n          }\\\\n          Write-DebugLog \\\\\\\"Downloading updates...\\\\\\\" \\\\n        }\\\\n\\\\n        foreach($update in $updates_to_install) {\\\\n            if($update.IsDownloaded) { \\\\n                Write-DebugLog \\\\\\\"Update $($update.Identity.UpdateID) already downloaded, skipping...\\\\\\\"\\\\n                continue \\\\n            }\\\\n            Write-DebugLog \\\\\\\"Creating downloader object...\\\\\\\"\\\\n            $dl = $session.CreateUpdateDownloader()\\\\n            Write-DebugLog \\\\\\\"Creating download collection...\\\\\\\"\\\\n            $dl.Updates = New-Object -ComObject Microsoft.Update.UpdateColl\\\\n            Write-DebugLog \\\\\\\"Adding update $($update.Identity.UpdateID)\\\\\\\"\\\\n            $res = $dl.Updates.Add($update)\\\\n            Write-DebugLog \\\\\\\"Downloading update $($update.Identity.UpdateID)...\\\\\\\"\\\\n            $download_result = $dl.Download()\\\\n            # FUTURE: configurable download retry\\\\n            if($download_result.ResultCode -ne 2) { # OperationResultCode orcSucceeded\\\\n                throw \\\\\\\"Failed to download update $($update.Identity.UpdateID)\\\\\\\"\\\\n            }\\\\n        }\\\\n\\\\n        if($updates_to_install.Count -lt 1 ) { return $update_status }\\\\n\\\\n        Write-DebugLog \\\\\\\"Installing updates...\\\\\\\"\\\\n\\\\n        # install as a batch so the reboot manager will suppress intermediate reboots\\\\n        Write-DebugLog \\\\\\\"Creating installer object...\\\\\\\"\\\\n        $inst = $session.CreateUpdateInstaller()\\\\n        Write-DebugLog \\\\\\\"Creating install collection...\\\\\\\"\\\\n        $inst.Updates = New-Object -ComObject Microsoft.Update.UpdateColl\\\\n\\\\n        foreach($update in $updates_to_install) {\\\\n            Write-DebugLog \\\\\\\"Adding update $($update.Identity.UpdateID)\\\\\\\"\\\\n            $res = $inst.Updates.Add($update)\\\\n        }\\\\n\\\\n        # FUTURE: use BeginInstall w/ progress reporting so we can at least log intermediate install results\\\\n        Write-DebugLog \\\\\\\"Installing updates...\\\\\\\"\\\\n        $install_result = $inst.Install()\\\\n\\\\n        $update_success_count = 0\\\\n        $update_fail_count = 0\\\\n\\\\n        # WU result API requires us to index in to get the install results\\\\n        $update_index = 0\\\\n\\\\n        foreach($update in $updates_to_install) {\\\\n          $update_result = $install_result.GetUpdateResult($update_index)\\\\n          $update_resultcode = $update_result.ResultCode\\\\n          $update_hresult = $update_result.HResult\\\\n\\\\n          $update_index++\\\\n\\\\n          $update_dict = $update_status.updates[$update.Identity.UpdateID]\\\\n\\\\n          if($update_resultcode -eq 2) { # OperationResultCode orcSucceeded\\\\n            $update_success_count++\\\\n            $update_dict.installed = $true\\\\n            Write-DebugLog \\\\\\\"Update $($update.Identity.UpdateID) succeeded\\\\\\\"\\\\n          }\\\\n          else {\\\\n            $update_fail_count++\\\\n            $update_dict.installed = $false\\\\n            $update_dict.failed = $true\\\\n            $update_dict.failure_hresult_code = $update_hresult\\\\n            Write-DebugLog \\\\\\\"Update $($update.Identity.UpdateID) failed resultcode $update_hresult hresult $update_hresult\\\\\\\"\\\\n          }\\\\n\\\\n        }\\\\n\\\\n        if($update_fail_count -gt 0) {  \\\\n            $update_status.failed = $true\\\\n            $update_status.msg=\\\\\\\"Failed to install one or more updates\\\\\\\"\\\\n        }\\\\n        else { $update_status.changed = $true }\\\\n\\\\n        Write-DebugLog \\\\\\\"Performing post-install reboot requirement check...\\\\\\\"\\\\n\\\\n        # recalculate reboot status after installs\\\\n        $sysinfo = New-Object -ComObject Microsoft.Update.SystemInfo\\\\n        $update_status.reboot_required = $sysinfo.RebootRequired\\\\n        $update_status.installed_update_count = $update_success_count\\\\n        $update_status.failed_update_count = $update_fail_count\\\\n\\\\n        Write-DebugLog \\\\\\\"Return value: $($update_status | out-string)\\\\\\\"\\\\n\\\\n        return $update_status\\\\n    }\\\\n\\\\n    Try { \\\\n        # job system adds a bunch of cruft to top-level dict, so we have to send a sub-dict\\\\n        return @{ job_output = DoWindowsUpdate @boundparms }\\\\n    }\\\\n    Catch {\\\\n        $excep = $_\\\\n        Write-DebugLog \\\\\\\"Fatal exception: $($excep.Exception.Message) at $($excep.ScriptStackTrace)\\\\\\\"\\\\n        return @{ job_output = @{ failed=$true;error=$excep.Exception.Message;location=$excep.ScriptStackTrace } }\\\\n    }\\\\n\\\", \\\"Credential\\\": null, \\\"Definition\\\": {\\\"Command\\\": \\\"\\\\n    Param(\\\\n    [hashtable]$boundparms=@{},\\\\n    [Object[]]$unboundargs=$()\\\\n    )\\\\n\\\\n    Set-StrictMode -Version 2\\\\n\\\\n    $ErrorActionPreference = \\\\\\\"Stop\\\\\\\"\\\\n    $DebugPreference = \\\\\\\"Continue\\\\\\\"\\\\n    $FormatEnumerationLimit = -1 # prevent out-string et al from truncating collection dumps\\\\n\\\\n    # set this as a global for the Write-DebugLog function\\\\n    $log_path = $boundparms['log_path']\\\\n\\\\n    Write-DebugLog \\\\\\\"Scheduled job started with boundparms $($boundparms | out-string) and unboundargs $($unboundargs | out-string)\\\\\\\"\\\\n\\\\n    # FUTURE: elevate this to module arg validation once we have it\\\\n    Function MapCategoryNameToGuid {\\\\n        Param([string] $category_name)\\\\n\\\\n        $category_guid = switch -exact ($category_name) {\\\\n            # as documented by TechNet @ https://technet.microsoft.com/en-us/library/ff730937.aspx\\\\n            \\\\\\\"Application\\\\\\\" {\\\\\\\"5C9376AB-8CE6-464A-B136-22113DD69801\\\\\\\"}\\\\n            \\\\\\\"Connectors\\\\\\\" {\\\\\\\"434DE588-ED14-48F5-8EED-A15E09A991F6\\\\\\\"}\\\\n            \\\\\\\"CriticalUpdates\\\\\\\" {\\\\\\\"E6CF1350-C01B-414D-A61F-263D14D133B4\\\\\\\"}\\\\n            \\\\\\\"DefinitionUpdates\\\\\\\" {\\\\\\\"E0789628-CE08-4437-BE74-2495B842F43B\\\\\\\"}\\\\n            \\\\\\\"DeveloperKits\\\\\\\" {\\\\\\\"E140075D-8433-45C3-AD87-E72345B36078\\\\\\\"}\\\\n            \\\\\\\"FeaturePacks\\\\\\\" {\\\\\\\"B54E7D24-7ADD-428F-8B75-90A396FA584F\\\\\\\"}\\\\n            \\\\\\\"Guidance\\\\\\\" {\\\\\\\"9511D615-35B2-47BB-927F-F73D8E9260BB\\\\\\\"}\\\\n            \\\\\\\"SecurityUpdates\\\\\\\" {\\\\\\\"0FA1201D-4330-4FA8-8AE9-B877473B6441\\\\\\\"}\\\\n            \\\\\\\"ServicePacks\\\\\\\" {\\\\\\\"68C5B0A3-D1A6-4553-AE49-01D3A7827828\\\\\\\"}\\\\n            \\\\\\\"Tools\\\\\\\" {\\\\\\\"B4832BD8-E735-4761-8DAF-37F882276DAB\\\\\\\"}\\\\n            \\\\\\\"UpdateRollups\\\\\\\" {\\\\\\\"28BC880E-0592-4CBF-8F95-C79B17911D5F\\\\\\\"}\\\\n            \\\\\\\"Updates\\\\\\\" {\\\\\\\"CD5FFD1E-E932-4E3A-BF74-18BF0B1BBD83\\\\\\\"}\\\\n            default { throw \\\\\\\"Unknown category_name $category_name, must be one of (Application,Connectors,CriticalUpdates,DefinitionUpdates,DeveloperKits,FeaturePacks,Guidance,SecurityUpdates,ServicePacks,Tools,UpdateRollups,Updates)\\\\\\\" }\\\\n        }\\\\n\\\\n        return $category_guid\\\\n    }\\\\n\\\\n    Function DoWindowsUpdate {\\\\n        Param(\\\\n        [string[]]$category_names=@(\\\\\\\"CriticalUpdates\\\\\\\",\\\\\\\"SecurityUpdates\\\\\\\",\\\\\\\"UpdateRollups\\\\\\\"),\\\\n        [ValidateSet(\\\\\\\"installed\\\\\\\", \\\\\\\"searched\\\\\\\")]\\\\n        [string]$state=\\\\\\\"installed\\\\\\\",\\\\n        [bool]$_ansible_check_mode=$false\\\\n        )\\\\n\\\\n        $is_check_mode = $($state -eq \\\\\\\"searched\\\\\\\") -or $_ansible_check_mode\\\\n\\\\n        $category_guids = $category_names | % { MapCategoryNameToGUID $_ }\\\\n\\\\n        $update_status = @{ changed = $false }\\\\n\\\\n        Write-DebugLog \\\\\\\"Creating Windows Update session...\\\\\\\"\\\\n        $session = New-Object -ComObject Microsoft.Update.Session\\\\n\\\\n        Write-DebugLog \\\\\\\"Create Windows Update searcher...\\\\\\\"\\\\n        $searcher = $session.CreateUpdateSearcher()\\\\n\\\\n        # OR is only allowed at the top-level, so we have to repeat base criteria inside\\\\n        # FUTURE: change this to client-side filtered?\\\\n        $criteriabase = \\\\\\\"IsInstalled = 0\\\\\\\"\\\\n        $criteria_list = $category_guids | % { \\\\\\\"($criteriabase AND CategoryIDs contains '$_')\\\\\\\" }\\\\n\\\\n        $criteria = [string]::Join(\\\\\\\" OR \\\\\\\", $criteria_list)\\\\n\\\\n        Write-DebugLog \\\\\\\"Search criteria: $criteria\\\\\\\"\\\\n\\\\n        Write-DebugLog \\\\\\\"Searching for updates to install in category IDs $category_guids...\\\\\\\"\\\\n        $searchresult = $searcher.Search($criteria)\\\\n\\\\n        Write-DebugLog \\\\\\\"Creating update collection...\\\\\\\"\\\\n    \\\\n        $updates_to_install = New-Object -ComObject Microsoft.Update.UpdateColl\\\\n\\\\n        Write-DebugLog \\\\\\\"Found $($searchresult.Updates.Count) updates\\\\\\\"\\\\n\\\\n        $update_status.updates = @{ }\\\\n\\\\n        # FUTURE: add further filtering options\\\\n        foreach($update in $searchresult.Updates) {\\\\n          if(-Not $update.EulaAccepted) {\\\\n            Write-DebugLog \\\\\\\"Accepting EULA for $($update.Identity.UpdateID)\\\\\\\"\\\\n            $update.AcceptEula()\\\\n          }\\\\n\\\\n          if($update.IsHidden) {\\\\n            Write-DebugLog \\\\\\\"Skipping hidden update $($update.Title)\\\\\\\"\\\\n            continue\\\\n          }\\\\n\\\\n          Write-DebugLog \\\\\\\"Adding update $($update.Identity.UpdateID) - $($update.Title)\\\\\\\"\\\\n          $res = $updates_to_install.Add($update)\\\\n\\\\n          $update_status.updates[$update.Identity.UpdateID] = @{\\\\n            title = $update.Title\\\\n            # TODO: pluck the first KB out (since most have just one)?\\\\n            kb = $update.KBArticleIDs\\\\n            id = $update.Identity.UpdateID\\\\n            installed = $false\\\\n          }\\\\n        }\\\\n\\\\n        Write-DebugLog \\\\\\\"Calculating pre-install reboot requirement...\\\\\\\"\\\\n\\\\n        # calculate this early for check mode, and to see if we should allow updates to continue\\\\n        $sysinfo = New-Object -ComObject Microsoft.Update.SystemInfo\\\\n        $update_status.reboot_required = $sysinfo.RebootRequired\\\\n        $update_status.found_update_count = $updates_to_install.Count\\\\n        $update_status.installed_update_count = 0\\\\n\\\\n        # bail out here for check mode  \\\\n        if($is_check_mode -eq $true) { \\\\n          Write-DebugLog \\\\\\\"Check mode; exiting...\\\\\\\"\\\\n          Write-DebugLog \\\\\\\"Return value: $($update_status | out-string)\\\\\\\"\\\\n\\\\n          if($updates_to_install.Count -gt 0) { $update_status.changed = $true }\\\\n          return $update_status \\\\n        }\\\\n\\\\n        if($updates_to_install.Count -gt 0) {   \\\\n          if($update_status.reboot_required) { \\\\n            throw \\\\\\\"A reboot is required before more updates can be installed.\\\\\\\"\\\\n          }\\\\n          else {\\\\n            Write-DebugLog \\\\\\\"No reboot is pending...\\\\\\\"\\\\n          }\\\\n          Write-DebugLog \\\\\\\"Downloading updates...\\\\\\\" \\\\n        }\\\\n\\\\n        foreach($update in $updates_to_install) {\\\\n            if($update.IsDownloaded) { \\\\n                Write-DebugLog \\\\\\\"Update $($update.Identity.UpdateID) already downloaded, skipping...\\\\\\\"\\\\n                continue \\\\n            }\\\\n            Write-DebugLog \\\\\\\"Creating downloader object...\\\\\\\"\\\\n            $dl = $session.CreateUpdateDownloader()\\\\n            Write-DebugLog \\\\\\\"Creating download collection...\\\\\\\"\\\\n            $dl.Updates = New-Object -ComObject Microsoft.Update.UpdateColl\\\\n            Write-DebugLog \\\\\\\"Adding update $($update.Identity.UpdateID)\\\\\\\"\\\\n            $res = $dl.Updates.Add($update)\\\\n            Write-DebugLog \\\\\\\"Downloading update $($update.Identity.UpdateID)...\\\\\\\"\\\\n            $download_result = $dl.Download()\\\\n            # FUTURE: configurable download retry\\\\n            if($download_result.ResultCode -ne 2) { # OperationResultCode orcSucceeded\\\\n                throw \\\\\\\"Failed to download update $($update.Identity.UpdateID)\\\\\\\"\\\\n            }\\\\n        }\\\\n\\\\n        if($updates_to_install.Count -lt 1 ) { return $update_status }\\\\n\\\\n        Write-DebugLog \\\\\\\"Installing updates...\\\\\\\"\\\\n\\\\n        # install as a batch so the reboot manager will suppress intermediate reboots\\\\n        Write-DebugLog \\\\\\\"Creating installer object...\\\\\\\"\\\\n        $inst = $session.CreateUpdateInstaller()\\\\n        Write-DebugLog \\\\\\\"Creating install collection...\\\\\\\"\\\\n        $inst.Updates = New-Object -ComObject Microsoft.Update.UpdateColl\\\\n\\\\n        foreach($update in $updates_to_install) {\\\\n            Write-DebugLog \\\\\\\"Adding update $($update.Identity.UpdateID)\\\\\\\"\\\\n            $res = $inst.Updates.Add($update)\\\\n        }\\\\n\\\\n        # FUTURE: use BeginInstall w/ progress reporting so we can at least log intermediate install results\\\\n        Write-DebugLog \\\\\\\"Installing updates...\\\\\\\"\\\\n        $install_result = $inst.Install()\\\\n\\\\n        $update_success_count = 0\\\\n        $update_fail_count = 0\\\\n\\\\n        # WU result API requires us to index in to get the install results\\\\n        $update_index = 0\\\\n\\\\n        foreach($update in $updates_to_install) {\\\\n          $update_result = $install_result.GetUpdateResult($update_index)\\\\n          $update_resultcode = $update_result.ResultCode\\\\n          $update_hresult = $update_result.HResult\\\\n\\\\n          $update_index++\\\\n\\\\n          $update_dict = $update_status.updates[$update.Identity.UpdateID]\\\\n\\\\n          if($update_resultcode -eq 2) { # OperationResultCode orcSucceeded\\\\n            $update_success_count++\\\\n            $update_dict.installed = $true\\\\n            Write-DebugLog \\\\\\\"Update $($update.Identity.UpdateID) succeeded\\\\\\\"\\\\n          }\\\\n          else {\\\\n            $update_fail_count++\\\\n            $update_dict.installed = $false\\\\n            $update_dict.failed = $true\\\\n            $update_dict.failure_hresult_code = $update_hresult\\\\n            Write-DebugLog \\\\\\\"Update $($update.Identity.UpdateID) failed resultcode $update_hresult hresult $update_hresult\\\\\\\"\\\\n          }\\\\n\\\\n        }\\\\n\\\\n        if($update_fail_count -gt 0) {  \\\\n            $update_status.failed = $true\\\\n            $update_status.msg=\\\\\\\"Failed to install one or more updates\\\\\\\"\\\\n        }\\\\n        else { $update_status.changed = $true }\\\\n\\\\n        Write-DebugLog \\\\\\\"Performing post-install reboot requirement check...\\\\\\\"\\\\n\\\\n        # recalculate reboot status after installs\\\\n        $sysinfo = New-Object -ComObject Microsoft.Update.SystemInfo\\\\n        $update_status.reboot_required = $sysinfo.RebootRequired\\\\n        $update_status.installed_update_count = $update_success_count\\\\n        $update_status.failed_update_count = $update_fail_count\\\\n\\\\n        Write-DebugLog \\\\\\\"Return value: $($update_status | out-string)\\\\\\\"\\\\n\\\\n        return $update_status\\\\n    }\\\\n\\\\n    Try { \\\\n        # job system adds a bunch of cruft to top-level dict, so we have to send a sub-dict\\\\n        return @{ job_output = DoWindowsUpdate @boundparms }\\\\n    }\\\\n    Catch {\\\\n        $excep = $_\\\\n        Write-DebugLog \\\\\\\"Fatal exception: $($excep.Exception.Message) at $($excep.ScriptStackTrace)\\\\\\\"\\\\n        return @{ job_output = @{ failed=$true;error=$excep.Exception.Message;location=$excep.ScriptStackTrace } }\\\\n    }\\\\n\\\", \\\"CommandInfo\\\": null, \\\"InstanceId\\\": \\\"3de2d296-00a5-471c-aced-6559132eea09\\\", \\\"JobSourceAdapterType\\\": \\\"Microsoft.PowerShell.ScheduledJob.ScheduledJobSourceAdapter\\\", \\\"JobSourceAdapterTypeName\\\": \\\"ScheduledJobSourceAdapter\\\", \\\"ModuleName\\\": \\\"PSScheduledJob\\\", \\\"Name\\\": \\\"ansible-win-updates\\\"}, \\\"Enabled\\\": true, \\\"ExecutionHistoryLength\\\": 32, \\\"GlobalId\\\": \\\"be033c98-3718-44a9-a8f9-59d4a045e0f7\\\", \\\"Id\\\": 1, \\\"InvocationInfo\\\": {\\\"Command\\\": \\\"\\\\n    Param(\\\\n    [hashtable]$boundparms=@{},\\\\n    [Object[]]$unboundargs=$()\\\\n    )\\\\n\\\\n    Set-StrictMode -Version 2\\\\n\\\\n    $ErrorActionPreference = \\\\\\\"Stop\\\\\\\"\\\\n    $DebugPreference = \\\\\\\"Continue\\\\\\\"\\\\n    $FormatEnumerationLimit = -1 # prevent out-string et al from truncating collection dumps\\\\n\\\\n    # set this as a global for the Write-DebugLog function\\\\n    $log_path = $boundparms['log_path']\\\\n\\\\n    Write-DebugLog \\\\\\\"Scheduled job started with boundparms $($boundparms | out-string) and unboundargs $($unboundargs | out-string)\\\\\\\"\\\\n\\\\n    # FUTURE: elevate this to module arg validation once we have it\\\\n    Function MapCategoryNameToGuid {\\\\n        Param([string] $category_name)\\\\n\\\\n        $category_guid = switch -exact ($category_name) {\\\\n            # as documented by TechNet @ https://technet.microsoft.com/en-us/library/ff730937.aspx\\\\n            \\\\\\\"Application\\\\\\\" {\\\\\\\"5C9376AB-8CE6-464A-B136-22113DD69801\\\\\\\"}\\\\n            \\\\\\\"Connectors\\\\\\\" {\\\\\\\"434DE588-ED14-48F5-8EED-A15E09A991F6\\\\\\\"}\\\\n            \\\\\\\"CriticalUpdates\\\\\\\" {\\\\\\\"E6CF1350-C01B-414D-A61F-263D14D133B4\\\\\\\"}\\\\n            \\\\\\\"DefinitionUpdates\\\\\\\" {\\\\\\\"E0789628-CE08-4437-BE74-2495B842F43B\\\\\\\"}\\\\n            \\\\\\\"DeveloperKits\\\\\\\" {\\\\\\\"E140075D-8433-45C3-AD87-E72345B36078\\\\\\\"}\\\\n            \\\\\\\"FeaturePacks\\\\\\\" {\\\\\\\"B54E7D24-7ADD-428F-8B75-90A396FA584F\\\\\\\"}\\\\n            \\\\\\\"Guidance\\\\\\\" {\\\\\\\"9511D615-35B2-47BB-927F-F73D8E9260BB\\\\\\\"}\\\\n            \\\\\\\"SecurityUpdates\\\\\\\" {\\\\\\\"0FA1201D-4330-4FA8-8AE9-B877473B6441\\\\\\\"}\\\\n            \\\\\\\"ServicePacks\\\\\\\" {\\\\\\\"68C5B0A3-D1A6-4553-AE49-01D3A7827828\\\\\\\"}\\\\n            \\\\\\\"Tools\\\\\\\" {\\\\\\\"B4832BD8-E735-4761-8DAF-37F882276DAB\\\\\\\"}\\\\n            \\\\\\\"UpdateRollups\\\\\\\" {\\\\\\\"28BC880E-0592-4CBF-8F95-C79B17911D5F\\\\\\\"}\\\\n            \\\\\\\"Updates\\\\\\\" {\\\\\\\"CD5FFD1E-E932-4E3A-BF74-18BF0B1BBD83\\\\\\\"}\\\\n            default { throw \\\\\\\"Unknown category_name $category_name, must be one of (Application,Connectors,CriticalUpdates,DefinitionUpdates,DeveloperKits,FeaturePacks,Guidance,SecurityUpdates,ServicePacks,Tools,UpdateRollups,Updates)\\\\\\\" }\\\\n        }\\\\n\\\\n        return $category_guid\\\\n    }\\\\n\\\\n    Function DoWindowsUpdate {\\\\n        Param(\\\\n        [string[]]$category_names=@(\\\\\\\"CriticalUpdates\\\\\\\",\\\\\\\"SecurityUpdates\\\\\\\",\\\\\\\"UpdateRollups\\\\\\\"),\\\\n        [ValidateSet(\\\\\\\"installed\\\\\\\", \\\\\\\"searched\\\\\\\")]\\\\n        [string]$state=\\\\\\\"installed\\\\\\\",\\\\n        [bool]$_ansible_check_mode=$false\\\\n        )\\\\n\\\\n        $is_check_mode = $($state -eq \\\\\\\"searched\\\\\\\") -or $_ansible_check_mode\\\\n\\\\n        $category_guids = $category_names | % { MapCategoryNameToGUID $_ }\\\\n\\\\n        $update_status = @{ changed = $false }\\\\n\\\\n        Write-DebugLog \\\\\\\"Creating Windows Update session...\\\\\\\"\\\\n        $session = New-Object -ComObject Microsoft.Update.Session\\\\n\\\\n        Write-DebugLog \\\\\\\"Create Windows Update searcher...\\\\\\\"\\\\n        $searcher = $session.CreateUpdateSearcher()\\\\n\\\\n        # OR is only allowed at the top-level, so we have to repeat base criteria inside\\\\n        # FUTURE: change this to client-side filtered?\\\\n        $criteriabase = \\\\\\\"IsInstalled = 0\\\\\\\"\\\\n        $criteria_list = $category_guids | % { \\\\\\\"($criteriabase AND CategoryIDs contains '$_')\\\\\\\" }\\\\n\\\\n        $criteria = [string]::Join(\\\\\\\" OR \\\\\\\", $criteria_list)\\\\n\\\\n        Write-DebugLog \\\\\\\"Search criteria: $criteria\\\\\\\"\\\\n\\\\n        Write-DebugLog \\\\\\\"Searching for updates to install in category IDs $category_guids...\\\\\\\"\\\\n        $searchresult = $searcher.Search($criteria)\\\\n\\\\n        Write-DebugLog \\\\\\\"Creating update collection...\\\\\\\"\\\\n    \\\\n        $updates_to_install = New-Object -ComObject Microsoft.Update.UpdateColl\\\\n\\\\n        Write-DebugLog \\\\\\\"Found $($searchresult.Updates.Count) updates\\\\\\\"\\\\n\\\\n        $update_status.updates = @{ }\\\\n\\\\n        # FUTURE: add further filtering options\\\\n        foreach($update in $searchresult.Updates) {\\\\n          if(-Not $update.EulaAccepted) {\\\\n            Write-DebugLog \\\\\\\"Accepting EULA for $($update.Identity.UpdateID)\\\\\\\"\\\\n            $update.AcceptEula()\\\\n          }\\\\n\\\\n          if($update.IsHidden) {\\\\n            Write-DebugLog \\\\\\\"Skipping hidden update $($update.Title)\\\\\\\"\\\\n            continue\\\\n          }\\\\n\\\\n          Write-DebugLog \\\\\\\"Adding update $($update.Identity.UpdateID) - $($update.Title)\\\\\\\"\\\\n          $res = $updates_to_install.Add($update)\\\\n\\\\n          $update_status.updates[$update.Identity.UpdateID] = @{\\\\n            title = $update.Title\\\\n            # TODO: pluck the first KB out (since most have just one)?\\\\n            kb = $update.KBArticleIDs\\\\n            id = $update.Identity.UpdateID\\\\n            installed = $false\\\\n          }\\\\n        }\\\\n\\\\n        Write-DebugLog \\\\\\\"Calculating pre-install reboot requirement...\\\\\\\"\\\\n\\\\n        # calculate this early for check mode, and to see if we should allow updates to continue\\\\n        $sysinfo = New-Object -ComObject Microsoft.Update.SystemInfo\\\\n        $update_status.reboot_required = $sysinfo.RebootRequired\\\\n        $update_status.found_update_count = $updates_to_install.Count\\\\n        $update_status.installed_update_count = 0\\\\n\\\\n        # bail out here for check mode  \\\\n        if($is_check_mode -eq $true) { \\\\n          Write-DebugLog \\\\\\\"Check mode; exiting...\\\\\\\"\\\\n          Write-DebugLog \\\\\\\"Return value: $($update_status | out-string)\\\\\\\"\\\\n\\\\n          if($updates_to_install.Count -gt 0) { $update_status.changed = $true }\\\\n          return $update_status \\\\n        }\\\\n\\\\n        if($updates_to_install.Count -gt 0) {   \\\\n          if($update_status.reboot_required) { \\\\n            throw \\\\\\\"A reboot is required before more updates can be installed.\\\\\\\"\\\\n          }\\\\n          else {\\\\n            Write-DebugLog \\\\\\\"No reboot is pending...\\\\\\\"\\\\n          }\\\\n          Write-DebugLog \\\\\\\"Downloading updates...\\\\\\\" \\\\n        }\\\\n\\\\n        foreach($update in $updates_to_install) {\\\\n            if($update.IsDownloaded) { \\\\n                Write-DebugLog \\\\\\\"Update $($update.Identity.UpdateID) already downloaded, skipping...\\\\\\\"\\\\n                continue \\\\n            }\\\\n            Write-DebugLog \\\\\\\"Creating downloader object...\\\\\\\"\\\\n            $dl = $session.CreateUpdateDownloader()\\\\n            Write-DebugLog \\\\\\\"Creating download collection...\\\\\\\"\\\\n            $dl.Updates = New-Object -ComObject Microsoft.Update.UpdateColl\\\\n            Write-DebugLog \\\\\\\"Adding update $($update.Identity.UpdateID)\\\\\\\"\\\\n            $res = $dl.Updates.Add($update)\\\\n            Write-DebugLog \\\\\\\"Downloading update $($update.Identity.UpdateID)...\\\\\\\"\\\\n            $download_result = $dl.Download()\\\\n            # FUTURE: configurable download retry\\\\n            if($download_result.ResultCode -ne 2) { # OperationResultCode orcSucceeded\\\\n                throw \\\\\\\"Failed to download update $($update.Identity.UpdateID)\\\\\\\"\\\\n            }\\\\n        }\\\\n\\\\n        if($updates_to_install.Count -lt 1 ) { return $update_status }\\\\n\\\\n        Write-DebugLog \\\\\\\"Installing updates...\\\\\\\"\\\\n\\\\n        # install as a batch so the reboot manager will suppress intermediate reboots\\\\n        Write-DebugLog \\\\\\\"Creating installer object...\\\\\\\"\\\\n        $inst = $session.CreateUpdateInstaller()\\\\n        Write-DebugLog \\\\\\\"Creating install collection...\\\\\\\"\\\\n        $inst.Updates = New-Object -ComObject Microsoft.Update.UpdateColl\\\\n\\\\n        foreach($update in $updates_to_install) {\\\\n            Write-DebugLog \\\\\\\"Adding update $($update.Identity.UpdateID)\\\\\\\"\\\\n            $res = $inst.Updates.Add($update)\\\\n        }\\\\n\\\\n        # FUTURE: use BeginInstall w/ progress reporting so we can at least log intermediate install results\\\\n        Write-DebugLog \\\\\\\"Installing updates...\\\\\\\"\\\\n        $install_result = $inst.Install()\\\\n\\\\n        $update_success_count = 0\\\\n        $update_fail_count = 0\\\\n\\\\n        # WU result API requires us to index in to get the install results\\\\n        $update_index = 0\\\\n\\\\n        foreach($update in $updates_to_install) {\\\\n          $update_result = $install_result.GetUpdateResult($update_index)\\\\n          $update_resultcode = $update_result.ResultCode\\\\n          $update_hresult = $update_result.HResult\\\\n\\\\n          $update_index++\\\\n\\\\n          $update_dict = $update_status.updates[$update.Identity.UpdateID]\\\\n\\\\n          if($update_resultcode -eq 2) { # OperationResultCode orcSucceeded\\\\n            $update_success_count++\\\\n            $update_dict.installed = $true\\\\n            Write-DebugLog \\\\\\\"Update $($update.Identity.UpdateID) succeeded\\\\\\\"\\\\n          }\\\\n          else {\\\\n            $update_fail_count++\\\\n            $update_dict.installed = $false\\\\n            $update_dict.failed = $true\\\\n            $update_dict.failure_hresult_code = $update_hresult\\\\n            Write-DebugLog \\\\\\\"Update $($update.Identity.UpdateID) failed resultcode $update_hresult hresult $update_hresult\\\\\\\"\\\\n          }\\\\n\\\\n        }\\\\n\\\\n        if($update_fail_count -gt 0) {  \\\\n            $update_status.failed = $true\\\\n            $update_status.msg=\\\\\\\"Failed to install one or more updates\\\\\\\"\\\\n        }\\\\n        else { $update_status.changed = $true }\\\\n\\\\n        Write-DebugLog \\\\\\\"Performing post-install reboot requirement check...\\\\\\\"\\\\n\\\\n        # recalculate reboot status after installs\\\\n        $sysinfo = New-Object -ComObject Microsoft.Update.SystemInfo\\\\n        $update_status.reboot_required = $sysinfo.RebootRequired\\\\n        $update_status.installed_update_count = $update_success_count\\\\n        $update_status.failed_update_count = $update_fail_count\\\\n\\\\n        Write-DebugLog \\\\\\\"Return value: $($update_status | out-string)\\\\\\\"\\\\n\\\\n        return $update_status\\\\n    }\\\\n\\\\n    Try { \\\\n        # job system adds a bunch of cruft to top-level dict, so we have to send a sub-dict\\\\n        return @{ job_output = DoWindowsUpdate @boundparms }\\\\n    }\\\\n    Catch {\\\\n        $excep = $_\\\\n        Write-DebugLog \\\\\\\"Fatal exception: $($excep.Exception.Message) at $($excep.ScriptStackTrace)\\\\\\\"\\\\n        return @{ job_output = @{ failed=$true;error=$excep.Exception.Message;location=$excep.ScriptStackTrace } }\\\\n    }\\\\n\\\", \\\"Definition\\\": \\\"System.Management.Automation.JobDefinition\\\", \\\"InstanceId\\\": \\\"9ba0eae9-e4d3-4e8d-8571-69dcb0c5ce7f\\\", \\\"Name\\\": \\\"ansible-win-updates\\\", \\\"Parameters\\\": \\\"System.Management.Automation.Runspaces.CommandParameterCollection\\\"}, \\\"JobTriggers\\\": [], \\\"Name\\\": \\\"ansible-win-updates\\\", \\\"Options\\\": {\\\"DoNotAllowDemandStart\\\": false, \\\"IdleDuration\\\": \\\"00:10:00\\\", \\\"IdleTimeout\\\": \\\"01:00:00\\\", \\\"JobDefinition\\\": \\\"Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition\\\", \\\"MultipleInstancePolicy\\\": 1, \\\"RestartOnIdleResume\\\": false, \\\"RunElevated\\\": true, \\\"RunWithoutNetwork\\\": true, \\\"ShowInTaskScheduler\\\": true, \\\"StartIfNotIdle\\\": true, \\\"StartIfOnBatteries\\\": false, \\\"StopIfGoingOffIdle\\\": false, \\\"StopIfGoingOnBatteries\\\": true, \\\"WakeToRun\\\": false}, \\\"PSExecutionArgs\\\": \\\"-NoLogo -NonInteractive -WindowStyle Hidden -Command \\\\\\\"Import-Module PSScheduledJob; $jobDef = [Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition]::LoadFromStore('ansible-win-updates', 'C:\\\\\\\\Users\\\\\\\\testuser\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Microsoft\\\\\\\\Windows\\\\\\\\PowerShell\\\\\\\\ScheduledJobs'); $jobDef.Run()\\\\\\\"\\\", \\\"PSExecutionPath\\\": \\\"powershell.exe\\\"}}, \\\"failed\\\": true, \\\"msg\\\": \\\"An error occurred while registering scheduled job definition ansible-win-updates to the Windows Task Scheduler.  The Task Scheduler error is: Cannot create a file when that file already exists. (Exception from HRESULT: 0x800700B7).\\\"}\\r\\n        to retry, use: --limit @/home/testuser0/ansible/update_t.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\ndssw2012r2.testdomain.lan      : ok=2    changed=0    unreachable=0    failed=1   \\r\\n```\\r\\n\", \n    \"component_name\": \"win_updates\", \n    \"component_raw\": \"win_updates\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18990\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_updates.ps1\", \n    \"summary\": \"\", \n    \"title\": \"win_updates Not working on localized Windows Server 2012R2 (russian)\"\n  }, \n  \"18991\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @dmsimard on August 15, 2016 19:53_\\n\\n##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nGit\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nn/a\\n##### OS / ENVIRONMENT\\n\\nFedora 24\\n##### SUMMARY\\n\\nSeeing different (unexpected) behavior when trying to update an existing repository.\\n- If a repository is cloned \\\"fresh\\\" with a refspec and FETCH_HEAD (i.e, a Gerrit patchset review), it will work\\n- If a repository is first cloned from master branch and then updated with the refspec and FETCH_HEAD, it will not work\\n##### STEPS TO REPRODUCE\\n\\nFull reproducer gist: https://gist.github.com/dmsimard/be06e4269ab094952db18da88c9ba70f\\ntl;dr:\\n\\n```\\n# Bash works\\ngit clone https://git.openstack.org/openstack/puppet-openstack-integration; cd puppet-openstack-integration\\ngit fetch https://git.openstack.org/openstack/puppet-openstack-integration refs/changes/60/337860/26 && git checkout FETCH_HEAD\\n\\n# This works\\nansible -i hosts localhost -m git -a \\\"repo=https://git.openstack.org/openstack/puppet-openstack-integration dest=/tmp/puppet-openstack-integration refspec=refs/changes/60/337860/26 version=FETCH_HEAD\\\"\\n\\n# This doesn't work\\nansible -i hosts localhost -m git -a \\\"repo=https://git.openstack.org/openstack/puppet-openstack-integration dest=/tmp/puppet-openstack-integration\\\"\\nansible -i hosts localhost -m git -a \\\"repo=https://git.openstack.org/openstack/puppet-openstack-integration dest=/tmp/puppet-openstack-integration refspec=refs/changes/60/337860/26 version=FETCH_HEAD\\\"\\n```\\n##### EXPECTED RESULTS\\n\\nExpecting Ansible to be able to fetch a refspec for a repository that has already been cloned and checkout the FETCH_HEAD reference.\\n##### ACTUAL RESULTS\\n\\n```\\n# This works\\n(openstack)\\u252c\\u2500[dmsimard@hostname:/tmp]\\u2500[03:28:51 PM]\\n\\u2570\\u2500>$ rm -rf puppet-openstack-integration/\\n(openstack)\\u252c\\u2500[dmsimard@hostname:/tmp]\\u2500[03:28:57 PM]\\n\\u2570\\u2500>$ ansible -vvv -i hosts localhost -m git -a \\\"repo=https://git.openstack.org/openstack/puppet-openstack-integration dest=/tmp/puppet-openstack-integration refspec=refs/changes/60/337860/26 version=FETCH_HEAD\\\"\\nNo config file found; using defaults\\n<localhost> ESTABLISH LOCAL CONNECTION FOR USER: dmsimard\\n<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1471290547.98-200796271054450 `\\\" && echo ansible-tmp-1471290547.98-200796271054450=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1471290547.98-200796271054450 `\\\" ) && sleep 0'\\n<localhost> PUT /tmp/tmpeHsdHm TO /home/dmsimard/.ansible/tmp/ansible-tmp-1471290547.98-200796271054450/git\\n<localhost> EXEC /bin/sh -c 'LANG=en_CA.UTF-8 LC_ALL=en_CA.UTF-8 LC_MESSAGES=en_CA.UTF-8 /usr/bin/python /home/dmsimard/.ansible/tmp/ansible-tmp-1471290547.98-200796271054450/git; rm -rf \\\"/home/dmsimard/.ansible/tmp/ansible-tmp-1471290547.98-200796271054450/\\\" > /dev/null 2>&1 && sleep 0'\\nlocalhost | SUCCESS => {\\n    \\\"after\\\": \\\"a9b53b7acfc0146c931ea95cb2168d165f5edbbd\\\", \\n    \\\"before\\\": null, \\n    \\\"changed\\\": true, \\n    \\\"invocation\\\": {\\n        \\\"module_args\\\": {\\n            \\\"accept_hostkey\\\": false, \\n            \\\"bare\\\": false, \\n            \\\"clone\\\": true, \\n            \\\"depth\\\": null, \\n            \\\"dest\\\": \\\"/tmp/puppet-openstack-integration\\\", \\n            \\\"executable\\\": null, \\n            \\\"force\\\": false, \\n            \\\"key_file\\\": null, \\n            \\\"recursive\\\": true, \\n            \\\"reference\\\": null, \\n            \\\"refspec\\\": \\\"refs/changes/60/337860/26\\\", \\n            \\\"remote\\\": \\\"origin\\\", \\n            \\\"repo\\\": \\\"https://git.openstack.org/openstack/puppet-openstack-integration\\\", \\n            \\\"ssh_opts\\\": null, \\n            \\\"track_submodules\\\": false, \\n            \\\"update\\\": true, \\n            \\\"verify_commit\\\": false, \\n            \\\"version\\\": \\\"FETCH_HEAD\\\"\\n        }, \\n        \\\"module_name\\\": \\\"git\\\"\\n    }, \\n    \\\"warnings\\\": []\\n}\\n(openstack)\\u252c\\u2500[dmsimard@hostname:/tmp]\\u2500[03:49:11 PM]\\n\\u2570\\u2500>$ cd puppet-openstack-integration/\\n(openstack)\\u252c\\u2500[dmsimard@hostname:/tmp/puppet-openstack-integration]\\u2500[03:49:26 PM]\\n\\u2570\\u2500>$ git log --pretty=format:\\\"%h%x09%an%x09%ad%x09%s\\\" -n2\\na9b53b7 David Moreau-Simard     Tue Jul 5 16:45:23 2016 -0400   Add designate test coverage to scenario003\\nf8aa97d Jenkins Mon Aug 8 11:34:27 2016 +0000   Merge \\\"In-process token caching is deprecated, use memcached instead\\\"\\n\\n\\n# This doesn't\\n(openstack)\\u252c\\u2500[dmsimard@hostname:/tmp]\\u2500[03:50:21 PM]\\n\\u2570\\u2500>$ rm -rf puppet-openstack-integration/\\n(openstack)\\u252c\\u2500[dmsimard@hostname:/tmp]\\u2500[03:50:58 PM]\\n\\u2570\\u2500>$ ansible -vvv -i hosts localhost -m git -a \\\"repo=https://git.openstack.org/openstack/puppet-openstack-integration dest=/tmp/puppet-openstack-integration\\\"\\nNo config file found; using defaults\\n<localhost> ESTABLISH LOCAL CONNECTION FOR USER: dmsimard\\n<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1471290721.44-129257258043449 `\\\" && echo ansible-tmp-1471290721.44-129257258043449=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1471290721.44-129257258043449 `\\\" ) && sleep 0'\\n<localhost> PUT /tmp/tmpn03XKS TO /home/dmsimard/.ansible/tmp/ansible-tmp-1471290721.44-129257258043449/git\\n<localhost> EXEC /bin/sh -c 'LANG=en_CA.UTF-8 LC_ALL=en_CA.UTF-8 LC_MESSAGES=en_CA.UTF-8 /usr/bin/python /home/dmsimard/.ansible/tmp/ansible-tmp-1471290721.44-129257258043449/git; rm -rf \\\"/home/dmsimard/.ansible/tmp/ansible-tmp-1471290721.44-129257258043449/\\\" > /dev/null 2>&1 && sleep 0'\\nlocalhost | SUCCESS => {\\n    \\\"after\\\": \\\"da748ad437bc1f3165929b2b69208f7c58e62699\\\", \\n    \\\"before\\\": null, \\n    \\\"changed\\\": true, \\n    \\\"invocation\\\": {\\n        \\\"module_args\\\": {\\n            \\\"accept_hostkey\\\": false, \\n            \\\"bare\\\": false, \\n            \\\"clone\\\": true, \\n            \\\"depth\\\": null, \\n            \\\"dest\\\": \\\"/tmp/puppet-openstack-integration\\\", \\n            \\\"executable\\\": null, \\n            \\\"force\\\": false, \\n            \\\"key_file\\\": null, \\n            \\\"recursive\\\": true, \\n            \\\"reference\\\": null, \\n            \\\"refspec\\\": null, \\n            \\\"remote\\\": \\\"origin\\\", \\n            \\\"repo\\\": \\\"https://git.openstack.org/openstack/puppet-openstack-integration\\\", \\n            \\\"ssh_opts\\\": null, \\n            \\\"track_submodules\\\": false, \\n            \\\"update\\\": true, \\n            \\\"verify_commit\\\": false, \\n            \\\"version\\\": \\\"HEAD\\\"\\n        }, \\n        \\\"module_name\\\": \\\"git\\\"\\n    }, \\n    \\\"warnings\\\": []\\n}\\n(openstack)\\u252c\\u2500[dmsimard@hostname:/tmp]\\u2500[03:52:03 PM]\\n\\u2570\\u2500>$ ansible -vvv -i hosts localhost -m git -a \\\"repo=https://git.openstack.org/openstack/puppet-openstack-integration dest=/tmp/puppet-openstack-integration refspec=refs/changes/60/337860/26 version=FETCH_HEAD\\\"\\nNo config file found; using defaults\\n<localhost> ESTABLISH LOCAL CONNECTION FOR USER: dmsimard\\n<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1471290728.81-173161814030036 `\\\" && echo ansible-tmp-1471290728.81-173161814030036=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1471290728.81-173161814030036 `\\\" ) && sleep 0'\\n<localhost> PUT /tmp/tmpq7cdDu TO /home/dmsimard/.ansible/tmp/ansible-tmp-1471290728.81-173161814030036/git\\n<localhost> EXEC /bin/sh -c 'LANG=en_CA.UTF-8 LC_ALL=en_CA.UTF-8 LC_MESSAGES=en_CA.UTF-8 /usr/bin/python /home/dmsimard/.ansible/tmp/ansible-tmp-1471290728.81-173161814030036/git; rm -rf \\\"/home/dmsimard/.ansible/tmp/ansible-tmp-1471290728.81-173161814030036/\\\" > /dev/null 2>&1 && sleep 0'\\nlocalhost | SUCCESS => {\\n    \\\"after\\\": \\\"c2b8906f4779418a6192f4339d79a297b97f328d\\\", \\n    \\\"before\\\": \\\"da748ad437bc1f3165929b2b69208f7c58e62699\\\", \\n    \\\"changed\\\": true, \\n    \\\"invocation\\\": {\\n        \\\"module_args\\\": {\\n            \\\"accept_hostkey\\\": false, \\n            \\\"bare\\\": false, \\n            \\\"clone\\\": true, \\n            \\\"depth\\\": null, \\n            \\\"dest\\\": \\\"/tmp/puppet-openstack-integration\\\", \\n            \\\"executable\\\": null, \\n            \\\"force\\\": false, \\n            \\\"key_file\\\": null, \\n            \\\"recursive\\\": true, \\n            \\\"reference\\\": null, \\n            \\\"refspec\\\": \\\"refs/changes/60/337860/26\\\", \\n            \\\"remote\\\": \\\"origin\\\", \\n            \\\"repo\\\": \\\"https://git.openstack.org/openstack/puppet-openstack-integration\\\", \\n            \\\"ssh_opts\\\": null, \\n            \\\"track_submodules\\\": false, \\n            \\\"update\\\": true, \\n            \\\"verify_commit\\\": false, \\n            \\\"version\\\": \\\"FETCH_HEAD\\\"\\n        }, \\n        \\\"module_name\\\": \\\"git\\\"\\n    }, \\n    \\\"warnings\\\": []\\n}\\n(openstack)\\u252c\\u2500[dmsimard@hostname:/tmp]\\u2500[03:52:11 PM]\\n\\u2570\\u2500>$ cd puppet-openstack-integration/\\n(openstack)\\u252c\\u2500[dmsimard@hostname:/tmp/puppet-openstack-integration]\\u2500[03:52:16 PM]\\n\\u2570\\u2500>$ git log --pretty=format:\\\"%h%x09%an%x09%ad%x09%s\\\" -n2\\nc2b8906 Jenkins Mon Nov 2 15:44:19 2015 +0000   Merge \\\"puppetfile: bump corosync to 0.8.0\\\" into stable/kilo\\n4341f5d Jenkins Mon Nov 2 15:44:01 2015 +0000   Merge \\\"puppetfile: Added corosync module\\\" into stable/kilo\\n```\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#4431_\", \n    \"component_name\": \"git\", \n    \"component_raw\": \"Git\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18991\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/source_control/git.py\", \n    \"summary\": \"Seeing different (unexpected) behavior when trying to update an existing repository.\\n- If a repository is cloned \\\"fresh\\\" with a refspec and FETCH_HEAD (i.e, a Gerrit patchset review), it will work\\n- If a repository is first cloned from master branch and then updated with the refspec and FETCH_HEAD, it will not work\", \n    \"title\": \"Git module has different behaviors when cloning fresh and updating git repository (unable to update properly)\"\n  }, \n  \"18992\": {\n    \"ansible_version\": \"Not relevant\", \n    \"body\": \"_From @dmsimard on October 14, 2016 19:20_\\n\\n##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nopenstack/os_object\\n##### ANSIBLE VERSION\\n\\nNot relevant\\n##### CONFIGURATION\\n\\nNot relevant\\n##### OS / ENVIRONMENT\\n\\nNot relevant\\n##### SUMMARY\\n\\nswiftclient has built-in parameters in order to split tasks into different threads in order to speed up operations, example:\\n\\n```\\n--object-threads=OBJECT_THREADS\\n                    Number of threads to use for uploading full objects.\\n                    Default is 10.\\n--segment-threads=SEGMENT_THREADS\\n                    Number of threads to use for uploading object\\n                    segments. Default is 10.\\n```\\n\\nthe os_object module does not expose these and it would be an interesting feature to add in order to speed up long operations involving many files.\\n##### EXPECTED RESULTS\\n\\n```\\n# Takes two minutes\\n- os_object:\\n    cloud: mordred\\n    state: present\\n    name: huge_folder\\n    container: destfolder\\n    filename: huge_folder\\n    object_threads: 100\\n```\\n##### ACTUAL RESULTS\\n\\n```\\n# Takes two hours\\n- os_object:\\n    cloud: mordred\\n    state: present\\n    name: huge_folder\\n    container: destfolder\\n    filename: huge_folder\\n```\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5272_\", \n    \"component_name\": \"openstack/os_object\", \n    \"component_raw\": \"openstack/os_object\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18992\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_object.py\", \n    \"summary\": \"swiftclient has built-in parameters in order to split tasks into different threads in order to speed up operations, example:\\n\\n```\\n--object-threads=OBJECT_THREADS\\n                    Number of threads to use for uploading full objects.\\n                    Default is 10.\\n--segment-threads=SEGMENT_THREADS\\n                    Number of threads to use for uploading object\\n                    segments. Default is 10.\\n```\\n\\nthe os_object module does not expose these and it would be an interesting feature to add in order to speed up long operations involving many files.\", \n    \"title\": \"RFE/Feature Idea: os_object - be able to specify the amount of threads used in operations\"\n  }, \n  \"18993\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"_From @dmsimard on December 4, 2016 15:51_\\n\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ngem\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nn/a\\r\\n##### OS / ENVIRONMENT\\r\\nn/a\\r\\n\\r\\n##### SUMMARY\\r\\nThe Ansible gem module has no means of providing a GEM_HOME variable and it does not respect the variable if it is exported in the environment prior to running the module.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nReproducer that exhibits the difference between running gem with bash and gem with the module:\\r\\nhttps://gist.github.com/dmsimard/27a6463968a43cafb31a42b7b2c80bbd\\r\\n\\r\\n```bash\\r\\n#!/bin/bash\\r\\nexport GEM_HOME=\\\"/tmp/localgems\\\"\\r\\n\\r\\nfunction cleanup() {\\r\\n  rm -rf ${GEM_HOME}\\r\\n  rm -rf /tmp/hosts\\r\\n  yes | gem uninstall r10k\\r\\n  mkdir ${GEM_HOME}\\r\\n}\\r\\n\\r\\nfunction installed() {\\r\\n  echo \\\"Installed files for ${1} in ${GEM_HOME}\\\"\\r\\n  ls -al ${GEM_HOME} && ls -al ${GEM_HOME}/bin\\r\\n  echo\\r\\n  echo\\r\\n}\\r\\n\\r\\necho \\\"Testing with bash...\\\"\\r\\ncleanup\\r\\ngem install r10k\\r\\ninstalled \\\"bash\\\"\\r\\n\\r\\n\\r\\necho \\\"Testing with ansible\\\"\\r\\ncleanup\\r\\necho \\\"localhost ansible_connection=local\\\" >/tmp/hosts\\r\\nansible -vv -i /tmp/hosts localhost -m gem -a \\\"name=r10k state=present\\\"\\r\\ninstalled ansible\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe Ansible gem module respects the GEM_HOME variable.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nThe Ansible gem module does not respect the GEM_HOME variable.\\r\\n\\r\\n```\\r\\n# bash reproducer.sh \\r\\nTesting with bash\\r\\nFetching: r10k-2.5.0.gem (100%)\\r\\nSuccessfully installed r10k-2.5.0\\r\\nParsing documentation for r10k-2.5.0\\r\\nInstalling ri documentation for r10k-2.5.0\\r\\n1 gem installed\\r\\nInstalled files for bash in /tmp/localgems\\r\\ntotal 4\\r\\ndrwxr-xr-x. 8 root root   87 Dec  4 15:40 .\\r\\ndrwxrwxrwt. 8 root root 4096 Dec  4 15:40 ..\\r\\ndrwxr-xr-x. 2 root root   17 Dec  4 15:40 bin\\r\\ndrwxr-xr-x. 2 root root    6 Dec  4 15:40 build_info\\r\\ndrwxr-xr-x. 2 root root   27 Dec  4 15:40 cache\\r\\ndrwxr-xr-x. 3 root root   23 Dec  4 15:40 doc\\r\\ndrwxr-xr-x. 3 root root   23 Dec  4 15:40 gems\\r\\ndrwxr-xr-x. 2 root root   31 Dec  4 15:40 specifications\\r\\ntotal 4\\r\\ndrwxr-xr-x. 2 root root  17 Dec  4 15:40 .\\r\\ndrwxr-xr-x. 8 root root  87 Dec  4 15:40 ..\\r\\n-rwxr-xr-x. 1 root root 446 Dec  4 15:40 r10k\\r\\n\\r\\n\\r\\nTesting with ansible\\r\\nNo config file found; using defaults\\r\\nlocalhost | SUCCESS => {\\r\\n    \\\"changed\\\": true, \\r\\n    \\\"name\\\": \\\"r10k\\\", \\r\\n    \\\"state\\\": \\\"present\\\"\\r\\n}\\r\\nInstalled files for ansible in /tmp/localgems\\r\\ntotal 4\\r\\ndrwxr-xr-x. 3 root root   18 Dec  4 15:40 .\\r\\ndrwxrwxrwt. 8 root root 4096 Dec  4 15:40 ..\\r\\ndrwxr-xr-x. 2 root root   27 Dec  4 15:40 cache\\r\\nls: cannot access /tmp/localgems/bin: No such file or directory\\r\\n```\\n\\n_Copied from original issue: ansible/ansible-modules-core#5817_\", \n    \"component_name\": \"gem\", \n    \"component_raw\": \"gem\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18993\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/language/gem.py\", \n    \"summary\": \"The Ansible gem module has no means of providing a GEM_HOME variable and it does not respect the variable if it is exported in the environment prior to running the module.\", \n    \"title\": \"Gem module does not allow to specify GEM_HOME (or respect an exported one)\"\n  }, \n  \"18994\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvyos_system\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nNew module vyos_system, roughly corresponds to `set system *` commands\", \n    \"component_name\": \"vyos_system\", \n    \"component_raw\": \"vyos_system\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/18994\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"c:plugins/terminal\", \n      \"feature\", \n      \"in progress\", \n      \"module\", \n      \"module_util\", \n      \"needs_revision\", \n      \"networking\", \n      \"new_plugin\", \n      \"owner_pr\", \n      \"test\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/vyos/vyos_system.py\", \n    \"summary\": \"New module vyos_system, roughly corresponds to `set system *` commands\", \n    \"title\": \"[WIP] Vyos 2.3\"\n  }, \n  \"18996\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel c064dce791) last updated 2016/10/19 152139 (GMT +100)\\nlib/ansible/modules/core (detached HEAD b59b5d36e0) last updated 2016/10/19 152200 (GMT +100)\\nlib/ansible/modules/extras (detached HEAD 3f77bb6857) last updated 2016/10/18 172603 (GMT +100)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @aioue on December 1, 2016 14:3_\\n\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nletsencrypt\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel c064dce791) last updated 2016/10/19 15:21:39 (GMT +100)\\r\\n  lib/ansible/modules/core: (detached HEAD b59b5d36e0) last updated 2016/10/19 15:22:00 (GMT +100)\\r\\n  lib/ansible/modules/extras: (detached HEAD 3f77bb6857) last updated 2016/10/18 17:26:03 (GMT +100)\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\npipelining = True\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nOS X 10.12.1 -> local actions\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\nletsencrypt does not create a full-chain cert - it is missing the intermediate cert and so things like websockets and mobile browsers break.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nRun playbook in module example.\\r\\n-->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nFull chain cert created\\r\\nor\\r\\ncert, intermediate files created\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\ncert, with no intermediate chain cert created.\\n\\n_Copied from original issue: ansible/ansible-modules-extras#3607_\", \n    \"component_name\": \"letsencrypt\", \n    \"component_raw\": \"letsencrypt\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/18996\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/web_infrastructure/letsencrypt.py\", \n    \"summary\": \"letsencrypt does not create a full-chain cert - it is missing the intermediate cert and so things like websockets and mobile browsers break.\", \n    \"title\": \"letsencrypt does not create a full-chain cert\"\n  }, \n  \"19002\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncli\\r\\n\\r\\n##### SUMMARY\\r\\nCurrently a bad role file specified on the command line does not generate a non-zero exit code:\\r\\n\\r\\n```\\r\\nscott-buchanan-ripen-mac:~ scottbuchanan$ ansible-galaxy install --role-file='notafile.yml'\\r\\n [ERROR]: Unable to open notafile.yml: [Errno 2] No such file or directory: 'notafile.yml'\\r\\n\\r\\nscott-buchanan-ripen-mac:~ scottbuchanan$ echo $?\\r\\n0\\r\\n```\\r\\n\\r\\nWith this patch:\\r\\n\\r\\n```\\r\\nscott-buchanan-ripen-mac:~ scottbuchanan$ ansible-galaxy install --role-file='notafile.yml'\\r\\nERROR! Unable to open notafile.yml: [Errno 2] No such file or directory: 'notafile.yml'\\r\\n\\r\\nscott-buchanan-ripen-mac:~ scottbuchanan$ echo $?\\r\\n1\\r\\n```\", \n    \"component_name\": \"cli\", \n    \"component_raw\": \"cli\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19002\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:cli/\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Currently a bad role file specified on the command line does not generate a non-zero exit code:\\n\\n\\n\\n```\\n\\nscott-buchanan-ripen-mac:~ scottbuchanan$ ansible-galaxy install --role-file='notafile.yml'\\n\\n [ERROR]: Unable to open notafile.yml: [Errno 2] No such file or directory: 'notafile.yml'\\n\\n\\n\\nscott-buchanan-ripen-mac:~ scottbuchanan$ echo $?\\n\\n0\\n\\n```\\n\\n\\n\\nWith this patch:\\n\\n\\n\\n```\\n\\nscott-buchanan-ripen-mac:~ scottbuchanan$ ansible-galaxy install --role-file='notafile.yml'\\n\\nERROR! Unable to open notafile.yml: [Errno 2] No such file or directory: 'notafile.yml'\\n\\n\\n\\nscott-buchanan-ripen-mac:~ scottbuchanan$ echo $?\\n\\n1\\n\\n```\", \n    \"title\": \"Fix non-zero exit code on missing role file\"\n  }, \n  \"19007\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file = /home/pieter/PycharmProjects/myansible/ansible.cfg\\nconfigured module search path = [/home/pieter/ansible/modules]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\nset_extra_var\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = /home/pieter/PycharmProjects/myansible/ansible.cfg\\r\\n  configured module search path = ['/home/pieter/ansible/modules']\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nSets an extra variable from a playbook. If the 'extra variable' is already been set from\\r\\nthe command line, it will NOT be overruled by the module.\\r\\n\\r\\nExample inventory :\\r\\n\\r\\ngroup_all = { host_1, host_2, host_3 }\\r\\ngroup_one = { host_1 }\\r\\ngroup_two = { host_2, host3 }\\r\\n\\r\\nExample playbook 'my_playbook.yml' :\\r\\n---\\r\\n- hosts: group_one\\r\\n  tasks:\\r\\n  - name: list /tmp\\r\\n    shell: ls /tmp\\r\\n    register: out\\r\\n\\r\\n  - name: set extra variable\\r\\n    set_extra_var: name=myvar value=\\\"{{out}}\\\"\\r\\n\\r\\n- hosts: group_two\\r\\n  tasks:\\r\\n    debug: msg=\\\"{{myvar}}\\\"\\r\\n\\r\\nExample command\\r\\n\\r\\nansible-playbook my_playbook.yml --limit group_all\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"set_extra_var\", \n    \"component_raw\": \"set_extra_var\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19007\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/action\", \n      \"c:plugins/strategy\", \n      \"feature\", \n      \"module\", \n      \"needs_rebase\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/set_extra_var.py\", \n    \"summary\": \"Sets an extra variable from a playbook. If the 'extra variable' is already been set from\\n\\nthe command line, it will NOT be overruled by the module.\\n\\n\\n\\nExample inventory :\\n\\n\\n\\ngroup_all = { host_1, host_2, host_3 }\\n\\ngroup_one = { host_1 }\\n\\ngroup_two = { host_2, host3 }\\n\\n\\n\\nExample playbook 'my_playbook.yml' :\\n\\n---\\n\\n- hosts: group_one\\n\\n  tasks:\\n\\n  - name: list /tmp\\n\\n    shell: ls /tmp\\n\\n    register: out\\n\\n\\n\\n  - name: set extra variable\\n\\n    set_extra_var: name=myvar value=\\\"{{out}}\\\"\\n\\n\\n\\n- hosts: group_two\\n\\n  tasks:\\n\\n    debug: msg=\\\"{{myvar}}\\\"\\n\\n\\n\\nExample command\\n\\n\\n\\nansible-playbook my_playbook.yml --limit group_all\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"set_extra_var module to set extra variable from play\"\n  }, \n  \"19008\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n##### COMPONENT NAME\\r\\nsystem/firewalld.py\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nAdded support for chain and direct rule manipulation.\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnnn\\\" in your commit\\r\\nmessage and your description; but you should still explain what the change does.\\r\\n-->\\r\\n\\r\\n<!--- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"system/firewalld.py\", \n    \"component_raw\": \"system/firewalld.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19008\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"committer_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/firewalld.py\", \n    \"summary\": \"Added support for chain and direct rule manipulation.\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"Added support for chain and direct rule manipulation\"\n  }, \n  \"19012\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Docs Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task  -->\\n\\nfetch\\nraw\\nscript\\nslurp\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\n<!---\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\ncommit message and your description; but you should still explain what\\nthe change does.\\n-->\\n\\nMake it more clear for Windows users which generic action plugins can be used on Windows too.\\n\", \n    \"component_name\": \"fetch\", \n    \"component_raw\": \"fetch\\nraw\\nscript\\nslurp\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19012\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"core_review\", \n      \"docs\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/fetch.py\", \n    \"summary\": \"Make it more clear for Windows users which generic action plugins can be used on Windows too.\", \n    \"title\": \"Add fetch, raw, script and slurp in the Windows category\"\n  }, \n  \"19014\": {\n    \"ansible_version\": \"v2.2\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\nfile\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nv2.2\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnnn\\\" in your commit\\r\\nmessage and your description; but you should still explain what the change does.\\r\\n-->\\r\\n\\r\\nThe following playbook:\\r\\n\\r\\n```yaml\\r\\n- hosts: localhost\\r\\n  tasks:\\r\\n  - file:\\r\\n      path: /tmp/non-existing-foo-bar\\r\\n      state: absent\\r\\n      recurse: yes\\r\\n```\\r\\n\\r\\ncauses this error:\\r\\n\\r\\n```\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"recurse option requires state to be 'directory'\\\", \\\"path\\\": \\\"/tmp/non-existing-foo-bar\\\", \\\"state\\\": \\\"absent\\\"}\\r\\n```\\r\\n\\r\\nThe included fix ensures that when recurse is added, we no longer assume\\r\\nit is a file, but accept that it is a directory.\", \n    \"component_name\": \"file\", \n    \"component_raw\": \"file\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19014\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"core_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/file.py\", \n    \"summary\": \"The following playbook:\\n\\n\\n\\n```yaml\\n\\n- hosts: localhost\\n\\n  tasks:\\n\\n  - file:\\n\\n      path: /tmp/non-existing-foo-bar\\n\\n      state: absent\\n\\n      recurse: yes\\n\\n```\\n\\n\\n\\ncauses this error:\\n\\n\\n\\n```\\n\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"recurse option requires state to be 'directory'\\\", \\\"path\\\": \\\"/tmp/non-existing-foo-bar\\\", \\\"state\\\": \\\"absent\\\"}\\n\\n```\\n\\n\\n\\nThe included fix ensures that when recurse is added, we no longer assume\\n\\nit is a file, but accept that it is a directory.\", \n    \"title\": \"Removing a non-existing directory complains\"\n  }, \n  \"19015\": {\n    \"ansible_version\": \"v2.2\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\nunarchive\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!---\\r\\nPaste verbatim output from \\u201cansible --version\\u201d between quotes below,\\r\\nthis is to help the Ansible team determine if this is a version specific\\r\\nissue which is being fixed.\\r\\n-->\\r\\nv2.2\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnnn\\\" in your commit\\r\\nmessage and your description; but you should still explain what the change does.\\r\\n-->\\r\\nVarious changes and improvements:\\r\\n\\r\\n- Fixed a few issues with the existing unzip support which were related to Zipfile (which is fundamentally incompatible with unzip excludes/opts).  And issues related to forced ownership.\\r\\n\\r\\n- Improvements to the UnarchiveError Exception, so it can report more detailed information to why an archive cannot be handled.\\r\\n\\r\\n- A bugfix relatd to unicode filenames and crc32 handling.\\r\\n\\r\\n- Renamed a few things so the code is easier to read.\\r\\n\\r\\n- Ensure gtar considers size changes to unarchive its content. This fixes ansible/ansible-modules-core#5149\\r\\n\\r\\n- Added a note about ZIP archives without directories. This fixes ansible/ansible-modules-core#5744.\\r\\n\\r\\nThe unarchive module is a hard beast to tame, corner-cases and platform-specific issues make it hard to troubleshoot individual issues.\\r\\n\\r\\n- Improves the default output (e.g. unzip no longer shows standard output, just like gtar) and adds the ability to get debug-output when using -vvvv (verbosity >= 4) or -vvvvv. So that when issues are i reported we have the means to look what is going on internally.\\r\\n\\r\\n- Because the output by default is reduced, proper warnings/errors are now more obvious to end-users, e.g.\\r\\n\\r\\n```\\r\\nTASK [unarchive]\\r\\n***************************************************************\\r\\ntask path: /home/dag/home-made/ansible.testing/test126.yml:11\\r\\nchanged: [localhost] => {\\\"changed\\\": true, \\\"dest\\\": \\\"/tmp/test126a\\\", \\\"extract_results\\\": {\\\"cmd\\\":\\r\\n[\\\"/usr/bin/unzip\\\", \\\"-q\\\", \\\"-o\\\", \\\"/home/dag/.ansible/tmp/ansible-tmp-1479989967.66-3171393713112/source\\\",\\r\\n\\\"-x\\\", \\\"some.directory/\\\", \\\"another.directory/simple.test.file.txt\\\", \\\"-d\\\", \\\"/tmp/test126a\\\"], \\\"err\\\":\\r\\n\\\"caution: excluded filename not matched: some.directory/\\\\ncaution: excluded filename not matched:\\r\\nanother.directory/simple.test.file.txt\\\\n\\\", \\\"out\\\": \\\"\\\", \\\"rc\\\": 0}, \\\"gid\\\": 500, \\\"group\\\": \\\"dag\\\", \\\"handler\\\":\\r\\n\\\"ZipArchive\\\", \\\"mode\\\": \\\"0775\\\", \\\"owner\\\": \\\"dag\\\", \\\"secontext\\\": \\\"unconfined_u:object_r:user_tmp_t:s0\\\",\\r\\n\\\"size\\\": 4096, \\\"src\\\": \\\"/home/dag/.ansible/tmp/ansible-tmp-1479989967.66-3171393713112/source\\\",\\r\\n\\\"state\\\": \\\"directory\\\", \\\"uid\\\": 500}\\r\\n```\\r\\nWhereas before the complete list of deflated files was being shown (when using -v) which was much more than anyone was willing to look at.\", \n    \"component_name\": \"unarchive\", \n    \"component_raw\": \"unarchive\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19015\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"owner_pr\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/unarchive.py\", \n    \"summary\": \"Various changes and improvements:\\n\\n\\n\\n- Fixed a few issues with the existing unzip support which were related to Zipfile (which is fundamentally incompatible with unzip excludes/opts).  And issues related to forced ownership.\\n\\n\\n\\n- Improvements to the UnarchiveError Exception, so it can report more detailed information to why an archive cannot be handled.\\n\\n\\n\\n- A bugfix relatd to unicode filenames and crc32 handling.\\n\\n\\n\\n- Renamed a few things so the code is easier to read.\\n\\n\\n\\n- Ensure gtar considers size changes to unarchive its content. This fixes ansible/ansible-modules-core#5149\\n\\n\\n\\n- Added a note about ZIP archives without directories. This fixes ansible/ansible-modules-core#5744.\\n\\n\\n\\nThe unarchive module is a hard beast to tame, corner-cases and platform-specific issues make it hard to troubleshoot individual issues.\\n\\n\\n\\n- Improves the default output (e.g. unzip no longer shows standard output, just like gtar) and adds the ability to get debug-output when using -vvvv (verbosity >= 4) or -vvvvv. So that when issues are i reported we have the means to look what is going on internally.\\n\\n\\n\\n- Because the output by default is reduced, proper warnings/errors are now more obvious to end-users, e.g.\\n\\n\\n\\n```\\n\\nTASK [unarchive]\\n\\n***************************************************************\\n\\ntask path: /home/dag/home-made/ansible.testing/test126.yml:11\\n\\nchanged: [localhost] => {\\\"changed\\\": true, \\\"dest\\\": \\\"/tmp/test126a\\\", \\\"extract_results\\\": {\\\"cmd\\\":\\n\\n[\\\"/usr/bin/unzip\\\", \\\"-q\\\", \\\"-o\\\", \\\"/home/dag/.ansible/tmp/ansible-tmp-1479989967.66-3171393713112/source\\\",\\n\\n\\\"-x\\\", \\\"some.directory/\\\", \\\"another.directory/simple.test.file.txt\\\", \\\"-d\\\", \\\"/tmp/test126a\\\"], \\\"err\\\":\\n\\n\\\"caution: excluded filename not matched: some.directory/\\\\ncaution: excluded filename not matched:\\n\\nanother.directory/simple.test.file.txt\\\\n\\\", \\\"out\\\": \\\"\\\", \\\"rc\\\": 0}, \\\"gid\\\": 500, \\\"group\\\": \\\"dag\\\", \\\"handler\\\":\\n\\n\\\"ZipArchive\\\", \\\"mode\\\": \\\"0775\\\", \\\"owner\\\": \\\"dag\\\", \\\"secontext\\\": \\\"unconfined_u:object_r:user_tmp_t:s0\\\",\\n\\n\\\"size\\\": 4096, \\\"src\\\": \\\"/home/dag/.ansible/tmp/ansible-tmp-1479989967.66-3171393713112/source\\\",\\n\\n\\\"state\\\": \\\"directory\\\", \\\"uid\\\": 500}\\n\\n```\\n\\nWhereas before the complete list of deflated files was being shown (when using -v) which was much more than anyone was willing to look at.\", \n    \"title\": \"Various changes/improvements, add debugging output\"\n  }, \n  \"19016\": {\n    \"ansible_version\": \"2.0.2.0\", \n    \"body\": \"##### ISSUE TYPE\\n\\n Bugfix Pull Request\\n##### COMPONENT NAME\\n\\nmysql_user\\n##### ANSIBLE VERSION\\n\\n```\\n2.0.2.0\\n```\\n##### SUMMARY\\n\\nMySQL returns privileges on columns as `PRIVILEGES (column)`.\\nFor permissions to be correctly matched, it must be specified exactly the\\nsame in the module `priv` argument. A resulting string is like\\n``dbname`.`dbtable`:PRIVILEGES (column)`. Thus, the space before the opening\\nparenthesis must also be removed when creating the set of privileges for\\nvalidation with the expected set.\\n\\nWhen the space before the opening parenthesis is not present, the rights are not properly set. The privilege string is ``dbname`.`dbtable`:SELECT(EMAIL),UPDATE(PASSWORD)`. I got\\n\\n```\\n+---------------------------------------------------------------------------------+\\n| Grants for mysqluser@localhost                                                  |\\n+---------------------------------------------------------------------------------+\\n| GRANT USAGE ON *.* TO 'mysqluser'@'localhost' IDENTIFIED BY PASSWORD '********' |\\n| GRANT SELECT (EMAIL) ON `dbname`.`dbtable` TO 'mysqluser'@'localhost'           |\\n+---------------------------------------------------------------------------------+\\n```\\n\\nAlso, the module kept telling there is changes. After the fix, and putting the space in the privilege string ``dbname`.`dbtable`:SELECT (EMAIL),UPDATE (PASSWORD)`. I got\\n\\n```\\n+------------------------------------------------------------------------------------------+\\n| Grants for mysqluser@localhost                                                           |\\n+------------------------------------------------------------------------------------------+\\n| GRANT USAGE ON *.* TO 'mysqluser'@'localhost' IDENTIFIED BY PASSWORD '******'            |\\n| GRANT SELECT (EMAIL), UPDATE (PASSWORD) ON `dbname`.`dbtable` TO 'mysqluser'@'localhost' |\\n+------------------------------------------------------------------------------------------+\\n```\\n\\nWhich is what is expected and a rerun got the `ok` state.\\n\\nRunning the module with the privilege string ``dbname`.`dbtable`:SELECT (EMAIL),UPDATE (PASSWORD)` before and after the change.\\n\\n```\\n$ ansible-playbook /etc/ansible/test.pb.yaml -vv\\nUsing /***/.ansible.cfg as config file\\n\\nPLAYBOOK: test.pb.yaml *********************************************************\\n1 plays in /etc/ansible/test.pb.yaml\\n\\nPLAY [ks] **********************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [server]\\n\\nTASK [User] ********************************************************************\\ntask path: /etc/ansible/test.pb.yaml:9\\nfatal: [server]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"invalid privileges string: Invalid privileges specified: frozenset(['UPDATE ', 'SELECT '])\\\"}\\n\\nNO MORE HOSTS LEFT *************************************************************\\n        to retry, use: --limit @/etc/ansible/test.pb.retry\\n\\nPLAY RECAP *********************************************************************\\nserver       : ok=1    changed=0    unreachable=0    failed=1\\n\\n$ ansible-playbook /etc/ansible/test.pb.yaml -vv\\nUsing /***/.ansible.cfg as config file\\n\\nPLAYBOOK: test.pb.yaml *********************************************************\\n1 plays in /etc/ansible/test.pb.yaml\\n\\nPLAY [ks] **********************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [server]\\n\\nTASK [User] ********************************************************************\\ntask path: /etc/ansible/test.pb.yaml:9\\nchanged: [server] => {\\\"changed\\\": true, \\\"user\\\": \\\"mysqluser\\\"}\\n\\nPLAY RECAP *********************************************************************\\nserver       : ok=2    changed=1    unreachable=0    failed=0\\n\\n```\\n\", \n    \"component_name\": \"mysql_user\", \n    \"component_raw\": \"mysql_user\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19016\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"community_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/database/mysql/mysql_user.py\", \n    \"summary\": \"MySQL returns privileges on columns as `PRIVILEGES (column)`.\\nFor permissions to be correctly matched, it must be specified exactly the\\nsame in the module `priv` argument. A resulting string is like\\n``dbname`.`dbtable`:PRIVILEGES (column)`. Thus, the space before the opening\\nparenthesis must also be removed when creating the set of privileges for\\nvalidation with the expected set.\\n\\nWhen the space before the opening parenthesis is not present, the rights are not properly set. The privilege string is ``dbname`.`dbtable`:SELECT(EMAIL),UPDATE(PASSWORD)`. I got\\n\\n```\\n+---------------------------------------------------------------------------------+\\n| Grants for mysqluser@localhost                                                  |\\n+---------------------------------------------------------------------------------+\\n| GRANT USAGE ON *.* TO 'mysqluser'@'localhost' IDENTIFIED BY PASSWORD '********' |\\n| GRANT SELECT (EMAIL) ON `dbname`.`dbtable` TO 'mysqluser'@'localhost'           |\\n+---------------------------------------------------------------------------------+\\n```\\n\\nAlso, the module kept telling there is changes. After the fix, and putting the space in the privilege string ``dbname`.`dbtable`:SELECT (EMAIL),UPDATE (PASSWORD)`. I got\\n\\n```\\n+------------------------------------------------------------------------------------------+\\n| Grants for mysqluser@localhost                                                           |\\n+------------------------------------------------------------------------------------------+\\n| GRANT USAGE ON *.* TO 'mysqluser'@'localhost' IDENTIFIED BY PASSWORD '******'            |\\n| GRANT SELECT (EMAIL), UPDATE (PASSWORD) ON `dbname`.`dbtable` TO 'mysqluser'@'localhost' |\\n+------------------------------------------------------------------------------------------+\\n```\\n\\nWhich is what is expected and a rerun got the `ok` state.\\n\\nRunning the module with the privilege string ``dbname`.`dbtable`:SELECT (EMAIL),UPDATE (PASSWORD)` before and after the change.\\n\\n```\\n$ ansible-playbook /etc/ansible/test.pb.yaml -vv\\nUsing /***/.ansible.cfg as config file\\n\\nPLAYBOOK: test.pb.yaml *********************************************************\\n1 plays in /etc/ansible/test.pb.yaml\\n\\nPLAY [ks] **********************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [server]\\n\\nTASK [User] ********************************************************************\\ntask path: /etc/ansible/test.pb.yaml:9\\nfatal: [server]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"invalid privileges string: Invalid privileges specified: frozenset(['UPDATE ', 'SELECT '])\\\"}\\n\\nNO MORE HOSTS LEFT *************************************************************\\n        to retry, use: --limit @/etc/ansible/test.pb.retry\\n\\nPLAY RECAP *********************************************************************\\nserver       : ok=1    changed=0    unreachable=0    failed=1\\n\\n$ ansible-playbook /etc/ansible/test.pb.yaml -vv\\nUsing /***/.ansible.cfg as config file\\n\\nPLAYBOOK: test.pb.yaml *********************************************************\\n1 plays in /etc/ansible/test.pb.yaml\\n\\nPLAY [ks] **********************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [server]\\n\\nTASK [User] ********************************************************************\\ntask path: /etc/ansible/test.pb.yaml:9\\nchanged: [server] => {\\\"changed\\\": true, \\\"user\\\": \\\"mysqluser\\\"}\\n\\nPLAY RECAP *********************************************************************\\nserver       : ok=2    changed=1    unreachable=0    failed=0\\n\\n```\", \n    \"title\": \"Fix: mysql_user - permission string with column privileges\"\n  }, \n  \"19020\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [/usr/share/ansible]\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nec2_ami\\n##### ANSIBLE VERSION\\n\\n```\\nansible --version\\nansible 2.1.1.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = ['/usr/share/ansible']\\n```\\n##### SUMMARY\\n\\nThis pull request implements registration of Amazon Machine Images using an EBS Snapshot instead of an instance. This allows for an AMI to be created from a backup snapshot.\\n\\nExtra parameters (architecture, kernel_id, virtualization_type, root_device_name) have been added to support the `ec2.register_image` boto method. The difference in block device mapping variable names between `ec2.register_image` and `ec2.create_image` had to be worked around.\\n\\nOther changes include:\\n- Ensure that launch_permissions are updated when an AMI with the same name (no `image_id` specified) already exists\\n- Update register variable names in examples to be more consistent with the purpose of the module\\n\", \n    \"component_name\": \"ec2_ami\", \n    \"component_raw\": \"ec2_ami\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19020\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"committer_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_ami.py\", \n    \"summary\": \"This pull request implements registration of Amazon Machine Images using an EBS Snapshot instead of an instance. This allows for an AMI to be created from a backup snapshot.\\n\\nExtra parameters (architecture, kernel_id, virtualization_type, root_device_name) have been added to support the `ec2.register_image` boto method. The difference in block device mapping variable names between `ec2.register_image` and `ec2.create_image` had to be worked around.\\n\\nOther changes include:\\n- Ensure that launch_permissions are updated when an AMI with the same name (no `image_id` specified) already exists\\n- Update register variable names in examples to be more consistent with the purpose of the module\", \n    \"title\": \"ec2_ami: Add support for registering Amazon Machine Images from EBS snapshots.\"\n  }, \n  \"19021\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [/usr/share/ansible]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- New Module Pull Request\\r\\n##### COMPONENT NAME\\r\\n\\r\\n**Recreated PR due to old one being deleted\\r\\nhttps://groups.google.com/forum/#!topic/ansible-devel/0eRSpiGkios\\r\\n\\r\\nec2_vpc_vgw_facts\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = ['/usr/share/ansible']\\r\\n```\\r\\n##### SUMMARY\\r\\n\\r\\nThis module returns virtual gateway facts for an AWS account.\\r\\n\\r\\n```\\r\\nTASK [print output] ************************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": {\\r\\n        \\\"changed\\\": false, \\r\\n        \\\"virtual_gateways\\\": [\\r\\n            {\\r\\n                \\\"state\\\": \\\"available\\\", \\r\\n                \\\"tags\\\": [\\r\\n                    {\\r\\n                        \\\"key\\\": \\\"Name\\\", \\r\\n                        \\\"value\\\": \\\"TEST-VGW\\\"\\r\\n                    }\\r\\n                ], \\r\\n                \\\"type\\\": \\\"ipsec.1\\\", \\r\\n                \\\"vpc_attachments\\\": [\\r\\n                    {\\r\\n                        \\\"state\\\": \\\"attached\\\", \\r\\n                        \\\"vpc_id\\\": \\\"vpc-22a93c74\\\"\\r\\n                    }\\r\\n                ], \\r\\n                \\\"vpn_gateway_id\\\": \\\"vgw-42e3d64e\\\"\\r\\n            }\\r\\n        ]\\r\\n    }\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"recreated pr due to old one being deleted\", \n    \"component_raw\": \"**Recreated PR due to old one being deleted\\nhttps://groups.google.com/forum/#!topic/ansible-devel/0eRSpiGkios\\nec2_vpc_vgw_facts\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19021\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_vgw_facts.py\", \n    \"summary\": \"This module returns virtual gateway facts for an AWS account.\\n\\n\\n\\n```\\n\\nTASK [print output] ************************************************************\\n\\nok: [localhost] => {\\n\\n    \\\"msg\\\": {\\n\\n        \\\"changed\\\": false, \\n\\n        \\\"virtual_gateways\\\": [\\n\\n            {\\n\\n                \\\"state\\\": \\\"available\\\", \\n\\n                \\\"tags\\\": [\\n\\n                    {\\n\\n                        \\\"key\\\": \\\"Name\\\", \\n\\n                        \\\"value\\\": \\\"TEST-VGW\\\"\\n\\n                    }\\n\\n                ], \\n\\n                \\\"type\\\": \\\"ipsec.1\\\", \\n\\n                \\\"vpc_attachments\\\": [\\n\\n                    {\\n\\n                        \\\"state\\\": \\\"attached\\\", \\n\\n                        \\\"vpc_id\\\": \\\"vpc-22a93c74\\\"\\n\\n                    }\\n\\n                ], \\n\\n                \\\"vpn_gateway_id\\\": \\\"vgw-42e3d64e\\\"\\n\\n            }\\n\\n        ]\\n\\n    }\\n\\n}\\n\\n```\", \n    \"title\": \"new AWS module for ec2 VPC vgw facts\"\n  }, \n  \"19022\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nkatello\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThe existing logic will fail to add a katello/satellite repository set if that repository set does not have a release version. Some repository sets, like the satellite tools set, do not have a release version. By adding some conditionals we can also support these types of repository sets.\\r\\n\\r\\n```\\r\\n\\\"WARNING:nailgun.client:Received HTTP 422 response: {\\\\\\\"displayMessage\\\\\\\":\\\\\\\"[\\\\\\\\\\\\\\\"releasever\\\\\\\\\\\\\\\"] cannot be specified for Red Hat Satellite Tools 6.2 (for RHEL 6 Server) (RPMs) as that information is not substituable\\r\\n```\\r\\n\\r\\n- Allow support of repository_sets that do not have a releasever, like the\\r\\nRed Hat Satellite Tools 6.2 for RHEL 7 Server RPMs x86_64 set.\", \n    \"component_name\": \"katello\", \n    \"component_raw\": \"katello\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19022\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"community_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/remote_management/foreman/katello.py\", \n    \"summary\": \"The existing logic will fail to add a katello/satellite repository set if that repository set does not have a release version. Some repository sets, like the satellite tools set, do not have a release version. By adding some conditionals we can also support these types of repository sets.\\n\\n\\n\\n```\\n\\n\\\"WARNING:nailgun.client:Received HTTP 422 response: {\\\\\\\"displayMessage\\\\\\\":\\\\\\\"[\\\\\\\\\\\\\\\"releasever\\\\\\\\\\\\\\\"] cannot be specified for Red Hat Satellite Tools 6.2 (for RHEL 6 Server) (RPMs) as that information is not substituable\\n\\n```\\n\\n\\n\\n- Allow support of repository_sets that do not have a releasever, like the\\n\\nRed Hat Satellite Tools 6.2 for RHEL 7 Server RPMs x86_64 set.\", \n    \"title\": \"Katello module support for repository_sets without a releasever\"\n  }, \n  \"19025\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nsystemd\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nIn our environment we have custom services that need to be stopped and\\r\\nrestarted very gracefully to not interrupt active sessions.\\r\\n\\r\\nA stop job, depending on the state, can take up to 20 minutes until the\\r\\nprocess exits. It simply reacts to SIGTERM with a graceful shutdown.\\r\\n\\r\\nBy default, systemctl blocks until the job has completed, which leads to\\r\\nAnsible hanging on this task for up to 20 minutes.\\r\\n\\r\\nThankfully systemctl supports the `--no-block` flag which lets the job\\r\\ncontinue in the background.\\r\\n\\r\\nThis PR adds support for that flag as the `no_block` boolean option.\\r\\n\\r\\nFrom the man page:\\r\\n\\r\\n     --no-block\\r\\n       Do not synchronously wait for the requested operation to\\r\\n       finish. If this is not specified, the job will be\\r\\n       verified, enqueued and systemctl will wait until the\\r\\n       unit's start-up is completed. By passing this argument,\\r\\n       it is only verified and enqueued. This option may not be\\r\\n       combined with --wait.\", \n    \"component_name\": \"systemd\", \n    \"component_raw\": \"systemd\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19025\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"core_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/systemd.py\", \n    \"summary\": \"In our\", \n    \"title\": \"systemd: Add boolean option to enable --no-block\"\n  }, \n  \"19026\": {\n    \"ansible_version\": \"ansible 2.0.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\nYarn\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.0.1.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nAdds [Yarn](https://yarnpkg.com/) Node.js package manager support to Ansible. Because Yarn is very similar to NPM, the module draws heavily from Chris Hoffman's `npm` Ansible module. The output of Yarn was omitted because it makes heavy use of Emojis which do not translate into a clear JSON format.\\n\", \n    \"component_name\": \"yarn\", \n    \"component_raw\": \"Yarn\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19026\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/language/yarn.py\", \n    \"summary\": \"Adds [Yarn](https://yarnpkg.com/) Node.js package manager support to Ansible. Because Yarn is very similar to NPM, the module draws heavily from Chris Hoffman's `npm` Ansible module. The output of Yarn was omitted because it makes heavy use of Emojis which do not translate into a clear JSON format.\", \n    \"title\": \"Add Yarn module\"\n  }, \n  \"19027\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\nNew Module Pull Request\\n##### COMPONENT NAME\\n\\nosx_service\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nThis module allows to start, stop and restart Mac OS X launchd daemons\\nvia `launchctl`.\\nIt supports system services (stuff that has a plist under\\n/Library/LaunchDaemons) and must be run with root permissions.\\n\\nAbout the implementation...\\n\\nService management on Mac OS X is a different horse and deserves its own module.\\nI build the first draft in Ruby: [osx_service.rb](https://gist.github.com/bjoernalbers/f40b3fc17067959b9e4663be5021c1be).\\nBut with the help of `AnsibleModule` I was able to port it to Python so that others could use this as well.\\n\\nHere is some example output...\\n\\n```\\nTASK [stop crashplan] **********************************************************\\nchanged: [localhost] => {\\\"changed\\\": true, \\\"name\\\": \\\"com.crashplan.engine\\\", \\\"state\\\": \\\"stopped\\\"}\\n```\\n\\nThanks in advance,\\nBj\\u00f6rn\\n\", \n    \"component_name\": \"osx_service\", \n    \"component_raw\": \"osx_service\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19027\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/launchd.py\", \n    \"summary\": \"This module allows to start, stop and restart Mac OS X launchd daemons\\nvia `launchctl`.\\nIt supports system services (stuff that has a plist under\\n/Library/LaunchDaemons) and must be run with root permissions.\\n\\nAbout the implementation...\\n\\nService management on Mac OS X is a different horse and deserves its own module.\\nI build the first draft in Ruby: [osx_service.rb](https://gist.github.com/bjoernalbers/f40b3fc17067959b9e4663be5021c1be).\\nBut with the help of `AnsibleModule` I was able to port it to Python so that others could use this as well.\\n\\nHere is some example output...\\n\\n```\\nTASK [stop crashplan] **********************************************************\\nchanged: [localhost] => {\\\"changed\\\": true, \\\"name\\\": \\\"com.crashplan.engine\\\", \\\"state\\\": \\\"stopped\\\"}\\n```\\n\\nThanks in advance,\\nBjrn\", \n    \"title\": \"Add module \\\"launchd\\\" to manage Mac OS X services.\"\n  }, \n  \"19028\": {\n    \"ansible_version\": \"ansible 2.0.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @pumazi on April 13, 2016 20:12_\\n\\n##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\npip\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.0.1.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nInstallation of local Python packages using the pip module fails. For example, from within the local package's root, `pip install -e .` or `pip install -e .[feature]`.\\n##### STEPS TO REPRODUCE\\n\\nGiven an archived package installed on a server and unpacked to say `/tmp/requests`, install this package using the pip module.\\n\\n``` yml\\n- name: failed local python package install\\n  hosts: all\\n  tasks:\\n    - name: acquire source via the tarball\\n      become: yes\\n      unarchive:\\n        src: \\\"https://pypi.python.org/packages/source/m/mock/mock-2.0.0.tar.gz\\\"\\n        dest: \\\"/var/tmp/\\\"\\n        copy: no\\n    - name: install\\n      become: yes\\n      pip:\\n        name: \\\".[feature]\\\"\\n        editable: yes\\n        chdir: \\\"/var/tmp/mock-2.0.0\\\"\\n        state: present\\n```\\n##### EXPECTED RESULTS\\n\\nInstallation of the local python package as a editable/development package.\\n##### ACTUAL RESULTS\\n\\nWith the addition of the `extras_require` in the package's `setup.py`, `[feature]` in the example, the module attempts to download the package rather than install from the local directory.\\n\\n```\\nfatal: [example.com]: FAILED! => {\\\"changed\\\": false, \\\"cmd\\\": \\\"/usr/bin/pip install .[feature]\\\", \\\"failed\\\": true, \\\"invocation\\\": {\\\"module_args\\\": {\\\"chdir\\\": \\\"/var/tmp/mock-2.0.0\\\", \\\"editable\\\": true, \\\"executable\\\": null, \\\"extra_args\\\": null, \\\"name\\\": \\\".[feature]\\\", \\\"requirements\\\": null, \\\"state\\\": \\\"present\\\", \\\"use_mirrors\\\": true, \\\"version\\\": null, \\\"virtualenv\\\": null, \\\"virtualenv_command\\\": \\\"virtualenv\\\", \\\"virtualenv_python\\\": null, \\\"virtualenv_site_packages\\\": false}, \\\"module_name\\\": \\\"pip\\\"}, \\\"msg\\\": \\\"stdout: Downloading/unpacking .[feature]\\\\n  Could not find any downloads that satisfy the requirement .[feature]\\\\nCleaning up...\\\\nNo distributions at all found for .[feature]\\\\nStoring debug log for failure in /root/.pip/pip.log\\\\n\\\"}\\n```\\n\\nEditable was set to `true`, but it is ignored. Looking at the code, I can see this is because the editable check is part of a compound condition that also checks if the package name containing a VCS prefix. As such, the editable flag `-e` is never applied to the command.\\n\\nNote, the `mock` package doesn't actually have a requirements extra called \\\"feature\\\", but that's not the point. The internals of pip/setuptools will happily ignore the extra if it doesn't exist.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#3426_\", \n    \"component_name\": \"pip\", \n    \"component_raw\": \"pip\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19028\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"bug\", \n      \"module\", \n      \"waiting_on_contributor\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/language/pip.py\", \n    \"summary\": \"Installation of local Python packages using the pip module fails. For example, from within the local package's root, `pip install -e .` or `pip install -e .[feature]`.\", \n    \"title\": \"pip fails when installing a local python package\"\n  }, \n  \"19030\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nservice module, ansible_service_mgr\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.1.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nUpdated Ubuntu 14.04.5 LTS\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nAfter fully updating trusty, ansible seems to detect the init system as being systemd based and things (service module, ansible_service_mgr fact, etc.) fail.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nBuilt trusty LXC container, upgrade all services (shown here http://cdn.pasteraw.com/c8ajufdx6fo3d8kyiaf76rh19h02cxo) and then run ansible plays.\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n- hosts: unbound\\r\\n  gather_facts: no\\r\\n  tasks:\\r\\n    - name: check lsb_release\\r\\n      command: lsb_release -a\\r\\n      register: lsb_rel\\r\\n    - debug:\\r\\n        msg: \\\"{{ lsb_rel }}\\\"\\r\\n    - name: check init\\r\\n      command: cat /proc/1/comm\\r\\n      register: init_sys\\r\\n    - debug:\\r\\n        msg: \\\"{{ init_sys }}\\\"\\r\\n    - debug:\\r\\n        msg: \\\"{{ ansible_service_mgr }}\\\"\\r\\n    - name: Restart unbound\\r\\n      service:\\r\\n        name: unbound\\r\\n        state: restarted\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nPLAY [unbound] *****************************************************************\\r\\n\\r\\nTASK [check lsb_release] *******************************************************\\r\\nchanged: [aio1_unbound_container-bf5686a6]\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [aio1_unbound_container-bf5686a6] => {\\r\\n    \\\"msg\\\": {\\r\\n        \\\"changed\\\": true,\\r\\n        \\\"cmd\\\": [\\r\\n            \\\"lsb_release\\\",\\r\\n            \\\"-a\\\"\\r\\n        ],\\r\\n        \\\"delta\\\": \\\"0:00:00.074606\\\",\\r\\n        \\\"end\\\": \\\"2016-12-09 02:16:59.911433\\\",\\r\\n        \\\"rc\\\": 0,\\r\\n        \\\"start\\\": \\\"2016-12-09 02:16:59.836827\\\",\\r\\n        \\\"stderr\\\": \\\"No LSB modules are available.\\\",\\r\\n        \\\"stdout\\\": \\\"Distributor ID:\\\\tUbuntu\\\\nDescription:\\\\tUbuntu 14.04.5 LTS\\\\nRelease:\\\\t14.04\\\\nCodename:\\\\ttrusty\\\",\\r\\n        \\\"stdout_lines\\\": [\\r\\n            \\\"Distributor ID:\\\\tUbuntu\\\",\\r\\n            \\\"Description:\\\\tUbuntu 14.04.5 LTS\\\",\\r\\n            \\\"Release:\\\\t14.04\\\",\\r\\n            \\\"Codename:\\\\ttrusty\\\"\\r\\n        ],\\r\\n        \\\"warnings\\\": []\\r\\n    }\\r\\n}\\r\\n\\r\\nTASK [check init] **************************************************************\\r\\nchanged: [aio1_unbound_container-bf5686a6]\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [aio1_unbound_container-bf5686a6] => {\\r\\n    \\\"msg\\\": {\\r\\n        \\\"changed\\\": true,\\r\\n        \\\"cmd\\\": [\\r\\n            \\\"cat\\\",\\r\\n            \\\"/proc/1/comm\\\"\\r\\n        ],\\r\\n        \\\"delta\\\": \\\"0:00:00.003578\\\",\\r\\n        \\\"end\\\": \\\"2016-12-09 02:17:01.761662\\\",\\r\\n        \\\"rc\\\": 0,\\r\\n        \\\"start\\\": \\\"2016-12-09 02:17:01.758084\\\",\\r\\n        \\\"stderr\\\": \\\"\\\",\\r\\n        \\\"stdout\\\": \\\"init\\\",\\r\\n        \\\"stdout_lines\\\": [\\r\\n            \\\"init\\\"\\r\\n        ],\\r\\n        \\\"warnings\\\": []\\r\\n    }\\r\\n}\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [aio1_unbound_container-bf5686a6] => {\\r\\n    \\\"msg\\\": \\\"systemd\\\"\\r\\n}\\r\\n\\r\\nTASK [Restart unbound] *********************************************************\\r\\nfatal: [aio1_unbound_container-bf5686a6]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failed to issue method call: Unit unbound.service not loaded.\\\\nFailed to issue method call: Unit unbound.service failed to load: No such file or directory. See system logs and 'systemctl status unbound.service' for details.\\\\n\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"service   ansible_service_mgr\", \n    \"component_raw\": \"service module, ansible_service_mgr\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19030\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/service.py\", \n    \"summary\": \"After fully updating trusty, ansible seems to detect the init system as being systemd based and things (service module, ansible_service_mgr fact, etc.) fail.\", \n    \"title\": \"service module fails on updated trusty\"\n  }, \n  \"19032\": {\n    \"ansible_version\": \"ansible 2.3.0 (kerberos_auth_uri a6c870d62c) last updated 2016/12/09 132230 (GMT +1000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodule_utils/urls\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 (kerberos_auth_uri a6c870d62c) last updated 2016/12/09 13:22:30 (GMT +1000)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nEnable kerberos authentication for URLs.\\r\\n\\r\\nMakes use of very recent urllib_kerberos module available on pypi.\", \n    \"component_name\": \"module_utils/urls\", \n    \"component_raw\": \"module_utils/urls\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19032\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"c:module_utils/urls\", \n      \"feature\", \n      \"module_util\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Enable kerberos authentication for URLs.\\n\\n\\n\\nMakes use of very recent urllib_kerberos module available on pypi.\", \n    \"title\": \"Allow kerberos_auth in URL requests\"\n  }, \n  \"19035\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncloud/amazon/iam_saml_federation.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdds support for managing AWS IAM Identity Federation (SAML) providers.\\r\\nSupports check_mode.\", \n    \"component_name\": \"cloud/amazon/iam_saml_federation.py\", \n    \"component_raw\": \"cloud/amazon/iam_saml_federation.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19035\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/iam_saml_federation.py\", \n    \"summary\": \"Adds support for managing AWS IAM Identity Federation (SAML) providers.\\n\\nSupports check_mode.\", \n    \"title\": \"New AWS module: iam_saml_federation for IAM Identity Federation (SAML)\"\n  }, \n  \"19039\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 680cade77a) last updated 2016/10/27 145540 (GMT +800)\\nlib/ansible/modules/core (detached HEAD c51ced56cc) last updated 2016/10/27 145815 (GMT +800)\\nlib/ansible/modules/extras (detached HEAD 8ffe314ea5) last updated 2016/10/27 145815 (GMT +800)\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\ncloud/docker/docker_container.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.3.0 (devel 680cade77a) last updated 2016/10/27 14:55:40 (GMT +800)\\n  lib/ansible/modules/core: (detached HEAD c51ced56cc) last updated 2016/10/27 14:58:15 (GMT +800)\\n  lib/ansible/modules/extras: (detached HEAD 8ffe314ea5) last updated 2016/10/27 14:58:15 (GMT +800)\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nI have two docker images with same image ID but different image tag:\\n\\n```\\n\\u279c  ~ docker images | grep nginx \\nnginx                                  1.10.2              54d9f6a22b41        7 days ago          180.7 MB\\nnginx                                  1.10.3              54d9f6a22b41        7 days ago          180.7 MB\\n```\\n\\nAnd I have a running docker container belongs to nginx:1.10.2\\n\\n```\\n\\u279c  ~ docker ps\\nCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES\\n136914b076a7        nginx:1.10.2        \\\"nginx -g 'daemon off\\\"   5 hours ago         Up 5 hours          80/tcp, 443/tcp     nginx\\n```\\n\\nPlaybook:\\n\\n```\\n\\n---\\n- hosts: localhost\\n  tasks:\\n  - name: Test ignore_image\\n    docker_container: \\n      name: nginx\\n      image: nginx:1.10.3\\n      ignore_image: true\\n      state: started\\n```\\n\\nAfter execute the playbook, the running docker container becomes to nginx:1.10.3\\n\\n```\\n\\u279c  ~ ansible-playbook test.yml\\n\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [Test ignore_image] *******************************************************\\nchanged: [localhost]\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=2    changed=1    unreachable=0    failed=0\\n\\n\\u279c  ~ docker ps\\nCONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES\\n696327d6e4d2        nginx:1.10.3        \\\"nginx -g 'daemon off\\\"   About a minute ago   Up About a minute   80/tcp, 443/tcp     nginx\\n```\\n\\n<!---\\nIf you are fixing an existing issue, please include \\\"Fixes #nnnn\\\" in your commit\\nmessage and your description; but you should still explain what the change does.\\n-->\\n\\n<!--- Paste verbatim command output below, e.g. before and after your change -->\\n\\nCurrently the ignore_image option can be set, but can not work as it is descripted in document. \\nThe reason is the code will check the difference of configurations between current container and target image, and it will mark the `different` to `True` when the image is different even we set `ignore_image=true`, that will cause the container being re-create.\\n\\nSo my solutions is ignore the difference of image when comparing the configurations of current docker container and target docker image.\\n\", \n    \"component_name\": \"cloud/docker/docker_container.py\", \n    \"component_raw\": \"cloud/docker/docker_container.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19039\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"committer_review\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"summary\": \"I have two docker images with same image ID but different image tag:\\n\\n```\\n  ~ docker images | grep nginx \\nnginx                                  1.10.2              54d9f6a22b41        7 days ago          180.7 MB\\nnginx                                  1.10.3              54d9f6a22b41        7 days ago          180.7 MB\\n```\\n\\nAnd I have a running docker container belongs to nginx:1.10.2\\n\\n```\\n  ~ docker ps\\nCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES\\n136914b076a7        nginx:1.10.2        \\\"nginx -g 'daemon off\\\"   5 hours ago         Up 5 hours          80/tcp, 443/tcp     nginx\\n```\\n\\nPlaybook:\\n\\n```\\n\\n---\\n- hosts: localhost\\n  tasks:\\n  - name: Test ignore_image\\n    docker_container: \\n      name: nginx\\n      image: nginx:1.10.3\\n      ignore_image: true\\n      state: started\\n```\\n\\nAfter execute the playbook, the running docker container becomes to nginx:1.10.3\\n\\n```\\n  ~ ansible-playbook test.yml\\n\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [Test ignore_image] *******************************************************\\nchanged: [localhost]\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=2    changed=1    unreachable=0    failed=0\\n\\n  ~ docker ps\\nCONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES\\n696327d6e4d2        nginx:1.10.3        \\\"nginx -g 'daemon off\\\"   About a minute ago   Up About a minute   80/tcp, 443/tcp     nginx\\n```\\n\\n\\n\\n\\n\\nCurrently the ignore_image option can be set, but can not work as it is descripted in document. \\nThe reason is the code will check the difference of\", \n    \"title\": \"Fix ignore_image option not work correctly.\"\n  }, \n  \"19040\": {\n    \"ansible_version\": \"ansible 2.3.0 (disable_container_log 492da6ce71) last updated 2016/10/21 094443 (GMT +800)\\nlib/ansible/modules/core (detached HEAD 653ec28a97) last updated 2016/10/21 092710 (GMT +800)\\nlib/ansible/modules/extras (detached HEAD a14ba9b505) last updated 2016/10/21 092710 (GMT +800)\\nconfig file = /home/jonathang/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\ncloud/docker/docker_container.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.3.0 (disable_container_log 492da6ce71) last updated 2016/10/21 09:44:43 (GMT +800)\\n  lib/ansible/modules/core: (detached HEAD 653ec28a97) last updated 2016/10/21 09:27:10 (GMT +800)\\n  lib/ansible/modules/extras: (detached HEAD a14ba9b505) last updated 2016/10/21 09:27:10 (GMT +800)\\n  config file = /home/jonathang/.ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nAdd the option `none` to `log_driver` option to support the feature to disable any logging for the container.\\n\\nFixed #5337 \\n\\n<!---\\nIf you are fixing an existing issue, please include \\\"Fixes #nnnn\\\" in your commit\\nmessage and your description; but you should still explain what the change does.\\n-->\\n\\n<!--- Paste verbatim command output below, e.g. before and after your change -->\\n\", \n    \"component_name\": \"cloud/docker/docker_container.py\", \n    \"component_raw\": \"cloud/docker/docker_container.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19040\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"committer_review\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"summary\": \"Add the option `none` to `log_driver` option to support the feature to disable any logging for the container.\\n\\nFixed #5337\", \n    \"title\": \"Support option none in docker_container when setting log_driver\"\n  }, \n  \"19041\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncs_serviceoffer\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nnew module cs_serviceoffer\\r\\n\\r\\n\", \n    \"component_name\": \"cs_serviceoffer\", \n    \"component_raw\": \"cs_serviceoffer\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19041\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/cloudstack/cs_serviceoffer.py\", \n    \"summary\": \"new module cs_serviceoffer\", \n    \"title\": \"WIP: cloudstack: new module cs_serviceoffer\"\n  }, \n  \"19042\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\npostgresql modules\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdd support for a forced SSL connection to a PostgreSQL databases using a given certificate.\\r\\nWhen the certificate does not match (or is incorrect at any way), the connection is refused.\\r\\n\", \n    \"component_name\": \"postgresql  s\", \n    \"component_raw\": \"postgresql modules\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19042\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"needs_revision\"\n    ], \n    \"module_match\": \"lib/ansible/modules/database/postgresql/postgresql_user.py\", \n    \"summary\": \"Add support for a forced SSL connection to a PostgreSQL databases using a given certificate.\\n\\nWhen the certificate does not match (or is incorrect at any way), the connection is refused.\", \n    \"title\": \"[PostgreSQL] Support forced SSL-verified connection with given CA certificate\"\n  }, \n  \"19044\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncs_portforward\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nimplement vpc in cs_portforward\\r\\n\\r\\n\", \n    \"component_name\": \"cs_portforward\", \n    \"component_raw\": \"cs_portforward\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19044\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"feature\", \n      \"in progress\", \n      \"module\", \n      \"owner_pr\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/cloudstack/cs_portforward.py\", \n    \"summary\": \"implement vpc in cs_portforward\", \n    \"title\": \"cloudstack: cs_portforward: implement vpc support\"\n  }, \n  \"19047\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\npackaging/os/swdepot.py \\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nswlist add a header that could match package name.\\r\\nReal example : \\\"tar\\\" that match \\\"target\\\"\\r\\n\\r\\n```\\r\\n$swlist -a revision -l product tar | grep tar\\r\\n# Contacting target \\\"yrvm08\\\"...\\r\\n  tar   1.29\\r\\n```\\r\\n\\r\\nSo filtering it via \\\"grep -v \\\\#\\\"\\r\\n```\\r\\n$ swlist -a revision -l product tar | grep -v \\\\# |  grep tar\\r\\n  tar   1.29\\r\\n```\\r\\n\", \n    \"component_name\": \"packaging/os/swdepot.py\", \n    \"component_raw\": \"packaging/os/swdepot.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19047\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"community_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/swdepot.py\", \n    \"summary\": \"swlist add a header that could match package name.\\n\\nReal example : \\\"tar\\\" that match \\\"target\\\"\\n\\n\\n\\n```\\n\\n$swlist -a revision -l product tar | grep tar\\n\\n# Contacting target \\\"yrvm08\\\"...\\n\\n  tar   1.29\\n\\n```\\n\\n\\n\\nSo filtering it via \\\"grep -v \\\\#\\\"\\n\\n```\\n\\n$ swlist -a revision -l product tar | grep -v \\\\# |  grep tar\\n\\n  tar   1.29\\n\\n```\", \n    \"title\": \"swdepot.py : filter swlist result header\"\n  }, \n  \"19050\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nPlease verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nN/A\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nnothing special\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nrun from CentOS 7\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nCalling handlers with parameters in many cases fails because of them not being found by ansible, depending on the way the variable you try to pass was originally set.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n\\r\\n1. Get [this gist](https://gist.github.com/j0057/5af0ac913a203a5b94ef)\\r\\n2. Run the playbook again to verify the handler is called as expected (one time with parameter `a`, one time with parameter `b`)\\r\\n3. Replace `name: a` with `name: \\\"{{ inventory_hostname }}\\\"` in `site.yml`\\r\\n4. Run the playbook again\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nHandler is called one time with parameter `localhost`, one time with parameter `b`.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nNotifying the handler with parameter `localhost` fails with the following message:\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nERROR! The requested handler 'something happened to localhost' was not found in either the main handlers list nor in the listening handlers list\\r\\n```\\r\\n\\r\\nThis also happens under many other circumstances, for example, in the following single-file playbook notifying the handler fails in all four cases:\\r\\n```\\r\\n---\\r\\n- hosts: localhost\\r\\n  vars:\\r\\n    static_var: static\\r\\n    dynamic_var: \\\"{{ inventory_hostname }}\\\"\\r\\n  tasks:\\r\\n    - name: set fact\\r\\n      set_fact: set_fact_var=set_fact\\r\\n    - name: trigger handler for inventory_var\\r\\n      command: /bin/true\\r\\n      notify: handle {{ inventory_var }}\\r\\n    - name: trigger handler for static_var\\r\\n      command: /bin/true\\r\\n      notify: handle {{ static_var }}\\r\\n    - name: trigger handler for dynamic_var\\r\\n      command: /bin/true\\r\\n      notify: handle {{ dynamic_var }}\\r\\n    - name: trigger handler for set_fact_var\\r\\n      command: /bin/true\\r\\n      notify: handle {{ set_fact_var }}\\r\\n  handlers:\\r\\n    - name: handle {{ event }}\\r\\n      debug: msg=\\\"{{ event }}\\\"\\r\\n```\\r\\nCorresponding inventory file:\\r\\n```\\r\\nlocalhost ansible_connection=local inventory_var=inventory\\r\\n```\", \n    \"component_name\": \"n/a\", \n    \"component_raw\": \"N/A\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19050\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Calling handlers with parameters in many cases fails because of them not being found by ansible, depending on the way the variable you try to pass was originally set.\", \n    \"title\": \"Calling handlers with parameters does not work in many cases\"\n  }, \n  \"19052\": {\n    \"ansible_version\": \"ansible 1.8.2\", \n    \"body\": \"_From @schuetzm on January 14, 2015 15:18_\\n\\n##### Issue Type:\\n\\nFeature Idea\\n##### Component Name:\\n\\nnew module\\n##### Ansible Version:\\n\\nansible 1.8.2\\n##### Environment:\\n\\nRelevant for managed OS: openSUSE (probably SLES, too)\\n##### Summary:\\n\\nAnsible already supports `apache2_module` to enable and disable Apache2 modules via `a2enmod`/`a2dismod`. However, under openSUSE, there's also `a2enflag`/`a2disflag` to control certain server flags like SSL and SVN support. Would be nice if Ansible provided modules for these out of the box.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#645_\", \n    \"component_name\": \"new\", \n    \"component_raw\": \":\\nnew module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19052\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_1.8\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \":\\n\\nAnsible already supports `apache2_module` to enable and disable Apache2 modules via `a2enmod`/`a2dismod`. However, under openSUSE, there's also `a2enflag`/`a2disflag` to control certain server flags like SSL and SVN support. Would be nice if Ansible provided modules for these out of the box.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#645_\", \n    \"title\": \"Support for a2enflag is missing\"\n  }, \n  \"19064\": {\n    \"ansible_version\": \"2.2.0\", \n    \"body\": \"_From @aperigault on November 17, 2016 9:4_\\n\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvmware_guest.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.2.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nI have a lot of VMs and folders in my vcenter and _build_folder_map function take approximately 3 minutes to run.\\r\\nHave you an idea to accelerate it ?\\n\\n_Copied from original issue: ansible/ansible-modules-extras#3490_\", \n    \"component_name\": \"vmware_guest.py\", \n    \"component_raw\": \"vmware_guest.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19064\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"I have a lot of VMs and folders in my vcenter and _build_folder_map function take approximately 3 minutes to run.\\n\\nHave you an idea to accelerate it ?\\n\\n_Copied from original issue: ansible/ansible-modules-extras#3490_\", \n    \"title\": \"vmware_guest is very slow\"\n  }, \n  \"19066\": {\n    \"ansible_version\": \"ansible-playbook 2.3.0 (doc-fix 3fa7381b71) last updated 2016/12/09 162847 (GMT +550)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nInventory\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible-playbook 2.3.0 (doc-fix 3fa7381b71) last updated 2016/12/09 16:28:47 (GMT +550)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nThe behaviour of variables defined in the inventory and how they apply across groups is a little confusing and subtle. Attempt to explain the behaviour in more detail and add a work around for people who do not wish to have the default behaviour.\\r\\n\\r\\n\\r\\nAdd additional infromation about per-host variables in inventory files.\\r\\nExplain the behaviour more explicitly and document a work around for\\r\\npeople that do not want the default behaviour.\", \n    \"component_name\": \"inventory\", \n    \"component_raw\": \"Inventory\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19066\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The behaviour of variables defined in the inventory and how they apply across groups is a little confusing and subtle. Attempt to explain the behaviour in more detail and add a work around for people who do not wish to have the default behaviour.\\n\\n\\n\\n\\n\\nAdd additional infromation about per-host variables in inventory files.\\n\\nExplain the behaviour more explicitly and document a work around for\\n\\npeople that do not want the default behaviour.\", \n    \"title\": \"[docs] Add example of using different hostnames to avoid sharing groupvars\"\n  }, \n  \"19067\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"<!---\\r\\nPlease verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nlib/ansible/module_utils/facts.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nLinux\\r\\n\\r\\n##### SUMMARY\\r\\nBonding slave network interfaces report the same macaddress as the master network interface. But they have got an unique macaddress as well. It would be nice if the setup module would report them.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n# cat /sys/class/net/eth0/bonding_slave/perm_hwaddr\\r\\n00:00:00:00:00:00\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n\\r\\n\", \n    \"component_name\": \"lib/ansible/module_utils/facts.py\", \n    \"component_raw\": \"lib/ansible/module_utils/facts.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19067\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"c:module_utils/facts\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Bonding slave network interfaces report the same macaddress as the master network interface. But they have got an unique macaddress as well. It would be nice if the setup module would report them.\", \n    \"title\": \"Add perm_hwaddr fact on Linux bonding slave network interfaces\"\n  }, \n  \"19068\": {\n    \"ansible_version\": \"2.2.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwhen\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.2.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\n##### SUMMARY\\r\\nI've never like the wording of \\\"Contitional check failed\\\" when a task is skipped using `when`. The conditional check doesn't actually fail, it equals to false. I propose that we change the wording to \\r\\n\\\"skip_reason\\\": \\\"Conditional check equals false\\\"\\r\\nor similar.\", \n    \"component_name\": \"when\", \n    \"component_raw\": \"when\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19068\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I've never like the wording of \\\"Contitional check failed\\\" when a task is skipped using `when`. The conditional check doesn't actually fail, it equals to false. I propose that we change the wording to \\n\\n\\\"skip_reason\\\": \\\"Conditional check equals false\\\"\\n\\nor similar.\", \n    \"title\": \"Wording of \\\"Conditional check failed\\\"\"\n  }, \n  \"19070\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\nwin_file\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nFix error when creating an existing dir.\\n\\nIf something else created the dir New-Item will throw an exception and the task will fail. Check the existing file and as long as it's a dir, we don't need to error out.\\n\", \n    \"component_name\": \"win_file\", \n    \"component_raw\": \"win_file\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19070\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"core_review\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_file.ps1\", \n    \"summary\": \"Fix error when creating an existing dir.\\n\\nIf something else created the dir New-Item will throw an exception and the task will fail. Check the existing file and as long as it's a dir, we don't need to error out.\", \n    \"title\": \"win_file: fix error when creating an existing dir\"\n  }, \n  \"19071\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nlib/ansible/module_utils/facts.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\nTaken from: https://wiki.linuxfoundation.org/networking/bonding\\r\\n\\r\\n```\\r\\nIf not explicitly configured (with ifconfig or ip link), the MAC address of the bonding device is\\r\\ntaken from its first slave device. This MAC address is then passed to all following slaves and\\r\\nremains persistent (even if the first slave is removed) until the bonding device is brought down\\r\\nor reconfigured\\r\\n```\\r\\n\\r\\nWith this in mind, it would be great to get the permanent hardware address of the network interface card reported as a fact.\\r\\n\\r\\nI called it `perm_macaddress` instead of `perm_hwaddr` to align it with the already existing `\\r\\nmacaddress` fact.\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\nlocalhost | SUCCESS => {\\r\\n    \\\"ansible_facts\\\": {\\r\\n        \\\"ansible_eth0\\\": {\\r\\n            \\\"active\\\": true, \\r\\n            \\\"device\\\": \\\"eth0\\\", \\r\\n\\t    [...]\\r\\n            \\\"macaddress\\\": \\\"00:00:00:00:00:01\\\", \\r\\n\\t    [...]\\r\\n            \\\"perm_macaddress\\\": \\\"00:00:00:00:00:01\\\", \\r\\n\\t    [...]\\r\\n        }, \\r\\n        \\\"ansible_eth1\\\": {\\r\\n            \\\"active\\\": true, \\r\\n            \\\"device\\\": \\\"eth1\\\", \\r\\n\\t    [...]\\r\\n            \\\"macaddress\\\": \\\"00:00:00:00:00:01\\\", \\r\\n\\t    [...]\\r\\n            \\\"perm_macaddress\\\": \\\"00:00:00:00:00:02\\\", \\r\\n\\t    [...]\\r\\n        }\\r\\n    }, \\r\\n    \\\"changed\\\": false\\r\\n}\\r\\n```\\r\\n\\r\\nRelated to issue #19067\", \n    \"component_name\": \"lib/ansible/module_utils/facts.py\", \n    \"component_raw\": \"lib/ansible/module_utils/facts.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19071\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"c:module_utils/facts\", \n      \"feature\", \n      \"module_util\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Taken from: https://wiki.linuxfoundation.org/networking/bonding\\n\\n\\n\\n```\\n\\nIf not explicitly configured (with ifconfig or ip link), the MAC address of the bonding device is\\n\\ntaken from its first slave device. This MAC address is then passed to all following slaves and\\n\\nremains persistent (even if the first slave is removed) until the bonding device is brought down\\n\\nor reconfigured\\n\\n```\\n\\n\\n\\nWith this in mind, it would be great to get the permanent hardware address of the network interface card reported as a fact.\\n\\n\\n\\nI called it `perm_macaddress` instead of `perm_hwaddr` to align it with the already existing `\\n\\nmacaddress` fact.\\n\\n\\n\\n\\n\\n```\\n\\nlocalhost | SUCCESS => {\\n\\n    \\\"ansible_facts\\\": {\\n\\n        \\\"ansible_eth0\\\": {\\n\\n            \\\"active\\\": true, \\n\\n            \\\"device\\\": \\\"eth0\\\", \\n\\n\\t    [...]\\n\\n            \\\"macaddress\\\": \\\"00:00:00:00:00:01\\\", \\n\\n\\t    [...]\\n\\n            \\\"perm_macaddress\\\": \\\"00:00:00:00:00:01\\\", \\n\\n\\t    [...]\\n\\n        }, \\n\\n        \\\"ansible_eth1\\\": {\\n\\n            \\\"active\\\": true, \\n\\n            \\\"device\\\": \\\"eth1\\\", \\n\\n\\t    [...]\\n\\n            \\\"macaddress\\\": \\\"00:00:00:00:00:01\\\", \\n\\n\\t    [...]\\n\\n            \\\"perm_macaddress\\\": \\\"00:00:00:00:00:02\\\", \\n\\n\\t    [...]\\n\\n        }\\n\\n    }, \\n\\n    \\\"changed\\\": false\\n\\n}\\n\\n```\\n\\n\\n\\nRelated to issue #19067\", \n    \"title\": \"Add perm_hwaddr on Linux bonding slave nics\"\n  }, \n  \"19073\": {\n    \"ansible_version\": \"ansible 2.1.0 (devel 7e3963420d) last updated 2016/05/15 111128 (GMT +300)\\nlib/ansible/modules/core (detached HEAD 25414bbd1b) last updated 2016/05/15 120746 (GMT +300)\\nlib/ansible/modules/extras (detached HEAD e13942f9c5) last updated 2016/05/15 120746 (GMT +300)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\nrabbitmq_policy\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.0 (devel 7e3963420d) last updated 2016/05/15 11:11:28 (GMT +300)\\n  lib/ansible/modules/core: (detached HEAD 25414bbd1b) last updated 2016/05/15 12:07:46 (GMT +300)\\n  lib/ansible/modules/extras: (detached HEAD e13942f9c5) last updated 2016/05/15 12:07:46 (GMT +300)\\n  config file =\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nAdd check for all policy fields (name, apply_to, pattern, tags, priority) to have correct changed state. Previosly changed state was based on policy name only. It fixes #1566.\\n\\nTest playbook (pattern change):\\n\\n``` yaml\\n- name: Update policy\\n  hosts: localhost\\n  tasks:\\n    - name: add policy\\n      rabbitmq_policy: >\\n        name=HA\\n        pattern='.*'\\n        tags=\\\"ha-mode=all\\\"\\n        node=rabbit@localhost\\n    - name: update policy\\n      rabbitmq_policy: >\\n        name=HA\\n        pattern='test'\\n        tags=\\\"ha-mode=all\\\"\\n        node=rabbit@localhost\\n```\\n\\nBefore fix:\\n\\n```\\nPLAY [Update policy] ***********************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [add policy] **************************************************************\\nchanged: [localhost]\\n\\nTASK [update policy] ***********************************************************\\nok: [localhost]\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=3    changed=1    unreachable=0    failed=0\\n```\\n\\nAfter fix:\\n\\n```\\nPLAY [Update policy] ***********************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [add policy] **************************************************************\\nchanged: [localhost]\\n\\nTASK [update policy] ***********************************************************\\nchanged: [localhost]\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=3    changed=2    unreachable=0    failed=0\\n```\\n\", \n    \"component_name\": \"rabbitmq_policy\", \n    \"component_raw\": \"rabbitmq_policy\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19073\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"community_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/messaging/rabbitmq_policy.py\", \n    \"summary\": \"Add check for all policy fields (name, apply_to, pattern, tags, priority) to have correct changed state. Previosly changed state was based on policy name only. It fixes #1566.\\n\\nTest playbook (pattern change):\\n\\n``` yaml\\n- name: Update policy\\n  hosts: localhost\\n  tasks:\\n    - name: add policy\\n      rabbitmq_policy: >\\n        name=HA\\n        pattern='.*'\\n        tags=\\\"ha-mode=all\\\"\\n        node=rabbit@localhost\\n    - name: update policy\\n      rabbitmq_policy: >\\n        name=HA\\n        pattern='test'\\n        tags=\\\"ha-mode=all\\\"\\n        node=rabbit@localhost\\n```\\n\\nBefore fix:\\n\\n```\\nPLAY [Update policy] ***********************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [add policy] **************************************************************\\nchanged: [localhost]\\n\\nTASK [update policy] ***********************************************************\\nok: [localhost]\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=3    changed=1    unreachable=0    failed=0\\n```\\n\\nAfter fix:\\n\\n```\\nPLAY [Update policy] ***********************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [add policy] **************************************************************\\nchanged: [localhost]\\n\\nTASK [update policy] ***********************************************************\\nchanged: [localhost]\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=3    changed=2    unreachable=0    failed=0\\n```\", \n    \"title\": \"Fixes #1566 Add full change check for rabbitmq policy\"\n  }, \n  \"19074\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @adamchainz on June 1, 2016 14:54_\\n\\n##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\ngit module\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.0.0\\n  config file =\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nVanilla\\n##### OS / ENVIRONMENT\\n\\nHappens on both OS X and Ubuntu with different versions of git (1.8 and 1.9)\\n##### SUMMARY\\n\\nUpdating a shallow clone based on a tag to one based on a branch fails\\n##### STEPS TO REPRODUCE\\n\\nRun this with `ansible-playbook -i 127.0.0.1, ~/tmp/test.yml; rm /tmp/testclone`\\n\\n```\\n- hosts: 127.0.0.1\\n  connection: local\\n  gather_facts: no\\n  tasks:\\n    - name: initial clone from tag\\n      git:\\n        repo: git@github.com:adamchainz/nose-randomly.git\\n        dest: /tmp/testclone\\n        version: 1.2.0\\n        depth: 1\\n\\n    - name: update to branch\\n      git:\\n        repo: git@github.com:adamchainz/nose-randomly.git\\n        dest: /tmp/testclone\\n        version: master\\n        depth: 1\\n```\\n##### EXPECTED RESULTS\\n\\nOn Ansible 2.0.2.0, it works fine:\\n\\n```\\nPLAY [127.0.0.1] ***************************************************************\\n\\nTASK [initial clone from tag] **************************************************\\nchanged: [127.0.0.1]\\n\\nTASK [update to branch] ********************************************************\\nchanged: [127.0.0.1]\\n\\nPLAY RECAP *********************************************************************\\n127.0.0.1                  : ok=2    changed=2    unreachable=0    failed=0\\n```\\n##### ACTUAL RESULTS\\n\\nOn Ansible 2.1.0.0, I get:\\n\\n```\\nPLAY [127.0.0.1] ***************************************************************\\n\\nTASK [initial clone from tag] **************************************************\\nchanged: [127.0.0.1]\\n\\nTASK [update to branch] ********************************************************\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: IOError: [Errno 2] No such file or directory: '/tmp/testclone/.git/refs/remotes/origin/HEAD'\\nfatal: [127.0.0.1]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/var/folders/_z/wpddpg7d5hd6fd2zjn_fct7m0000gn/T/ansible_vBeq0g/ansible_module_git.py\\\\\\\", line 877, in <module>\\\\n    main()\\\\n  File \\\\\\\"/var/folders/_z/wpddpg7d5hd6fd2zjn_fct7m0000gn/T/ansible_vBeq0g/ansible_module_git.py\\\\\\\", line 832, in main\\\\n    fetch(git_path, module, repo, dest, version, remote, depth, bare, refspec)\\\\n  File \\\\\\\"/var/folders/_z/wpddpg7d5hd6fd2zjn_fct7m0000gn/T/ansible_vBeq0g/ansible_module_git.py\\\\\\\", line 530, in fetch\\\\n    currenthead = get_head_branch(git_path, module, dest, remote)\\\\n  File \\\\\\\"/var/folders/_z/wpddpg7d5hd6fd2zjn_fct7m0000gn/T/ansible_vBeq0g/ansible_module_git.py\\\\\\\", line 498, in get_head_branch\\\\n    f = open(os.path.join(repo_path, 'refs', 'remotes', remote, 'HEAD'))\\\\nIOError: [Errno 2] No such file or directory: '/tmp/testclone/.git/refs/remotes/origin/HEAD'\\\\n\\\", \\\"module_stdout\\\": \\\"\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\", \\\"parsed\\\": false}\\n\\nNO MORE HOSTS LEFT *************************************************************\\n    to retry, use: --limit @/Users/adamj/tmp/test.retry\\n\\nPLAY RECAP *********************************************************************\\n127.0.0.1                  : ok=1    changed=1    unreachable=0    failed=1\\n```\\n\\nIt looks like `fetch` has started assuming that if we're updating to a remote branch, we must currently be on a branch, as per lines 530-532:\\n\\n``` py\\n        elif is_remote_branch(git_path, module, dest, repo, version):\\n            currenthead = get_head_branch(git_path, module, dest, remote)\\n            if currenthead != version:\\n```\\n\\nor that `get_head_branch` should work, but doesn't, when we're on a tag. N.B. this is the contents of the `.git` directory after the clone from tag:\\n\\n```\\n$ tree /tmp/testclone/.git/refs\\n/tmp/testclone/.git/refs\\n\\u251c\\u2500\\u2500 heads\\n\\u2514\\u2500\\u2500 tags\\n\\n2 directories, 0 files\\n```\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#3817_\", \n    \"component_name\": \"git\", \n    \"component_raw\": \"git module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19074\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/source_control/git.py\", \n    \"summary\": \"Updating a shallow clone based on a tag to one based on a branch fails\", \n    \"title\": \"git - in Ansible 2.1 switching a shallow clone from tag to branch fails\"\n  }, \n  \"19075\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nCore\\r\\n\\r\\n##### SUMMARY\\r\\nSometimes it's useful to run a specific handler immediately after it was notified, without using `- meta: flush_handlers` to run all queued handlers, which isn't always desirable. A good example is when you are working with `systemd` unit files. After changing a unit file you always need to run `systemctl daemon-reload`, so you always have to use something like this:\\r\\n```yml\\r\\n- name: task which updates a unit file\\r\\n  #...\\r\\n  register: daemon_reload\\r\\n\\r\\n- command: systemctl daemon-reload\\r\\n  when: daemon_reload|changed\\r\\n```\\r\\nThis is very inconvenient and repetitive, because you need to repeat the same exact register/command every time. It would be easier if you could define a handler, e.g:\\r\\n```yml\\r\\n- name: daemon-reload\\r\\n  command: systemctl daemon-reload\\r\\n```\\r\\nand just call that handler to be executed immediately, e.g.:\\r\\n```yml\\r\\n- name: task which updates a unit file\\r\\n  #...\\r\\n  notify_now: daemon-reload\\r\\n```\\r\\nI used a `notify_now` keyword, but it could be named differently, or with an even different syntax, but just something which would run this handler immediately after the task which updates the unit file. The handler could even be defined in some role which could be put as a dependency to other roles.\\r\\n\", \n    \"component_name\": \"core\", \n    \"component_raw\": \"Core\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19075\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Sometimes it's useful to run a specific handler immediately after it was notified, without using `- meta: flush_handlers` to run all queued handlers, which isn't always desirable. A good example is when you are working with `systemd` unit files. After changing a unit file you always need to run `systemctl daemon-reload`, so you always have to use something like this:\\n\\n```yml\\n\\n- name: task which updates a unit file\\n\\n  #...\\n\\n  register: daemon_reload\\n\\n\\n\\n- command: systemctl daemon-reload\\n\\n  when: daemon_reload|changed\\n\\n```\\n\\nThis is very inconvenient and repetitive, because you need to repeat the same exact register/command every time. It would be easier if you could define a handler, e.g:\\n\\n```yml\\n\\n- name: daemon-reload\\n\\n  command: systemctl daemon-reload\\n\\n```\\n\\nand just call that handler to be executed immediately, e.g.:\\n\\n```yml\\n\\n- name: task which updates a unit file\\n\\n  #...\\n\\n  notify_now: daemon-reload\\n\\n```\\n\\nI used a `notify_now` keyword, but it could be named differently, or with an even different syntax, but just something which would run this handler immediately after the task which updates the unit file. The handler could even be defined in some role which could be put as a dependency to other roles.\", \n    \"title\": \"Run a handler immediately\"\n  }, \n  \"19076\": {\n    \"ansible_version\": \"ansible 2.3.0 (ipa_hostinfo 1846858165) last updated 2016/12/09 083044 (GMT -600)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nfreeipa.py inventory\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (ipa_hostinfo 1846858165) last updated 2016/12/09 08:30:44 (GMT -600)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nImplement --host functionality for freeipa.py.  This will allow users to get host attributes from FreeIPA.\\r\\n\\r\\n####BEFORE CHANGE:\\r\\n```\\r\\n[rgroten@rgroten-fed ansible (devel)] $ contrib/inventory/freeipa.py --host server.example.com\\r\\n{}\\r\\n```\\r\\n####AFTER CHANGE:\\r\\n```\\r\\n[rgroten@rgroten-fed ansible (ipa_hostinfo)] $ contrib/inventory/freeipa.py --host server.example.com\\r\\n{\\r\\n \\\"description\\\": [\\r\\n  \\\"My Test Apache Server\\\"\\r\\n ],\\r\\n \\\"dn\\\": \\\"fqdn=server.example.com,cn=computers,cn=accounts,dc=example,dc=com\\\",\\r\\n \\\"memberof_hostgroup\\\": [\\r\\n  \\\"apache-test\\\"\\r\\n ],\\r\\n \\\"memberofindirect_hostgroup\\\": [\\r\\n  \\\"apache\\\",\\r\\n  \\\"test\\\"\\r\\n ],\\r\\n \\\"nshardwareplatform\\\": [\\r\\n  \\\"VM\\\"\\r\\n ],\\r\\n \\\"nshostlocation\\\": [\\r\\n  \\\"DC1\\\"\\r\\n ],\\r\\n \\\"nsosversion\\\": [\\r\\n  \\\"RHEL7\\\"\\r\\n ]\\r\\n}\\r\\n```\", \n    \"component_name\": \"freeipa.py inventory\", \n    \"component_raw\": \"freeipa.py inventory\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19076\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Implement --host functionality for freeipa.py.  This will allow users to get host attributes from FreeIPA.\\n\\n\\n\\n####BEFORE CHANGE:\\n\\n```\\n\\n[rgroten@rgroten-fed ansible (devel)] $ contrib/inventory/freeipa.py --host server.example.com\\n\\n{}\\n\\n```\\n\\n####AFTER CHANGE:\\n\\n```\\n\\n[rgroten@rgroten-fed ansible (ipa_hostinfo)] $ contrib/inventory/freeipa.py --host server.example.com\\n\\n{\\n\\n \\\"description\\\": [\\n\\n  \\\"My Test Apache Server\\\"\\n\\n ],\\n\\n \\\"dn\\\": \\\"fqdn=server.example.com,cn=computers,cn=accounts,dc=example,dc=com\\\",\\n\\n \\\"memberof_hostgroup\\\": [\\n\\n  \\\"apache-test\\\"\\n\\n ],\\n\\n \\\"memberofindirect_hostgroup\\\": [\\n\\n  \\\"apache\\\",\\n\\n  \\\"test\\\"\\n\\n ],\\n\\n \\\"nshardwareplatform\\\": [\\n\\n  \\\"VM\\\"\\n\\n ],\\n\\n \\\"nshostlocation\\\": [\\n\\n  \\\"DC1\\\"\\n\\n ],\\n\\n \\\"nsosversion\\\": [\\n\\n  \\\"RHEL7\\\"\\n\\n ]\\n\\n}\\n\\n```\", \n    \"title\": \"Implement --host functionality to pull hostvars from FreeIPA\"\n  }, \n  \"19078\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /Users/v832272/git/yaml/mac_setup/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\npushover\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /Users/v832272/git/yaml/mac_setup/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nRemove the explicit port from pushover module \\u2014 Fixes #18868 where pushover fails\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nFixes ansible/ansible#18868 and Fixes ansible/ansible-modules-extras#3677\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\nBefore, please see ansible/ansible#18868\\r\\n\\r\\nAfter:\\r\\n```\\r\\n___________________________________________________________\\r\\n/ TASK [ssh_config : Notify that SSH Configuration is being \\\\\\r\\n\\\\ changed]                                                  /\\r\\n-----------------------------------------------------------\\r\\n       \\\\   ^__^\\r\\n        \\\\  (oo)\\\\_______\\r\\n           (__)\\\\       )\\\\/\\\\\\r\\n               ||----w |\\r\\n               ||     ||\\r\\n\\r\\ntask path: /Users/kkirsche/git/yaml/mac_setup/roles/ssh_config/tasks/main.yml:4\\r\\nUsing module file /usr/local/Cellar/ansible/2.2.0.0_1/libexec/lib/python2.7/site-packages/ansible/modules/extras/notification/pushover.py\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: kkirsche\\r\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1481301756.46-105989658131718 `\\\" && echo ansible-tmp-1481301756.46-105989658131718=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1481301756.46-105989658131718 `\\\" ) && sleep 0'\\r\\n<127.0.0.1> PUT /var/folders/8y/pj9zz4b12r37490xnlqb7gb13tt57z/T/tmpigCOzQ TO /Users/kkirsche/.ansible/tmp/ansible-tmp-1481301756.46-105989658131718/pushover.py\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /Users/kkirsche/.ansible/tmp/ansible-tmp-1481301756.46-105989658131718/ /Users/kkirsche/.ansible/tmp/ansible-tmp-1481301756.46-105989658131718/pushover.py && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python /Users/kkirsche/.ansible/tmp/ansible-tmp-1481301756.46-105989658131718/pushover.py; rm -rf \\\"/Users/kkirsche/.ansible/tmp/ansible-tmp-1481301756.46-105989658131718/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nok: [127.0.0.1] => {\\r\\n   \\\"changed\\\": false,\\r\\n   \\\"invocation\\\": {\\r\\n       \\\"module_args\\\": {\\r\\n           \\\"app_token\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n           \\\"msg\\\": \\\"Mac SSH Configuration is being updated\\\",\\r\\n           \\\"pri\\\": \\\"0\\\",\\r\\n           \\\"user_key\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\"\\r\\n       },\\r\\n       \\\"module_name\\\": \\\"pushover\\\"\\r\\n   },\\r\\n   \\\"msg\\\": \\\"message sent successfully: {\\\\\\\"status\\\\\\\":1,\\\\\\\"request\\\\\\\":\\\\\\\"88e3e9573b22ac01bc87df7fff5aed72\\\\\\\"}\\\"\\r\\n}\\r\\n```\\r\\n\\r\\nFixes #18868\", \n    \"component_name\": \"pushover\", \n    \"component_raw\": \"pushover\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19078\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"community_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/notification/pushover.py\", \n    \"summary\": \"Remove the explicit port from pushover module  Fixes #18868 where pushover fails\\n\\n\\n\\n\\n\\nFixes ansible/ansible#18868 and Fixes ansible/ansible-modules-extras#3677\\n\\n\\n\\n\\n\\nBefore, please see ansible/ansible#18868\\n\\n\\n\\nAfter:\\n\\n```\\n\\n___________________________________________________________\\n\\n/ TASK [ssh_config : Notify that SSH\", \n    \"title\": \"Remove explicit port from pushover module\"\n  }, \n  \"19080\": {\n    \"ansible_version\": \"v2.2 with latest vmware_guest module\", \n    \"body\": \"<!---\\r\\nPlease verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.2 with latest vmware_guest module\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWhen using the following playbook:\\r\\n```yaml\\r\\n- hosts: all\\r\\n  gather_facts: no\\r\\n  tasks:\\r\\n  - name: Gather the VM facts\\r\\n    vmware_guest:\\r\\n      validate_certs: no\\r\\n      hostname: '{{ vcenter_ipaddress }}'\\r\\n      username: '{{ vcenter_username }}'\\r\\n      password: '{{ vcenter_password }}'\\r\\n      name: '{{ inventory_hostname_short }}'\\r\\n    register: facts\\r\\n    connection: local\\r\\n  - debug:\\r\\n      var: facts\\r\\n```\\r\\n\\r\\nThe VM we are using does not exist, we want to check whether it exists.\\r\\nIt takes a long time and finally fails with:\\r\\n```\\r\\n[user@system ~]$ ansible-playbook vmware-test.yml -l system\\r\\n \\r\\nPLAY [localhost] ***************************************************************\\r\\n \\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n \\r\\nTASK [Gather the VM facts] *****************************************************\\r\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: KeyError: 'template'\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_DfOLFw/ansible_module_vmware_guest.py\\\\\\\", line 1349, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_DfOLFw/ansible_module_vmware_guest.py\\\\\\\", line 1327, in main\\\\n    wait_for_ip=module.params['wait_for_ip_address']\\\\n  File \\\\\\\"/tmp/ansible_DfOLFw/ansible_module_vmware_guest.py\\\\\\\", line 651, in deploy_template\\\\n    template = get_obj(self.content, [vim.VirtualMachine], self.params['template'])\\\\nKeyError: 'template'\\\\n\\\", \\\"module_stdout\\\": \\\"\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\"}\\r\\n \\r\\nPLAY RECAP *********************************************************************\\r\\nsystem                    : ok=1    changed=0    unreachable=0    failed=1\\r\\n```\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19080\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"When using the following playbook:\\n\\n```yaml\\n\\n- hosts: all\\n\\n  gather_facts: no\\n\\n  tasks:\\n\\n  - name: Gather the VM facts\\n\\n    vmware_guest:\\n\\n      validate_certs: no\\n\\n      hostname: '{{ vcenter_ipaddress }}'\\n\\n      username: '{{ vcenter_username }}'\\n\\n      password: '{{ vcenter_password }}'\\n\\n      name: '{{ inventory_hostname_short }}'\\n\\n    register: facts\\n\\n    connection: local\\n\\n  - debug:\\n\\n      var: facts\\n\\n```\\n\\n\\n\\nThe VM we are using does not exist, we want to check whether it exists.\\n\\nIt takes a long time and finally fails with:\\n\\n```\\n\\n[user@system ~]$ ansible-playbook vmware-test.yml -l system\\n\\n \\n\\nPLAY [localhost] ***************************************************************\\n\\n \\n\\nTASK [setup] *******************************************************************\\n\\nok: [localhost]\\n\\n \\n\\nTASK [Gather the VM facts] *****************************************************\\n\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: KeyError: 'template'\\n\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_DfOLFw/ansible_module_vmware_guest.py\\\\\\\", line 1349, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_DfOLFw/ansible_module_vmware_guest.py\\\\\\\", line 1327, in main\\\\n    wait_for_ip=module.params['wait_for_ip_address']\\\\n  File \\\\\\\"/tmp/ansible_DfOLFw/ansible_module_vmware_guest.py\\\\\\\", line 651, in deploy_template\\\\n    template = get_obj(self.content, [vim.VirtualMachine], self.params['template'])\\\\nKeyError: 'template'\\\\n\\\", \\\"module_stdout\\\": \\\"\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\"}\\n\\n \\n\\nPLAY RECAP *********************************************************************\\n\\nsystem                    : ok=1    changed=0    unreachable=0    failed=1\\n\\n```\", \n    \"title\": \"vmware_guest fails on basic facts gathering\"\n  }, \n  \"19081\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndocker_service\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nnone\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nlinux\\r\\n\\r\\n##### SUMMARY\\r\\nWhen using a private registry, the `docker_service` task fails to pull images.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nRun the task using a private registry\\r\\n\\r\\n```\\r\\nplaybook task:\\r\\n    - docker_service:\\r\\n        project_src: .\\r\\n        files:\\r\\n          - docker-compose.yml\\r\\n        pull: yes\\r\\n        state: present\\r\\n\\r\\ndocker-compose file:\\r\\n  version: '2'\\r\\n  services:\\r\\n    my_service:\\r\\n      image: my.private.registry.com/my_service\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nIt should not fail to pull images\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nIt fails\\r\\n\\r\\n```\\r\\nTASK [docker_service] **********************************************************\\r\\ntask path: /home/user/src/2016/acr/novum-sandpit/dev/deploy/deploy.yml:9\\r\\nUsing module file /usr/local/lib/python2.7/dist-packages/ansible/modules/core/cloud/docker/docker_service.py\\r\\n<localhost> ESTABLISH LOCAL CONNECTION FOR USER: user\\r\\n<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1481302953.19-26010212998593 `\\\" && echo ansible-tmp-1481302953.19-26010212998593=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1481302953.19-26010212998593 `\\\" ) && sleep 0'\\r\\n<localhost> PUT /tmp/tmpd5CKV6 TO /home/user/.ansible/tmp/ansible-tmp-1481302953.19-26010212998593/docker_service.py\\r\\n<localhost> EXEC /bin/sh -c 'chmod u+x /home/user/.ansible/tmp/ansible-tmp-1481302953.19-26010212998593/ /home/user/.ansible/tmp/ansible-tmp-1481302953.19-26010212998593/docker_service.py && sleep 0'\\r\\n<localhost> EXEC /bin/sh -c '/usr/bin/python /home/user/.ansible/tmp/ansible-tmp-1481302953.19-26010212998593/docker_service.py; rm -rf \\\"/home/user/.ansible/tmp/ansible-tmp-1481302953.19-26010212998593/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/tmp/ansible_no8CvM/ansible_module_docker_service.py\\\", line 929, in <module>\\r\\n    main()\\r\\n  File \\\"/tmp/ansible_no8CvM/ansible_module_docker_service.py\\\", line 924, in main\\r\\n    result = ContainerManager(client).exec_module()\\r\\n  File \\\"/tmp/ansible_no8CvM/ansible_module_docker_service.py\\\", line 575, in exec_module\\r\\n    result = self.cmd_up()\\r\\n  File \\\"/tmp/ansible_no8CvM/ansible_module_docker_service.py\\\", line 627, in cmd_up\\r\\n    result.update(self.cmd_pull())\\r\\n  File \\\"/tmp/ansible_no8CvM/ansible_module_docker_service.py\\\", line 739, in cmd_pull\\r\\n    image = service.image()\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/compose/service.py\\\", line 320, in image\\r\\n    raise NoSuchImageError(\\\"Image '{}' not found\\\".format(self.image_name))\\r\\ncompose.service.NoSuchImageError: Image 'my.private.registry.com/my_service' not found\\r\\n\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"docker_service\\\"\\r\\n    }, \\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_no8CvM/ansible_module_docker_service.py\\\\\\\", line 929, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_no8CvM/ansible_module_docker_service.py\\\\\\\", line 924, in main\\\\n    result = ContainerManager(client).exec_module()\\\\n  File \\\\\\\"/tmp/ansible_no8CvM/ansible_module_docker_service.py\\\\\\\", line 575, in exec_module\\\\n    result = self.cmd_up()\\\\n  File \\\\\\\"/tmp/ansible_no8CvM/ansible_module_docker_service.py\\\\\\\", line 627, in cmd_up\\\\n    result.update(self.cmd_pull())\\\\n  File \\\\\\\"/tmp/ansible_no8CvM/ansible_module_docker_service.py\\\\\\\", line 739, in cmd_pull\\\\n    image = service.image()\\\\n  File \\\\\\\"/usr/local/lib/python2.7/dist-packages/compose/service.py\\\\\\\", line 320, in image\\\\n    raise NoSuchImageError(\\\\\\\"Image '{}' not found\\\\\\\".format(self.image_name))\\\\ncompose.service.NoSuchImageError: Image 'my.private.registry.com/my_service' not found\\\\n\\\", \\r\\n    \\\"module_stdout\\\": \\\"\\\", \\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"docker_service\", \n    \"component_raw\": \"docker_service\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19081\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_service.py\", \n    \"summary\": \"When using a private registry, the `docker_service` task fails to pull images.\", \n    \"title\": \"docker_service (docker-compose) does not support images from custom registries\"\n  }, \n  \"19084\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ninclude_role\\r\\nblock\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nI am trying to set the vars for either a block: or an include_role: from a dictionary.\\r\\n\\r\\nI get one of these messages (depending on the case):\\r\\n    ERROR! Vars in a Block must be specified as a dictionary, or a list of dictionaries\\r\\n    ERROR! Vars in a IncludeRole must be specified as a dictionary, or a list of dictionaries\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```\\r\\n- set_fact:\\r\\n    _T_m3_inv_vars:\\r\\n        one_setting: \\\"{{ some_other_var1 |mandatory }}\\\"\\r\\n        two_setting: \\\"{{ some_other_var2 |mandatory }}\\\"\\r\\n\\r\\n- block:\\r\\n    - debug: msg=\\\"YYYYYYYY\\\"\\r\\n  vars: \\\"{{ _T_m3_inv_vars }}\\\"\\r\\n\\r\\n- include_role:\\r\\n      name: \\\"some_nice_role\\\"\\r\\n      static:  yes\\r\\n      private: yes\\r\\n  vars: \\\"{{ _T_m3_inv_vars }}\\\"\\r\\n\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nI would expect a similar result as having done the following\\r\\n```\\r\\n- block:\\r\\n    - debug: msg=\\\"YYYYYYYY\\\"\\r\\n  vars:\\r\\n        one_setting: \\\"{{ some_other_var1 |mandatory }}\\\"\\r\\n        two_setting: \\\"{{ some_other_var2 |mandatory }}\\\"\\r\\n\\r\\n- include_role:\\r\\n      name: \\\"some_nice_role\\\"\\r\\n      static:  yes\\r\\n      private: yes\\r\\n  vars:\\r\\n        one_setting: \\\"{{ some_other_var1 |mandatory }}\\\"\\r\\n        two_setting: \\\"{{ some_other_var2 |mandatory }}\\\"\\r\\n```\\r\\nThis is because I am indeed passing a dictionary to the vars: setting.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nOne of these messages (obtained by running the previous snippets separatellyI\\r\\n    ERROR! Vars in a Block must be specified as a dictionary, or a list of dictionaries\\r\\n    ERROR! Vars in a IncludeRole must be specified as a dictionary, or a list of dictionaries\\r\\n\\r\\n\", \n    \"component_name\": \"include_role\", \n    \"component_raw\": \"include_role\\nblock\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19084\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/include_role.py\", \n    \"summary\": \"I am trying to set the vars for either a block: or an include_role: from a dictionary.\\n\\n\\n\\nI get one of these messages (depending on the case):\\n\\n    ERROR! Vars in a Block must be specified as a dictionary, or a list of dictionaries\\n\\n    ERROR! Vars in a IncludeRole must be specified as a dictionary, or a list of dictionaries\", \n    \"title\": \"ansible 2.2 doesn't support direct dictionary on block vars nor include_role vars\"\n  }, \n  \"19086\": {\n    \"ansible_version\": \"ansible 2.1.0.0\", \n    \"body\": \"_From @font on June 10, 2016 15:26_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Idea\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n- yum\\n- apt\\n- dnf (but this is in the ansible-modules-extras repo)\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.0.0\\n```\\n##### OS / ENVIRONMENT\\n\\n<!----->\\n- Managing Linux\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nI would like to query for the installation status of a particular package without actually changing the state of the package on the machine. This would allow one to register a variable to act upon in some other way.\\n\\nIt seems the way this is generally done is to run the shell module and execute commands to determine whether a package is installed. For example:\\n\\n```\\nshell: rpm -q <package>\\nregister: pkg_query\\nchanged_when: false\\n```\\n\\nInstead, I would like to use the OS Packaging Modules to query for the installation status of a particular package. This would be like adding a `state: query` option to some of the OS Packaging Modules which would then allow one to register a variable to capture the result. This would also help cleanup repetitive tasks just to handle different package managers: `apt`, `yum` and `dnf` are the ones that come to mind where this would be useful.\\n\\n<!---##### STEPS TO REPRODUCE-->\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n\\n<!---##### EXPECTED RESULTS-->\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\n<!---##### ACTUAL RESULTS-->\\n\\n<!--- What actually happened? If possible run with high verbosity (-vvvv) -->\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#3917_\", \n    \"component_name\": \"yum\", \n    \"component_raw\": \"- yum\\n- apt\\n- dnf (but this is in the ansible-modules-extras repo)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19086\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/yum.py\", \n    \"summary\": \"I would like to query for the installation status of a particular package without actually changing the state of the package on the machine. This would allow one to register a variable to act upon in some other way.\\n\\nIt seems the way this is generally done is to run the shell module and execute commands to determine whether a package is installed. For example:\\n\\n```\\nshell: rpm -q <package>\\nregister: pkg_query\\nchanged_when: false\\n```\\n\\nInstead, I would like to use the OS Packaging Modules to query for the installation status of a particular package. This would be like adding a `state: query` option to some of the OS Packaging Modules which would then allow one to register a variable to capture the result. This would also help cleanup repetitive tasks just to handle different package managers: `apt`, `yum` and `dnf` are the ones that come to mind where this would be useful.\", \n    \"title\": \"Add state=query option for OS Packaging Modules\"\n  }, \n  \"19088\": {\n    \"ansible_version\": \"ansible 2.2.1.0 (stable-2.2 acad2ba246) last updated 2016/12/07 143516 (GMT +200)\\nlib/ansible/modules/core (stable-2.2 c7210e9452) last updated 2016/10/22 120348 (GMT +200)\\nlib/ansible/modules/extras (stable-2.2 d522c9662c) last updated 2016/10/22 120410 (GMT +200)\\nconfig file = /home/agrapartth_adm/noiua-aurore/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nAt least nxos_interface_ospf and nxos_vrf_interface\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.1.0 (stable-2.2 acad2ba246) last updated 2016/12/07 14:35:16 (GMT +200)\\r\\n  lib/ansible/modules/core: (stable-2.2 c7210e9452) last updated 2016/10/22 12:03:48 (GMT +200)\\r\\n  lib/ansible/modules/extras: (stable-2.2 d522c9662c) last updated 2016/10/22 12:04:10 (GMT +200)\\r\\n  config file = /home/agrapartth_adm/noiua-aurore/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nansible.cfg \\r\\n```\\r\\n[defaults]\\r\\nhash_behaviour = merge\\r\\nhost_key_checking = False\\r\\nstdout_callback = skippy\\r\\n```\\r\\nenv | grep ANSIBLE_\\r\\n```\\r\\nANSIBLE_KEEP_REMOTE_FILES=1\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nThe existing configuration for loopbacks is not correctly read on a Nexus 9k using nxos.7.0.3.I4.3.\\r\\nWith this version, the loopback interfaces and the mgmt interfaces doesn't start with a capitalized character but these modules check against the interfaces in the playbook capitalized.\\r\\nIn result, the tasks appears as changed and some configurations are sent although not needed.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nUse nxos_interface_ospf or nxos_vrf_interface on a loopback interface of a Nexus 9k using nxos.7.0.3.I4.3.\\r\\nEach time, the task appears as changed even if the configuration before and after the playbook is the same.\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n- name: Configure ospf interface\\r\\n  nxos_interface_ospf:\\r\\n    provider: '{{ provider }}'\\r\\n    interface: \\\"loopback0\\\"\\r\\n    ospf: 1\\r\\n    area: 0\\r\\n```\\r\\nFrom the Nexus:\\r\\n```\\r\\ninterface loopback0\\r\\n  vrf member 1\\r\\n  ip address 10.255.0.2/32\\r\\n  ip router ospf underlay area 0.0.0.0\\r\\n```\\r\\nProposed Update:\\r\\n```\\r\\n\\\"updates\\\": [\\r\\n        \\\"interface Loopback0\\\", \\r\\n        \\\"ip router ospf 1 area 0.0.0.0\\\"\\r\\n    ]\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n```\\r\\nTASK [common : Configure ospf interfaces] **************************************\\r\\nOK: [spine1p1] =>  {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"connected\\\": true, \\r\\n    \\\"end_state\\\": {\\r\\n        \\\"passive_interface\\\": false,\\r\\n        \\\"area\\\": \\\"0.0.0.0\\\",\\r\\n        \\\"message_digest_algorithm_type\\\": \\\"\\\",\\r\\n        \\\"message_digest_key_id\\\": \\\"\\\",\\r\\n        \\\"message_digest_encryption_type\\\": \\\"\\\",\\r\\n        \\\"dead_interval\\\": \\\"\\\",\\r\\n        \\\"cost\\\": \\\"\\\",\\r\\n        \\\"hello_interval\\\": \\\"\\\",\\r\\n        \\\"message_digest_password\\\": \\\"\\\",\\r\\n        \\\"interface\\\": \\\"loopback0\\\",\\r\\n        \\\"ospf\\\": \\\"underlay\\\",\\r\\n        \\\"message_digest\\\": false\\r\\n      },\\r\\n    \\\"existing\\\": {\\r\\n        \\\"passive_interface\\\": false,\\r\\n        \\\"area\\\": \\\"0.0.0.0\\\",\\r\\n        \\\"message_digest_algorithm_type\\\": \\\"\\\",\\r\\n        \\\"message_digest_key_id\\\": \\\"\\\",\\r\\n        \\\"message_digest_encryption_type\\\": \\\"\\\",\\r\\n        \\\"dead_interval\\\": \\\"\\\",\\r\\n        \\\"cost\\\": \\\"\\\",\\r\\n        \\\"hello_interval\\\": \\\"\\\",\\r\\n        \\\"message_digest_password\\\": \\\"\\\",\\r\\n        \\\"interface\\\": \\\"loopback0\\\",\\r\\n        \\\"ospf\\\": \\\"underlay\\\",\\r\\n        \\\"message_digest\\\": false\\r\\n      },\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"area\\\": \\\"0\\\", \\r\\n            \\\"auth_pass\\\": null, \\r\\n            \\\"authorize\\\": false, \\r\\n            \\\"config\\\": null, \\r\\n            \\\"cost\\\": null, \\r\\n            \\\"dead_interval\\\": null, \\r\\n            \\\"hello_interval\\\": null, \\r\\n            \\\"host\\\": \\\"spine1p1\\\", \\r\\n            \\\"include_defaults\\\": \\\"True\\\", \\r\\n            \\\"interface\\\": \\\"loopback0\\\", \\r\\n            \\\"message_digest\\\": null, \\r\\n            \\\"message_digest_algorithm_type\\\": null, \\r\\n            \\\"message_digest_encryption_type\\\": null, \\r\\n            \\\"message_digest_key_id\\\": null, \\r\\n            \\\"message_digest_password\\\": null, \\r\\n            \\\"ospf\\\": \\\"underlay\\\", \\r\\n            \\\"passive_interface\\\": null, \\r\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n            \\\"port\\\": null, \\r\\n            \\\"provider\\\": {\\r\\n                \\\"host\\\": \\\"spine1p1\\\", \\r\\n                \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n                \\\"transport\\\": \\\"nxapi\\\", \\r\\n                \\\"username\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\"\\r\\n            }, \\r\\n            \\\"save\\\": false, \\r\\n            \\\"ssh_keyfile\\\": null, \\r\\n            \\\"state\\\": \\\"present\\\", \\r\\n            \\\"timeout\\\": 10, \\r\\n            \\\"transport\\\": \\\"nxapi\\\", \\r\\n            \\\"use_ssl\\\": false, \\r\\n            \\\"username\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n            \\\"validate_certs\\\": true\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"nxos_interface_ospf\\\"\\r\\n    }, \\r\\n    \\\"proposed\\\": {\\r\\n        \\\"area\\\": \\\"0\\\", \\r\\n        \\\"interface\\\": \\\"loopback0\\\", \\r\\n        \\\"ospf\\\": \\\"underlay\\\"\\r\\n    }, \\r\\n}\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nTASK [common : Configure ospf interfaces] **************************************\\r\\nchanged: [spine1p1] =>  {\\r\\n    \\\"changed\\\": true, \\r\\n    \\\"connected\\\": true, \\r\\n    \\\"end_state\\\": {}, \\r\\n    \\\"existing\\\": {}, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"area\\\": \\\"0\\\", \\r\\n            \\\"auth_pass\\\": null, \\r\\n            \\\"authorize\\\": false, \\r\\n            \\\"config\\\": null, \\r\\n            \\\"cost\\\": null, \\r\\n            \\\"dead_interval\\\": null, \\r\\n            \\\"hello_interval\\\": null, \\r\\n            \\\"host\\\": \\\"spine1p1\\\", \\r\\n            \\\"include_defaults\\\": \\\"True\\\", \\r\\n            \\\"interface\\\": \\\"loopback0\\\", \\r\\n            \\\"message_digest\\\": null, \\r\\n            \\\"message_digest_algorithm_type\\\": null, \\r\\n            \\\"message_digest_encryption_type\\\": null, \\r\\n            \\\"message_digest_key_id\\\": null, \\r\\n            \\\"message_digest_password\\\": null, \\r\\n            \\\"ospf\\\": \\\"underlay\\\", \\r\\n            \\\"passive_interface\\\": null, \\r\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n            \\\"port\\\": null, \\r\\n            \\\"provider\\\": {\\r\\n                \\\"host\\\": \\\"spine1p1\\\", \\r\\n                \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n                \\\"transport\\\": \\\"nxapi\\\", \\r\\n                \\\"username\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\"\\r\\n            }, \\r\\n            \\\"save\\\": false, \\r\\n            \\\"ssh_keyfile\\\": null, \\r\\n            \\\"state\\\": \\\"present\\\", \\r\\n            \\\"timeout\\\": 10, \\r\\n            \\\"transport\\\": \\\"nxapi\\\", \\r\\n            \\\"use_ssl\\\": false, \\r\\n            \\\"username\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n            \\\"validate_certs\\\": true\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"nxos_interface_ospf\\\"\\r\\n    }, \\r\\n    \\\"proposed\\\": {\\r\\n        \\\"area\\\": \\\"0\\\", \\r\\n        \\\"interface\\\": \\\"loopback0\\\", \\r\\n        \\\"ospf\\\": \\\"underlay\\\"\\r\\n    }, \\r\\n    \\\"updates\\\": [\\r\\n        \\\"interface Loopback0\\\", \\r\\n        \\\"ip router ospf underlay area 0.0.0.0\\\"\\r\\n    ]\\r\\n}\\r\\n```\", \n    \"component_name\": \"at least nxos_interface_ospf and nxos_vrf_interface\", \n    \"component_raw\": \"At least nxos_interface_ospf and nxos_vrf_interface\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19088\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nxos/nxos_vrf_interface.py\", \n    \"summary\": \"The existing configuration for loopbacks is not correctly read on a Nexus 9k using nxos.7.0.3.I4.3.\\n\\nWith this version, the loopback interfaces and the mgmt interfaces doesn't start with a capitalized character but these modules check against the interfaces in the playbook capitalized.\\n\\nIn result, the tasks appears as changed and some configurations are sent although not needed.\", \n    \"title\": \"Some modules in Network/NXOS tree doesn't work on non capitalized interfaces\"\n  }, \n  \"19089\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\ngitlab_tag\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.2.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nThis module will create a git tag in Gitlab on a project. The group and project should exists, otherwise this module will complain that either one of these does not exists. This module can only create or delete a tag, not update a tag.\\n\", \n    \"component_name\": \"gitlab_tag\", \n    \"component_raw\": \"gitlab_tag\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19089\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/source_control/gitlab_tag.py\", \n    \"summary\": \"This module will create a git tag in Gitlab on a project. The group and project should exists, otherwise this module will complain that either one of these does not exists. This module can only create or delete a tag, not update a tag.\", \n    \"title\": \"Added new module gitlab_tag\"\n  }, \n  \"19092\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\ngitlab_user\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.2.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nThe python module used in the previous version seems not alive anymore. Suggestion from #2159 was to use other python module, one that is alive. This PR make use of this suggested module and added new options. \\n\", \n    \"component_name\": \"gitlab_user\", \n    \"component_raw\": \"gitlab_user\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19092\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"owner_pr\"\n    ], \n    \"module_match\": \"lib/ansible/modules/source_control/gitlab_user.py\", \n    \"summary\": \"The python module used in the previous version seems not alive anymore. Suggestion from #2159 was to use other python module, one that is alive. This PR make use of this suggested module and added new options.\", \n    \"title\": \"Used an other python-module for gitlab_user and added new options\"\n  }, \n  \"19093\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\ngitlab_hook\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.2.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nThis will create, update or delete a (web)hook in a project in Gitlab.\\n\", \n    \"component_name\": \"gitlab_hook\", \n    \"component_raw\": \"gitlab_hook\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19093\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/source_control/gitlab_hook.py\", \n    \"summary\": \"This will create, update or delete a (web)hook in a project in Gitlab.\", \n    \"title\": \"Added module gitlab_hook\"\n  }, \n  \"19094\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /git/ansible/\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\ngitlab_group\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.2.0\\n  config file = /git/ansible/environment/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nThe python module used in the previous version seems not alive anymore. Suggestion from #2159 was to use other python module, one that is alive. This PR make use of this suggested module and added a new option. Other modules will be updated soon.\\n\", \n    \"component_name\": \"gitlab_group\", \n    \"component_raw\": \"gitlab_group\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19094\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"feature\", \n      \"module\", \n      \"owner_pr\"\n    ], \n    \"module_match\": \"lib/ansible/modules/source_control/gitlab_group.py\", \n    \"summary\": \"The python module used in the previous version seems not alive anymore. Suggestion from #2159 was to use other python module, one that is alive. This PR make use of this suggested module and added a new option. Other modules will be updated soon.\", \n    \"title\": \"Updated gitlab_group module\"\n  }, \n  \"19098\": {\n    \"ansible_version\": \"2.2\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\nopendj_backend\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\n2.2\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nThis module will create/delete backends in OpenDJ (LDAP directory server). This module will make use of the command 'dsconfig' and 'manage-tasks', which are installed with the installation of OpenDJ.\\n\", \n    \"component_name\": \"opendj_backend\", \n    \"component_raw\": \"opendj_backend\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19098\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/identity/opendj/opendj_backend.py\", \n    \"summary\": \"This module will create/delete backends in OpenDJ (LDAP directory server). This module will make use of the command 'dsconfig' and 'manage-tasks', which are installed with the installation of OpenDJ.\", \n    \"title\": \"Added creation of backends in OpenDJ\"\n  }, \n  \"19099\": {\n    \"ansible_version\": \"2.2\", \n    \"body\": \"##### ISSUE TYPE\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\nopendj_index\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\n2.2\\n```\\n##### SUMMARY\\n\\nThis module will create/update/delete and rebuild OpenDJ indexes (LDAP directory server). This module will make use of the command 'dsconfig', which is installed with the installation of OpenDJ\\n\", \n    \"component_name\": \"opendj_index\", \n    \"component_raw\": \"opendj_index\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19099\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/identity/opendj/opendj_index.py\", \n    \"summary\": \"This module will create/update/delete and rebuild OpenDJ indexes (LDAP directory server). This module will make use of the command 'dsconfig', which is installed with the installation of OpenDJ\", \n    \"title\": \"Added new module opendj_index for creating and updating OpenDJ indexes\"\n  }, \n  \"19100\": {\n    \"ansible_version\": \"2.2\", \n    \"body\": \"##### ISSUE TYPE\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\nopendj_globalconfiguration\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\n2.2\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nThis module will update the configuration settings for the OpenDJ service. This module will make use of the command 'dsconfig', which is installed with the installation of OpenDJ.\\n\", \n    \"component_name\": \"opendj_global\", \n    \"component_raw\": \"opendj_global\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19100\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/identity/opendj/opendj_globalconfiguration.py\", \n    \"summary\": \"This module will update the configuration settings for the OpenDJ service. This module will make use of the command 'dsconfig', which is installed with the installation of OpenDJ.\", \n    \"title\": \"Added new module opendj_globalconfiguration for updating the global OpenDJ server configuration\"\n  }, \n  \"19101\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel 3bac945147)\", \n    \"body\": \"_From @rsanr on September 20, 2016 18:27_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\nTemplate\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0 (devel 3bac945147)\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nUsing `--diff` when running template module doesn't show all the changes when both the template file and mode has changed.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\nTask:\\n\\n```\\n- name: ensures /abc/myconf.conf exists\\n  template:\\n    src: \\\"my_template\\\"\\n    dest: \\\"/abc/myconf.conf\\\"\\n    mode: 0755\\n  become: yes\\n  become_method: sudo\\n```\\n\\nmyconf.conf\\n\\n```\\n{\\n  \\\"obj\\\": {\\n    \\\"type\\\": \\\"foo\\\",\\n    \\\"pol\\\": {\\n      \\\"a\\\": \\\"{{  ansible_processor_vcpus }}|a_pol\\\",\\n      \\\"b\\\": \\\"b_pol,\\n      \\\"c\\\": \\\"c_pol\\\",\\n      \\\"d\\\": \\\"d_pol\\\"\\n    }\\n  }\\n}\\n```\\n\\nChanged task w/ updated `mode` and updated `myconf.conf`\\n\\n```\\n- name: ensures /abc/myconf.conf exists\\n  template:\\n    src: \\\"my_template\\\"\\n    dest: \\\"/abc/myconf.conf\\\"\\n    mode: 0775\\n  become: yes\\n  become_method: sudo\\n```\\n\\n```\\n{\\n  \\\"obj\\\": {\\n    \\\"type\\\": \\\"foo1\\\",\\n    \\\"pol\\\": {\\n      \\\"a\\\": \\\"{{  ansible_processor_vcpus }}|a_pol\\\",\\n      \\\"b\\\": \\\"b_pol,\\n      \\\"c\\\": \\\"c_pol\\\",\\n      \\\"d\\\": \\\"d_pol\\\"\\n    }\\n  }\\n}\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\n```\\n\\nchanged: [xx.xx.xx.xxx] => {\\\"changed\\\": true, \\\"diff\\\": {\\\"after\\\": {\\\"mode\\\": \\\"0775\\\", \\\"path\\\": \\\"/abc/myconf.conf\\\"}, \\\"before\\\": {\\\"mode\\\": \\\"0755\\\", \\\"path\\\": \\\"/abc/myconf.conf\\\"},{\\\"after\\\": \\\"{\\\\n  \\\\\\\"obj\\\\\\\": {\\\\n    \\\\\\\"type\\\\\\\": \\\\\\\"foo1\\\\\\\",\\\\n    \\\\\\\"pol\\\\\\\": {\\\\n      \\\\\\\"a\\\\\\\": \\\\\\\"2|a_pol\\\\\\\",\\\\n      \\\\\\\"b\\\\\\\": \\\\\\\"b_pol,\\\\n      \\\\\\\"c\\\\\\\": \\\\\\\"c_pol\\\\\\\",\\\\n      \\\\\\\"d\\\\\\\": \\\\\\\"d_pol\\\\\\\"\\\\n    }\\\\n  }\\\\n}\\\\n\\\\n\\\", \\\"after_header\\\": \\\"dynamically generated\\\", \\\"before\\\": \\\"{\\\\n  \\\\\\\"obj\\\\\\\": {\\\\n    \\\\\\\"type\\\\\\\": \\\\\\\"foo\\\\\\\",\\\\n    \\\\\\\"pol\\\\\\\": {\\\\n      \\\\\\\"a\\\\\\\": \\\\\\\"2|a_pol\\\\\\\",\\\\n      \\\\\\\"b\\\\\\\": \\\\\\\"b_pol,\\\\n      \\\\\\\"c\\\\\\\": \\\\\\\"c_pol\\\\\\\",\\\\n      \\\\\\\"d\\\\\\\": \\\\\\\"d_pol\\\\\\\"\\\\n    }\\\\n}, \\\"gid\\\": 0, \\\"group\\\": \\\"root\\\", \\\"invocation\\\": {\\\"module_args\\\": {\\\"backup\\\": null, \\\"content\\\": null, \\\"delimiter\\\": null, \\\"dest\\\": \\\"/abc/myconf.conf\\\", \\\"diff_peek\\\": null, \\\"directory_mode\\\": null, \\\"follow\\\": true, \\\"force\\\": false, \\\"group\\\": null, \\\"mode\\\": 509, \\\"original_basename\\\": \\\"myconf.conf.j2\\\", \\\"owner\\\": null, \\\"path\\\": \\\"/abc/myconf.conf\\\", \\\"recurse\\\": false, \\\"regexp\\\": null, \\\"remote_src\\\": null, \\\"selevel\\\": null, \\\"serole\\\": null, \\\"setype\\\": null, \\\"seuser\\\": null, \\\"src\\\": null, \\\"state\\\": null, \\\"validate\\\": null}}, \\\"mode\\\": \\\"0755\\\", \\\"owner\\\": \\\"root\\\", \\\"path\\\": \\\"/abc/myconf.conf\\\", \\\"size\\\": 138, \\\"state\\\": \\\"file\\\", \\\"uid\\\": 0}\\n--- before: /abc/myconf.conf\\n+++ after: dynamically generated\\n@@ -1,6 +1,6 @@\\n {\\n   \\\"obj\\\": {\\n-    \\\"type\\\": \\\"foo\\\",\\n+    \\\"type\\\": \\\"foo1\\\",\\n     \\\"pol\\\": {\\n       \\\"a\\\": \\\"2|a_pol\\\",\\n       \\\"b\\\": \\\"b_pol,\\n--- before\\n+++ after\\n@@ -1,4 +1,4 @@\\n {\\n-    \\\"mode\\\": \\\"0755\\\", \\n+    \\\"mode\\\": \\\"0775\\\", \\n     \\\"path\\\": \\\"/abc/myconf.conf\\\"\\n }\\n```\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\nAnsible playbook was run with `--diff` and `--check` flags.  The behavior is the same whether `--check` flag was used or not.\\n\\n```\\nchanged: [xx.xx.xx.xxx] => {\\\"changed\\\": true, \\\"diff\\\": {\\\"after\\\": \\\"{\\\\n  \\\\\\\"obj\\\\\\\": {\\\\n    \\\\\\\"type\\\\\\\": \\\\\\\"foo1\\\\\\\",\\\\n    \\\\\\\"pol\\\\\\\": {\\\\n      \\\\\\\"a\\\\\\\": \\\\\\\"2|a_pol\\\\\\\",\\\\n      \\\\\\\"b\\\\\\\": \\\\\\\"b_pol,\\\\n      \\\\\\\"c\\\\\\\": \\\\\\\"c_pol\\\\\\\",\\\\n      \\\\\\\"d\\\\\\\": \\\\\\\"d_pol\\\\\\\"\\\\n    }\\\\n  }\\\\n}\\\\n\\\\n\\\", \\\"after_header\\\": \\\"dynamically generated\\\", \\\"before\\\": \\\"{\\\\n  \\\\\\\"obj\\\\\\\": {\\\\n    \\\\\\\"type\\\\\\\": \\\\\\\"foo\\\\\\\",\\\\n    \\\\\\\"pol\\\\\\\": {\\\\n      \\\\\\\"a\\\\\\\": \\\\\\\"2|a_pol\\\\\\\",\\\\n      \\\\\\\"b\\\\\\\": \\\\\\\"b_pol,\\\\n      \\\\\\\"c\\\\\\\": \\\\\\\"c_pol\\\\\\\",\\\\n      \\\\\\\"d\\\\\\\": \\\\\\\"d_pol\\\\\\\"\\\\n    }\\\\n  }\\\\n}\\\\n\\\\n\\\", \\\"before_header\\\": \\\"/abc/myconf.conf\\\"}, \\\"invocation\\\": {\\\"module_args\\\": {\\\"dest\\\": \\\"/abc/myconf.conf\\\", \\\"mode\\\": 509, \\\"src\\\": \\\"myconf.conf.j2\\\"}, \\\"module_name\\\": \\\"template\\\"}}\\n--- before: /abc/myconf.conf\\n+++ after: dynamically generated\\n@@ -1,6 +1,6 @@\\n {\\n   \\\"obj\\\": {\\n-    \\\"type\\\": \\\"foo\\\",\\n+    \\\"type\\\": \\\"foo1\\\",\\n     \\\"pol\\\": {\\n       \\\"a\\\": \\\"2|a_pol\\\",\\n       \\\"b\\\": \\\"b_pol,\\n```\\n\\nNOTE: When only `mode` was updated with no changes to the `myconf.conf` file, the output is as expected as follows:\\n\\n```\\n--- before\\n+++ after\\n@@ -1,4 +1,4 @@\\n {\\n-    \\\"mode\\\": \\\"0755\\\", \\n+    \\\"mode\\\": \\\"0775\\\", \\n     \\\"path\\\": \\\"/abc/myconf.conf\\\"\\n }\\n```\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#4948_\", \n    \"component_name\": \"template\", \n    \"component_raw\": \"Template\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19101\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/template.py\", \n    \"summary\": \"Using `--diff` when running template module doesn't show all the changes when both the template file and mode has changed.\", \n    \"title\": \"--diff doesn't show all differences with Template module\"\n  }, \n  \"19102\": {\n    \"ansible_version\": \"2.1.1.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\napt\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.1.1.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nNo config\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nUbuntu 14.04\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n- hosts: localhost\\r\\n  connection: local\\r\\n  gather_facts: no\\r\\n  tasks:\\r\\n  # single * at end of string\\r\\n  # works as expected\\r\\n  - apt:\\r\\n      name: \\\"htop=1.0.2*\\\"\\r\\n    become: yes\\r\\n\\r\\n  # multiple *'s, still properly finds a match\\r\\n  # already installed; does nothing\\r\\n  - apt:\\r\\n      name: \\\"htop=1.*.2*\\\"\\r\\n    become: yes\\r\\n\\r\\n  # single prefixed *, finds a match\\r\\n  # works as expected\\r\\n  - apt:\\r\\n      name: \\\"htop=*0.2-3\\\"\\r\\n      state: absent\\r\\n    become: yes\\r\\n\\r\\n  # multiple *'s same as above\\r\\n  # fails; is passing the wildcard string directly to apt instead of the matched\\r\\n  # result\\r\\n  - apt:\\r\\n      name: \\\"htop=1.*.2*\\\"\\r\\n    become: yes\\r\\n\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nInstall or uninstall version successfully\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [apt] *********************************************************************\\r\\nfatal: [localhost]: FAILED! => {\\\"cache_update_time\\\": 0, \\\"cache_updated\\\": false, \\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"'/usr/bin/apt-get -y -o \\\\\\\"Dpkg::Options::=--force-confdef\\\\\\\" -o \\\\\\\"Dpkg::Options::=--force-confold\\\\\\\"     install 'htop=1.*.2*'' failed: E: Version '1.*.2*' for 'htop' was not found\\\\n\\\", \\\"stderr\\\": \\\"E: Version '1.*.2*' for 'htop' was not found\\\\n\\\", \\\"stdout\\\": \\\"Reading package lists...\\\\nBuilding dependency tree...\\\\nReading state information...\\\\n\\\", \\\"stdout_lines\\\": [\\\"Reading package lists...\\\", \\\"Building dependency tree...\\\", \\\"Reading state information...\\\"]}\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"apt\", \n    \"component_raw\": \"apt\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19102\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/apt.py\", \n    \"summary\": \"\", \n    \"title\": \"Multiple *'s in package specs causes apt commands to fail, despite fnmatch properly matching\"\n  }, \n  \"19103\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel 3874e653c1)\", \n    \"body\": \"_From @rsanr on September 22, 2016 18:1_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\ndocker_container\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0 (devel 3874e653c1)\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\ndocker_container erroneously sends `volume` in addition to `binds` to docker API during create container call.  \\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n- name: assert state of my container\\n  docker_container:\\n    name: mc\\n    image: \\\"my_container:1.0\\\"\\n    command: \\\"execute\\\"\\n    state: started\\n    restart_policy: always\\n    exposed_ports:\\n    - 12345\\n    network_mode: host\\n    detach: True\\n    volumes:\\n    - \\\"/a/b:/a/b\\\"\\n    log_driver: \\\"json-file\\\"\\n    log_options:\\n      max-size: \\\"10m\\\"\\n      max-file: \\\"10\\\"\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nDocker daemon logs w/ debug level\\n\\n```\\nDEBU[0111] Calling POST /v1.23/containers/create?name=mc \\nDEBU[0111] form data: {\\\"AttachStderr\\\":false,\\\"AttachStdin\\\":false,\\\"AttachStdout\\\":false,\\\"Cmd\\\":[\\\"execute\\\"],\\\"Env\\\":[],\\\"ExposedPorts\\\":{\\\"12345/tcp\\\":{}},\\\"HostConfig\\\":{\\\"Binds\\\":[\\\"/a/b:/a/b:rw\\\"],\\\"LogConfig\\\":{\\\"Config\\\":{\\\"max-file\\\":\\\"10\\\",\\\"max-size\\\":\\\"10m\\\"},\\\"Type\\\":\\\"json-file\\\"},\\\"Memory\\\":0,\\\"NetworkMode\\\":\\\"host\\\",\\\"ReadonlyRootfs\\\":false,\\\"RestartPolicy\\\":{\\\"MaximumRetryCount\\\":null,\\\"Name\\\":\\\"always\\\"}},\\\"Image\\\":\\\"my_container:1.0\\\",\\\"NetworkDisabled\\\":false,\\\"OpenStdin\\\":false,\\\"StdinOnce\\\":false,\\\"Tty\\\":false,\\\"Volumes\\\":{}} \\n```\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nDEBU[0111] Calling POST /v1.23/containers/create?name=mc \\nDEBU[0111] form data: {\\\"AttachStderr\\\":false,\\\"AttachStdin\\\":false,\\\"AttachStdout\\\":false,\\\"Cmd\\\":[\\\"execute\\\"],\\\"Env\\\":[],\\\"ExposedPorts\\\":{\\\"12345/tcp\\\":{}},\\\"HostConfig\\\":{\\\"Binds\\\":[\\\"/a/b:/a/b:rw\\\"],\\\"LogConfig\\\":{\\\"Config\\\":{\\\"max-file\\\":\\\"10\\\",\\\"max-size\\\":\\\"10m\\\"},\\\"Type\\\":\\\"json-file\\\"},\\\"Memory\\\":0,\\\"NetworkMode\\\":\\\"host\\\",\\\"ReadonlyRootfs\\\":false,\\\"RestartPolicy\\\":{\\\"MaximumRetryCount\\\":null,\\\"Name\\\":\\\"always\\\"}},\\\"Image\\\":\\\"my_container:1.0\\\",\\\"NetworkDisabled\\\":false,\\\"OpenStdin\\\":false,\\\"StdinOnce\\\":false,\\\"Tty\\\":false,\\\"Volumes\\\":{\\\"/a/b\\\":{}}} \\n```\\n\\nWhen the same task (adapted for) is run using the deprecated docker module we see the volume is not sent:\\n\\n```\\nDEBU[0328] Calling POST /v1.22/containers/create?name=mc \\nDEBU[0328] form data: {\\\"AttachStderr\\\":false,\\\"AttachStdin\\\":false,\\\"AttachStdout\\\":false,\\\"Cmd\\\":[\\\"execute\\\"],\\\"CpuShares\\\":0,\\\"Env\\\":[],\\\"ExposedPorts\\\":{\\\"12345/tcp\\\":{}},\\\"HostConfig\\\":{\\\"Binds\\\":[\\\"/a/b:/a/b:rw\\\"],\\\"LogConfig\\\":{\\\"Config\\\":{\\\"max-file\\\":\\\"10\\\",\\\"max-size\\\":\\\"10m\\\"},\\\"Type\\\":\\\"json-file\\\"},\\\"Memory\\\":0,\\\"NetworkMode\\\":\\\"host\\\",\\\"RestartPolicy\\\":{\\\"Name\\\":\\\"always\\\"}},\\\"Image\\\":\\\"my_container:1.0\\\",\\\"Labels\\\":{},\\\"NetworkDisabled\\\":false,\\\"OpenStdin\\\":false,\\\"StdinOnce\\\":false,\\\"Tty\\\":false,\\\"Volumes\\\":{}} \\n```\\n\\nNote pinning API version to 1.22 on `docker_container` made no difference.  It still ends up sending volume as part of the request.   Based on the thread below it seems that volume shouldn't be sent in this scenario:\\nhttps://github.com/docker/docker/issues/2949#issuecomment-230883544\\n\\nIf my understating is accurate can this be looked into?  Thanks.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#4974_\", \n    \"component_name\": \"docker_container\", \n    \"component_raw\": \"docker_container\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19103\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"summary\": \"docker_container erroneously sends `volume` in addition to `binds` to docker API during create container call.\", \n    \"title\": \"docker_container sends volume to docker API erroneously\"\n  }, \n  \"19104\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/ansible/cloudops/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @Hayorti on November 14, 2016 19:49_\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n- (role file resolution)\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/ansible/cloudops/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n- No setting changes.\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n- Host: CentOS 7\\r\\n- Client: Windows Server 2012 R2\\r\\n\\r\\n##### SUMMARY\\r\\nThe win_copy module was functioning correctly in Ansible 2.1.3.0, but the same module task now fails in Ansible 2.2.0.0 with the following message:\\r\\n```\\r\\nfatal: [172.31.14.229]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Unable to find 'script/CurrentLicenses.ps1' in expected paths.\\\"}\\r\\n```\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nRun a win_copy module task with a relative path.\\r\\n\\r\\nDirectory Structure:\\r\\n```\\r\\nansible\\r\\n\\u251c\\u2500\\u2500 check-licenses.yml\\r\\n\\u2514\\u2500\\u2500 roles\\r\\n \\u00a0\\u00a0 \\u2514\\u2500\\u2500 check-licenses\\r\\n \\u00a0\\u00a0  \\u00a0\\u00a0 \\u251c\\u2500\\u2500 script\\r\\n \\u00a0\\u00a0  \\u00a0\\u00a0 \\u2502\\u00a0\\u00a0 \\u2514\\u2500\\u2500 CurrentLicenses.ps1\\r\\n \\u00a0\\u00a0  \\u00a0\\u00a0 \\u2514\\u2500\\u2500 tasks\\r\\n \\u00a0\\u00a0  \\u00a0\\u00a0     \\u2514\\u2500\\u2500 main.yml\\r\\n```\\r\\n\\r\\nPlaybook (check-licenses.yml):\\r\\n```\\r\\n- name: Checks the licenses currently present on the server\\r\\n  hosts: webservers\\r\\n  strategy: free\\r\\n  gather_facts: false\\r\\n  vars_files:\\r\\n    - host_vars/{{ env }}-vars\\r\\n  roles:\\r\\n    - check-licenses\\r\\n```\\r\\n\\r\\nRole (check-licenses):\\r\\n```\\r\\n---\\r\\n- name: Delete existing CheckLicenses directory\\r\\n  win_file:\\r\\n    path=\\\"C:\\\\BP_Tools\\\\Licensing\\\"\\r\\n    state=absent\\r\\n\\r\\n- name: Create BP_Tools directory\\r\\n  win_file:\\r\\n    path=\\\"C:\\\\BP_Tools\\\"\\r\\n    state=directory\\r\\n\\r\\n- name: Create script directory\\r\\n  win_file:\\r\\n    path=\\\"C:\\\\BP_Tools\\\\Licensing\\\"\\r\\n    state=directory\\r\\n\\r\\n- name: Copy script to remote system\\r\\n  win_copy:\\r\\n    src=script/CurrentLicenses.ps1\\r\\n    dest=C:/BP_Tools/Licensing/CurrentLicenses.ps1\\r\\n\\r\\n- name: Run script\\r\\n  raw: Invoke-Expression C:/BP_Tools/Licensing/CurrentLicenses.ps1\\r\\n...\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThis result is from Ansible 2.1.3.0, limited to a single host.\\r\\n\\r\\n```\\r\\nTASK [check-licenses : Delete existing CheckLicenses directory] ****************\\r\\nchanged: [172.31.14.229]\\r\\n\\r\\nTASK [check-licenses : Create BP_Tools directory] ******************************\\r\\nok: [172.31.14.229]\\r\\n\\r\\nTASK [check-licenses : Create script directory] ********************************\\r\\nchanged: [172.31.14.229]\\r\\n\\r\\nTASK [check-licenses : Copy script to remote system] ***************************\\r\\nchanged: [172.31.14.229]\\r\\n\\r\\nTASK [check-licenses : Run script] *********************************************\\r\\nok: [172.31.14.229]\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\n172.31.14.229              : ok=5    changed=3    unreachable=0    failed=0\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nThis result is from Ansible 2.2.0.0, limited to a single host.\\r\\n\\r\\nNon-Verbose Output\\r\\n```\\r\\nPLAY [Checks the licenses currently present on the server] *********************\\r\\n\\r\\nTASK [check-licenses : Delete existing CheckLicenses directory] ****************\\r\\nchanged: [172.31.14.229]\\r\\n\\r\\nTASK [check-licenses : Create BP_Tools directory] ******************************\\r\\nok: [172.31.14.229]\\r\\n [WARNING]: Module invocation had junk after the JSON data:\\r\\n\\r\\n\\r\\nTASK [check-licenses : Create script directory] ********************************\\r\\nchanged: [172.31.14.229]\\r\\n\\r\\nTASK [check-licenses : Copy script to remote system] ***************************\\r\\nfatal: [172.31.14.229]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Unable to find 'script/CurrentLicenses.ps1' in expected paths.\\\"}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\n172.31.14.229              : ok=3    changed=2    unreachable=0    failed=1\\r\\n```\\r\\n\\r\\nVerbose Output (-vvv)\\r\\n```\\r\\nPLAYBOOK: check-licenses.yml ***************************************************\\r\\n1 plays in check-licenses.yml\\r\\n\\r\\nPLAY [Checks the licenses currently present on the server] *********************\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/core/windows/win_file.ps1\\r\\n<172.31.14.229> ESTABLISH WINRM CONNECTION FOR USER: ansible on PORT 5986 TO 172.31.14.229\\r\\n<172.31.14.229> EXEC Set-StrictMode -Version Latest\\r\\n(New-Item -Type Directory -Path $env:temp -Name \\\"ansible-tmp-1479152898.25-122543529253760\\\").FullName | Write-Host -Separator '';\\r\\n<172.31.14.229> PUT \\\"/tmp/tmp_mDunx\\\" TO \\\"C:\\\\Users\\\\ansible\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1479152898.25-122543529253760\\\\win_file.ps1\\\"\\r\\n<172.31.14.229> EXEC Set-StrictMode -Version Latest\\r\\nTry\\r\\n{\\r\\n& 'C:\\\\Users\\\\ansible\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1479152898.25-122543529253760\\\\win_file.ps1'\\r\\n}\\r\\nCatch\\r\\n{\\r\\n$_obj = @{ failed = $true }\\r\\nIf ($_.Exception.GetType)\\r\\n{\\r\\n$_obj.Add('msg', $_.Exception.Message)\\r\\n}\\r\\nElse\\r\\n{\\r\\n$_obj.Add('msg', $_.ToString())\\r\\n}\\r\\nIf ($_.InvocationInfo.PositionMessage)\\r\\n{\\r\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\r\\n}\\r\\nElseIf ($_.ScriptStackTrace)\\r\\n{\\r\\n$_obj.Add('exception', $_.ScriptStackTrace)\\r\\n}\\r\\nTry\\r\\n{\\r\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\r\\n}\\r\\nCatch\\r\\n{\\r\\n}\\r\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\r\\nExit 1\\r\\n}\\r\\nFinally { Remove-Item \\\"C:\\\\Users\\\\ansible\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1479152898.25-122543529253760\\\" -Force -Recurse -ErrorAction SilentlyContinue }\\r\\n\\r\\nTASK [check-licenses : Delete existing CheckLicenses directory] ****************\\r\\ntask path: /home/ansible/cloudops/ansible/roles/check-licenses/tasks/main.yml:7\\r\\nok: [172.31.14.229] => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_file\\\"\\r\\n    }\\r\\n}\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/core/windows/win_file.ps1\\r\\n<172.31.14.229> ESTABLISH WINRM CONNECTION FOR USER: ansible on PORT 5986 TO 172.31.14.229\\r\\n<172.31.14.229> EXEC Set-StrictMode -Version Latest\\r\\n(New-Item -Type Directory -Path $env:temp -Name \\\"ansible-tmp-1479152899.19-48551702457764\\\").FullName | Write-Host -Separator '';\\r\\n<172.31.14.229> PUT \\\"/tmp/tmpD9Qs_g\\\" TO \\\"C:\\\\Users\\\\ansible\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1479152899.19-48551702457764\\\\win_file.ps1\\\"\\r\\n<172.31.14.229> EXEC Set-StrictMode -Version Latest\\r\\nTry\\r\\n{\\r\\n& 'C:\\\\Users\\\\ansible\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1479152899.19-48551702457764\\\\win_file.ps1'\\r\\n}\\r\\nCatch\\r\\n{\\r\\n$_obj = @{ failed = $true }\\r\\nIf ($_.Exception.GetType)\\r\\n{\\r\\n$_obj.Add('msg', $_.Exception.Message)\\r\\n}\\r\\nElse\\r\\n{\\r\\n$_obj.Add('msg', $_.ToString())\\r\\n}\\r\\nIf ($_.InvocationInfo.PositionMessage)\\r\\n{\\r\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\r\\n}\\r\\nElseIf ($_.ScriptStackTrace)\\r\\n{\\r\\n$_obj.Add('exception', $_.ScriptStackTrace)\\r\\n}\\r\\nTry\\r\\n{\\r\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\r\\n}\\r\\nCatch\\r\\n{\\r\\n}\\r\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\r\\nExit 1\\r\\n}\\r\\nFinally { Remove-Item \\\"C:\\\\Users\\\\ansible\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1479152899.19-48551702457764\\\" -Force -Recurse -ErrorAction SilentlyContinue }\\r\\n\\r\\nTASK [check-licenses : Create BP_Tools directory] ******************************\\r\\ntask path: /home/ansible/cloudops/ansible/roles/check-licenses/tasks/main.yml:14\\r\\nok: [172.31.14.229] => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_file\\\"\\r\\n    }\\r\\n}\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/core/windows/win_file.ps1\\r\\n<172.31.14.229> ESTABLISH WINRM CONNECTION FOR USER: ansible on PORT 5986 TO 172.31.14.229\\r\\n<172.31.14.229> EXEC Set-StrictMode -Version Latest\\r\\n(New-Item -Type Directory -Path $env:temp -Name \\\"ansible-tmp-1479152900.1-75553227803084\\\").FullName | Write-Host -Separator '';\\r\\n<172.31.14.229> PUT \\\"/tmp/tmpy_GdMz\\\" TO \\\"C:\\\\Users\\\\ansible\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1479152900.1-75553227803084\\\\win_file.ps1\\\"\\r\\n<172.31.14.229> EXEC Set-StrictMode -Version Latest\\r\\nTry\\r\\n{\\r\\n& 'C:\\\\Users\\\\ansible\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1479152900.1-75553227803084\\\\win_file.ps1'\\r\\n}\\r\\nCatch\\r\\n{\\r\\n$_obj = @{ failed = $true }\\r\\nIf ($_.Exception.GetType)\\r\\n{\\r\\n$_obj.Add('msg', $_.Exception.Message)\\r\\n}\\r\\nElse\\r\\n{\\r\\n$_obj.Add('msg', $_.ToString())\\r\\n}\\r\\nIf ($_.InvocationInfo.PositionMessage)\\r\\n{\\r\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\r\\n}\\r\\nElseIf ($_.ScriptStackTrace)\\r\\n{\\r\\n$_obj.Add('exception', $_.ScriptStackTrace)\\r\\n}\\r\\nTry\\r\\n{\\r\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\r\\n}\\r\\nCatch\\r\\n{\\r\\n}\\r\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\r\\nExit 1\\r\\n}\\r\\nFinally { Remove-Item \\\"C:\\\\Users\\\\ansible\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1479152900.1-75553227803084\\\" -Force -Recurse -ErrorAction SilentlyContinue }\\r\\n [WARNING]: Module invocation had junk after the JSON data:\\r\\n\\r\\n\\r\\nTASK [check-licenses : Create script directory] ********************************\\r\\ntask path: /home/ansible/cloudops/ansible/roles/check-licenses/tasks/main.yml:19\\r\\nchanged: [172.31.14.229] => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_file\\\"\\r\\n    }\\r\\n}\\r\\n\\r\\nTASK [check-licenses : Copy script to remote system] ***************************\\r\\ntask path: /home/ansible/cloudops/ansible/roles/check-licenses/tasks/main.yml:26\\r\\nfatal: [172.31.14.229]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"dest\\\": \\\"C:/BP_Tools/Licensing/CurrentLicenses.ps1\\\",\\r\\n            \\\"src\\\": \\\"script/CurrentLicenses.ps1\\\"\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"win_copy\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"Unable to find 'script/CurrentLicenses.ps1' in expected paths.\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\n172.31.14.229              : ok=3    changed=1    unreachable=0    failed=1\\r\\n```\\r\\n\\r\\n_Copied from original issue: ansible/ansible-modules-core#5606_\", \n    \"component_name\": \"(role file resolution)\", \n    \"component_raw\": \"- (role file resolution)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19104\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"windows\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The win_copy module was functioning correctly in Ansible 2.1.3.0, but the same module task now fails in Ansible 2.2.0.0 with the following message:\\n\\n```\\n\\nfatal: [172.31.14.229]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Unable to find 'script/CurrentLicenses.ps1' in expected paths.\\\"}\\n\\n```\", \n    \"title\": \"win_copy module error in 2.2.0.0 (Unable to find '%s' in expected paths.)\"\n  }, \n  \"19105\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 7e84bcec30) last updated 2016/12/06 191054 (GMT +000)\\nconfig file =\\nconfigured module search path = [/opt/ansible/ansible/library]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndocker_container\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel 7e84bcec30) last updated 2016/12/06 19:10:54 (GMT +000)\\r\\n  config file = \\r\\n  configured module search path = ['/opt/ansible/ansible/library']\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nCurrently docker_container module sets `Volumes` field for all volumes passed.  This behavior is inconsistent with `docker run` command.  This commit fixes `docker_container.py` to set `Volumes` field only when anonymous volumes are passed.\\r\\n\\r\\nThis behavior is also clarified in the following comment:\\r\\nhttps://github.com/docker/docker/issues/2949#issuecomment-230883544\\r\\n\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\nPlaybook:\\r\\n```\\r\\n- name: assert state of my container\\r\\n  docker_container:\\r\\n    name: mc\\r\\n    image: \\\"my_container:1.0\\\"\\r\\n    command: \\\"execute\\\"\\r\\n    state: started\\r\\n    restart_policy: always\\r\\n    exposed_ports:\\r\\n    - 12345\\r\\n    network_mode: host\\r\\n    detach: True\\r\\n    volumes:\\r\\n    - \\\"/a/b:/a/b\\\"\\r\\n    log_driver: \\\"json-file\\\"\\r\\n    log_options:\\r\\n      max-size: \\\"10m\\\"\\r\\n      max-file: \\\"10\\\"\\r\\n```\\r\\nBefore:\\r\\n```\\r\\nDEBU[0111] form data: {\\\"AttachStderr\\\":false,\\\"AttachStdin\\\":false,\\\"AttachStdout\\\":false,\\\"Cmd\\\":[\\\"execute\\\"],\\\"Env\\\":[],\\\"ExposedPorts\\\":{\\\"12345/tcp\\\":{}},\\\"HostConfig\\\":{\\\"Binds\\\":[\\\"/a/b:/a/b:rw\\\"],\\\"LogConfig\\\":{\\\"Config\\\":{\\\"max-file\\\":\\\"10\\\",\\\"max-size\\\":\\\"10m\\\"},\\\"Type\\\":\\\"json-file\\\"},\\\"Memory\\\":0,\\\"NetworkMode\\\":\\\"host\\\",\\\"ReadonlyRootfs\\\":false,\\\"RestartPolicy\\\":{\\\"MaximumRetryCount\\\":null,\\\"Name\\\":\\\"always\\\"}},\\\"Image\\\":\\\"my_container:1.0\\\",\\\"NetworkDisabled\\\":false,\\\"OpenStdin\\\":false,\\\"StdinOnce\\\":false,\\\"Tty\\\":false,\\\"Volumes\\\":{\\\"/a/b\\\":{}}} \\r\\n```\\r\\n\\r\\nAfter:\\r\\n```\\r\\nDEBU[0111] form data: {\\\"AttachStderr\\\":false,\\\"AttachStdin\\\":false,\\\"AttachStdout\\\":false,\\\"Cmd\\\":[\\\"execute\\\"],\\\"Env\\\":[],\\\"ExposedPorts\\\":{\\\"12345/tcp\\\":{}},\\\"HostConfig\\\":{\\\"Binds\\\":[\\\"/a/b:/a/b:rw\\\"],\\\"LogConfig\\\":{\\\"Config\\\":{\\\"max-file\\\":\\\"10\\\",\\\"max-size\\\":\\\"10m\\\"},\\\"Type\\\":\\\"json-file\\\"},\\\"Memory\\\":0,\\\"NetworkMode\\\":\\\"host\\\",\\\"ReadonlyRootfs\\\":false,\\\"RestartPolicy\\\":{\\\"MaximumRetryCount\\\":null,\\\"Name\\\":\\\"always\\\"}},\\\"Image\\\":\\\"my_container:1.0\\\",\\\"NetworkDisabled\\\":false,\\\"OpenStdin\\\":false,\\\"StdinOnce\\\":false,\\\"Tty\\\":false,\\\"Volumes\\\":{}} \\r\\n```\\r\\n\\r\\nFixes #19103\", \n    \"component_name\": \"docker_container\", \n    \"component_raw\": \"docker_container\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19105\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"committer_review\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"summary\": \"Currently docker_container module sets `Volumes` field for all volumes passed.  This behavior is inconsistent with `docker run` command.  This commit fixes `docker_container.py` to set `Volumes` field only when anonymous volumes are passed.\\n\\n\\n\\nThis behavior is also clarified in the following comment:\\n\\nhttps://github.com/docker/docker/issues/2949#issuecomment-230883544\\n\\n\\n\\n\\n\\n\\n\\nPlaybook:\\n\\n```\\n\\n- name: assert state of my container\\n\\n  docker_container:\\n\\n    name: mc\\n\\n    image: \\\"my_container:1.0\\\"\\n\\n    command: \\\"execute\\\"\\n\\n    state: started\\n\\n    restart_policy: always\\n\\n    exposed_ports:\\n\\n    - 12345\\n\\n    network_mode: host\\n\\n    detach: True\\n\\n    volumes:\\n\\n    - \\\"/a/b:/a/b\\\"\\n\\n    log_driver: \\\"json-file\\\"\\n\\n    log_options:\\n\\n      max-size: \\\"10m\\\"\\n\\n      max-file: \\\"10\\\"\\n\\n```\\n\\nBefore:\\n\\n```\\n\\nDEBU[0111] form data: {\\\"AttachStderr\\\":false,\\\"AttachStdin\\\":false,\\\"AttachStdout\\\":false,\\\"Cmd\\\":[\\\"execute\\\"],\\\"Env\\\":[],\\\"ExposedPorts\\\":{\\\"12345/tcp\\\":{}},\\\"HostConfig\\\":{\\\"Binds\\\":[\\\"/a/b:/a/b:rw\\\"],\\\"LogConfig\\\":{\\\"Config\\\":{\\\"max-file\\\":\\\"10\\\",\\\"max-size\\\":\\\"10m\\\"},\\\"Type\\\":\\\"json-file\\\"},\\\"Memory\\\":0,\\\"NetworkMode\\\":\\\"host\\\",\\\"ReadonlyRootfs\\\":false,\\\"RestartPolicy\\\":{\\\"MaximumRetryCount\\\":null,\\\"Name\\\":\\\"always\\\"}},\\\"Image\\\":\\\"my_container:1.0\\\",\\\"NetworkDisabled\\\":false,\\\"OpenStdin\\\":false,\\\"StdinOnce\\\":false,\\\"Tty\\\":false,\\\"Volumes\\\":{\\\"/a/b\\\":{}}} \\n\\n```\\n\\n\\n\\nAfter:\\n\\n```\\n\\nDEBU[0111] form data: {\\\"AttachStderr\\\":false,\\\"AttachStdin\\\":false,\\\"AttachStdout\\\":false,\\\"Cmd\\\":[\\\"execute\\\"],\\\"Env\\\":[],\\\"ExposedPorts\\\":{\\\"12345/tcp\\\":{}},\\\"HostConfig\\\":{\\\"Binds\\\":[\\\"/a/b:/a/b:rw\\\"],\\\"LogConfig\\\":{\\\"Config\\\":{\\\"max-file\\\":\\\"10\\\",\\\"max-size\\\":\\\"10m\\\"},\\\"Type\\\":\\\"json-file\\\"},\\\"Memory\\\":0,\\\"NetworkMode\\\":\\\"host\\\",\\\"ReadonlyRootfs\\\":false,\\\"RestartPolicy\\\":{\\\"MaximumRetryCount\\\":null,\\\"Name\\\":\\\"always\\\"}},\\\"Image\\\":\\\"my_container:1.0\\\",\\\"NetworkDisabled\\\":false,\\\"OpenStdin\\\":false,\\\"StdinOnce\\\":false,\\\"Tty\\\":false,\\\"Volumes\\\":{}} \\n\\n```\\n\\n\\n\\nFixes #19103\", \n    \"title\": \"Fixes #19103 - Set Volumes field only for anonymous volumes\"\n  }, \n  \"19106\": {\n    \"ansible_version\": \"1.7.2\", \n    \"body\": \"_From @abergman on November 15, 2014 15:49_\\n\\nIssue type: Bug report\\nAnsible version: 1.7.2\\n\\nComponent Name:\\nvsphere_guest module\\n\\nSummary:\\nvm_nic option in vsphere_guest does not reconfigure the networks a VM is connected to\\nSteps To Reproduce:\\n\\nHave an existing VM connected to \\\"VM Network\\\".\\nRun an ansible-playbook which reconfigures the VM to connect it to VM Network 2.\\n\\nExpected Results:\\n\\nThe VM should be connected to VM Network 2.\\n\\nActual Results:\\n\\nThe VM is still connected to VM Network. Modifications to CPU/memory seem to work, but I am unable to use the vsphere_guest module to reconfigure a VM's networking.\\n\\nThoughts:\\n\\nIt looks like the entire code for adding a NIC to an existing VM is missing in vm_reconfigure, line 491.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#335_\", \n    \"component_name\": \"vsphere_guest\", \n    \"component_raw\": \":\\nvsphere_guest module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19106\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_1.7\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\", \n    \"summary\": \":\\nvm_nic option in vsphere_guest does not reconfigure the networks a VM is connected to\", \n    \"title\": \"vpshere_guest: vm_nic options is not applied on reconfigure\"\n  }, \n  \"19107\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"_From @ganeshnalawade on November 26, 2016 18:46_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\njunos_config\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nmac os\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\n\\r\\n-->\\r\\nEnsure interface ge-0/0/2 is not configured on device. Run below playbook.\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n  tasks:\\r\\n    - name: Config Using Core Module\\r\\n      junos_config:\\r\\n        host: \\\"{{ inventory_hostname }}\\\"\\r\\n        username: \\\"xxx\\\"\\r\\n        password: \\\"xxx\\\"\\r\\n        lines:\\r\\n          - delete interfaces ge-0/0/2\\r\\n          - set interfaces ge-0/0/2 unit 0 description lsn-mc1002\\r\\n      register: response1\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nAnsible run should log a warning message \\\"warning: statement not found\\\"\\r\\nand continue to execute. \\r\\nSimilar to load command on device\\r\\n```\\r\\n%cat configuration.txt\\r\\ndelete interface ge-0/0/2\\r\\nset interfaces ge-0/0/2 description test\\r\\n```\\r\\n```\\r\\nroot@junos#load set configuration.txt\\r\\nwarning: statement not found\\r\\nload complete\\r\\n\\r\\nroot@junos#commit\\r\\n\\r\\nroot@junos#show interfaces ge-0/0/2\\r\\nunit 0 {\\r\\n    description test\\r\\n}\\r\\n```\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nAnsible playbook fails with error message\\r\\n\\\"msg\\\": \\\"Unable to load config: ConfigLoadError(severity: warning, bad_element: None, message: warning: statement not found)\\\"\\r\\n```\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5738_\", \n    \"component_name\": \"junos_config\", \n    \"component_raw\": \"junos_config\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19107\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/junos/junos_config.py\", \n    \"summary\": \"\", \n    \"title\": \"junos_config module fails if config statement not found on device \"\n  }, \n  \"19108\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @msanabria on December 9, 2016 3:48_\\n\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\njunos_netconf\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\ndefault\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n- Control node: \\r\\n  Fedora release 25 (Twenty Five)\\r\\n- Managed node: \\r\\n  Juniper ex2200-c-12t-2g\\r\\n  JUNOS Base OS boot [12.3R12.4]\\r\\n  JUNOS Base OS Software Suite [12.3R12.4]\\r\\n  JUNOS Kernel Software Suite [12.3R12.4]\\r\\n  JUNOS Crypto Software Suite [12.3R12.4]\\r\\n  JUNOS Online Documentation [12.3R12.4]\\r\\n  JUNOS Enterprise Software Suite [12.3R12.4]\\r\\n  JUNOS Packet Forwarding Engine Enterprise Software Suite [12.3R12.4]\\r\\n  JUNOS Routing Software Suite [12.3R12.4]\\r\\n  JUNOS Web Management [12.3R12.4]\\r\\n  JUNOS FIPS mode utilities [12.3R12.4]\\r\\n\\r\\n##### SUMMARY\\r\\nModule returns error msg: \\\"failed to connect to host.example.com:22\\\" when running junos_netconf module with the ssh_keyfile option if the ssh key is protected by a passphrase. Works without a passphrase or when using username/password authentication.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n1. Generate ssh keypair for user with a passphrase\\r\\n2. Configure ssh access to Juniper switch using ssh key for user.\\r\\n3. Confirm ssh access to switch from control node.\\r\\n4. Run example ansible command listed below.\\r\\n5. Note how module failed with above error.\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\nansible all -i localhost, -m junos_netconf -a 'host=host.example.com state=present username=user ssh_keyfile=/home/user/.ssh/id_rsa transport=cli' -c local -vvvv\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nExpected module to execute check successfully with a changed status of true or false.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nModule failed with error.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nUsing /etc/ansible/ansible.cfg as config file\\r\\nSet default localhost to localhost\\r\\nLoading callback plugin minimal of type stdout, v2.0 from /usr/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/core/network/junos/junos_netconf.py\\r\\n<localhost> ESTABLISH LOCAL CONNECTION FOR USER: user\\r\\n<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1481254838.79-143601608977538 `\\\" && echo ansible-tmp-1481254838.79-143601608977538=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1481254838.79-143601608977538 `\\\" ) && sleep 0'\\r\\n<localhost> PUT /tmp/tmpFXh0og TO /home/user/.ansible/tmp/ansible-tmp-1481254838.79-143601608977538/junos_netconf.py\\r\\n<localhost> EXEC /bin/sh -c 'chmod u+x /home/user/.ansible/tmp/ansible-tmp-1481254838.79-143601608977538/ /home/user/.ansible/tmp/ansible-tmp-1481254838.79-143601608977538/junos_netconf.py && sleep 0'\\r\\n<localhost> EXEC /bin/sh -c '/usr/bin/python /home/user/.ansible/tmp/ansible-tmp-1481254838.79-143601608977538/junos_netconf.py; rm -rf \\\"/home/user/.ansible/tmp/ansible-tmp-1481254838.79-143601608977538/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nlocalhost | FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"auth_pass\\\": null, \\r\\n            \\\"authorize\\\": false, \\r\\n            \\\"host\\\": \\\"host.example.com\\\", \\r\\n            \\\"netconf_port\\\": 830, \\r\\n            \\\"password\\\": null, \\r\\n            \\\"port\\\": null, \\r\\n            \\\"provider\\\": null, \\r\\n            \\\"ssh_keyfile\\\": \\\"/home/user/.ssh/id_rsa\\\", \\r\\n            \\\"state\\\": \\\"present\\\", \\r\\n            \\\"timeout\\\": 10, \\r\\n            \\\"transport\\\": \\\"cli\\\", \\r\\n            \\\"username\\\": \\\"user\\\"\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"junos_netconf\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"failed to connect to host.example.com:22\\\"\\r\\n}\\r\\n```\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5866_\", \n    \"component_name\": \"junos_netconf\", \n    \"component_raw\": \"junos_netconf\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19108\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/junos/junos_netconf.py\", \n    \"summary\": \"Module returns error msg: \\\"failed to connect to host.example.com:22\\\" when running junos_netconf module with the ssh_keyfile option if the ssh key is protected by a passphrase. Works without a passphrase or when using username/password authentication.\", \n    \"title\": \"module junos_netconf fails when ssh key has a passphrase\"\n  }, \n  \"19113\": {\n    \"ansible_version\": \"ansible 2.0.0.0\", \n    \"body\": \"##### ISSUE TYPE\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\ncloud/openstack/os_server_metadata.py\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.0.0.0\\n```\\n##### SUMMARY\\n\\nThis change adds a new OpenStack module to allow the update of the metadata on compute instances.\\n\\nWithout this module, the only way to change the metadata of a compute instance on OpenStack is during creation using the `os_server` ansible module. This implies that we can no longer update the metadata of a running instance.\\n\\nThis module depends on a feature currently PR'ed on [OpenStack shade repo](https://review.openstack.org/#/c/319395)\\n\", \n    \"component_name\": \"cloud/openstack/os_server_metadata.py\", \n    \"component_raw\": \"cloud/openstack/os_server_metadata.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19113\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_server_metadata.py\", \n    \"summary\": \"This change adds a new OpenStack module to allow the update of the metadata on compute instances.\\n\\nWithout this module, the only way to change the metadata of a compute instance on OpenStack is during creation using the `os_server` ansible module. This implies that we can no longer update the metadata of a running instance.\\n\\nThis module depends on a feature currently PR'ed on [OpenStack shade repo](https://review.openstack.org/#/c/319395)\", \n    \"title\": \"Add new OpenStack module for changing metadata of compute instances\"\n  }, \n  \"19114\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 14a2757116) last updated 2016/12/05 200834 (GMT -400)\\nlib/ansible/modules/core (detached HEAD 6890003c4f) last updated 2016/12/05 200836 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD 20ea46642b) last updated 2016/12/05 200837 (GMT -400)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @oucil on December 7, 2016 21:1_\\n\\n##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nroute53_zone\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel 14a2757116) last updated 2016/12/05 20:08:34 (GMT -400)\\r\\n  lib/ansible/modules/core: (detached HEAD 6890003c4f) last updated 2016/12/05 20:08:36 (GMT -400)\\r\\n  lib/ansible/modules/extras: (detached HEAD 20ea46642b) last updated 2016/12/05 20:08:37 (GMT -400)\\r\\n  config file = ***\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nWe keep our ansible machine in a totally separate VPC (\\\"mgmt\\\") from the Production VPC (\\\"prod\\\") that it manages so that we can bring up or pull down development deployments (\\\"dev\\\") without touching the production deployment.  \\r\\n\\r\\nOur playbook creates a new private zone in route53 for the new \\\"dev\\\" deployment, and includes the `vpc_id`, however, in order for ansible to have access to work with any of the instances we bring up in the new \\\"dev\\\" VPC, we need to ALSO attach the \\\"mgmt\\\" VPC to the Route53 zone so it can use the new hostnames.  We need to be able to specify more than one `vpc_id` for the zone to be attached to.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```\\r\\n- name: Create Route53 Private Zone\\r\\n    route53_zone:\\r\\n      region: \\\"{{ aws.region }}\\\"\\r\\n      aws_access_key: \\\"{{ aws.access_key }}\\\"\\r\\n      aws_secret_key: \\\"{{ aws.secret_key }}\\\"\\r\\n      state: present\\r\\n      zone: \\\"{{ aws.route53_zone_internal }}\\\"\\r\\n      comment: \\\"Dev internal DNS\\\"\\r\\n      # support list for input of vpc_id...\\r\\n      vpc_id: [\\\"{{ dev_vpc.vpc.id  }}\\\",\\\"{{ aws.admin_vpc_id }}\\\"]\\r\\n      vpc_region: \\\"{{ dev_vpc.vpc.region  }}\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nCreation of a new Route 53 Zone, with 2 VPC ID's attached.\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5860_\", \n    \"component_name\": \"route53_zone\", \n    \"component_raw\": \"route53_zone\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19114\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/route53_zone.py\", \n    \"summary\": \"We keep our ansible machine in a totally separate VPC (\\\"mgmt\\\") from the Production VPC (\\\"prod\\\") that it manages so that we can bring up or pull down development deployments (\\\"dev\\\") without touching the production deployment.  \\n\\n\\n\\nOur playbook creates a new private zone in route53 for the new \\\"dev\\\" deployment, and includes the `vpc_id`, however, in order for ansible to have access to work with any of the instances we bring up in the new \\\"dev\\\" VPC, we need to ALSO attach the \\\"mgmt\\\" VPC to the Route53 zone so it can use the new hostnames.  We need to be able to specify more than one `vpc_id` for the zone to be attached to.\", \n    \"title\": \"Support multiple vpc_id's when creating zone with route53_zone\"\n  }, \n  \"19115\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nTags are ignored on plays that are included that use with_items\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nConditional Include\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nRHEL 7\\r\\n\\r\\n##### SUMMARY\\r\\nTAGS are ignored when including a playbook that uses with_items\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nrun ansible-playbook tagtest.yml --tags dev\\r\\n\\r\\ntagtest.yml\\r\\n```\\r\\n- hosts: localhost\\r\\n  tags:\\r\\n    - prod\\r\\n  tasks:\\r\\n    - set_fact:\\r\\n        taskname: \\\"foo\\\"\\r\\n\\r\\n    - include: tasks/{{taskname}}{{item}}.yml\\r\\n      with_items: \\\"bar\\\"\\r\\n\\r\\n    - debug: msg=\\\"hello prod tags\\\"\\r\\n\\r\\n- hosts: localhost\\r\\n  tags:\\r\\n    - dev\\r\\n  tasks:\\r\\n    - debug: msg=\\\"hello dev tags\\\"\\r\\n\\r\\n```\\r\\ntasks/foobar.yml\\r\\n```\\r\\n- debug: msg=\\\"I ran foobar\\\"\\r\\n\\r\\n```\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nExpectation is that the first play on localhost with tags Prod would have been ignored and only \\\"hello dev tags\\\" would have been outputted.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nThe play attempted to run the include task and failed because it did NOT include the first set_fact and taskname was coming through as undefined.  In prior version of ansible the complete host section would be skipped when tags were used in this fashion.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [include] *****************************************************************\\r\\nfatal: [localhost]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"'taskname' is undefined\\\"}\\r\\n        to retry, use: --limit @/opt/jml/appstack/ansible/testtag.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=1\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"conditional include\", \n    \"component_raw\": \"Conditional Include\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19115\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"TAGS are ignored when including a playbook that uses with_items\", \n    \"title\": \"Tags are ignored on plays that are included that use with_items\"\n  }, \n  \"19116\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /Users/rabe/Documents/Projects/IoT/Design/Devel/Env-Setup/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @ralfbergs on August 12, 2016 20:44_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\nec2_elb_lb\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n  config file = /Users/rabe/Documents/Projects/IoT/Design/Devel/Env-Setup/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nChanged the scheme from `internal` to `internet-facing`, and Ansible didn't detect that it had to change the state, i. e. perform some work.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\nOriginally had the following:\\n\\n```\\n    - name: Create Elastic Load Balancer for frontend\\n      ec2_elb_lb:\\n        name: \\\"{{ owner }}-elb-{{ env }}-fe\\\"\\n        region: \\\"{{ region }}\\\"\\n        subnets:\\n          - \\\"{{ mgmt_subnet_fe_1 }}\\\"\\n          - \\\"{{ mgmt_subnet_fe_2 }}\\\"\\n        state: present\\n        scheme: internal\\n        cross_az_load_balancing: yes\\n        listeners:\\n          - protocol: http\\n            instance_protocol: http\\n            load_balancer_port: 80\\n            instance_port: 80\\n        health_check:\\n          ping_protocol: http # options are http, https, ssl, tcp\\n          ping_port: 80\\n          ping_path: \\\"/index.html\\\" # not required for tcp or ssl\\n          response_timeout: 5 # seconds\\n          interval: 30 # seconds\\n          unhealthy_threshold: 2\\n          healthy_threshold: 10\\n        instance_ids:\\n          - \\\"{{ mgmt_i_fe_1.tagged_instances[0].id }}\\\"\\n          - \\\"{{ mgmt_i_fe_2.tagged_instances[0].id }}\\\"\\n        tags:\\n          Name: \\\"{{ owner }}_elb_{{ env }}_fe\\\"\\n          Env: \\\"{{ owner }}_{{ env }}\\\"\\n          Tier: \\\"{{ owner }}_{{ env }}_frontend\\\"\\n```\\n\\nChanged the above \\\"scheme\\\" line as follows:\\n\\n```\\n        scheme: internet-facing\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\nI expected that Ansible noticed it had to change the ELB config.\\n##### ACTUAL RESULTS\\n\\nAnsible did _not_ notice it got work to do. I had to manually remove the ELB and re-run the playbook.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#4414_\", \n    \"component_name\": \"ec2_elb_lb\", \n    \"component_raw\": \"ec2_elb_lb\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19116\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\", \n    \"summary\": \"Changed the scheme from `internal` to `internet-facing`, and Ansible didn't detect that it had to change the state, i. e. perform some work.\", \n    \"title\": \"ec2_elb_lb: Ansible didn't detect \\\"scheme\\\" change\"\n  }, \n  \"19117\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @ralfbergs on August 15, 2016 18:22_\\n\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\nec2_group\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n  config file =\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n##### SUMMARY\\n\\n`ec2_group` requires `description` parameter to be specified to delete a security group.\\n\\nThis doesn't make sense, IMHO, and it seems to contradict to [what Boto requires](http://boto.cloudhackers.com/en/latest/ref/ec2.html#boto.ec2.connection.EC2Connection.delete_security_group).\\n##### STEPS TO REPRODUCE\\n\\nTried to execute the following task:\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n    - name: \\\"Destroy Security Group for FE trusted ELB\\\"\\n      ec2_group:\\n        state: absent\\n        region: \\\"{{ region }}\\\"\\n        name: \\\"{{ owner }}_sg_{{ env }}_fe_elb_trst\\\"\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\nExpected that the above task would execute without error.\\n##### ACTUAL RESULTS\\n\\nThe above task raised an error:\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nmissing required arguments: description\\n```\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#4427_\", \n    \"component_name\": \"ec2_group\", \n    \"component_raw\": \"ec2_group\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19117\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_group.py\", \n    \"summary\": \"`ec2_group` requires `description` parameter to be specified to delete a security group.\\n\\nThis doesn't make sense, IMHO, and it seems to contradict to [what Boto requires](http://boto.cloudhackers.com/en/latest/ref/ec2.html#boto.ec2.connection.EC2Connection.delete_security_group).\", \n    \"title\": \"ec2_group requires \\\"description\\\" to delete SG\"\n  }, \n  \"19118\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @ralfbergs on August 15, 2016 19:39_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nec2_vpc\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n  config file =\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n##### SUMMARY\\n\\nAccording to [the doc](https://docs.ansible.com/ansible/ec2_vpc_module.html) you don't have to specify the `resource_tags` parameter when deleting a VPC.\\n\\nHowever, this module barfs when this parameter is missing.\\n##### STEPS TO REPRODUCE\\n\\nThis is my task:\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n    - name: \\\"Destroy PREPROD VPC\\\"\\n      ec2_vpc:\\n        region: \\\"{{ region }}\\\"\\n        state: absent\\n        vpc_id: \\\"{{ preprod_vpc.vpcs[0].id }}\\\"\\n          Name: \\\"{{ owner }}_vpc_{{ env }}\\\"\\n          Env: \\\"{{ owner }}_{{ env }}\\\"\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\nI expected that the task would be executed successfully.\\n##### ACTUAL RESULTS\\n\\n`ec2_vpc` complained as follows:\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nmissing required arguments: resource_tags\\n```\\n\\nAfter I added the parameter the call was successful.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#4429_\", \n    \"component_name\": \"ec2_vpc\", \n    \"component_raw\": \"ec2_vpc\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19118\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n    \"summary\": \"According to [the doc](https://docs.ansible.com/ansible/ec2_vpc_module.html) you don't have to specify the `resource_tags` parameter when deleting a VPC.\\n\\nHowever, this module barfs when this parameter is missing.\", \n    \"title\": \"ec2_vpc: Must specify resource_tags when deleting(!) VPC\"\n  }, \n  \"19119\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @ralfbergs on August 17, 2016 13:59_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\nec2\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n  config file =\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n##### SUMMARY\\n\\nAnsible doesn't accept a list of security groups when launching an instance, while it's [documented](https://docs.ansible.com/ansible/ec2_module.html) that it does: \\\"security group id (or list of ids) to use with the instance\\\"\\n##### STEPS TO REPRODUCE\\n\\nExecute the following task:\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n    - name: \\\"Launch proxy instance: {{ owner }}_i_{{ env }}_dmz_2\\\"\\n      ec2:\\n        region: \\\"{{ region }}\\\"\\n        image: \\\"{{ ami_id }}\\\"\\n        count_tag:\\n          Name: \\\"{{ owner }}_i_{{ env }}_dmz_2\\\"\\n        exact_count: 1\\n        #wait: yes\\n        instance_type: \\\"t2.micro\\\"\\n        key_name: \\\"{{ ssh_key_name}}\\\"\\n        # TODO\\n        group_id:\\n          - \\\"{{ preprod_sg_ssh.group_id }}\\\"\\n          - \\\"{{ preprod_sg_proxy.group_id }}\\\"\\n        vpc_subnet_id: \\\"{{ preprod_subnet_dmz_2 }}\\\"\\n        zone: \\\"{{ az2 }}\\\"\\n        instance_tags:\\n          Name: \\\"{{ owner }}_i_{{ env }}_dmz_2\\\"\\n          Env: \\\"{{ owner }}_{{ env }}\\\"\\n          Tier: \\\"{{ owner }}_{{ env }}_dmz\\\"\\n      register: preprod_i_dmz_2 # preprod_i_dmz_2.tagged_instances[0].id\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\nExpected that the two SGs specified would be assigned to the instance.\\n##### ACTUAL RESULTS\\n\\nNone of the two SGs were assigned to the instance. The instance had the default SG assigned.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#4451_\", \n    \"component_name\": \"ec2\", \n    \"component_raw\": \"ec2\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19119\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2.py\", \n    \"summary\": \"Ansible doesn't accept a list of security groups when launching an instance, while it's [documented](https://docs.ansible.com/ansible/ec2_module.html) that it does: \\\"security group id (or list of ids) to use with the instance\\\"\", \n    \"title\": \"ec2: group_id doesn't seem to accept a list of security groups as documented\"\n  }, \n  \"19120\": {\n    \"ansible_version\": \"Any Ansible version\", \n    \"body\": \"_From @ralfbergs on October 14, 2016 7:54_\\n\\n##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nec2_vpc\\n(Applies to _any_ AWS module!)\\n##### ANSIBLE VERSION\\n\\nAny Ansible version\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nIt seems that Ansible (or \\\"Boto\\\" at the bottom layer) doesn't account for Query API Request Rate throttling Amazon enforces.\\n\\nIf you do frequent AWS API calls (like I do at the moment, as I frequently create and destroy a very complex environment consisting of many components, because this environment is still in development) this throttling can kick in, give a negative reply to your Ansible task, and the Playbook aborts at that point.\\n\\nCountermeasures:\\n- [API retries](https://docs.aws.amazon.com/general/latest/gr/api-retries.html)\\n- [Backoff background info](https://www.awsarchitectureblog.com/2015/03/backoff.html)\\n- [Retry throttling](https://aws.amazon.com/blogs/developer/introducing-retry-throttling/)\\n##### STEPS TO REPRODUCE\\n\\nRun a Playbook that does many API calls, like create a VPC, many subnets inside the VPC, Security Groups, ELBs, Internet Gateways, NAT Gateways, Route Tables, EC2 instances, etc. Then destroy them with your \\\"destroy\\\" Playbook. Re-run \\\"create\\\" Playbook. Destroy. Then you're likely to see this rate limiting.\\n##### EXPECTED RESULTS\\n\\nAWS modules should not fail when the rate limiting is in effect, but should retry until the call succeeds.\\n##### ACTUAL RESULTS\\n\\nAWS modules fail when the rate limiting is in effect. This manifests as follows:\\n\\n```\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"An error occurred (RequestLimitExceeded) when calling the DescribeAddresses operation: Request limit exceeded.\\\", \\\"success\\\": false}\\n```\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5267_\", \n    \"component_name\": \"ec2_vpc\", \n    \"component_raw\": \"ec2_vpc\\n(Applies to _any_ AWS module!)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19120\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n    \"summary\": \"It seems that Ansible (or \\\"Boto\\\" at the bottom layer) doesn't account for Query API Request Rate throttling Amazon enforces.\\n\\nIf you do frequent AWS API calls (like I do at the moment, as I frequently create and destroy a very complex environment consisting of many components, because this environment is still in development) this throttling can kick in, give a negative reply to your Ansible task, and the Playbook aborts at that point.\\n\\nCountermeasures:\\n- [API retries](https://docs.aws.amazon.com/general/latest/gr/api-retries.html)\\n- [Backoff background info](https://www.awsarchitectureblog.com/2015/03/backoff.html)\\n- [Retry throttling](https://aws.amazon.com/blogs/developer/introducing-retry-throttling/)\", \n    \"title\": \"AWS modules should account for API throttling\"\n  }, \n  \"19121\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @ralfbergs on October 28, 2016 21:40_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nelasticache\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n  config file =\\n  configured module search path = Default w/o overrides\\n```\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nFrom the AWS Console I can set a \\\"Description\\\" -- via this Ansible module I can't. So I would suggest to add this parameter.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n- name: \\\"mgmt::db Create ElastiCache Redis\\\"\\n  elasticache:\\n    state: present\\n    region: \\\"{{ region }}\\\"\\n    vpc_id: \\\"{{ mgmt_vpc.id }}\\\"\\n    # Name must be <= 20 chars\\n    name: \\\"{{ owner }}-ec-{{ env }}-db-red\\\"\\n    description: \\\"ElastiCache Redis for Sentry\\\"\\n    node_type: \\\"cache.m4.large\\\"\\n    num_nodes: 1 # no replicas\\n    engine: redis\\n    cache_engine_version: \\\"3.2.4\\\"\\n    cache_port: 6379\\n    cache_parameter_group: \\\"default.redis3.2\\\"\\n    cache_subnet_group: \\\"{{ owner }}-sngrp-{{ env }}-db-redis\\\"\\n    security_group_ids:\\n      - \\\"{{ mgmt_sg_redis.group_id }}\\\"\\n  register: mgmt_ec_redis\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\nI expected that the module call would be run without any errors.\\n##### ACTUAL RESULTS\\n\\nGot the following err msg:\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nunsupported parameter for module: description\\n```\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5429_\", \n    \"component_name\": \"elasticache\", \n    \"component_raw\": \"elasticache\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19121\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"aws\", \n      \"cloud\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/elasticache.py\", \n    \"summary\": \"From the AWS Console I can set a \\\"Description\\\" -- via this Ansible module I can't. So I would suggest to add this parameter.\", \n    \"title\": \"elasticache misses \\\"Description\\\" parameter\"\n  }, \n  \"19122\": {\n    \"ansible_version\": \"ansible 2.3.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nlib/ansible/modules/cloud/openstack/os_volume_snapshot.py\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0.0\\r\\n```\\r\\n##### SUMMARY\\r\\n\\r\\nThis change adds a new OpenStack module to allow the creation/deletion of snapshots on cinder volumes.\", \n    \"component_name\": \"lib/ansible/ s/cloud/openstack/os_volume_snapshot.py\", \n    \"component_raw\": \"lib/ansible/modules/cloud/openstack/os_volume_snapshot.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19122\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_volume_snapshot.py\", \n    \"summary\": \"This change adds a new OpenStack module to allow the creation/deletion of snapshots on cinder volumes.\", \n    \"title\": \"Add new OpenStack module for managing cinder volume snapshots\"\n  }, \n  \"19123\": {\n    \"ansible_version\": \"2.1.1.0\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\nmysql_db\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\n2.1.1.0\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nThis adds the ability for a user to specify the `--master-data` switch when dumping a mysql database. This is a rebase of #363 and closes #362.\\n\\nNote that I didn't place the `master_data` parameter last so as to keep this solely a feature addition. #3687 fixes the issue where `single_transaction` and `quick` are not correctly handled. Happy to include the fix here or rebase after #3687 is merged if that is the preferred method of change tracking.\\n\", \n    \"component_name\": \"mysql_db\", \n    \"component_raw\": \"mysql_db\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19123\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/database/mysql/mysql_db.py\", \n    \"summary\": \"This adds the ability for a user to specify the `--master-data` switch when dumping a mysql database. This is a rebase of #363 and closes #362.\\n\\nNote that I didn't place the `master_data` parameter last so as to keep this solely a feature addition. #3687 fixes the issue where `single_transaction` and `quick` are not correctly handled. Happy to include the fix here or rebase after #3687 is merged if that is the preferred method of change tracking.\", \n    \"title\": \"Support --master-data in mysql_db dumps\"\n  }, \n  \"19124\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"_From @sdubrul on December 8, 2016 10:49_\\n\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nos_security_group_rule\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nmacOS 10.12.1\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWhen logged in as admin and trying to update the default security group rules for this tenant the command fails as there are multiple security groups that are called default. Security group default is found in the admin and services tenant.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n# clouds.yml\\r\\nclouds:\\r\\n  mycloud:\\r\\n    auth:\\r\\n      auth_url: https://mycloud:5000/v2.0\\r\\n      username: admin\\r\\n      password: password\\r\\n      project_name: admin\\r\\n\\r\\n\\r\\n# task in playbook.yml\\r\\n    - name: update default security group to allow ssh\\r\\n      os_security_group_rule:\\r\\n        cloud: mycloud\\r\\n        security_group: default\\r\\n        protocol: tcp\\r\\n        direction: ingress\\r\\n        remote_ip_prefix: 0.0.0.0/0\\r\\n        port_range_min: 22\\r\\n        port_range_max: 22\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nExpecting the command to update the admin tenant default security group as project name is defined in clouds.yml .\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nTask fails with:\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nfatal: [server]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Multiple matches found for default\\\"}\\r\\n```\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5862_\", \n    \"component_name\": \"os_security_group_rule\", \n    \"component_raw\": \"os_security_group_rule\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19124\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_security_group_rule.py\", \n    \"summary\": \"When logged in as admin and trying to update the default security group rules for this tenant the command fails as there are multiple security groups that are called default. Security group default is found in the admin and services tenant.\", \n    \"title\": \"os_security_group_rule is unable to add a rule in default security group\"\n  }, \n  \"19125\": {\n    \"ansible_version\": \"ansible 2.0.1.0\\nconfig file = /home/duncan/dev/agile/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @dflock on June 21, 2016 19:39_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\ngit module\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.0.1.0\\n  config file = /home/duncan/dev/agile/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nI would like to set extra git options, but still use the ansible `git` module, rather than having to use `shell/command` instead.\\n##### STEPS TO REPRODUCE\\n\\nSpecifically, I would like to be able to add a proxy config to a particular git clone. This could work in the same way as the `pip` module - for example:\\n\\n``` yaml\\n- name: Cloning repo\\n  git:\\n    repo: {{ git_repo }}\\n    version: 'dev'\\n    dest: {{ repo_dir }}\\n    extra_args: '--config \\\"http.proxy=proxyHost:proxyPort\\\"'\\n```\\n\\nbut there are lots of other arguments that one might want to pass.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#4002_\", \n    \"component_name\": \"git\", \n    \"component_raw\": \"git module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19125\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/source_control/git.py\", \n    \"summary\": \"I would like to set extra git options, but still use the ansible `git` module, rather than having to use `shell/command` instead.\", \n    \"title\": \"git: Add an extra_args option to the git module.\"\n  }, \n  \"19126\": {\n    \"ansible_version\": \"ansible 2.3.0 (sysctl-ignoremissning-with-sysctl_set adecec3639) last updated 2016/12/09 224616 (GMT +200)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nsysctl module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (sysctl-ignoremissning-with-sysctl_set adecec3639) last updated 2016/12/09 22:46:16 (GMT +200)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThis is a follow up to the issue https://github.com/ansible/ansible-modules-core/issues/3401. Basically if you use `sysctl_set: yes` and `ignoreerrors: yes` together, and if the key is missing, `sysctl` module doesn't ignore errors and it fails. This pull request fixes that.\\r\\n\\r\\nYou can try how it works with the following task which uses a random key which doesn't exist:\\r\\n```yml\\r\\n - sysctl:\\r\\n      name: random.key.that.doesnt.exist\\r\\n      value: 1\\r\\n      sysctl_set: yes\\r\\n      ignoreerrors: yes\\r\\n```\\r\\n\", \n    \"component_name\": \"sysctl\", \n    \"component_raw\": \"sysctl module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19126\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"core_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/sysctl.py\", \n    \"summary\": \"This is a follow up to the issue https://github.com/ansible/ansible-modules-core/issues/3401. Basically if you use `sysctl_set: yes` and `ignoreerrors: yes` together, and if the key is missing, `sysctl` module doesn't ignore errors and it fails. This pull request fixes that.\\n\\n\\n\\nYou can try how it works with the following task which uses a random key which doesn't exist:\\n\\n```yml\\n\\n - sysctl:\\n\\n      name: random.key.that.doesnt.exist\\n\\n      value: 1\\n\\n      sysctl_set: yes\\n\\n      ignoreerrors: yes\\n\\n```\", \n    \"title\": \"sysctl: fixes ignoreerrors not working with sysctl_set\"\n  }, \n  \"19128\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /Users/coaxial/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`apt_module`, and `apt` command via the `raw_module`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /Users/coaxial/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n```\\r\\n[defaults]\\r\\nremote_user = ansible\\r\\nbecome_ask_pass = True\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nRunning on OS X 10.11.6, target host is a `minimal/xenial64` box in Vagrant, ansible run via Vagrant's ansible provisioner.\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nThe apt module seems to think it failed, when it looks like it succeeded. It happens randomly, andI don't know how to reproduce. I also had this issue happen with my bootstrap python task (see below).\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nRun the tasks, and they will randomly fail, maybe once every 20 runs in my case.\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n---\\r\\n- name: bootstrap python2\\r\\n  raw: test -e /usr/bin/python || (apt -qqy update && apt install -qy python-minimal)\\r\\n  # this task sometimes fails for no reason\\r\\n  # note to issue readers: I added the options below as a workaround for the task failing, but it's a kludge\\r\\n  delay: 1\\r\\n  ignore_errors: yes\\r\\n  register: task_result\\r\\n  retries: 5\\r\\n  until: task_result.rc == 0\\r\\n```\\r\\n\\r\\n```\\r\\n---\\r\\n- name: install essential packages\\r\\n  apt:\\r\\n    cache_valid_time: \\\"{{ apt_cache_expire_seconds }}\\\"\\r\\n    name: \\\"{{ item }}\\\"\\r\\n    state: present\\r\\n  with_items:\\r\\n    - fail2ban\\r\\n    - htop\\r\\n    - mosh\\r\\n    - tmux\\r\\n    - tree\\r\\n    - vim\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nEither the tasks to run without failures, or to fail with an actual failure.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nThe playbook run fails with the output below. I can't see any actual error in this output, it looks like a successful `apt` run.\\r\\n\\r\\nIf I ssh into the box, the packages are installed, configured, and running just fine. If I then try to install any other package with `apt install foo` while sshed into the box, it installs fine too.\\r\\n\\r\\nIf I `vagrant destroy -f && vagrant up` again, the playbook usually runs fine.\\r\\n\\r\\n```\\r\\nfailed: [default] (item=[u'fail2ban', u'htop', u'mosh', u'tmux', u'tree',\\r\\nu'vim']) => {\\\"cache_update_time\\\": 1481141752, \\\"cache_updated\\\": false, \\\"failed\\\":\\r\\ntrue, \\\"item\\\": [\\\"fail2ban\\\", \\\"htop\\\", \\\"mosh\\\", \\\"tmux\\\", \\\"tree\\\", \\\"vim\\\"], \\\"msg\\\":\\r\\n\\\"'/usr/bin/apt-get -y -o \\\\\\\"Dpkg::Options::=--force-confdef\\\\\\\" -o\\r\\n\\\\\\\"Dpkg::Options::=--force-confold\\\\\\\"     install 'fail2ban' 'htop' 'mosh' 'tmux'\\r\\n'tree'' failed: \\\", \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"Reading package lists...\\\\nBuilding\\r\\ndependency tree...\\\\nReading state information...\\\\nThe following additional\\r\\npackages will be installed:\\\\n  iptables libevent-2.0-5 libnfnetlink0\\r\\nlibprotobuf9v5 libutempter0\\\\n  libxtables11 python3-pyinotify python3-systemd\\r\\nwhois\\\\nSuggested packages:\\\\n  mailx monit strace python-pyinotify-doc\\\\nThe\\r\\nfollowing NEW packages will be installed:\\\\n  fail2ban htop iptables\\r\\nlibevent-2.0-5 libnfnetlink0 libprotobuf9v5\\\\n  libutempter0 libxtables11 mosh\\r\\npython3-pyinotify python3-systemd tmux tree\\\\n  whois\\\\n0 upgraded, 14 newly\\r\\ninstalled, 0 to remove and 2 not upgraded.\\\\nNeed to get 1612 kB of\\r\\narchives.\\\\nAfter this operation, 6791 kB of additional disk space will be\\r\\nused.\\\\nGet:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libnfnetlink0\\r\\namd64 1.0.1-3 [13.3 kB]\\\\nGet:2 http://archive.ubuntu.com/ubuntu xenial/main\\r\\namd64 libevent-2.0-5 amd64 2.0.21-stable-2 [113 kB]\\\\nGet:3\\r\\nhttp://archive.ubuntu.com/ubuntu xenial/main amd64 libprotobuf9v5 amd64\\r\\n2.6.1-1.3 [326 kB]\\\\nGet:4 http://archive.ubuntu.com/ubuntu xenial/main amd64\\r\\nlibutempter0 amd64 1.1.6-3 [7898 B]\\\\nGet:5 http://archive.ubuntu.com/ubuntu\\r\\nxenial/universe amd64 mosh amd64 1.2.5-2 [201 kB]\\\\nGet:6\\r\\nhttp://archive.ubuntu.com/ubuntu xenial/main amd64 libxtables11 amd64\\r\\n1.6.0-2ubuntu3 [27.2 kB]\\\\nGet:7 http://archive.ubuntu.com/ubuntu xenial/main\\r\\namd64 iptables amd64 1.6.0-2ubuntu3 [266 kB]\\\\nGet:8\\r\\nhttp://archive.ubuntu.com/ubuntu xenial/universe amd64 fail2ban all 0.9.3-1\\r\\n[227 kB]\\\\nGet:9 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64\\r\\nhtop amd64 2.0.1-1ubuntu1 [76.4 kB]\\\\nGet:10 http://archive.ubuntu.com/ubuntu\\r\\nxenial/main amd64 python3-pyinotify all 0.9.6-0fakesync1 [24.7 kB]\\\\nGet:11\\r\\nhttp://archive.ubuntu.com/ubuntu xenial/main amd64 python3-systemd amd64\\r\\n231-2build1 [31.3 kB]\\\\nGet:12 http://archive.ubuntu.com/ubuntu xenial/main\\r\\namd64 tmux amd64 2.1-3build1 [223 kB]\\\\nGet:13 http://archive.ubuntu.com/ubuntu\\r\\nxenial/universe amd64 tree amd64 1.7.0-3 [40.6 kB]\\\\nGet:14\\r\\nhttp://archive.ubuntu.com/ubuntu xenial/main amd64 whois amd64 5.2.11 [34.0\\r\\nkB]\\\\nFetched 1612 kB in 0s (1831 kB/s)\\\\nSelecting previously unselected package\\r\\nlibnfnetlink0:amd64.\\\\r\\\\n(Reading database ... \\\\r(Reading database ...\\r\\n5%\\\\r(Reading database ... 10%\\\\r(Reading database ... 15%\\\\r(Reading database ...\\r\\n20%\\\\r(Reading database ... 25%\\\\r(Reading database ... 30%\\\\r(Reading database\\r\\n... 35%\\\\r(Reading database ... 40%\\\\r(Reading database ... 45%\\\\r(Reading\\r\\ndatabase ... 50%\\\\r(Reading database ... 55%\\\\r(Reading database ...\\r\\n60%\\\\r(Reading database ... 65%\\\\r(Reading database ... 70%\\\\r(Reading database\\r\\n... 75%\\\\r(Reading database ... 80%\\\\r(Reading database ... 85%\\\\r(Reading\\r\\ndatabase ... 90%\\\\r(Reading database ... 95%\\\\r(Reading database ...\\r\\n100%\\\\r(Reading database ... 19006 files and directories currently\\r\\ninstalled.)\\\\r\\\\nPreparing to unpack .../libnfnetlink0_1.0.1-3_amd64.deb\\r\\n...\\\\r\\\\nUnpacking libnfnetlink0:amd64 (1.0.1-3) ...\\\\r\\\\nSelecting previously\\r\\nunselected package libevent-2.0-5:amd64.\\\\r\\\\nPreparing to unpack\\r\\n.../libevent-2.0-5_2.0.21-stable-2_amd64.deb ...\\\\r\\\\nUnpacking\\r\\nlibevent-2.0-5:amd64 (2.0.21-stable-2) ...\\\\r\\\\nSelecting previously unselected\\r\\npackage libprotobuf9v5:amd64.\\\\r\\\\nPreparing to unpack\\r\\n.../libprotobuf9v5_2.6.1-1.3_amd64.deb ...\\\\r\\\\nUnpacking libprotobuf9v5:amd64\\r\\n(2.6.1-1.3) ...\\\\r\\\\nSelecting previously unselected package\\r\\nlibutempter0:amd64.\\\\r\\\\nPreparing to unpack .../libutempter0_1.1.6-3_amd64.deb\\r\\n...\\\\r\\\\nUnpacking libutempter0:amd64 (1.1.6-3) ...\\\\r\\\\nSelecting previously\\r\\nunselected package mosh.\\\\r\\\\nPreparing to unpack .../mosh_1.2.5-2_amd64.deb\\r\\n...\\\\r\\\\nUnpacking mosh (1.2.5-2) ...\\\\r\\\\nSelecting previously unselected package\\r\\nlibxtables11:amd64.\\\\r\\\\nPreparing to unpack\\r\\n.../libxtables11_1.6.0-2ubuntu3_amd64.deb ...\\\\r\\\\nUnpacking libxtables11:amd64\\r\\n(1.6.0-2ubuntu3) ...\\\\r\\\\nSelecting previously unselected package\\r\\niptables.\\\\r\\\\nPreparing to unpack .../iptables_1.6.0-2ubuntu3_amd64.deb\\r\\n...\\\\r\\\\nUnpacking iptables (1.6.0-2ubuntu3) ...\\\\r\\\\nSelecting previously\\r\\nunselected package fail2ban.\\\\r\\\\nPreparing to unpack\\r\\n.../fail2ban_0.9.3-1_all.deb ...\\\\r\\\\nUnpacking fail2ban (0.9.3-1)\\r\\n...\\\\r\\\\nSelecting previously unselected package htop.\\\\r\\\\nPreparing to unpack\\r\\n.../htop_2.0.1-1ubuntu1_amd64.deb ...\\\\r\\\\nUnpacking htop (2.0.1-1ubuntu1)\\r\\n...\\\\r\\\\nSelecting previously unselected package python3-pyinotify.\\\\r\\\\nPreparing\\r\\nto unpack .../python3-pyinotify_0.9.6-0fakesync1_all.deb ...\\\\r\\\\nUnpacking\\r\\npython3-pyinotify (0.9.6-0fakesync1) ...\\\\r\\\\nSelecting previously unselected\\r\\npackage python3-systemd.\\\\r\\\\nPreparing to unpack\\r\\n.../python3-systemd_231-2build1_amd64.deb ...\\\\r\\\\nUnpacking python3-systemd\\r\\n(231-2build1) ...\\\\r\\\\nSelecting previously unselected package tmux.\\\\r\\\\nPreparing\\r\\nto unpack .../tmux_2.1-3build1_amd64.deb ...\\\\r\\\\nUnpacking tmux (2.1-3build1)\\r\\n...\\\\r\\\\nSelecting previously unselected package tree.\\\\r\\\\nPreparing to unpack\\r\\n.../tree_1.7.0-3_amd64.deb ...\\\\r\\\\nUnpacking tree (1.7.0-3) ...\\\\r\\\\nSelecting\\r\\npreviously unselected package whois.\\\\r\\\\nPreparing to unpack\\r\\n.../whois_5.2.11_amd64.deb ...\\\\r\\\\nUnpacking whois (5.2.11) ...\\\\r\\\\nProcessing\\r\\ntriggers for libc-bin (2.23-0ubuntu4) ...\\\\r\\\\nProcessing triggers for systemd\\r\\n(229-4ubuntu12) ...\\\\r\\\\nProcessing triggers for ureadahead (0.100.0-19)\\r\\n...\\\\r\\\\nProcessing triggers for mime-support (3.59ubuntu1) ...\\\\r\\\\nSetting up\\r\\nlibnfnetlink0:amd64 (1.0.1-3) ...\\\\r\\\\nSetting up libevent-2.0-5:amd64\\r\\n(2.0.21-stable-2) ...\\\\r\\\\nSetting up libprotobuf9v5:amd64 (2.6.1-1.3)\\r\\n...\\\\r\\\\nSetting up libutempter0:amd64 (1.1.6-3) ...\\\\r\\\\nSetting up mosh (1.2.5-2)\\r\\n...\\\\r\\\\nSetting up libxtables11:amd64 (1.6.0-2ubuntu3) ...\\\\r\\\\nSetting up\\r\\niptables (1.6.0-2ubuntu3) ...\\\\r\\\\nSetting up fail2ban (0.9.3-1) ...\\\\r\\\\nSetting\\r\\nup htop (2.0.1-1ubuntu1) ...\\\\r\\\\nSetting up python3-pyinotify (0.9.6-0fakesync1)\\r\\n...\\\\r\\\\nSetting up python3-systemd (231-2build1) ...\\\\r\\\\nSetting up tmux\\r\\n(2.1-3build1) ...\\\\r\\\\nSetting up tree (1.7.0-3) ...\\\\r\\\\nSetting up whois (5.2.11)\\r\\n...\\\\r\\\\nProcessing triggers for libc-bin (2.23-0ubuntu4) ...\\\\r\\\\nProcessing\\r\\ntriggers for systemd (229-4ubuntu12) ...\\\\r\\\\nProcessing triggers for ureadahead\\r\\n(0.100.0-19) ...\\\\r\\\\n\\\", \\\"stdout_lines\\\": [\\\"Reading package lists...\\\", \\\"Building\\r\\ndependency tree...\\\", \\\"Reading state information...\\\", \\\"The following additional\\r\\npackages will be installed:\\\", \\\"  iptables libevent-2.0-5 libnfnetlink0\\r\\nlibprotobuf9v5 libutempter0\\\", \\\"  libxtables11 python3-pyinotify python3-systemd\\r\\nwhois\\\", \\\"Suggested packages:\\\", \\\"  mailx monit strace python-pyinotify-doc\\\",\\r\\n\\\"The following NEW packages will be installed:\\\", \\\"  fail2ban htop iptables\\r\\nlibevent-2.0-5 libnfnetlink0 libprotobuf9v5\\\", \\\"  libutempter0 libxtables11 mosh\\r\\npython3-pyinotify python3-systemd tmux tree\\\", \\\"  whois\\\", \\\"0 upgraded, 14 newly\\r\\ninstalled, 0 to remove and 2 not upgraded.\\\", \\\"Need to get 1612 kB of\\r\\narchives.\\\", \\\"After this operation, 6791 kB of additional disk space will be\\r\\nused.\\\", \\\"Get:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libnfnetlink0\\r\\namd64 1.0.1-3 [13.3 kB]\\\", \\\"Get:2 http://archive.ubuntu.com/ubuntu xenial/main\\r\\namd64 libevent-2.0-5 amd64 2.0.21-stable-2 [113 kB]\\\", \\\"Get:3\\r\\nhttp://archive.ubuntu.com/ubuntu xenial/main amd64 libprotobuf9v5 amd64\\r\\n2.6.1-1.3 [326 kB]\\\", \\\"Get:4 http://archive.ubuntu.com/ubuntu xenial/main amd64\\r\\nlibutempter0 amd64 1.1.6-3 [7898 B]\\\", \\\"Get:5 http://archive.ubuntu.com/ubuntu\\r\\nxenial/universe amd64 mosh amd64 1.2.5-2 [201 kB]\\\", \\\"Get:6\\r\\nhttp://archive.ubuntu.com/ubuntu xenial/main amd64 libxtables11 amd64\\r\\n1.6.0-2ubuntu3 [27.2 kB]\\\", \\\"Get:7 http://archive.ubuntu.com/ubuntu xenial/main\\r\\namd64 iptables amd64 1.6.0-2ubuntu3 [266 kB]\\\", \\\"Get:8\\r\\nhttp://archive.ubuntu.com/ubuntu xenial/universe amd64 fail2ban all 0.9.3-1\\r\\n[227 kB]\\\", \\\"Get:9 http://archive.ubuntu.com/ubuntu xenial-updates/universe\\r\\namd64 htop amd64 2.0.1-1ubuntu1 [76.4 kB]\\\", \\\"Get:10\\r\\nhttp://archive.ubuntu.com/ubuntu xenial/main amd64 python3-pyinotify all\\r\\n0.9.6-0fakesync1 [24.7 kB]\\\", \\\"Get:11 http://archive.ubuntu.com/ubuntu\\r\\nxenial/main amd64 python3-systemd amd64 231-2build1 [31.3 kB]\\\", \\\"Get:12\\r\\nhttp://archive.ubuntu.com/ubuntu xenial/main amd64 tmux amd64 2.1-3build1 [223\\r\\nkB]\\\", \\\"Get:13 http://archive.ubuntu.com/ubuntu xenial/universe amd64 tree amd64\\r\\n1.7.0-3 [40.6 kB]\\\", \\\"Get:14 http://archive.ubuntu.com/ubuntu xenial/main amd64\\r\\nwhois amd64 5.2.11 [34.0 kB]\\\", \\\"Fetched 1612 kB in 0s (1831 kB/s)\\\", \\\"Selecting\\r\\npreviously unselected package libnfnetlink0:amd64.\\\", \\\"(Reading database ... \\\",\\r\\n\\\"(Reading database ... 5%\\\", \\\"(Reading database ... 10%\\\", \\\"(Reading database ...\\r\\n15%\\\", \\\"(Reading database ... 20%\\\", \\\"(Reading database ... 25%\\\", \\\"(Reading\\r\\ndatabase ... 30%\\\", \\\"(Reading database ... 35%\\\", \\\"(Reading database ... 40%\\\",\\r\\n\\\"(Reading database ... 45%\\\", \\\"(Reading database ... 50%\\\", \\\"(Reading database\\r\\n... 55%\\\", \\\"(Reading database ... 60%\\\", \\\"(Reading database ... 65%\\\", \\\"(Reading\\r\\ndatabase ... 70%\\\", \\\"(Reading database ... 75%\\\", \\\"(Reading database ... 80%\\\",\\r\\n\\\"(Reading database ... 85%\\\", \\\"(Reading database ... 90%\\\", \\\"(Reading database\\r\\n... 95%\\\", \\\"(Reading database ... 100%\\\", \\\"(Reading database ... 19006 files and\\r\\ndirectories currently installed.)\\\", \\\"Preparing to unpack\\r\\n.../libnfnetlink0_1.0.1-3_amd64.deb ...\\\", \\\"Unpacking libnfnetlink0:amd64\\r\\n(1.0.1-3) ...\\\", \\\"Selecting previously unselected package\\r\\nlibevent-2.0-5:amd64.\\\", \\\"Preparing to unpack\\r\\n.../libevent-2.0-5_2.0.21-stable-2_amd64.deb ...\\\", \\\"Unpacking\\r\\nlibevent-2.0-5:amd64 (2.0.21-stable-2) ...\\\", \\\"Selecting previously unselected\\r\\npackage libprotobuf9v5:amd64.\\\", \\\"Preparing to unpack\\r\\n.../libprotobuf9v5_2.6.1-1.3_amd64.deb ...\\\", \\\"Unpacking libprotobuf9v5:amd64\\r\\n(2.6.1-1.3) ...\\\", \\\"Selecting previously unselected package\\r\\nlibutempter0:amd64.\\\", \\\"Preparing to unpack .../libutempter0_1.1.6-3_amd64.deb\\r\\n...\\\", \\\"Unpacking libutempter0:amd64 (1.1.6-3) ...\\\", \\\"Selecting previously\\r\\nunselected package mosh.\\\", \\\"Preparing to unpack .../mosh_1.2.5-2_amd64.deb\\r\\n...\\\", \\\"Unpacking mosh (1.2.5-2) ...\\\", \\\"Selecting previously unselected package\\r\\nlibxtables11:amd64.\\\", \\\"Preparing to unpack\\r\\n.../libxtables11_1.6.0-2ubuntu3_amd64.deb ...\\\", \\\"Unpacking libxtables11:amd64\\r\\n(1.6.0-2ubuntu3) ...\\\", \\\"Selecting previously unselected package iptables.\\\",\\r\\n\\\"Preparing to unpack .../iptables_1.6.0-2ubuntu3_amd64.deb ...\\\", \\\"Unpacking\\r\\niptables (1.6.0-2ubuntu3) ...\\\", \\\"Selecting previously unselected package\\r\\nfail2ban.\\\", \\\"Preparing to unpack .../fail2ban_0.9.3-1_all.deb ...\\\", \\\"Unpacking\\r\\nfail2ban (0.9.3-1) ...\\\", \\\"Selecting previously unselected package htop.\\\",\\r\\n\\\"Preparing to unpack .../htop_2.0.1-1ubuntu1_amd64.deb ...\\\", \\\"Unpacking htop\\r\\n(2.0.1-1ubuntu1) ...\\\", \\\"Selecting previously unselected package\\r\\npython3-pyinotify.\\\", \\\"Preparing to unpack\\r\\n.../python3-pyinotify_0.9.6-0fakesync1_all.deb ...\\\", \\\"Unpacking\\r\\npython3-pyinotify (0.9.6-0fakesync1) ...\\\", \\\"Selecting previously unselected\\r\\npackage python3-systemd.\\\", \\\"Preparing to unpack\\r\\n.../python3-systemd_231-2build1_amd64.deb ...\\\", \\\"Unpacking python3-systemd\\r\\n(231-2build1) ...\\\", \\\"Selecting previously unselected package tmux.\\\", \\\"Preparing\\r\\nto unpack .../tmux_2.1-3build1_amd64.deb ...\\\", \\\"Unpacking tmux (2.1-3build1)\\r\\n...\\\", \\\"Selecting previously unselected package tree.\\\", \\\"Preparing to unpack\\r\\n.../tree_1.7.0-3_amd64.deb ...\\\", \\\"Unpacking tree (1.7.0-3) ...\\\", \\\"Selecting\\r\\npreviously unselected package whois.\\\", \\\"Preparing to unpack\\r\\n.../whois_5.2.11_amd64.deb ...\\\", \\\"Unpacking whois (5.2.11) ...\\\", \\\"Processing\\r\\ntriggers for libc-bin (2.23-0ubuntu4) ...\\\", \\\"Processing triggers for systemd\\r\\n(229-4ubuntu12) ...\\\", \\\"Processing triggers for ureadahead (0.100.0-19) ...\\\",\\r\\n\\\"Processing triggers for mime-support (3.59ubuntu1) ...\\\", \\\"Setting up\\r\\nlibnfnetlink0:amd64 (1.0.1-3) ...\\\", \\\"Setting up libevent-2.0-5:amd64\\r\\n(2.0.21-stable-2) ...\\\", \\\"Setting up libprotobuf9v5:amd64 (2.6.1-1.3) ...\\\",\\r\\n\\\"Setting up libutempter0:amd64 (1.1.6-3) ...\\\", \\\"Setting up mosh (1.2.5-2) ...\\\",\\r\\n\\\"Setting up libxtables11:amd64 (1.6.0-2ubuntu3) ...\\\", \\\"Setting up iptables\\r\\n(1.6.0-2ubuntu3) ...\\\", \\\"Setting up fail2ban (0.9.3-1) ...\\\", \\\"Setting up htop\\r\\n(2.0.1-1ubuntu1) ...\\\", \\\"Setting up python3-pyinotify (0.9.6-0fakesync1) ...\\\",\\r\\n\\\"Setting up python3-systemd (231-2build1) ...\\\", \\\"Setting up tmux (2.1-3build1)\\r\\n...\\\", \\\"Setting up tree (1.7.0-3) ...\\\", \\\"Setting up whois (5.2.11) ...\\\",\\r\\n\\\"Processing triggers for libc-bin (2.23-0ubuntu4) ...\\\", \\\"Processing triggers\\r\\nfor systemd (229-4ubuntu12) ...\\\", \\\"Processing triggers for ureadahead\\r\\n(0.100.0-19) ...\\\"]}\\r\\n```\", \n    \"component_name\": \"apt_module\", \n    \"component_raw\": \"`apt_module`, and `apt` command via the `raw_module`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19128\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/commands/raw.py\", \n    \"summary\": \"The apt module seems to think it failed, when it looks like it succeeded. It happens randomly, andI don't know how to reproduce. I also had this issue happen with my bootstrap python task (see below).\", \n    \"title\": \"Ansible randomly thinks apt command failed (either via the apt or the raw modules)\"\n  }, \n  \"19131\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\npip\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\nNo changes.\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nDebian GNU/Linux testing (stretch)\\r\\n\\r\\n##### SUMMARY\\r\\nWith the new support for list of names in 2.2, listing pip-supported setuptools \\\"extras\\\" is broken. \\\"extras\\\" are optional package features. See example 6 in [pip examples](https://pip.pypa.io/en/stable/reference/pip_install/#examples) and [Declaring \\u201cExtras\\u201d (optional features with their own dependencies)](https://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-extras-optional-features-with-their-own-dependencies) in setuptools documentation for more information on \\\"extras\\\".\\r\\n\\r\\nMoved from https://github.com/ansible/ansible-modules-core/issues/5843.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n- hosts: localhost\\r\\n  tasks:\\r\\n    - pip: name=buildbot[bundle,tls] version=0.9.1\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nbuildbot==0.9.1 is installed with the bundle and tls extras/options. This works with pre-2.2 versions of Ansible.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\nThe comma separating the extras is instead interpreted as separating multiple python packages for pip to install: `Invalid requirement: 'buildbot[bundle==0.9.1`.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [pip] *********************************************************************\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"cmd\\\": \\\"/usr/bin/pip2 install buildbot[bundle==0.9.1 tls]==0.9.1\\\", \\\"failed\\\": true, \\\"msg\\\": \\\"\\\\n:stderr: Invalid requirement: 'buildbot[bundle==0.9.1'\\\\nTraceback (most recent call last):\\\\n  File \\\\\\\"/usr/lib/python2.7/dist-packages/pip/req/req_install.py\\\\\\\", line 82, in __init__\\\\n    req = Requirement(req)\\\\n  File \\\\\\\"/usr/share/python-wheels/packaging-16.8-py2.py3-none-any.whl/packaging/requirements.py\\\\\\\", line 94, in __init__\\\\n    requirement_string[e.loc:e.loc + 8]))\\\\nInvalidRequirement: Invalid requirement, parse error at \\\\\\\"'[bundle='\\\\\\\"\\\\n\\\\n\\\"}\\r\\n        to retry, use: --limit @/home/ahmad/local/test/ansible/pip.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=1\\r\\n```\\r\\n\", \n    \"component_name\": \"pip\", \n    \"component_raw\": \"pip\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19131\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/language/pip.py\", \n    \"summary\": \"With the new support for list of names in 2.2, listing pip-supported setuptools \\\"extras\\\" is broken. \\\"extras\\\" are optional package features. See example 6 in [pip examples](https://pip.pypa.io/en/stable/reference/pip_install/#examples) and [Declaring Extras (optional features with their own dependencies)](https://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-extras-optional-features-with-their-own-dependencies) in setuptools documentation for more information on \\\"extras\\\".\\n\\n\\n\\nMoved from https://github.com/ansible/ansible-modules-core/issues/5843.\", \n    \"title\": \"pip module's new list-of-names feature (v2.2) breaks pip's \\\"extras\\\"\"\n  }, \n  \"19132\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\n\\r\\nnmcli\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nFixes #2045 (at least partially) ... documentation of nmcli module states parameters for creating vlan interfaces but it hasn't been implemented yet.\\r\\n\\r\\nTODO / still open: \\r\\n\\r\\n- repeated execution always reports \\\"changed\\\", and would apply `nmcli con mod ...` even if nothing needs to be changed\\r\\n\\r\\n<!--- Paste verbatim command output below, e.g. before and after your change -->\\r\\n\\r\\n\", \n    \"component_name\": \"nmcli\", \n    \"component_raw\": \"nmcli\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19132\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"feature\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nmcli.py\", \n    \"summary\": \"Fixes #2045 (at least partially) ... documentation of nmcli module states parameters for creating vlan interfaces but it hasn't been implemented yet.\\n\\n\\n\\nTODO / still open: \\n\\n\\n\\n- repeated execution always reports \\\"changed\\\", and would apply `nmcli con mod ...` even if nothing needs to be changed\", \n    \"title\": \"nmcli: implement vlan connections\"\n  }, \n  \"19137\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nprofitbricks_firewall_rule\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n##### SUMMARY\\r\\nThe profitbricks_firewall_rule module allows firewall rules to be assigned to network interfaces. Some minor NIC adjustments were made to accommodate the new firewall_rule module as well.\\r\\n\\r\\n\", \n    \"component_name\": \"profitbricks_firewall_rule\", \n    \"component_raw\": \"profitbricks_firewall_rule\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19137\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/profitbricks/profitbricks_nic.py\", \n    \"summary\": \"The profitbricks_firewall_rule module allows firewall rules to be assigned to network interfaces. Some minor NIC adjustments were made to accommodate the new firewall_rule module as well.\", \n    \"title\": \"Added profitbricks_firewall_rule module and set a default public NIC name\"\n  }, \n  \"19143\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_service\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nRewrite the win_service module to support the below features\\r\\n* Allow it to return existance info instead of just failing outright\\r\\n* Return a lot more info on the service such as username, dependencies, description, etc\\r\\n* Allow setting of the service username and password\\r\\n* Allow setting of dependencies\\r\\n* Allow creation/removal of services\\r\\n* Allow setting description, display name and path to executable of service\\r\\n\", \n    \"component_name\": \"win_service\", \n    \"component_raw\": \"win_service\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19143\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"needs_rebase\", \n      \"test\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_service.ps1\", \n    \"summary\": \"Rewrite the win_service module to support the below features\\n\\n* Allow it to return existance info instead of just failing outright\\n\\n* Return a lot more info on the service such as username, dependencies, description, etc\\n\\n* Allow setting of the service username and password\\n\\n* Allow setting of dependencies\\n\\n* Allow creation/removal of services\\n\\n* Allow setting description, display name and path to executable of service\", \n    \"title\": \"Win service rewrite\"\n  }, \n  \"19144\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_find\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdded win_find module that tries to replicate the existing find module but for Windows. This is a pull request after the repo merge for https://github.com/ansible/ansible-modules-extras/pull/3333\\r\\n\", \n    \"component_name\": \"win_find\", \n    \"component_raw\": \"win_find\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19144\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\", \n      \"test\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_find.py\", \n    \"summary\": \"Added win_find module that tries to replicate the existing find module but for Windows. This is a pull request after the repo merge for https://github.com/ansible/ansible-modules-extras/pull/3333\", \n    \"title\": \"Added win_find module\"\n  }, \n  \"19145\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_reg_stat\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdded win_reg_stat module to help with querying windows registry keys and dealing with things like string expansion keys and other weird registry peculiarities. This is the new PR https://github.com/ansible/ansible-modules-extras after the repo merge\", \n    \"component_name\": \"win_reg_stat\", \n    \"component_raw\": \"win_reg_stat\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19145\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\", \n      \"test\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_reg_stat.py\", \n    \"summary\": \"Added win_reg_stat module to help with querying windows registry keys and dealing with things like string expansion keys and other weird registry peculiarities. This is the new PR https://github.com/ansible/ansible-modules-extras after the repo merge\", \n    \"title\": \"Win reg stat module\"\n  }, \n  \"19146\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_find\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdded in checks to help with deleting broken symlinks, this is for https://github.com/ansible/ansible-modules-core/pull/5120 after repo merge\\r\\n\", \n    \"component_name\": \"win_find\", \n    \"component_raw\": \"win_find\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19146\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"needs_rebase\", \n      \"test\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_file.ps1\", \n    \"summary\": \"Added in checks to help with deleting broken symlinks, this is for https://github.com/ansible/ansible-modules-core/pull/5120 after repo merge\", \n    \"title\": \"Fix/win file symlink\"\n  }, \n  \"19147\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_region\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdded win_region module to change the windows region/format and unicode settings of a Windows server.\\r\\n\", \n    \"component_name\": \"win_region\", \n    \"component_raw\": \"win_region\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19147\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\", \n      \"test\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_region.py\", \n    \"summary\": \"Added win_region module to change the windows region/format and unicode settings of a Windows server.\", \n    \"title\": \"Win region module\"\n  }, \n  \"19148\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_stat\\r\\npowershell.ps1 (module_utils)\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nChanged win_stat module to return more info on the item at a path like\\r\\n* Revert to returning md5 in the md5 field\\r\\n* Added more features like checksum algorithm to match stat module\\r\\n* Return whether the path is a link and the link target\\r\\n* Return whether the path is shared and the share name\\r\\n* Lots other\\r\\n\\r\\nThis also changes the Get-FileChecksum method to return different checksums based on an algorithm. The default is still set to SHA1 for compatibility reasons.\\r\\n\\r\\nThis is a PR after the repo merge for \\r\\nhttps://github.com/ansible/ansible-modules-core/pull/5471\\r\\nhttps://github.com/ansible/ansible/pull/18339\\r\\nhttps://github.com/ansible/ansible/pull/18374\", \n    \"component_name\": \"win_stat\", \n    \"component_raw\": \"win_stat\\npowershell.ps1 (module_utils)\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19148\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"feature\", \n      \"module\", \n      \"module_util\", \n      \"needs_rebase\", \n      \"test\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_stat.ps1\", \n    \"summary\": \"Changed win_stat module to return more info on the item at a path like\\n\\n* Revert to returning md5 in the md5 field\\n\\n* Added more features like checksum algorithm to match stat module\\n\\n* Return whether the path is a link and the link target\\n\\n* Return whether the path is shared and the share name\\n\\n* Lots other\\n\\n\\n\\nThis also changes the Get-FileChecksum method to return different checksums based on an algorithm. The default is still set to SHA1 for compatibility reasons.\\n\\n\\n\\nThis is a PR after the repo merge for \\n\\nhttps://github.com/ansible/ansible-modules-core/pull/5471\\n\\nhttps://github.com/ansible/ansible/pull/18339\\n\\nhttps://github.com/ansible/ansible/pull/18374\", \n    \"title\": \"Feature/win stat extra info\"\n  }, \n  \"19153\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /usr/local/etc/ansible/ansible.cfg\\nconfigured module search path = [/usr/local/etc/ansible/modules]\", \n    \"body\": \"<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n(Copied from https://github.com/ansible/ansible-modules-core/issues/5844 )\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\nuser core module\\r\\ngroup core module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /usr/local/etc/ansible/ansible.cfg\\r\\n  configured module search path = ['/usr/local/etc/ansible/modules']\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nnothing special\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nFreeBSD 11.0\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nFreeBSD allows a different root path (with '-R') or a different /etc path (with '-V') to be passed to pw to allow adding and modifying users and groups in different locations i.e. FreeBSD jails on the server.\\r\\nIn my setup there are multiple FreeBSD jails on a server that all get their base system (read-only mounted) from a slightly modified local FreeBSD installation. One of the slight modifications is to have a couple of users and groups added to the base which would be greatly simplified by having at least one of the mentioned options available.\\r\\npw is already used by the user and group modules if ansible is running on FreeBSD and every pw command can be combined with the '-R /different/root' flag, so implementation shouldn't be to difficult.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n- name: make sure www user exists in basejail\\r\\n  user: name=www state=present rootdir=/jail/basejail\\r\\n\\r\\n- name: make sure postfix group exists in basejail\\r\\n  group: name=postfix state=present rootdir=/jail/basejail\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nThe user module should invoke 'pw -R /jail/basejail useradd -n www' if the user doesn't exists in /jail/basejail/etc/passwd.\\r\\nAnd the group module should invoke 'pw -R /jail/basejail groupadd -n postfix'.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nAt the moment there is no way to do this.\", \n    \"component_name\": \"user core\", \n    \"component_raw\": \"user core module\\ngroup core module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19153\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/group.py\", \n    \"summary\": \"FreeBSD allows a different root path (with '-R') or a different /etc path (with '-V') to be passed to pw to allow adding and modifying users and groups in different locations i.e. FreeBSD jails on the server.\\n\\nIn my setup there are multiple FreeBSD jails on a server that all get their base system (read-only mounted) from a slightly modified local FreeBSD installation. One of the slight modifications is to have a couple of users and groups added to the base which would be greatly simplified by having at least one of the mentioned options available.\\n\\npw is already used by the user and group modules if ansible is running on FreeBSD and every pw command can be combined with the '-R /different/root' flag, so implementation shouldn't be to difficult.\", \n    \"title\": \"user/group module on FreeBSD: support different root dir\"\n  }, \n  \"19154\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_Copied from original issue: ansible/ansible-modules-core#5868_\\r\\n\\r\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ntemplate\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\nNo settings in place.\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n\\r\\nPlease replace - in filename with /\\r\\nhttps://gist.github.com/ashemedai/6482b3fdb8a64eed14c44554f1898893\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nThe file test.output to contain: Variable in question: \\\"Ijklmnop\\\"\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\nThe file test.output contains: Variable in question: \\\"Abcdefgh\\\"\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n% ansible-playbook -vvvv testplaybook -i inventory/testenv\\r\\nNo config file found; using defaults\\r\\nLoading callback plugin default of type stdout, v2.0 from /usr/local/lib/python2.7/dist-packages/ansible/plugins/callback/__init__.pyc\\r\\n\\r\\nPLAYBOOK: testplaybook *********************************************************\\r\\n1 plays in testplaybook\\r\\n\\r\\nPLAY [Testing variables] *******************************************************\\r\\n\\r\\nTASK [testrole : debug] ********************************************************\\r\\ntask path: /home/jeroenr/ansible/testrole/tasks/main.yml:1\\r\\nok: [localhost] => {\\r\\n    \\\"testvar1\\\": \\\"Abcdefgh\\\"\\r\\n}\\r\\n\\r\\nTASK [testrole : debug] ********************************************************\\r\\ntask path: /home/jeroenr/ansible/testrole/tasks/main.yml:4\\r\\nok: [localhost] => {\\r\\n    \\\"testvar2\\\": \\\"Ijklmnop\\\"\\r\\n}\\r\\n\\r\\nTASK [testrole : debug] ********************************************************\\r\\ntask path: /home/jeroenr/ansible/testrole/tasks/main.yml:7\\r\\nok: [localhost] => {\\r\\n    \\\"setting\\\": \\\"Abcdefgh\\\"\\r\\n}\\r\\n\\r\\nTASK [testrole : debug] ********************************************************\\r\\ntask path: /home/jeroenr/ansible/testrole/tasks/main.yml:10\\r\\nok: [localhost] => {\\r\\n    \\\"apache_vhosts\\\": [\\r\\n        {\\r\\n            \\\"setting\\\": \\\"Ijklmnop\\\"\\r\\n        }\\r\\n    ]\\r\\n}\\r\\n\\r\\nTASK [testrole : Test template] ************************************************\\r\\ntask path: /home/jeroenr/ansible/testrole/tasks/main.yml:13\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: jeroenr\\r\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1481288820.47-185974184970601 `\\\" && echo ansible-tmp-1481288820.47-185974184970601=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1481288820.47-185974184970601 `\\\" ) && sleep 0'\\r\\nUsing module file /usr/local/lib/python2.7/dist-packages/ansible/modules/core/files/stat.py\\r\\n<127.0.0.1> PUT /tmp/tmpBZata5 TO /home/jeroenr/.ansible/tmp/ansible-tmp-1481288820.47-185974184970601/stat.py\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /home/jeroenr/.ansible/tmp/ansible-tmp-1481288820.47-185974184970601/ /home/jeroenr/.ansible/tmp/ansible-tmp-1481288820.47-185974184970601/stat.py && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python /home/jeroenr/.ansible/tmp/ansible-tmp-1481288820.47-185974184970601/stat.py && sleep 0'\\r\\n<127.0.0.1> PUT /tmp/tmpwTMm8B TO /home/jeroenr/.ansible/tmp/ansible-tmp-1481288820.47-185974184970601/source\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /home/jeroenr/.ansible/tmp/ansible-tmp-1481288820.47-185974184970601/ /home/jeroenr/.ansible/tmp/ansible-tmp-1481288820.47-185974184970601/source && sleep 0'\\r\\nUsing module file /usr/local/lib/python2.7/dist-packages/ansible/modules/core/files/copy.py\\r\\n<127.0.0.1> PUT /tmp/tmpsb1ndq TO /home/jeroenr/.ansible/tmp/ansible-tmp-1481288820.47-185974184970601/copy.py\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /home/jeroenr/.ansible/tmp/ansible-tmp-1481288820.47-185974184970601/ /home/jeroenr/.ansible/tmp/ansible-tmp-1481288820.47-185974184970601/copy.py && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python /home/jeroenr/.ansible/tmp/ansible-tmp-1481288820.47-185974184970601/copy.py && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c 'rm -f -r /home/jeroenr/.ansible/tmp/ansible-tmp-1481288820.47-185974184970601/ > /dev/null 2>&1 && sleep 0'\\r\\nchanged: [localhost -> 127.0.0.1] => (item={u'setting': u'Ijklmnop'}) => {\\r\\n    \\\"changed\\\": true, \\r\\n    \\\"checksum\\\": \\\"0000a8d305bfb42e85bccb5f9ed6702e2cea4ae9\\\", \\r\\n    \\\"dest\\\": \\\"/tmp/test.output\\\", \\r\\n    \\\"gid\\\": 1000, \\r\\n    \\\"group\\\": \\\"jeroenr\\\", \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"backup\\\": false, \\r\\n            \\\"content\\\": null, \\r\\n            \\\"delimiter\\\": null, \\r\\n            \\\"dest\\\": \\\"/tmp/test.output\\\", \\r\\n            \\\"directory_mode\\\": null, \\r\\n            \\\"follow\\\": true, \\r\\n            \\\"force\\\": true, \\r\\n            \\\"group\\\": null, \\r\\n            \\\"mode\\\": null, \\r\\n            \\\"original_basename\\\": \\\"test.j2\\\", \\r\\n            \\\"owner\\\": null, \\r\\n            \\\"regexp\\\": null, \\r\\n            \\\"remote_src\\\": null, \\r\\n            \\\"selevel\\\": null, \\r\\n            \\\"serole\\\": null, \\r\\n            \\\"setype\\\": null, \\r\\n            \\\"seuser\\\": null, \\r\\n            \\\"src\\\": \\\"/home/jeroenr/.ansible/tmp/ansible-tmp-1481288820.47-185974184970601/source\\\", \\r\\n            \\\"unsafe_writes\\\": null, \\r\\n            \\\"validate\\\": null\\r\\n        }\\r\\n    }, \\r\\n    \\\"item\\\": {\\r\\n        \\\"setting\\\": \\\"Ijklmnop\\\"\\r\\n    }, \\r\\n    \\\"md5sum\\\": \\\"7ff832456b67b6778d49dc5e33e78b70\\\", \\r\\n    \\\"mode\\\": \\\"0644\\\", \\r\\n    \\\"owner\\\": \\\"jeroenr\\\", \\r\\n    \\\"size\\\": 85, \\r\\n    \\\"src\\\": \\\"/home/jeroenr/.ansible/tmp/ansible-tmp-1481288820.47-185974184970601/source\\\", \\r\\n    \\\"state\\\": \\\"file\\\", \\r\\n    \\\"uid\\\": 1000\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=5    changed=1    unreachable=0    failed=0   \\r\\n\\r\\n% cat /tmp/test.output \\r\\nSimply testing variable precedence and expansion:\\r\\n\\r\\nVariable in question: \\\"Abcdefgh\\\"\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"template\", \n    \"component_raw\": \"template\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19154\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/template.py\", \n    \"summary\": \"\", \n    \"title\": \"Template module does not adhere to variable precedence\"\n  }, \n  \"19160\": {\n    \"ansible_version\": \"2.2\", \n    \"body\": \"ISSUE TYPE\\r\\n\\r\\nNew Module Pull Request\\r\\n\\r\\nCOMPONENT NAME\\r\\n\\r\\ns3_bucket_sync\\r\\nANSIBLE VERSION\\r\\n\\r\\n2.2\\r\\n\\r\\nSUMMARY\\r\\n\\r\\nWith this module you can sync the contents of two s3 bucketsISSUE TYPE\\r\\n\\r\\nNew Module Pull Request\\r\\n\\r\\nCOMPONENT NAME\\r\\n\\r\\ns3_bucket_sync\\r\\nANSIBLE VERSION\\r\\n\\r\\n2.2\\r\\n\\r\\nSUMMARY\\r\\n\\r\\nWith this module you can sync the contents of two s3 buckets\\r\\n\\r\\nreopened from [#2057](https://github.com/ansible/ansible-modules-extras/pull/2057)\", \n    \"component_name\": \"s3_bucket_sync\", \n    \"component_raw\": \"s3_bucket_sync\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19160\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/s3_bucket_sync.py\", \n    \"summary\": \"With this module you can sync the contents of two s3 bucketsISSUE TYPE\\n\\n\\n\\nNew Module Pull Request\\n\\n\\n\\nCOMPONENT NAME\\n\\n\\n\\ns3_bucket_sync\\n\\nANSIBLE VERSION\\n\\n\\n\\n2.2\\n\\n\\n\\nSUMMARY\\n\\n\\n\\nWith this module you can sync the contents of two s3 buckets\\n\\n\\n\\nreopened from [#2057](https://github.com/ansible/ansible-modules-extras/pull/2057)\", \n    \"title\": \"new module for syncing of s3 buckets\"\n  }, \n  \"19163\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel 1c33b5a9f0) last updated 2016/08/30 133606 (GMT +300)\\nlib/ansible/modules/core (detached HEAD 5310bab12f) last updated 2016/08/30 133834 (GMT +300)\\nlib/ansible/modules/extras (detached HEAD 2ef4a34eee) last updated 2016/08/30 133834 (GMT +300)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nredhat_subscription\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0 (devel 1c33b5a9f0) last updated 2016/08/30 13:36:06 (GMT +300)\\n  lib/ansible/modules/core: (detached HEAD 5310bab12f) last updated 2016/08/30 13:38:34 (GMT +300)\\n  lib/ansible/modules/extras: (detached HEAD 2ef4a34eee) last updated 2016/08/30 13:38:34 (GMT +300)\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nFixes #3898\\n\\nCurrently `redhat_subcription` module accepts only pool names in `pool` argument.\\nUnfortunately it is possible that different pools has the same name.\\nWhat even worse that `redhat_subscription` module can choose unsupported pools by name (for example pool for virtual machine on hardware host) which leads to module/playbook failure.\\n\\nThe change applies the regexp via `pool` argument to all available pool ids and lets user choose the specific required pool by id.\\n\", \n    \"component_name\": \"redhat_subscription\", \n    \"component_raw\": \"redhat_subscription\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19163\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"core_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/redhat_subscription.py\", \n    \"summary\": \"Fixes #3898\\n\\nCurrently `redhat_subcription` module accepts only pool names in `pool` argument.\\nUnfortunately it is possible that different pools has the same name.\\nWhat even worse that `redhat_subscription` module can choose unsupported pools by name (for example pool for virtual machine on hardware host) which leads to module/playbook failure.\\n\\nThe change applies the regexp via `pool` argument to all available pool ids and lets user choose the specific required pool by id.\", \n    \"title\": \"redhat_subcription module accepts id in the pool argument [#3898]\"\n  }, \n  \"19172\": {\n    \"ansible_version\": \"ansible 2.3.0 (fetch_file ff9626dcd9) last updated 2016/12/10 161359 (GMT +200)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n* `module_utils.urls`\\r\\n* `yum`\\r\\n* `apt`\\r\\n* `unarchive`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (fetch_file ff9626dcd9) last updated 2016/12/10 16:13:59 (GMT +200)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nCurrently a lot of modules use `module_utils.urls.fetch_url` to download a file and process it. This results in quite some duplicated code, which increases the possibility of bugs and makes fixes harder.\\r\\n\\r\\nThis PR takes `fetch_rpm_from_url` function from `yum`, moves it to `module_utils.urls.fetch_file` and then re-uses it in the `yum`, `apt` and `unarchive` modules.\", \n    \"component_name\": \"module_utils.urls\", \n    \"component_raw\": \"* `module_utils.urls`\\n* `yum`\\n* `apt`\\n* `unarchive`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19172\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"c:module_utils/urls\", \n      \"core_review\", \n      \"feature\", \n      \"module\", \n      \"module_util\", \n      \"test\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/apt.py\", \n    \"summary\": \"Currently a lot of modules use `module_utils.urls.fetch_url` to download a file and process it. This results in quite some duplicated code, which increases the possibility of bugs and makes fixes harder.\\n\\n\\n\\nThis PR takes `fetch_rpm_from_url` function from `yum`, moves it to `module_utils.urls.fetch_file` and then re-uses it in the `yum`, `apt` and `unarchive` modules.\", \n    \"title\": \"introduce `module_utils.urls.fetch_file` as a wrapper to download and save files\"\n  }, \n  \"19176\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nhostname module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.1.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nnone\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nansible running from debian, ansible managing raspbian\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nAs said in the title, it appears that [hostname module](http://docs.ansible.com/ansible/hostname_module.html) does not rename correctly on debian.\\r\\n\\r\\nAccording to [hostname.py](https://github.com/ansible/ansible-modules-core/blob/e278f285aa6f61e45416be28b1e689b4d7607196/system/hostname.py#L489-L492), Debian usecase is not using systemd for changing its hostname with ansible.\\r\\n\\r\\nAnd still according to [hostname.py](https://github.com/ansible/ansible-modules-core/blob/e278f285aa6f61e45416be28b1e689b4d7607196/system/hostname.py#L150-L156), Debian usecase is only updating the `/etc/hostname` file.\\r\\n\\r\\nAccording to [debian wiki](https://wiki.debian.org/HowTo/ChangeHostname#Core_networking), it should update the `/etc/hostname` file **and** the `/etc/hosts` file. And then restart networking.\\r\\n\\r\\nThe behaviour is consistent with the ansible documentation, but it is not consistent with debian documentation.\\r\\n\\r\\nThe module is known to change the hostname but it doesn't do it correctly.\\r\\n\\r\\nThe behaviour of the module and its documentation should be updated in order to get it work.\\r\\n\\r\\nI don't understand what does systemd do in this issue. I think hostname module does not work on debian whatever init system is used (SysVinit or systemd).\\r\\n\\r\\nSee also ansible/ansible-modules-core#2004.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nJust set the name of a hostname on a host.\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n  - name: set hostname\\r\\n    hostname:\\r\\n      name: \\\"{{ hostname }}\\\"\\r\\n\\r\\n  # this workaround task is mandatory for hostname renaming\\r\\n  # see https://github.com/ansible/ansible-modules-core/issues/2004\\r\\n  - name: set hostname - workaround\\r\\n    lineinfile:\\r\\n      state: present\\r\\n      dest: /etc/hosts\\r\\n      regexp: \\\"^127.0.1.1\\\\t{{ hostname }}$\\\"\\r\\n      line: \\\"127.0.1.1\\\\t{{ hostname }}\\\"\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n`/etc/hostname` contains `{{ hostname}}` **and** `/etc/hosts` mention **{{ hostname }}` on one line.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n`/etc/hostname` contains `{{ hostname}}` **but** `/etc/hosts` has not been updated..\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\\r\\n\\r\\n\\r\\n\", \n    \"component_name\": \"hostname\", \n    \"component_raw\": \"hostname module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19176\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"affects_2.3\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/hostname.py\", \n    \"summary\": \"As said in the title, it appears that [hostname module](http://docs.ansible.com/ansible/hostname_module.html) does not rename correctly on debian.\\n\\n\\n\\nAccording to [hostname.py](https://github.com/ansible/ansible-modules-core/blob/e278f285aa6f61e45416be28b1e689b4d7607196/system/hostname.py#L489-L492), Debian usecase is not using systemd for changing its hostname with ansible.\\n\\n\\n\\nAnd still according to [hostname.py](https://github.com/ansible/ansible-modules-core/blob/e278f285aa6f61e45416be28b1e689b4d7607196/system/hostname.py#L150-L156), Debian usecase is only updating the `/etc/hostname` file.\\n\\n\\n\\nAccording to [debian wiki](https://wiki.debian.org/HowTo/ChangeHostname#Core_networking), it should update the `/etc/hostname` file **and** the `/etc/hosts` file. And then restart networking.\\n\\n\\n\\nThe behaviour is consistent with the ansible documentation, but it is not consistent with debian documentation.\\n\\n\\n\\nThe module is known to change the hostname but it doesn't do it correctly.\\n\\n\\n\\nThe behaviour of the module and its documentation should be updated in order to get it work.\\n\\n\\n\\nI don't understand what does systemd do in this issue. I think hostname module does not work on debian whatever init system is used (SysVinit or systemd).\\n\\n\\n\\nSee also ansible/ansible-modules-core#2004.\", \n    \"title\": \"hostname module does not rename correctly on debian\"\n  }, \n  \"19177\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"_From @ZeiP on December 5, 2016 22:6_\\r\\n\\r\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\nset_facts\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nFedora 25\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWhen using a set_facts task with with_items to loop through a list and create a new list, the last item handled is not templated properly which makes the list unusable.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n---\\r\\n- set_fact:\\r\\n    nginx_vhosts: []\\r\\n  tags: minimal_debug\\r\\n\\r\\n- name: Define variable\\r\\n  set_fact:\\r\\n    nginx_vhosts: >\\r\\n      {{ nginx_vhosts + [ { 'listen': \\\"8080 default_server\\\", 'server_name': \\\"{{ site.site_domain }}\\\", 'root': \\\"/srv/www/{{ site.site_domain }}/current\\\", 'index': \\\"index.php\\\"  } ] }}\\r\\n  with_items:\\r\\n    - [{'site_domain': \\\"example.org\\\", 'site_name': \\\"example\\\"}]\\r\\n    - [{'site_domain': \\\"example.org\\\", 'site_name': \\\"example\\\"}]\\r\\n    - [{'site_domain': \\\"example.org\\\", 'site_name': \\\"example\\\"}]\\r\\n  loop_control:\\r\\n    loop_var: site\\r\\n  tags: minimal_debug\\r\\n\\r\\n- debug: \\\"{{ nginx_vhosts }}\\\"\\r\\n  tags: minimal_debug\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n[ { 'listen': \\\"8080 default_server\\\", 'server_name': \\\"example.org\\\", 'root': \\\"/srv/www/example.org/current\\\", 'index': \\\"index.php\\\"  },  { 'listen': \\\"8080 default_server\\\", 'server_name': \\\"example.org\\\", 'root': \\\"/srv/www/example.org/current\\\", 'index': \\\"index.php\\\"  } ,  { 'listen': \\\"8080 default_server\\\", 'server_name': \\\"example.org\\\", 'root': \\\"/srv/www/example.org/current\\\", 'index': \\\"index.php\\\"  }  ]\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [drupal_be : debug] *******************************************************\\r\\ntask path: /home/.../vcs/drupal-ansible/roles/drupal_be/tasks/main.yml:220\\r\\nfatal: [fi]: FAILED! => {\\r\\n    \\\"failed\\\": true, \\r\\n    \\\"msg\\\": \\\"the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: [{'index': u'index.php', 'root': u'/srv/www/example.org/current', 'server_name': u'example.org', 'listen': u'8080 default_server'}, {'index': u'index.php', 'root': u'/srv/www/example.org/current', 'server_name': u'example.org', 'listen': u'8080 default_server'}, {'index': u'index.php', 'root': u'/srv/www/{{ site.site_domain }}/current', 'server_name': u'{{ site.site_domain }}', 'listen': u'8080 default_server'}]: 'site' is undefined\\\\n\\\\nThe error appears to have been in '/home/.../tasks/main.yml': line 220, column 3, but may\\\\nbe elsewhere in the file depending on the exact syntax problem.\\\\n\\\\nThe offending line appears to be:\\\\n\\\\n\\\\n- debug: \\\\\\\"{{ nginx_vhosts }}\\\\\\\"\\\\n  ^ here\\\\nWe could be wrong, but this one looks like it might be an issue with\\\\nmissing quotes.  Always quote template expression brackets when they\\\\nstart a value. For instance:\\\\n\\\\n    with_items:\\\\n      - {{ foo }}\\\\n\\\\nShould be written as:\\\\n\\\\n    with_items:\\\\n      - \\\\\\\"{{ foo }}\\\\\\\"\\\\n\\\"\\r\\n}\\r\\n```\\r\\n\\r\\n\\r\\n_Copied from original issue: ansible/ansible-modules-core#5836_\", \n    \"component_name\": \"set_facts\", \n    \"component_raw\": \"set_facts\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19177\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When using a set_facts task with with_items to loop through a list and create a new list, the last item handled is not templated properly which makes the list unusable.\", \n    \"title\": \"set_facts with with_items fails to template the last item\"\n  }, \n  \"19179\": {\n    \"ansible_version\": \"2.1.0.0\", \n    \"body\": \"_From @xen0l on June 12, 2016 17:12_\\n\\n##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nuser\\n##### ANSIBLE VERSION\\n\\n```\\n2.1.0.0\\n```\\n##### CONFIGURATION\\n\\nDefault\\n##### OS / ENVIRONMENT\\n\\nOpenIndiana/SmartOS/Oracle Solaris\\n##### SUMMARY\\n\\nillumos/Solaris RBAC provides authorizations/profiles/roles attributes. These should be configurable via Ansible\\n##### STEPS TO REPRODUCE\\n\\n```\\n- name: Configure RBAC profiles\\n  user: name=xenol\\n           profile='Primary Administrator'\\n\\n- name: Configure RBAC authorization\\n  user: name=xenol\\n           authorization='zfssnap'\\n\\n- name: Configure RBAC role\\n  user: name=xenol\\n           role='root'\\n```\\n##### EXPECTED RESULTS\\n\\nRBAC authorization/profile/role will be assigned to the user account.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#3936_\", \n    \"component_name\": \"user\", \n    \"component_raw\": \"user\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19179\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/user.py\", \n    \"summary\": \"illumos/Solaris RBAC provides authorizations/profiles/roles attributes. These should be configurable via Ansible\", \n    \"title\": \"user module should be able to configure RBAC attributes on Solarish systems\"\n  }, \n  \"19180\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\nbeadm.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.2.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nThis module enables management of ZFS boot environments on FreeBSD/illumos systems (Solaris should be supported as well, but it wasn't tested). \\n\", \n    \"component_name\": \"beadm.py\", \n    \"component_raw\": \"beadm.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19180\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/beadm.py\", \n    \"summary\": \"This module enables management of ZFS boot\", \n    \"title\": \"Add module for managing boot environments on FreeBSD/Solaris/illumos \\u2026\"\n  }, \n  \"19181\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\nzfs_facts.py\\nzpool_facts.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.2.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nThese modules return facts about ZFS datasets and pools. They can be used for much better ZFS management with Ansible. They return ZFS dataset/pools properties as facts and based on those one can take decisions, e.g. delete snapshots older than X, report space usage, report property values, check ZFS pool health status etc.  These modules should run on all ZFS platforms and should work for both OpenZFS and ZFS implementations.\\n\\nI also created a new category \\\"zfs\\\" under storage and move zfs.py there, so modules are kept together.\\n\", \n    \"component_name\": \"zfs_facts.py\", \n    \"component_raw\": \"zfs_facts.py\\nzpool_facts.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19181\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/storage/zfs/zpool_facts.py\", \n    \"summary\": \"These modules return facts about ZFS datasets and pools. They can be used for much better ZFS management with Ansible. They return ZFS dataset/pools properties as facts and based on those one can take decisions, e.g. delete snapshots older than X, report space usage, report property values, check ZFS pool health status etc.  These modules should run on all ZFS platforms and should work for both OpenZFS and ZFS implementations.\\n\\nI also created a new category \\\"zfs\\\" under storage and move zfs.py there, so modules are kept together.\", \n    \"title\": \"Modules for gathering facts about ZFS datasets and pools\"\n  }, \n  \"19183\": {\n    \"ansible_version\": \"[stevenca@cil-mgmt cil-infra]$ ansible-playbook --version\\nansible-playbook 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nPlease verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nasa_config\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n[stevenca@cil-mgmt cil-infra]$ ansible-playbook --version\\r\\nansible-playbook 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nNo changes to ansible.cfg, installed via pip\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nRunning the playbook on a RHEL 7.2 host\\r\\nRunning the playbook against an ASA 5585X-40 running 9.4(3)11 in multi-context mode\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nasa_config says that it is going to make a change on the target ASA, but never does.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n---\\r\\n- hosts: cil-fw\\r\\n  gather_facts: no\\r\\n  connection: local\\r\\n  vars_files:\\r\\n    - ./cil-vault.yml\\r\\n  vars:\\r\\n    cli:\\r\\n      host: \\\"{{ inventory_hostname }}\\\"\\r\\n      username: \\\"{{ cil_admin_username }}\\\"\\r\\n      password: \\\"{{ cil_admin_password }}\\\"\\r\\n      transport: cli\\r\\n\\r\\n  tasks:\\r\\n    - name: Get Version\\r\\n      asa_command:\\r\\n        commands:\\r\\n          - show version\\r\\n        context: system\\r\\n        provider: \\\"{{ cli }}\\\"\\r\\n\\r\\n    - name: Associate VLAN with interface\\r\\n      asa_config:\\r\\n        lines:\\r\\n          - vlan 610\\r\\n        parents: ['interface Port-channel1.610']\\r\\n        context: system\\r\\n        provider: \\\"{{ cli }}\\\"\\r\\n\\r\\n    - name: Add Context\\r\\n      asa_config:\\r\\n        lines:\\r\\n          - allocate-interface Port-channel1.102\\r\\n          - allocate-interface Port-channel1.610\\r\\n          - config-url disk0:/rhat.cfg\\r\\n        parents: ['context rhat']\\r\\n        context: system\\r\\n        provider: \\\"{{ cli }}\\\"\\r\\n\\r\\n    - name: Configure the outside interface\\r\\n      asa_config:\\r\\n        lines:\\r\\n          - nameif outside\\r\\n          - security-level 0\\r\\n          - ip address 192.133.159.74 255.255.255.192\\r\\n        context: rhat\\r\\n        parents: ['interface Port-channel1.102']\\r\\n        provider: \\\"{{ cli }}\\\"\\r\\n\\r\\n    - name: Configure the inside interface\\r\\n      asa_config:\\r\\n        lines:\\r\\n          - nameif inside\\r\\n          - security-level 100\\r\\n          - ip address 192.133.159.174 255.255.255.252\\r\\n        context: rhat\\r\\n        parents: ['interface Port-channel1.610']\\r\\n        provider: \\\"{{ cli }}\\\"\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nI expect the sub-interface and context to be created, but neither is.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nWhen the third play runs, it fails because neither the sub-interface nor the context have been created. I've tried other tasks (i.e. adding users) and I get the same result.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n[stevenca@cil-mgmt cil-infra]$ ansible-playbook -vvv -i cil-hosts --ask-vault-pass asa-test.yml\\r\\nNo config file found; using defaults\\r\\nVault password:\\r\\n\\r\\nPLAYBOOK: asa-test.yml *********************************************************\\r\\n1 plays in asa-test.yml\\r\\n\\r\\nPLAY [cil-fw] ******************************************************************\\r\\n\\r\\nTASK [Get Version] *************************************************************\\r\\ntask path: /home/stevenca/projects/cil-infra/asa-test.yml:16\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/extras/network/asa/asa_command.py\\r\\n<192.133.148.15> ESTABLISH LOCAL CONNECTION FOR USER: stevenca\\r\\n<192.133.148.15> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1480776265.17-128906478643933 `\\\" && echo ansible-tmp-1480776265.17-128906478643933=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1480776265.17-128906478643933 `\\\" ) && sleep 0'\\r\\n<192.133.148.15> PUT /tmp/tmp6AQ59z TO /home/stevenca/.ansible/tmp/ansible-tmp-1480776265.17-128906478643933/asa_command.py\\r\\n<192.133.148.15> EXEC /bin/sh -c 'chmod u+x /home/stevenca/.ansible/tmp/ansible-tmp-1480776265.17-128906478643933/ /home/stevenca/.ansible/tmp/ansible-tmp-1480776265.17-128906478643933/asa_command.py && sleep 0'\\r\\n<192.133.148.15> EXEC /bin/sh -c '/usr/bin/python /home/stevenca/.ansible/tmp/ansible-tmp-1480776265.17-128906478643933/asa_command.py; rm -rf \\\"/home/stevenca/.ansible/tmp/ansible-tmp-1480776265.17-128906478643933/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nok: [csn-sjc18-asa1.ciscolabs.net] => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"auth_pass\\\": null,\\r\\n            \\\"authorize\\\": false,\\r\\n            \\\"commands\\\": [\\r\\n                \\\"show version\\\"\\r\\n            ],\\r\\n            \\\"context\\\": \\\"system\\\",\\r\\n            \\\"host\\\": \\\"csn-sjc18-asa1.ciscolabs.net\\\",\\r\\n            \\\"interval\\\": 1,\\r\\n            \\\"match\\\": \\\"all\\\",\\r\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n            \\\"port\\\": null,\\r\\n            \\\"provider\\\": {\\r\\n                \\\"host\\\": \\\"csn-sjc18-asa1.ciscolabs.net\\\",\\r\\n                \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n                \\\"transport\\\": \\\"cli\\\",\\r\\n                \\\"username\\\": \\\"admin\\\"\\r\\n            },\\r\\n            \\\"retries\\\": 10,\\r\\n            \\\"show_command\\\": \\\"show running-config\\\",\\r\\n            \\\"ssh_keyfile\\\": null,\\r\\n            \\\"timeout\\\": 10,\\r\\n            \\\"transport\\\": \\\"cli\\\",\\r\\n            \\\"username\\\": \\\"admin\\\",\\r\\n            \\\"wait_for\\\": null\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"asa_command\\\"\\r\\n    },\\r\\n    \\\"stdout\\\": [\\r\\n        \\\"\\\\nDevice Manager Version 7.4(1)\\\\n\\\\nCompiled on Thu 22-Sep-16 12:16 PDT by builders\\\\nSystem image file is \\\\\\\"disk0:/asa943-11-smp-k8.bin\\\\\\\"\\\\nConfig file at boot was \\\\\\\"startup-config\\\\\\\"\\\\n\\\\ncsn-sjc18-asa1 up 51 days 12 hours\\\\n\\\\nHardware:   ASA5585-SSP-40, 12288 MB RAM, CPU Xeon 5500 series 2133 MHz, 2 CPUs (16 cores)\\\\nInternal ATA Compact Flash, 2048MB\\\\nBIOS Flash M25P32 @ 0x0, 4096KB\\\\n\\\\nEncryption hardware device : Cisco ASA-5585 on-board accelerator (revision 0x1)\\\\n                             Boot microcode        : CNPx-MC-BOOT-2.00\\\\n                             SSL/IKE microcode     : CNPx-MC-SSL-SB-PLUS-0005\\\\n                             IPSec microcode       : CNPx-MC-IPSEC-MAIN-0026\\\\n                             Number of accelerators: 3\\\\n\\\\nProgrammable device : Cisco CPLD revision 0x8\\\\n\\\\n 0: Int: Internal-Data0/0    : address is 0000.0001.0001, irq 5\\\\n 2: Int: Internal-Data0/1    : address is 0000.0001.0002, irq 10\\\\n 3: Int: Internal-Data0/2    : address is 0000.0001.0004, irq 10\\\"\\r\\n    ],\\r\\n    \\\"stdout_lines\\\": [\\r\\n        [\\r\\n            \\\"\\\",\\r\\n            \\\"Device Manager Version 7.4(1)\\\",\\r\\n            \\\"\\\",\\r\\n            \\\"Compiled on Thu 22-Sep-16 12:16 PDT by builders\\\",\\r\\n            \\\"System image file is \\\\\\\"disk0:/asa943-11-smp-k8.bin\\\\\\\"\\\",\\r\\n            \\\"Config file at boot was \\\\\\\"startup-config\\\\\\\"\\\",\\r\\n            \\\"\\\",\\r\\n            \\\"csn-sjc18-asa1 up 51 days 12 hours\\\",\\r\\n            \\\"\\\",\\r\\n            \\\"Hardware:   ASA5585-SSP-40, 12288 MB RAM, CPU Xeon 5500 series 2133 MHz, 2 CPUs (16 cores)\\\",\\r\\n            \\\"Internal ATA Compact Flash, 2048MB\\\",\\r\\n            \\\"BIOS Flash M25P32 @ 0x0, 4096KB\\\",\\r\\n            \\\"\\\",\\r\\n            \\\"Encryption hardware device : Cisco ASA-5585 on-board accelerator (revision 0x1)\\\",\\r\\n            \\\"                             Boot microcode        : CNPx-MC-BOOT-2.00\\\",\\r\\n            \\\"                             SSL/IKE microcode     : CNPx-MC-SSL-SB-PLUS-0005\\\",\\r\\n            \\\"                             IPSec microcode       : CNPx-MC-IPSEC-MAIN-0026\\\",\\r\\n            \\\"                             Number of accelerators: 3\\\",\\r\\n            \\\"\\\",\\r\\n            \\\"Programmable device : Cisco CPLD revision 0x8\\\",\\r\\n            \\\"\\\",\\r\\n            \\\" 0: Int: Internal-Data0/0    : address is 0000.0001.0001, irq 5\\\",\\r\\n            \\\" 2: Int: Internal-Data0/1    : address is 0000.0001.0002, irq 10\\\",\\r\\n            \\\" 3: Int: Internal-Data0/2    : address is 0000.0001.0004, irq 10\\\"\\r\\n        ]\\r\\n    ],\\r\\n    \\\"warnings\\\": []\\r\\n}\\r\\n\\r\\nTASK [Associate VLAN with interface] *******************************************\\r\\ntask path: /home/stevenca/projects/cil-infra/asa-test.yml:23\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/extras/network/asa/asa_config.py\\r\\n<192.133.148.15> ESTABLISH LOCAL CONNECTION FOR USER: stevenca\\r\\n<192.133.148.15> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1480776266.42-2422288532726 `\\\" && echo ansible-tmp-1480776266.42-2422288532726=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1480776266.42-2422288532726 `\\\" ) && sleep 0'\\r\\n<192.133.148.15> PUT /tmp/tmpQcfGOT TO /home/stevenca/.ansible/tmp/ansible-tmp-1480776266.42-2422288532726/asa_config.py\\r\\n<192.133.148.15> EXEC /bin/sh -c 'chmod u+x /home/stevenca/.ansible/tmp/ansible-tmp-1480776266.42-2422288532726/ /home/stevenca/.ansible/tmp/ansible-tmp-1480776266.42-2422288532726/asa_config.py && sleep 0'\\r\\n<192.133.148.15> EXEC /bin/sh -c '/usr/bin/python /home/stevenca/.ansible/tmp/ansible-tmp-1480776266.42-2422288532726/asa_config.py; rm -rf \\\"/home/stevenca/.ansible/tmp/ansible-tmp-1480776266.42-2422288532726/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nchanged: [csn-sjc18-asa1.ciscolabs.net] => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"after\\\": null,\\r\\n            \\\"auth_pass\\\": null,\\r\\n            \\\"authorize\\\": false,\\r\\n            \\\"backup\\\": false,\\r\\n            \\\"before\\\": null,\\r\\n            \\\"config\\\": null,\\r\\n            \\\"context\\\": \\\"system\\\",\\r\\n            \\\"default\\\": false,\\r\\n            \\\"host\\\": \\\"csn-sjc18-asa1.ciscolabs.net\\\",\\r\\n            \\\"lines\\\": [\\r\\n                \\\"vlan 610\\\"\\r\\n            ],\\r\\n            \\\"match\\\": \\\"line\\\",\\r\\n            \\\"parents\\\": [\\r\\n                \\\"interface Port-channel1.610\\\"\\r\\n            ],\\r\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n            \\\"port\\\": null,\\r\\n            \\\"provider\\\": {\\r\\n                \\\"host\\\": \\\"csn-sjc18-asa1.ciscolabs.net\\\",\\r\\n                \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n                \\\"transport\\\": \\\"cli\\\",\\r\\n                \\\"username\\\": \\\"admin\\\"\\r\\n            },\\r\\n            \\\"replace\\\": \\\"line\\\",\\r\\n            \\\"save\\\": false,\\r\\n            \\\"show_command\\\": \\\"show running-config\\\",\\r\\n            \\\"src\\\": null,\\r\\n            \\\"ssh_keyfile\\\": null,\\r\\n            \\\"timeout\\\": 10,\\r\\n            \\\"transport\\\": \\\"cli\\\",\\r\\n            \\\"username\\\": \\\"admin\\\"\\r\\n        }\\r\\n    },\\r\\n    \\\"updates\\\": [\\r\\n        \\\"interface Port-channel1.610\\\",\\r\\n        \\\"vlan 610\\\"\\r\\n    ]\\r\\n}\\r\\n\\r\\nTASK [Add Context] *************************************************************\\r\\ntask path: /home/stevenca/projects/cil-infra/asa-test.yml:31\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/extras/network/asa/asa_config.py\\r\\n<192.133.148.15> ESTABLISH LOCAL CONNECTION FOR USER: stevenca\\r\\n<192.133.148.15> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1480776268.14-229980492283311 `\\\" && echo ansible-tmp-1480776268.14-229980492283311=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1480776268.14-229980492283311 `\\\" ) && sleep 0'\\r\\n<192.133.148.15> PUT /tmp/tmpNGXpNm TO /home/stevenca/.ansible/tmp/ansible-tmp-1480776268.14-229980492283311/asa_config.py\\r\\n<192.133.148.15> EXEC /bin/sh -c 'chmod u+x /home/stevenca/.ansible/tmp/ansible-tmp-1480776268.14-229980492283311/ /home/stevenca/.ansible/tmp/ansible-tmp-1480776268.14-229980492283311/asa_config.py && sleep 0'\\r\\n<192.133.148.15> EXEC /bin/sh -c '/usr/bin/python /home/stevenca/.ansible/tmp/ansible-tmp-1480776268.14-229980492283311/asa_config.py; rm -rf \\\"/home/stevenca/.ansible/tmp/ansible-tmp-1480776268.14-229980492283311/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nchanged: [csn-sjc18-asa1.ciscolabs.net] => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"after\\\": null,\\r\\n            \\\"auth_pass\\\": null,\\r\\n            \\\"authorize\\\": false,\\r\\n            \\\"backup\\\": false,\\r\\n            \\\"before\\\": null,\\r\\n            \\\"config\\\": null,\\r\\n            \\\"context\\\": \\\"system\\\",\\r\\n            \\\"default\\\": false,\\r\\n            \\\"host\\\": \\\"csn-sjc18-asa1.ciscolabs.net\\\",\\r\\n            \\\"lines\\\": [\\r\\n                \\\"allocate-interface Port-channel1.102\\\",\\r\\n                \\\"allocate-interface Port-channel1.610\\\",\\r\\n                \\\"config-url disk0:/rhat.cfg\\\"\\r\\n            ],\\r\\n            \\\"match\\\": \\\"line\\\",\\r\\n            \\\"parents\\\": [\\r\\n                \\\"context rhat\\\"\\r\\n            ],\\r\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n            \\\"port\\\": null,\\r\\n            \\\"provider\\\": {\\r\\n                \\\"host\\\": \\\"csn-sjc18-asa1.ciscolabs.net\\\",\\r\\n                \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n                \\\"transport\\\": \\\"cli\\\",\\r\\n                \\\"username\\\": \\\"admin\\\"\\r\\n            },\\r\\n            \\\"replace\\\": \\\"line\\\",\\r\\n            \\\"save\\\": false,\\r\\n            \\\"show_command\\\": \\\"show running-config\\\",\\r\\n            \\\"src\\\": null,\\r\\n            \\\"ssh_keyfile\\\": null,\\r\\n            \\\"timeout\\\": 10,\\r\\n            \\\"transport\\\": \\\"cli\\\",\\r\\n            \\\"username\\\": \\\"admin\\\"\\r\\n        }\\r\\n    },\\r\\n    \\\"updates\\\": [\\r\\n        \\\"context rhat\\\",\\r\\n        \\\"allocate-interface Port-channel1.102\\\",\\r\\n        \\\"allocate-interface Port-channel1.610\\\",\\r\\n        \\\"config-url disk0:/rhat.cfg\\\"\\r\\n    ]\\r\\n}\\r\\n\\r\\nTASK [Configure the outside interface] *****************************************\\r\\ntask path: /home/stevenca/projects/cil-infra/asa-test.yml:42\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/extras/network/asa/asa_config.py\\r\\n<192.133.148.15> ESTABLISH LOCAL CONNECTION FOR USER: stevenca\\r\\n<192.133.148.15> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1480776269.86-222680561730173 `\\\" && echo ansible-tmp-1480776269.86-222680561730173=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1480776269.86-222680561730173 `\\\" ) && sleep 0'\\r\\n<192.133.148.15> PUT /tmp/tmpWLMF4E TO /home/stevenca/.ansible/tmp/ansible-tmp-1480776269.86-222680561730173/asa_config.py\\r\\n<192.133.148.15> EXEC /bin/sh -c 'chmod u+x /home/stevenca/.ansible/tmp/ansible-tmp-1480776269.86-222680561730173/ /home/stevenca/.ansible/tmp/ansible-tmp-1480776269.86-222680561730173/asa_config.py && sleep 0'\\r\\n<192.133.148.15> EXEC /bin/sh -c '/usr/bin/python /home/stevenca/.ansible/tmp/ansible-tmp-1480776269.86-222680561730173/asa_config.py; rm -rf \\\"/home/stevenca/.ansible/tmp/ansible-tmp-1480776269.86-222680561730173/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nfatal: [csn-sjc18-asa1.ciscolabs.net]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"after\\\": null,\\r\\n            \\\"auth_pass\\\": null,\\r\\n            \\\"authorize\\\": false,\\r\\n            \\\"backup\\\": false,\\r\\n            \\\"before\\\": null,\\r\\n            \\\"config\\\": null,\\r\\n            \\\"context\\\": \\\"rhat\\\",\\r\\n            \\\"default\\\": false,\\r\\n            \\\"host\\\": \\\"csn-sjc18-asa1.ciscolabs.net\\\",\\r\\n            \\\"lines\\\": [\\r\\n                \\\"nameif outside\\\",\\r\\n                \\\"security-level 0\\\",\\r\\n                \\\"ip address 192.133.159.74 255.255.255.192\\\"\\r\\n            ],\\r\\n            \\\"match\\\": \\\"line\\\",\\r\\n            \\\"parents\\\": [\\r\\n                \\\"interface Port-channel1.102\\\"\\r\\n            ],\\r\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n            \\\"port\\\": null,\\r\\n            \\\"provider\\\": {\\r\\n                \\\"host\\\": \\\"csn-sjc18-asa1.ciscolabs.net\\\",\\r\\n                \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n                \\\"transport\\\": \\\"cli\\\",\\r\\n                \\\"username\\\": \\\"admin\\\"\\r\\n            },\\r\\n            \\\"replace\\\": \\\"line\\\",\\r\\n            \\\"save\\\": false,\\r\\n            \\\"show_command\\\": \\\"show running-config\\\",\\r\\n            \\\"src\\\": null,\\r\\n            \\\"ssh_keyfile\\\": null,\\r\\n            \\\"timeout\\\": 10,\\r\\n            \\\"transport\\\": \\\"cli\\\",\\r\\n            \\\"username\\\": \\\"admin\\\"\\r\\n        }\\r\\n    },\\r\\n    \\\"msg\\\": \\\"matched error in response: changeto context rhat\\\\r\\\\nERROR: 'rhat' is not valid \\\\r\\\\n\\\"\\r\\n}\\r\\n\\tto retry, use: --limit @/home/stevenca/projects/cil-infra/asa-test.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\ncsn-sjc18-asa1.ciscolabs.net : ok=3    changed=2    unreachable=0    failed=1\\r\\n```\\r\\n\", \n    \"component_name\": \"asa_config\", \n    \"component_raw\": \"asa_config\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19183\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/asa/asa_config.py\", \n    \"summary\": \"asa_config says that it is going to make a change on the target ASA, but never does.\", \n    \"title\": \"asa_config does not make config change\"\n  }, \n  \"19184\": {\n    \"ansible_version\": \"2.1.1.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`cron` module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.1.1.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nGenerates a warning for any `job` containing line breaks.\\r\\n\\r\\nMoved from ansible/ansible-modules-core#4488\", \n    \"component_name\": \"cron\", \n    \"component_raw\": \"`cron` module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19184\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"committer_review\", \n      \"feature\", \n      \"module\", \n      \"owner_pr\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/cron.py\", \n    \"summary\": \"Generates a warning for any `job` containing line breaks.\\n\\n\\n\\nMoved from ansible/ansible-modules-core#4488\", \n    \"title\": \"cron - discourage line breaks in job param\"\n  }, \n  \"19185\": {\n    \"ansible_version\": \"ansible 2.1.2.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n`cron` module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.1.2.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nValidates the filename portion of cron_file param (as some linux distros restrict what it can contain), and returns a warning if said validation fails. Also updates docs accordingly.\\r\\n\\r\\n```\\r\\n$ sudo ansible localhost -m cron -a \\\"job=/bin/false user=deploy cron_file='.warnings-test'\\\"\\r\\n\\r\\nlocalhost | SUCCESS => {\\r\\n    \\\"changed\\\": true, \\r\\n    \\\"cron_file\\\": \\\".warnings-test\\\", \\r\\n    \\\"envs\\\": [], \\r\\n    \\\"jobs\\\": [\\r\\n        \\\"None\\\"\\r\\n    ], \\r\\n    \\\"warnings\\\": [\\r\\n        \\\"cron_file \\\\\\\".warnings-test\\\\\\\" must consist solely of upper- and lower-case letters, digits, underscores, and hyphens\\\"\\r\\n    ]\\r\\n}\\r\\n [WARNING]: cron_file \\\".warnings-test\\\" must consist solely of upper- and lower-case letters, digits, underscores, and hyphens\\r\\n```\\r\\n\\r\\nMoved from ansible/ansible-modules-core#5361\", \n    \"component_name\": \"cron\", \n    \"component_raw\": \"`cron` module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19185\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"committer_review\", \n      \"feature\", \n      \"module\", \n      \"owner_pr\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/cron.py\", \n    \"summary\": \"Validates the filename portion of cron_file param (as some linux distros restrict what it can contain), and returns a warning if said validation fails. Also updates docs accordingly.\\n\\n\\n\\n```\\n\\n$ sudo ansible localhost -m cron -a \\\"job=/bin/false user=deploy cron_file='.warnings-test'\\\"\\n\\n\\n\\nlocalhost | SUCCESS => {\\n\\n    \\\"changed\\\": true, \\n\\n    \\\"cron_file\\\": \\\".warnings-test\\\", \\n\\n    \\\"envs\\\": [], \\n\\n    \\\"jobs\\\": [\\n\\n        \\\"None\\\"\\n\\n    ], \\n\\n    \\\"warnings\\\": [\\n\\n        \\\"cron_file \\\\\\\".warnings-test\\\\\\\" must consist solely of upper- and lower-case letters, digits, underscores, and hyphens\\\"\\n\\n    ]\\n\\n}\\n\\n [WARNING]: cron_file \\\".warnings-test\\\" must consist solely of upper- and lower-case letters, digits, underscores, and hyphens\\n\\n```\\n\\n\\n\\nMoved from ansible/ansible-modules-core#5361\", \n    \"title\": \"cron - validate filename portion of cron_file param\"\n  }, \n  \"19187\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /vagrant/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n`replace` module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /vagrant/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nPer the discussion in ansible/ansible-modules-core#5626, documented a gotcha with ansible 2 parsing of short form tasks and escape sequences.\\r\\n\\r\\nLong story short, non-regexp escape sequences are interpreted as string literals (newlines, tabs, etc) and word boundary escape sequences (`\\\\b`) are mistakenly interpreted as literal backspaces. Since this happens outside of the module, all I can do is document the oddity.\\r\\n\\r\\nMoved from ansible/ansible-modules-core#5639\", \n    \"component_name\": \"replace\", \n    \"component_raw\": \"`replace` module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19187\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"docs\", \n      \"module\", \n      \"owner_pr\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/replace.py\", \n    \"summary\": \"Per the discussion in ansible/ansible-modules-core#5626, documented a gotcha with ansible 2 parsing of short form tasks and escape sequences.\\n\\n\\n\\nLong story short, non-regexp escape sequences are interpreted as string literals (newlines, tabs, etc) and word boundary escape sequences (`\\\\b`) are mistakenly interpreted as literal backspaces. Since this happens outside of the module, all I can do is document the oddity.\\n\\n\\n\\nMoved from ansible/ansible-modules-core#5639\", \n    \"title\": \"replace - documentation update for short form task parsing and escape sequences\"\n  }, \n  \"19191\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 7a07a594f7) last updated 2016/12/11 012912 (GMT +000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n`blockfromfile` module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 (devel 7a07a594f7) last updated 2016/12/11 01:29:12 (GMT +000)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nA module for extracting values (via regexp pattern) from an existing file on remote nodes. Should fail silently by default (or loudly if desired), when said file doesn't exist.\\r\\n\\r\\n###### The use case\\r\\n\\r\\nI have a group of servers using **keepalived** to ping each other and elect a master for the group. They find each other via _a list of peer ip addresses_, and hold election based on _differing numeric priorities_.\\r\\n\\r\\nThe peer lists and priorities are empty/zeroed for newly provisioned servers, and a separate tool calculates and overwrites them after provisioning.\\r\\n\\r\\nShould I re-provision an _existing_ server, I need to carry over those specific config values to the regenerated config file, rather than emptying/zeroing them again.\\r\\n\\r\\n###### The stopgap solution\\r\\n\\r\\nI've been accomplishing this with a custom python script that is (1) copied to the remote node, (2) made executable, (3) run, and (4) its output registered to a variable. I then use the registered variable in a conditional of the config file template.\\r\\n\\r\\nSaid custom script literally just slurps the file and prints any groups returned from `re.search`.\\r\\n###### The module in use\\r\\n\\r\\nI've simplified it with the module in question, so my playbook went from this:\\r\\n\\r\\n``` yml\\r\\n- copy: >\\r\\n    src=unicast-peers.py\\r\\n    dest=/tmp/unicast-peers.py\\r\\n    mode=0755\\r\\n- command: /tmp/unicast-peers.py\\r\\n  register: keepalive_peers\\r\\n- command: rm -f /tmp/unicast-peers.py\\r\\n- debug: var=keepalive_peers.stdout\\r\\n```\\r\\n\\r\\nTo this:\\r\\n\\r\\n``` yml\\r\\n- blockfromfile: >\\r\\n    src=/etc/keepalived/keepalived.conf\\r\\n    regexp=\\\"^\\\\s*unicast_peer\\\\s*\\\\{\\\\n*(?P<peers>[^}]*?)\\\\n*\\\\s*\\\\}\\\"\\r\\n  register: keepalive_peers\\r\\n- debug: var=keepalive_peers.matches.0.named_groups.peers\\r\\n```\\r\\n\\r\\nMoved from ansible/ansible-modules-extras#962\", \n    \"component_name\": \"blockfromfile\", \n    \"component_raw\": \"`blockfromfile` module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19191\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/blockfromfile.py\", \n    \"summary\": \"A module for extracting values (via regexp pattern) from an existing file on remote nodes. Should fail silently by default (or loudly if desired), when said file doesn't exist.\\n\\n\\n\\n###### The use case\\n\\n\\n\\nI have a group of servers using **keepalived** to ping each other and elect a master for the group. They find each other via _a list of peer ip addresses_, and hold election based on _differing numeric priorities_.\\n\\n\\n\\nThe peer lists and priorities are empty/zeroed for newly provisioned servers, and a separate tool calculates and overwrites them after provisioning.\\n\\n\\n\\nShould I re-provision an _existing_ server, I need to carry over those specific config values to the regenerated config file, rather than emptying/zeroing them again.\\n\\n\\n\\n###### The stopgap solution\\n\\n\\n\\nI've been accomplishing this with a custom python script that is (1) copied to the remote node, (2) made executable, (3) run, and (4) its output registered to a variable. I then use the registered variable in a conditional of the config file template.\\n\\n\\n\\nSaid custom script literally just slurps the file and prints any groups returned from `re.search`.\\n\\n###### The module in use\\n\\n\\n\\nI've simplified it with the module in question, so my playbook went from this:\\n\\n\\n\\n``` yml\\n\\n- copy: >\\n\\n    src=unicast-peers.py\\n\\n    dest=/tmp/unicast-peers.py\\n\\n    mode=0755\\n\\n- command: /tmp/unicast-peers.py\\n\\n  register: keepalive_peers\\n\\n- command: rm -f /tmp/unicast-peers.py\\n\\n- debug: var=keepalive_peers.stdout\\n\\n```\\n\\n\\n\\nTo this:\\n\\n\\n\\n``` yml\\n\\n- blockfromfile: >\\n\\n    src=/etc/keepalived/keepalived.conf\\n\\n    regexp=\\\"^\\\\s*unicast_peer\\\\s*\\\\{\\\\n*(?P<peers>[^}]*?)\\\\n*\\\\s*\\\\}\\\"\\n\\n  register: keepalive_peers\\n\\n- debug: var=keepalive_peers.matches.0.named_groups.peers\\n\\n```\\n\\n\\n\\nMoved from ansible/ansible-modules-extras#962\", \n    \"title\": \"New blockfromfile module\"\n  }, \n  \"19193\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nPlease verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\ndocker_container\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nnone\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nController machine is MacOS 10.12.1\\r\\nManaged machine is Ubuntu 14.04\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nThe current documentation of the `volumes` parameter of the `docker_container` module\\r\\nsays this about the mount mode: \\\"You can specify a read mode for the mount with either `ro` or `rw`.  SELinux hosts can additionally use `z` or `Z` to use a shared or private label for the volume.\\\"  But I was able to use a mode of `rw,rshared` (with the host path naming a shared mount point).  It is good that I was able to do that; I wish the documentation indicated this and told me which Ansible version introuced that ability.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n- name: Ensure /var/lib/kubelet exists\\r\\n  command: mkdir -p /var/lib/kubelet\\r\\n\\r\\n- name: Ensure /var/lib/kubelet is a mount point\\r\\n  shell: grep /var/lib/kubelet /etc/mtab || mount --bind /var/lib/kubelet /var/lib/kubelet\\r\\n\\r\\n- name: Ensure /var/lib/kubelet is a shared mount point\\r\\n  shell: mount --make-rshared /var/lib/kubelet\\r\\n\\r\\n- name: Ensure the kubelet container is defined\\r\\n  docker_container:\\r\\n    command: /hyperkube kubelet ...\\r\\n    image: gcr.io/google_containers/hyperkube-amd64:v1.4.6\\r\\n    name: kubelet\\r\\n    network_mode: host\\r\\n    pid_mode: host\\r\\n    privileged: yes\\r\\n    restart_policy: always\\r\\n    state: started\\r\\n    volumes:\\r\\n        - /:/rootfs:ro\\r\\n        - /sys:/sys:ro\\r\\n        - /dev:/dev\\r\\n        - /var/run:/var/run\\r\\n        - /var/lib/kubelet:/var/lib/kubelet:rw,rshared\\r\\n        - /var/lib/docker:/var/lib/docker\\r\\n        - /etc/kubernetes:/etc/kubernetes\\r\\n        - /etc/cni/net.d:/etc/cni/net.d\\r\\n        - /opt/cni/bin:/opt/cni/bin\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nIf the doc were accurate then executing that `docker_container` task would fail with a complaint about the mode of the `/var/lib/kubelet` volume mount.\\r\\n\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nThe task ran without complaint and produced the desired result.  Below is what I saw when running with `-v`.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [k8sm-worker : Ensure the kubelet container is defined] *******************\\r\\nSaturday 10 December 2016  22:10:50 -0500 (0:00:00.114)       0:02:00.088 ***** \\r\\nchanged: [192.168.10.2] => {\\\"ansible_facts\\\": {}, \\\"changed\\\": true}\\r\\n```\\r\\n\\r\\nAfter that, `docker inspect kubelet` had this to say about that volume mount:\\r\\n```\\r\\n            {\\r\\n                \\\"Source\\\": \\\"/var/lib/kubelet\\\",\\r\\n                \\\"Destination\\\": \\\"/var/lib/kubelet\\\",\\r\\n                \\\"Mode\\\": \\\"rw,rshared\\\",\\r\\n                \\\"RW\\\": true,\\r\\n                \\\"Propagation\\\": \\\"rshared\\\"\\r\\n            },\\r\\n```\", \n    \"component_name\": \"docker_container\", \n    \"component_raw\": \"docker_container\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19193\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"cloud\", \n      \"docker\", \n      \"docs_report\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"summary\": \"The current documentation of the `volumes` parameter of the `docker_container` module\\n\\nsays this about the mount mode: \\\"You can specify a read mode for the mount with either `ro` or `rw`.  SELinux hosts can additionally use `z` or `Z` to use a shared or private label for the volume.\\\"  But I was able to use a mode of `rw,rshared` (with the host path naming a shared mount point).  It is good that I was able to do that; I wish the documentation indicated this and told me which Ansible version introuced that ability.\", \n    \"title\": \"docker_container doc about volume mount modes is too restrictive\"\n  }, \n  \"19194\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmaven_artifact\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nDocumentation states that repository_url defaults to the central maven repo if not specified, but it actually throws an error after S3 support was added. This change ensures the default is applied before checking if the URL is an S3 URL.\\r\\n\\r\\nThis is related to ansible/ansible-modules-extras#3429\\r\\n\\r\\n```\\r\\n$ cat t.yml\\r\\n---\\r\\n- hosts: localhost\\r\\n  gather_facts: no\\r\\n  tasks:\\r\\n    - maven_artifact:\\r\\n        group_id: junit\\r\\n        artifact_id: junit\\r\\n        version: 4.11\\r\\n        dest: /tmp/junit-4.11.jar\\r\\n$ ansible-playbook t.yml \\r\\n PLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [maven_artifact] **********************************************************\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"url parsing went wrong 'NoneType' object has no attribute 'find'\\\"}\\r\\n        to retry, use: --limit @/home/me/dev/ansible/t.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=0    changed=0    unreachable=0    failed=1   \\r\\n\\r\\n$ ansible-playbook t.yml \\r\\n PLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [maven_artifact] **********************************************************\\r\\nchanged: [localhost]\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=1    unreachable=0    failed=0 \\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"maven_artifact\", \n    \"component_raw\": \"maven_artifact\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19194\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"shipit\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/language/maven_artifact.py\", \n    \"summary\": \"Documentation states that repository_url defaults to the central maven repo if not specified, but it actually throws an error after S3 support was added. This change ensures the default is applied before checking if the URL is an S3 URL.\\n\\n\\n\\nThis is related to ansible/ansible-modules-extras#3429\\n\\n\\n\\n```\\n\\n$ cat t.yml\\n\\n---\\n\\n- hosts: localhost\\n\\n  gather_facts: no\\n\\n  tasks:\\n\\n    - maven_artifact:\\n\\n        group_id: junit\\n\\n        artifact_id: junit\\n\\n        version: 4.11\\n\\n        dest: /tmp/junit-4.11.jar\\n\\n$ ansible-playbook t.yml \\n\\n PLAY [localhost] ***************************************************************\\n\\n\\n\\nTASK [maven_artifact] **********************************************************\\n\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"url parsing went wrong 'NoneType' object has no attribute 'find'\\\"}\\n\\n        to retry, use: --limit @/home/me/dev/ansible/t.retry\\n\\n\\n\\nPLAY RECAP *********************************************************************\\n\\nlocalhost                  : ok=0    changed=0    unreachable=0    failed=1   \\n\\n\\n\\n$ ansible-playbook t.yml \\n\\n PLAY [localhost] ***************************************************************\\n\\n\\n\\nTASK [maven_artifact] **********************************************************\\n\\nchanged: [localhost]\\n\\n\\n\\nPLAY RECAP *********************************************************************\\n\\nlocalhost                  : ok=1    changed=1    unreachable=0    failed=0 \\n\\n```\", \n    \"title\": \"maven_artifact: Make default repository_url work again\"\n  }, \n  \"19195\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvsphere_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nansible 2.3.0 (devel)\\r\\n\\r\\n##### SUMMARY\\r\\nThe vsphere_guest module lacks the ability to handle snapshot operations of vmware guests. This is an initial effort for the feature request(https://github.com/ansible/ansible-modules-core/issues/4942).\\r\\n\\r\\nEXAMPLES:\\r\\n### List all snapshots\\r\\n\\r\\n```\\r\\nvsphere_guest:\\r\\n    vcenter_hostname: <hostname>\\r\\n    username: <username>\\r\\n    password: <password>\\r\\n    validate_certs: False\\r\\n    guest: <vm_name>\\r\\n    snapshot_op:\\r\\n        op_type: list_all\\r\\n```\\r\\n### Remove a snapshot\\r\\n\\r\\n```\\r\\n snapshot_op:\\r\\n     op_type: remove\\r\\n     name: <snapshot_name_to_delete>\\r\\n```\\r\\n### Create a snapshot\\r\\n\\r\\n```\\r\\n snapshot_op:\\r\\n     op_type: create\\r\\n     name: <snapshot_name_to_create>\\r\\n     description: <snapshot_description>\\r\\n```\\r\\n### Revert snapshot\\r\\n\\r\\n```\\r\\n snapshot_op:\\r\\n     op_type: revert\\r\\n     name: <snapshot_name_to_revert>\\r\\n```\\r\\n### List current snapshot of a VM\\r\\n\\r\\n```\\r\\n snapshot_op:\\r\\n     op_type: list_current\\r\\n```\\r\\n\", \n    \"component_name\": \"vsphere_guest\", \n    \"component_raw\": \"vsphere_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19195\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"feature\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\", \n    \"summary\": \"The vsphere_guest module lacks the ability to handle snapshot operations of vmware guests. This is an initial effort for the feature request(https://github.com/ansible/ansible-modules-core/issues/4942).\\n\\n\\n\\nEXAMPLES:\\n\\n### List all snapshots\\n\\n\\n\\n```\\n\\nvsphere_guest:\\n\\n    vcenter_hostname: <hostname>\\n\\n    username: <username>\\n\\n    password: <password>\\n\\n    validate_certs: False\\n\\n    guest: <vm_name>\\n\\n    snapshot_op:\\n\\n        op_type: list_all\\n\\n```\\n\\n### Remove a snapshot\\n\\n\\n\\n```\\n\\n snapshot_op:\\n\\n     op_type: remove\\n\\n     name: <snapshot_name_to_delete>\\n\\n```\\n\\n### Create a snapshot\\n\\n\\n\\n```\\n\\n snapshot_op:\\n\\n     op_type: create\\n\\n     name: <snapshot_name_to_create>\\n\\n     description: <snapshot_description>\\n\\n```\\n\\n### Revert snapshot\\n\\n\\n\\n```\\n\\n snapshot_op:\\n\\n     op_type: revert\\n\\n     name: <snapshot_name_to_revert>\\n\\n```\\n\\n### List current snapshot of a VM\\n\\n\\n\\n```\\n\\n snapshot_op:\\n\\n     op_type: list_current\\n\\n```\", \n    \"title\": \"update vsphere_guest.py to include snapshot operations\"\n  }, \n  \"19196\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"ISSUE TYPE\\r\\n\\r\\nNew Module Pull Request\\r\\nCOMPONENT NAME\\r\\n\\r\\ncloud/amazon/ssm_parameter_store.py\\r\\n\\r\\nANSIBLE VERSION\\r\\n\\r\\nansible 2.2.0.0\\r\\nconfig file = /etc/ansible/ansible.cfg\\r\\nconfigured module search path = Default w/o overrides\\r\\n\\r\\nSUMMARY\\r\\n\\r\\nThis module is used to create, update, show and delete parameter in AWS parameter store.\\r\\n\\r\\nhttp://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sysman-paramstore-walk.html\\r\\n\", \n    \"component_name\": \"cloud/amazon/ssm_parameter_store.py\", \n    \"component_raw\": \"cloud/amazon/ssm_parameter_store.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19196\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ssm_parameter_store.py\", \n    \"summary\": \"This module is used to create, update, show and delete parameter in AWS parameter store.\\n\\n\\n\\nhttp://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sysman-paramstore-walk.html\", \n    \"title\": \"new module: ssm_parameter_store\"\n  }, \n  \"19198\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`ovh_dns`\\r\\n\\r\\n##### SUMMARY\\r\\n* This module helps managing DNS records via OVH (french registrar/host company) API.\\r\\n* It was initially created by [gheesh](https://github.com/gheesh/ansible-ovh-dns). I tried to make it look like `ovh_ip_loadbalancing_backend` module (especially for the authentication part).\\r\\n* It supports check mode/diff.\", \n    \"component_name\": \"ovh_dns\", \n    \"component_raw\": \"`ovh_dns`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19198\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/ovh/ovh_dns.py\", \n    \"summary\": \"* This module helps managing DNS records via OVH (french registrar/host company) API.\\n\\n* It was initially created by [gheesh](https://github.com/gheesh/ansible-ovh-dns). I tried to make it look like `ovh_ip_loadbalancing_backend` module (especially for the authentication part).\\n\\n* It supports check mode/diff.\", \n    \"title\": \"Add ovh_dns module\"\n  }, \n  \"19200\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"ref https://github.com/ansible/ansible-modules-extras/pull/3365\\r\\n\\r\\nthis PR adds the feature @resmo suggested at https://github.com/ansible/ansible-modules-extras/pull/3365#issuecomment-262194091\\r\\n\\r\\n---\\r\\n\\r\\n##### ISSUE TYPE\\r\\n\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\npear\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThis allows you to specify a path to the pear executable or a directory where the pear executable is located. This is useful if you have multiple versions of PHP installed at once and need to install pecl modules for them. I've included a playbook showing its usefulness on a CentOS 7 machine using SCL RPMs but there are other methods.\\r\\n\\r\\n```yaml\\r\\n- hosts: localhost\\r\\n  tasks:\\r\\n    - name: install prereqs\\r\\n      package: name={{ item }}\\r\\n      with_items:\\r\\n        - epel-release\\r\\n        - centos-release-scl\\r\\n        - centos-release-scl-rh\\r\\n    - name: install packages \\r\\n      package: name={{ item }}\\r\\n      with_items:\\r\\n        - gcc-c++\\r\\n        - libssh2-devel\\r\\n        - php-pear\\r\\n        - php-devel\\r\\n        - php55-php-devel\\r\\n        - php55-php-pear\\r\\n        - rh-php56-php-pear\\r\\n        - rh-php56-php-devel\\r\\n    - name: create symlink to give non-standard name for SCL php55 pear\\r\\n      file:\\r\\n        state: link\\r\\n        src: /opt/rh/php55/root/usr/bin/pear\\r\\n        dest: /usr/bin/php55-pear\\r\\n    - name: install pecl-ssh2 for default PHP\\r\\n      pear:\\r\\n        name: pecl/ssh2\\r\\n    - name: install pecl-ssh2 for SCL php55 using explicit path\\r\\n      pear:\\r\\n        name: pecl/ssh2\\r\\n        executable: /usr/bin/php55-pear\\r\\n    - name: install pecl-ssh2 for SCL php56 using directory where pear executable is located\\r\\n      pear:\\r\\n        name: pecl/ssh2\\r\\n        executable: /opt/rh/rh-php56/root/usr/bin/\\r\\n```\", \n    \"component_name\": \"pear\", \n    \"component_raw\": \"pear\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19200\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/language/pear.py\", \n    \"summary\": \"This allows you to specify a path to the pear executable or a directory where the pear executable is located. This is useful if you have multiple versions of PHP installed at once and need to install pecl modules for them. I've included a playbook showing its usefulness on a CentOS 7 machine using SCL RPMs but there are other methods.\\n\\n\\n\\n```yaml\\n\\n- hosts: localhost\\n\\n  tasks:\\n\\n    - name: install prereqs\\n\\n      package: name={{ item }}\\n\\n      with_items:\\n\\n        - epel-release\\n\\n        - centos-release-scl\\n\\n        - centos-release-scl-rh\\n\\n    - name: install packages \\n\\n      package: name={{ item }}\\n\\n      with_items:\\n\\n        - gcc-c++\\n\\n        - libssh2-devel\\n\\n        - php-pear\\n\\n        - php-devel\\n\\n        - php55-php-devel\\n\\n        - php55-php-pear\\n\\n        - rh-php56-php-pear\\n\\n        - rh-php56-php-devel\\n\\n    - name: create symlink to give non-standard name for SCL php55 pear\\n\\n      file:\\n\\n        state: link\\n\\n        src: /opt/rh/php55/root/usr/bin/pear\\n\\n        dest: /usr/bin/php55-pear\\n\\n    - name: install pecl-ssh2 for default PHP\\n\\n      pear:\\n\\n        name: pecl/ssh2\\n\\n    - name: install pecl-ssh2 for SCL php55 using explicit path\\n\\n      pear:\\n\\n        name: pecl/ssh2\\n\\n        executable: /usr/bin/php55-pear\\n\\n    - name: install pecl-ssh2 for SCL php56 using directory where pear executable is located\\n\\n      pear:\\n\\n        name: pecl/ssh2\\n\\n        executable: /opt/rh/rh-php56/root/usr/bin/\\n\\n```\", \n    \"title\": \"add option for path to pear executable\"\n  }, \n  \"19201\": {\n    \"ansible_version\": \"ansible 2.3.0 (virt/domifaddr e503c4d440) last updated 2016/12/11 192229 (GMT +000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvirt\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (virt/domifaddr e503c4d440) last updated 2016/12/11 19:22:29 (GMT +000)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nPart of my libvirt provisioning process is to retrieve the IP address that was leased by libvirt's dnsmasq. This was not yet available in the virt module so I've added this functionality.\\r\\n\\r\\nThis is my first pull request for Ansible, so please inform me if I forgot anything.\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\nPARSED OUTPUT\\r\\n{\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"command\\\": \\\"get_ifaces\\\", \\r\\n            \\\"name\\\": \\\"coreos-2.guests.internal.siwyd.com\\\", \\r\\n            \\\"state\\\": null, \\r\\n            \\\"uri\\\": \\\"qemu+ssh://hb@batou/system\\\", \\r\\n            \\\"xml\\\": null\\r\\n        }\\r\\n    }, \\r\\n    \\\"vnet1\\\": {\\r\\n        \\\"addrs\\\": [\\r\\n            {\\r\\n                \\\"addr\\\": \\\"10.200.2.5\\\", \\r\\n                \\\"prefix\\\": 24, \\r\\n                \\\"type\\\": 0\\r\\n            }\\r\\n        ], \\r\\n        \\\"hwaddr\\\": \\\"52:54:00:51:9a:52\\\"\\r\\n    }\\r\\n}\\r\\n```\", \n    \"component_name\": \"virt\", \n    \"component_raw\": \"virt\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19201\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/misc/virt.py\", \n    \"summary\": \"Part of my libvirt provisioning process is to retrieve the IP address that was leased by libvirt's dnsmasq. This was not yet available in the virt module so I've added this functionality.\\n\\n\\n\\nThis is my first pull request for Ansible, so please inform me if I forgot anything.\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\nPARSED OUTPUT\\n\\n{\\n\\n    \\\"changed\\\": false, \\n\\n    \\\"invocation\\\": {\\n\\n        \\\"module_args\\\": {\\n\\n            \\\"command\\\": \\\"get_ifaces\\\", \\n\\n            \\\"name\\\": \\\"coreos-2.guests.internal.siwyd.com\\\", \\n\\n            \\\"state\\\": null, \\n\\n            \\\"uri\\\": \\\"qemu+ssh://hb@batou/system\\\", \\n\\n            \\\"xml\\\": null\\n\\n        }\\n\\n    }, \\n\\n    \\\"vnet1\\\": {\\n\\n        \\\"addrs\\\": [\\n\\n            {\\n\\n                \\\"addr\\\": \\\"10.200.2.5\\\", \\n\\n                \\\"prefix\\\": 24, \\n\\n                \\\"type\\\": 0\\n\\n            }\\n\\n        ], \\n\\n        \\\"hwaddr\\\": \\\"52:54:00:51:9a:52\\\"\\n\\n    }\\n\\n}\\n\\n```\", \n    \"title\": \"Add get_ifaces command to virt module\"\n  }, \n  \"19202\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\ncloud/vmware/vsphere_guest\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.0.0\\n  config file =\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nAdd 'suspended' as a desired state for a VM.\\nDoesn't error about force being needed if VM is already suspended.\\n\\n<!---\\nIf you are fixing an existing issue, please include \\\"Fixes #nnnn\\\" in your commit\\nmessage and your description; but you should still explain what the change does.\\n-->\\n\\n<!--- Paste verbatim command output below, e.g. before and after your change -->\\n\\n```\\nTASK [vsphere : Suspend vSphere Guest VM] ************************************\\nok: [vcsa -> localhost] => (item=Test VM)\\n\\nPLAY RECAP ******************************************************************\\nvcsa                                : ok=1             changed=0          unreachable=0             failed=0\\n```\\n\", \n    \"component_name\": \"cloud/vmware/vsphere_guest\", \n    \"component_raw\": \"cloud/vmware/vsphere_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19202\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"feature\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\", \n    \"summary\": \"Add 'suspended' as a desired state for a VM.\\nDoesn't error about force being needed if VM is already suspended.\\n\\n\\n\\n\\n\\n```\\nTASK [vsphere : Suspend vSphere Guest VM] ************************************\\nok: [vcsa -> localhost] => (item=Test VM)\\n\\nPLAY RECAP ******************************************************************\\nvcsa                                : ok=1             changed=0          unreachable=0             failed=0\\n```\", \n    \"title\": \"Added 'suspended' as desired state for VM\"\n  }, \n  \"19203\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nPlease verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nUri\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nInstalled by pip, nothing has been changed.\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\nmacOS Sierra Version:10.12.1 (16B2555)\\r\\nPython 2.7.12 installed by brew\\r\\npip 9.0.1 installed by easy_install\\r\\npython requests 2.12.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nUsing Ansible Uri module to get the cluster status info for my HTTPS enabled Elasticsearch cluster (https feature provided by Search Guard SSL), I ended up with error:  **urlopen error EOF occurred in violation of protocol (_ssl.c:590)**\\r\\n\\r\\nWhile using python requests to issue the https requests, all good.\\r\\n\\r\\nThe cert in place is self-signed.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n---\\r\\n- hosts: all\\r\\n  gather_facts: no\\r\\n  become: no\\r\\n  #strategy: debug\\r\\n  connection: local\\r\\n  tasks:\\r\\n    - name: test search guard ssl\\r\\n      uri:\\r\\n        url: https://xx.xx.xx.xx:9200/_cluster/health\\r\\n        validate_certs: no\\r\\n        user: xxxx\\r\\n        password: yyyy \\r\\n        force_basic_auth: yes\\r\\n      register: resp\\r\\n\\r\\n    - debug: var=resp\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nhttp 200 status code and regarding contents.\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n```\\r\\nNo config file found; using defaults\\r\\nSet default localhost to localhost\\r\\nLoading callback plugin default of type stdout, v2.0 from /Library/Python/2.7/site-packages/ansible/plugins/callback/__init__.pyc\\r\\n\\r\\nPLAYBOOK: uri.yml **************************************************************\\r\\n1 plays in uri.yml\\r\\n\\r\\nPLAY [all] *********************************************************************\\r\\n\\r\\nTASK [test search guard ssl] ***************************************************\\r\\ntask path: /Users/enzow/Documents/code/ansible/uri.yml:8\\r\\nUsing module file /Library/Python/2.7/site-packages/ansible/modules/core/network/basics/uri.py\\r\\n<localhost> ESTABLISH LOCAL CONNECTION FOR USER: enzow\\r\\n<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1481494288.97-17902501405502 `\\\" && echo ansible-tmp-1481494288.97-17902501405502=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1481494288.97-17902501405502 `\\\" ) && sleep 0'\\r\\n<localhost> PUT /var/folders/fx/g5m_b9jj75d0279mf23t7cr1vnwpj9/T/tmpyWrstY TO /Users/enzow/.ansible/tmp/ansible-tmp-1481494288.97-17902501405502/uri.py\\r\\n<localhost> EXEC /bin/sh -c 'chmod u+x /Users/enzow/.ansible/tmp/ansible-tmp-1481494288.97-17902501405502/ /Users/enzow/.ansible/tmp/ansible-tmp-1481494288.97-17902501405502/uri.py && sleep 0'\\r\\n<localhost> EXEC /bin/sh -c '/usr/bin/python /Users/enzow/.ansible/tmp/ansible-tmp-1481494288.97-17902501405502/uri.py; rm -rf \\\"/Users/enzow/.ansible/tmp/ansible-tmp-1481494288.97-17902501405502/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"content\\\": \\\"\\\", \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"backup\\\": null, \\r\\n            \\\"body\\\": null, \\r\\n            \\\"body_format\\\": \\\"raw\\\", \\r\\n            \\\"content\\\": null, \\r\\n            \\\"creates\\\": null, \\r\\n            \\\"delimiter\\\": null, \\r\\n            \\\"dest\\\": null, \\r\\n            \\\"directory_mode\\\": null, \\r\\n            \\\"follow\\\": false, \\r\\n            \\\"follow_redirects\\\": \\\"safe\\\", \\r\\n            \\\"force\\\": false, \\r\\n            \\\"force_basic_auth\\\": true, \\r\\n            \\\"group\\\": null, \\r\\n            \\\"headers\\\": {\\r\\n                \\\"Authorization\\\": \\\"Basic oWRt9h8dhjjtaW4=\\\"\\r\\n            }, \\r\\n            \\\"http_agent\\\": \\\"ansible-httpget\\\", \\r\\n            \\\"method\\\": \\\"GET\\\", \\r\\n            \\\"mode\\\": null, \\r\\n            \\\"owner\\\": null, \\r\\n            \\\"password\\\": \\\"yyyy\\\", \\r\\n            \\\"regexp\\\": null, \\r\\n            \\\"remote_src\\\": null, \\r\\n            \\\"removes\\\": null, \\r\\n            \\\"return_content\\\": false, \\r\\n            \\\"selevel\\\": null, \\r\\n            \\\"serole\\\": null, \\r\\n            \\\"setype\\\": null, \\r\\n            \\\"seuser\\\": null, \\r\\n            \\\"src\\\": null, \\r\\n            \\\"status_code\\\": [\\r\\n                200\\r\\n            ], \\r\\n            \\\"timeout\\\": 30, \\r\\n            \\\"unsafe_writes\\\": null, \\r\\n            \\\"url\\\": \\\"https://xx.xx.xx.xx:9200/_cluster/health\\\", \\r\\n            \\\"url_password\\\": \\\"xxxx\\\", \\r\\n            \\\"url_username\\\": \\\"yyyy\\\", \\r\\n            \\\"use_proxy\\\": true, \\r\\n            \\\"user\\\": \\\"xxxx\\\", \\r\\n            \\\"validate_certs\\\": false\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"uri\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"Status code was not [200]: Request failed: <urlopen error EOF occurred in violation of protocol (_ssl.c:590)>\\\", \\r\\n    \\\"redirected\\\": false, \\r\\n    \\\"status\\\": -1, \\r\\n    \\\"url\\\": \\\"https://xx.xx.xx.xx:9200/_cluster/health\\\"\\r\\n}\\r\\n\\tto retry, use: --limit @/Users/enzow/Documents/code/ansible/uri.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=0    changed=0    unreachable=0    failed=1   \\r\\n\\r\\n\\r\\n```\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nansible-playbook  -i localhost, uri.yml -vvvv\\r\\n```\\r\\n\", \n    \"component_name\": \"uri\", \n    \"component_raw\": \"Uri\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19203\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/basics/uri.py\", \n    \"summary\": \"Using Ansible Uri module to get the cluster status info for my HTTPS enabled Elasticsearch cluster (https feature provided by Search Guard SSL), I ended up with error:  **urlopen error EOF occurred in violation of protocol (_ssl.c:590)**\\n\\n\\n\\nWhile using python requests to issue the https requests, all good.\\n\\n\\n\\nThe cert in place is self-signed.\", \n    \"title\": \"Uri module reports urlopen error EOF occurred in violation of protocol (_ssl.c:590) when accessing a self-signed HTTPS url\"\n  }, \n  \"19205\": {\n    \"ansible_version\": \"2.2\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nMany\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.2\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdd a field to document host affinity and start to use it. ATM we have many modules that declare this kind of stuff in the examples, but imho is better to have a section about it (people might not read the examples)\", \n    \"component_name\": \"many\", \n    \"component_raw\": \"Many\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19205\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"azure\", \n      \"cloud\", \n      \"community_review\", \n      \"docs\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/dnsimple.py\", \n    \"summary\": \"Add a field to document host affinity and start to use it. ATM we have many modules that declare this kind of stuff in the examples, but imho is better to have a section about it (people might not read the examples)\", \n    \"title\": \"Add host affinity to the documentation template\"\n  }, \n  \"19208\": {\n    \"ansible_version\": \"2.2\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncloud/amazon/ec2 tag.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.2\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nRemove shell and improve example readability\\r\\n\\r\\n@gundalow \", \n    \"component_name\": \"cloud/amazon/ec2 tag.py\", \n    \"component_raw\": \"cloud/amazon/ec2 tag.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19208\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"committer_review\", \n      \"docs\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_tag.py\", \n    \"summary\": \"Remove shell and improve example readability\\n\\n\\n\\n@gundalow\", \n    \"title\": \"Cloud/amazon/ec2 tag.py\"\n  }, \n  \"19209\": {\n    \"ansible_version\": \"2.2\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nsystem/authorized_key\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.2\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nImprove example descriptions\\r\\n\\r\\n@gundalow \", \n    \"component_name\": \"system/authorized_key\", \n    \"component_raw\": \"system/authorized_key\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19209\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"core_review\", \n      \"docs\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/authorized_key.py\", \n    \"summary\": \"Improve example descriptions\\n\\n\\n\\n@gundalow\", \n    \"title\": \"Improve example description system/authorized_key.py\"\n  }, \n  \"19210\": {\n    \"ansible_version\": \"ansible 2.3.0 (ipa-bugfix-empty-lists 52f9a02111) last updated 2016/12/12 085201 (GMT +200)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nFreeIPA Modules\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (ipa-bugfix-empty-lists 52f9a02111) last updated 2016/12/12 08:52:01 (GMT +200)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nThe fix moves two methods that are equal in all IPA modules into class IPAClient (module_utils/ipa.py) and therefore removes duplicated code.\\r\\nIn addition the bug reported here https://github.com/ansible/ansible-modules-extras/issues/3682 is fixed.\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\", \n    \"component_name\": \"freeipa  s\", \n    \"component_raw\": \"FreeIPA Modules\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19210\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"community_review\", \n      \"module\", \n      \"module_util\", \n      \"owner_pr\"\n    ], \n    \"module_match\": \"lib/ansible/modules/identity/ipa/ipa_group.py\", \n    \"summary\": \"The fix moves two methods that are equal in all IPA modules into class IPAClient (module_utils/ipa.py) and therefore removes duplicated code.\\n\\nIn addition the bug reported here https://github.com/ansible/ansible-modules-extras/issues/3682 is fixed.\", \n    \"title\": \"IPA: Remove duplicated code and fix a bug that occurs if empty lists were passed and IPA didn't know the value before\"\n  }, \n  \"19212\": {\n    \"ansible_version\": \"2.2\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nsystem/authorized_key.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.2\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdd outputs\\r\\n\\r\\n@gundalow \", \n    \"component_name\": \"system/authorized_key.py\", \n    \"component_raw\": \"system/authorized_key.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19212\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"core_review\", \n      \"docs\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/authorized_key.py\", \n    \"summary\": \"Add outputs\\n\\n\\n\\n@gundalow\", \n    \"title\": \"Add output - system/authorized_key.py\"\n  }, \n  \"19213\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @chrwen-omicron on June 17, 2016 14:2_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\nwin_regedit\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.0.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nSetting an environment variable as data of an expandstring data type leads to a change every run.\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n- name: set an environment variable as data\\n  win_regedit:\\n    key: \\\"HKCU:\\\\\\\\Environment\\\"\\n    value: HOME\\n    data: \\\"%USERPROFILE%\\\"\\n    type: expandstring\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nNo change if the registry contains `%USERPROFILE%.`\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with high verbosity (-vvvv) -->\\n\\nWhen win_regedit is reading the registry key, it gets the expanded data instead of the real data.\\nE.g. `C:\\\\Users\\\\<username>` instead of `%USERPROFILE%`\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#2446_\", \n    \"component_name\": \"win_regedit\", \n    \"component_raw\": \"win_regedit\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19213\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_regedit.py\", \n    \"summary\": \"Setting an environment variable as data of an expandstring data type leads to a change every run.\", \n    \"title\": \"win_regedit: change detection doesn't work for environment variables in registry keys of type expandstring\"\n  }, \n  \"19214\": {\n    \"ansible_version\": \"ansible-2.1.1.0\", \n    \"body\": \"<!---\\r\\nPlease verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nshell\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible-2.1.1.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nNothing configured\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nRed Hat Enterprise Linux Server release 6.8 (Santiago)\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWhen running a remote command with the module shell in ansible, for a list of servers and with sudo,\\r\\nthe command run fine in the remote servers but the ansible command never return to the linux prompt. Crtl+C doesn\\u00b4t work for cancel. strace of the process shows an infinite loop for the ansible process. The only way to finish the run is to kill the ansible process.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\nIn a Red Had 6.8 with python 2.6.6 and the ansible version 2.1.1.0 run this with a file filled with several servers:\\r\\n\\r\\n#> ansible -u <user> -i /tmp/list all -k -s -m shell -a \\\"uptime\\\"\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nThe command never ends. Cannot be stoped/canceled with Crtl+c and have to be killed.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nUsing /etc/ansible/ansible.cfg as config file\\r\\nSSH password:\\r\\nLoaded callback minimal of type stdout, v2.0\\r\\n<XXXXX1> ESTABLISH SSH CONNECTION FOR USER: <user>\\r\\n<XXXXX2> ESTABLISH SSH CONNECTION FOR USER: <user>\\r\\n<XXXXX3> ESTABLISH SSH CONNECTION FOR USER: <user>\\r\\n<XXXXX4> ESTABLISH SSH CONNECTION FOR USER: <user>\\r\\n<XXXXX2> SSH: EXEC sshpass -d20 ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o User=<user> -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r XXXXX2 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1480423293.83-231739456228208 `\\\" && echo ansible-tmp-1480423293.83-231739456228208=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1480423293.83-231739456228208 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<XXXXX3> SSH: EXEC sshpass -d21 ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o User=<user> -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r XXXXX3 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1480423293.84-86346344087207 `\\\" && echo ansible-tmp-1480423293.84-86346344087207=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1480423293.84-86346344087207 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<XXXXX1> SSH: EXEC sshpass -d19 ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o User=<user> -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r XXXXX1 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1480423293.83-223315962231458 `\\\" && echo ansible-tmp-1480423293.83-223315962231458=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1480423293.83-223315962231458 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<XXXXX4> SSH: EXEC sshpass -d18 ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o User=<user> -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r XXXXX4 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1480423293.84-137653613389320 `\\\" && echo ansible-tmp-1480423293.84-137653613389320=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1480423293.84-137653613389320 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<XXXXX2> PUT /tmp/tmpXJBHQT TO /home/<user>/.ansible/tmp/ansible-tmp-1480423293.83-231739456228208/command\\r\\n<XXXXX2> SSH: EXEC sshpass -d20 sftp -o BatchMode=no -b - -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o User=<user> -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r '[XXXXX2]'\\r\\n<XXXXX3> PUT /tmp/tmpnRVLB6 TO /home/<user>/.ansible/tmp/ansible-tmp-1480423293.84-86346344087207/command\\r\\n<XXXXX3> SSH: EXEC sshpass -d21 sftp -o BatchMode=no -b - -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o User=<user> -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r '[XXXXX3]'\\r\\n<XXXXX2> ESTABLISH SSH CONNECTION FOR USER: <user>\\r\\n<XXXXX2> SSH: EXEC sshpass -d20 ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o User=<user> -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r -tt XXXXX2 '/bin/sh -c '\\\"'\\\"'sudo -H -S -n -u root /bin/sh -c '\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'echo BECOME-SUCCESS-ruzkfjtlzgbojjrcqkwsmvyrqbjlqkvq; LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /home/<user>/.ansible/tmp/ansible-tmp-1480423293.83-231739456228208/command; rm -rf \\\"/home/<user>/.ansible/tmp/ansible-tmp-1480423293.83-231739456228208/\\\" > /dev/null 2>&1'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"' && sleep 0'\\\"'\\\"''\\r\\n<XXXXX3> ESTABLISH SSH CONNECTION FOR USER: <user>\\r\\n<XXXXX3> SSH: EXEC sshpass -d21 ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o User=<user> -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r -tt XXXXX3 '/bin/sh -c '\\\"'\\\"'sudo -H -S -n -u root /bin/sh -c '\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'echo BECOME-SUCCESS-imlcvpsrsyiqbutgbwqjncqupwglioyl; LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /home/<user>/.ansible/tmp/ansible-tmp-1480423293.84-86346344087207/command; rm -rf \\\"/home/<user>/.ansible/tmp/ansible-tmp-1480423293.84-86346344087207/\\\" > /dev/null 2>&1'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"' && sleep 0'\\\"'\\\"''\\r\\nXXXXX3 | SUCCESS | rc=0 >>\\r\\n 13:41:33 up 38 days,  9:14,  1 user,  load average: 0.00, 0.00, 0.00\\r\\n\\r\\n<XXXXX4> PUT /tmp/tmpXJBHQT TO /home/<user>/.ansible/tmp/ansible-tmp-1480423293.84-137653613389320/command\\r\\n<XXXXX4> SSH: EXEC sshpass -d18 sftp -o BatchMode=no -b - -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o User=<user> -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r '[XXXXX4]'\\r\\nXXXXX2 | SUCCESS | rc=0 >>\\r\\n 13:41:34 up 38 days,  8:11, 10 users,  load average: 0.00, 0.00, 0.00\\r\\n\\r\\n<XXXXX4> ESTABLISH SSH CONNECTION FOR USER: <user>\\r\\n<XXXXX4> SSH: EXEC sshpass -d18 ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o User=<user> -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r -tt XXXXX4 '/bin/sh -c '\\\"'\\\"'sudo -H -S -n -u root /bin/sh -c '\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'echo BECOME-SUCCESS-hafdetflhotpilnjdzjaagamprxblawg; LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /home/<user>/.ansible/tmp/ansible-tmp-1480423293.84-137653613389320/command; rm -rf \\\"/home/<user>/.ansible/tmp/ansible-tmp-1480423293.84-137653613389320/\\\" > /dev/null 2>&1'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"' && sleep 0'\\\"'\\\"''\\r\\nXXXXX4 | SUCCESS | rc=0 >>\\r\\n 13:41:33 up 26 days,  1:16,  1 user,  load average: 0.00, 0.00, 0.00\\r\\n\\r\\n<XXXXX1> PUT /tmp/tmpXJBHQT TO /home/<user>/.ansible/tmp/ansible-tmp-1480423293.83-223315962231458/command\\r\\n<XXXXX1> SSH: EXEC sshpass -d19 sftp -o BatchMode=no -b - -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o User=<user> -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r '[XXXXX1]'\\r\\n<XXXXX1> ESTABLISH SSH CONNECTION FOR USER: <user>\\r\\n<XXXXX1> SSH: EXEC sshpass -d19 ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o User=<user> -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r -tt XXXXX1 '/bin/sh -c '\\\"'\\\"'sudo -H -S -n -u root /bin/sh -c '\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'echo BECOME-SUCCESS-qodqnawzjywbdlugkfynvmkpczcswokg; LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /home/<user>/.ansible/tmp/ansible-tmp-1480423293.83-223315962231458/command; rm -rf \\\"/home/<user>/.ansible/tmp/ansible-tmp-1480423293.83-223315962231458/\\\" > /dev/null 2>&1'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"' && sleep 0'\\\"'\\\"''\\r\\nXXXXX1 | SUCCESS | rc=0 >>\\r\\n 13:41:45 up 26 days,  1:13,  1 user,  load average: 0.00, 0.00, 0.00\\r\\n[Debug_ansible_shell.txt](https://github.com/ansible/ansible/files/645452/Debug_ansible_shell.txt)\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"shell\", \n    \"component_raw\": \"shell\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19214\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/commands/shell.py\", \n    \"summary\": \"When running a remote command with the module shell in ansible, for a list of servers and with sudo,\\n\\nthe command run fine in the remote servers but the ansible command never return to the linux prompt. Crtl+C doesnt work for cancel. strace of the process shows an infinite loop for the ansible process. The only way to finish the run is to kill the ansible process.\", \n    \"title\": \"Ad-hoc shell module freeze and never return to linux prompt\"\n  }, \n  \"19216\": {\n    \"ansible_version\": \"ansible 2.1.0.0\", \n    \"body\": \"<!---\\r\\nPlease verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\ndatadog_monitor\\r\\n\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\ndatadog_monitor makes changes every time. This is especially annoying as datadog has a way to notify folks when a monitor changes\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nMake any call to datadog_monitor twice\\r\\n\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nOK\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nCHANGED\\r\\n\\r\\nOriginal Issue: https://github.com/ansible/ansible-modules-extras/issues/3046\\r\\n\", \n    \"component_name\": \"datadog_monitor\", \n    \"component_raw\": \"datadog_monitor\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19216\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/monitoring/datadog_monitor.py\", \n    \"summary\": \"datadog_monitor makes changes every time. This is especially annoying as datadog has a way to notify folks when a monitor changes\", \n    \"title\": \"datadog_monitor is not idempotent\"\n  }, \n  \"19217\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 5d05b9b4da) last updated 2016/12/12 105525 (GMT +200)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\ndatadog_monitor\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel 5d05b9b4da) last updated 2016/12/12 10:55:25 (GMT +200)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nExcluded the field \\\"matching_downtimes\\\" from the equality check, it is only set on the existing JSON, not the one which is build by the module.\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\nBefore:\\r\\n```\\r\\nTASK [ansible-galaxy-datadog-basic-monitors : Basic Datadog monitors] **********\\r\\nchanged: [testserver] => (item={u'query': u'avg(last_5m):max:system.load.5', u'message': u'System load too high', u'name': u'[load.5]', u'condition': u'>6'})\\r\\n```\\r\\nAfter:\\r\\n```\\r\\nTASK [ansible-galaxy-datadog-basic-monitors : Basic Datadog monitors] **********\\r\\nok: [testserver] => (item={u'query': u'avg(last_5m):max:system.load.5', u'message': u'System load too high', u'name': u'[load.5]', u'condition': u'>6'})\\r\\n```\\r\\n\\r\\nFixes: #19216\", \n    \"component_name\": \"datadog_monitor\", \n    \"component_raw\": \"datadog_monitor\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19217\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"community_review\", \n      \"module\", \n      \"owner_pr\"\n    ], \n    \"module_match\": \"lib/ansible/modules/monitoring/datadog_monitor.py\", \n    \"summary\": \"Excluded the field \\\"matching_downtimes\\\" from the equality check, it is only set on the existing JSON, not the one which is build by the module.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nBefore:\\n\\n```\\n\\nTASK [ansible-galaxy-datadog-basic-monitors : Basic Datadog monitors] **********\\n\\nchanged: [testserver] => (item={u'query': u'avg(last_5m):max:system.load.5', u'message': u'System load too high', u'name': u'[load.5]', u'condition': u'>6'})\\n\\n```\\n\\nAfter:\\n\\n```\\n\\nTASK [ansible-galaxy-datadog-basic-monitors : Basic Datadog monitors] **********\\n\\nok: [testserver] => (item={u'query': u'avg(last_5m):max:system.load.5', u'message': u'System load too high', u'name': u'[load.5]', u'condition': u'>6'})\\n\\n```\\n\\n\\n\\nFixes: #19216\", \n    \"title\": \"datadog_monitor: Idempotence fix\"\n  }, \n  \"19218\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"_From @Vye on September 15, 2016 22:41_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\nwin_owner\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nWindows 2012\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nadsisearch doesn't seem to work remotely. I'm not a Windows expert so I can't explain why this is but it may make sense to try a different method of retrieving the SID?\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n- win_owner:\\n  path: \\\"{{ app_dir }}\\\"\\n  user: user@domain.com\\n```\\n\\nTo reproduce outside of ansible, execute the following commands remotely. They will work executed locally over remote desktop.\\n\\n``` powershell\\nInvoke-Command -Computer <hostname> {\\n    $Searcher = [adsisearcher]\\\"\\\"\\n    $Searcher.Filter = \\\"userPrincipalName=user@domain.com\\\"\\n    $Searcher.FindOne()\\n}\\nException calling \\\"FindOne\\\" with \\\"0\\\" argument(s): \\\"An operations error occurred.\\n\\\"\\n    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException\\n    + FullyQualifiedErrorId : DirectoryServicesCOMException\\n```\\n\\nThis may not be the right way, but this worked for me:\\n\\n```\\n     Else\\n     {\\n         #Search by samaccountname\\n         $objUser = New-Object System.Security.Principal.NTAccount($accountName.Split('@')[1], $accountName.Split('@')[0])\\n         return $objUser.Translate([System.Security.Principal.SecurityIdentifier]).Value\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nExpected to set ownership of the directory to user@domain.com.\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with high verbosity (-vvvv) -->\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nAn exception occurred during task execution. The full traceback is:\\nAt C:\\\\Users\\\\user\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1473973366.48-112492909054822\\\\win_owner.ps1:296 char:9\\n+         $result = $Searcher.FindOne()\\n+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\nfatal: [host.domain.com]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"invocation\\\": {\\\"module_name\\\": \\\"win_owner\\\"}, \\\"msg\\\": \\\"Exception calling \\\\\\\"FindOne\\\\\\\" with \\\\\\\"0\\\\\\\" argument(s): \\\\\\\"An operations error occurred.\\\\r\\\\n\\\\\\\"\\\"}\\n```\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#2933_\", \n    \"component_name\": \"win_owner\", \n    \"component_raw\": \"win_owner\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19218\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_owner.ps1\", \n    \"summary\": \"adsisearch doesn't seem to work remotely. I'm not a Windows expert so I can't explain why this is but it may make sense to try a different method of retrieving the SID?\", \n    \"title\": \"win_owner adsisearcher doesn't work remotely\"\n  }, \n  \"19219\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 43714f859a) last updated 2016/11/25 124609 (GMT +200)\\nlib/ansible/modules/core (detached HEAD dedfe2becf) last updated 2016/11/25 124638 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD 43bb97bc37) last updated 2016/11/25 125529 (GMT +200)\\nconfig file = /home/jswetzen/vagrant/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n- win_acl\\r\\n- win_owner\\r\\n- win_share\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel 43714f859a) last updated 2016/11/25 12:46:09 (GMT +200)\\r\\n  lib/ansible/modules/core: (detached HEAD dedfe2becf) last updated 2016/11/25 12:46:38 (GMT +200)\\r\\n  lib/ansible/modules/extras: (detached HEAD 43bb97bc37) last updated 2016/11/25 12:55:29 (GMT +200)\\r\\n  config file = /home/jswetzen/vagrant/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nADSISearcher is not allowed to be used remotely on Windows Server 2012 R2, at least not without specific credentials. Hence, these components fail when trying to get the user SID. In the referenced issue #2933, @Vye proposed this way of getting the SID instead. It's shorter and works remotely.\\r\\n\\r\\nI have verified that the SID is correctly identified in the different cases for $accountName:\\r\\n- If the User Principal Name is used, user@domain\\r\\n- If the account is specified as domain\\\\user\\r\\n- If the domain is the computer name (that case is not affected)\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnnn\\\" in your commit\\r\\nmessage and your description; but you should still explain what the change does.\\r\\n-->\\r\\n\\r\\n<!--- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\nansible 2.3.0 (devel 43714f859a) last updated 2016/11/25 12:46:09 (GMT +200)\\r\\n  lib/ansible/modules/core: (detached HEAD dedfe2becf) last updated 2016/11/25 12:46:38 (GMT +200)\\r\\n  lib/ansible/modules/extras: (detached HEAD 9d76271ef1) last updated 2016/11/25 12:56:36 (GMT +200)\\r\\n  config file = /home/jswetzen/vagrant/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"win_acl\", \n    \"component_raw\": \"- win_acl\\n- win_owner\\n- win_share\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19219\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"core_review\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_owner.ps1\", \n    \"summary\": \"ADSISearcher is not allowed to be used remotely on Windows Server 2012 R2, at least not without specific credentials. Hence, these components fail when trying to get the user SID. In the referenced issue #2933, @Vye proposed this way of getting the SID instead. It's shorter and works remotely.\\n\\n\\n\\nI have verified that the SID is correctly identified in the different cases for $accountName:\\n\\n- If the User Principal Name is used, user@domain\\n\\n- If the account is specified as domain\\\\user\\n\\n- If the domain is the computer name (that case is not affected)\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\nansible 2.3.0 (devel 43714f859a) last updated 2016/11/25 12:46:09 (GMT +200)\\n\\n  lib/ansible/modules/core: (detached HEAD dedfe2becf) last updated 2016/11/25 12:46:38 (GMT +200)\\n\\n  lib/ansible/modules/extras: (detached HEAD 9d76271ef1) last updated 2016/11/25 12:56:36 (GMT +200)\\n\\n  config file = /home/jswetzen/vagrant/ansible.cfg\\n\\n  configured module search path = Default w/o overrides\\n\\n```\", \n    \"title\": \"Get user SID in a way that works on Windows 2012 too (#2933)\"\n  }, \n  \"19220\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nsetup_module\\r\\n\\r\\n##### SUMMARY\\r\\nNow setup module supports shell-style wildcards from python `fnmatch`. But this does not allow to specify multiple entries if their names are not a pattern. For example, I can not collect both `ansible_hostname` and `ansible_all_ipv4_addresses`, `ansible_all_ipv6_addresses`. It would be convenient to specify multiple wildcards divided by ',' character:\\r\\n```sh\\r\\nansible all -m setup -a \\\"filter=ansible_hostname,ansible_all_ipv?_addresses\\\"\\r\\n```\", \n    \"component_name\": \"setup_module\", \n    \"component_raw\": \"setup_module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19220\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/setup.py\", \n    \"summary\": \"Now setup module supports shell-style wildcards from python `fnmatch`. But this does not allow to specify multiple entries if their names are not a pattern. For example, I can not collect both `ansible_hostname` and `ansible_all_ipv4_addresses`, `ansible_all_ipv6_addresses`. It would be convenient to specify multiple wildcards divided by ',' character:\\n\\n```sh\\n\\nansible all -m setup -a \\\"filter=ansible_hostname,ansible_all_ipv?_addresses\\\"\\n\\n```\", \n    \"title\": \"setup module: multiple filter wildcards [feature]\"\n  }, \n  \"19222\": {\n    \"ansible_version\": \"v2.3 (devel branch)\", \n    \"body\": \"<!---\\r\\nPlease verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3 (devel branch)\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nThe vmware_guest module requires a dict for the networks customizations, the example shows this:\\r\\n\\r\\n```yaml\\r\\n        networks:\\r\\n          '192.168.1.0/24':\\r\\n            network: 'VM Network'\\r\\n            gateway: '192.168.1.1' \\r\\n```\\r\\n\\r\\nWhich is problematic if the **192.168.1.0/24** is variable, which in most cases will be.\\r\\nAnsible does not allow to template the key-part of a dictionary.\\r\\n\\r\\nMy proposal is that we change this interface to use a normal list, there is no need to use a dictionary in this case.\\r\\n\\r\\n```yaml\\r\\n        networks:\\r\\n        - name: 'VM Network'\\r\\n          network: '192.168.1.0/24':\\r\\n          gateway: '192.168.1.1' \\r\\n```\\r\\n\\r\\nI have a patch available to make this change and would propose we fix this before this is being released to the public.\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19222\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"The vmware_guest module requires a dict for the networks customizations, the example shows this:\\n\\n\\n\\n```yaml\\n\\n        networks:\\n\\n          '192.168.1.0/24':\\n\\n            network: 'VM Network'\\n\\n            gateway: '192.168.1.1' \\n\\n```\\n\\n\\n\\nWhich is problematic if the **192.168.1.0/24** is variable, which in most cases will be.\\n\\nAnsible does not allow to template the key-part of a dictionary.\\n\\n\\n\\nMy proposal is that we change this interface to use a normal list, there is no need to use a dictionary in this case.\\n\\n\\n\\n```yaml\\n\\n        networks:\\n\\n        - name: 'VM Network'\\n\\n          network: '192.168.1.0/24':\\n\\n          gateway: '192.168.1.1' \\n\\n```\\n\\n\\n\\nI have a patch available to make this change and would propose we fix this before this is being released to the public.\", \n    \"title\": \"vmware_guest networks option using dict is problematic\"\n  }, \n  \"19223\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_lc\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n```\\r\\nThis only allows for using the default KMS keys, but enables encryption\\r\\nat rest without needing to migrate the module to boto3\\r\\n```\", \n    \"component_name\": \"ec2_lc\", \n    \"component_raw\": \"ec2_lc\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19223\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"committer_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_lc.py\", \n    \"summary\": \"```\\n\\nThis only allows for using the default KMS keys, but enables encryption\\n\\nat rest without needing to migrate the module to boto3\\n\\n```\", \n    \"title\": \"ec2_lc.py: Also pass 'encrypted' when adding a volume\"\n  }, \n  \"19224\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_asg\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n```\\r\\nprops doesn't always have an instances key\\r\\n\\r\\nduring 'replace' return changed=False when there are no instances to change.\\r\\n\\r\\nThis primarily occurs when spinning up a new ASG, and avoids people needing\\r\\nseparate plays for creating the ASG and updating the ASG to make changes\\r\\n```\", \n    \"component_name\": \"ec2_asg\", \n    \"component_raw\": \"ec2_asg\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19224\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"committer_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_asg.py\", \n    \"summary\": \"```\\n\\nprops doesn't always have an instances key\\n\\n\\n\\nduring 'replace' return changed=False when there are no instances to change.\\n\\n\\n\\nThis primarily occurs when spinning up a new ASG, and avoids people needing\\n\\nseparate plays for creating the ASG and updating the ASG to make changes\\n\\n```\", \n    \"title\": \"ec2_asg: various fixes\"\n  }, \n  \"19226\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"<!---\\r\\nPlease verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nec2_group\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nMacOS X\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n`ec2_group` creates an all-out egress rule even if the actual egress rule list is empty. This only happens when `purge_egress_rules` is false. Ingress rules won't be created when the ingress rule list is empty and `purge_rules` is false.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\nThe following creates a security group with no inbound rules but an all-out egress rule:\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n    - ec2_group:\\r\\n        name: development-test\\r\\n        description: \\\"Development Test\\\"\\r\\n        vpc_id:  vpc-12345\\r\\n        purge_rules: False\\r\\n        rules: []\\r\\n        purge_rules_egress: False\\r\\n        rules_egress: []\\r\\n```\\r\\n\\r\\nThis leads to a security group with no inbound or outbound rules:\\r\\n```\\r\\n    - ec2_group:\\r\\n        name: development-test\\r\\n        description: \\\"Development Test\\\"\\r\\n        vpc_id:  vpc-12345\\r\\n        purge_rules: False\\r\\n        rules: []\\r\\n        purge_rules_egress: True\\r\\n        rules_egress: []\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nThe behaviour for inbound and outbound rules together with the purge flags should be consistent.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nThe behaviour for inbound and outbound rules together with the respective purge flags is not consistent. Inbound rules won't be created regardless of the value of `purge_rules`. Outbound rules won't be created only if the egress rule list is empty and the value of `purge_egress_rules` is `True`.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"ec2_group\", \n    \"component_raw\": \"ec2_group\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19226\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_group.py\", \n    \"summary\": \"`ec2_group` creates an all-out egress rule even if the actual egress rule list is empty. This only happens when `purge_egress_rules` is false. Ingress rules won't be created when the ingress rule list is empty and `purge_rules` is false.\", \n    \"title\": \"ec2_group creates all-out egress rule on creation even if egress rule list is empty\"\n  }, \n  \"19227\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file = /home/michael/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n- cronvar\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = /home/michael/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nGot bug in case when module is run as uprivileged user: it always fails because cron requires sudo when `-u` option is specified.\\r\\nWhen `user:` parameter is not set, cronvar tries to make changes for root.\\r\\n\\r\\nSo I made it behaves exactly like cron module when handling self.user.\\r\\n\\r\\n<!--- Paste verbatim command output below, e.g. before and after your change -->\\r\\nplaybook:\\r\\n```\\r\\n$ cat a.yml\\r\\n---\\r\\n- hosts: ansible\\r\\n  tasks:\\r\\n    - name: Add var to crontab\\r\\n      cronvar:\\r\\n        name: \\\"TEST\\\"\\r\\n        value: \\\"Test\\\"\\r\\n```\\r\\nbefore:\\r\\n```\\r\\nUsing /home/michael/.ansible.cfg as config file\\r\\n\\r\\nPLAYBOOK: a.yml ****************************************************************\\r\\n1 plays in a.yml\\r\\n\\r\\nPLAY [ansible] *****************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\n...\\r\\nok: [localhost]\\r\\n\\r\\nTASK [Add var to crontab] ******************************************************\\r\\ntask path: /home/michael/repos/ansible/a.yml:4\\r\\n...\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"backup\\\": false,\\r\\n            \\\"cron_file\\\": null,\\r\\n            \\\"insertafter\\\": null,\\r\\n            \\\"insertbefore\\\": null,\\r\\n            \\\"name\\\": \\\"TEST\\\",\\r\\n            \\\"state\\\": \\\"present\\\",\\r\\n            \\\"user\\\": null,\\r\\n            \\\"value\\\": \\\"Test\\\"\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"cronvar\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"must be privileged to use -u\\\\n\\\"\\r\\n}\\r\\n        to retry, use: --limit @/home/michael/repos/ansible/a.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=1\\r\\n```\\r\\nafter:\\r\\n```\\r\\nPLAY [ansible] ******************************************************************************************************************************************************************************\\r\\n\\r\\nTASK [Gathering Facts] **********************************************************************************************************************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [Add var to crontab] *******************************************************************************************************************************************************************\\r\\nchanged: [localhost]\\r\\n\\r\\nPLAY RECAP **********************************************************************************************************************************************************************************\\r\\nlocalhost                  : ok=2    changed=1    unreachable=0    failed=0\\r\\n```\", \n    \"component_name\": \"cronvar\", \n    \"component_raw\": \"- cronvar\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19227\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"shipit\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/cronvar.py\", \n    \"summary\": \"Got bug in case when module is run as uprivileged user: it always fails because cron requires sudo when `-u` option is specified.\\n\\nWhen `user:` parameter is not set, cronvar tries to make changes for root.\\n\\n\\n\\nSo I made it behaves exactly like cron module when handling self.user.\\n\\n\\n\\n\\n\\nplaybook:\\n\\n```\\n\\n$ cat a.yml\\n\\n---\\n\\n- hosts: ansible\\n\\n  tasks:\\n\\n    - name: Add var to crontab\\n\\n      cronvar:\\n\\n        name: \\\"TEST\\\"\\n\\n        value: \\\"Test\\\"\\n\\n```\\n\\nbefore:\\n\\n```\\n\\nUsing /home/michael/.ansible.cfg as config file\\n\\n\\n\\nPLAYBOOK: a.yml ****************************************************************\\n\\n1 plays in a.yml\\n\\n\\n\\nPLAY [ansible] *****************************************************************\\n\\n\\n\\nTASK [setup] *******************************************************************\\n\\n...\\n\\nok: [localhost]\\n\\n\\n\\nTASK [Add var to crontab] ******************************************************\\n\\ntask path: /home/michael/repos/ansible/a.yml:4\\n\\n...\\n\\nfatal: [localhost]: FAILED! => {\\n\\n    \\\"changed\\\": false,\\n\\n    \\\"failed\\\": true,\\n\\n    \\\"invocation\\\": {\\n\\n        \\\"module_args\\\": {\\n\\n            \\\"backup\\\": false,\\n\\n            \\\"cron_file\\\": null,\\n\\n            \\\"insertafter\\\": null,\\n\\n            \\\"insertbefore\\\": null,\\n\\n            \\\"name\\\": \\\"TEST\\\",\\n\\n            \\\"state\\\": \\\"present\\\",\\n\\n            \\\"user\\\": null,\\n\\n            \\\"value\\\": \\\"Test\\\"\\n\\n        },\\n\\n        \\\"module_name\\\": \\\"cronvar\\\"\\n\\n    },\\n\\n    \\\"msg\\\": \\\"must be privileged to use -u\\\\n\\\"\\n\\n}\\n\\n        to retry, use: --limit @/home/michael/repos/ansible/a.retry\\n\\n\\n\\nPLAY RECAP *********************************************************************\\n\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=1\\n\\n```\\n\\nafter:\\n\\n```\\n\\nPLAY [ansible] ******************************************************************************************************************************************************************************\\n\\n\\n\\nTASK [Gathering Facts] **********************************************************************************************************************************************************************\\n\\nok: [localhost]\\n\\n\\n\\nTASK [Add var to crontab] *******************************************************************************************************************************************************************\\n\\nchanged: [localhost]\\n\\n\\n\\nPLAY RECAP **********************************************************************************************************************************************************************************\\n\\nlocalhost                  : ok=2    changed=1    unreachable=0    failed=0\\n\\n```\", \n    \"title\": \"Fix cronvar fail when run without user\"\n  }, \n  \"19229\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 3072d75bcc)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nswarm_service\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel 3072d75bcc)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThis PR introduces a new module: swarm_service\\r\\nthis module accepts parameters mapping those of the ``docker service (create|update)`` command.\\r\\nService updates will use swarm facilities, requiring service rebuild (remove -> create) only if strictly necessary (service network updating, as per https://github.com/docker/docker/issues/25876). Other modification will be run 'live'\\r\\n\\r\\nThis module requires a docker-py version more recent than commit https://github.com/docker/docker-py/commit/3ac73a285b2f370f6aa300d8a55c5af55660d0f4, which corrects some parameters.\\r\\n\\r\\nPartially fixes #4607\", \n    \"component_name\": \"swarm_service\", \n    \"component_raw\": \"swarm_service\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19229\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"docker\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_swarm_service.py\", \n    \"summary\": \"This PR introduces a new module: swarm_service\\n\\nthis module accepts parameters mapping those of the ``docker service (create|update)`` command.\\n\\nService updates will use swarm facilities, requiring service rebuild (remove -> create) only if strictly necessary (service network updating, as per https://github.com/docker/docker/issues/25876). Other modification will be run 'live'\\n\\n\\n\\nThis module requires a docker-py version more recent than commit https://github.com/docker/docker-py/commit/3ac73a285b2f370f6aa300d8a55c5af55660d0f4, which corrects some parameters.\\n\\n\\n\\nPartially fixes #4607\", \n    \"title\": \"add docker_swarm_service module\"\n  }, \n  \"19231\": {\n    \"ansible_version\": \"2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\nFeature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n`lib/ansible/modules/system/service.py `\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n`2.2.0.0`\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nAfter [package management](https://github.com/ansible/ansible/pull/19072) it's the last of 2 main parts of any distro -- an init system.\\r\\n\\r\\nThis adds full support for `simpleinit-msb` used in [Source Mage](http://sourcemage.org).\\r\\n\\r\\n[The init](http://sourcemage.org/Init) system is very simple and unique to Source Mage, based on the [Linux Boot Scripts](http://www.safe-mbox.com/~rgooch/linux/boot-scripts/) design pattern.\\r\\n\\r\\nIt uses `telinit` binary to manage init scripts in the system, move them between runlevels, enable/disable, and even install and remove them:\\r\\n\\r\\n```text\\r\\ntelinit run <script> [<args>]        run init <script> with arguments <args>\\r\\ntelinit switch <rlvl>                switch to runlevel <rlvl>\\r\\ntelinit enable [<script> ... ]       enable and start <script> if not enabled\\r\\ntelinit disable [<script> ... ]      stop and disable <script> if not disabled\\r\\ntelinit bootenable [<script> ... ]   enable <script> if not enabled\\r\\ntelinit bootdisable [<script> ... ]  disable <script> if not disabled\\r\\ntelinit delete [<script> ... ]       delete <script> if disabled\\r\\ntelinit enabled                      list enabled startup scripts\\r\\ntelinit disabled                     list disabled startup scripts\\r\\ntelinit list                         list startup scripts and their runlevels\\r\\ntelinit runlevels                    list all runlevels\\r\\ntelinit runlevel                     print the highest completed runlevel\\r\\ntelinit move <script> <rlvl>         move <script> to runlevel <rlvl>\\r\\ntelinit install <file> <rlvl>        install <file> into runlevel <rlvl>\\r\\ntelinit spellinstall <spell>         install <spell>'s init or xinetd scripts\\r\\n```\\r\\n\\r\\nI've also managed to add some protection for non-existing scripts inside Ansible code.\", \n    \"component_name\": \"lib/ansible/ s/system/service.py\", \n    \"component_raw\": \"`lib/ansible/modules/system/service.py `\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19231\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"c:module_utils/facts\", \n      \"feature\", \n      \"module\", \n      \"module_util\", \n      \"needs_revision\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/service.py\", \n    \"summary\": \"After [package management](https://github.com/ansible/ansible/pull/19072) it's the last of 2 main parts of any distro -- an init system.\\n\\n\\n\\nThis adds full support for `simpleinit-msb` used in [Source Mage](http://sourcemage.org).\\n\\n\\n\\n[The init](http://sourcemage.org/Init) system is very simple and unique to Source Mage, based on the [Linux Boot Scripts](http://www.safe-mbox.com/~rgooch/linux/boot-scripts/) design pattern.\\n\\n\\n\\nIt uses `telinit` binary to manage init scripts in the system, move them between runlevels, enable/disable, and even install and remove them:\\n\\n\\n\\n```text\\n\\ntelinit run <script> [<args>]        run init <script> with arguments <args>\\n\\ntelinit switch <rlvl>                switch to runlevel <rlvl>\\n\\ntelinit enable [<script> ... ]       enable and start <script> if not enabled\\n\\ntelinit disable [<script> ... ]      stop and disable <script> if not disabled\\n\\ntelinit bootenable [<script> ... ]   enable <script> if not enabled\\n\\ntelinit bootdisable [<script> ... ]  disable <script> if not disabled\\n\\ntelinit delete [<script> ... ]       delete <script> if disabled\\n\\ntelinit enabled                      list enabled startup scripts\\n\\ntelinit disabled                     list disabled startup scripts\\n\\ntelinit list                         list startup scripts and their runlevels\\n\\ntelinit runlevels                    list all runlevels\\n\\ntelinit runlevel                     print the highest completed runlevel\\n\\ntelinit move <script> <rlvl>         move <script> to runlevel <rlvl>\\n\\ntelinit install <file> <rlvl>        install <file> into runlevel <rlvl>\\n\\ntelinit spellinstall <spell>         install <spell>'s init or xinetd scripts\\n\\n```\\n\\n\\n\\nI've also managed to add some protection for non-existing scripts inside Ansible code.\", \n    \"title\": \"Support for simpleinit-msb init system\"\n  }, \n  \"19232\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /path/to/application/playbooks/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nAll file modules (template, lineinfile, etc)\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /path/to/application/playbooks/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\nN/A (not related, but yes I have changed it)\\r\\n\\r\\n```\\r\\n[defaults]\\r\\nhash_behaviour = merge\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nSometimes validators look at given filenames and behaves depending on it, so default naming of tmp files breaks them.\\r\\n\\r\\nFor example, next task will not validate:\\r\\n\\r\\n```yaml\\r\\n- name: 'SuperApp Systemd configuration'\\r\\n  template:\\r\\n    src:  superapp.service\\r\\n    dest: /etc/systemd/system/superapp.service\\r\\n    validate: 'systemd-analyze verify %s'\\r\\n  become: yes\\r\\n```\\r\\n\\r\\nBecause `systemd-analyze verify` will look to the passed filename and will expect that it will be in `name.unittype` format, so it can guess what it is (service or socket or mount\\u2026) and validate it appropriately. But Ansible pass it a tmp filename like `/home/user/.ansible/tmp/ansible-tmp-1481553589.23-30890879795771/source` and it fails.  Also it will try to load any referenced units and validate against them (and if we create them in the same ansible-playbook run it will be very helpful to have them in the same tmp directory with the same names).\\r\\n\\r\\nSee the man for more info: https://www.freedesktop.org/software/systemd/man/systemd-analyze.html\\r\\n\\r\\n##### FEATURE IDEA\\r\\n\\r\\nAllow to specify in playbooks:\\r\\n\\r\\n 1. That tmp filename should be the same as target filename `/home/user/.ansible/tmp/ansible-tmp-1481553589.23-30890879795771/superapp.service` for example above.\\r\\n\\r\\n 2. That for some files (for example in the same task with `with_items`) the same tmp directory should be used.\\r\\n\\r\\n##### RELATED ISSUES\\r\\n\\r\\n 1. https://github.com/ansible/ansible/issues/19243\\r\\n\", \n    \"component_name\": \"all file  s (template lineinfile etc)\", \n    \"component_raw\": \"All file modules (template, lineinfile, etc)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19232\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/file.py\", \n    \"summary\": \"Sometimes validators look at given filenames and behaves depending on it, so default naming of tmp files breaks them.\\n\\n\\n\\nFor example, next task will not validate:\\n\\n\\n\\n```yaml\\n\\n- name: 'SuperApp Systemd configuration'\\n\\n  template:\\n\\n    src:  superapp.service\\n\\n    dest: /etc/systemd/system/superapp.service\\n\\n    validate: 'systemd-analyze verify %s'\\n\\n  become: yes\\n\\n```\\n\\n\\n\\nBecause `systemd-analyze verify` will look to the passed filename and will expect that it will be in `name.unittype` format, so it can guess what it is (service or socket or mount) and validate it appropriately. But Ansible pass it a tmp filename like `/home/user/.ansible/tmp/ansible-tmp-1481553589.23-30890879795771/source` and it fails.  Also it will try to load any referenced units and validate against them (and if we create them in the same ansible-playbook run it will be very helpful to have them in the same tmp directory with the same names).\\n\\n\\n\\nSee the man for more info: https://www.freedesktop.org/software/systemd/man/systemd-analyze.html\\n\\n\\n\\n##### FEATURE IDEA\\n\\n\\n\\nAllow to specify in playbooks:\\n\\n\\n\\n 1. That tmp filename should be the same as target filename `/home/user/.ansible/tmp/ansible-tmp-1481553589.23-30890879795771/superapp.service` for example above.\\n\\n\\n\\n 2. That for some files (for example in the same task with `with_items`) the same tmp directory should be used.\\n\\n\\n\\n##### RELATED ISSUES\\n\\n\\n\\n 1. https://github.com/ansible/ansible/issues/19243\", \n    \"title\": \"Allow to customize tmp directory and file names for template validation\"\n  }, \n  \"19233\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/vagrant/ansibox/ansible.cfg\\nconfigured module search path = [library]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nModule unarchive.\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/vagrant/ansibox/ansible.cfg\\r\\n  configured module search path = ['library']\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nPR ansible/ansible-modules-core#3926 added check of \\\"Mod time differs\\\" in tarballs to fix ansible/ansible-modules-core#3901, but it breaks the idempotence when module parameter `keep_newer` by always launching an unarchive action which does nothing.\\r\\n\\r\\n##### STEPS TO REPRODUCE ISSUE\\r\\n\\r\\n1. prepare tar file from folder, make it demo.tar\\r\\n2. run this command in playbook\\r\\n```\\r\\nunarchive:\\r\\n  src: /opt/packages/demo.tar\\r\\n  dest: /opt/app/\\r\\n  keep_newer: yes\\r\\n```\\r\\n3. update content of any file, make newer demo.tar\\r\\n4. run the same playbook\\r\\n\\r\\nEXPECTED RESULTS\\r\\n\\r\\nThe task should be idempotent,\\r\\n\\r\\nACTUAL RESULTS\\r\\n\\r\\nThe task is reported as `changed`.\", \n    \"component_name\": \"unarchive.\", \n    \"component_raw\": \"Module unarchive.\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19233\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"core_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/unarchive.py\", \n    \"summary\": \"PR ansible/ansible-modules-core#3926 added check of \\\"Mod time differs\\\" in tarballs to fix ansible/ansible-modules-core#3901, but it breaks the idempotence when module parameter `keep_newer` by always launching an unarchive action which does nothing.\", \n    \"title\": \"Fix `TgzArchive.is_unarchived` when `keep_newer: yes`\"\n  }, \n  \"19234\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Bugfix Pull Request\\r\\n##### COMPONENT NAME\\r\\n\\r\\nvsphere_guest\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\nansible 2.3.0\\r\\n##### SUMMARY\\r\\n\\r\\nFixes the issue(https://github.com/ansible/ansible-modules-core/issues/4755) - Defining more than 7 disks using vm_disk causes an error and fails VM creation.\\r\\n- Skips index 7 for disks, as by default the virtual SCSI controller is assigned to virtual device node (z:7)\\r\\n- For more than 15 disks:\\r\\n  - Automatically adds a required new SCSI controller & attach disks to it.\\r\\n### Define vm_disk more than 15:\\r\\n\\r\\n```\\r\\n vm_disk:\\r\\n  disk1:  {datastore: \\\"Storage1\\\", size_gb: 1, type: \\\"thin\\\"}\\r\\n  disk2:  {datastore: \\\"Storage1\\\", size_gb: 1, type: \\\"thin\\\"}\\r\\n  disk3:  {datastore: \\\"Storage1\\\", size_gb: 1, type: \\\"thin\\\"}\\r\\n  disk4:  {datastore: \\\"Storage1\\\", size_gb: 1, type: \\\"thin\\\"}\\r\\n  .\\r\\n  .\\r\\n  .\\r\\n  disk29:  {datastore: \\\"Storage1\\\", size_gb: 1, type: \\\"thin\\\"}\\r\\n  disk30:  {datastore: \\\"Storage1\\\", size_gb: 1, type: \\\"thin\\\"}\\r\\n  disk31:  {datastore: \\\"Storage1\\\", size_gb: 1, type: \\\"thin\\\"}\\r\\n  disk32:  {datastore: \\\"Storage1\\\", size_gb: 1, type: \\\"thin\\\"}\\r\\n```\\r\\n## BEFORE:\\r\\n\\r\\n```\\r\\n_Traceback (most recent call last):\\r\\n  File \\\"/tmp/ansible_fTxUMO/ansible_module_vsphere_guest.py\\\", line 1909, in <module>\\r\\n    main()\\r\\n  File \\\"/tmp/ansible_fTxUMO/ansible_module_vsphere_guest.py\\\", line 1897, in main\\r\\n    state=state\\r\\n  File \\\"/tmp/ansible_fTxUMO/ansible_module_vsphere_guest.py\\\", line 1446, in create_vm\\r\\n    task.get_error_message())\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/pysphere/vi_task.py\\\", line 82, in get_error_message\\r\\n    self.__poll_task_info()\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/pysphere/vi_task.py\\\", line 120, in __poll_task_info\\r\\n    raise e\\r\\npysphere.resources.vi_exception.VIException: [Not Connected]: Must call 'connect' before invoking this method_\\r\\n```\\r\\n## AFTER:\\r\\n\\r\\n```\\r\\n_TASK [vsphere_guest] ***********************************************************\\r\\nchanged: [localhost] => {\\\"ansible_facts\\\": {\\\"hw_guest_full_name\\\": \\\"CentOS 4/5/6/7 (64-bit)\\\", \\\"hw_guest_id\\\": \\\"centos64Guest\\\", \\\"hw_interfaces\\\": [], \\\"hw_memtotal_mb\\\": 512, \\\"hw_name\\\": \\\"newvm001\\\", \\\"hw_power_status\\\": \\\"POWERED OFF\\\", \\\"hw_processor_count\\\": 1, \\\"hw_product_uuid\\\": \\\"564d248f-fea1-2d17-6a6e-58a31ea2998d\\\", \\\"module_hw\\\": true}, \\\"changed\\\": true, \\\"changes\\\": \\\"Created VM newvm001\\\"}_\\r\\n```\\r\\n\", \n    \"component_name\": \"vsphere_guest\", \n    \"component_raw\": \"vsphere_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19234\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\", \n    \"summary\": \"Fixes the issue(https://github.com/ansible/ansible-modules-core/issues/4755) - Defining more than 7 disks using vm_disk causes an error and fails VM creation.\\n\\n- Skips index 7 for disks, as by default the virtual SCSI controller is assigned to virtual device node (z:7)\\n\\n- For more than 15 disks:\\n\\n  - Automatically adds a required new SCSI controller & attach disks to it.\\n\\n### Define vm_disk more than 15:\\n\\n\\n\\n```\\n\\n vm_disk:\\n\\n  disk1:  {datastore: \\\"Storage1\\\", size_gb: 1, type: \\\"thin\\\"}\\n\\n  disk2:  {datastore: \\\"Storage1\\\", size_gb: 1, type: \\\"thin\\\"}\\n\\n  disk3:  {datastore: \\\"Storage1\\\", size_gb: 1, type: \\\"thin\\\"}\\n\\n  disk4:  {datastore: \\\"Storage1\\\", size_gb: 1, type: \\\"thin\\\"}\\n\\n  .\\n\\n  .\\n\\n  .\\n\\n  disk29:  {datastore: \\\"Storage1\\\", size_gb: 1, type: \\\"thin\\\"}\\n\\n  disk30:  {datastore: \\\"Storage1\\\", size_gb: 1, type: \\\"thin\\\"}\\n\\n  disk31:  {datastore: \\\"Storage1\\\", size_gb: 1, type: \\\"thin\\\"}\\n\\n  disk32:  {datastore: \\\"Storage1\\\", size_gb: 1, type: \\\"thin\\\"}\\n\\n```\\n\\n## BEFORE:\\n\\n\\n\\n```\\n\\n_Traceback (most recent call last):\\n\\n  File \\\"/tmp/ansible_fTxUMO/ansible_module_vsphere_guest.py\\\", line 1909, in <module>\\n\\n    main()\\n\\n  File \\\"/tmp/ansible_fTxUMO/ansible_module_vsphere_guest.py\\\", line 1897, in main\\n\\n    state=state\\n\\n  File \\\"/tmp/ansible_fTxUMO/ansible_module_vsphere_guest.py\\\", line 1446, in create_vm\\n\\n    task.get_error_message())\\n\\n  File \\\"/usr/local/lib/python2.7/site-packages/pysphere/vi_task.py\\\", line 82, in get_error_message\\n\\n    self.__poll_task_info()\\n\\n  File \\\"/usr/local/lib/python2.7/site-packages/pysphere/vi_task.py\\\", line 120, in __poll_task_info\\n\\n    raise e\\n\\npysphere.resources.vi_exception.VIException: [Not Connected]: Must call 'connect' before invoking this method_\\n\\n```\\n\\n## AFTER:\\n\\n\\n\\n```\\n\\n_TASK [vsphere_guest] ***********************************************************\\n\\nchanged: [localhost] => {\\\"ansible_facts\\\": {\\\"hw_guest_full_name\\\": \\\"CentOS 4/5/6/7 (64-bit)\\\", \\\"hw_guest_id\\\": \\\"centos64Guest\\\", \\\"hw_interfaces\\\": [], \\\"hw_memtotal_mb\\\": 512, \\\"hw_name\\\": \\\"newvm001\\\", \\\"hw_power_status\\\": \\\"POWERED OFF\\\", \\\"hw_processor_count\\\": 1, \\\"hw_product_uuid\\\": \\\"564d248f-fea1-2d17-6a6e-58a31ea2998d\\\", \\\"module_hw\\\": true}, \\\"changed\\\": true, \\\"changes\\\": \\\"Created VM newvm001\\\"}_\\n\\n```\", \n    \"title\": \"vsphere_guest : fix issue #4755 - Defining more than 7 disks using vm_disk causes an error and fails VM creation.\"\n  }, \n  \"19235\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`docker_image.py`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\ndevel\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThis fixes the changed event for docker_image in force mode to not always be True.\\r\\n\\r\\nThis is a take over from ansible/ansible-modules-core/pull/4623\\r\\n\", \n    \"component_name\": \"docker_image.py\", \n    \"component_raw\": \"`docker_image.py`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19235\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"committer_review\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_image.py\", \n    \"summary\": \"This fixes the changed event for docker_image in force mode to not always be True.\\n\\n\\n\\nThis is a take over from ansible/ansible-modules-core/pull/4623\", \n    \"title\": \"Fix changed event for docker_image in force mode\"\n  }, \n  \"19239\": {\n    \"ansible_version\": \"ansible 2.3.0 (list_modules 245503f3ba) last updated 2016/12/12 113916 (GMT -400)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\n* `lib/ansible/cli/playbook.py`\\r\\n* `lib/ansible/executor/playbook_executor.py`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (list_modules 245503f3ba) last updated 2016/12/12 11:39:16 (GMT -400)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nAdd a ansible-playbook --list-modules parameter to allow playbook\\r\\nauthors to audit the modules used by their playbook.  Similar to\\r\\n`--list-tasks`, the modules are listed per play, in addition to\\r\\na playbook summary.  The lists of modules are ordered by frequency.\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n$ ansible-playbook -i inventory install.yml --list-modules  \\r\\n\\r\\nplaybook: install.yml\\r\\n\\r\\n  play #1 (tower:database): tower:database\\tTAGS: []\\r\\n    modules:\\r\\n      fail: 9\\r\\n      set_fact: 2\\r\\n      debug: 1\\r\\n      setup: 1\\r\\n\\r\\n  play #2 (all): Group nodes by OS distribution\\tTAGS: []\\r\\n    modules:\\r\\n      group_by: 1\\r\\n\\r\\n  play #3 (RedHat-7*:CentOS-7*:Ubuntu-14.04:Ubuntu-16.04:OracleLinux-7*): Group supported distributions\\tTAGS: []\\r\\n    modules:\\r\\n      group_by: 1\\r\\n\\r\\n  play #4 (!supported): Ensure all node OS distributions are supported\\tTAGS: []\\r\\n    modules:\\r\\n      fail: 1\\r\\n\\r\\n  play #5 (tower:database): Define role discovered variables, usable throughout the playbook\\tTAGS: []\\r\\n    modules:\\r\\n      command: 16\\r\\n      file: 15\\r\\n      template: 10\\r\\n      service: 7\\r\\n      stat: 5\\r\\n      include_vars: 5\\r\\n      wait_for: 3\\r\\n      set_fact: 3\\r\\n      copy: 2\\r\\n      postgresql_user: 1\\r\\n      slurp: 1\\r\\n      seboolean: 1\\r\\n      postgresql_db: 1\\r\\n\\r\\n  play #6 (tower): Sanity check and prep Tower node(s)\\tTAGS: []\\r\\n    modules:\\r\\n      fail: 9\\r\\n      command: 5\\r\\n      service: 3\\r\\n      slurp: 1\\r\\n      stat: 1\\r\\n\\r\\n  play #7 (database): Install postgres database node\\tTAGS: []\\r\\n    modules:\\r\\n      stat: 11\\r\\n      command: 9\\r\\n      apt: 6\\r\\n      template: 6\\r\\n      file: 5\\r\\n      yum: 5\\r\\n      firewalld: 4\\r\\n      copy: 4\\r\\n      include_vars: 3\\r\\n      service: 3\\r\\n      ini_file: 3\\r\\n      wait_for: 2\\r\\n      set_fact: 2\\r\\n      postgresql_user: 1\\r\\n      slurp: 1\\r\\n      apt_key: 1\\r\\n      apt_repository: 1\\r\\n      postgresql_db: 1\\r\\n\\r\\n  play #8 (tower): Install Tower node(s)\\tTAGS: []\\r\\n    modules:\\r\\n      command: 33\\r\\n      file: 18\\r\\n      template: 17\\r\\n      stat: 15\\r\\n      service: 10\\r\\n      include_vars: 7\\r\\n      apt: 6\\r\\n      copy: 6\\r\\n      set_fact: 5\\r\\n      yum: 5\\r\\n      lineinfile: 4\\r\\n      wait_for: 4\\r\\n      firewalld: 4\\r\\n      ini_file: 3\\r\\n      slurp: 2\\r\\n      rabbitmq_vhost: 1\\r\\n      rabbitmq_plugin: 1\\r\\n      apt_repository: 1\\r\\n      seboolean: 1\\r\\n      rabbitmq_user: 1\\r\\n      apt_key: 1\\r\\n      postgresql_user: 1\\r\\n      postgresql_db: 1\\r\\n\\r\\n  module summary:\\r\\n      command: 63\\r\\n      file: 38\\r\\n      template: 33\\r\\n      stat: 32\\r\\n      service: 23\\r\\n      fail: 19\\r\\n      include_vars: 15\\r\\n      apt: 12\\r\\n      copy: 12\\r\\n      set_fact: 12\\r\\n      yum: 10\\r\\n      wait_for: 9\\r\\n      firewalld: 8\\r\\n      ini_file: 6\\r\\n      slurp: 5\\r\\n      lineinfile: 4\\r\\n      postgresql_user: 3\\r\\n      postgresql_db: 3\\r\\n      apt_repository: 2\\r\\n      seboolean: 2\\r\\n      group_by: 2\\r\\n      apt_key: 2\\r\\n      rabbitmq_vhost: 1\\r\\n      rabbitmq_plugin: 1\\r\\n      rabbitmq_user: 1\\r\\n      setup: 1\\r\\n      debug: 1\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"lib/ansible/cli/playbook.py\", \n    \"component_raw\": \"* `lib/ansible/cli/playbook.py`\\n* `lib/ansible/executor/playbook_executor.py`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19239\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:cli/\", \n      \"c:executor/playbook_executor\", \n      \"feature\", \n      \"in progress\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Add a ansible-playbook --list-modules parameter to allow playbook\\n\\nauthors to audit the modules used by their playbook.  Similar to\\n\\n`--list-tasks`, the modules are listed per play, in addition to\\n\\na playbook summary.  The lists of modules are ordered by frequency.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n$ ansible-playbook -i inventory install.yml --list-modules  \\n\\n\\n\\nplaybook: install.yml\\n\\n\\n\\n  play #1 (tower:database): tower:database\\tTAGS: []\\n\\n    modules:\\n\\n      fail: 9\\n\\n      set_fact: 2\\n\\n      debug: 1\\n\\n      setup: 1\\n\\n\\n\\n  play #2 (all): Group nodes by OS distribution\\tTAGS: []\\n\\n    modules:\\n\\n      group_by: 1\\n\\n\\n\\n  play #3 (RedHat-7*:CentOS-7*:Ubuntu-14.04:Ubuntu-16.04:OracleLinux-7*): Group supported distributions\\tTAGS: []\\n\\n    modules:\\n\\n      group_by: 1\\n\\n\\n\\n  play #4 (!supported): Ensure all node OS distributions are supported\\tTAGS: []\\n\\n    modules:\\n\\n      fail: 1\\n\\n\\n\\n  play #5 (tower:database): Define role discovered variables, usable throughout the playbook\\tTAGS: []\\n\\n    modules:\\n\\n      command: 16\\n\\n      file: 15\\n\\n      template: 10\\n\\n      service: 7\\n\\n      stat: 5\\n\\n      include_vars: 5\\n\\n      wait_for: 3\\n\\n      set_fact: 3\\n\\n      copy: 2\\n\\n      postgresql_user: 1\\n\\n      slurp: 1\\n\\n      seboolean: 1\\n\\n      postgresql_db: 1\\n\\n\\n\\n  play #6 (tower): Sanity check and prep Tower node(s)\\tTAGS: []\\n\\n    modules:\\n\\n      fail: 9\\n\\n      command: 5\\n\\n      service: 3\\n\\n      slurp: 1\\n\\n      stat: 1\\n\\n\\n\\n  play #7 (database): Install postgres database node\\tTAGS: []\\n\\n    modules:\\n\\n      stat: 11\\n\\n      command: 9\\n\\n      apt: 6\\n\\n      template: 6\\n\\n      file: 5\\n\\n      yum: 5\\n\\n      firewalld: 4\\n\\n      copy: 4\\n\\n      include_vars: 3\\n\\n      service: 3\\n\\n      ini_file: 3\\n\\n      wait_for: 2\\n\\n      set_fact: 2\\n\\n      postgresql_user: 1\\n\\n      slurp: 1\\n\\n      apt_key: 1\\n\\n      apt_repository: 1\\n\\n      postgresql_db: 1\\n\\n\\n\\n  play #8 (tower): Install Tower node(s)\\tTAGS: []\\n\\n    modules:\\n\\n      command: 33\\n\\n      file: 18\\n\\n      template: 17\\n\\n      stat: 15\\n\\n      service: 10\\n\\n      include_vars: 7\\n\\n      apt: 6\\n\\n      copy: 6\\n\\n      set_fact: 5\\n\\n      yum: 5\\n\\n      lineinfile: 4\\n\\n      wait_for: 4\\n\\n      firewalld: 4\\n\\n      ini_file: 3\\n\\n      slurp: 2\\n\\n      rabbitmq_vhost: 1\\n\\n      rabbitmq_plugin: 1\\n\\n      apt_repository: 1\\n\\n      seboolean: 1\\n\\n      rabbitmq_user: 1\\n\\n      apt_key: 1\\n\\n      postgresql_user: 1\\n\\n      postgresql_db: 1\\n\\n\\n\\n  module summary:\\n\\n      command: 63\\n\\n      file: 38\\n\\n      template: 33\\n\\n      stat: 32\\n\\n      service: 23\\n\\n      fail: 19\\n\\n      include_vars: 15\\n\\n      apt: 12\\n\\n      copy: 12\\n\\n      set_fact: 12\\n\\n      yum: 10\\n\\n      wait_for: 9\\n\\n      firewalld: 8\\n\\n      ini_file: 6\\n\\n      slurp: 5\\n\\n      lineinfile: 4\\n\\n      postgresql_user: 3\\n\\n      postgresql_db: 3\\n\\n      apt_repository: 2\\n\\n      seboolean: 2\\n\\n      group_by: 2\\n\\n      apt_key: 2\\n\\n      rabbitmq_vhost: 1\\n\\n      rabbitmq_plugin: 1\\n\\n      rabbitmq_user: 1\\n\\n      setup: 1\\n\\n      debug: 1\\n\\n```\", \n    \"title\": \"Add support for --list-modules\"\n  }, \n  \"19243\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"_From @diego-treitos on December 1, 2016 16:37_\\n\\n##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n- template\\r\\n- copy\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nWhen you validate configuration files that include additional files with relative paths, the validation fails bacause those included files are not found.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nFor example, I have an nginx configuration file called `/etc/nginx/includes.d/php.conf` that includes a file called `fastcgi_params` which is inside the `/etc/nginx` path and nginx always executes from this path so everything works fine. However, when I try to validate the configuration, I get this:\\r\\n\\r\\n```\\r\\nTASK [nginx : Add nginx configuration] *****************************************\\r\\nfatal: [test]: FAILED! => {\\\"changed\\\": true, \\\"exit_status\\\": 1, \\\"failed\\\": true, \\\"msg\\\": \\\"failed to validate\\\", \\\"stderr\\\": \\\"nginx: [emerg] open() \\\\\\\"/root/.ansible/tmp/ansible-tmp-1480609035.98-258840759926753/fastcgi_params\\\\\\\" failed (2: No such file or directory) in /etc/nginx/includes.d/php.conf:19\\\\nnginx: configuration file /root/.ansible/tmp/ansible-tmp-1480609035.98-258840759926753/source test failed\\\\n\\\", \\\"stdout\\\": \\\"\\\", \\\"stdout_lines\\\": []}\\r\\n```\\r\\n\\r\\nIt would be great if you could provide an additional option for validation, like `validate_cwd` so the validation process would change to this directory before the test. In this case, setting `validate_cwd` to `/etc/nginx` should make the validation pass.\\r\\n\\r\\nOf course, the workaround is to always use absolute paths, but I think this might be a handy option to have.\\n\\n_Copied from original issue: ansible/ansible-modules-core#5784_\", \n    \"component_name\": \"template\", \n    \"component_raw\": \"- template\\n- copy\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19243\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/template.py\", \n    \"summary\": \"When you validate\", \n    \"title\": \"Validating configuration files that include files with relative paths\"\n  }, \n  \"19248\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file = /home/grastogi/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nnetwork/avi\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = /home/grastogi/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nNew Avi Ansible modules. They provide full configuration and API support for Avi Vantage Solution. The modules honor impotency and depend on pip package avisdk.\\r\\nAdded code to \\r\\nDependencies: avisdk, requests\\r\\nAvi Version: 16.3.3\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"network/avi\", \n    \"component_raw\": \"network/avi\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19248\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"module\", \n      \"module_util\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"networking\", \n      \"new_module\", \n      \"new_plugin\", \n      \"test\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/avi/avi_vsdatascriptset.py\", \n    \"summary\": \"New Avi Ansible modules. They provide full\", \n    \"title\": \"Avi Networks Ansible modules.\"\n  }, \n  \"19249\": {\n    \"ansible_version\": \"ansible 2.0.1.0\\nAnsible\", \n    \"body\": \"_From @MichaelBaydoun on March 4, 2016 16:57_\\n\\n##### Issue Type:\\n- Bug Report\\n##### Component Name:\\n\\niam_policy module\\n##### Ansible Version:\\n\\nansible 2.0.1.0\\n##### Ansible Configuration:\\n\\nno changes to ansible.cfg\\n##### Environment:\\n\\ncontrol server Redhat 6.7\\ntarget server Redhat 6.7\\n##### Summary:\\n\\niam_policy policy_document parameter does not use role file structure\\n##### Steps To Reproduce:\\n\\naws.yml\\n\\n```\\n\\n---\\n- hosts: localhost\\n  connection: local\\n  gather_facts: true\\n  roles:\\n    - aws\\n```\\n\\nroles/aws/task/main.yml\\n\\n```\\n\\n---\\n- name: configure iam policy\\n  iam_policy:\\n    iam_name: test\\n    iam_type: group\\n    policy_name: test\\n    policy_document: test.json\\n#    policy_document: roles/aws/files/test.json\\n    region: us-east-1\\n    state: present\\n```\\n\\nroles/aws/files/test.json\\n\\n```\\n\\n---\\n<any valid policy>\\n```\\n\\nrun play\\nansible-playbook aws.yml, task fails, no such file or directory test.json\\n\\nhowever, if you change the policy_document argument to: roles/aws/files/test.json and it works\\n##### Expected Results:\\n\\nPolicy is created\\n##### Actual Results:\\n\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: IOError: [Errno 2] No such file or directory: 'test.json'\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"parsed\\\": false}\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#3189_\", \n    \"component_name\": \"iam_policy\", \n    \"component_raw\": \":\\niam_policy module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19249\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/iam_policy.py\", \n    \"summary\": \":\\n\\niam_policy policy_document parameter does not use role file structure\", \n    \"title\": \"iam_policy not using role structure for policy_document path\"\n  }, \n  \"19251\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.3.0 (asa_removal e7d6592dd3) last updated 2016/12/12 202741 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n* asa_config\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.3.0 (asa_removal e7d6592dd3) last updated 2016/12/12 20:27:41 (GMT +200)\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nCisco ASA reports errors when trying to remove an object used by another item.\\r\\n\\r\\n```\\r\\nobject-group network OGA-GOOGLE-DNS\\r\\n network-object host 8.8.8.8\\r\\naccess-list ANSIBLE-DNS extended permit udp any object-group OGA-GOOGLE-DNS eq domain\\r\\n\\r\\nns2903-asa-02(config)#\\r\\nns2903-asa-02(config)# no object-group network OGA-GOOGLE-DNS\\r\\nRemoving object-group (OGA-GOOGLE-DNS) not allowed, it is being used.\\r\\nns2903-asa-02(config)#\\r\\n```\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\nThis patch looks for the \\\"^Removing ... not allowed\\\" string and reports this as an error. The included test will check for this in the future.\\r\\n\\r\\nFixes #18947\\r\\n\\r\\n\", \n    \"component_name\": \"asa_config\", \n    \"component_raw\": \"* asa_config\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19251\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"module_util\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Cisco ASA reports errors when trying to remove an object used by another item.\\n\\n\\n\\n```\\n\\nobject-group network OGA-GOOGLE-DNS\\n\\n network-object host 8.8.8.8\\n\\naccess-list ANSIBLE-DNS extended permit udp any object-group OGA-GOOGLE-DNS eq domain\\n\\n\\n\\nns2903-asa-02(config)#\\n\\nns2903-asa-02(config)# no object-group network OGA-GOOGLE-DNS\\n\\nRemoving object-group (OGA-GOOGLE-DNS) not allowed, it is being used.\\n\\nns2903-asa-02(config)#\\n\\n```\\n\\n\\n\\n\\n\\nThis patch looks for the \\\"^Removing ... not allowed\\\" string and reports this as an error. The included test will check for this in the future.\\n\\n\\n\\nFixes #18947\", \n    \"title\": \"Check for removal not allowed errors\"\n  }, \n  \"19261\": {\n    \"ansible_version\": \"2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nsystem/service.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nI ended up in a situation where a service I use (freeradius) does not support the status command via init.d, and using the basic pattern matching fails, because I'm managing freeradius using monit/runit with the -f option (and i'd like that up and running).\\r\\n\\r\\nWe wanted to have the service disabled and stopped (via init.d) while still allowing another instance of it to run via runit. In its current state, the task would always report as \\\"changed\\\", because:\\r\\n- Without the pattern, it always detects it as running, runs the stop command, and change will be reported.\\r\\n- With the pattern, it detects the runit managed free radius, runs the stop command, and change will be reported.\\r\\n\\r\\nI have mirrored the implementation started in ##2249 for adding regex to the find module. It has been implemented in service.py\\r\\n\\r\\n<!--- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\nN/A. I am just introducing a backend change to the service module for pattern detection to determine state.\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"system/service.py\", \n    \"component_raw\": \"system/service.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19261\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"core_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/service.py\", \n    \"summary\": \"I ended up in a situation where a service I use (freeradius) does not support the status command via init.d, and using the basic pattern matching fails, because I'm managing freeradius using monit/runit with the -f option (and i'd like that up and running).\\n\\n\\n\\nWe wanted to have the service disabled and stopped (via init.d) while still allowing another instance of it to run via runit. In its current state, the task would always report as \\\"changed\\\", because:\\n\\n- Without the pattern, it always detects it as running, runs the stop command, and change will be reported.\\n\\n- With the pattern, it detects the runit managed free radius, runs the stop command, and change will be reported.\\n\\n\\n\\nI have mirrored the implementation started in ##2249 for adding regex to the find module. It has been implemented in service.py\\n\\n\\n\\n\\n\\n```\\n\\nN/A. I am just introducing a backend change to the service module for pattern detection to determine state.\\n\\n```\", \n    \"title\": \"system/service.py: Add ability to provide a regex to pattern\"\n  }, \n  \"19271\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nPlease verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\ndocker_network\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nNone\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nOS X 10.11.6\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n- name: Create rb1 network\\r\\n    docker_network:\\r\\n      name: rb1\\r\\n      driver: overlay\\r\\n      driver_options:\\r\\n        com.docker.network.driver.overlay.vxlanid_list: \\\"257\\\"\\r\\n        #com.docker.network.bridge.name: rb1\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nShould create overlay network successfully\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nFailed to create overlay network. (However, bridge network works fine)\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [Create rb1 network] **************************************************\\r\\nskipping: [54.166.121.194]\\r\\nfatal: [54.205.203.9]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"Shared connection to 54.205.203.9 closed.\\\\r\\\\n\\\", \\\"module_stdout\\\": \\\"/etc/profile.d/lang.sh: line 19: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory\\\\r\\\\nTraceback (most recent call last):\\\\r\\\\n  File \\\\\\\"/tmp/ansible_tI75uZ/ansible_module_docker_network.py\\\\\\\", line 378, in <module>\\\\r\\\\n    main()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_tI75uZ/ansible_module_docker_network.py\\\\\\\", line 371, in main\\\\r\\\\n    cm = DockerNetworkManager(client)\\\\r\\\\n  File \\\\\\\"/tmp/ansible_tI75uZ/ansible_module_docker_network.py\\\\\\\", line 211, in __init__\\\\r\\\\n    self.present()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_tI75uZ/ansible_module_docker_network.py\\\\\\\", line 335, in present\\\\r\\\\n    self.create_network()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_tI75uZ/ansible_module_docker_network.py\\\\\\\", line 283, in create_network\\\\r\\\\n    ipam=ipam_config)\\\\r\\\\n  File \\\\\\\"/usr/lib/python2.7/site-packages/docker/utils/decorators.py\\\\\\\", line 35, in wrapper\\\\r\\\\n    return f(self, *args, **kwargs)\\\\r\\\\n  File \\\\\\\"/usr/lib/python2.7/site-packages/docker/api/network.py\\\\\\\", line 62, in create_network\\\\r\\\\n    return self._result(res, json=True)\\\\r\\\\n  File \\\\\\\"/usr/lib/python2.7/site-packages/docker/client.py\\\\\\\", line 178, in _result\\\\r\\\\n    self._raise_for_status(response)\\\\r\\\\n  File \\\\\\\"/usr/lib/python2.7/site-packages/docker/client.py\\\\\\\", line 174, in _raise_for_status\\\\r\\\\n    raise errors.APIError(e, response, explanation=explanation)\\\\r\\\\ndocker.errors.APIError: 500 Server Error: Internal Server Error (\\\\\\\"{\\\\\\\"message\\\\\\\":\\\\\\\"rpc error: code = 3 desc = driver name: if driver is specified name is required\\\\\\\"}\\\\\\\")\\\\r\\\\n\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"docker_network\", \n    \"component_raw\": \"docker_network\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19271\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_network.py\", \n    \"summary\": \"\", \n    \"title\": \"Error while creating overlay network\"\n  }, \n  \"19272\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\n- Docs Pull Request\\n##### COMPONENT NAME\\n\\nhostname\\n\", \n    \"component_name\": \"hostname\", \n    \"component_raw\": \"hostname\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19272\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"committer_review\", \n      \"docs\", \n      \"in progress\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/hostname.py\", \n    \"summary\": null, \n    \"title\": \"Add a note to say that *BSD and Solaris are also supported\"\n  }, \n  \"19273\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\necr\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdd or delete Docker repositories in AWS ECS.\\r\\n\\r\\n```\\r\\n- name: create_repo\\r\\n  ecr:\\r\\n    state: present\\r\\n    name: test\\r\\n\\r\\n- name: delete_repo\\r\\n  ecr:\\r\\n    state: absent\\r\\n    name: test\\r\\n    force: yes\\r\\n```\\r\\n\\r\\n```\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [create_repo ] ************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [debug var=ecr] ***********************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"ecr\\\": {\\r\\n        \\\"changed\\\": false, \\r\\n        \\\"repository\\\": [\\r\\n            {                  \\r\\n                \\\"registryId\\\": \\\"000000000000\\\", \\r\\n                \\\"repositoryArn\\\": \\\"arn:aws:ecr:us-west-2:000000000000:repository/test\\\", \\r\\n                \\\"repositoryName\\\": \\\"test\\\", \\r\\n                \\\"repositoryUri\\\": \\\"000000000000.dkr.ecr.us-west-2.amazonaws.com/test\\\"\\r\\n            }\\r\\n        ], \\r\\n        \\\"state\\\": \\\"present\\\"\\r\\n    }\\r\\n}\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"ecr\", \n    \"component_raw\": \"ecr\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19273\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ecr.py\", \n    \"summary\": \"Add or delete Docker repositories in AWS ECS.\\n\\n\\n\\n```\\n\\n- name: create_repo\\n\\n  ecr:\\n\\n    state: present\\n\\n    name: test\\n\\n\\n\\n- name: delete_repo\\n\\n  ecr:\\n\\n    state: absent\\n\\n    name: test\\n\\n    force: yes\\n\\n```\\n\\n\\n\\n```\\n\\nPLAY [localhost] ***************************************************************\\n\\n\\n\\nTASK [create_repo ] ************************************************************\\n\\nok: [localhost]\\n\\n\\n\\nTASK [debug var=ecr] ***********************************************************\\n\\nok: [localhost] => {\\n\\n    \\\"ecr\\\": {\\n\\n        \\\"changed\\\": false, \\n\\n        \\\"repository\\\": [\\n\\n            {                  \\n\\n                \\\"registryId\\\": \\\"000000000000\\\", \\n\\n                \\\"repositoryArn\\\": \\\"arn:aws:ecr:us-west-2:000000000000:repository/test\\\", \\n\\n                \\\"repositoryName\\\": \\\"test\\\", \\n\\n                \\\"repositoryUri\\\": \\\"000000000000.dkr.ecr.us-west-2.amazonaws.com/test\\\"\\n\\n            }\\n\\n        ], \\n\\n        \\\"state\\\": \\\"present\\\"\\n\\n    }\\n\\n}\\n\\n```\", \n    \"title\": \"Add AWS ECR module\"\n  }, \n  \"19274\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nPlease verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nhostvars\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nStandard unchanged ansible.cfg used\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nRHEL6\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- \\r\\nA playbook uses group_by to create an adhoc group of hosts. A subsequent playbook in the same run tries to access host facts. If the number of hosts in the adhoc group is small e.g. one to four hosts, facts for all hosts can be accessed. If the number of hosts is larger e.g. eight or more hosts, only facts belonging to the first host can be accessed. The playbook worked on 1.9.4 and 2.1 but in 2.2, ansible issues message \\\"VARIABLE IS NOT DEFINED!\\\" when the playbook tries to access facts from the second or subsequent hosts\\r\\n -->\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nTo reproduce the problem, run the playbook with eight or more hosts. The problem does not occur when the playbook is run with less than five hosts.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n- name: Populate host group with host names\\r\\n# hosts: host1:host2:host3:hosts4\\r\\n  hosts: host1:host2:host3:hosts4:host5:host6:host7:host8\\r\\n  gather_facts: yes\\r\\n  tasks:\\r\\n  - name: task1\\r\\n    group_by: key='adhoc_group'\\r\\n\\r\\n\\r\\n- name: Run playbook on all hosts in host group \\\"adhoc_group\\\"\\r\\n  hosts: adhoc_group\\r\\n  gather_facts: no\\r\\n  tasks:\\r\\n  - name: task2\\r\\n    debug: var=inventory_hostname\\r\\n\\r\\n\\r\\n- name: Show first host's architecture\\r\\n  hosts: localhost\\r\\n  gather_facts: no\\r\\n  tasks:\\r\\n  - name: task3\\r\\n    debug: var=hostvars[groups['adhoc_group'][0]]['ansible_architecture']\\r\\n\\r\\n\\r\\n- name: Show second host's architecture\\r\\n  hosts: localhost\\r\\n  gather_facts: no\\r\\n  tasks:\\r\\n  - name: task4\\r\\n    debug: var=hostvars[groups['adhoc_group'][1]]['ansible_architecture']\\r\\n```\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- \\r\\n```\\r\\nTASK [task4] *******************************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"hostvars[groups['adhoc_group'][1]]['ansible_architecture']\\\": \\\"x86_64\\\"\\r\\n}\\r\\n```\\r\\n-->\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [task4] *******************************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"hostvars[groups['adhoc_group'][1]]['ansible_architecture']\\\": \\\"VARIABLE IS NOT DEFINED!\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"hostvars\", \n    \"component_raw\": \"hostvars\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19274\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"\", \n    \"title\": \"Ansible 2.2 can only access first host's facts when adhoc group contain many hosts\"\n  }, \n  \"19275\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nPlease verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\napache2_module\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nUbuntu 14.04\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\napache2_module fails to add module, when commands were already added to configuration file and gives apache2ctl error. This setup worked though on ansible 2.1\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n  - name: setup service.conf\\r\\n    template: src=service.conf.j2 dest=/etc/apache2/sites-enabled/service.conf owner=root group=root\\r\\n  - name: add proxy_http module\\r\\n    apache2_module: name={{ item }} state=present\\r\\n    with_items:\\r\\n        - proxy_http\\r\\n```\\r\\nservice.conf.j2\\r\\n```\\r\\n<VirtualHost *:80>\\r\\n        ErrorLog ${APACHE_LOG_DIR}/error.log\\r\\n        CustomLog ${APACHE_LOG_DIR}/access.log custom\\r\\n\\r\\n    ProxyPass /server-status !\\r\\n    ProxyPass / http://localhost:12345/\\r\\n    ProxyPassReverse / http://localhost:12345/\\r\\n\\r\\n</VirtualHost>\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nIn apache configuration directory should be configuration file and modules proxy_http, ssl should be enabled. Config is not applied though(apache2 not restarted).\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nfailed: [servername] (item=proxy_http) => {\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"force\\\": false,\\r\\n            \\\"name\\\": \\\"proxy_http\\\",\\r\\n            \\\"state\\\": \\\"present\\\"\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"apache2_module\\\"\\r\\n    },\\r\\n    \\\"item\\\": \\\"proxy_http\\\",\\r\\n    \\\"msg\\\": \\\"Error executing /usr/sbin/apache2ctl: AH00526: Syntax error on line 9 of /etc/apache2/sites-enabled/service.conf:\\\\nInvalid command 'ProxyPass', perhaps misspelled or defined by a module not included in the server configuration\\\\n\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"apache2_module\", \n    \"component_raw\": \"apache2_module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19275\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/web_infrastructure/apache2_module.py\", \n    \"summary\": \"apache2_module fails to add module, when commands were already added to configuration file and gives apache2ctl error. This setup worked though on ansible 2.1\", \n    \"title\": \"apache2_module fails to add module if module was added to config file already\"\n  }, \n  \"19278\": {\n    \"ansible_version\": \"ansible 2.2\", \n    \"body\": \"<!---\\r\\nPlease verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nno_log\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWhen there is a module which accept some parameter, which has set `no_log=True` and we provide a value for this parameter, then this value is replaced with *** also for other parameters, for example let's say we have a playbook like this:\\r\\n\\r\\n```yaml\\r\\nmy_module:\\r\\n  url: myurl.com\\r\\n  user: admin\\r\\n  password: admin\\r\\n```\\r\\n\\r\\nIf the password in the module is defined as `no_log=True`, then the output of this task will be:\\r\\n\\r\\n```json\\r\\nchanged: [localhost] => {\\r\\n    \\\"ansible_facts\\\": {\\r\\n        \\\"ovirt_auth\\\": {\\r\\n            \\\"url\\\": \\\"myurl.com\\\"\\r\\n        }\\r\\n    }, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n            \\\"username\\\": \\\"********\\\"\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"ovirt_auth\\\"\\r\\n    }\\r\\n}\\r\\n```\\r\\n\\r\\nAs you can see the `username` parameter contains `********`, but there is no reason to obfuscate then, and it can actually cause issuess, if the username should be reused.\", \n    \"component_name\": \"no_log\", \n    \"component_raw\": \"no_log\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19278\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When there is a module which accept some parameter, which has set `no_log=True` and we provide a value for this parameter, then this value is replaced with *** also for other parameters, for example let's say we have a playbook like this:\\n\\n\\n\\n```yaml\\n\\nmy_module:\\n\\n  url: myurl.com\\n\\n  user: admin\\n\\n  password: admin\\n\\n```\\n\\n\\n\\nIf the password in the module is defined as `no_log=True`, then the output of this task will be:\\n\\n\\n\\n```json\\n\\nchanged: [localhost] => {\\n\\n    \\\"ansible_facts\\\": {\\n\\n        \\\"ovirt_auth\\\": {\\n\\n            \\\"url\\\": \\\"myurl.com\\\"\\n\\n        }\\n\\n    }, \\n\\n    \\\"invocation\\\": {\\n\\n        \\\"module_args\\\": {\\n\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\n\\n            \\\"username\\\": \\\"********\\\"\\n\\n        }, \\n\\n        \\\"module_name\\\": \\\"ovirt_auth\\\"\\n\\n    }\\n\\n}\\n\\n```\\n\\n\\n\\nAs you can see the `username` parameter contains `********`, but there is no reason to obfuscate then, and it can actually cause issuess, if the username should be reused.\", \n    \"title\": \"When parameter uses no_log=True, the content of parameter obfuscate also other paramter values\"\n  }, \n  \"19279\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodule extra for windows: `win_scheduled_task`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.1.1.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nRunning ansible on Fedora 23, inside a virtualenv.\\r\\nManaging a Windows 7 virtual machine via `winrm`\\r\\n\\r\\n##### SUMMARY\\r\\nI would like to simply disable a windows scheduled task, but Ansible returns an missing argument\\r\\nerror.\\r\\n\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nI used the `win_scheduled_task` [module ](http://docs.ansible.com/ansible/win_scheduled_task_module.html)\\r\\n```\\r\\n- name: Disable a scheduled task\\r\\n  win_scheduled_task:\\r\\n    name: my_task\\r\\n    state: present\\r\\n    enabled: False\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe playbook should run without any errors.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nActual output :\\r\\n~~~\\r\\nTASK [pre : Disable a task] ****************************************************\\r\\ntask path: ...\\r\\n<192.168.122.30> ESTABLISH WINRM CONNECTION FOR USER: James Krause on PORT 5985 TO 192.168.122.30\\r\\n<192.168.122.30> WINRM CONNECT: transport=plaintext endpoint=http://192.168.122.30:5985/wsman\\r\\n<192.168.122.30> WINRM OPEN SHELL: 10DA06BA-6BB0-4082-890B-E12C454EB98C\\r\\n<192.168.122.30> EXEC Set-StrictMode -Version Latest\\r\\n(New-Item -Type Directory -Path $env:temp -Name \\\"ansible-tmp-1481623489.61-164728055761478\\\").FullName | Write-Host -Separator '';\\r\\n<192.168.122.30> WINRM EXEC u'PowerShell' [u'-NoProfile', u'-NonInteractive', u'-ExecutionPolicy', u'Unrestricted', u'-EncodedCommand', u'UwBlAHQALQBTAHQAcgBpAGMAdABNAG8AZABlACAALQBWAGUAcgBzAGkAbwBuACAATABhAHQAZQBzAHQACgAoAE4AZQB3AC0ASQB0AGUAbQAgAC0AVAB5AHAAZQAgAEQAaQByAGUAYwB0AG8AcgB5ACAALQBQAGEAdABoACAAJABlAG4AdgA6AHQAZQBtAHAAIAAtAE4AYQBtAGUAIAAiAGEAbgBzAGkAYgBsAGUALQB0AG0AcAAtADEANAA4ADEANgAyADMANAA4ADkALgA2ADEALQAxADYANAA3ADIAOAAwADUANQA3ADYAMQA0ADcAOAAiACkALgBGAHUAbABsAE4AYQBtAGUAIAB8ACAAVwByAGkAdABlAC0ASABvAHMAdAAgAC0AUwBlAHAAYQByAGEAdABvAHIAIAAnACcAOwA=']\\r\\n<192.168.122.30> WINRM RESULT u'<Response code 0, out \\\"C:\\\\\\\\Users\\\\\\\\James Kraus\\\", err \\\"\\\">'\\r\\n<192.168.122.30> WINRM STDOUT C:\\\\Users\\\\James Krause\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481623489.61-164728055761478\\r\\n\\r\\n<192.168.122.30> WINRM STDERR \\r\\n<192.168.122.30> PUT \\\"/tmp/tmpIwppVt\\\" TO \\\"C:\\\\Users\\\\James Krause\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481623489.61-164728055761478\\\\win_scheduled_task.ps1\\\"\\r\\n<192.168.122.30> WINRM EXEC 'PowerShell' ['-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'Unrestricted', '-EncodedCommand', 'YgBlAGcAaQBuACAAewAKACQAcABhAHQAaAAgAD0AIAAnAEMAOgBcAFUAcwBlAHIAcwBcAEoAYQBtAGUAcwAgAEsAcgBhAHUAcwBlAFwAQQBwAHAARABhAHQAYQBcAEwAbwBjAGEAbABcAFQAZQBtAHAAXABhAG4AcwBpAGIAbABlAC0AdABtAHAALQAxADQAOAAxADYAMgAzADQAOAA5AC4ANgAxAC0AMQA2ADQANwAyADgAMAA1ADUANwA2ADEANAA3ADgAXAB3AGkAbgBfAHMAYwBoAGUAZAB1AGwAZQBkAF8AdABhAHMAawAuAHAAcwAxACcACgAkAEQAZQBiAHUAZwBQAHIAZQBmAGUAcgBlAG4AYwBlACAAPQAgACIAQwBvAG4AdABpAG4AdQBlACIACgAkAEUAcgByAG8AcgBBAGMAdABpAG8AbgBQAHIAZQBmAGUAcgBlAG4AYwBlACAAPQAgACIAUwB0AG8AcAAiAAoAUwBlAHQALQBTAHQAcgBpAGMAdABNAG8AZABlACAALQBWAGUAcgBzAGkAbwBuACAAMgAKACQAZgBkACAAPQAgAFsAUwB5AHMAdABlAG0ALgBJAE8ALgBGAGkAbABlAF0AOgA6AEMAcgBlAGEAdABlACgAJABwAGEAdABoACkACgAkAHMAaABhADEAIAA9ACAAWwBTAHkAcwB0AGUAbQAuAFMAZQBjAHUAcgBpAHQAeQAuAEMAcgB5AHAAdABvAGcAcgBhAHAAaAB5AC4AUwBIAEEAMQBDAHIAeQBwAHQAbwBTAGUAcgB2AGkAYwBlAFAAcgBvAHYAaQBkAGUAcgBdADoAOgBDAHIAZQBhAHQAZQAoACkACgAkAGIAeQB0AGUAcwAgAD0AIABAACgAKQAgACMAaQBuAGkAdABpAGEAbABpAHoAZQAgAGYAbwByACAAZQBtAHAAdAB5ACAAZgBpAGwAZQAgAGMAYQBzAGUACgB9AAoAcAByAG8AYwBlAHMAcwAgAHsACgAkAGIAeQB0AGUAcwAgAD0AIABbAFMAeQBzAHQAZQBtAC4AQwBvAG4AdgBlAHIAdABdADoAOgBGAHIAbwBtAEIAYQBzAGUANgA0AFMAdAByAGkAbgBnACgAJABpAG4AcAB1AHQAKQAKACQAcwBoAGEAMQAuAFQAcgBhAG4AcwBmAG8AcgBtAEIAbABvAGMAawAoACQAYgB5AHQAZQBzACwAIAAwACwAIAAkAGIAeQB0AGUAcwAuAEwAZQBuAGcAdABoACwAIAAkAGIAeQB0AGUAcwAsACAAMAApACAAfAAgAE8AdQB0AC0ATgB1AGwAbAAKACQAZgBkAC4AVwByAGkAdABlACgAJABiAHkAdABlAHMALAAgADAALAAgACQAYgB5AHQAZQBzAC4ATABlAG4AZwB0AGgAKQAKAH0ACgBlAG4AZAAgAHsACgAkAHMAaABhADEALgBUAHIAYQBuAHMAZgBvAHIAbQBGAGkAbgBhAGwAQgBsAG8AYwBrACgAJABiAHkAdABlAHMALAAgADAALAAgADAAKQAgAHwAIABPAHUAdAAtAE4AdQBsAGwACgAkAGgAYQBzAGgAIAA9ACAAWwBTAHkAcwB0AGUAbQAuAEIAaQB0AEMAbwBuAHYAZQByAHQAZQByAF0AOgA6AFQAbwBTAHQAcgBpAG4AZwAoACQAcwBoAGEAMQAuAEgAYQBzAGgAKQAuAFIAZQBwAGwAYQBjAGUAKAAiAC0AIgAsACAAIgAiACkALgBUAG8ATABvAHcAZQByAEkAbgB2AGEAcgBpAGEAbgB0ACgAKQAKACQAZgBkAC4AQwBsAG8AcwBlACgAKQAKAFcAcgBpAHQAZQAtAE8AdQB0AHAAdQB0ACAAIgB7ACIAIgBzAGgAYQAxACIAIgA6ACIAIgAkAGgAYQBzAGgAIgAiAH0AIgAKAH0A']\\r\\n<192.168.122.30> WINRM PUT \\\"/tmp/tmpIwppVt\\\" to \\\"C:\\\\Users\\\\James Krause\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481623489.61-164728055761478\\\\win_scheduled_task.ps1\\\" (offset=13590 size=13590)\\r\\n<192.168.122.30> WINRM RESULT u'<Response code 0, out \\\"{\\\"sha1\\\":\\\"aa8b51e64c2\\\", err \\\"\\\">'\\r\\n<192.168.122.30> WINRM STDOUT {\\\"sha1\\\":\\\"aa8b51e64c2d206261d3ecbc5236af5d06737f51\\\"}\\r\\n\\r\\n<192.168.122.30> WINRM STDERR \\r\\n<192.168.122.30> EXEC Set-StrictMode -Version Latest\\r\\nTry\\r\\n{\\r\\n& 'C:\\\\Users\\\\James Krause\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481623489.61-164728055761478\\\\win_scheduled_task.ps1'\\r\\n}\\r\\nCatch\\r\\n{\\r\\n$_obj = @{ failed = $true }\\r\\nIf ($_.Exception.GetType)\\r\\n{\\r\\n$_obj.Add('msg', $_.Exception.Message)\\r\\n}\\r\\nElse\\r\\n{\\r\\n$_obj.Add('msg', $_.ToString())\\r\\n}\\r\\nIf ($_.InvocationInfo.PositionMessage)\\r\\n{\\r\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\r\\n}\\r\\nElseIf ($_.ScriptStackTrace)\\r\\n{\\r\\n$_obj.Add('exception', $_.ScriptStackTrace)\\r\\n}\\r\\nTry\\r\\n{\\r\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\r\\n}\\r\\nCatch\\r\\n{\\r\\n}\\r\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\r\\nExit 1\\r\\n}\\r\\nFinally { Remove-Item \\\"C:\\\\Users\\\\James Krause\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481623489.61-164728055761478\\\" -Force -Recurse -ErrorAction SilentlyContinue }\\r\\n<192.168.122.30> WINRM EXEC u'PowerShell' [u'-NoProfile', u'-NonInteractive', u'-ExecutionPolicy', u'Unrestricted', u'-EncodedCommand', u'UwBlAHQALQBTAHQAcgBpAGMAdABNAG8AZABlACAALQBWAGUAcgBzAGkAbwBuACAATABhAHQAZQBzAHQACgBUAHIAeQAKAHsACgAmACAAJwBDADoAXABVAHMAZQByAHMAXABKAGEAbQBlAHMAIABLAHIAYQB1AHMAZQBcAEEAcABwAEQAYQB0AGEAXABMAG8AYwBhAGwAXABUAGUAbQBwAFwAYQBuAHMAaQBiAGwAZQAtAHQAbQBwAC0AMQA0ADgAMQA2ADIAMwA0ADgAOQAuADYAMQAtADEANgA0ADcAMgA4ADAANQA1ADcANgAxADQANwA4AFwAdwBpAG4AXwBzAGMAaABlAGQAdQBsAGUAZABfAHQAYQBzAGsALgBwAHMAMQAnAAoAfQAKAEMAYQB0AGMAaAAKAHsACgAkAF8AbwBiAGoAIAA9ACAAQAB7ACAAZgBhAGkAbABlAGQAIAA9ACAAJAB0AHIAdQBlACAAfQAKAEkAZgAgACgAJABfAC4ARQB4AGMAZQBwAHQAaQBvAG4ALgBHAGUAdABUAHkAcABlACkACgB7AAoAJABfAG8AYgBqAC4AQQBkAGQAKAAnAG0AcwBnACcALAAgACQAXwAuAEUAeABjAGUAcAB0AGkAbwBuAC4ATQBlAHMAcwBhAGcAZQApAAoAfQAKAEUAbABzAGUACgB7AAoAJABfAG8AYgBqAC4AQQBkAGQAKAAnAG0AcwBnACcALAAgACQAXwAuAFQAbwBTAHQAcgBpAG4AZwAoACkAKQAKAH0ACgBJAGYAIAAoACQAXwAuAEkAbgB2AG8AYwBhAHQAaQBvAG4ASQBuAGYAbwAuAFAAbwBzAGkAdABpAG8AbgBNAGUAcwBzAGEAZwBlACkACgB7AAoAJABfAG8AYgBqAC4AQQBkAGQAKAAnAGUAeABjAGUAcAB0AGkAbwBuACcALAAgACQAXwAuAEkAbgB2AG8AYwBhAHQAaQBvAG4ASQBuAGYAbwAuAFAAbwBzAGkAdABpAG8AbgBNAGUAcwBzAGEAZwBlACkACgB9AAoARQBsAHMAZQBJAGYAIAAoACQAXwAuAFMAYwByAGkAcAB0AFMAdABhAGMAawBUAHIAYQBjAGUAKQAKAHsACgAkAF8AbwBiAGoALgBBAGQAZAAoACcAZQB4AGMAZQBwAHQAaQBvAG4AJwAsACAAJABfAC4AUwBjAHIAaQBwAHQAUwB0AGEAYwBrAFQAcgBhAGMAZQApAAoAfQAKAFQAcgB5AAoAewAKACQAXwBvAGIAagAuAEEAZABkACgAJwBlAHIAcgBvAHIAXwByAGUAYwBvAHIAZAAnACwAIAAoACQAXwAgAHwAIABDAG8AbgB2AGUAcgB0AFQAbwAtAEoAcwBvAG4AIAB8ACAAQwBvAG4AdgBlAHIAdABGAHIAbwBtAC0ASgBzAG8AbgApACkACgB9AAoAQwBhAHQAYwBoAAoAewAKAH0ACgBFAGMAaABvACAAJABfAG8AYgBqACAAfAAgAEMAbwBuAHYAZQByAHQAVABvAC0ASgBzAG8AbgAgAC0AQwBvAG0AcAByAGUAcwBzACAALQBEAGUAcAB0AGgAIAA5ADkACgBFAHgAaQB0ACAAMQAKAH0ACgBGAGkAbgBhAGwAbAB5ACAAewAgAFIAZQBtAG8AdgBlAC0ASQB0AGUAbQAgACIAQwA6AFwAVQBzAGUAcgBzAFwASgBhAG0AZQBzACAASwByAGEAdQBzAGUAXABBAHAAcABEAGEAdABhAFwATABvAGMAYQBsAFwAVABlAG0AcABcAGEAbgBzAGkAYgBsAGUALQB0AG0AcAAtADEANAA4ADEANgAyADMANAA4ADkALgA2ADEALQAxADYANAA3ADIAOAAwADUANQA3ADYAMQA0ADcAOAAiACAALQBGAG8AcgBjAGUAIAAtAFIAZQBjAHUAcgBzAGUAIAAtAEUAcgByAG8AcgBBAGMAdABpAG8AbgAgAFMAaQBsAGUAbgB0AGwAeQBDAG8AbgB0AGkAbgB1AGUAIAB9AA==']\\r\\n<192.168.122.30> WINRM RESULT u'<Response code 0, out \\\"{\\\"changed\\\":false,\\\"ms\\\", err \\\"\\\">'\\r\\n<192.168.122.30> WINRM STDOUT {\\\"changed\\\":false,\\\"msg\\\":\\\"Missing required argument: execute\\\",\\\"failed\\\":true}\\r\\n\\r\\n<192.168.122.30> WINRM STDERR \\r\\n<192.168.122.30> WINRM CLOSE SHELL: 10DA06BA-6BB0-4082-890B-E12C454EB98C\\r\\nfatal: [192.168.122.30]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"invocation\\\": {\\\"module_name\\\": \\\"win_scheduled_task\\\"}, \\\"msg\\\": \\\"Missing required argument: execute\\\"}\\r\\n~~~\\r\\nThe error reported is `Missing required argument: execute`.\\r\\nThe execute parameter should not be required here.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nansible-playbook -i '192.168.122.30,' -c winrm site.yml -vvvvv\\r\\n```\\r\\nThanks !\", \n    \"component_name\": \"extra for windows win_scheduled_task\", \n    \"component_raw\": \"module extra for windows: `win_scheduled_task`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19279\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_scheduled_task.ps1\", \n    \"summary\": \"I would like to simply disable a windows scheduled task, but Ansible returns an missing argument\\n\\nerror.\", \n    \"title\": \"win_scheduled_task unable to disable a task\"\n  }, \n  \"19281\": {\n    \"ansible_version\": \"\", \n    \"body\": \"<!---\\r\\nPlease verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nios_command\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nIt would be good if we could pass some sort of confirmation to Cisco devices, For instance when using Ansible within a change control, there has to be some kind of rollback in place. This can be implemented by having a `reload in 15` command before anything else is done, so that the device will reload with it's previous, unchanged configuration after 15 minutes. And, if all goes well, a `reload cancel` command is sent and the new configuration is saved. Currently this can't be done with the Ansible ios modules, because Cisco devices prompt for confirmation after the `reload in ` command, and there is no way to provide this. So a third party module has to be used.\\r\\nHaving something like `confirm: yes` would be great in this situation.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"ios_command\", \n    \"component_raw\": \"ios_command\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19281\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/ios/ios_command.py\", \n    \"summary\": \"It would be good if we could pass some sort of confirmation to Cisco devices, For instance when using Ansible within a change control, there has to be some kind of rollback in place. This can be implemented by having a `reload in 15` command before anything else is done, so that the device will reload with it's previous, unchanged configuration after 15 minutes. And, if all goes well, a `reload cancel` command is sent and the new configuration is saved. Currently this can't be done with the Ansible ios modules, because Cisco devices prompt for confirmation after the `reload in ` command, and there is no way to provide this. So a third party module has to be used.\\n\\nHaving something like `confirm: yes` would be great in this situation.\", \n    \"title\": \"Feature Idea: Cisco IOS confirm option\"\n  }, \n  \"19283\": {\n    \"ansible_version\": \"For Ansible 2.3.\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\nNew Module Pull Request.\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n`hosts`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\nFor Ansible 2.3.\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThis module adds the ability to add, remove and modify records in the `/etc/hosts` file.\", \n    \"component_name\": \"hosts\", \n    \"component_raw\": \"`hosts`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19283\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/hosts.py\", \n    \"summary\": \"This module adds the ability to add, remove and modify records in the `/etc/hosts` file.\", \n    \"title\": \"Adding hosts module\"\n  }, \n  \"19284\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel a28d898c29) last updated 2016/12/13 150408 (GMT +550)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n - Bug\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\n - virt\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel a28d898c29) last updated 2016/12/13 15:04:08 (GMT +550)\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nOS-agnostic\\r\\n\\r\\n##### SUMMARY\\r\\nA task to ensure the VM is shutdown followed by a task to ensure the VM is running sometimes results in the VM not running. This is likely because the shutdown call is not blocking (i.e does not wait for shutdown to happen). Thus the subsequent call to ensure the VM is running becomes a no-op since the `virt` module thinks the VM is already in a `running` state.\\r\\n\\r\\nIdeally the VM/Domain should've been shutdown and restarted with these two tasks, instead the VM just remains shutdown after the play is completed.\\r\\n\\r\\nIdeally the virt module can poll (with a configurable timeout) for the event change (likely using [virConnect::DomainEventRegisterAny](https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventRegisterAny) ) it tried to trigger before returning using the libvirt event listener API.\\r\\n\\r\\nThis can be done in a backwards compatible fashion by adding an additional `timeout` parameter to the module for state changes. If the timeout is set to `0` (can be default), then the module behaves in the non-blocking manner it does at the moment, but if the timeout is a non-zero value, it can block/wait for said amount of seconds before proceeding (if success, or failing on timeout).\\r\\n\\r\\n[Example](https://gist.github.com/toabctl/53f26989ad7634a3168b/) of how this can be done, taken from a random github git.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n - Have an already running Domain/VM\\r\\n - Attempt to shut it down using the `virt` module\\r\\n - Attempt to boot it back up with the `virt` module\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n---\\r\\n- hosts: 127.0.0.1\\r\\n  gather_facts: no\\r\\n  vars:\\r\\n    name: \\\"ansible_vm\\\"\\r\\n  tasks:\\r\\n    # Ensure the VM is not running\\r\\n    - name: Shutdown VM if it's running\\r\\n      virt:\\r\\n        name: \\\"{{ name }}\\\"\\r\\n        state: shutdown\\r\\n        uri: \\\"qemu:///session\\\"\\r\\n      when: vm_is_defined is defined\\r\\n\\r\\n    # DEBUG, added to confirm hypothesis about state still being \\\"running\\\" after shutdown command\\r\\n    #- name: Get status immediately after shutdown\\r\\n    #  virt:\\r\\n    #    name: \\\"{{ name }}\\\"\\r\\n    #    command: status\\r\\n    #    uri: \\\"qemu:///session\\\"\\r\\n    #  when: vm_is_defined is defined\\r\\n\\r\\n    # Boot the VM\\r\\n    - name: Start the VM with new domain definition\\r\\n      virt:\\r\\n        name: \\\"{{ name }}\\\"\\r\\n        state: running\\r\\n        uri: \\\"qemu:///session\\\"\\r\\n\\r\\n    # DEBUG\\r\\n    #- name: Get status immediately after boot\\r\\n    #  virt:\\r\\n    #    name: \\\"{{ name }}\\\"\\r\\n    #    command: status\\r\\n    #    uri: \\\"qemu:///session\\\"\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nThe VM/Domain should've been shutdown and restarted\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\nVM is simply shutdown\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [Shutdown VM if it's running] **********************************************\\r\\nchanged: [127.0.0.1] => {\\r\\n    \\\"changed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"command\\\": null, \\r\\n            \\\"name\\\": \\\"ansible_vm\\\", \\r\\n            \\\"state\\\": \\\"shutdown\\\", \\r\\n            \\\"uri\\\": \\\"qemu:///session\\\", \\r\\n            \\\"xml\\\": null\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"virt\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": 0\\r\\n}\\r\\nTASK [Get status immediately after shutdown] ******************************************************\\r\\nok: [127.0.0.1] => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"command\\\": \\\"status\\\", \\r\\n            \\\"name\\\": \\\"ansible_vm\\\", \\r\\n            \\\"state\\\": null, \\r\\n            \\\"uri\\\": \\\"qemu:///session\\\", \\r\\n            \\\"xml\\\": null\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"virt\\\"\\r\\n    }, \\r\\n    \\\"status\\\": \\\"running\\\"\\r\\n}\\r\\nTASK [Start the VM with new domain definition] *******************************************************************\\r\\nok: [127.0.0.1] => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"command\\\": null, \\r\\n            \\\"name\\\": \\\"ansible_vm\\\", \\r\\n            \\\"state\\\": \\\"running\\\", \\r\\n            \\\"uri\\\": \\\"qemu:///session\\\", \\r\\n            \\\"xml\\\": null\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"virt\\\"\\r\\n    }\\r\\n}\\r\\nTASK [Get status immediately after boot] ****************************************************************************\\r\\nfatal: [127.0.0.1]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"command\\\": \\\"status\\\", \\r\\n            \\\"name\\\": \\\"ansible_vm\\\", \\r\\n            \\\"state\\\": null, \\r\\n            \\\"uri\\\": \\\"qemu:///session\\\", \\r\\n            \\\"xml\\\": null\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"virt\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"virtual machine ansible_vm not found\\\"\\r\\n}\\r\\n\\r\\n$ virsh list\\r\\n Id    Name                           State\\r\\n----------------------------------------------------\\r\\n\\r\\n$ # Shows no running Domains\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"virt\", \n    \"component_raw\": \"- virt\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19284\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/misc/virt.py\", \n    \"summary\": \"A task to ensure the VM is shutdown followed by a task to ensure the VM is running sometimes results in the VM not running. This is likely because the shutdown call is not blocking (i.e does not wait for shutdown to happen). Thus the subsequent call to ensure the VM is running becomes a no-op since the `virt` module thinks the VM is already in a `running` state.\\n\\n\\n\\nIdeally the VM/Domain should've been shutdown and restarted with these two tasks, instead the VM just remains shutdown after the play is completed.\\n\\n\\n\\nIdeally the virt module can poll (with a configurable timeout) for the event change (likely using [virConnect::DomainEventRegisterAny](https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventRegisterAny) ) it tried to trigger before returning using the libvirt event listener API.\\n\\n\\n\\nThis can be done in a backwards compatible fashion by adding an additional `timeout` parameter to the module for state changes. If the timeout is set to `0` (can be default), then the module behaves in the non-blocking manner it does at the moment, but if the timeout is a non-zero value, it can block/wait for said amount of seconds before proceeding (if success, or failing on timeout).\\n\\n\\n\\n[Example](https://gist.github.com/toabctl/53f26989ad7634a3168b/) of how this can be done, taken from a random github git.\", \n    \"title\": \"virt module's state change should be blocking\"\n  }, \n  \"19287\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n \\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nfetch\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\n  hosts file:\\r\\n  [nas]\\r\\n  ds ansible_host=172.20.0.5 ansible_user=admin \\r\\n\\r\\n  ansible.cfg file:\\r\\n  [ssh_connection]\\r\\n  scp_if_ssh=True\\r\\n  [defaults]\\r\\n  hostfile = ./hosts\\r\\n  retry_files_enabled=False #do not create retry files\\r\\n  stdout_callback = json\\r\\n\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nI have ubuntu 16.04 as a control machine and Synology as target host. I would like to fetch an existing file  `test_ans` from the synology at  `/var/services/homes/admin/test_ans`  and copy it over to the control machine at  `/tmp/`. Ansible sees the file, i.e. the stat module in the playbook returns `stat_result.stat.exists==true`  but is not able to fetch it.   \\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\nansible-playbook -i hosts keys.yml -e \\\"target=ds\\\"\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n---\\r\\n- hosts: '{{ target }}'\\r\\n  tasks:\\r\\n  - name: Check admin pub keys are present on synology\\r\\n    stat:\\r\\n      path: /var/services/homes/admin/test_ans\\r\\n    register: stat_result\\r\\n   - name: Downloading pub key\\r\\n    fetch:\\r\\n      src: /var/services/homes/admin/test_ans\\r\\n      dest: /tmp/\\r\\n      flat: yes\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\\"msg\\\": \\\"failed to transfer file to /tmp/test_ans: /var/services/homes/admin/test_ans: No such file or directory\\\\n\\\"\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"fetch\", \n    \"component_raw\": \"fetch\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19287\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/fetch.py\", \n    \"summary\": \"I have ubuntu 16.04 as a control machine and Synology as target host. I would like to fetch an existing file  `test_ans` from the synology at  `/var/services/homes/admin/test_ans`  and copy it over to the control machine at  `/tmp/`. Ansible sees the file, i.e. the stat module in the playbook returns `stat_result.stat.exists==true`  but is not able to fetch it.\", \n    \"title\": \"fetch module: failed to transfer an existing file\"\n  }, \n  \"19289\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file = /Users/user/dev/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nPlease verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = /Users/user/dev/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nThe vmware_guest module does not resize (grow) the template disk if disk and networks settings are given.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n- name: clone vm\\r\\n  vmware_guest:\\r\\n     hostname: vcenter.server\\r\\n     datacenter: DC\\r\\n     username: admin\\r\\n     password: pass\\r\\n     esxi_hostname: esxhost\\r\\n     validate_certs: False\\r\\n     name: \\\"myvm\\\"\\r\\n     state: poweredOn\\r\\n     disk:\\r\\n        - size_gb: 33\\r\\n           type: thin\\r\\n           datastore: \\\"datastore1\\\"\\r\\n     hardware:\\r\\n        memory_mb: 2048\\r\\n        num_cpus: 2\\r\\n        osid: ubuntu64guest\\r\\n        scsi: paravirtual\\r\\n     template: template1\\r\\n     wait_for_ip_address: yes\\r\\n     customize: yes\\r\\n     domain: \\\"domain.tld\\\"\\r\\n     dns_servers: [ '1.2.3.4' ]\\r\\n     ips: \\\"1.2.3.10\\\"\\r\\n     networks: \\r\\n        '1.2.3.0/24':\\r\\n           network: 'VM Network'\\r\\n           gateway: '1.2.3.1' \\r\\n  delegate_to: localhost\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nCloned Vm with custom IP/ Network settings and resized disk (template has one disk with 8GB)\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\ndisk settings get ignored, network settings are applied.\\r\\nIt seems, the disk deviceChange.configSpec gets overwritten with the network settings. In file https://github.com/ansible/ansible-modules-extras/blob/devel/cloud/vmware/vmware_guest.py line 867 replace \\r\\n```\\r\\n# Update the spec with the added NIC\\r\\nclonespec_kwargs['config'].deviceChange = devices\\r\\n```\\r\\nwith \\r\\n```\\r\\n# Update the spec with the added NIC\\r\\nclonespec_kwargs['config'].deviceChange.extend(devices)\\r\\n```\\r\\n\\r\\n\\r\\n\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19289\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"The vmware_guest module does not resize (grow) the template disk if disk and networks settings are given.\", \n    \"title\": \"vmware_guest ignores disk changes when cloning from template\"\n  }, \n  \"19290\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /root/.ansible.cfg\\nconfigured module search path = [/root/.ansible/plugins/library]\", \n    \"body\": \"<!---\\r\\nPlease verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\ngit\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /root/.ansible.cfg\\r\\n  configured module search path = ['/root/.ansible/plugins/library']\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n```\\r\\n### /root/.ansible.cfg\\r\\n[defaults]\\r\\ntransport         = ssh\\r\\nhost_key_checking = False\\r\\ncontrol_path      = /tmp/%%h-%%r\\r\\nssh_args          = -o ControlMaster=no -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ServerAliveInterval=64 -o ServerAliveCountMax=1024 -o Compression=no -o TCPKeepAlive=yes -o VerifyHostKeyDNS=no -o ForwardX11=no -o ForwardAgent=yes\\r\\nlibrary           = $HOME/.ansible/plugins/library\\r\\nroles_path        = $HOME/.ansible/roles\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nUbuntu 16.04.1 LTS (Xenial Xerus)\\r\\nAlthough I believe that this is not OS specific.\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nIf there is no existing ``origin`` remote in a git repository, the git module will fail with the error:\\r\\n\\r\\n```\\r\\nFailed to set a new url ... for origin:  fatal: No such remote 'origin'\\r\\n```\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n---\\r\\n- name: Test git module fuctionality\\r\\n  hosts: localhost\\r\\n  user: root\\r\\n  tasks:\\r\\n    - name: Pre-cache a git repository\\r\\n      git:\\r\\n        repo: \\\"https://git.openstack.org/openstack/keystone\\\"\\r\\n        dest: \\\"{{ git_clone_dest }}\\\"\\r\\n        clone: yes\\r\\n        update: yes\\r\\n    - name: Intentionally remove the repository remote origin\\r\\n      shell: \\\"git remote remove origin\\\"\\r\\n      args:\\r\\n        chdir: \\\"{{ git_clone_dest }}\\\"\\r\\n    - name: Update the git repository\\r\\n      git:\\r\\n        repo: \\\"https://git.openstack.org/openstack/keystone\\\"\\r\\n        dest: \\\"{{ git_clone_dest }}\\\"\\r\\n        clone: yes\\r\\n        update: yes\\r\\n  vars:\\r\\n    git_clone_dest: \\\"{{ lookup('ENV', 'HOME') }}/keystone }}\\\"\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nThe remote 'origin' should be created and have the correct URL set.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"accept_hostkey\\\": false,\\r\\n            \\\"bare\\\": false,\\r\\n            \\\"clone\\\": true,\\r\\n            \\\"depth\\\": null,\\r\\n            \\\"dest\\\": \\\"/root/keystone }}\\\",\\r\\n            \\\"executable\\\": null,\\r\\n            \\\"force\\\": false,\\r\\n            \\\"key_file\\\": null,\\r\\n            \\\"recursive\\\": true,\\r\\n            \\\"reference\\\": null,\\r\\n            \\\"refspec\\\": null,\\r\\n            \\\"remote\\\": \\\"origin\\\",\\r\\n            \\\"repo\\\": \\\"https://git.openstack.org/openstack/keystone\\\",\\r\\n            \\\"ssh_opts\\\": null,\\r\\n            \\\"track_submodules\\\": false,\\r\\n            \\\"umask\\\": null,\\r\\n            \\\"update\\\": true,\\r\\n            \\\"verify_commit\\\": false,\\r\\n            \\\"version\\\": \\\"HEAD\\\"\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"git\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"Failed to set a new url https://git.openstack.org/openstack/keystone for origin:  fatal: No such remote 'origin'\\\\n\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"git\", \n    \"component_raw\": \"git\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19290\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/source_control/git.py\", \n    \"summary\": \"If there is no existing ``origin`` remote in a git repository, the git module will fail with the error:\\n\\n\\n\\n```\\n\\nFailed to set a new url ... for origin:  fatal: No such remote 'origin'\\n\\n```\", \n    \"title\": \"git module: Task fails if 'origin' remote does not exist\"\n  }, \n  \"19294\": {\n    \"ansible_version\": null, \n    \"body\": \"<!---\\r\\nPlease verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nTemplate Module\\r\\n\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\nActually when path doesn't exist the module fails, maybe is good idea create the path if doesn't exist throught a new parameter. \\r\\n\\r\\nThis way, doesn't need an extra task for create the path and could have a more clean an concise code. \\r\\n\\r\\nFor example: \\r\\n```\\r\\n- template:\\r\\n    src: /mytemplates/foo.j2\\r\\n    dest: /etc/file.conf\\r\\n    owner: bin\\r\\n    group: wheel\\r\\n    mode: \\\"u=rw,g=r,o=r\\\"\\r\\n    **create_path: yes**\\r\\n```\\r\\n-->\\r\\n\\r\\nRegards!\", \n    \"component_name\": \"template\", \n    \"component_raw\": \"Template Module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19294\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/template.py\", \n    \"summary\": \"Actually when path doesn't exist the module fails, maybe is good idea create the path if doesn't exist throught a new parameter. \\n\\n\\n\\nThis way, doesn't need an extra task for create the path and could have a more clean an concise code. \\n\\n\\n\\nFor example: \\n\\n```\\n\\n- template:\\n\\n    src: /mytemplates/foo.j2\\n\\n    dest: /etc/file.conf\\n\\n    owner: bin\\n\\n    group: wheel\\n\\n    mode: \\\"u=rw,g=r,o=r\\\"\\n\\n    **create_path: yes**\\n\\n```\\n\\n-->\\n\\n\\n\\nRegards!\", \n    \"title\": \"Template module: create path if doesn't exist\"\n  }, \n  \"19296\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\ngit module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!---\\r\\nPaste verbatim output from \\u201cansible --version\\u201d between quotes below,\\r\\nthis is to help the Ansible team determine if this is a version specific\\r\\nissue which is being fixed.\\r\\n-->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nThis allows passing a private key from a variable (which might be stored in a vault file or retrieved from a secrets store) directly to the module.  The module is then responsible for writing it to a file as required by SSH, and ensuring it is not left dangling at the end.\\r\\n\\r\\nThought: is it necessary to ensure that the file is securely deleted (with `shred`, `srm`, etc)?\", \n    \"component_name\": \"git\", \n    \"component_raw\": \"git module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19296\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"needs_revision\"\n    ], \n    \"module_match\": \"lib/ansible/modules/source_control/git.py\", \n    \"summary\": \"This allows passing a private key from a variable (which might be stored in a vault file or retrieved from a secrets store) directly to the module.  The module is then responsible for writing it to a file as required by SSH, and ensuring it is not left dangling at the end.\\n\\n\\n\\nThought: is it necessary to ensure that the file is securely deleted (with `shred`, `srm`, etc)?\", \n    \"title\": \"Add a parameter `key` to git module\"\n  }, \n  \"19297\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel a10209cbe9) last updated 2016/12/27 220526 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nlookup/fileglob plugin\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel a10209cbe9) last updated 2016/12/27 22:05:26 (GMT +200)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nPR #16630 broke globbing in with_fileglob for absolute paths by\\r\\nchanging from path_dwim_relative to path_dwim_relative_stack. While\\r\\nthe former does something like this (for a path specification like\\r\\n\\\"/tmp/*/some.conf\\\", see Issue #17136 for an example playbook - this\\r\\nplaybook is also shown below)\\r\\n\\r\\n```\\r\\nsearch = [\\\"/tmp/*\\\"]\\r\\nfor candidate in search:\\r\\n    if os.path.exists(candidate):\\r\\n        break\\r\\nreturn candidate\\r\\n```\\r\\n\\r\\nthe check inside path_dwim_relative_stack works slightly differently:\\r\\n\\r\\n```\\r\\nresult = None\\r\\nif os.path.exists(\\\"/tmp/*\\\"):\\r\\n    result = \\\"/tmp/*\\\"\\r\\nreturn result\\r\\n```\\r\\n\\r\\nThe way the loop in the former example works makes path_dwim_relative\\r\\nreturn the last element from the 'search' list even if os.path.exists\\r\\nnever returned True, while path_dwim_relative_stack returns None in\\r\\nthe same case. This ultimately makes the fileglob plugin fail because\\r\\nfind_file_in_search_path returns None now.\\r\\n\\r\\nTo allow asterisks in paths again, this change breaks the search for\\r\\npotential targets out of path_dwim_relative_stack. This function can\\r\\nthen be called from the fileglob plugin to find all potential target\\r\\ndirectories without checking if these dirs (like \\\"/tmp/*\\\") actually\\r\\nexist. fileglob will now apply globbing first and check for the actual\\r\\nexistence of the files _after_ globbing.\\r\\n\\r\\n- Example playbook (from Issue #17136):\\r\\n```\\r\\n---\\r\\n- name: list files\\r\\n  hosts: localhost\\r\\n  tasks:\\r\\n    - name: create test dirs\\r\\n      file: state=directory path={{ item }}\\r\\n      with_items:\\r\\n        - /tmp/foo\\r\\n        - /tmp/bar\\r\\n\\r\\n    - name: create test files\\r\\n      file: state=touch path={{ item }}\\r\\n      with_items:\\r\\n        - /tmp/foo/some.conf\\r\\n        - /tmp/bar/some.conf\\r\\n\\r\\n    - debug: var=item\\r\\n      with_fileglob: \\\"/tmp/*/some.conf\\\"\\r\\n```\\r\\n\\r\\n- Output without this patch (in 2.2.0):\\r\\n```\\r\\nTASK [debug] *******************************************************************\\r\\n [WARNING]: Unable to find '/tmp/*' in expected paths.\\r\\n```\\r\\n\\r\\n- Output before 2.2.0 (more specifically: before MR #16630) and with this patch:\\r\\n```\\r\\nTASK [debug] *******************************************************************\\r\\nok: [localhost] => (item=/tmp/foo/some.conf) => {\\r\\n    \\\"item\\\": \\\"/tmp/foo/some.conf\\\"\\r\\n}\\r\\nok: [localhost] => (item=/tmp/bar/some.conf) => {\\r\\n    \\\"item\\\": \\\"/tmp/bar/some.conf\\\"\\r\\n}\\r\\n```\", \n    \"component_name\": \"lookup/fileglob plugin\", \n    \"component_raw\": \"lookup/fileglob plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19297\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:plugins/lookup\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"PR #16630 broke globbing in with_fileglob for absolute paths by\\n\\nchanging from path_dwim_relative to path_dwim_relative_stack. While\\n\\nthe former does something like this (for a path specification like\\n\\n\\\"/tmp/*/some.conf\\\", see Issue #17136 for an example playbook - this\\n\\nplaybook is also shown below)\\n\\n\\n\\n```\\n\\nsearch = [\\\"/tmp/*\\\"]\\n\\nfor candidate in search:\\n\\n    if os.path.exists(candidate):\\n\\n        break\\n\\nreturn candidate\\n\\n```\\n\\n\\n\\nthe check inside path_dwim_relative_stack works slightly differently:\\n\\n\\n\\n```\\n\\nresult = None\\n\\nif os.path.exists(\\\"/tmp/*\\\"):\\n\\n    result = \\\"/tmp/*\\\"\\n\\nreturn result\\n\\n```\\n\\n\\n\\nThe way the loop in the former example works makes path_dwim_relative\\n\\nreturn the last element from the 'search' list even if os.path.exists\\n\\nnever returned True, while path_dwim_relative_stack returns None in\\n\\nthe same case. This ultimately makes the fileglob plugin fail because\\n\\nfind_file_in_search_path returns None now.\\n\\n\\n\\nTo allow asterisks in paths again, this change breaks the search for\\n\\npotential targets out of path_dwim_relative_stack. This function can\\n\\nthen be called from the fileglob plugin to find all potential target\\n\\ndirectories without checking if these dirs (like \\\"/tmp/*\\\") actually\\n\\nexist. fileglob will now apply globbing first and check for the actual\\n\\nexistence of the files _after_ globbing.\\n\\n\\n\\n- Example playbook (from Issue #17136):\\n\\n```\\n\\n---\\n\\n- name: list files\\n\\n  hosts: localhost\\n\\n  tasks:\\n\\n    - name: create test dirs\\n\\n      file: state=directory path={{ item }}\\n\\n      with_items:\\n\\n        - /tmp/foo\\n\\n        - /tmp/bar\\n\\n\\n\\n    - name: create test files\\n\\n      file: state=touch path={{ item }}\\n\\n      with_items:\\n\\n        - /tmp/foo/some.conf\\n\\n        - /tmp/bar/some.conf\\n\\n\\n\\n    - debug: var=item\\n\\n      with_fileglob: \\\"/tmp/*/some.conf\\\"\\n\\n```\\n\\n\\n\\n- Output without this patch (in 2.2.0):\\n\\n```\\n\\nTASK [debug] *******************************************************************\\n\\n [WARNING]: Unable to find '/tmp/*' in expected paths.\\n\\n```\\n\\n\\n\\n- Output before 2.2.0 (more specifically: before MR #16630) and with this patch:\\n\\n```\\n\\nTASK [debug] *******************************************************************\\n\\nok: [localhost] => (item=/tmp/foo/some.conf) => {\\n\\n    \\\"item\\\": \\\"/tmp/foo/some.conf\\\"\\n\\n}\\n\\nok: [localhost] => (item=/tmp/bar/some.conf) => {\\n\\n    \\\"item\\\": \\\"/tmp/bar/some.conf\\\"\\n\\n}\\n\\n```\", \n    \"title\": \"fileglob: make fileglob work with globbed path components again (Fixes: #17136)\"\n  }, \n  \"19301\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvmware_vmkernel\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nansible 2.3.0\\r\\n\\r\\n##### SUMMARY\\r\\nAdded option for STATIC/DHCP IP address during vmkernel port creation.\\r\\n\\r\\n## Add vmkernel port with static IP address\\r\\n\\r\\n```\\r\\n- vmware_vmkernel:\\r\\n     hostname: esxi_hostname\\r\\n     username: esxi_username\\r\\n     password: esxi_password\\r\\n     validate_certs: False\\r\\n     vswitch_name: vswitch_name\\r\\n     portgroup_name: portgroup_name\\r\\n     vlan_id: vlan_id\\r\\n     ip_address:\\r\\n        type: static\\r\\n        address: ip_address\\r\\n        subnet_mask: subnet_mask\\r\\n     enable_mgmt: False\\r\\n```\\r\\n\\r\\n## Add vmkernel port with DHCP IP address\\r\\n\\r\\n```\\r\\n- vmware_vmkernel:\\r\\n     hostname: esxi_hostname\\r\\n     username: esxi_username\\r\\n     password: esxi_password\\r\\n     validate_certs: False\\r\\n     vswitch_name: vswitch_name\\r\\n     portgroup_name: portgroup_name\\r\\n     vlan_id: vlan_id\\r\\n     ip_address:\\r\\n        type: dhcp\\r\\n     enable_mgmt: False\\r\\n```\\r\\n\", \n    \"component_name\": \"vmware_vmkernel\", \n    \"component_raw\": \"vmware_vmkernel\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19301\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"feature\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_vmkernel.py\", \n    \"summary\": \"Added option for STATIC/DHCP IP address during vmkernel port creation.\\n\\n\\n\\n## Add vmkernel port with static IP address\\n\\n\\n\\n```\\n\\n- vmware_vmkernel:\\n\\n     hostname: esxi_hostname\\n\\n     username: esxi_username\\n\\n     password: esxi_password\\n\\n     validate_certs: False\\n\\n     vswitch_name: vswitch_name\\n\\n     portgroup_name: portgroup_name\\n\\n     vlan_id: vlan_id\\n\\n     ip_address:\\n\\n        type: static\\n\\n        address: ip_address\\n\\n        subnet_mask: subnet_mask\\n\\n     enable_mgmt: False\\n\\n```\\n\\n\\n\\n## Add vmkernel port with DHCP IP address\\n\\n\\n\\n```\\n\\n- vmware_vmkernel:\\n\\n     hostname: esxi_hostname\\n\\n     username: esxi_username\\n\\n     password: esxi_password\\n\\n     validate_certs: False\\n\\n     vswitch_name: vswitch_name\\n\\n     portgroup_name: portgroup_name\\n\\n     vlan_id: vlan_id\\n\\n     ip_address:\\n\\n        type: dhcp\\n\\n     enable_mgmt: False\\n\\n```\", \n    \"title\": \"Add dhcp support for vmware_vmkernel\"\n  }, \n  \"19303\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\n\\r\\nRackspace inventory script\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nFixes #15854 by properly forwarding the `CLOUD_VERIFY_SSL` environment variable to the pyrax settings.\\r\\n\\r\\n\", \n    \"component_name\": \"rackspace inventory script\", \n    \"component_raw\": \"Rackspace inventory script\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19303\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Fixes #15854 by properly forwarding the `CLOUD_VERIFY_SSL`\", \n    \"title\": \"support disabling CLOUD_VERIFY_SSL via env var\"\n  }, \n  \"19305\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.3.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`include_role`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n$ ansible --version\\r\\n\\r\\nansible 2.3.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n_No change to default configuration._\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n`include_role` supports variable interpolation in the role `name` but cannot evaluate loop variables correctly. \\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yml\\r\\n- include_role:\\r\\n    name: \\\"{{ item }}\\\"\\r\\n  with_items:\\r\\n    - \\\"x\\\"\\r\\n    - \\\"y\\\"\\r\\n```\\r\\n##### EXPECTED RESULTS\\r\\nExpected roles `x` and `y` to be included.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nAnsible fails to evaluate the loop control variable, `item`.\\r\\n```\\r\\nERROR! 'item' is undefined\\r\\n```\\r\\n\\r\\n~~Possibly related to #17966 and its fixes which were committed in 885b218a7bab42bf9051fc8673b12889b9ab2134, 01b75f966b0923899281fd1cd2cceeb4fdf44287, fb921042db9e03fc805c3a5e83c8cf564d5c2199, and 99220a5f6cd2dd5af2903dce8cefeeb5ceaddf8f~~\", \n    \"component_name\": \"include_role\", \n    \"component_raw\": \"`include_role`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19305\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/include_role.py\", \n    \"summary\": \"`include_role` supports variable interpolation in the role `name` but cannot evaluate loop variables correctly.\", \n    \"title\": \"include_role unable to reference non-playbook variables in included role name\"\n  }, \n  \"19306\": {\n    \"ansible_version\": \"ansible 2.3.0 (amazon-ecr a853f25dfd) last updated 2016/12/13 104310 (GMT -500)\\nconfig file = /Users/dlee/prj/ansible/test/integration/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\necr\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (amazon-ecr a853f25dfd) last updated 2016/12/13 10:43:10 (GMT -500)\\r\\n  config file = /Users/dlee/prj/ansible/test/integration/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThis patch adds a new module named ecr, which can create, update or\\r\\ndestroy Amazon EC2 Container Registries. It also handles the management\\r\\nof ECR policies.\\r\\n\\r\\nAlong with this, I've corrected some of the text in the Amazon modules\\r\\nGUIDELINES.md file, and I've extracted a boto_exception function into\\r\\nthe ec2 module utils.\", \n    \"component_name\": \"ecr\", \n    \"component_raw\": \"ecr\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19306\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"c:module_utils/\", \n      \"cloud\", \n      \"module\", \n      \"module_util\", \n      \"new_module\", \n      \"new_plugin\", \n      \"test\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ecs_ecr.py\", \n    \"summary\": \"This patch adds a new module named ecr, which can create, update or\\n\\ndestroy Amazon EC2 Container Registries. It also handles the management\\n\\nof ECR policies.\\n\\n\\n\\nAlong with this, I've corrected some of the text in the Amazon modules\\n\\nGUIDELINES.md file, and I've extracted a boto_exception function into\\n\\nthe ec2 module utils.\", \n    \"title\": \"Adding support for Amazon ECR\"\n  }, \n  \"19308\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_vpn_connection\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nAdds support for [AWS VPN Connections](http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpn-connections.html), complementing the existing `ec2_vpc_vgw` (VPN Gateway) and `ec2_customer_gateway` modules.\\r\\n\\r\\nA PR to add this functionality has [already been submitted](https://github.com/ansible/ansible-modules-extras/pull/1339) but was closed for using boto2. This module uses boto3.\\r\\n\\r\\nPorted from https://github.com/ansible/ansible-modules-extras/pull/3480\", \n    \"component_name\": \"ec2_vpn_connection\", \n    \"component_raw\": \"ec2_vpn_connection\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19308\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_vpn_connection.py\", \n    \"summary\": \"Adds support for [AWS VPN Connections](http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpn-connections.html), complementing the existing `ec2_vpc_vgw` (VPN Gateway) and `ec2_customer_gateway` modules.\\n\\n\\n\\nA PR to add this functionality has [already been submitted](https://github.com/ansible/ansible-modules-extras/pull/1339) but was closed for using boto2. This module uses boto3.\\n\\n\\n\\nPorted from https://github.com/ansible/ansible-modules-extras/pull/3480\", \n    \"title\": \"Add module for AWS EC2 VPN\"\n  }, \n  \"19309\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`kms`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n- adds/removes user/role from a KMS key. Nothing else. Good start for a KMS administration module. Needed because it can't really be done in Cloudformation.\", \n    \"component_name\": \"kms\", \n    \"component_raw\": \"`kms`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19309\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/aws_kms.py\", \n    \"summary\": \"- adds/removes user/role from a KMS key. Nothing else. Good start for a KMS administration module. Needed because it can't really be done in Cloudformation.\", \n    \"title\": \"new AWS KMS module\"\n  }, \n  \"19311\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/jacobw/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvsphere_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/jacobw/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nCentOS 6.8\\r\\n\\r\\n##### SUMMARY\\r\\nIn Ansible 1.9.x, I could create a vsphere VM from a template, and specify an esxi.datacenter, but not a esxi.hostname. I'm using a cluster rather than a host, so I can't specify a hostname. But in 2.2.x, I get an error.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```\\r\\n- name: create vm from template\\r\\n    vsphere_guest:\\r\\n      vcenter_hostname: \\\"aaa\\\"\\r\\n      guest: \\\"bbb\\\"\\r\\n      from_template: true\\r\\n      template_src: \\\"ccc\\\"\\r\\n      cluster: \\\"ddd\\\"\\r\\n      resource_pool: \\\"eee\\\"\\r\\n      vm_extra_config:\\r\\n        folder: \\\"fff\\\"\\r\\n      vm_disk:\\r\\n        disk1:\\r\\n          datastore: \\\"ggg\\\"\\r\\n      esxi:\\r\\n        datacenter: \\\"hhh\\\"\\r\\n      validate_certs: False\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nWorks with esxi.datacenter present but esxi.hostname absent.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nOnly works if I remove esxi.datacenter, or provide esxi.hostname (which I can't do). If I just include esxi.datacenter, I get this error:\\r\\n```\\r\\nUsing module file /usr/lib/python2.6/site-packages/ansible/modules/core/cloud/vmware/vsphere_guest.py\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: ansible\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python2.6 && sleep 0'\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/tmp/ansible_e2jRiP/ansible_module_vsphere_guest.py\\\", line 1909, in <module>\\r\\n    main()\\r\\n  File \\\"/tmp/ansible_e2jRiP/ansible_module_vsphere_guest.py\\\", line 1866, in main\\r\\n    vm_extra_config=vm_extra_config\\r\\n  File \\\"/tmp/ansible_e2jRiP/ansible_module_vsphere_guest.py\\\", line 660, in deploy_template\\r\\n    esxi_hostname = esxi['hostname']\\r\\nKeyError: 'hostname'\\r\\n\\r\\nfatal: [127.0.0.1]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"vsphere_guest\\\"\\r\\n    }, \\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_e2jRiP/ansible_module_vsphere_guest.py\\\\\\\", line 1909, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_e2jRiP/ansible_module_vsphere_guest.py\\\\\\\", line 1866, in main\\\\n    vm_extra_config=vm_extra_config\\\\n  File \\\\\\\"/tmp/ansible_e2jRiP/ansible_module_vsphere_guest.py\\\\\\\", line 660, in deploy_template\\\\n    esxi_hostname = esxi['hostname']\\\\nKeyError: 'hostname'\\\\n\\\", \\r\\n    \\\"module_stdout\\\": \\\"\\\", \\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n```\", \n    \"component_name\": \"vsphere_guest\", \n    \"component_raw\": \"vsphere_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19311\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\", \n    \"summary\": \"In Ansible 1.9.x, I could create a vsphere VM from a template, and specify an esxi.datacenter, but not a esxi.hostname. I'm using a cluster rather than a host, so I can't specify a hostname. But in 2.2.x, I get an error.\", \n    \"title\": \"vsphere_guest requires hostname now\"\n  }, \n  \"19312\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Feature Pull Request\\r\\n##### COMPONENT NAME\\r\\n\\r\\nlvol\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0\\r\\n```\\r\\n##### SUMMARY\\r\\n\\r\\nI have taken the stale PR ansible/ansible-modules-extras#2216, by @mvdbeek (and originally @KlabKatsumi ansible/ansible-modules-extras#1422) and rebased the two patches onto current `devel` HEAD. Unfortunately the logic got a bit shaken up by the recent check-mode update, which I tried to fix with my commits. I also rewrote the logical volume check logic.\\r\\n\\r\\nIf it matters, I could also try to rebase a bit \\\"nicer\\\" so that 89b0c1c wouldn't be necessary. Please let me know.\\r\\n\", \n    \"component_name\": \"lvol\", \n    \"component_raw\": \"lvol\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19312\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/lvol.py\", \n    \"summary\": \"I have taken the stale PR ansible/ansible-modules-extras#2216, by @mvdbeek (and originally @KlabKatsumi ansible/ansible-modules-extras#1422) and rebased the two patches onto current `devel` HEAD. Unfortunately the logic got a bit shaken up by the recent check-mode update, which I tried to fix with my commits. I also rewrote the logical volume check logic.\\n\\n\\n\\nIf it matters, I could also try to rebase a bit \\\"nicer\\\" so that 89b0c1c wouldn't be necessary. Please let me know.\", \n    \"title\": \"Add thin pool / volume managment to lvol\"\n  }, \n  \"19314\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nsendgrid\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nReproduced on OS X and CentOS 7. Believed to be platform independent.\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThe sendgrid client library used by the Ansible module in v2.2 (and probably earlier) has made a number of breaking changes in the past calendar year: https://github.com/sendgrid/sendgrid-python/issues/217\\r\\n\\r\\nThe module in v2.2 only works with versions of the library **prior** to v3.0. The latest is 3.6.3 as of this writing. If anyone does just a `pip install sendgrid` they're going to get a library that will give them a stacktrace dump when they use the sendgrid module. \\r\\n\\r\\nThe workaround for now is to use `pip install sendgrid==2.2.1` to get the latest version that is compatible with what ships in Ansible v2.2.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nRun the following playbook.\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n---\\r\\n- hosts: localhost\\r\\n  gather_facts: no\\r\\n  vars:\\r\\n    sendgrid_user: USER\\r\\n    sendgrid_pass: PAZZWERD\\r\\n    sendgrid_to_email: to@example.com\\r\\n    sendgrid_from_email: from@example.com\\r\\n  tasks:\\r\\n\\r\\n    - name: Email file\\r\\n      sendgrid:\\r\\n        username: \\\"{{ sendgrid_user }}\\\"\\r\\n        password: \\\"{{ sendgrid_pass }}\\\"\\r\\n        subject: \\\"Test message\\\"\\r\\n        body: |\\r\\n              This is a test message for sendgrid to send.<br>\\r\\n              <br>\\r\\n              It doesn't matter what it says as long as it sends it.<br>\\r\\n        to_addresses: \\\"{{ sendgrid_to_email }}\\\"\\r\\n        html_body: yes\\r\\n        from_address: \\\"{{ sendgrid_from_email }}\\\"\\r\\n        attachments:\\r\\n          - \\\"hello.txt\\\"\\r\\n```\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe task to succeed and the email to be sent.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nThe playbook fails and displays a stack trace.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [Email file] **************************************************************\\r\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: AttributeError: 'module' object has no attribute 'SendGridClient'\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/var/folders/v9/lkyh_wqj6szbhgk8whwxpfcr0000gn/T/ansible_PZz2CF/ansible_module_sendgrid.py\\\\\\\", line 271, in <module>\\\\n    main()\\\\n  File \\\\\\\"/var/folders/v9/lkyh_wqj6szbhgk8whwxpfcr0000gn/T/ansible_PZz2CF/ansible_module_sendgrid.py\\\\\\\", line 256, in main\\\\n    bcc=bcc, cc=cc, headers=headers, html_body=html_body, api_key=api_key)\\\\n  File \\\\\\\"/var/folders/v9/lkyh_wqj6szbhgk8whwxpfcr0000gn/T/ansible_PZz2CF/ansible_module_sendgrid.py\\\\\\\", line 172, in post_sendgrid_api\\\\n    sg = sendgrid.SendGridClient(username, password)\\\\nAttributeError: 'module' object has no attribute 'SendGridClient'\\\\n\\\", \\\"module_stdout\\\": \\\"\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"sendgrid\", \n    \"component_raw\": \"sendgrid\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19314\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/notification/sendgrid.py\", \n    \"summary\": \"The sendgrid client library used by the Ansible module in v2.2 (and probably earlier) has made a number of breaking changes in the past calendar year: https://github.com/sendgrid/sendgrid-python/issues/217\\n\\n\\n\\nThe module in v2.2 only works with versions of the library **prior** to v3.0. The latest is 3.6.3 as of this writing. If anyone does just a `pip install sendgrid` they're going to get a library that will give them a stacktrace dump when they use the sendgrid module. \\n\\n\\n\\nThe workaround for now is to use `pip install sendgrid==2.2.1` to get the latest version that is compatible with what ships in Ansible v2.2.\", \n    \"title\": \"sendgrid module displays stack trace because of breaking changes made to the major version of underlying client library\"\n  }, \n  \"19318\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE: Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME: cloud/openstack/os_server.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nAt present `os_server` can modify the floating IP on an existing instance, but most other properties are unchanged since they may require a rebuild of the instance. However user properties (the `os_server` `meta` arg) can be updated easily.\\r\\n\\r\\nNew or existing metadata keys/values will be added/updated on an existing instance, no keys will be deleted. This follows the behaviour of `shade.openstackcloud.OpenStackCloud.set_server_metadata`.\\r\\n\\r\\nFixes #5500.\\r\\n\\r\\n`test.yml`:\\r\\n```\\r\\n- hosts: localhost\\r\\n\\r\\n  tasks:\\r\\n\\r\\n  - os_server:\\r\\n      flavor_ram: 1024\\r\\n      image: CentOS7\\r\\n      key: test-key\\r\\n      name: test-1\\r\\n    register: instance\\r\\n\\r\\n  - debug: msg={{ instance.openstack.metadata }}\\r\\n```\\r\\n`ansible-playbook test.yml`\\r\\n```\\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n\\r\\n\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [os_server] ***************************************************************\\r\\nchanged: [localhost]\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": {}\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=3    changed=1    unreachable=0    failed=0   \\r\\n```\\r\\n\\r\\nAdd some metadata:\\r\\n```\\r\\n  - os_server:\\r\\n      flavor_ram: 1024\\r\\n      image: CentOS7\\r\\n      key: test-key\\r\\n      meta:\\r\\n        groups: 'test-group'\\r\\n      name: test-1\\r\\n    register: instance\\r\\n```\\r\\n\\r\\nRerun without this PR:\\r\\n```\\r\\nTASK [os_server] ***************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": {}\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=3    changed=0    unreachable=0    failed=0   \\r\\n```\\r\\nRerun with this PR:\\r\\n```\\r\\nTASK [os_server] ***************************************************************\\r\\nchanged: [localhost]\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": {\\r\\n        \\\"groups\\\": \\\"test-group\\\"\\r\\n    }\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=3    changed=1    unreachable=0    failed=0   \\r\\n```\", \n    \"component_name\": \"cloud/openstack/os_server.py\", \n    \"component_raw\": \": cloud/openstack/os_server.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19318\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"feature\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_server.py\", \n    \"summary\": \"At present `os_server` can modify the floating IP on an existing instance, but most other properties are unchanged since they may require a rebuild of the instance. However user properties (the `os_server` `meta` arg) can be updated easily.\\n\\n\\n\\nNew or existing metadata keys/values will be added/updated on an existing instance, no keys will be deleted. This follows the behaviour of `shade.openstackcloud.OpenStackCloud.set_server_metadata`.\\n\\n\\n\\nFixes #5500.\\n\\n\\n\\n`test.yml`:\\n\\n```\\n\\n- hosts: localhost\\n\\n\\n\\n  tasks:\\n\\n\\n\\n  - os_server:\\n\\n      flavor_ram: 1024\\n\\n      image: CentOS7\\n\\n      key: test-key\\n\\n      name: test-1\\n\\n    register: instance\\n\\n\\n\\n  - debug: msg={{ instance.openstack.metadata }}\\n\\n```\\n\\n`ansible-playbook test.yml`\\n\\n```\\n\\n [WARNING]: provided hosts list is empty, only localhost is available\\n\\n\\n\\n\\n\\nPLAY [localhost] ***************************************************************\\n\\n\\n\\nTASK [setup] *******************************************************************\\n\\nok: [localhost]\\n\\n\\n\\nTASK [os_server] ***************************************************************\\n\\nchanged: [localhost]\\n\\n\\n\\nTASK [debug] *******************************************************************\\n\\nok: [localhost] => {\\n\\n    \\\"msg\\\": {}\\n\\n}\\n\\n\\n\\nPLAY RECAP *********************************************************************\\n\\nlocalhost                  : ok=3    changed=1    unreachable=0    failed=0   \\n\\n```\\n\\n\\n\\nAdd some metadata:\\n\\n```\\n\\n  - os_server:\\n\\n      flavor_ram: 1024\\n\\n      image: CentOS7\\n\\n      key: test-key\\n\\n      meta:\\n\\n        groups: 'test-group'\\n\\n      name: test-1\\n\\n    register: instance\\n\\n```\\n\\n\\n\\nRerun without this PR:\\n\\n```\\n\\nTASK [os_server] ***************************************************************\\n\\nok: [localhost]\\n\\n\\n\\nTASK [debug] *******************************************************************\\n\\nok: [localhost] => {\\n\\n    \\\"msg\\\": {}\\n\\n}\\n\\n\\n\\nPLAY RECAP *********************************************************************\\n\\nlocalhost                  : ok=3    changed=0    unreachable=0    failed=0   \\n\\n```\\n\\nRerun with this PR:\\n\\n```\\n\\nTASK [os_server] ***************************************************************\\n\\nchanged: [localhost]\\n\\n\\n\\nTASK [debug] *******************************************************************\\n\\nok: [localhost] => {\\n\\n    \\\"msg\\\": {\\n\\n        \\\"groups\\\": \\\"test-group\\\"\\n\\n    }\\n\\n}\\n\\n\\n\\nPLAY RECAP *********************************************************************\\n\\nlocalhost                  : ok=3    changed=1    unreachable=0    failed=0   \\n\\n```\", \n    \"title\": \"Set os_server metadata on existing instances\"\n  }, \n  \"19320\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE: Feature Pull Request\\n##### COMPONENT NAME: cloud/os_volume\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.2.0\\n  config file =\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nAdds support to `os_volume` for creating volumes by cloning an existing volume.\\n\\n`os_volume` supports creating Openstack volumes from scratch, or based on an existing image or snapshot, but not from an existing volume.\\nDepending on the storage implementation on the Openstack cloud in some cases creating a volume from an existing volume can be a very quick copy-on-write operation, compared to a time-consuming full copy when using an image or snapshot.\\n\\nThis PR adds a new parameter `volume_src` to the `os_volume` module, which behaves similarly to the existing `image` parameter in taking either the name or the ID of a volume.\\n\\nFor example:\\n\\n```\\n- hosts: localhost\\n  tasks:\\n  - os_volume:\\n      state: present\\n      size: \\\"500\\\"\\n      display_name: \\\"new-volume\\\"\\n      volume_src: \\\"existing-volume\\\"\\n```\\n\\n```\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [os_volume] ***************************************************************\\nchanged: [localhost]\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=2    changed=1    unreachable=0    failed=0\\n```\\n\\nIf an invalid volume is set this returns an error:\\n\\n```\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [os_volume] ***************************************************************\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failed to find volume source 'non-existent-volume'\\\"}\\n\\nNO MORE HOSTS LEFT *************************************************************\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=1\\n```\\n\\nIf you have the `openstack` command line client installed then the output of `openstack volume show new-volume` should include a `source_volid`:\\n\\n```\\n| source_volid                         | f383e3b3-3382-4573-9526-aa8b32a28aff  |\\n```\\n\\nAn unrelated issue: I've noticed that if a non-existent `image` parameter is passed to `os_volume` it silently creates a new volume. If you want I can add another commit along the lines of f1222f3.\\n\", \n    \"component_name\": \"cloud/os_volume\", \n    \"component_raw\": \": cloud/os_volume\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19320\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"feature\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_volume.py\", \n    \"summary\": \"Adds support to `os_volume` for creating volumes by cloning an existing volume.\\n\\n`os_volume` supports creating Openstack volumes from scratch, or based on an existing image or snapshot, but not from an existing volume.\\nDepending on the storage implementation on the Openstack cloud in some cases creating a volume from an existing volume can be a very quick copy-on-write operation, compared to a time-consuming full copy when using an image or snapshot.\\n\\nThis PR adds a new parameter `volume_src` to the `os_volume` module, which behaves similarly to the existing `image` parameter in taking either the name or the ID of a volume.\\n\\nFor example:\\n\\n```\\n- hosts: localhost\\n  tasks:\\n  - os_volume:\\n      state: present\\n      size: \\\"500\\\"\\n      display_name: \\\"new-volume\\\"\\n      volume_src: \\\"existing-volume\\\"\\n```\\n\\n```\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [os_volume] ***************************************************************\\nchanged: [localhost]\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=2    changed=1    unreachable=0    failed=0\\n```\\n\\nIf an invalid volume is set this returns an error:\\n\\n```\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [os_volume] ***************************************************************\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failed to find volume source 'non-existent-volume'\\\"}\\n\\nNO MORE HOSTS LEFT *************************************************************\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=1\\n```\\n\\nIf you have the `openstack` command line client installed then the output of `openstack volume show new-volume` should include a `source_volid`:\\n\\n```\\n| source_volid                         | f383e3b3-3382-4573-9526-aa8b32a28aff  |\\n```\\n\\nAn unrelated issue: I've noticed that if a non-existent `image` parameter is passed to `os_volume` it silently creates a new volume. If you want I can add another commit along the lines of f1222f3.\", \n    \"title\": \"Allow creation of Openstack volumes from an existing volume\"\n  }, \n  \"19321\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @manics on November 7, 2016 14:19_\\n\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\npip\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nShould be platform independent.\\r\\n```\\r\\n$ sw_vers\\r\\nProductName:\\tMac OS X\\r\\nProductVersion:\\t10.11.6\\r\\nBuildVersion:\\t15G1108\\r\\n\\r\\n$ python --version\\r\\nPython 2.7.10\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n`pip` module fails to parse complex version specifications such as `\\\"django>=1.8,<1.9\\\"`\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n`test.yml`:\\r\\n```\\r\\n- hosts: localhost\\r\\n  tasks:\\r\\n  - pip:\\r\\n      name: \\\"django>=1.8,<1.9\\\"\\r\\n      virtualenv: /tmp/venv-test\\r\\n```\\r\\nRun: `ansible-playbook -i /dev/null test.yml`\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nWith `ansible 2.1.3.0`:\\r\\n```\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [pip] *********************************************************************\\r\\nchanged: [localhost]\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=2    changed=1    unreachable=0    failed=0\\r\\n```\\r\\n\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\n...\\r\\nTASK [pip] *********************************************************************\\r\\n...\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"cmd\\\": \\\"/tmp/venv-test/bin/pip2 install django>=1.8 <1.9\\\",\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"chdir\\\": null,\\r\\n            \\\"editable\\\": true,\\r\\n            \\\"executable\\\": null,\\r\\n            \\\"extra_args\\\": null,\\r\\n            \\\"name\\\": [\\r\\n                \\\"django>=1.8\\\",\\r\\n                \\\"<1.9\\\"\\r\\n            ],\\r\\n            \\\"requirements\\\": null,\\r\\n            \\\"state\\\": \\\"present\\\",\\r\\n            \\\"umask\\\": null,\\r\\n            \\\"use_mirrors\\\": true,\\r\\n            \\\"version\\\": null,\\r\\n            \\\"virtualenv\\\": \\\"/tmp/venv-test\\\",\\r\\n            \\\"virtualenv_command\\\": \\\"virtualenv\\\",\\r\\n            \\\"virtualenv_python\\\": null,\\r\\n            \\\"virtualenv_site_packages\\\": false\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"pip\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"\\\\n:stderr: Invalid requirement: '<1.9'\\\\nTraceback (most recent call last):\\\\n  File \\\\\\\"/tmp/venv-test/lib/python2.7/site-packages/pip/req/req_install.py\\\\\\\", line 82, in __init__\\\\n    req = Requirement(req)\\\\n  File \\\\\\\"/tmp/venv-test/lib/python2.7/site-packages/pip/_vendor/packaging/requirements.py\\\\\\\", line 96, in __init__\\\\n    requirement_string[e.loc:e.loc + 8]))\\\\nInvalidRequirement: Invalid requirement, parse error at \\\\\\\"'<1.9'\\\\\\\"\\\\n\\\\n\\\"\\r\\n}\\r\\n\\tto retry, use: --limit @/Users/spli/work/infrastructure/tmp/test.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=1\\r\\n```\\r\\nThis appears to have been introduced in https://github.com/ansible/ansible-modules-core/pull/4056\\r\\n\\r\\nWorkaround: make into a list `name: [\\\"django>=1.8,<1.9\\\"]` but this is incompatible with Ansible 2.1.3.0\\n\\n_Copied from original issue: ansible/ansible-modules-core#5514_\", \n    \"component_name\": \"pip\", \n    \"component_raw\": \"pip\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19321\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/language/pip.py\", \n    \"summary\": \"`pip` module fails to parse complex version specifications such as `\\\"django>=1.8,<1.9\\\"`\", \n    \"title\": \"pip fails to parse complex version specifications such as \\\"django>=1.8,<1.9\\\"\"\n  }, \n  \"19325\": {\n    \"ansible_version\": \"ansible 2.2.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nansible-module-extras/cloud/dimensiondata/dimensiondata_network.py\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0\\n```\\n##### SUMMARY\\n\\nThis is Ansible module support for apache-libcloud functions.\\nSpecifically, this code supports Ansible invocations of DimensionData's \\nnetwork functionality.\\n\\nThis is to support a new capability within ansible, so there is no \\\"BEFORE\\\".\\nNote that this routine has an \\\"action verb\\\" which allows multiple different\\nactions to be performed on a network.  Below shows the ansible call to\\ncreate a network, along with its output.\\n\\n```\\n    - name: Create MCP 2.0 network\\n      dimensiondata_network:\\n        region: \\\"{{dimension_data_region}}\\\"\\n        location: \\\"{{dimension_data_location}}\\\"\\n        name: \\\"{{ network_name }}\\\"\\n        description: A test network for demo purposes\\n        service_plan: 'ESSENTIALS'\\n        state: present\\n\\n    TASK [Create MCP 2.0 network] **************************************************\\n    changed: [127.0.0.1] => {\\\"changed\\\": true, \\\"msg\\\": \\\"Created network demo_dd_network_from_ansible in NA12\\\", \\\"network\\\": {\\\"description\\\": \\\"A test network for demo purposes\\\", \\\"id\\\": \\\"c1e5fd2a-626f-4692-94ed-47bc4aa0fe6e\\\", \\\"location\\\": \\\"NA12\\\", \\\"multicast\\\": null, \\\"name\\\": \\\"demo_dd_network_from_ansible\\\", \\\"private_net\\\": null, \\\"status\\\": \\\"running\\\"}}\\n\\n```\\n###### REQUIRES\\n\\nhttps://github.com/ansible/ansible/pull/17604\\nhttps://github.com/apache/libcloud/pull/858\\n\", \n    \"component_name\": \"ansible- -extras/cloud/dimensiondata/dimensiondata_network.py\", \n    \"component_raw\": \"ansible-module-extras/cloud/dimensiondata/dimensiondata_network.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19325\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"feature\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/dimensiondata/dimensiondata_network.py\", \n    \"summary\": \"This is Ansible module support for apache-libcloud functions.\\nSpecifically, this code supports Ansible invocations of DimensionData's \\nnetwork functionality.\\n\\nThis is to support a new capability within ansible, so there is no \\\"BEFORE\\\".\\nNote that this routine has an \\\"action verb\\\" which allows multiple different\\nactions to be performed on a network.  Below shows the ansible call to\\ncreate a network, along with its output.\\n\\n```\\n    - name: Create MCP 2.0 network\\n      dimensiondata_network:\\n        region: \\\"{{dimension_data_region}}\\\"\\n        location: \\\"{{dimension_data_location}}\\\"\\n        name: \\\"{{ network_name }}\\\"\\n        description: A test network for demo purposes\\n        service_plan: 'ESSENTIALS'\\n        state: present\\n\\n    TASK [Create MCP 2.0 network] **************************************************\\n    changed: [127.0.0.1] => {\\\"changed\\\": true, \\\"msg\\\": \\\"Created network demo_dd_network_from_ansible in NA12\\\", \\\"network\\\": {\\\"description\\\": \\\"A test network for demo purposes\\\", \\\"id\\\": \\\"c1e5fd2a-626f-4692-94ed-47bc4aa0fe6e\\\", \\\"location\\\": \\\"NA12\\\", \\\"multicast\\\": null, \\\"name\\\": \\\"demo_dd_network_from_ansible\\\", \\\"private_net\\\": null, \\\"status\\\": \\\"running\\\"}}\\n\\n```\\n###### REQUIRES\\n\\nhttps://github.com/ansible/ansible/pull/17604\\nhttps://github.com/apache/libcloud/pull/858\", \n    \"title\": \"New dimensiondata network\"\n  }, \n  \"19326\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\\nPython 2.7.5\\nVsphere 6.0\", \n    \"body\": \"<!---\\r\\nPlease verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvsphere_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\nPython 2.7.5\\r\\nVsphere 6.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nDefault configuration\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nRed Hat 7.2\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\n<!---   -->\\r\\nIssue encountered when running a playbook using vsphere_guest module to add new disk on a running VM. The VM is created via template and has single disk (disk1). I can add more space on disk1 but the module fail if I need to attach new disk (disk2 as an example.) Below is my example.\\r\\n```\\r\\nvm_disk:\\r\\n           disk1:\\r\\n               size_gb: 31\\r\\n               type: thin\\r\\n               datastore: VM-Datastore-1\\r\\n           disk2:\\r\\n               size_gb: 10\\r\\n               type: thin\\r\\n               datastore: VM-Datastore-1\\r\\n```\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\n\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\nrunning the playbook: ansible-playbook tasks/add_disks.yml -vvvv\\r\\n```\\r\\nhttps://gist.github.com/mikecali/83d4fc1a5e34c9ea35b86eb225f7f905\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- t-->\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nhe playbook should add attach disk2 on the running VM  (RHEL-jmt)\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nUsing /etc/ansible/ansible.cfg as config file\\r\\nLoading callback plugin default of type stdout, v2.0 from /usr/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc\\r\\n\\r\\nPLAYBOOK: add_disks.yml ********************************************************\\r\\n1 plays in tasks/add_disks.yml\\r\\n\\r\\nPLAY [Reconfigure VM Filesystem] ***********************************************\\r\\n\\r\\nTASK [Reconfigure Reconfigure VM Filesystem] ***********************************\\r\\ntask path: /home/mikecali/mike-personal/vm_disk_add/tasks/add_disks.yml:26\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/core/cloud/vmware/vsphere_guest.py\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: mikecali\\r\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1481678610.17-273194120531311 `\\\" && echo ansible-tmp-1481678610.17-273194120531311=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1481678610.17-273194120531311 `\\\" ) && sleep 0'\\r\\n<127.0.0.1> PUT /tmp/tmpE14O0U TO /home/mikecali/.ansible/tmp/ansible-tmp-1481678610.17-273194120531311/vsphere_guest.py\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /home/mikecali/.ansible/tmp/ansible-tmp-1481678610.17-273194120531311/ /home/mikecali/.ansible/tmp/ansible-tmp-1481678610.17-273194120531311/vsphere_guest.py && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python /home/mikecali/.ansible/tmp/ansible-tmp-1481678610.17-273194120531311/vsphere_guest.py; rm -rf \\\"/home/mikecali/.ansible/tmp/ansible-tmp-1481678610.17-273194120531311/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"cluster\\\": null, \\r\\n            \\\"esxi\\\": {\\r\\n                \\\"datacenter\\\": \\\"ALABS-Wellington\\\", \\r\\n                \\\"hostname\\\": \\\"172.17.203.4\\\"\\r\\n            }, \\r\\n            \\\"force\\\": true, \\r\\n            \\\"from_template\\\": null, \\r\\n            \\\"guest\\\": \\\"RHEL-jmt\\\", \\r\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n            \\\"power_on_after_clone\\\": true, \\r\\n            \\\"resource_pool\\\": null, \\r\\n            \\\"snapshot_to_clone\\\": null, \\r\\n            \\\"state\\\": \\\"reconfigured\\\", \\r\\n            \\\"template_src\\\": null, \\r\\n            \\\"username\\\": \\\"administrator@vsphere.local\\\", \\r\\n            \\\"validate_certs\\\": false, \\r\\n            \\\"vcenter_hostname\\\": \\\"172.17.203.6\\\", \\r\\n            \\\"vm_disk\\\": {\\r\\n                \\\"disk1\\\": {\\r\\n                    \\\"datastore\\\": \\\"VM-Datastore-1\\\", \\r\\n                    \\\"size_gb\\\": 31, \\r\\n                    \\\"type\\\": \\\"thin\\\"\\r\\n                }, \\r\\n                \\\"disk2\\\": {\\r\\n                    \\\"datastore\\\": \\\"VM-Datastore-1\\\", \\r\\n                    \\\"size_gb\\\": 10, \\r\\n                    \\\"type\\\": \\\"thin\\\"\\r\\n                }\\r\\n            }, \\r\\n            \\\"vm_extra_config\\\": {\\r\\n                \\\"mem.hotadd\\\": true, \\r\\n                \\\"vcpu.hotadd\\\": true\\r\\n            }, \\r\\n            \\\"vm_hardware\\\": {\\r\\n                \\\"memory_mb\\\": \\\"1024\\\", \\r\\n                \\\"num_cpus\\\": \\\"1\\\", \\r\\n                \\\"osid\\\": \\\"RH7\\\", \\r\\n                \\\"scsi\\\": \\\"paravirtual\\\"\\r\\n            }, \\r\\n            \\\"vm_hw_version\\\": null, \\r\\n            \\\"vm_nic\\\": {\\r\\n                \\\"nic1\\\": {\\r\\n                    \\\"network\\\": \\\"VM Network\\\", \\r\\n                    \\\"network_type\\\": \\\"standard\\\", \\r\\n                    \\\"type\\\": \\\"vmxnet3\\\"\\r\\n                }\\r\\n            }, \\r\\n            \\\"vmware_guest_facts\\\": null\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"vsphere_guest\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"Error reconfiguring vm: Invalid configuration for device '0'., [{'size_gb': 10, 'type': 'thin', 'datastore': 'VM-Datastore-1'}]\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"vsphere_guest\", \n    \"component_raw\": \"vsphere_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19326\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\", \n    \"summary\": \"Issue encountered when running a playbook using vsphere_guest module to add new disk on a running VM. The VM is created via template and has single disk (disk1). I can add more space on disk1 but the module fail if I need to attach new disk (disk2 as an example.) Below is my example.\\n\\n```\\n\\nvm_disk:\\n\\n           disk1:\\n\\n               size_gb: 31\\n\\n               type: thin\\n\\n               datastore: VM-Datastore-1\\n\\n           disk2:\\n\\n               size_gb: 10\\n\\n               type: thin\\n\\n               datastore: VM-Datastore-1\\n\\n```\", \n    \"title\": \"vsphere_guest unable to add additional disks\"\n  }, \n  \"19327\": {\n    \"ansible_version\": \"ansible-playbook 2.2.0.0\\nconfig file = /home/nick/dev/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nlinode cloud module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible-playbook 2.2.0.0\\r\\n  config file = /home/nick/dev/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nDisplay group is a newer option in the Linode UI and API to categorize instances into buckets. This parameter is not supported in the linode module.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n# Create a server (new and improved with display_group!)\\r\\n- linode:\\r\\n     api_key: 'longStringFromLinodeApi'\\r\\n     name: linode-test1\\r\\n     display_group: my-display-group\\r\\n     plan: 1\\r\\n     datacenter: 2\\r\\n     distribution: 99\\r\\n     password: 'superSecureRootPassword'\\r\\n     ssh_pub_key: 'ssh-rsa qwerty'\\r\\n     swap: 768\\r\\n     wait: yes\\r\\n     wait_timeout: 600\\r\\n     state: present\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe provided display group is set for the new Linode instance.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nDisplay group is not an option for the module\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"linode cloud\", \n    \"component_raw\": \"linode cloud module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19327\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"cloud\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/linode/linode.py\", \n    \"summary\": \"Display group is a newer option in the Linode UI and API to categorize instances into buckets. This parameter is not supported in the linode module.\", \n    \"title\": \"linode: Add display group option\"\n  }, \n  \"19328\": {\n    \"ansible_version\": \"ansible-playbook 2.2.0.0\\nconfig file = /home/nick/dev/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nlinode cloud module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible-playbook 2.2.0.0\\r\\n  config file = /home/nick/dev/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nAdd display_group as an option to the linode module (fixes #19327)\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n\", \n    \"component_name\": \"linode cloud\", \n    \"component_raw\": \"linode cloud module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19328\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/linode/linode.py\", \n    \"summary\": \"Add display_group as an option to the linode module (fixes #19327)\", \n    \"title\": \"Add display_group to linode module (Fixes #19327)\"\n  }, \n  \"19329\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/nick/dev/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncontrib/inventory/linode.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/nick/dev/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n- Changes to make this inventory script consistent with the other inventory scripts\\r\\n-- Add _meta/hostvars to inventory output with instance details\\r\\n-- Add a \\\"linode\\\" global host group containing all the hosts\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n*Before*\\r\\n```\\r\\nnick@gizmo:~/tmp/benchmark/ansible$ ./inventory/linode.py --list\\r\\n{\\r\\n  \\\"64841\\\": [\\r\\n    \\\"sawyer\\\"\\r\\n  ], \\r\\n  \\\"2002301\\\": [\\r\\n    \\\"lima\\\"\\r\\n  ], \\r\\n  \\\"2316311\\\": [\\r\\n    \\\"monitor\\\"\\r\\n  ], \\r\\n  \\\"\\\": [\\r\\n    \\\"sawyer\\\", \\r\\n    \\\"lima\\\", \\r\\n    \\\"monitor\\\"\\r\\n  ], \\r\\n  \\\"fremont\\\": [\\r\\n    \\\"sawyer\\\", \\r\\n    \\\"lima\\\", \\r\\n    \\\"monitor\\\"\\r\\n  ]\\r\\n}\\r\\n```\\r\\n\\r\\n*After*\\r\\n```\\r\\nnick@gizmo:~/tmp/benchmark/ansible$ ./inventory/linode.py --list\\r\\n{\\r\\n  \\\"64841\\\": [\\r\\n    \\\"sawyer\\\"\\r\\n  ], \\r\\n  \\\"2002301\\\": [\\r\\n    \\\"lima\\\"\\r\\n  ], \\r\\n  \\\"2316311\\\": [\\r\\n    \\\"monitor\\\"\\r\\n  ], \\r\\n  \\\"\\\": [\\r\\n    \\\"sawyer\\\", \\r\\n    \\\"lima\\\", \\r\\n    \\\"monitor\\\"\\r\\n  ], \\r\\n  \\\"_meta\\\": {\\r\\n    \\\"hostvars\\\": {\\r\\n      \\\"lima\\\": {\\r\\n        \\\"alert_bwin_enabled\\\": true, \\r\\n        \\\"alert_bwin_threshold\\\": 10, \\r\\n        \\\"alert_bwout_enabled\\\": true, \\r\\n        \\\"alert_bwout_threshold\\\": 10, \\r\\n        \\\"alert_bwquota_enabled\\\": true, \\r\\n        \\\"alert_bwquota_threshold\\\": 80, \\r\\n        \\\"alert_cpu_enabled\\\": true, \\r\\n        \\\"alert_cpu_threshold\\\": 90, \\r\\n        \\\"alert_diskio_enabled\\\": true, \\r\\n        \\\"alert_diskio_threshold\\\": 10000, \\r\\n        \\\"ansible_host\\\": \\\"173.255.0.01\\\", \\r\\n        \\\"ansible_ssh_host\\\": \\\"173.255.0.1\\\", \\r\\n        \\\"api_id\\\": 2002301, \\r\\n        \\\"backup_weekly_daily\\\": 0, \\r\\n        \\\"backup_window\\\": 0, \\r\\n        \\\"create_dt\\\": \\\"2016-06-16 18:49:26.0\\\", \\r\\n        \\\"datacenter_city\\\": \\\"fremont\\\", \\r\\n        \\\"datacenter_id\\\": 3, \\r\\n        \\\"display_group\\\": \\\"\\\", \\r\\n        \\\"label\\\": \\\"lima\\\", \\r\\n        \\\"private_ip\\\": \\\"192.168.0.2\\\", \\r\\n        \\\"public_ip\\\": \\\"173.255.0.1\\\", \\r\\n        \\\"status\\\": 1, \\r\\n        \\\"total_hd\\\": 24576, \\r\\n        \\\"total_ram\\\": 2048, \\r\\n        \\\"total_xfer\\\": 2000, \\r\\n        \\\"watchdog\\\": true\\r\\n      }, \\r\\n      \\\"monitor\\\": {\\r\\n        \\\"alert_bwin_enabled\\\": true, \\r\\n        \\\"alert_bwin_threshold\\\": 10, \\r\\n        \\\"alert_bwout_enabled\\\": true, \\r\\n        \\\"alert_bwout_threshold\\\": 10, \\r\\n        \\\"alert_bwquota_enabled\\\": true, \\r\\n        \\\"alert_bwquota_threshold\\\": 80, \\r\\n        \\\"alert_cpu_enabled\\\": true, \\r\\n        \\\"alert_cpu_threshold\\\": 90, \\r\\n        \\\"alert_diskio_enabled\\\": true, \\r\\n        \\\"alert_diskio_threshold\\\": 10000, \\r\\n        \\\"ansible_host\\\": \\\"104.200.0.13\\\", \\r\\n        \\\"ansible_ssh_host\\\": \\\"104.200.0.13\\\", \\r\\n        \\\"api_id\\\": 2316311, \\r\\n        \\\"backup_weekly_daily\\\": 0, \\r\\n        \\\"backup_window\\\": 0, \\r\\n        \\\"create_dt\\\": \\\"2016-09-22 21:16:49.0\\\", \\r\\n        \\\"datacenter_city\\\": \\\"fremont\\\", \\r\\n        \\\"datacenter_id\\\": 3, \\r\\n        \\\"display_group\\\": \\\"\\\", \\r\\n        \\\"label\\\": \\\"monitor\\\", \\r\\n        \\\"private_ip\\\": \\\"192.168.1.2\\\", \\r\\n        \\\"public_ip\\\": \\\"104.200.0.13\\\", \\r\\n        \\\"status\\\": 1, \\r\\n        \\\"total_hd\\\": 24576, \\r\\n        \\\"total_ram\\\": 2048, \\r\\n        \\\"total_xfer\\\": 2000, \\r\\n        \\\"watchdog\\\": true\\r\\n      }, \\r\\n      \\\"sawyer\\\": {\\r\\n        \\\"alert_bwin_enabled\\\": true, \\r\\n        \\\"alert_bwin_threshold\\\": 5, \\r\\n        \\\"alert_bwout_enabled\\\": true, \\r\\n        \\\"alert_bwout_threshold\\\": 5, \\r\\n        \\\"alert_bwquota_enabled\\\": true, \\r\\n        \\\"alert_bwquota_threshold\\\": 80, \\r\\n        \\\"alert_cpu_enabled\\\": true, \\r\\n        \\\"alert_cpu_threshold\\\": 90, \\r\\n        \\\"alert_diskio_enabled\\\": true, \\r\\n        \\\"alert_diskio_threshold\\\": 1000, \\r\\n        \\\"ansible_host\\\": \\\"74.207.1.2\\\", \\r\\n        \\\"ansible_ssh_host\\\": \\\"74.207.1.2\\\", \\r\\n        \\\"api_id\\\": 64841, \\r\\n        \\\"backup_weekly_daily\\\": 0, \\r\\n        \\\"backup_window\\\": 7, \\r\\n        \\\"create_dt\\\": \\\"2014-09-20 06:08:10.0\\\", \\r\\n        \\\"datacenter_city\\\": \\\"fremont\\\", \\r\\n        \\\"datacenter_id\\\": 3, \\r\\n        \\\"display_group\\\": \\\"\\\", \\r\\n        \\\"label\\\": \\\"sawyer\\\", \\r\\n        \\\"private_ip\\\": \\\"192.168.2.8\\\", \\r\\n        \\\"public_ip\\\": \\\"74.207.1.2\\\", \\r\\n        \\\"status\\\": 1, \\r\\n        \\\"total_hd\\\": 49152, \\r\\n        \\\"total_ram\\\": 4096, \\r\\n        \\\"total_xfer\\\": 3000, \\r\\n        \\\"watchdog\\\": true\\r\\n      }\\r\\n    }\\r\\n  }, \\r\\n  \\\"fremont\\\": [\\r\\n    \\\"sawyer\\\", \\r\\n    \\\"lima\\\", \\r\\n    \\\"monitor\\\"\\r\\n  ], \\r\\n  \\\"linode\\\": [\\r\\n    \\\"sawyer\\\", \\r\\n    \\\"lima\\\", \\r\\n    \\\"monitor\\\"\\r\\n  ]\\r\\n}\\r\\n\\r\\n```\", \n    \"component_name\": \"contrib/inventory/linode.py\", \n    \"component_raw\": \"contrib/inventory/linode.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19329\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"- Changes to make this inventory script consistent with the other inventory scripts\\n\\n-- Add _meta/hostvars to inventory output with instance details\\n\\n-- Add a \\\"linode\\\" global host group containing all the hosts\\n\\n\\n\\n\\n\\n\\n\\n*Before*\\n\\n```\\n\\nnick@gizmo:~/tmp/benchmark/ansible$ ./inventory/linode.py --list\\n\\n{\\n\\n  \\\"64841\\\": [\\n\\n    \\\"sawyer\\\"\\n\\n  ], \\n\\n  \\\"2002301\\\": [\\n\\n    \\\"lima\\\"\\n\\n  ], \\n\\n  \\\"2316311\\\": [\\n\\n    \\\"monitor\\\"\\n\\n  ], \\n\\n  \\\"\\\": [\\n\\n    \\\"sawyer\\\", \\n\\n    \\\"lima\\\", \\n\\n    \\\"monitor\\\"\\n\\n  ], \\n\\n  \\\"fremont\\\": [\\n\\n    \\\"sawyer\\\", \\n\\n    \\\"lima\\\", \\n\\n    \\\"monitor\\\"\\n\\n  ]\\n\\n}\\n\\n```\\n\\n\\n\\n*After*\\n\\n```\\n\\nnick@gizmo:~/tmp/benchmark/ansible$ ./inventory/linode.py --list\\n\\n{\\n\\n  \\\"64841\\\": [\\n\\n    \\\"sawyer\\\"\\n\\n  ], \\n\\n  \\\"2002301\\\": [\\n\\n    \\\"lima\\\"\\n\\n  ], \\n\\n  \\\"2316311\\\": [\\n\\n    \\\"monitor\\\"\\n\\n  ], \\n\\n  \\\"\\\": [\\n\\n    \\\"sawyer\\\", \\n\\n    \\\"lima\\\", \\n\\n    \\\"monitor\\\"\\n\\n  ], \\n\\n  \\\"_meta\\\": {\\n\\n    \\\"hostvars\\\": {\\n\\n      \\\"lima\\\": {\\n\\n        \\\"alert_bwin_enabled\\\": true, \\n\\n        \\\"alert_bwin_threshold\\\": 10, \\n\\n        \\\"alert_bwout_enabled\\\": true, \\n\\n        \\\"alert_bwout_threshold\\\": 10, \\n\\n        \\\"alert_bwquota_enabled\\\": true, \\n\\n        \\\"alert_bwquota_threshold\\\": 80, \\n\\n        \\\"alert_cpu_enabled\\\": true, \\n\\n        \\\"alert_cpu_threshold\\\": 90, \\n\\n        \\\"alert_diskio_enabled\\\": true, \\n\\n        \\\"alert_diskio_threshold\\\": 10000, \\n\\n        \\\"ansible_host\\\": \\\"173.255.0.01\\\", \\n\\n        \\\"ansible_ssh_host\\\": \\\"173.255.0.1\\\", \\n\\n        \\\"api_id\\\": 2002301, \\n\\n        \\\"backup_weekly_daily\\\": 0, \\n\\n        \\\"backup_window\\\": 0, \\n\\n        \\\"create_dt\\\": \\\"2016-06-16 18:49:26.0\\\", \\n\\n        \\\"datacenter_city\\\": \\\"fremont\\\", \\n\\n        \\\"datacenter_id\\\": 3, \\n\\n        \\\"display_group\\\": \\\"\\\", \\n\\n        \\\"label\\\": \\\"lima\\\", \\n\\n        \\\"private_ip\\\": \\\"192.168.0.2\\\", \\n\\n        \\\"public_ip\\\": \\\"173.255.0.1\\\", \\n\\n        \\\"status\\\": 1, \\n\\n        \\\"total_hd\\\": 24576, \\n\\n        \\\"total_ram\\\": 2048, \\n\\n        \\\"total_xfer\\\": 2000, \\n\\n        \\\"watchdog\\\": true\\n\\n      }, \\n\\n      \\\"monitor\\\": {\\n\\n        \\\"alert_bwin_enabled\\\": true, \\n\\n        \\\"alert_bwin_threshold\\\": 10, \\n\\n        \\\"alert_bwout_enabled\\\": true, \\n\\n        \\\"alert_bwout_threshold\\\": 10, \\n\\n        \\\"alert_bwquota_enabled\\\": true, \\n\\n        \\\"alert_bwquota_threshold\\\": 80, \\n\\n        \\\"alert_cpu_enabled\\\": true, \\n\\n        \\\"alert_cpu_threshold\\\": 90, \\n\\n        \\\"alert_diskio_enabled\\\": true, \\n\\n        \\\"alert_diskio_threshold\\\": 10000, \\n\\n        \\\"ansible_host\\\": \\\"104.200.0.13\\\", \\n\\n        \\\"ansible_ssh_host\\\": \\\"104.200.0.13\\\", \\n\\n        \\\"api_id\\\": 2316311, \\n\\n        \\\"backup_weekly_daily\\\": 0, \\n\\n        \\\"backup_window\\\": 0, \\n\\n        \\\"create_dt\\\": \\\"2016-09-22 21:16:49.0\\\", \\n\\n        \\\"datacenter_city\\\": \\\"fremont\\\", \\n\\n        \\\"datacenter_id\\\": 3, \\n\\n        \\\"display_group\\\": \\\"\\\", \\n\\n        \\\"label\\\": \\\"monitor\\\", \\n\\n        \\\"private_ip\\\": \\\"192.168.1.2\\\", \\n\\n        \\\"public_ip\\\": \\\"104.200.0.13\\\", \\n\\n        \\\"status\\\": 1, \\n\\n        \\\"total_hd\\\": 24576, \\n\\n        \\\"total_ram\\\": 2048, \\n\\n        \\\"total_xfer\\\": 2000, \\n\\n        \\\"watchdog\\\": true\\n\\n      }, \\n\\n      \\\"sawyer\\\": {\\n\\n        \\\"alert_bwin_enabled\\\": true, \\n\\n        \\\"alert_bwin_threshold\\\": 5, \\n\\n        \\\"alert_bwout_enabled\\\": true, \\n\\n        \\\"alert_bwout_threshold\\\": 5, \\n\\n        \\\"alert_bwquota_enabled\\\": true, \\n\\n        \\\"alert_bwquota_threshold\\\": 80, \\n\\n        \\\"alert_cpu_enabled\\\": true, \\n\\n        \\\"alert_cpu_threshold\\\": 90, \\n\\n        \\\"alert_diskio_enabled\\\": true, \\n\\n        \\\"alert_diskio_threshold\\\": 1000, \\n\\n        \\\"ansible_host\\\": \\\"74.207.1.2\\\", \\n\\n        \\\"ansible_ssh_host\\\": \\\"74.207.1.2\\\", \\n\\n        \\\"api_id\\\": 64841, \\n\\n        \\\"backup_weekly_daily\\\": 0, \\n\\n        \\\"backup_window\\\": 7, \\n\\n        \\\"create_dt\\\": \\\"2014-09-20 06:08:10.0\\\", \\n\\n        \\\"datacenter_city\\\": \\\"fremont\\\", \\n\\n        \\\"datacenter_id\\\": 3, \\n\\n        \\\"display_group\\\": \\\"\\\", \\n\\n        \\\"label\\\": \\\"sawyer\\\", \\n\\n        \\\"private_ip\\\": \\\"192.168.2.8\\\", \\n\\n        \\\"public_ip\\\": \\\"74.207.1.2\\\", \\n\\n        \\\"status\\\": 1, \\n\\n        \\\"total_hd\\\": 49152, \\n\\n        \\\"total_ram\\\": 4096, \\n\\n        \\\"total_xfer\\\": 3000, \\n\\n        \\\"watchdog\\\": true\\n\\n      }\\n\\n    }\\n\\n  }, \\n\\n  \\\"fremont\\\": [\\n\\n    \\\"sawyer\\\", \\n\\n    \\\"lima\\\", \\n\\n    \\\"monitor\\\"\\n\\n  ], \\n\\n  \\\"linode\\\": [\\n\\n    \\\"sawyer\\\", \\n\\n    \\\"lima\\\", \\n\\n    \\\"monitor\\\"\\n\\n  ]\\n\\n}\\n\\n\\n\\n```\", \n    \"title\": \"Linode inventory script improvements\"\n  }, \n  \"19330\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nuser module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nProblem:\\r\\n```\\r\\nfailed: [192.168.190.18] (item={u'groups': u'...', u'password': u'...', u'name': u'...', u'expires': ...}) => {\\\"failed\\\": true, \\\"item\\\": {\\\"expires\\\": ..., \\\"groups\\\": \\\"...\\\", \\\"name\\\": \\\"...\\\", \\\"password\\\": \\\"...\\\"}, \\\"msg\\\": \\\"/usr/sbin/useradd: unrecognized option '--expiredate'\\\\n`useradd --help' lub `useradd --usage' poda wi\\u0119cej informacji.\\\\n\\\", \\\"name\\\": \\\"...\\\", \\\"rc\\\": 2}\\r\\n```\\r\\nOn older systems (I have this issue on OpenSuSE 11.1, pwdutils-3.2.2-2.10), \\\"--expiredate\\\" used to be \\\"--expire\\\". Changing it to \\\"-e\\\" solves the problem. I tested it on Debian (from 6 to 9), CentOS 6 and OpenSuSE 11.\", \n    \"component_name\": \"user\", \n    \"component_raw\": \"user module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19330\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"core_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/user.py\", \n    \"summary\": \"Problem:\\n\\n```\\n\\nfailed: [192.168.190.18] (item={u'groups': u'...', u'password': u'...', u'name': u'...', u'expires': ...}) => {\\\"failed\\\": true, \\\"item\\\": {\\\"expires\\\": ..., \\\"groups\\\": \\\"...\\\", \\\"name\\\": \\\"...\\\", \\\"password\\\": \\\"...\\\"}, \\\"msg\\\": \\\"/usr/sbin/useradd: unrecognized option '--expiredate'\\\\n`useradd --help' lub `useradd --usage' poda wicej informacji.\\\\n\\\", \\\"name\\\": \\\"...\\\", \\\"rc\\\": 2}\\n\\n```\\n\\nOn older systems (I have this issue on OpenSuSE 11.1, pwdutils-3.2.2-2.10), \\\"--expiredate\\\" used to be \\\"--expire\\\". Changing it to \\\"-e\\\" solves the problem. I tested it on Debian (from 6 to 9), CentOS 6 and OpenSuSE 11.\", \n    \"title\": \"Fixed expiredate parameter in user module\"\n  }, \n  \"19331\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncs_host\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nnew cloudstack module cs_host\\r\\n\\r\\n\", \n    \"component_name\": \"cs_host\", \n    \"component_raw\": \"cs_host\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19331\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"in progress\", \n      \"module\", \n      \"new_plugin\", \n      \"owner_pr\", \n      \"shipit\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/cloudstack/cs_host.py\", \n    \"summary\": \"new cloudstack module cs_host\", \n    \"title\": \"cloudstack: new module cs_host\"\n  }, \n  \"19334\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel 28feba2fb3)\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nec2_vpc_route_table module\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0 (devel 28feba2fb3)\\n```\\n##### SUMMARY\\n\\nThis adds optional parameter `purge_routes` to allow just appending new routes, instead of replacing them. This was mentioned in #1746 and defaults to `true` to preserve compatibility.\\n\\nAnd also adds optional parameter `purge_subnets` to allow just appending new subnets associations, instead of replacing them, this defaults to `true` to preserve compatibility.\\n\\nThis is really useful when you want to manipulate already created route_tables, for example just associate with a new subnet.\\n\\nExample of appending a new subnet:\\n\\n```\\n    - name: Append a new subnet to current route table\\n      ec2_vpc_route_table:\\n        vpc_id: \\\"{{ MY_VPC_ID }}\\\"\\n        region: \\\"{{ MY_AWS_REGION }}\\\"\\n        subnets:\\n          - \\\"{{ AWS_DEV_SUBNET_ID }}\\\"\\n        purge_routes: false\\n        purge_subnets: false\\n        route_table_id: \\\"{{ MY_ROUTE_TABLE_ID }}\\\"\\n        lookup: id\\n```\\n\", \n    \"component_name\": \"ec2_vpc_route_table\", \n    \"component_raw\": \"ec2_vpc_route_table module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19334\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"committer_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\", \n    \"summary\": \"This adds optional parameter `purge_routes` to allow just appending new routes, instead of replacing them. This was mentioned in #1746 and defaults to `true` to preserve compatibility.\\n\\nAnd also adds optional parameter `purge_subnets` to allow just appending new subnets associations, instead of replacing them, this defaults to `true` to preserve compatibility.\\n\\nThis is really useful when you want to manipulate already created route_tables, for example just associate with a new subnet.\\n\\nExample of appending a new subnet:\\n\\n```\\n    - name: Append a new subnet to current route table\\n      ec2_vpc_route_table:\\n        vpc_id: \\\"{{ MY_VPC_ID }}\\\"\\n        region: \\\"{{ MY_AWS_REGION }}\\\"\\n        subnets:\\n          - \\\"{{ AWS_DEV_SUBNET_ID }}\\\"\\n        purge_routes: false\\n        purge_subnets: false\\n        route_table_id: \\\"{{ MY_ROUTE_TABLE_ID }}\\\"\\n        lookup: id\\n```\", \n    \"title\": \"Added purge_routes and purge_subnets option to ec2_vpc_route_table module\"\n  }, \n  \"19335\": {\n    \"ansible_version\": \"2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nconsul\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\ndefault\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nUbuntu 14:04\\r\\n\\r\\n##### SUMMARY\\r\\nCurrently because of a lack of idempotency in this module (an issue with Consul itself I know) when I run my playbook the consul module is asserted regardless of current state. This sets all checks\\r\\nto 'critical' until the interval has elapsed and the checks are able to give a true result. This gives\\r\\nfalse alerts in our monitoring system. There is an option to set status=passing as described in the product documentation: https://www.consul.io/docs/agent/checks.html such that, for example,\\r\\n```\\r\\n{\\r\\n  \\\"check\\\": {\\r\\n    \\\"id\\\": \\\"mem\\\",\\r\\n    \\\"script\\\": \\\"/bin/check_mem\\\",\\r\\n    \\\"interval\\\": \\\"10s\\\",\\r\\n    \\\"status\\\": \\\"passing\\\"\\r\\n  }\\r\\n}\\r\\n```\\r\\nOn the face of it this would be a straightforward addition to the module.\\r\\n\\r\\n\\r\\n\", \n    \"component_name\": \"consul\", \n    \"component_raw\": \"consul\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19335\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/clustering/consul.py\", \n    \"summary\": \"Currently because of a lack of idempotency in this module (an issue with Consul itself I know) when I run my playbook the consul module is asserted regardless of current state. This sets all checks\\n\\nto 'critical' until the interval has elapsed and the checks are able to give a true result. This gives\\n\\nfalse alerts in our monitoring system. There is an option to set status=passing as described in the product documentation: https://www.consul.io/docs/agent/checks.html such that, for example,\\n\\n```\\n\\n{\\n\\n  \\\"check\\\": {\\n\\n    \\\"id\\\": \\\"mem\\\",\\n\\n    \\\"script\\\": \\\"/bin/check_mem\\\",\\n\\n    \\\"interval\\\": \\\"10s\\\",\\n\\n    \\\"status\\\": \\\"passing\\\"\\n\\n  }\\n\\n}\\n\\n```\\n\\nOn the face of it this would be a straightforward addition to the module.\", \n    \"title\": \"Add status option to consul module\"\n  }, \n  \"19336\": {\n    \"ansible_version\": \"ansible 2.1.2.0+\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nsynchronize\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nansible 2.1.2.0+\\r\\n\\r\\n##### CONFIGURATION\\r\\nMake ssh work listen on port 2222 on localhost\\r\\nInventory:\\r\\n[samplehost]\\r\\nansible_ssh_user: anotheruser\\r\\nansible_ssh_host: localhost\\r\\nansible_ssh_port: 2222\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nDebian 8\\r\\n\\r\\n##### SUMMARY\\r\\nsynchronize fails to rsync files from current user to another user on the same machine\\r\\n\\r\\nI've traced down this problem to this logic in ansible/plugins/action/synchronize.py:88-99:\\r\\n\\r\\n        # If we're connecting to a remote host or we're delegating to another\\r\\n        # host or we're connecting to a different ssh instance on the\\r\\n        # localhost then we have to format the path as a remote rsync path\\r\\n        if host not in C.LOCALHOST or transport != \\\"local\\\" or \\\\\\r\\n                (host in C.LOCALHOST and not port_matches_localhost_port):\\r\\n            # If we're delegating to non-localhost and but the\\r\\n            # inventory_hostname host is localhost then we need the module to\\r\\n            # fix up the rsync path to use the controller's public DNS/IP\\r\\n            # instead of \\\"localhost\\\"\\r\\n            if port_matches_localhost_port and host in C.LOCALHOST:\\r\\n                self._task.args['_substitute_controller'] = True\\r\\n            return self._format_rsync_rsh_target(host, path, user)\\r\\n\\r\\nThis needs to cover different localhost users&ports case. Resolving this should also resolve https://github.com/ansible/ansible-modules-core/issues/5385\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nUse provided configuration and try:\\r\\n`ansible -i <inventory> samplehost -m synchronize -a \\\"src=~/source/ dest=~/destination\\\"\\r\\n`\\r\\n##### EXPECTED RESULTS\\r\\nShould work the same as:\\r\\n`rsync -e \\\"ssh -o Port=2222\\\" -a ~/source anotheruser@localhost:~/destination\\r\\n`\\r\\n##### ACTUAL RESULTS\\r\\nDoesn't provide rsh rsync path with user specified and fails due to badly expanded path/permission error.\\r\\n\\r\\n`\\\"cmd\\\": \\\"/usr/bin/rsync --delay-updates -F --compress --archive --rsh 'ssh -i <key> -S none -o StrictHostKeyChecking=no -o Port=2222' --out-format='<<CHANGED>>%i %n%L' \\\\\\\"/home/currentuser/source\\\\\\\" \\\\\\\"/home/currentuser/destination\\\\\\\"\\\", `\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"synchronize\", \n    \"component_raw\": \"synchronize\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19336\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\", \n      \"needs_info\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/synchronize.py\", \n    \"summary\": \"synchronize fails to rsync files from current user to another user on the same machine\\n\\n\\n\\nI've traced down this problem to this logic in ansible/plugins/action/synchronize.py:88-99:\\n\\n\\n\\n        # If we're connecting to a remote host or we're delegating to another\\n\\n        # host or we're connecting to a different ssh instance on the\\n\\n        # localhost then we have to format the path as a remote rsync path\\n\\n        if host not in C.LOCALHOST or transport != \\\"local\\\" or \\\\\\n\\n                (host in C.LOCALHOST and not port_matches_localhost_port):\\n\\n            # If we're delegating to non-localhost and but the\\n\\n            # inventory_hostname host is localhost then we need the module to\\n\\n            # fix up the rsync path to use the controller's public DNS/IP\\n\\n            # instead of \\\"localhost\\\"\\n\\n            if port_matches_localhost_port and host in C.LOCALHOST:\\n\\n                self._task.args['_substitute_controller'] = True\\n\\n            return self._format_rsync_rsh_target(host, path, user)\\n\\n\\n\\nThis needs to cover different localhost users&ports case. Resolving this should also resolve https://github.com/ansible/ansible-modules-core/issues/5385\", \n    \"title\": \"synchronize fail when currentuser@localhost tries to rsync to anotheruser@localhost on nonstandard ssh port\"\n  }, \n  \"19339\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/administrator/ansible/playbooks/ansible.cfg\\nconfigured module search path = [/usr/share/ansible/ /home/administrator/ansible/playbooks]\", \n    \"body\": \"<!---\\r\\nPlease verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\n- nxos_ping\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/administrator/ansible/playbooks/ansible.cfg\\r\\n  configured module search path = ['/usr/share/ansible/', '/home/administrator/ansible/playbooks']\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n- name: LEAF Gather facts from Nexus switches\\r\\n  hosts: evpn_leaf\\r\\n  connection: local\\r\\n  gather_facts: no\\r\\n\\r\\n  vars:\\r\\n    destinations:\\r\\n      - 10.3.1.6\\r\\n      - 10.100.100.1\\r\\n      - 10.100.100.2\\r\\n\\r\\n[snip]\\r\\n\\r\\n  - name: Ping\\r\\n    nxos_ping:\\r\\n     host: \\\"{{inventory_hostname}}\\\"\\r\\n     password: \\\"{{password}}\\\"\\r\\n     username: admin\\r\\n     dest: \\\"{{item}}\\\"\\r\\n    with_items: \\\"{{destinations}}\\\"\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/tmp/ansible_qMtqG0/ansible_module_nxos_ping.py\\\", line 435, in <module>\\r\\n    main()\\r\\n  File \\\"/tmp/ansible_qMtqG0/ansible_module_nxos_ping.py\\\", line 409, in main\\r\\n    ping_command, module, module.params['transport'])\\r\\n  File \\\"/tmp/ansible_qMtqG0/ansible_module_nxos_ping.py\\\", line 346, in get_ping_results\\r\\n    ping = execute_show_command_ping(command, module)[0]\\r\\n  File \\\"/tmp/ansible_qMtqG0/ansible_module_nxos_ping.py\\\", line 342, in execute_show_command_ping\\r\\n    return body\\r\\nUnboundLocalError: local variable 'body' referenced before assignment\\r\\n\\r\\nfailed: [nex-9396-e.sandbox.wwtatc.local] (item=10.100.100.2) => {\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"nxos_ping\\\"\\r\\n    },\\r\\n    \\\"item\\\": \\\"10.100.100.2\\\",\\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_qMtqG0/ansible_module_nxos_ping.py\\\\\\\", line 435, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_qMtqG0/ansible_module_nxos_ping.py\\\\\\\", line 409, in main\\\\n    ping_command, module, module.params['transport'])\\\\n  File \\\\\\\"/tmp/ansible_qMtqG0/ansible_module_nxos_ping.py\\\\\\\", line 346, in get_ping_results\\\\n    ping = execute_show_command_ping(command, module)[0]\\\\n  File \\\\\\\"/tmp/ansible_qMtqG0/ansible_module_nxos_ping.py\\\\\\\", line 342, in execute_show_command_ping\\\\n    return body\\\\nUnboundLocalError: local variable 'body' referenced before assignment\\\\n\\\",\\r\\n    \\\"module_stdout\\\": \\\"\\\",\\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"nxos_ping\", \n    \"component_raw\": \"- nxos_ping\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19339\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nxos/nxos_ping.py\", \n    \"summary\": \"\", \n    \"title\": \"nxos_ping: local variable 'body' referenced before assignment\"\n  }, \n  \"19341\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nconsul_acl (http://docs.ansible.com/ansible/consul_acl_module.html)\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdd support for the new ACL types keyring and operator which Consul introduced in 0.6.0 and 0.7.0 respectively.\\r\\nhttps://github.com/hashicorp/consul/blob/master/acl/policy.go#L23-L24\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nRule types keyring and operator, no expanding required just a policy.\\r\\n\\r\\n```\\r\\n- consul_acl:\\r\\n    rules:\\r\\n      - keyring: read\\r\\n      - operator: write\\r\\n```\", \n    \"component_name\": \"consul_acl (http//docs.ansible.com/ansible/consul_acl_ .html)\", \n    \"component_raw\": \"consul_acl (http://docs.ansible.com/ansible/consul_acl_module.html)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19341\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/clustering/consul_acl.py\", \n    \"summary\": \"Add support for the new ACL types keyring and operator which Consul introduced in 0.6.0 and 0.7.0 respectively.\\n\\nhttps://github.com/hashicorp/consul/blob/master/acl/policy.go#L23-L24\", \n    \"title\": \"consul_acl keyring and operator ACL types\"\n  }, \n  \"19342\": {\n    \"ansible_version\": \"[stevenca@cil-mgmt cil-infra]$ ansible-playbook --version\\nansible-playbook 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nPlease verify first that your issue/request is not already reported in GitHub\\r\\n-->\\r\\n\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nnxos_vlan\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n[stevenca@cil-mgmt cil-infra]$ ansible-playbook --version\\r\\nansible-playbook 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nNo changes to ansible.cfg, installed with pip\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nHost: Red Hat Enterprise Linux Server release 7.3 (Maipo)\\r\\nSwitch:  version 7.0(3)I2(2d)\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nnxos_vlan takes ~40 minutes to add one vlan\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\ntime ansible-playbook -vvv -i cil-hosts nxos_vlan_test.yml\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n---\\r\\n- hosts: localhost\\r\\n  gather_facts: no\\r\\n  connection: local\\r\\n\\r\\n  tasks:\\r\\n    - name: Creating vlan\\r\\n      nxos_vlan:\\r\\n        host: switch\\r\\n        transport: cli\\r\\n        vlan_id: 2222\\r\\n        state: present\\r\\n        admin_state: up\\r\\n        name: smctest\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nI expected the VLAN to be added in a much shorter amount of time.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nIt took 40 minutes to add the VLAN.  It takes 15 to verify that the VLAN is there on second run.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nPLAYBOOK: nxos_vlan_test.yml ***************************************************\\r\\n1 plays in nxos_vlan_test.yml\\r\\n\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [Creating vlan] ***********************************************************\\r\\ntask path: /home/stevenca/projects/cil-infra/nxos_vlan_test.yml:7\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/core/network/nxos/nxos_vlan.py\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: stevenca\\r\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1481720862.47-239541588211277 `\\\" && echo ansible-tmp-1481720862.4\\r\\n7-239541588211277=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1481720862.47-239541588211277 `\\\" ) && sleep 0'\\r\\n<127.0.0.1> PUT /tmp/tmpM4a2g9 TO /home/stevenca/.ansible/tmp/ansible-tmp-1481720862.47-239541588211277/nxos_vlan.py\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /home/stevenca/.ansible/tmp/ansible-tmp-1481720862.47-239541588211277/ /home/stevenca/.ansible/tmp/ansible-tmp-148172\\r\\n0862.47-239541588211277/nxos_vlan.py && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python /home/stevenca/.ansible/tmp/ansible-tmp-1481720862.47-239541588211277/nxos_vlan.py; rm -rf \\\"/home/stevenca/.ans\\r\\nible/tmp/ansible-tmp-1481720862.47-239541588211277/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nchanged: [localhost] => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"end_state\\\": {\\r\\n        \\\"admin_state\\\": \\\"up\\\",\\r\\n        \\\"mapped_vni\\\": \\\"0\\\",\\r\\n        \\\"name\\\": \\\"smctest\\\",\\r\\n        \\\"vlan_id\\\": \\\"2222\\\",\\r\\n        \\\"vlan_state\\\": \\\"active\\\"\\r\\n    },\\r\\n    \\\"end_state_vlans_list\\\": [\\r\\n        \\\"1\\\",\\r\\n        \\\"2\\\",\\r\\n        \\\"9\\\",\\r\\n        \\\"10\\\",\\r\\n        \\\"11\\\",\\r\\n        \\\"12\\\",\\r\\n        \\\"13\\\",\\r\\n        \\\"14\\\",\\r\\n        \\\"15\\\",\\r\\n        \\\"16\\\",\\r\\n        \\\"17\\\",\\r\\n        \\\"18\\\",\\r\\n        \\\"19\\\",\\r\\n        \\\"21\\\",\\r\\n        \\\"25\\\",\\r\\n        \\\"36\\\",\\r\\n        \\\"37\\\",\\r\\n        \\\"38\\\",\\r\\n        \\\"39\\\",\\r\\n        \\\"40\\\",\\r\\n        \\\"41\\\",\\r\\n        \\\"100\\\",\\r\\n        \\\"101\\\",\\r\\n        \\\"102\\\",\\r\\n        \\\"111\\\",\\r\\n        \\\"112\\\",\\r\\n        \\\"128\\\",\\r\\n        \\\"144\\\",\\r\\n        \\\"145\\\",\\r\\n        \\\"146\\\",\\r\\n        \\\"147\\\",\\r\\n        \\\"148\\\",\\r\\n        \\\"149\\\",\\r\\n        \\\"200\\\",\\r\\n        \\\"201\\\",\\r\\n        \\\"202\\\",\\r\\n        \\\"203\\\",\\r\\n        \\\"210\\\",\\r\\n        \\\"212\\\",\\r\\n        \\\"218\\\",\\r\\n        \\\"220\\\",\\r\\n        \\\"256\\\",\\r\\n        \\\"502\\\",\\r\\n        \\\"520\\\",\\r\\n        \\\"521\\\",\\r\\n        \\\"522\\\",\\r\\n        \\\"523\\\",\\r\\n        \\\"524\\\",\\r\\n        \\\"525\\\",\\r\\n        \\\"526\\\",\\r\\n        \\\"527\\\",\\r\\n        \\\"528\\\",\\r\\n        \\\"529\\\",\\r\\n        \\\"530\\\",\\r\\n        \\\"531\\\",\\r\\n        \\\"564\\\",\\r\\n        \\\"565\\\",\\r\\n        \\\"566\\\",\\r\\n        \\\"567\\\",\\r\\n        \\\"568\\\",\\r\\n        \\\"569\\\",\\r\\n        \\\"570\\\",\\r\\n        \\\"571\\\",\\r\\n        \\\"572\\\",\\r\\n        \\\"573\\\",\\r\\n        \\\"574\\\",\\r\\n        \\\"575\\\",\\r\\n        \\\"576\\\",\\r\\n        \\\"577\\\",\\r\\n        \\\"578\\\",\\r\\n        \\\"579\\\",\\r\\n        \\\"580\\\",\\r\\n        \\\"581\\\",\\r\\n        \\\"582\\\",\\r\\n        \\\"583\\\",\\r\\n        \\\"584\\\",\\r\\n        \\\"585\\\",\\r\\n        \\\"586\\\",\\r\\n        \\\"587\\\",\\r\\n        \\\"588\\\",\\r\\n        \\\"589\\\",\\r\\n        \\\"590\\\",\\r\\n        \\\"591\\\",\\r\\n        \\\"592\\\",\\r\\n        \\\"593\\\",\\r\\n        \\\"594\\\",\\r\\n        \\\"595\\\",\\r\\n        \\\"596\\\",\\r\\n        \\\"597\\\",\\r\\n        \\\"598\\\",\\r\\n        \\\"599\\\",\\r\\n        \\\"600\\\",\\r\\n        \\\"601\\\",\\r\\n        \\\"602\\\",\\r\\n        \\\"603\\\",\\r\\n        \\\"604\\\",\\r\\n        \\\"610\\\",\\r\\n        \\\"611\\\",\\r\\n        \\\"666\\\",\\r\\n        \\\"700\\\",\\r\\n        \\\"701\\\",\\r\\n        \\\"702\\\",\\r\\n        \\\"703\\\",\\r\\n        \\\"704\\\",\\r\\n        \\\"705\\\",\\r\\n        \\\"710\\\",\\r\\n        \\\"711\\\",\\r\\n        \\\"712\\\",\\r\\n        \\\"713\\\",\\r\\n        \\\"714\\\",\\r\\n        \\\"715\\\",\\r\\n        \\\"716\\\",\\r\\n        \\\"717\\\",\\r\\n        \\\"718\\\",\\r\\n        \\\"719\\\",\\r\\n        \\\"720\\\",\\r\\n        \\\"721\\\",\\r\\n        \\\"801\\\",\\r\\n        \\\"1055\\\",\\r\\n        \\\"1056\\\",\\r\\n        \\\"1057\\\",\\r\\n        \\\"1058\\\",\\r\\n        \\\"1059\\\",\\r\\n        \\\"2001\\\",\\r\\n        \\\"2002\\\",\\r\\n        \\\"2003\\\",\\r\\n        \\\"2004\\\",\\r\\n        \\\"2005\\\",\\r\\n        \\\"2006\\\",\\r\\n        \\\"2007\\\",\\r\\n        \\\"2008\\\",\\r\\n        \\\"2009\\\",\\r\\n        \\\"2010\\\",\\r\\n        \\\"2011\\\",\\r\\n        \\\"2012\\\",\\r\\n        \\\"2013\\\",\\r\\n        \\\"2014\\\",\\r\\n        \\\"2015\\\",\\r\\n        \\\"2016\\\",\\r\\n        \\\"2017\\\",\\r\\n        \\\"2018\\\",\\r\\n        \\\"2019\\\",\\r\\n        \\\"2020\\\",\\r\\n        \\\"2021\\\",\\r\\n        \\\"2022\\\",\\r\\n        \\\"2023\\\",\\r\\n        \\\"2024\\\",\\r\\n        \\\"2025\\\",\\r\\n        \\\"2026\\\",\\r\\n        \\\"2027\\\",\\r\\n        \\\"2028\\\",\\r\\n        \\\"2029\\\",\\r\\n        \\\"2030\\\",\\r\\n        \\\"2031\\\",\\r\\n        \\\"2032\\\",\\r\\n        \\\"2033\\\",\\r\\n        \\\"2034\\\",\\r\\n        \\\"2035\\\",\\r\\n        \\\"2036\\\",\\r\\n        \\\"2037\\\",\\r\\n        \\\"2038\\\",\\r\\n        \\\"2039\\\",\\r\\n        \\\"2040\\\",\\r\\n        \\\"2041\\\",\\r\\n        \\\"2042\\\",\\r\\n        \\\"2043\\\",\\r\\n        \\\"2044\\\",\\r\\n        \\\"2045\\\",\\r\\n        \\\"2046\\\",\\r\\n        \\\"2047\\\",\\r\\n        \\\"2048\\\",\\r\\n        \\\"2049\\\",\\r\\n        \\\"2050\\\",\\r\\n        \\\"2051\\\",\\r\\n        \\\"2052\\\",\\r\\n        \\\"2053\\\",\\r\\n        \\\"2054\\\",\\r\\n        \\\"2055\\\",\\r\\n        \\\"2056\\\",\\r\\n        \\\"2057\\\",\\r\\n        \\\"2058\\\",\\r\\n        \\\"2059\\\",\\r\\n        \\\"2060\\\",\\r\\n        \\\"2061\\\",\\r\\n        \\\"2062\\\",\\r\\n        \\\"2063\\\",\\r\\n        \\\"2064\\\",\\r\\n        \\\"2065\\\",\\r\\n        \\\"2066\\\",\\r\\n        \\\"2067\\\",\\r\\n        \\\"2068\\\",\\r\\n        \\\"2069\\\",\\r\\n        \\\"2070\\\",\\r\\n        \\\"2071\\\",\\r\\n        \\\"2072\\\",\\r\\n        \\\"2073\\\",\\r\\n        \\\"2074\\\",\\r\\n        \\\"2075\\\",\\r\\n        \\\"2076\\\",\\r\\n        \\\"2077\\\",\\r\\n        \\\"2078\\\",\\r\\n        \\\"2079\\\",\\r\\n        \\\"2080\\\",\\r\\n        \\\"2081\\\",\\r\\n        \\\"2082\\\",\\r\\n        \\\"2083\\\",\\r\\n        \\\"2084\\\",\\r\\n        \\\"2085\\\",\\r\\n        \\\"2086\\\",\\r\\n        \\\"2087\\\",\\r\\n        \\\"2088\\\",\\r\\n        \\\"2089\\\",\\r\\n        \\\"2090\\\",\\r\\n        \\\"2091\\\",\\r\\n        \\\"2092\\\",\\r\\n        \\\"2093\\\",\\r\\n        \\\"2094\\\",\\r\\n        \\\"2095\\\",\\r\\n        \\\"2096\\\",\\r\\n        \\\"2097\\\",\\r\\n        \\\"2098\\\",\\r\\n        \\\"2099\\\",\\r\\n        \\\"2100\\\",\\r\\n        \\\"2101\\\",\\r\\n        \\\"2102\\\",\\r\\n        \\\"2103\\\",\\r\\n        \\\"2104\\\",\\r\\n        \\\"2105\\\",\\r\\n        \\\"2106\\\",\\r\\n        \\\"2107\\\",\\r\\n        \\\"2108\\\",\\r\\n        \\\"2109\\\",\\r\\n        \\\"2110\\\",\\r\\n        \\\"2111\\\",\\r\\n        \\\"2112\\\",\\r\\n        \\\"2113\\\",\\r\\n        \\\"2114\\\",\\r\\n        \\\"2115\\\",\\r\\n        \\\"2116\\\",\\r\\n        \\\"2117\\\",\\r\\n        \\\"2118\\\",\\r\\n        \\\"2119\\\",\\r\\n        \\\"2120\\\",\\r\\n        \\\"2121\\\",\\r\\n        \\\"2122\\\",\\r\\n        \\\"2123\\\",\\r\\n        \\\"2124\\\",\\r\\n        \\\"2125\\\",\\r\\n        \\\"2126\\\",\\r\\n        \\\"2127\\\",\\r\\n        \\\"2128\\\",\\r\\n        \\\"2129\\\",\\r\\n        \\\"2130\\\",\\r\\n        \\\"2131\\\",\\r\\n        \\\"2132\\\",\\r\\n        \\\"2133\\\",\\r\\n        \\\"2134\\\",\\r\\n        \\\"2135\\\",\\r\\n        \\\"2136\\\",\\r\\n        \\\"2137\\\",\\r\\n        \\\"2138\\\",\\r\\n        \\\"2139\\\",\\r\\n        \\\"2140\\\",\\r\\n        \\\"2141\\\",\\r\\n        \\\"2142\\\",\\r\\n        \\\"2143\\\",\\r\\n        \\\"2144\\\",\\r\\n        \\\"2145\\\",\\r\\n        \\\"2146\\\",\\r\\n        \\\"2147\\\",\\r\\n        \\\"2148\\\",\\r\\n        \\\"2149\\\",\\r\\n        \\\"2150\\\",\\r\\n        \\\"2151\\\",\\r\\n        \\\"2152\\\",\\r\\n        \\\"2153\\\",\\r\\n        \\\"2154\\\",\\r\\n        \\\"2155\\\",\\r\\n        \\\"2156\\\",\\r\\n        \\\"2157\\\",\\r\\n        \\\"2158\\\",\\r\\n        \\\"2159\\\",\\r\\n        \\\"2160\\\",\\r\\n        \\\"2161\\\",\\r\\n        \\\"2162\\\",\\r\\n        \\\"2163\\\",\\r\\n        \\\"2164\\\",\\r\\n        \\\"2165\\\",\\r\\n        \\\"2166\\\",\\r\\n        \\\"2167\\\",\\r\\n        \\\"2168\\\",\\r\\n        \\\"2169\\\",\\r\\n        \\\"2170\\\",\\r\\n        \\\"2171\\\",\\r\\n        \\\"2172\\\",\\r\\n        \\\"2173\\\",\\r\\n        \\\"2174\\\",\\r\\n        \\\"2175\\\",\\r\\n        \\\"2176\\\",\\r\\n        \\\"2177\\\",\\r\\n        \\\"2178\\\",\\r\\n        \\\"2179\\\",\\r\\n        \\\"2180\\\",\\r\\n        \\\"2181\\\",\\r\\n        \\\"2182\\\",\\r\\n        \\\"2183\\\",\\r\\n        \\\"2184\\\",\\r\\n        \\\"2185\\\",\\r\\n        \\\"2186\\\",\\r\\n        \\\"2187\\\",\\r\\n        \\\"2188\\\",\\r\\n        \\\"2189\\\",\\r\\n        \\\"2190\\\",\\r\\n        \\\"2191\\\",\\r\\n        \\\"2192\\\",\\r\\n        \\\"2193\\\",\\r\\n        \\\"2194\\\",\\r\\n        \\\"2195\\\",\\r\\n        \\\"2196\\\",\\r\\n        \\\"2197\\\",\\r\\n        \\\"2198\\\",\\r\\n        \\\"2199\\\",\\r\\n        \\\"2200\\\",\\r\\n        \\\"2222\\\",\\r\\n        \\\"2491\\\",\\r\\n        \\\"2492\\\",\\r\\n        \\\"2493\\\",\\r\\n        \\\"2494\\\",\\r\\n        \\\"2496\\\",\\r\\n        \\\"2500\\\",\\r\\n        \\\"2501\\\",\\r\\n        \\\"2504\\\",\\r\\n        \\\"2505\\\",\\r\\n        \\\"2591\\\",\\r\\n        \\\"3009\\\",\\r\\n        \\\"3011\\\",\\r\\n        \\\"3012\\\",\\r\\n        \\\"3015\\\",\\r\\n        \\\"3511\\\",\\r\\n        \\\"3512\\\",\\r\\n        \\\"3911\\\",\\r\\n        \\\"3948\\\",\\r\\n        \\\"3949\\\"\\r\\n    ],\\r\\n    \\\"existing\\\": {},\\r\\n    \\\"existing_vlans_list\\\": [\\r\\n        \\\"1\\\",\\r\\n        \\\"2\\\",\\r\\n        \\\"9\\\",\\r\\n        \\\"10\\\",\\r\\n        \\\"11\\\",\\r\\n        \\\"12\\\",\\r\\n        \\\"13\\\",\\r\\n        \\\"14\\\",\\r\\n        \\\"15\\\",\\r\\n        \\\"16\\\",\\r\\n        \\\"17\\\",\\r\\n        \\\"18\\\",\\r\\n        \\\"19\\\",\\r\\n        \\\"21\\\",\\r\\n        \\\"25\\\",\\r\\n        \\\"36\\\",\\r\\n        \\\"37\\\",\\r\\n        \\\"38\\\",\\r\\n        \\\"39\\\",\\r\\n        \\\"40\\\",\\r\\n        \\\"41\\\",\\r\\n        \\\"100\\\",\\r\\n        \\\"101\\\",\\r\\n        \\\"102\\\",\\r\\n        \\\"111\\\",\\r\\n        \\\"112\\\",\\r\\n        \\\"128\\\",\\r\\n        \\\"144\\\",\\r\\n        \\\"145\\\",\\r\\n        \\\"146\\\",\\r\\n        \\\"147\\\",\\r\\n        \\\"148\\\",\\r\\n        \\\"149\\\",\\r\\n        \\\"200\\\",\\r\\n        \\\"201\\\",\\r\\n        \\\"202\\\",\\r\\n        \\\"203\\\",\\r\\n        \\\"210\\\",\\r\\n        \\\"212\\\",\\r\\n        \\\"218\\\",\\r\\n        \\\"220\\\",\\r\\n        \\\"256\\\",\\r\\n        \\\"502\\\",\\r\\n        \\\"520\\\",\\r\\n        \\\"521\\\",\\r\\n        \\\"522\\\",\\r\\n        \\\"523\\\",\\r\\n        \\\"524\\\",\\r\\n        \\\"525\\\",\\r\\n        \\\"526\\\",\\r\\n        \\\"527\\\",\\r\\n        \\\"528\\\",\\r\\n        \\\"529\\\",\\r\\n        \\\"530\\\",\\r\\n        \\\"531\\\",\\r\\n        \\\"564\\\",\\r\\n        \\\"565\\\",\\r\\n        \\\"566\\\",\\r\\n        \\\"567\\\",\\r\\n        \\\"568\\\",\\r\\n        \\\"569\\\",\\r\\n        \\\"570\\\",\\r\\n        \\\"571\\\",\\r\\n        \\\"572\\\",\\r\\n        \\\"573\\\",\\r\\n        \\\"574\\\",\\r\\n        \\\"575\\\",\\r\\n        \\\"576\\\",\\r\\n        \\\"577\\\",\\r\\n        \\\"578\\\",\\r\\n        \\\"579\\\",\\r\\n        \\\"580\\\",\\r\\n        \\\"581\\\",\\r\\n        \\\"582\\\",\\r\\n        \\\"583\\\",\\r\\n        \\\"584\\\",\\r\\n        \\\"585\\\",\\r\\n        \\\"586\\\",\\r\\n        \\\"587\\\",\\r\\n        \\\"588\\\",\\r\\n        \\\"589\\\",\\r\\n        \\\"590\\\",\\r\\n        \\\"591\\\",\\r\\n        \\\"592\\\",\\r\\n        \\\"593\\\",\\r\\n        \\\"594\\\",\\r\\n        \\\"595\\\",\\r\\n        \\\"596\\\",\\r\\n        \\\"597\\\",\\r\\n        \\\"598\\\",\\r\\n        \\\"599\\\",\\r\\n        \\\"600\\\",\\r\\n        \\\"601\\\",\\r\\n        \\\"602\\\",\\r\\n        \\\"603\\\",\\r\\n        \\\"604\\\",\\r\\n        \\\"610\\\",\\r\\n        \\\"611\\\",\\r\\n        \\\"666\\\",\\r\\n        \\\"700\\\",\\r\\n        \\\"701\\\",\\r\\n        \\\"702\\\",\\r\\n        \\\"703\\\",\\r\\n        \\\"704\\\",\\r\\n        \\\"705\\\",\\r\\n        \\\"710\\\",\\r\\n        \\\"711\\\",\\r\\n        \\\"712\\\",\\r\\n        \\\"713\\\",\\r\\n        \\\"714\\\",\\r\\n        \\\"715\\\",\\r\\n        \\\"716\\\",\\r\\n        \\\"717\\\",\\r\\n        \\\"718\\\",\\r\\n        \\\"719\\\",\\r\\n        \\\"720\\\",\\r\\n        \\\"721\\\",\\r\\n        \\\"801\\\",\\r\\n        \\\"1055\\\",\\r\\n        \\\"1056\\\",\\r\\n        \\\"1057\\\",\\r\\n        \\\"1058\\\",\\r\\n        \\\"1059\\\",\\r\\n        \\\"2001\\\",\\r\\n        \\\"2002\\\",\\r\\n        \\\"2003\\\",\\r\\n        \\\"2004\\\",\\r\\n        \\\"2005\\\",\\r\\n        \\\"2006\\\",\\r\\n        \\\"2007\\\",\\r\\n        \\\"2008\\\",\\r\\n        \\\"2009\\\",\\r\\n        \\\"2010\\\",\\r\\n        \\\"2011\\\",\\r\\n        \\\"2012\\\",\\r\\n        \\\"2013\\\",\\r\\n        \\\"2014\\\",\\r\\n        \\\"2015\\\",\\r\\n        \\\"2016\\\",\\r\\n        \\\"2017\\\",\\r\\n        \\\"2018\\\",\\r\\n        \\\"2019\\\",\\r\\n        \\\"2020\\\",\\r\\n        \\\"2021\\\",\\r\\n        \\\"2022\\\",\\r\\n        \\\"2023\\\",\\r\\n        \\\"2024\\\",\\r\\n        \\\"2025\\\",\\r\\n        \\\"2026\\\",\\r\\n        \\\"2027\\\",\\r\\n        \\\"2028\\\",\\r\\n        \\\"2029\\\",\\r\\n        \\\"2030\\\",\\r\\n        \\\"2031\\\",\\r\\n        \\\"2032\\\",\\r\\n        \\\"2033\\\",\\r\\n        \\\"2034\\\",\\r\\n        \\\"2035\\\",\\r\\n        \\\"2036\\\",\\r\\n        \\\"2037\\\",\\r\\n        \\\"2038\\\",\\r\\n        \\\"2039\\\",\\r\\n        \\\"2040\\\",\\r\\n        \\\"2041\\\",\\r\\n        \\\"2042\\\",\\r\\n        \\\"2043\\\",\\r\\n        \\\"2044\\\",\\r\\n        \\\"2045\\\",\\r\\n        \\\"2046\\\",\\r\\n        \\\"2047\\\",\\r\\n        \\\"2048\\\",\\r\\n        \\\"2049\\\",\\r\\n        \\\"2050\\\",\\r\\n        \\\"2051\\\",\\r\\n        \\\"2052\\\",\\r\\n        \\\"2053\\\",\\r\\n        \\\"2054\\\",\\r\\n        \\\"2055\\\",\\r\\n        \\\"2056\\\",\\r\\n        \\\"2057\\\",\\r\\n        \\\"2058\\\",\\r\\n        \\\"2059\\\",\\r\\n        \\\"2060\\\",\\r\\n        \\\"2061\\\",\\r\\n        \\\"2062\\\",\\r\\n        \\\"2063\\\",\\r\\n        \\\"2064\\\",\\r\\n        \\\"2065\\\",\\r\\n        \\\"2066\\\",\\r\\n        \\\"2067\\\",\\r\\n        \\\"2068\\\",\\r\\n        \\\"2069\\\",\\r\\n        \\\"2070\\\",\\r\\n        \\\"2071\\\",\\r\\n        \\\"2072\\\",\\r\\n        \\\"2073\\\",\\r\\n        \\\"2074\\\",\\r\\n        \\\"2075\\\",\\r\\n        \\\"2076\\\",\\r\\n        \\\"2077\\\",\\r\\n        \\\"2078\\\",\\r\\n        \\\"2079\\\",\\r\\n        \\\"2080\\\",\\r\\n        \\\"2081\\\",\\r\\n        \\\"2082\\\",\\r\\n        \\\"2083\\\",\\r\\n        \\\"2084\\\",\\r\\n        \\\"2085\\\",\\r\\n        \\\"2086\\\",\\r\\n        \\\"2087\\\",\\r\\n        \\\"2088\\\",\\r\\n        \\\"2089\\\",\\r\\n        \\\"2090\\\",\\r\\n        \\\"2091\\\",\\r\\n        \\\"2092\\\",\\r\\n        \\\"2093\\\",\\r\\n        \\\"2094\\\",\\r\\n        \\\"2095\\\",\\r\\n        \\\"2096\\\",\\r\\n        \\\"2097\\\",\\r\\n        \\\"2098\\\",\\r\\n        \\\"2099\\\",\\r\\n        \\\"2100\\\",\\r\\n        \\\"2101\\\",\\r\\n        \\\"2102\\\",\\r\\n        \\\"2103\\\",\\r\\n        \\\"2104\\\",\\r\\n        \\\"2105\\\",\\r\\n        \\\"2106\\\",\\r\\n        \\\"2107\\\",\\r\\n        \\\"2108\\\",\\r\\n        \\\"2109\\\",\\r\\n        \\\"2110\\\",\\r\\n        \\\"2111\\\",\\r\\n        \\\"2112\\\",\\r\\n        \\\"2113\\\",\\r\\n        \\\"2114\\\",\\r\\n        \\\"2115\\\",\\r\\n        \\\"2116\\\",\\r\\n        \\\"2117\\\",\\r\\n        \\\"2118\\\",\\r\\n        \\\"2119\\\",\\r\\n        \\\"2120\\\",\\r\\n        \\\"2121\\\",\\r\\n        \\\"2122\\\",\\r\\n        \\\"2123\\\",\\r\\n        \\\"2124\\\",\\r\\n        \\\"2125\\\",\\r\\n        \\\"2126\\\",\\r\\n        \\\"2127\\\",\\r\\n        \\\"2128\\\",\\r\\n        \\\"2129\\\",\\r\\n        \\\"2130\\\",\\r\\n        \\\"2131\\\",\\r\\n        \\\"2132\\\",\\r\\n        \\\"2133\\\",\\r\\n        \\\"2134\\\",\\r\\n        \\\"2135\\\",\\r\\n        \\\"2136\\\",\\r\\n        \\\"2137\\\",\\r\\n        \\\"2138\\\",\\r\\n        \\\"2139\\\",\\r\\n        \\\"2140\\\",\\r\\n        \\\"2141\\\",\\r\\n        \\\"2142\\\",\\r\\n        \\\"2143\\\",\\r\\n        \\\"2144\\\",\\r\\n        \\\"2145\\\",\\r\\n        \\\"2146\\\",\\r\\n        \\\"2147\\\",\\r\\n        \\\"2148\\\",\\r\\n        \\\"2149\\\",\\r\\n        \\\"2150\\\",\\r\\n        \\\"2151\\\",\\r\\n        \\\"2152\\\",\\r\\n        \\\"2153\\\",\\r\\n        \\\"2154\\\",\\r\\n        \\\"2155\\\",\\r\\n        \\\"2156\\\",\\r\\n        \\\"2157\\\",\\r\\n        \\\"2158\\\",\\r\\n        \\\"2159\\\",\\r\\n        \\\"2160\\\",\\r\\n        \\\"2161\\\",\\r\\n        \\\"2162\\\",\\r\\n        \\\"2163\\\",\\r\\n        \\\"2164\\\",\\r\\n        \\\"2165\\\",\\r\\n        \\\"2166\\\",\\r\\n        \\\"2167\\\",\\r\\n        \\\"2168\\\",\\r\\n        \\\"2169\\\",\\r\\n        \\\"2170\\\",\\r\\n        \\\"2171\\\",\\r\\n        \\\"2172\\\",\\r\\n        \\\"2173\\\",\\r\\n        \\\"2174\\\",\\r\\n        \\\"2175\\\",\\r\\n        \\\"2176\\\",\\r\\n        \\\"2177\\\",\\r\\n        \\\"2178\\\",\\r\\n        \\\"2179\\\",\\r\\n        \\\"2180\\\",\\r\\n        \\\"2181\\\",\\r\\n        \\\"2182\\\",\\r\\n        \\\"2183\\\",\\r\\n        \\\"2184\\\",\\r\\n        \\\"2185\\\",\\r\\n        \\\"2186\\\",\\r\\n        \\\"2187\\\",\\r\\n        \\\"2188\\\",\\r\\n        \\\"2189\\\",\\r\\n        \\\"2190\\\",\\r\\n        \\\"2191\\\",\\r\\n        \\\"2192\\\",\\r\\n        \\\"2193\\\",\\r\\n        \\\"2194\\\",\\r\\n        \\\"2195\\\",\\r\\n        \\\"2196\\\",\\r\\n        \\\"2197\\\",\\r\\n        \\\"2198\\\",\\r\\n        \\\"2199\\\",\\r\\n        \\\"2200\\\",\\r\\n        \\\"2491\\\",\\r\\n        \\\"2492\\\",\\r\\n        \\\"2493\\\",\\r\\n        \\\"2494\\\",\\r\\n        \\\"2496\\\",\\r\\n        \\\"2500\\\",\\r\\n        \\\"2501\\\",\\r\\n        \\\"2504\\\",\\r\\n        \\\"2505\\\",\\r\\n        \\\"2591\\\",\\r\\n        \\\"3009\\\",\\r\\n        \\\"3011\\\",\\r\\n        \\\"3012\\\",\\r\\n        \\\"3015\\\",\\r\\n        \\\"3511\\\",\\r\\n        \\\"3512\\\",\\r\\n        \\\"3911\\\",\\r\\n        \\\"3948\\\",\\r\\n        \\\"3949\\\"\\r\\n    ],\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"admin_state\\\": \\\"up\\\",\\r\\n            \\\"auth_pass\\\": null,\\r\\n            \\\"authorize\\\": false,\\r\\n            \\\"config\\\": null,\\r\\n            \\\"host\\\": \\\"csn-sjc18-n9k1.ciscolabs.net\\\",\\r\\n            \\\"include_defaults\\\": \\\"False\\\",\\r\\n            \\\"mapped_vni\\\": null,\\r\\n            \\\"name\\\": \\\"smctest\\\",\\r\\n            \\\"password\\\": null,\\r\\n            \\\"port\\\": null,\\r\\n            \\\"provider\\\": null,\\r\\n            \\\"save\\\": false,\\r\\n            \\\"ssh_keyfile\\\": null,\\r\\n            \\\"state\\\": \\\"present\\\",\\r\\n            \\\"timeout\\\": 10,\\r\\n            \\\"transport\\\": \\\"cli\\\",\\r\\n            \\\"use_ssl\\\": false,\\r\\n            \\\"username\\\": null,\\r\\n            \\\"validate_certs\\\": true,\\r\\n            \\\"vlan_id\\\": \\\"2222\\\",\\r\\n            \\\"vlan_range\\\": null,\\r\\n            \\\"vlan_state\\\": null\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"nxos_vlan\\\"\\r\\n    },\\r\\n    \\\"proposed\\\": {\\r\\n        \\\"admin_state\\\": \\\"up\\\",\\r\\n        \\\"name\\\": \\\"smctest\\\"\\r\\n    },\\r\\n    \\\"proposed_vlans_list\\\": [\\r\\n        \\\"2222\\\"\\r\\n    ],\\r\\n    \\\"updates\\\": [\\r\\n        \\\"vlan 2222\\\",\\r\\n        \\\"no shutdown\\\",\\r\\n        \\\"name smctest\\\",\\r\\n        \\\"exit\\\"\\r\\n    ]\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=1    unreachable=0    failed=0\\r\\n\\r\\n\\r\\n\\r\\nreal    46m11.199s\\r\\nuser    48m1.013s\\r\\nsys    0m11.635s\\r\\n```\\r\\n\", \n    \"component_name\": \"nxos_vlan\", \n    \"component_raw\": \"nxos_vlan\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19342\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nxos/nxos_vlan.py\", \n    \"summary\": \"nxos_vlan takes ~40 minutes to add one vlan\", \n    \"title\": \"nxos_vlan takes ~40 minutes to add one vlan\"\n  }, \n  \"19344\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 6b1586748f) last updated 2016/12/09 155108 (GMT -400)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"\\r\\n##### ISSUE TYPE\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodules/cloud/amazon/ec2_vpc_route_table.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel 6b1586748f) last updated 2016/12/09 15:51:08 (GMT -400)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nDefault w/AWS related environment variables set\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nOS X 10.10.5 w/Python 2.7.11\\r\\n\\r\\n##### SUMMARY\\r\\nTrying to delete a VPC route table via \\\"state:absent\\\" when only specifying the vpc_id and route_table_id parameters fails to remove the route table.\\r\\n\\r\\nAs it turns out, you also need to specify the arguments \\\"lookup: id\\\" to the module invocation. Once this is done, the route table will be removed. The documentation doesn't specifically indicate this, so it would be good to add language showing the dependency.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nSample play that fails:\\r\\n\\r\\n```\\r\\n- name: Delete AZ1 private route table\\r\\n  ec2_vpc_route_table:\\r\\n    state: absent\\r\\n    vpc_id: \\\"{{ vpc_id }}\\\"\\r\\n    route_table_id: \\\"{{ private_rt_az1_id }}\\\"\\r\\n```\\r\\n\\r\\nSample play that succeeds:\\r\\n\\r\\n```\\r\\n- name: Delete AZ1 private route table\\r\\n  ec2_vpc_route_table:\\r\\n    state: absent\\r\\n    vpc_id: \\\"{{ vpc_id }}\\\"\\r\\n    route_table_id: \\\"{{ private_rt_az1_id }}\\\"\\r\\n    lookup: \\\"id\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nRoute table is removed.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nRoute table is not removed.\\r\\n\\r\\nNote that \\\"changed\\\" = \\\"false\\\"\\r\\n\\r\\n```\\r\\nTASK [aws-vpc-scenario2 : Delete AZ1 private route table] ******************************************************************************************************\\r\\ntask path: /Users/rcrelia/code/ansible/roles/aws-vpc-scenario2/tasks/delete.yml:82\\r\\nUsing module file /Users/rcrelia/ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\\r\\n<localhost> ESTABLISH LOCAL CONNECTION FOR USER: rcrelia\\r\\n<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo ~/.ansible/tmp/ansible-tmp-1481726021.49-28159386640601 `\\\" && echo ansible-tmp-1481726021.49-28159386640601=\\\"` echo ~/.ansible/tmp/ansible-tmp-1481726021.49-28159386640601 `\\\" ) && sleep 0'\\r\\n<localhost> PUT /var/folders/pt/ltft6_rx1d79hkkzq6s56jnm0000gn/T/tmpptRzQx TO /Users/rcrelia/.ansible/tmp/ansible-tmp-1481726021.49-28159386640601/ec2_vpc_route_table.py\\r\\n<localhost> EXEC /bin/sh -c 'chmod u+x /Users/rcrelia/.ansible/tmp/ansible-tmp-1481726021.49-28159386640601/ /Users/rcrelia/.ansible/tmp/ansible-tmp-1481726021.49-28159386640601/ec2_vpc_route_table.py && sleep 0'\\r\\n<localhost> EXEC /bin/sh -c 'python /Users/rcrelia/.ansible/tmp/ansible-tmp-1481726021.49-28159386640601/ec2_vpc_route_table.py; rm -rf \\\"/Users/rcrelia/.ansible/tmp/ansible-tmp-1481726021.49-28159386640601/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nok: [localhost] => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"aws_access_key\\\": null,\\r\\n            \\\"aws_secret_key\\\": null,\\r\\n            \\\"ec2_url\\\": null,\\r\\n            \\\"lookup\\\": \\\"tag\\\",\\r\\n            \\\"profile\\\": null,\\r\\n            \\\"propagating_vgw_ids\\\": null,\\r\\n            \\\"region\\\": null,\\r\\n            \\\"route_table_id\\\": \\\"rtb-xxxxxxxx\\\",\\r\\n            \\\"routes\\\": [],\\r\\n            \\\"security_token\\\": null,\\r\\n            \\\"state\\\": \\\"absent\\\",\\r\\n            \\\"subnets\\\": null,\\r\\n            \\\"tags\\\": null,\\r\\n            \\\"validate_certs\\\": true,\\r\\n            \\\"vpc_id\\\": \\\"vpc-xxxxxxxx\\\"\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"ec2_vpc_route_table\\\"\\r\\n    }\\r\\n}\\r\\n```\\r\\n\\r\\nOnce the { lookup: \\\"id\\\" } parameter is specified in the ec2_vpc_route_table invocation, the route table deletion succeeds:\\r\\n\\r\\n```\\r\\nTASK [aws-vpc-scenario2 : Delete AZ1 private route table] ******************************************************************************************************\\r\\ntask path: /Users/rcrelia/code/ansible/roles/aws-vpc-scenario2/tasks/delete.yml:90\\r\\nUsing module file /Users/rcrelia/ansible/lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\\r\\n<localhost> ESTABLISH LOCAL CONNECTION FOR USER: rcrelia\\r\\n<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo ~/.ansible/tmp/ansible-tmp-1481727942.24-177848199261792 `\\\" && echo ansible-tmp-1481727942.24-177848199261792=\\\"` echo ~/.ansible/tmp/ansible-tmp-1481727942.24-177848199261792 `\\\" ) && sleep 0'\\r\\n<localhost> PUT /var/folders/pt/ltft6_rx1d79hkkzq6s56jnm0000gn/T/tmpJz7NW1 TO /Users/rcrelia/.ansible/tmp/ansible-tmp-1481727942.24-177848199261792/ec2_vpc_route_table.py\\r\\n<localhost> EXEC /bin/sh -c 'chmod u+x /Users/rcrelia/.ansible/tmp/ansible-tmp-1481727942.24-177848199261792/ /Users/rcrelia/.ansible/tmp/ansible-tmp-1481727942.24-177848199261792/ec2_vpc_route_table.py && sleep 0'\\r\\n<localhost> EXEC /bin/sh -c 'python /Users/rcrelia/.ansible/tmp/ansible-tmp-1481727942.24-177848199261792/ec2_vpc_route_table.py; rm -rf \\\"/Users/rcrelia/.ansible/tmp/ansible-tmp-1481727942.24-177848199261792/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nchanged: [localhost] => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"aws_access_key\\\": null,\\r\\n            \\\"aws_secret_key\\\": null,\\r\\n            \\\"ec2_url\\\": null,\\r\\n            \\\"lookup\\\": \\\"id\\\",\\r\\n            \\\"profile\\\": null,\\r\\n            \\\"propagating_vgw_ids\\\": null,\\r\\n            \\\"region\\\": null,\\r\\n            \\\"route_table_id\\\": \\\"rtb-xxxxxxx\\\",\\r\\n            \\\"routes\\\": [],\\r\\n            \\\"security_token\\\": null,\\r\\n            \\\"state\\\": \\\"absent\\\",\\r\\n            \\\"subnets\\\": null,\\r\\n            \\\"tags\\\": null,\\r\\n            \\\"validate_certs\\\": true,\\r\\n            \\\"vpc_id\\\": \\\"vpc-xxxxxxxx\\\"\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"ec2_vpc_route_table\\\"\\r\\n    }\\r\\n}\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"s/cloud/amazon/ec2_vpc_route_table.py\", \n    \"component_raw\": \"modules/cloud/amazon/ec2_vpc_route_table.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19344\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"docs_report\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\", \n    \"summary\": \"Trying to delete a VPC route table via \\\"state:absent\\\" when only specifying the vpc_id and route_table_id parameters fails to remove the route table.\\n\\n\\n\\nAs it turns out, you also need to specify the arguments \\\"lookup: id\\\" to the module invocation. Once this is done, the route table will be removed. The documentation doesn't specifically indicate this, so it would be good to add language showing the dependency.\", \n    \"title\": \"Clarify generated documentation on route table removal in ec2_vpc_route_table.py\"\n  }, \n  \"19346\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\ntests/integration/targets/git/tasks/main\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThis provides a (passing) test case for the issues described in PRs: #19257  #19057\\r\\nSince the onset of my report and now, the issue was resolved (either it was an artifact of my original pull, or it was otherwise resolved in ansible/devel, but either way).\\r\\n\\r\\n```\\r\\n\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"tests/integration/targets/git/tasks/main\", \n    \"component_raw\": \"tests/integration/targets/git/tasks/main\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19346\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This provides a (passing) test case for the issues described in PRs: #19257  #19057\\n\\nSince the onset of my report and now, the issue was resolved (either it was an artifact of my original pull, or it was otherwise resolved in ansible/devel, but either way).\\n\\n\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"test related to pulls: #19257 / #19057\"\n  }, \n  \"19348\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncisco_spark\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThis PR adds a new module that allows for messages to be sent to a Cisco Spark Room or individual using either standard text or markdown formatting. \\r\\n\\r\\n##### Test Playbook\\r\\n\\r\\n```\\r\\n---\\r\\n\\r\\n- name: Cisco Spark Module Validation\\r\\n  hosts: localhost\\r\\n  connection: local\\r\\n  vars_files:\\r\\n    - ./vars.yml\\r\\n\\r\\n  tasks:\\r\\n\\r\\n    - name: Cisco Spark - Markdown Message to a Room\\r\\n      cisco_spark:\\r\\n        recipient_type: roomId\\r\\n        recipient_id: \\\"{{ room_id }}\\\"\\r\\n        message_type: markdown\\r\\n        personal_token: \\\"{{ token }}\\\"\\r\\n        message: \\\"**Cisco Spark Ansible Module - Room Message in Markdown**\\\"\\r\\n\\r\\n    - name: Cisco Spark - Text Message to a Room\\r\\n      cisco_spark:\\r\\n        recipient_type: roomId\\r\\n        recipient_id: \\\"{{ room_id }}\\\"\\r\\n        message_type: text\\r\\n        personal_token: \\\"{{ token }}\\\"\\r\\n        message: \\\"Cisco Spark Ansible Module - Room Message in Text\\\"\\r\\n    \\r\\n    - name: Cisco Spark - Text Message by an Individuals ID\\r\\n      cisco_spark:\\r\\n        recipient_type: toPersonId\\r\\n        recipient_id: \\\"{{ person_id}}\\\"\\r\\n        message_type: text\\r\\n        personal_token: \\\"{{ token }}\\\"\\r\\n        message: \\\"Cisco Spark Ansible Module - Text Message to Individual by ID\\\"\\r\\n    \\r\\n    - name: Cisco Spark - Text Message by an Individuals E-Mail Address\\r\\n      cisco_spark:\\r\\n        recipient_type: toPersonEmail\\r\\n        recipient_id: \\\"{{ person_email }}\\\"\\r\\n        message_type: text\\r\\n        personal_token: \\\"{{ token }}\\\"\\r\\n        message: \\\"Cisco Spark Ansible Module - Text Message to Individual by E-Mail\\\"\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"cisco_spark\", \n    \"component_raw\": \"cisco_spark\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19348\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/notification/cisco_spark.py\", \n    \"summary\": \"This PR adds a new module that allows for messages to be sent to a Cisco Spark Room or individual using either standard text or markdown formatting. \\n\\n\\n\\n##### Test Playbook\\n\\n\\n\\n```\\n\\n---\\n\\n\\n\\n- name: Cisco Spark Module Validation\\n\\n  hosts: localhost\\n\\n  connection: local\\n\\n  vars_files:\\n\\n    - ./vars.yml\\n\\n\\n\\n  tasks:\\n\\n\\n\\n    - name: Cisco Spark - Markdown Message to a Room\\n\\n      cisco_spark:\\n\\n        recipient_type: roomId\\n\\n        recipient_id: \\\"{{ room_id }}\\\"\\n\\n        message_type: markdown\\n\\n        personal_token: \\\"{{ token }}\\\"\\n\\n        message: \\\"**Cisco Spark Ansible Module - Room Message in Markdown**\\\"\\n\\n\\n\\n    - name: Cisco Spark - Text Message to a Room\\n\\n      cisco_spark:\\n\\n        recipient_type: roomId\\n\\n        recipient_id: \\\"{{ room_id }}\\\"\\n\\n        message_type: text\\n\\n        personal_token: \\\"{{ token }}\\\"\\n\\n        message: \\\"Cisco Spark Ansible Module - Room Message in Text\\\"\\n\\n    \\n\\n    - name: Cisco Spark - Text Message by an Individuals ID\\n\\n      cisco_spark:\\n\\n        recipient_type: toPersonId\\n\\n        recipient_id: \\\"{{ person_id}}\\\"\\n\\n        message_type: text\\n\\n        personal_token: \\\"{{ token }}\\\"\\n\\n        message: \\\"Cisco Spark Ansible Module - Text Message to Individual by ID\\\"\\n\\n    \\n\\n    - name: Cisco Spark - Text Message by an Individuals E-Mail Address\\n\\n      cisco_spark:\\n\\n        recipient_type: toPersonEmail\\n\\n        recipient_id: \\\"{{ person_email }}\\\"\\n\\n        message_type: text\\n\\n        personal_token: \\\"{{ token }}\\\"\\n\\n        message: \\\"Cisco Spark Ansible Module - Text Message to Individual by E-Mail\\\"\\n\\n```\", \n    \"title\": \"Add a new module for Cisco Spark notifications\"\n  }, \n  \"19349\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\r\\nFeature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nconsul_kv.py\\r\\n##### ANSIBLE VERSION\\r\\ndevel\\r\\n\\r\\n##### SUMMARY\\r\\nPreviously you could only specify a different host/port for consul was as an environment variable. This now allows you to specify it as a kwarg.\\r\\n\\r\\nExample\\r\\n```yml\\r\\n    - name: Debug \\r\\n      debug:\\r\\n        msg: \\\"{{ lookup('consul_kv', 'bootcamp/alpha', host='52.15.208.236', port='8500') }}\\\"\\r\\n```\", \n    \"component_name\": \"consul_kv.py\", \n    \"component_raw\": \"consul_kv.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19349\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/lookup\", \n      \"feature\", \n      \"in progress\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Previously you could only specify a different host/port for consul was as an\", \n    \"title\": \"Updated consul_kv lookup plugin so that it can take in host and port as a kwarg\"\n  }, \n  \"19352\": {\n    \"ansible_version\": \"2.0 and higher\", \n    \"body\": \"ISSUE TYPE\\r\\n\\r\\n    Bug Report\\r\\n\\r\\nCOMPONENT NAME\\r\\n\\r\\ntemplate\\r\\nANSIBLE VERSION\\r\\n\\r\\n2.0 and higher\\r\\nCONFIGURATION\\r\\n\\r\\n[ssh_connection]\\r\\ncontrol_path = %(directory)s/%%C\\r\\nOS / ENVIRONMENT\\r\\n\\r\\nMac OS X 10.11.6\\r\\nCentos 6.x, 7.x\\r\\nSUMMARY\\r\\n\\r\\nIn the input .j2 file, we substitute a variable with an environment variable that has a line/string that contains a grok expression containing \\\"(?m)\\\\n\\\" . The output generated by the template module in versions 2.0 and later, treats the \\\\n as actual line break. Where as versions up to 1.9.6 retains the literal \\\"(?m)\\\\n\\\" without replacing the \\\\n with an actual line break. We see the line break after we upgraded the Ansible version to 2.x.\\r\\n\\r\\nAny way we can work around this issue? Thank you for your help.\\r\\nSTEPS TO REPRODUCE\\r\\n\\r\\nOur execution flow is probably not the nicest - we want to reengineer it soon. Basic steps:\\r\\n\\r\\n    Run a shell script with ansible-playbook command that pass in an env variable with (?m)\\\\n literal.\\r\\n    Playbook calls a main yaml file and assigns shell environment var to a included task yaml file.\\r\\n    The task yaml file invokes the template module.\\r\\n\\r\\nIn the snippet below I stripped out other lines/vars for clarity.\\r\\n\\r\\nmain shell\\r\\n\\r\\nset GROK_PATTERN_GENERAL_ERROR_PG=\\\"%{TIMESTAMP_ISO8601} ERROR \\\\[%{USER:handlerName}\\\\] %{USER:className}%{GREEDYDATA:errorline1}((?m)\\\\n%{USER:logerror}%{GREEDYDATA})\\\"\\r\\n\\r\\nansible-playbook -i ../common/host.inventory \\\\\\r\\n                -${VERBOSE} \\\\\\r\\n                t.yml \\\\\\r\\n                ${CHECK_ONLY} \\\\\\r\\n                --extra-vars \\\"hosts='${HOST}'\\r\\n                              xlogstash_grok_general_error='${GROK_PATTERN_GENERAL_ERROR_PG}'\\r\\n                             \\\"\\r\\n\\r\\nt.yml\\r\\n\\r\\n---\\r\\n- hosts: 127.0.0.1\\r\\n  connection: local\\r\\n\\r\\n  tasks:\\r\\n    - include_vars: ../common/defaults/main.yml\\r\\n    - name: generate logstash kafka logscan filter config file\\r\\n      include: tasks/t.yml\\r\\n      vars:\\r\\n          logstash_grok_general_error: \\\"{{xlogstash_grok_general_error}}\\\"\\r\\n\\r\\ntasks/t.yml\\r\\n\\r\\n---\\r\\n    - name: generate logstash kafka logscan filter config file\\r\\n      template: src=../common/templates/my.conf.j2\\r\\n                dest=\\\"./500-filter.conf\\\"\\r\\n\\r\\nmy.conf.j2\\r\\n\\r\\n        grok {\\r\\n                break_on_match => \\\"true\\\"\\r\\n                match => [\\r\\n                        \\\"message\\\", \\\"{{logstash_grok_general_error}}\\\"\\r\\n                ]\\r\\n        }\\r\\n\\r\\nNote the (?m)\\\\n are still on the same line.\\r\\nEXPECTED RESULTS\\r\\n\\r\\n        grok {\\r\\n                break_on_match => \\\"true\\\"\\r\\n                match => [\\r\\n                        \\\"message\\\", \\\"%{TIMESTAMP_ISO8601} ERROR \\\\[%{USER:handlerName}\\\\] %{USER:className}%{GREEDYDATA:errorline1}((?m)\\\\n%{USER:logerror}%{GREEDYDATA})\\\"\\r\\n                ]\\r\\n        }\\r\\n\\r\\nACTUAL RESULTS\\r\\n\\r\\nNote (?m)\\\\n now has the \\\\n as actual line break.\\r\\n\\r\\n        grok {\\r\\n                break_on_match => \\\"true\\\"\\r\\n                match => [\\r\\n                        \\\"message\\\", \\\"%{TIMESTAMP_ISO8601} ERROR \\\\[%{USER:handlerName}\\\\] %{USER:className}%{GREEDYDATA:errorline1}((?m)\\r\\n%{USER:logerror}%{GREEDYDATA})\\\"\\r\\n                ]\\r\\n        }\\r\\n\", \n    \"component_name\": \"template\", \n    \"component_raw\": \"template\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19352\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/template.py\", \n    \"summary\": \"In the input .j2 file, we substitute a variable with an environment variable that has a line/string that contains a grok expression containing \\\"(?m)\\\\n\\\" . The output generated by the template module in versions 2.0 and later, treats the \\\\n as actual line break. Where as versions up to 1.9.6 retains the literal \\\"(?m)\\\\n\\\" without replacing the \\\\n with an actual line break. We see the line break after we upgraded the Ansible version to 2.x.\\n\\n\\n\\nAny way we can work around this issue? Thank you for your help.\", \n    \"title\": \"Template update convert \\\\n to actual new line\"\n  }, \n  \"19359\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodule system/zfs\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nLinux CentOS7\\r\\n\\r\\n##### SUMMARY\\r\\nThere is no way to set a dynamic userquota because you can't interpolate key/parameter names, e.g. `userquota@{{account_uid}}=20G`.  In some way this is a more general limitation of ansible, but since it's fairly specific to zfs to want to do this, perhaps the zfs module should provide a solution.  For example:\\r\\n```\\r\\nzfs:\\r\\n  name: path\\r\\n  state: present\\r\\n  properties:\\r\\n    - name: userquota@{{account_uid}}\\r\\n      value: 20G\\r\\n    - name: ...\\r\\n```\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```\\r\\nzfs: name=path state=present userquota@{{account_uid}}=20G\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nShould set userquota@1234=20G (assuming account_uid=1234).\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nfatal: [home-0]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"cannot set property for 'hdd/home': 'userquota@{{account_uid}}' has an invalid user/group name\\\\n\\\"}\\r\\n```\", \n    \"component_name\": \"system/zfs\", \n    \"component_raw\": \"module system/zfs\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19359\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/storage/zfs/zfs.py\", \n    \"summary\": \"There is no way to set a dynamic userquota because you can't interpolate key/parameter names, e.g. `userquota@{{account_uid}}=20G`.  In some way this is a more general limitation of ansible, but since it's fairly specific to zfs to want to do this, perhaps the zfs module should provide a solution.  For example:\\n\\n```\\n\\nzfs:\\n\\n  name: path\\n\\n  state: present\\n\\n  properties:\\n\\n    - name: userquota@{{account_uid}}\\n\\n      value: 20G\\n\\n    - name: ...\\n\\n```\", \n    \"title\": \"zfs: can't interpolate property name to set userquota\"\n  }, \n  \"19360\": {\n    \"ansible_version\": \"ansible 2.0.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = /etc/ansible/modules\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task  -->\\n\\ncloud/vmware/vsphere_guest\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.0.2.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = /etc/ansible/modules\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\n<!---\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\ncommit message and your description; but you should still explain what\\nthe change does.\\n-->\\n\\nI had a use case where the MAC address needed to be set from an external inventory.  I'm currently using cobbler for guest provisioning.  The PXE boot process relies on the MAC address and therefore needed it to be set when the guest was created.  This code change also supports the state `reconfigured`.\\n\\nI found a bunch of PR's that requested this feature, but none of them landed from what I can tell.  This is a PR off the most recent implementation of vsphere_guest.\\n\\nReferences:\\n#3615\\n#3616 (referenced)\\n#358 (closed due to inactivity)\\n#1867 (was closed)\\n#1291 (was closed)\\n#2409\\n\", \n    \"component_name\": \"cloud/vmware/vsphere_guest\", \n    \"component_raw\": \"cloud/vmware/vsphere_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19360\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\", \n    \"summary\": \"I had a use case where the MAC address needed to be set from an external inventory.  I'm currently using cobbler for guest provisioning.  The PXE boot process relies on the MAC address and therefore needed it to be set when the guest was created.  This code change also supports the state `reconfigured`.\\n\\nI found a bunch of PR's that requested this feature, but none of them landed from what I can tell.  This is a PR off the most recent implementation of vsphere_guest.\\n\\nReferences:\\n#3615\\n#3616 (referenced)\\n#358 (closed due to inactivity)\\n#1867 (was closed)\\n#1291 (was closed)\\n#2409\", \n    \"title\": \"Add support for changing MAC address\"\n  }, \n  \"19371\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /Users/manjit/Desktop/deployement/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndocker_service\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /Users/manjit/Desktop/deployement/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nMac OS 10.12.1 \\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nAlso a similar issue was reported here - https://github.com/ansible/ansible-modules-core/issues/5513\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n---\\r\\n\\r\\n- name: Spin up docker container(s) using docker-compose\\r\\n  docker_service:\\r\\n    project_name: \\\"registry\\\"\\r\\n    project_src: \\\"{{ host_file_paths.docker_root_directory }}\\\"\\r\\n    state: present\\r\\n    restarted: true\\r\\n  tags:\\r\\n    - docker-up\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nIt should start the containers, if I run docker-compose from manually it spins up the containers.\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nIt fails with error \\\"msg\\\": \\\"Error starting project - . \\r\\n```\\r\\nfatal: [172.31.80.139]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"api_version\\\": null,\\r\\n            \\\"build\\\": false,\\r\\n            \\\"cacert_path\\\": null,\\r\\n            \\\"cert_path\\\": null,\\r\\n            \\\"debug\\\": false,\\r\\n            \\\"definition\\\": null,\\r\\n            \\\"dependencies\\\": true,\\r\\n            \\\"docker_host\\\": null,\\r\\n            \\\"files\\\": null,\\r\\n            \\\"filter_logger\\\": false,\\r\\n            \\\"hostname_check\\\": false,\\r\\n            \\\"key_path\\\": null,\\r\\n            \\\"nocache\\\": false,\\r\\n            \\\"project_name\\\": \\\"registry\\\",\\r\\n            \\\"project_src\\\": \\\"/opt/docker\\\",\\r\\n            \\\"pull\\\": false,\\r\\n            \\\"recreate\\\": \\\"smart\\\",\\r\\n            \\\"remove_images\\\": null,\\r\\n            \\\"remove_orphans\\\": false,\\r\\n            \\\"remove_volumes\\\": false,\\r\\n            \\\"restarted\\\": true,\\r\\n            \\\"scale\\\": null,\\r\\n            \\\"services\\\": null,\\r\\n            \\\"ssl_version\\\": null,\\r\\n            \\\"state\\\": \\\"present\\\",\\r\\n            \\\"stopped\\\": false,\\r\\n            \\\"timeout\\\": 10,\\r\\n            \\\"tls\\\": null,\\r\\n            \\\"tls_hostname\\\": null,\\r\\n            \\\"tls_verify\\\": null\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"docker_service\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"Error starting project - \\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"docker_service\", \n    \"component_raw\": \"docker_service\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19371\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_service.py\", \n    \"summary\": \"Also a similar issue was reported here - https://github.com/ansible/ansible-modules-core/issues/5513\", \n    \"title\": \"ansible 2.2: docker_service 'Error starting project - ' \"\n  }, \n  \"19375\": {\n    \"ansible_version\": \"2.2.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nelasticache_parameter_group module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.2.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThis is new module to create parameter group for elasticache in AWS\\r\\n\\r\\n\", \n    \"component_name\": \"elasticache_parameter_group\", \n    \"component_raw\": \"elasticache_parameter_group module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19375\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/elasticache_parameter_group.py\", \n    \"summary\": \"This is new module to create parameter group for elasticache in AWS\", \n    \"title\": \"Add new module for elasticache parameter group.\"\n  }, \n  \"19376\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nPlaybook\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nRunning from `Ubuntu 16.04.1 LTS x86_64`\\r\\nManaging `Debian jessie 64-bit`\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nI have a playbook that I'm testing on vagrant machine. Remote user defined in playbook is `auser`. But locally I'm overriding `ansible_user='vagrant'` using `--extra-vars`. This works fine except in `with_items`.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\nSample of the error follows\\r\\n\\r\\nCommand:\\r\\n\\r\\n```\\r\\nANSIBLE_FORCE_COLOR=true \\\\\\r\\nANSIBLE_HOST_KEY_CHECKING=false \\\\\\r\\nansible-playbook provisioning/all.yml \\\\\\r\\n--inventory-file=./provisioning/inventory/inventory.py \\\\\\r\\n--extra-vars=\\\"ansible_user='vagrant'\\\" \\\\\\r\\n--tags=\\\"test\\\" \\\\\\r\\n--limit=\\\"local\\\" \\\\\\r\\n--timeout=300 \\\\\\r\\n-vv --forks=1\\r\\n```\\r\\n\\r\\nPlaybook:\\r\\n\\r\\n```yaml\\r\\n- name: my playbook\\r\\n  hosts: all\\r\\n  become: yes\\r\\n  remote_user: \\\"auser\\\"\\r\\n  roles:\\r\\n    - that-role\\r\\n```\\r\\n\\r\\nTasks in role like this:\\r\\n\\r\\n```yaml\\r\\n- debug: msg=\\\"{{ item }}\\\"\\r\\n  with_items:\\r\\n    - \\\"{{ ansible_user }}\\\"\\r\\n\\r\\n- debug: msg=\\\"{{ ansible_user }}\\\"\\r\\n```\\r\\n\\r\\nThis results like this:\\r\\n\\r\\n```\\r\\nTASK [that-role : debug] **********************************************************\\r\\ntask path: /path/to/provisioning/roles/that-role/tasks/main.yml:40\\r\\nok: [machine1] => (item=auser) => {\\r\\n    \\\"item\\\": \\\"auser\\\", \\r\\n    \\\"msg\\\": \\\"auser\\\"\\r\\n}\\r\\n\\r\\nTASK [that-role : debug] **********************************************************\\r\\ntask path: /path/to/provisioning/roles/that-role/tasks/main.yml:46\\r\\nok: [machine1] => {\\r\\n    \\\"msg\\\": \\\"vagrant\\\"\\r\\n}\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe second result is the expected from both tasks!\\r\\n\\r\\n```\\r\\nTASK [that-role : debug] **********************************************************\\r\\ntask path: /path/to/provisioning/roles/that-role/tasks/main.yml:46\\r\\nok: [machine1] => {\\r\\n    \\\"msg\\\": \\\"vagrant\\\"\\r\\n}\\r\\n```\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nTASK [that-role : debug] **********************************************************\\r\\ntask path: /path/to/provisioning/roles/that-role/tasks/main.yml:40\\r\\nok: [machine1] => (item=auser) => {\\r\\n    \\\"item\\\": \\\"auser\\\", \\r\\n    \\\"msg\\\": \\\"auser\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"playbook\", \n    \"component_raw\": \"Playbook\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19376\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I have a playbook that I'm testing on vagrant machine. Remote user defined in playbook is `auser`. But locally I'm overriding `ansible_user='vagrant'` using `--extra-vars`. This works fine except in `with_items`.\", \n    \"title\": \"ansible_user isn't overridden using --extra-vars when used in with_items\"\n  }, \n  \"19377\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\ndatadog_monitor module\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nDatadog monitors support name template variable. Previous version of module did not allow to add template variable in monitor name. After this fix datadog templates variable will be correctly set in monitor name. This commit change square bracket '[[' and ']]' to '{{' and '}}', previously this was done only in the message input. \\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n\\r\\n\\r\\n\", \n    \"component_name\": \"datadog_monitor\", \n    \"component_raw\": \"datadog_monitor module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19377\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/monitoring/datadog_monitor.py\", \n    \"summary\": \"Datadog monitors support name template variable. Previous version of module did not allow to add template variable in monitor name. After this fix datadog templates variable will be correctly set in monitor name. This commit change square bracket '[[' and ']]' to '{{' and '}}', previously this was done only in the message input.\", \n    \"title\": \"Datadog monitor: add monitor name template variables support\"\n  }, \n  \"19378\": {\n    \"ansible_version\": \"N/A\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nFile module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nN/A\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nIt is sometimes desirable to execute File module actions only if a file or directory does not exist. This would save an extra task that _stat_'s the file, registers the result and the necessity for checking a condition.\\r\\n\\r\\nFor `state=absent`, the proposed semantic would not be literally true, but can be easily understood based on the behaviour of _creates_ in other modules.\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nEnsuring only that a file exists without unnecessary changes could be written as simply as:\\r\\n```\\r\\n- name: Ensure that /foo/bar exists\\r\\n  file: path=\\\"/foo/bar\\\" state=touch creates=\\\"/foo/bar\\\"\\r\\n```\", \n    \"component_name\": \"file\", \n    \"component_raw\": \"File module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19378\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/file.py\", \n    \"summary\": \"It is sometimes desirable to execute File module actions only if a file or directory does not exist. This would save an extra task that _stat_'s the file, registers the result and the necessity for checking a condition.\\n\\n\\n\\nFor `state=absent`, the proposed semantic would not be literally true, but can be easily understood based on the behaviour of _creates_ in other modules.\", \n    \"title\": \"file module should have a 'creates' parameter\"\n  }, \n  \"19381\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvsphere_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nansible 2.3.0\\r\\n\\r\\n##### SUMMARY\\r\\nFixes issue #4743 and #4249\\r\\n\\r\\n### Issue #4743 \\r\\nDuring VM reconfiguration, if additional disk is added, the newly provisioned disk is created as hard-coded thick lazy zeroed disk.\\r\\n    - Read the vm[disk]['type'] & create the new disk accordingly.\\r\\n\\r\\n### Issue #4249\\r\\nDuring VM reconfiguration, if additional disk is added, ansible returns error \\\"Error in vm_disk definition. Too many disks defined in comparison to the VM's disk profile.\\\" But, the VM is reconfigured & disk is added silently in the background.\\r\\n    - For performance reason, pysphere maintains a cached copy of the vm object. \\r\\n    - vsphere_guest module was acting up on a older copy of vm object pulled at the beginning & thus the failure.\\r\\n   - Flushing vm properties cache after update_disks did the trick & dev_list had newly created disks. \\r\\n \\r\\n\", \n    \"component_name\": \"vsphere_guest\", \n    \"component_raw\": \"vsphere_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19381\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\", \n    \"summary\": \"Fixes issue #4743 and #4249\\n\\n\\n\\n### Issue #4743 \\n\\nDuring VM re\", \n    \"title\": \"vsphere_guest - Fixes issue #4743 and #4249\"\n  }, \n  \"19382\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel a28d898c29) last updated 2016/12/13 113633 (GMT +100)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nios_config\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel a28d898c29) last updated 2016/12/13 11:36:33 (GMT +100)\\r\\n```\\r\\n\\r\\n\\r\\n##### SUMMARY\\r\\n`ios_config` is returning `.updates` which it didn't used to in `stable-2.2` in this case\\r\\n\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\ncd ansible/test/integration\\r\\nANSIBLE_ROLES_PATH=targets  ansible-playbook -vvv -i inventory.network ios.yaml\\r\\n\\r\\n\\r\\n```yaml\\r\\n---\\r\\n- debug: msg=\\\"START cli/src_basic.yaml\\\"\\r\\n\\r\\n- name: setup\\r\\n  ios_config:\\r\\n    commands:\\r\\n      - no description\\r\\n      - no shutdown\\r\\n    parents:\\r\\n      - interface Loopback999\\r\\n    match: none\\r\\n    provider: \\\"{{ cli }}\\\"\\r\\n\\r\\n- name: configure device with config\\r\\n  ios_config:\\r\\n    src: basic/config.j2\\r\\n    provider: \\\"{{ cli }}\\\"\\r\\n  register: result\\r\\n\\r\\n- assert:\\r\\n    that:\\r\\n      - \\\"result.changed == true\\\"\\r\\n# https://github.com/ansible/ansible-modules-core/issues/4807\\r\\n      - \\\"result.updates is not defined\\\"\\r\\n\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nTASK [ios_config : configure device with config] *************************************************************************************************************************************************************************************************\\r\\ntask path: /home/johnb/git/ansible-inc/ansible/test/integration/targets/ios_config/tests/cli/src_basic.yaml:14\\r\\nUsing module file /home/johnb/git/ansible-inc/ansible/lib/ansible/modules/network/ios/ios_config.py\\r\\n<ios01> ESTABLISH LOCAL CONNECTION FOR USER: johnb\\r\\n<ios01> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo ~/.ansible/tmp/ansible-tmp-1481804170.6-178541422532697 `\\\" && echo ansible-tmp-1481804170.6-178541422532697=\\\"` echo ~/.ansible/tmp/ansible-tmp-1481804170.6-178541422532697 `\\\" ) && sleep 0'\\r\\n<ios01> PUT /tmp/tmpCUYPJX TO /home/johnb/.ansible/tmp/ansible-tmp-1481804170.6-178541422532697/ios_config.py\\r\\n<ios01> EXEC /bin/sh -c 'chmod u+x /home/johnb/.ansible/tmp/ansible-tmp-1481804170.6-178541422532697/ /home/johnb/.ansible/tmp/ansible-tmp-1481804170.6-178541422532697/ios_config.py && sleep 0'\\r\\n<ios01> EXEC /bin/sh -c 'python /home/johnb/.ansible/tmp/ansible-tmp-1481804170.6-178541422532697/ios_config.py; rm -rf \\\"/home/johnb/.ansible/tmp/ansible-tmp-1481804170.6-178541422532697/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nchanged: [ios01] => {\\r\\n    \\\"banners\\\": {}, \\r\\n    \\\"changed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"after\\\": null, \\r\\n            \\\"auth_pass\\\": null, \\r\\n            \\\"authorize\\\": false, \\r\\n            \\\"backup\\\": false, \\r\\n            \\\"before\\\": null, \\r\\n            \\\"config\\\": null, \\r\\n            \\\"defaults\\\": false, \\r\\n            \\\"force\\\": false, \\r\\n            \\\"host\\\": \\\"ios01\\\", \\r\\n            \\\"lines\\\": null, \\r\\n            \\\"match\\\": \\\"line\\\", \\r\\n            \\\"multiline_delimiter\\\": \\\"@\\\", \\r\\n            \\\"parents\\\": null, \\r\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n            \\\"port\\\": null, \\r\\n            \\\"provider\\\": {\\r\\n                \\\"host\\\": \\\"ios01\\\", \\r\\n                \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n                \\\"transport\\\": \\\"cli\\\", \\r\\n                \\\"username\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\"\\r\\n            }, \\r\\n            \\\"replace\\\": \\\"line\\\", \\r\\n            \\\"save\\\": false, \\r\\n            \\\"src\\\": \\\"interface Loopback999\\\\n description this is a test\\\\n shutdown\\\\n\\\\n\\\", \\r\\n            \\\"ssh_keyfile\\\": null, \\r\\n            \\\"timeout\\\": 10, \\r\\n            \\\"transport\\\": \\\"cli\\\", \\r\\n            \\\"use_ssl\\\": true, \\r\\n            \\\"username\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n            \\\"validate_certs\\\": true\\r\\n        }\\r\\n    }, \\r\\n    \\\"updates\\\": [\\r\\n        \\\"interface Loopback999\\\", \\r\\n        \\\"description this is a test\\\", \\r\\n        \\\"shutdown\\\"\\r\\n    ], \\r\\n    \\\"warnings\\\": []\\r\\n}\\r\\n\\r\\nTASK [ios_config : assert] ***********************************************************************************************************************************************************************************************************************\\r\\ntask path: /home/johnb/git/ansible-inc/ansible/test/integration/targets/ios_config/tests/cli/src_basic.yaml:20\\r\\nfatal: [ios01]: FAILED! => {\\r\\n    \\\"assertion\\\": \\\"result.updates is not defined\\\", \\r\\n    \\\"changed\\\": false, \\r\\n    \\\"evaluated_to\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"that\\\": [\\r\\n                \\\"result.changed == true\\\", \\r\\n                \\\"result.updates is not defined\\\"\\r\\n            ]\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"assert\\\"\\r\\n    }\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"ios_config\", \n    \"component_raw\": \"ios_config\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19382\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/ios/ios_config.py\", \n    \"summary\": \"`ios_config` is returning `.updates` which it didn't used to in `stable-2.2` in this case\", \n    \"title\": \"[regression over 2.2] ios_config now returning .updates\"\n  }, \n  \"19386\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nDynamic inventory driver / vultr\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nInitial release of dynamic inventory driver for VPS cloud service [vultr.com](http://vultr.com)\\r\\n\\r\\n\", \n    \"component_name\": \"dynamic inventory driver / vultr\", \n    \"component_raw\": \"Dynamic inventory driver / vultr\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19386\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Initial release of dynamic inventory driver for VPS cloud service [vultr.com](http://vultr.com)\", \n    \"title\": \"Add vultr inventory script\"\n  }, \n  \"19387\": {\n    \"ansible_version\": \"ansible 2.3.0\\ndocker-py 1.10.6\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\ndocker_login\\r\\n\\r\\n```\\r\\nlib/ansible/modules/docker/docker_login.py\\r\\n```\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0\\r\\ndocker-py 1.10.6\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\nFrom: Fedora 22\\r\\nManaging: Fedora 22\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\nWhen using docker_login to login to a docker registry it errors out with a NameError from Python\\r\\n\\r\\n```\\r\\nfatal: [default]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"Shared connection to localhost closed.\\\\r\\\\n\\\", \\\"module_stdout\\\": \\\"Traceback (most recent call last):\\\\r\\\\n  File \\\\\\\"/tmp/ansible_5fMi38/ansible_module_docker_login.py\\\\\\\", line 333, in <module>\\\\r\\\\n    main()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_5fMi38/ansible_module_docker_login.py\\\\\\\", line 321, in main\\\\r\\\\n    if module.params['state'] == 'present' and module.params['registry_url'] == DEFAULT_DOCKER_REGISTRY and not module.params['email']:\\\\r\\\\nNameError: global name 'module' is not defined\\\\r\\\\n\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\"}\\r\\n```\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n```\\r\\ngit clone https://github.com/ansible/ansible.git\\r\\ngit checkout devel\\r\\npython setup.py install\\r\\n```\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n\\r\\nThis is the most basic repro case I could get to. Note: you do need some registry with valid credentials or that will error out first.\\r\\n\\r\\n```yaml\\r\\n- hosts:  127.0.0.1\\r\\n  tasks:\\r\\n  - name: Login to docker registry\\r\\n    docker_login:\\r\\n      registry: \\\"private.registry.here.com\\\"\\r\\n      username: testuser3\\r\\n      password: testuser3\\r\\n      email: fake_email@fake_emails.com\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nI expected docker login to succeed on the managed host. Literally this message\\r\\n\\r\\n```\\r\\nTASK [repro: Login to the docker registry] **************************************************************************\\r\\nchanged: [default] => {\\\"changed\\\": true, \\\"login_result\\\": {\\\"Status\\\": \\\"Login Succeeded\\\"}}\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\nA NameError occurred in the docker_login.py module. Even more verbosity is possible upon request, however I need to clean it of any sensitive data before releasing it.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nfatal: [default]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"docker_login\\\"\\r\\n    }, \\r\\n    \\\"module_stderr\\\": \\\"Shared connection to localhost closed.\\\\r\\\\n\\\", \\r\\n    \\\"module_stdout\\\": \\\"Traceback (most recent call last):\\\\r\\\\n  File \\\\\\\"/tmp/ansible_xWSfPy/ansible_module_docker_login.py\\\\\\\", line 333, in <module>\\\\r\\\\n    main()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_xWSfPy/ansible_module_docker_login.py\\\\\\\", line 321, in main\\\\r\\\\n    if module.params['state'] == 'present' and module.params['registry_url'] == DEFAULT_DOCKER_REGISTRY and not module.params['email']:\\\\r\\\\nNameError: global name 'module' is not defined\\\\r\\\\n\\\", \\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n```\\r\\n\\r\\nI have a patch ready and will submit a PR for this.\", \n    \"component_name\": \"docker_login\", \n    \"component_raw\": \"docker_login\\n```\\nlib/ansible/modules/docker/docker_login.py\\n```\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19387\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_login.py\", \n    \"summary\": \"When using docker_login to login to a docker registry it errors out with a NameError from Python\\n\\n\\n\\n```\\n\\nfatal: [default]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"Shared connection to localhost closed.\\\\r\\\\n\\\", \\\"module_stdout\\\": \\\"Traceback (most recent call last):\\\\r\\\\n  File \\\\\\\"/tmp/ansible_5fMi38/ansible_module_docker_login.py\\\\\\\", line 333, in <module>\\\\r\\\\n    main()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_5fMi38/ansible_module_docker_login.py\\\\\\\", line 321, in main\\\\r\\\\n    if module.params['state'] == 'present' and module.params['registry_url'] == DEFAULT_DOCKER_REGISTRY and not module.params['email']:\\\\r\\\\nNameError: global name 'module' is not defined\\\\r\\\\n\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\"}\\n\\n```\", \n    \"title\": \"docker_login fails with NameError in lib/ansible/modules/cloud/docker/docker_login.py\"\n  }, \n  \"19388\": {\n    \"ansible_version\": \"2.3.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nsysctl\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nFrom: OS X 10.12.1\\r\\nManaging: Ubuntu 16.04.1\\r\\n\\r\\n##### SUMMARY\\r\\nError in module sysctl\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- sysctl:\\r\\n    name: net.ipv4.tcp_window_scaling\\r\\n    value: 1\\r\\n    state: present\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nNo errors, set values to /etc/sysctl.conf\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [system : sysctl] **************************************************************************************************************************************************************\\r\\nfatal: [myhost.com]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"Shared connection to myhost.com closed.\\\\r\\\\n\\\", \\\"module_stdout\\\": \\\"Traceback (most recent call last):\\\\r\\\\n  File \\\\\\\"/tmp/ansible_cwpt1g/ansible_module_sysctl.py\\\\\\\", line 387, in <module>\\\\r\\\\n    main()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_cwpt1g/ansible_module_sysctl.py\\\\\\\", line 381, in main\\\\r\\\\n    result = SysctlModule(module)\\\\r\\\\n  File \\\\\\\"/tmp/ansible_cwpt1g/ansible_module_sysctl.py\\\\\\\", line 141, in __init__\\\\r\\\\n    self.process()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_cwpt1g/ansible_module_sysctl.py\\\\\\\", line 153, in process\\\\r\\\\n    self.args['value'] = self._parse_value(self.args['value'])\\\\r\\\\n  File \\\\\\\"/tmp/ansible_cwpt1g/ansible_module_sysctl.py\\\\\\\", line 219, in _parse_value\\\\r\\\\n    if value.lower() in BOOLEANS_TRUE:\\\\r\\\\nNameError: global name 'BOOLEANS_TRUE' is not defined\\\\r\\\\n\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"sysctl\", \n    \"component_raw\": \"sysctl\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19388\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"in progress\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/sysctl.py\", \n    \"summary\": \"Error in module sysctl\", \n    \"title\": \"Sysctl Module Error\"\n  }, \n  \"19389\": {\n    \"ansible_version\": \"ansible 2.3.0\\ndocker-py 1.10.6\", \n    \"body\": \"Fixes: #19387 \\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\n\\r\\ndocker_login\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0\\r\\ndocker-py 1.10.6\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nFixing what appears to be a typo in the docker_login.py module. Someone was attempting to reference the variable name 'module', which doesn't exist in that scope. Instead it appears that 'client.module' is  the correct reference to use which is what I amended line 318 to use. \\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\nfatal: [default]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"docker_login\\\"\\r\\n    }, \\r\\n    \\\"module_stderr\\\": \\\"Shared connection to localhost closed.\\\\r\\\\n\\\", \\r\\n    \\\"module_stdout\\\": \\\"Traceback (most recent call last):\\\\r\\\\n  File \\\\\\\"/tmp/ansible__EyB0w/ansible_module_docker_login.py\\\\\\\", line 333, in <module>\\\\r\\\\n    main()\\\\r\\\\n  File \\\\\\\"/tmp/ansible__EyB0w/ansible_module_docker_login.py\\\\\\\", line 321, in main\\\\r\\\\n    if module.params['state'] == 'present' and module.params['registry_url'] == DEFAULT_DOCKER_REGISTRY and not module.params['email']:\\\\r\\\\nNameError: global name 'module' is not defined\\\\r\\\\n\\\", \\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n\\r\\ntmp-1481822645.7-32880948701345/ > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\nok: [default] => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"api_version\\\": null, \\r\\n            \\\"cacert_path\\\": null, \\r\\n            \\\"cert_path\\\": null, \\r\\n            \\\"config_path\\\": \\\"~/.docker/config.json\\\", \\r\\n            \\\"debug\\\": false, \\r\\n            \\\"docker_host\\\": null, \\r\\n            \\\"email\\\": \\\"<sensitive info removed>\\\", \\r\\n            \\\"filter_logger\\\": false, \\r\\n            \\\"key_path\\\": null, \\r\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n            \\\"reauthorize\\\": false, \\r\\n            \\\"registry\\\": \\\"<sensitive info removed>\\\", \\r\\n            \\\"registry_url\\\": \\\"<sensitive info removed>\\\", \\r\\n            \\\"ssl_version\\\": null, \\r\\n            \\\"state\\\": \\\"present\\\", \\r\\n            \\\"timeout\\\": null, \\r\\n            \\\"tls\\\": null, \\r\\n            \\\"tls_hostname\\\": null, \\r\\n            \\\"tls_verify\\\": null, \\r\\n            \\\"username\\\": \\\"<sensitive info removed>\\\"\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"docker_login\\\"\\r\\n    }, \\r\\n    \\\"login_result\\\": {\\r\\n        \\\"email\\\": \\\"<sensitive info removed>\\\", \\r\\n        \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n        \\\"serveraddress\\\": \\\"<sensitive info removed>\\\", \\r\\n        \\\"username\\\": \\\"<sensitive info removed>\\\"\\r\\n    }\\r\\n}\\r\\n\\r\\n```\", \n    \"component_name\": \"docker_login\", \n    \"component_raw\": \"docker_login\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19389\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_login.py\", \n    \"summary\": \"Fixing what appears to be a typo in the docker_login.py module. Someone was attempting to reference the variable name 'module', which doesn't exist in that scope. Instead it appears that 'client.module' is  the correct reference to use which is what I amended line 318 to use. \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\nfatal: [default]: FAILED! => {\\n\\n    \\\"changed\\\": false, \\n\\n    \\\"failed\\\": true, \\n\\n    \\\"invocation\\\": {\\n\\n        \\\"module_name\\\": \\\"docker_login\\\"\\n\\n    }, \\n\\n    \\\"module_stderr\\\": \\\"Shared connection to localhost closed.\\\\r\\\\n\\\", \\n\\n    \\\"module_stdout\\\": \\\"Traceback (most recent call last):\\\\r\\\\n  File \\\\\\\"/tmp/ansible__EyB0w/ansible_module_docker_login.py\\\\\\\", line 333, in <module>\\\\r\\\\n    main()\\\\r\\\\n  File \\\\\\\"/tmp/ansible__EyB0w/ansible_module_docker_login.py\\\\\\\", line 321, in main\\\\r\\\\n    if module.params['state'] == 'present' and module.params['registry_url'] == DEFAULT_DOCKER_REGISTRY and not module.params['email']:\\\\r\\\\nNameError: global name 'module' is not defined\\\\r\\\\n\\\", \\n\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\n\\n}\\n\\n\\n\\ntmp-1481822645.7-32880948701345/ > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\n\\nok: [default] => {\\n\\n    \\\"changed\\\": false, \\n\\n    \\\"invocation\\\": {\\n\\n        \\\"module_args\\\": {\\n\\n            \\\"api_version\\\": null, \\n\\n            \\\"cacert_path\\\": null, \\n\\n            \\\"cert_path\\\": null, \\n\\n            \\\"config_path\\\": \\\"~/.docker/config.json\\\", \\n\\n            \\\"debug\\\": false, \\n\\n            \\\"docker_host\\\": null, \\n\\n            \\\"email\\\": \\\"<sensitive info removed>\\\", \\n\\n            \\\"filter_logger\\\": false, \\n\\n            \\\"key_path\\\": null, \\n\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\n\\n            \\\"reauthorize\\\": false, \\n\\n            \\\"registry\\\": \\\"<sensitive info removed>\\\", \\n\\n            \\\"registry_url\\\": \\\"<sensitive info removed>\\\", \\n\\n            \\\"ssl_version\\\": null, \\n\\n            \\\"state\\\": \\\"present\\\", \\n\\n            \\\"timeout\\\": null, \\n\\n            \\\"tls\\\": null, \\n\\n            \\\"tls_hostname\\\": null, \\n\\n            \\\"tls_verify\\\": null, \\n\\n            \\\"username\\\": \\\"<sensitive info removed>\\\"\\n\\n        }, \\n\\n        \\\"module_name\\\": \\\"docker_login\\\"\\n\\n    }, \\n\\n    \\\"login_result\\\": {\\n\\n        \\\"email\\\": \\\"<sensitive info removed>\\\", \\n\\n        \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\n\\n        \\\"serveraddress\\\": \\\"<sensitive info removed>\\\", \\n\\n        \\\"username\\\": \\\"<sensitive info removed>\\\"\\n\\n    }\\n\\n}\\n\\n\\n\\n```\", \n    \"title\": \"Fixes #19387 : docker_login.py raises NameError\"\n  }, \n  \"19392\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/max/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncommand\\r\\nhttps://github.com/ansible/ansible-modules-core/blob/devel/commands/command.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/max/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nDebian 8\\r\\n\\r\\n##### SUMMARY\\r\\nCommand tries to split a command string into arguments.  Sometimes it fails.  When it does so it can be extremely frustrating, trying to figure out how to escape a command only for it to be parsed correctly.  If it can accept an array of arguments that would take the guesswork out, reduce pain, increase reliability and trust.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nOne option:\\r\\n```\\r\\n  command: [\\\"executable\\\", \\\"this\\\", \\\"is\\\", \\\"an\\\", \\\"array\\\", \\\"of\\\", \\\"arguments\\\", \\\"{{ lookup('file', 'stuff') | string }}\\\"]\\r\\n```\\r\\nIn the code for command this is a trivial change: Make `shlex.split(args)` conditional on args being a string.\\r\\n\\r\\nAnother option:\\r\\n```\\r\\n  command: \\\"executable\\\"\\r\\n  argv: [\\\"some\\\", \\\"stuff\\\", \\\"{{ lookup('file', 'stuff') | string }}\\\"]\\r\\n```\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nI would like command to execute without trying to split the array of arguments.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nN/A\", \n    \"component_name\": \"command\", \n    \"component_raw\": \"command\\nhttps://github.com/ansible/ansible-modules-core/blob/devel/commands/command.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19392\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/commands/command.py\", \n    \"summary\": \"Command tries to split a command string into arguments.  Sometimes it fails.  When it does so it can be extremely frustrating, trying to figure out how to escape a command only for it to be parsed correctly.  If it can accept an array of arguments that would take the guesswork out, reduce pain, increase reliability and trust.\", \n    \"title\": \"Command should be able to accept argv rather than trying to split arguments itself.\"\n  }, \n  \"19394\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvmware_add_nic\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible --version\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nA module that allows the user to add nics to virtual hosts to VMware\\r\\n\", \n    \"component_name\": \"vmware_add_nic\", \n    \"component_raw\": \"vmware_add_nic\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19394\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_add_nic.py\", \n    \"summary\": \"A module that allows the user to add nics to virtual hosts to VMware\", \n    \"title\": \"added vmware_add_nic module\"\n  }, \n  \"19411\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nipadm_addr\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nModule for managing IP address configuration on illumos/Solaris systems.\", \n    \"component_name\": \"ipadm_addr\", \n    \"component_raw\": \"ipadm_addr\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19411\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_revision\", \n      \"networking\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/illumos/ipadm_addr.py\", \n    \"summary\": \"Module for managing IP address\", \n    \"title\": \"Add ipadm_addr module\"\n  }, \n  \"19412\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndladm_vlan\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n\\r\\n##### SUMMARY\\r\\nModule to manage VLAN interfaces on illumos/Solaris systems.\\r\\n\", \n    \"component_name\": \"dladm_vlan\", \n    \"component_raw\": \"dladm_vlan\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19412\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_revision\", \n      \"networking\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/illumos/dladm_vlan.py\", \n    \"summary\": \"Module to manage VLAN interfaces on illumos/Solaris systems.\", \n    \"title\": \"Add dladm_vlan module\"\n  }, \n  \"19413\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - New Module Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndladm_linkprop\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nModule to manage network link interface properties on illumos/Solaris systems.\", \n    \"component_name\": \"dladm_linkprop\", \n    \"component_raw\": \"dladm_linkprop\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19413\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_revision\", \n      \"networking\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/illumos/dladm_linkprop.py\", \n    \"summary\": \"Module to manage network link interface properties on illumos/Solaris systems.\", \n    \"title\": \"Add dladm_linkprop module\"\n  }, \n  \"19414\": {\n    \"ansible_version\": \"latest\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - New Module Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndladm_iptun\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nlatest\\r\\n\\r\\n##### SUMMARY\\r\\nModule for managing IP tunnel interfaces on illumos/Solaris.\\r\\n\\r\\n\", \n    \"component_name\": \"dladm_iptun\", \n    \"component_raw\": \"dladm_iptun\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19414\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_revision\", \n      \"networking\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/illumos/dladm_iptun.py\", \n    \"summary\": \"Module for managing IP tunnel interfaces on illumos/Solaris.\", \n    \"title\": \"Add dladm_iptun module\"\n  }, \n  \"19415\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nipadm_addrprop\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nModule for managing IP address properties on illumos/Solaris systems.\\r\\n\", \n    \"component_name\": \"ipadm_addrprop\", \n    \"component_raw\": \"ipadm_addrprop\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19415\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_revision\", \n      \"networking\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/illumos/ipadm_addrprop.py\", \n    \"summary\": \"Module for managing IP address properties on illumos/Solaris systems.\", \n    \"title\": \"Add ipadm_addrprop module\"\n  }, \n  \"19417\": {\n    \"ansible_version\": \"v2.2+\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.2+\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nAfter carefully testing the current implementation and extending the capabailities I came to the conclusion that the current **vmware_guest** module implementation lacks proper forward compatibility wrt. customizations, but there are many other problems.\\r\\n\\r\\n- ~~The current customizations are in the same namespace as the module options, which will lead to problems. It would be wiser to replace the **customize**-switch and the myriad of customization options, with a single **customizations** dictionary with a mapping between the possible API customizations and the various options available. So that we can extend it without having to change the module options.~~ #19975\\r\\n- ~~The current customizations are also Linux oriented (LinuxPrep) whereas the code should allow both LinuxPrep as well as SysPrep, so a redesign is needed for this too.~~ #19866\\r\\n- ~~Besides that, a lot of options that reflect the VM conflict with options to the module (e.g. username/password, etc...) So using a single namespace is not very future-proof.~~ #19866\\r\\n- ~~Another problem is speed~~ #19830 and #19937\\r\\n- ~~Another is false matches. I think we can do with fewer guesses and expecting that the user provides correct information (through clear documentation).~~ #19823 \\r\\n- ~~The module also reports it supports check-mode, but that is incorrect according to my testing. Even in check-mode it will create a VM happily if it was not found.~~ #19228 \\r\\n- ~~The **wait_for_ip** functionality does not appear to work, and on we actually need a **wait_for_customizations** instead, because on Windows there's at least one more reboot after that.~~ #20011 \\r\\n- Snapshot operations should most likely go into a separate module specifically for doing snapshotting. **vmware_guest_snapshot**\\r\\n- Facts gathering should also go into a separate module, in line with other cloud infra modules **vmware_guest_facts**\\r\\n\\r\\nSo if anything we should refrain from releasing the current implementation before we get most of this figured out, as I fear we cannot refactor without breaking it for existing users if the current changes are being released. (v2.2 ships with a release without customizations afaict)\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19417\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"After carefully testing the current implementation and extending the capabailities I came to the conclusion that the current **vmware_guest** module implementation lacks proper forward compatibility wrt. customizations, but there are many other problems.\\n\\n\\n\\n- ~~The current customizations are in the same namespace as the module options, which will lead to problems. It would be wiser to replace the **customize**-switch and the myriad of customization options, with a single **customizations** dictionary with a mapping between the possible API customizations and the various options available. So that we can extend it without having to change the module options.~~ #19975\\n\\n- ~~The current customizations are also Linux oriented (LinuxPrep) whereas the code should allow both LinuxPrep as well as SysPrep, so a redesign is needed for this too.~~ #19866\\n\\n- ~~Besides that, a lot of options that reflect the VM conflict with options to the module (e.g. username/password, etc...) So using a single namespace is not very future-proof.~~ #19866\\n\\n- ~~Another problem is speed~~ #19830 and #19937\\n\\n- ~~Another is false matches. I think we can do with fewer guesses and expecting that the user provides correct information (through clear documentation).~~ #19823 \\n\\n- ~~The module also reports it supports check-mode, but that is incorrect according to my testing. Even in check-mode it will create a VM happily if it was not found.~~ #19228 \\n\\n- ~~The **wait_for_ip** functionality does not appear to work, and on we actually need a **wait_for_customizations** instead, because on Windows there's at least one more reboot after that.~~ #20011 \\n\\n- Snapshot operations should most likely go into a separate module specifically for doing snapshotting. **vmware_guest_snapshot**\\n\\n- Facts gathering should also go into a separate module, in line with other cloud infra modules **vmware_guest_facts**\\n\\n\\n\\nSo if anything we should refrain from releasing the current implementation before we get most of this figured out, as I fear we cannot refactor without breaking it for existing users if the current changes are being released. (v2.2 ships with a release without customizations afaict)\", \n    \"title\": \"vmware_guest: Various problems with the current design (blocks imminent release)\"\n  }, \n  \"19420\": {\n    \"ansible_version\": \"ansible 2.2.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nSSH Connection plugin\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n```\\r\\n[ssh_connection]\\r\\npipelining = True\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nDebian Jessie 8.6\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nResizing the terminal window interrupts the running task with \\\"Interrupted system call\\\".\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nRun a playbook with a task that takes at least a few seconds to complete, and resize the terminal window during execution.\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nNo change from resizing terminal window, playbook should complete.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/executor/task_executor.py\\\", line 98, in run\\r\\n    item_results = self._run_loop(items)\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/executor/task_executor.py\\\", line 281, in _run_loop\\r\\n    res = self._execute(variables=task_vars)\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/executor/task_executor.py\\\", line 502, in _execute\\r\\n    result = self._handler.run(task_vars=variables)\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/plugins/action/normal.py\\\", line 33, in run\\r\\n    results = merge_hash(results, self._execute_module(tmp=tmp, task_vars=task_vars))\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/plugins/action/__init__.py\\\", line 648, in _execute_module\\r\\n    res = self._low_level_execute_command(cmd, sudoable=sudoable, in_data=in_data)\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/plugins/action/__init__.py\\\", line 765, in _low_level_execute_command\\r\\n    rc, stdout, stderr = self._connection.exec_command(cmd, in_data=in_data, sudoable=sudoable)\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/plugins/connection/ssh.py\\\", line 674, in exec_command\\r\\n    return_tuple = self._exec_command(*args, **kwargs)\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/plugins/connection/ssh.py\\\", line 599, in _exec_command\\r\\n    (returncode, stdout, stderr) = self._run(cmd, in_data, sudoable=sudoable)\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/plugins/connection/ssh.py\\\", line 434, in _run\\r\\n    rfd, wfd, efd = select.select(rpipes, [], [], timeout)\\r\\nerror: (4, 'Interrupted system call')\\r\\n\\r\\nfatal: [gramsci.noc.lebib.org]: FAILED! => {\\r\\n    \\\"failed\\\": true, \\r\\n    \\\"msg\\\": \\\"Unexpected failure during module execution.\\\", \\r\\n    \\\"stdout\\\": \\\"\\\"\\r\\n}\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"ssh connection plugin\", \n    \"component_raw\": \"SSH Connection plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19420\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Resizing the terminal window interrupts the running task with \\\"Interrupted system call\\\".\", \n    \"title\": \"Resizing the terminal window interrupts tasks when using pipelining\"\n  }, \n  \"19421\": {\n    \"ansible_version\": \"2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncontrib/inventory/nsot\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nTo make this compatible with NSoT v1.x, removing ['data']['devices'].\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\", \n    \"component_name\": \"contrib/inventory/nsot\", \n    \"component_raw\": \"contrib/inventory/nsot\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19421\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"needs_revision\", \n      \"networking\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"To make this compatible with NSoT v1.x, removing ['data']['devices'].\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"contrib/inventory/nsot.py: Make it compatible with NSoT v1.x\"\n  }, \n  \"19422\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0.0\\nconfig file = /home/ansible/sentry/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n* service\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /home/ansible/sentry/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nEverything by default\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nubuntu 14.04\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nUntil version 2.1.1 I have been using the following way to reload the nginx service\\r\\n\\r\\n```\\r\\n- name: service\\r\\n  service: name=nginx state=reloaded \\r\\n```\\r\\n\\r\\nAnd it worked great.\\r\\n\\r\\nWith version 2.2.0 the same command outputs\\r\\n\\r\\n```\\r\\n{\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failed to get the service status 'nginx': org.freedesktop.DBus.Error.FileNotFound \\\\\\\"No such file or directory\\\\\\\"\\\"}\\r\\n```\\r\\n\\r\\nAnd if I change it to use old service method\\r\\n\\r\\n```\\r\\n- name: service\\r\\n  service: name=nginx state=reloaded use=service\\r\\n```\\r\\n\\r\\nit still fails with\\r\\n\\r\\n```\\r\\n{\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failed to issue method call: Unit nginx.service failed to load: No such file or directory. See system logs and 'systemctl status nginx.service' for details.\\\\n\\\"}\\r\\n```\\r\\n\\r\\nThe `nginx` service is run by the `init.d` and there is no corresponding `systemd` configuration.\", \n    \"component_name\": \"service\", \n    \"component_raw\": \"* service\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19422\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/service.py\", \n    \"summary\": \"Until version 2.1.1 I have been using the following way to reload the nginx service\\n\\n\\n\\n```\\n\\n- name: service\\n\\n  service: name=nginx state=reloaded \\n\\n```\\n\\n\\n\\nAnd it worked great.\\n\\n\\n\\nWith version 2.2.0 the same command outputs\\n\\n\\n\\n```\\n\\n{\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failed to get the service status 'nginx': org.freedesktop.DBus.Error.FileNotFound \\\\\\\"No such file or directory\\\\\\\"\\\"}\\n\\n```\\n\\n\\n\\nAnd if I change it to use old service method\\n\\n\\n\\n```\\n\\n- name: service\\n\\n  service: name=nginx state=reloaded use=service\\n\\n```\\n\\n\\n\\nit still fails with\\n\\n\\n\\n```\\n\\n{\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failed to issue method call: Unit nginx.service failed to load: No such file or directory. See system logs and 'systemctl status nginx.service' for details.\\\\n\\\"}\\n\\n```\\n\\n\\n\\nThe `nginx` service is run by the `init.d` and there is no corresponding `systemd` configuration.\", \n    \"title\": \"Services behaviour changed between v2.1.1 and 2.2.0\"\n  }, \n  \"19424\": {\n    \"ansible_version\": \"2.1.0.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nauthorized_key - Adds or removes an SSH authorized key\\n##### ANSIBLE VERSION\\n\\n```\\n2.1.0.0\\n```\\n##### SUMMARY\\n\\nThe patch adds the comment option to the authorized_key module.\\n\\nThe comment option can be used to overwrite the comment for an SSH key before writing it to disk. It is useful when fetching the keys from a source that does not carry a meaningful comment, such as Gitlab or Github.\\n\", \n    \"component_name\": \"authorized_key - adds or removes an ssh authorized key\", \n    \"component_raw\": \"authorized_key - Adds or removes an SSH authorized key\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19424\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"needs_revision\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/authorized_key.py\", \n    \"summary\": \"The patch adds the comment option to the authorized_key module.\\n\\nThe comment option can be used to overwrite the comment for an SSH key before writing it to disk. It is useful when fetching the keys from a source that does not carry a meaningful comment, such as Gitlab or Github.\", \n    \"title\": \"Add comment option to authorized_key\"\n  }, \n  \"19427\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel f1b5dde4cb) last updated 2016/12/16 052005 (GMT -400)\\nconfig file = /home/ecms/horizons_v2/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel f1b5dde4cb) last updated 2016/12/16 05:20:05 (GMT -400)\\r\\n  config file = /home/ecms/horizons_v2/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nWhen iterating over inventory to launch a set of role instances with `exact_count`, `instance_tags`, `count_tag` all set, and no matching instances running, Ansible is attempting to terminate a completely unrelated instance in another VPC and subnet (the instance running Ansible). I was lucky that I had termination protection enabled on that instance.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```yaml\\r\\n  - name: Launch instance\\r\\n    ec2:\\r\\n      aws_access_key: \\\"{{ aws.access_key }}\\\"\\r\\n      aws_secret_key: \\\"{{ aws.secret_key }}\\\"\\r\\n      instance_tags: {\\\"Name\\\":\\\"{{ inventory_hostname }}\\\"}\\r\\n      exact_count: 1\\r\\n      count_tag: Name\\r\\n      key_name: \\\"{{ instance.key_name }}\\\"\\r\\n      group: \\\"{{ instance.security_group }}\\\"\\r\\n      instance_type: \\\"{{ instance.type }}\\\"\\r\\n      image: \\\"{{ instance.image }}\\\"\\r\\n      wait: true\\r\\n      region: \\\"{{ aws.region }}\\\"\\r\\n      vpc_subnet_id: \\\"{{ instance.vpc_subnet_id }}\\\"\\r\\n      assign_public_ip: \\\"{{ instance.public_ip }}\\\"\\r\\n      instance_profile_name: \\\"{{ aws.iam_role }}\\\"\\r\\n      source_dest_check: \\\"{{ instance.source_dest_check }}\\\"\\r\\n      volumes: \\\"{{ instance.volumes }}\\\"\\r\\n    register: ec2\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nI expect Ansible to only work with the instances that are defined in my inventory, it SHOULD NOT be touching anything outside of that inventory.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nInstead, Ansible is spitting out a fatal error for each instance in my inventory, but referencing the ID of the unrelated instance in the other VPC/subnet, illustrated below with `i-aaaaaaaa`.\\r\\n\\r\\n```\\r\\nfatal: [host.domain.internal]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"assign_public_ip\\\": true,\\r\\n            \\\"aws_access_key\\\": \\\"*************************\\\",\\r\\n            \\\"aws_secret_key\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n            \\\"count\\\": 1,\\r\\n            \\\"count_tag\\\": \\\"Name\\\",\\r\\n            \\\"ebs_optimized\\\": false,\\r\\n            \\\"ec2_url\\\": null,\\r\\n            \\\"exact_count\\\": 1,\\r\\n            \\\"group\\\": [\\r\\n                \\\"loadbalancer\\\"\\r\\n            ],\\r\\n            \\\"group_id\\\": null,\\r\\n            \\\"id\\\": null,\\r\\n            \\\"image\\\": \\\"ami-b73b63a0\\\",\\r\\n            \\\"instance_ids\\\": null,\\r\\n            \\\"instance_initiated_shutdown_behavior\\\": null,\\r\\n            \\\"instance_profile_name\\\": \\\"server\\\",\\r\\n            \\\"instance_tags\\\": {\\r\\n                \\\"Name\\\": \\\"host.domain.internal\\\"\\r\\n            },\\r\\n            \\\"instance_type\\\": \\\"c3.large\\\",\\r\\n            \\\"kernel\\\": null,\\r\\n            \\\"key_name\\\": \\\"host\\\",\\r\\n            \\\"monitoring\\\": false,\\r\\n            \\\"network_interfaces\\\": null,\\r\\n            \\\"placement_group\\\": null,\\r\\n            \\\"private_ip\\\": null,\\r\\n            \\\"profile\\\": null,\\r\\n            \\\"ramdisk\\\": null,\\r\\n            \\\"region\\\": \\\"us-east-1\\\",\\r\\n            \\\"security_token\\\": null,\\r\\n            \\\"source_dest_check\\\": true,\\r\\n            \\\"spot_launch_group\\\": null,\\r\\n            \\\"spot_price\\\": null,\\r\\n            \\\"spot_type\\\": \\\"one-time\\\",\\r\\n            \\\"spot_wait_timeout\\\": \\\"600\\\",\\r\\n            \\\"state\\\": \\\"present\\\",\\r\\n            \\\"tenancy\\\": \\\"default\\\",\\r\\n            \\\"termination_protection\\\": null,\\r\\n            \\\"user_data\\\": null,\\r\\n            \\\"validate_certs\\\": true,\\r\\n            \\\"volumes\\\": [\\r\\n                {\\r\\n                    \\\"delete_on_termination\\\": true,\\r\\n                    \\\"device_name\\\": \\\"/dev/xvda\\\",\\r\\n                    \\\"volume_size\\\": 10,\\r\\n                    \\\"volume_type\\\": \\\"gp2\\\"\\r\\n                }\\r\\n            ],\\r\\n            \\\"vpc_subnet_id\\\": \\\"subnet-********\\\",\\r\\n            \\\"wait\\\": true,\\r\\n            \\\"wait_timeout\\\": \\\"300\\\",\\r\\n            \\\"zone\\\": null\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"ec2\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"Unable to terminate instance i-aaaaaaaa, error: EC2ResponseError: 400 Bad Request\\\\n<?xml version=\\\\\\\"1.0\\\\\\\" encoding=\\\\\\\"UTF-8\\\\\\\"?>\\\\n<Response><Errors><Error><Code>OperationNotPermitted</Code><Message>The instance 'i-aaaaaaaa' may not be terminated. Modify its 'disableApiTermination' instance attribute and try again.</Message></Error></Errors><RequestID>d3a71576-0376-4293-b5ec-9ce9d241fee1</RequestID></Response>\\\"\\r\\n```\\r\\n\", \n    \"component_name\": \"ec2\", \n    \"component_raw\": \"ec2\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19427\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2.py\", \n    \"summary\": \"When iterating over inventory to launch a set of role instances with `exact_count`, `instance_tags`, `count_tag` all set, and no matching instances running, Ansible is attempting to terminate a completely unrelated instance in another VPC and subnet (the instance running Ansible). I was lucky that I had termination protection enabled on that instance.\", \n    \"title\": \"Ansible attempting to terminate unrelated instance outside of inventory when using exact_count, instance_tags, and count_tag\"\n  }, \n  \"19428\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /Users/e.iskandarov/coinsph/infrastructure/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nkubernetes\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /Users/e.iskandarov/coinsph/infrastructure/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nRemoves hard code in `k8s_update_resource` routine.\\r\\n\\r\\nThis PR adds ability to specify desired behavior on Kubernetes resource update.\\r\\n\", \n    \"component_name\": \"kubernetes\", \n    \"component_raw\": \"kubernetes\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19428\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/clustering/kubernetes.py\", \n    \"summary\": \"Removes hard code in `k8s_update_resource` routine.\\n\\n\\n\\nThis PR adds ability to specify desired behavior on Kubernetes resource update.\", \n    \"title\": \"Kubernetes PATCH operation\"\n  }, \n  \"19430\": {\n    \"ansible_version\": \"ansible 2.3.0 (remove_host b2346c2525) last updated 2016/12/15 144356 (GMT +200)\\nconfig file = /home/jpic/.ansible.cfg\\nconfigured module search path = [/home/jpic/ansible/library /usr/share/ansible]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n##### COMPONENT NAME\\r\\ninstall\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (remove_host b2346c2525) last updated 2016/12/15 14:43:56 (GMT +200)\\r\\n  config file = /home/jpic/.ansible.cfg\\r\\n  configured module search path = ['/home/jpic/ansible/library', '/usr/share/ansible']\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThis commit prevents setuptools from blowing up when ansible is installed and paramiko is not. \", \n    \"component_name\": \"install\", \n    \"component_raw\": \"install\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19430\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This commit prevents setuptools from blowing up when ansible is installed and paramiko is not.\", \n    \"title\": \"Ansible doesn't require paramiko anymore\"\n  }, \n  \"19431\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible connection handling and loops\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nNo ansible.cfg nor ANSIBLE_* environment variables\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nSpotted on osx 10.12.1, debian wheezy, debian jessie\\r\\n\\r\\n##### SUMMARY\\r\\n\\\"ansible_connection\\\" variable is read as \\\"smart\\\" in a loop when defined as \\\"local\\\" in inventory.\\r\\nFun fact: properly defined as \\\"local\\\" if set in the playbook itself.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\ninventory file\\r\\n```\\r\\ntest ansible_connection=local\\r\\n```\\r\\n\\r\\ntest_1.yml file\\r\\n```yaml\\r\\n---\\r\\n\\r\\n- hosts: test\\r\\n  vars:\\r\\n    test:\\r\\n      - \\\"{{ ansible_connection }}\\\"\\r\\n  tasks:\\r\\n    - debug:\\r\\n        var: test\\r\\n    - debug:\\r\\n        var: item\\r\\n      with_items: \\\"{{ test }}\\\"\\r\\n\\r\\n```\\r\\n\\r\\ntest_2.yml file (same, with connection set to local)\\r\\n```yaml\\r\\n---\\r\\n\\r\\n- hosts: test\\r\\n  connection: local\\r\\n  vars:\\r\\n    test:\\r\\n      - \\\"{{ ansible_connection }}\\\"\\r\\n  tasks:\\r\\n    - debug:\\r\\n        var: test\\r\\n    - debug:\\r\\n        var: item\\r\\n      with_items: \\\"{{ test }}\\\"\\r\\n\\r\\n```\\r\\n\\r\\n`$ ansible-playbook -i inventory test_1.yml`\\r\\n`$ ansible-playbook -i inventory test_2.yml`\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nFor both playbook test files:\\r\\n\\r\\n```\\r\\nPLAY [test] ********************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [test]\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [test] => {\\r\\n    \\\"test\\\": [\\r\\n        \\\"local\\\"\\r\\n    ]\\r\\n}\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [test] => (item=local) => {\\r\\n    \\\"item\\\": \\\"local\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\ntest                       : ok=3    changed=0    unreachable=0    failed=0\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\ntest_1.yml (\\\"local\\\" became \\\"smart\\\")\\r\\n```\\r\\nPLAY [test] ********************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [test]\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [test] => {\\r\\n    \\\"test\\\": [\\r\\n        \\\"local\\\"\\r\\n    ]\\r\\n}\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [test] => (item=local) => {\\r\\n    \\\"item\\\": \\\"smart\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\ntest                       : ok=3    changed=0    unreachable=0    failed=0\\r\\n```\\r\\n\\r\\ntest_2.yml (everything ok)\\r\\n````\\r\\nPLAY [test] ********************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [test]\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [test] => {\\r\\n    \\\"test\\\": [\\r\\n        \\\"local\\\"\\r\\n    ]\\r\\n}\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [test] => (item=local) => {\\r\\n    \\\"item\\\": \\\"local\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\ntest                       : ok=3    changed=0    unreachable=0    failed=0\\r\\n````\", \n    \"component_name\": \"ansible connection handling and loops\", \n    \"component_raw\": \"ansible connection handling and loops\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19431\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"\\\"ansible_connection\\\" variable is read as \\\"smart\\\" in a loop when defined as \\\"local\\\" in inventory.\\n\\nFun fact: properly defined as \\\"local\\\" if set in the playbook itself.\", \n    \"title\": \"\\\"ansible_connection\\\" variable is read as \\\"smart\\\" in a loop when defined as \\\"local\\\" in inventory\"\n  }, \n  \"19433\": {\n    \"ansible_version\": \"ansible 2.2.1.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nmeta\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.1.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nmeta: end_play lacks output\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nnormal use of meta: end_play\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n    - name: end if checkmode\\r\\n      meta: end_play\\r\\n      when: ansible_check_mode\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\noutput (name of the task)\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nno output\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"meta\", \n    \"component_raw\": \"meta\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19433\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"meta\", \n    \"summary\": \"meta: end_play lacks output\", \n    \"title\": \"show output for meta: end_play\"\n  }, \n  \"19436\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nAzure Dynamic Inventory (azure_rm.py)\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAzure (in its Azure Resource Manager model) knows of two kind of virtual machines: \\r\\n* plain virtual machines\\r\\n* scaleset virtual machines\\r\\n\\r\\nThough in many respects similar to plain VMs, scaleset VMs have a completely separate API and cannot be queried as plain VMs. For this reason the dynamic inventory script so far does not return scaleset VMs as hosts.\\r\\n\\r\\nThis patch includes querying scaleset VMs from Azure and adding them as hosts. The dynamic inventory offers the same set of variables that are available for plain VMs with the following differences:\\r\\n* The inventory name of the host is `<scaleset name>_<instance id>` as used by the Azure Rest API as well.\\r\\n* Scaleset VMs cannot have public IPs associated to them, so attributes related to public IPs are missing.\\r\\n* Also because of missing public IPs, `ansible_host` is set to the private IP. The user is responsible for adding connectivity via a VPN/jumpbox and configure ansible to use this connection.\\r\\n* The host variable `type` is 'Microsoft.Compute/virtualMachineScaleSets/virtualMachines' (unlike 'Microsoft.Compute/virtualMachines' for plain VMs).\\r\\n* There are two additional host variables `scaleset` and `instance_id` to identify the VM as a resource.\\r\\n\\r\\nThe implementation offers the same optional querying of powerstate. \\r\\n\\r\\nAlso the same kind of selecting and grouping of hosts by different criteria is supported like for plain VMs. (You can add tags to an Azure scaleset that are than inherited by all it VMs.)\\r\\n\\r\\nThis will add the following output if the queried scope (subscription/resource group/location) contains scaleset VMs:\\r\\n```\\r\\n{\\r\\n  \\\"_meta\\\": {\\r\\n    \\\"hostvars\\\": {\\r\\n      \\\"appservers_0\\\": {\\r\\n        \\\"ansible_host\\\": \\\"10.1.17.6\\\", \\r\\n        \\\"computer_name\\\": \\\"demo-master-inspired-live-app-0\\\", \\r\\n        \\\"id\\\": \\\"/subscriptions/abcd-efgh-4667-818a-ac656fff69a8/resourceGroups/DEMO-MASTER-LIVE/providers/Microsoft.Compute/virtualMachineScaleSets/appservers/virtualMachines/0\\\", \\r\\n        \\\"image\\\": {\\r\\n          \\\"offer\\\": \\\"CentOS\\\", \\r\\n          \\\"publisher\\\": \\\"OpenLogic\\\", \\r\\n          \\\"sku\\\": \\\"7.2\\\", \\r\\n          \\\"version\\\": \\\"7.2.20160620\\\"\\r\\n        }, \\r\\n        \\\"instance_id\\\": \\\"0\\\", \\r\\n        \\\"location\\\": \\\"northeurope\\\", \\r\\n        \\\"mac_address\\\": null, \\r\\n        \\\"name\\\": \\\"appservers_0\\\", \\r\\n        \\\"network_interface\\\": \\\"nic1\\\", \\r\\n        \\\"network_interface_id\\\": \\\"/subscriptions/abcd-efgh-4667-818a-ac656fff69a8/resourceGroups/demo-master-live/providers/Microsoft.Compute/virtualMachineScaleSets/appservers/virtualMachines/0/networkInterfaces/nic1\\\", \\r\\n        \\\"powerstate\\\": \\\"deallocated\\\", \\r\\n        \\\"private_ip\\\": \\\"10.1.17.6\\\", \\r\\n        \\\"private_ip_alloc_method\\\": \\\"Dynamic\\\", \\r\\n        \\\"provisioning_state\\\": \\\"Succeeded\\\", \\r\\n        \\\"resource_group\\\": \\\"demo-master-inspired-live\\\", \\r\\n        \\\"scaleset\\\": \\\"appservers\\\", \\r\\n        \\\"tags\\\": {\\r\\n          \\\"test\\\": \\\"test\\\"\\r\\n        }, \\r\\n        \\\"type\\\": \\\"Microsoft.Compute/virtualMachineScaleSets/virtualMachines\\\", \\r\\n        \\\"virtual_machine_size\\\": \\\"Standard_D1_v2\\\"\\r\\n      }, \\r\\n      \\\"appservers_1\\\": {\\r\\n....\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"azure dynamic inventory (azure_rm.py)\", \n    \"component_raw\": \"Azure Dynamic Inventory (azure_rm.py)\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19436\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"azure\", \n      \"cloud\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Azure (in its Azure Resource Manager model) knows of two kind of virtual machines: \\n\\n* plain virtual machines\\n\\n* scaleset virtual machines\\n\\n\\n\\nThough in many respects similar to plain VMs, scaleset VMs have a completely separate API and cannot be queried as plain VMs. For this reason the dynamic inventory script so far does not return scaleset VMs as hosts.\\n\\n\\n\\nThis patch includes querying scaleset VMs from Azure and adding them as hosts. The dynamic inventory offers the same set of variables that are available for plain VMs with the following differences:\\n\\n* The inventory name of the host is `<scaleset name>_<instance id>` as used by the Azure Rest API as well.\\n\\n* Scaleset VMs cannot have public IPs associated to them, so attributes related to public IPs are missing.\\n\\n* Also because of missing public IPs, `ansible_host` is set to the private IP. The user is responsible for adding connectivity via a VPN/jumpbox and configure ansible to use this connection.\\n\\n* The host variable `type` is 'Microsoft.Compute/virtualMachineScaleSets/virtualMachines' (unlike 'Microsoft.Compute/virtualMachines' for plain VMs).\\n\\n* There are two additional host variables `scaleset` and `instance_id` to identify the VM as a resource.\\n\\n\\n\\nThe implementation offers the same optional querying of powerstate. \\n\\n\\n\\nAlso the same kind of selecting and grouping of hosts by different criteria is supported like for plain VMs. (You can add tags to an Azure scaleset that are than inherited by all it VMs.)\\n\\n\\n\\nThis will add the following output if the queried scope (subscription/resource group/location) contains scaleset VMs:\\n\\n```\\n\\n{\\n\\n  \\\"_meta\\\": {\\n\\n    \\\"hostvars\\\": {\\n\\n      \\\"appservers_0\\\": {\\n\\n        \\\"ansible_host\\\": \\\"10.1.17.6\\\", \\n\\n        \\\"computer_name\\\": \\\"demo-master-inspired-live-app-0\\\", \\n\\n        \\\"id\\\": \\\"/subscriptions/abcd-efgh-4667-818a-ac656fff69a8/resourceGroups/DEMO-MASTER-LIVE/providers/Microsoft.Compute/virtualMachineScaleSets/appservers/virtualMachines/0\\\", \\n\\n        \\\"image\\\": {\\n\\n          \\\"offer\\\": \\\"CentOS\\\", \\n\\n          \\\"publisher\\\": \\\"OpenLogic\\\", \\n\\n          \\\"sku\\\": \\\"7.2\\\", \\n\\n          \\\"version\\\": \\\"7.2.20160620\\\"\\n\\n        }, \\n\\n        \\\"instance_id\\\": \\\"0\\\", \\n\\n        \\\"location\\\": \\\"northeurope\\\", \\n\\n        \\\"mac_address\\\": null, \\n\\n        \\\"name\\\": \\\"appservers_0\\\", \\n\\n        \\\"network_interface\\\": \\\"nic1\\\", \\n\\n        \\\"network_interface_id\\\": \\\"/subscriptions/abcd-efgh-4667-818a-ac656fff69a8/resourceGroups/demo-master-live/providers/Microsoft.Compute/virtualMachineScaleSets/appservers/virtualMachines/0/networkInterfaces/nic1\\\", \\n\\n        \\\"powerstate\\\": \\\"deallocated\\\", \\n\\n        \\\"private_ip\\\": \\\"10.1.17.6\\\", \\n\\n        \\\"private_ip_alloc_method\\\": \\\"Dynamic\\\", \\n\\n        \\\"provisioning_state\\\": \\\"Succeeded\\\", \\n\\n        \\\"resource_group\\\": \\\"demo-master-inspired-live\\\", \\n\\n        \\\"scaleset\\\": \\\"appservers\\\", \\n\\n        \\\"tags\\\": {\\n\\n          \\\"test\\\": \\\"test\\\"\\n\\n        }, \\n\\n        \\\"type\\\": \\\"Microsoft.Compute/virtualMachineScaleSets/virtualMachines\\\", \\n\\n        \\\"virtual_machine_size\\\": \\\"Standard_D1_v2\\\"\\n\\n      }, \\n\\n      \\\"appservers_1\\\": {\\n\\n....\\n\\n```\", \n    \"title\": \"Add support for fetching Azure scaleset VMs as inventory hosts.\"\n  }, \n  \"19437\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/.../ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible_module_assemble\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/.../ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!----->\\r\\nUbuntu 16.04.1 LTS\\r\\nPython 2.7.12\\r\\n\\r\\n##### SUMMARY\\r\\nWhen using assemble on files with unicode characters in their file name, the assemble module fails.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n```mkdir /tmp/unicode-fragments\\r\\ntouch /tmp/unicode-fragments/\\u00e4\\u00f6\\u00fc\\r\\n```\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- assemble:\\r\\n    src: /tmp/unicode-fragments\\r\\n    dest: /tmp/dest\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nEmpty file assembled.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/tmp/ansible_FZJteE/ansible_module_assemble.py\\\", line 258, in <module>\\r\\n    main()\\r\\n  File \\\"/tmp/ansible_FZJteE/ansible_module_assemble.py\\\", line 220, in main\\r\\n    path = assemble_from_fragments(src, delimiter, compiled_regexp, ignore_hidden)\\r\\n  File \\\"/tmp/ansible_FZJteE/ansible_module_assemble.py\\\", line 131, in assemble_from_fragments\\r\\n    fragment = u\\\"%s/%s\\\" % (src_path, f)\\r\\nUnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 5: ordinal not in range(128)\\r\\n```\\r\\n\\r\\n#### Analysis\\r\\n\\r\\nWith https://github.com/ansible/ansible-modules-core/commit/e4c5a13a7ad6355f779a88456780bdcd86baee31#diff-204c9a1c75ed1b68284601e5efe69ac0R131, the fragment path was changed to unicode. However, `os.listdir()`, from which the fragment path is constructed, does not return unicode unless its argument is also unicode (which does not seem to be the case here).\", \n    \"component_name\": \"ansible_module\", \n    \"component_raw\": \"ansible_module_assemble\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19437\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/assemble.py\", \n    \"summary\": \"When using assemble on files with unicode characters in their file name, the assemble module fails.\", \n    \"title\": \"assemble module cannot assemble files with unicode characters in their name\"\n  }, \n  \"19438\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nreproduced on ansible 2.2.1.0 (rc2) as well\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ninclude_role\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\nreproduced on ansible 2.2.1.0 (rc2) as well\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nNot relevant\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nNot relevant\\r\\n\\r\\n##### SUMMARY\\r\\nIf a role is installed as part of a playbook run (i.e, a task that runs ``ansible-galaxy`` or something similar) and then we attempt to use ``include_role`` in a later task, ansible-playbook will not run at all because the role from ``include_role`` is missing (has not been installed yet).\\r\\n\\r\\nIt's sort of like the static parameter of the ``include`` task where a ``static: no`` on the include can allow you to add a ``when: <something>`` clause to conditionally/dynamically run the include.\\r\\n\\r\\nThere *is* a [documented](https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/utilities/logic/include_role.py) static parameter in the ``include_role`` task, however it does not alleviate this issue.\\r\\n\\r\\nThe issue is present even when running the role setup and the include role in two different plays of the same playbook. The only workaround for now is to run completely separated playbooks.\\r\\n\\r\\nIt's like ``ansible-playbook`` tries to \\\"compile\\\" all the roles before starting the run.\\r\\n\\r\\nThe obvious answer would be:\\r\\n\\r\\n> Why don't you use ansible-galaxy and requirements.yml file and *\\\\<insert other alternative here\\\\>* before running your playbook ?\\r\\n\\r\\nThis is a more complicated use case where there are actual setup tasks required and I would like them to be embedded as ansible tasks.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n- name: Setup and use a role\\r\\n  hosts: localhost\\r\\n  tasks:\\r\\n    - name: Get geerlingguy.apache\\r\\n      command: ansible-galaxy install geerlingguy.apache\\r\\n\\r\\n    - name: Include geerlingguy.apache\\r\\n      include_role:\\r\\n        name: geerlingguy.apache\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nI would expect the include_role task to seek the role only when running the actual include_role task and thus this example playbook should work.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\n# ansible-playbook -i 'localhost' playbook.yml \\r\\n [WARNING]: Host file not found: localhost\\r\\n\\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n\\r\\nERROR! the role 'geerlingguy.apache' was not found in /home/centos/roles:/etc/ansible/roles:/home/centos\\r\\n\\r\\nThe error appears to have been in '/home/centos/playbook.yml': line 9, column 15, but may\\r\\nbe elsewhere in the file depending on the exact syntax problem.\\r\\n\\r\\nThe offending line appears to be:\\r\\n\\r\\n      include_role:\\r\\n        name: geerlingguy.apache\\r\\n              ^ here\\r\\n```\\r\\n\", \n    \"component_name\": \"include_role\", \n    \"component_raw\": \"include_role\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19438\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/include_role.py\", \n    \"summary\": \"If a role is installed as part of a playbook run (i.e, a task that runs ``ansible-galaxy`` or something similar) and then we attempt to use ``include_role`` in a later task, ansible-playbook will not run at all because the role from ``include_role`` is missing (has not been installed yet).\\n\\n\\n\\nIt's sort of like the static parameter of the ``include`` task where a ``static: no`` on the include can allow you to add a ``when: <something>`` clause to conditionally/dynamically run the include.\\n\\n\\n\\nThere *is* a [documented](https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/utilities/logic/include_role.py) static parameter in the ``include_role`` task, however it does not alleviate this issue.\\n\\n\\n\\nThe issue is present even when running the role setup and the include role in two different plays of the same playbook. The only workaround for now is to run completely separated playbooks.\\n\\n\\n\\nIt's like ``ansible-playbook`` tries to \\\"compile\\\" all the roles before starting the run.\\n\\n\\n\\nThe obvious answer would be:\\n\\n\\n\\n> Why don't you use ansible-galaxy and requirements.yml file and *\\\\<insert other alternative here\\\\>* before running your playbook ?\\n\\n\\n\\nThis is a more complicated use case where there are actual setup tasks required and I would like them to be embedded as ansible tasks.\", \n    \"title\": \"include_role tasks has ansible-playbook seek roles before the actual task is run\"\n  }, \n  \"19440\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel f1b5dde4cb) last updated 2016/12/16 052005 (GMT -400)\\nconfig file = /home/ecms/horizons_v2/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ngit\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel f1b5dde4cb) last updated 2016/12/16 05:20:05 (GMT -400)\\r\\n  config file = /home/ecms/horizons_v2/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nAnsible's git module reports a hostkey error rather than a timeout when in fact it simply couldn't make a connection at all. Sure, now that I've traced it to a firewall restriction and the ensuing timeout, that makes sense, but this could be a much more insightful and accurate error message.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nSet a security group egress restriction on the ssh port (22), and attempt to do a git clone...\\r\\n\\r\\n```yaml\\r\\n- name: checkout application from repository\\r\\n  git:\\r\\n    repo: ssh://AAAAAAAAAAAAAAAAAAAA@git-codecommit.us-east-1.amazonaws.com/v1/repos/somerepo\\r\\n    dest: \\\"{{ app_home }}\\\"\\r\\n    key_file: /home/ec2-user/deploy.pem\\r\\n    accept_hostkey: yes\\r\\n    force: yes\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n```\\r\\n2016-12-16 06:47:20,756 p=11741 u=user |  fatal: [host.domain.internal]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"git connection timed out, waited 60s\\\"}\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nInstead of a timeout related error, the error message refers to failing to get the hostkey.  \\r\\n```\\r\\n2016-12-16 06:47:20,756 p=11741 u=user |  fatal: [host.domain.internal]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"failed to get the hostkey for git-codecommit.us-east-1.amazonaws.com\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"git\", \n    \"component_raw\": \"git\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19440\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs_report\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/source_control/git.py\", \n    \"summary\": \"Ansible's git module reports a hostkey error rather than a timeout when in fact it simply couldn't make a connection at all. Sure, now that I've traced it to a firewall restriction and the ensuing timeout, that makes sense, but this could be a much more insightful and accurate error message.\", \n    \"title\": \"git module needs better error messages for timeout related errors\"\n  }, \n  \"19441\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nansible_module_assemble\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nFixes https://github.com/ansible/ansible/issues/19437\\r\\n\\r\\n`os.listdir()` returns unicode strings only if its argument is also unicode.\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"ansible_module\", \n    \"component_raw\": \"ansible_module_assemble\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19441\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"core_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/assemble.py\", \n    \"summary\": \"Fixes https://github.com/ansible/ansible/issues/19437\\n\\n\\n\\n`os.listdir()` returns unicode strings only if its argument is also unicode.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"Fix assembling unicode-named files.\"\n  }, \n  \"19442\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nassemble\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nUbuntu\\r\\n##### SUMMARY\\r\\n\\r\\nWould like the ability to assemble by means other than alphabetically. Namely by a list of files, or list of files in a specific directory. Becomes difficult to manage when you must prepend each file with number, e.g. \\r\\n\\r\\n110_tacacs\\r\\n120_aaa\\r\\n130_acl\\r\\n\\r\\nThen realize you need 115_routing, etc... \\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n\\r\\nI envision something similar to: \\r\\n\\r\\n```yaml\\r\\n\\r\\n- assemble:\\r\\n    src_files:\\r\\n      - /var/config/ny-sw01/route\\r\\n      - /var/config/ny-sw01/aaa\\r\\n      - /var/standard/acl\\r\\n    dest: /var/finalconfig/ny-sw01/run.cfg\\r\\n\\r\\nand\\r\\n- assemble:\\r\\n    src_root: /var/config/sw01\\r\\n    src_files:\\r\\n      - route\\r\\n      - aaa\\r\\n      - acl\\r\\n    dest: /var/finalconfig/ny-sw01/run.cfg\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\nThe assemble happens in order of list, not alphabetical \\r\\n\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nOnly alphabetical \\r\\n\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nN/A\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n\\r\\n\", \n    \"component_name\": \"assemble\", \n    \"component_raw\": \"assemble\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19442\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/assemble.py\", \n    \"summary\": \"Would like the ability to assemble by means other than alphabetically. Namely by a list of files, or list of files in a specific directory. Becomes difficult to manage when you must prepend each file with number, e.g. \\n\\n\\n\\n110_tacacs\\n\\n120_aaa\\n\\n130_acl\\n\\n\\n\\nThen realize you need 115_routing, etc...\", \n    \"title\": \"Assemble module ordering enhancement\"\n  }, \n  \"19443\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 9614ecb0ac) last updated 2016/12/16 081636 (GMT -700)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nwin_acl.ps1 module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel 9614ecb0ac) last updated 2016/12/16 08:16:36 (GMT -700)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nThe win_acl module currently does not support modification of ACLs for registry keys - only for folders and files. There is not currently a module to modify ACLs for registry keys.\\r\\n\\r\\nThe patch is pretty simple and uses existing regular expression from the win_regedit.ps1 module to identify that the path is a registry key. Currently if the win_acl.ps1 module is used on registry key the task fails because in powershel registry key ACEs are set with \\\"New-Object System.Security.AccessControl.RegistryAccessRule\\\" while folder and files are set with \\\"New-Object System.Security.AccessControl.FileSystemAccessRule.\\\" Incorporating this functionality into the win_acl.ps1 allows the module to change ACE permissions for folders, files, and registry keys.\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nhttps://github.com/ansible/ansible-modules-extras/issues/3233\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\nBefore:\\r\\nTASK [File ACL task that works] *************************************************************************\\r\\ntask path: /home/bpleines/ansibleModuleUpdates/examplePlay.yml:4\\r\\nUsing module file /home/bpleines/ansibleModuleUpdates/ansible-1/lib/ansible/modules/windows/win_acl.ps1\\r\\n<35.165.79.53> ESTABLISH WINRM CONNECTION FOR USER: Administrator on PORT 5986 TO 35.165.79.53\\r\\n<35.165.79.53> EXEC Set-StrictMode -Version Latest\\r\\n(New-Item -Type Directory -Path $env:temp -Name \\\"ansible-tmp-1481905784.28-69176596398916\\\").FullName | Write-Host -Separator '';\\r\\n<35.165.79.53> PUT \\\"/tmp/tmpkLXvTE\\\" TO \\\"C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905784.28-69176596398916\\\\win_acl.ps1\\\"\\r\\n<35.165.79.53> EXEC Set-StrictMode -Version Latest\\r\\nTry\\r\\n{\\r\\n& 'C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905784.28-69176596398916\\\\win_acl.ps1'\\r\\n}\\r\\nCatch\\r\\n{\\r\\n$_obj = @{ failed = $true }\\r\\nIf ($_.Exception.GetType)\\r\\n{\\r\\n$_obj.Add('msg', $_.Exception.Message)\\r\\n}\\r\\nElse\\r\\n{\\r\\n$_obj.Add('msg', $_.ToString())\\r\\n}\\r\\nIf ($_.InvocationInfo.PositionMessage)\\r\\n{\\r\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\r\\n}\\r\\nElseIf ($_.ScriptStackTrace)\\r\\n{\\r\\n$_obj.Add('exception', $_.ScriptStackTrace)\\r\\n}\\r\\nTry\\r\\n{\\r\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\r\\n}\\r\\nCatch\\r\\n{\\r\\n}\\r\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\r\\nExit 1\\r\\n}\\r\\nFinally { Remove-Item \\\"C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905784.28-69176596398916\\\" -Force -Recurse -ErrorAction SilentlyContinue }\\r\\nok: [35.165.79.53] => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_acl\\\"\\r\\n    }\\r\\n}\\r\\n\\r\\nTASK [Registry ACL task that fails] *********************************************************************\\r\\ntask path: /home/bpleines/ansibleModuleUpdates/examplePlay.yml:14\\r\\nUsing module file /home/bpleines/ansibleModuleUpdates/ansible-1/lib/ansible/modules/windows/win_acl.ps1\\r\\n<35.165.79.53> ESTABLISH WINRM CONNECTION FOR USER: Administrator on PORT 5986 TO 35.165.79.53\\r\\n<35.165.79.53> EXEC Set-StrictMode -Version Latest\\r\\n(New-Item -Type Directory -Path $env:temp -Name \\\"ansible-tmp-1481905789.7-280861981457346\\\").FullName | Write-Host -Separator '';\\r\\n<35.165.79.53> PUT \\\"/tmp/tmpD3AWEQ\\\" TO \\\"C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905789.7-280861981457346\\\\win_acl.ps1\\\"\\r\\n<35.165.79.53> EXEC Set-StrictMode -Version Latest\\r\\nTry\\r\\n{\\r\\n& 'C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905789.7-280861981457346\\\\win_acl.ps1'\\r\\n}\\r\\nCatch\\r\\n{\\r\\n$_obj = @{ failed = $true }\\r\\nIf ($_.Exception.GetType)\\r\\n{\\r\\n$_obj.Add('msg', $_.Exception.Message)\\r\\n}\\r\\nElse\\r\\n{\\r\\n$_obj.Add('msg', $_.ToString())\\r\\n}\\r\\nIf ($_.InvocationInfo.PositionMessage)\\r\\n{\\r\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\r\\n}\\r\\nElseIf ($_.ScriptStackTrace)\\r\\n{\\r\\n$_obj.Add('exception', $_.ScriptStackTrace)\\r\\n}\\r\\nTry\\r\\n{\\r\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\r\\n}\\r\\nCatch\\r\\n{\\r\\n}\\r\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\r\\nExit 1\\r\\n}\\r\\nFinally { Remove-Item \\\"C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905789.7-280861981457346\\\" -Force -Recurse -ErrorAction SilentlyContinue }\\r\\nfatal: [35.165.79.53]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_acl\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"an error occurred when attempting to present FullControl permission(s) on HKLM:\\\\\\\\SYSTEM\\\\\\\\CurrentControlSet\\\\\\\\Control\\\\\\\\SecurePipeServers\\\\\\\\Winreg\\\\\\\\ for Administrators\\\"\\r\\n}\\r\\n\\r\\nAfter:\\r\\nTASK [File ACL task that works] *************************************************************************\\r\\ntask path: /home/bpleines/ansibleModuleUpdates/examplePlay.yml:4\\r\\nUsing module file /home/bpleines/ansibleModuleUpdates/ansible-1/lib/ansible/modules/windows/win_acl.ps1\\r\\n<35.165.79.53> ESTABLISH WINRM CONNECTION FOR USER: Administrator on PORT 5986 TO 35.165.79.53\\r\\n<35.165.79.53> EXEC Set-StrictMode -Version Latest\\r\\n(New-Item -Type Directory -Path $env:temp -Name \\\"ansible-tmp-1481905894.1-281441122675601\\\").FullName | Write-Host -Separator '';\\r\\n<35.165.79.53> PUT \\\"/tmp/tmpiPNjCn\\\" TO \\\"C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905894.1-281441122675601\\\\win_acl.ps1\\\"\\r\\n<35.165.79.53> EXEC Set-StrictMode -Version Latest\\r\\nTry\\r\\n{\\r\\n& 'C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905894.1-281441122675601\\\\win_acl.ps1'\\r\\n}\\r\\nCatch\\r\\n{\\r\\n$_obj = @{ failed = $true }\\r\\nIf ($_.Exception.GetType)\\r\\n{\\r\\n$_obj.Add('msg', $_.Exception.Message)\\r\\n}\\r\\nElse\\r\\n{\\r\\n$_obj.Add('msg', $_.ToString())\\r\\n}\\r\\nIf ($_.InvocationInfo.PositionMessage)\\r\\n{\\r\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\r\\n}\\r\\nElseIf ($_.ScriptStackTrace)\\r\\n{\\r\\n$_obj.Add('exception', $_.ScriptStackTrace)\\r\\n}\\r\\nTry\\r\\n{\\r\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\r\\n}\\r\\nCatch\\r\\n{\\r\\n}\\r\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\r\\nExit 1\\r\\n}\\r\\nFinally { Remove-Item \\\"C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905894.1-281441122675601\\\" -Force -Recurse -ErrorAction SilentlyContinue }\\r\\nok: [35.165.79.53] => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_acl\\\"\\r\\n    }\\r\\n}\\r\\n\\r\\nTASK [Registry ACL task that fails] *********************************************************************\\r\\ntask path: /home/bpleines/ansibleModuleUpdates/examplePlay.yml:14\\r\\nUsing module file /home/bpleines/ansibleModuleUpdates/ansible-1/lib/ansible/modules/windows/win_acl.ps1\\r\\n<35.165.79.53> ESTABLISH WINRM CONNECTION FOR USER: Administrator on PORT 5986 TO 35.165.79.53\\r\\n<35.165.79.53> EXEC Set-StrictMode -Version Latest\\r\\n(New-Item -Type Directory -Path $env:temp -Name \\\"ansible-tmp-1481905899.94-44677112189729\\\").FullName | Write-Host -Separator '';\\r\\n<35.165.79.53> PUT \\\"/tmp/tmpGO58wa\\\" TO \\\"C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905899.94-44677112189729\\\\win_acl.ps1\\\"\\r\\n<35.165.79.53> EXEC Set-StrictMode -Version Latest\\r\\nTry\\r\\n{\\r\\n& 'C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905899.94-44677112189729\\\\win_acl.ps1'\\r\\n}\\r\\nCatch\\r\\n{\\r\\n$_obj = @{ failed = $true }\\r\\nIf ($_.Exception.GetType)\\r\\n{\\r\\n$_obj.Add('msg', $_.Exception.Message)\\r\\n}\\r\\nElse\\r\\n{\\r\\n$_obj.Add('msg', $_.ToString())\\r\\n}\\r\\nIf ($_.InvocationInfo.PositionMessage)\\r\\n{\\r\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\r\\n}\\r\\nElseIf ($_.ScriptStackTrace)\\r\\n{\\r\\n$_obj.Add('exception', $_.ScriptStackTrace)\\r\\n}\\r\\nTry\\r\\n{\\r\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\r\\n}\\r\\nCatch\\r\\n{\\r\\n}\\r\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\r\\nExit 1\\r\\n}\\r\\nFinally { Remove-Item \\\"C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905899.94-44677112189729\\\" -Force -Recurse -ErrorAction SilentlyContinue }\\r\\nchanged: [35.165.79.53] => {\\r\\n    \\\"changed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_acl\\\"\\r\\n    }\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"win_acl.ps1\", \n    \"component_raw\": \"win_acl.ps1 module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19443\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"core_review\", \n      \"feature\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_acl.ps1\", \n    \"summary\": \"The win_acl module currently does not support modification of ACLs for registry keys - only for folders and files. There is not currently a module to modify ACLs for registry keys.\\n\\n\\n\\nThe patch is pretty simple and uses existing regular expression from the win_regedit.ps1 module to identify that the path is a registry key. Currently if the win_acl.ps1 module is used on registry key the task fails because in powershel registry key ACEs are set with \\\"New-Object System.Security.AccessControl.RegistryAccessRule\\\" while folder and files are set with \\\"New-Object System.Security.AccessControl.FileSystemAccessRule.\\\" Incorporating this functionality into the win_acl.ps1 allows the module to change ACE permissions for folders, files, and registry keys.\\n\\n\\n\\nhttps://github.com/ansible/ansible-modules-extras/issues/3233\\n\\n\\n\\n```\\n\\nBefore:\\n\\nTASK [File ACL task that works] *************************************************************************\\n\\ntask path: /home/bpleines/ansibleModuleUpdates/examplePlay.yml:4\\n\\nUsing module file /home/bpleines/ansibleModuleUpdates/ansible-1/lib/ansible/modules/windows/win_acl.ps1\\n\\n<35.165.79.53> ESTABLISH WINRM CONNECTION FOR USER: Administrator on PORT 5986 TO 35.165.79.53\\n\\n<35.165.79.53> EXEC Set-StrictMode -Version Latest\\n\\n(New-Item -Type Directory -Path $env:temp -Name \\\"ansible-tmp-1481905784.28-69176596398916\\\").FullName | Write-Host -Separator '';\\n\\n<35.165.79.53> PUT \\\"/tmp/tmpkLXvTE\\\" TO \\\"C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905784.28-69176596398916\\\\win_acl.ps1\\\"\\n\\n<35.165.79.53> EXEC Set-StrictMode -Version Latest\\n\\nTry\\n\\n{\\n\\n& 'C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905784.28-69176596398916\\\\win_acl.ps1'\\n\\n}\\n\\nCatch\\n\\n{\\n\\n$_obj = @{ failed = $true }\\n\\nIf ($_.Exception.GetType)\\n\\n{\\n\\n$_obj.Add('msg', $_.Exception.Message)\\n\\n}\\n\\nElse\\n\\n{\\n\\n$_obj.Add('msg', $_.ToString())\\n\\n}\\n\\nIf ($_.InvocationInfo.PositionMessage)\\n\\n{\\n\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\n\\n}\\n\\nElseIf ($_.ScriptStackTrace)\\n\\n{\\n\\n$_obj.Add('exception', $_.ScriptStackTrace)\\n\\n}\\n\\nTry\\n\\n{\\n\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\n\\n}\\n\\nCatch\\n\\n{\\n\\n}\\n\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\n\\nExit 1\\n\\n}\\n\\nFinally { Remove-Item \\\"C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905784.28-69176596398916\\\" -Force -Recurse -ErrorAction SilentlyContinue }\\n\\nok: [35.165.79.53] => {\\n\\n    \\\"changed\\\": false, \\n\\n    \\\"invocation\\\": {\\n\\n        \\\"module_name\\\": \\\"win_acl\\\"\\n\\n    }\\n\\n}\\n\\n\\n\\nTASK [Registry ACL task that fails] *********************************************************************\\n\\ntask path: /home/bpleines/ansibleModuleUpdates/examplePlay.yml:14\\n\\nUsing module file /home/bpleines/ansibleModuleUpdates/ansible-1/lib/ansible/modules/windows/win_acl.ps1\\n\\n<35.165.79.53> ESTABLISH WINRM CONNECTION FOR USER: Administrator on PORT 5986 TO 35.165.79.53\\n\\n<35.165.79.53> EXEC Set-StrictMode -Version Latest\\n\\n(New-Item -Type Directory -Path $env:temp -Name \\\"ansible-tmp-1481905789.7-280861981457346\\\").FullName | Write-Host -Separator '';\\n\\n<35.165.79.53> PUT \\\"/tmp/tmpD3AWEQ\\\" TO \\\"C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905789.7-280861981457346\\\\win_acl.ps1\\\"\\n\\n<35.165.79.53> EXEC Set-StrictMode -Version Latest\\n\\nTry\\n\\n{\\n\\n& 'C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905789.7-280861981457346\\\\win_acl.ps1'\\n\\n}\\n\\nCatch\\n\\n{\\n\\n$_obj = @{ failed = $true }\\n\\nIf ($_.Exception.GetType)\\n\\n{\\n\\n$_obj.Add('msg', $_.Exception.Message)\\n\\n}\\n\\nElse\\n\\n{\\n\\n$_obj.Add('msg', $_.ToString())\\n\\n}\\n\\nIf ($_.InvocationInfo.PositionMessage)\\n\\n{\\n\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\n\\n}\\n\\nElseIf ($_.ScriptStackTrace)\\n\\n{\\n\\n$_obj.Add('exception', $_.ScriptStackTrace)\\n\\n}\\n\\nTry\\n\\n{\\n\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\n\\n}\\n\\nCatch\\n\\n{\\n\\n}\\n\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\n\\nExit 1\\n\\n}\\n\\nFinally { Remove-Item \\\"C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905789.7-280861981457346\\\" -Force -Recurse -ErrorAction SilentlyContinue }\\n\\nfatal: [35.165.79.53]: FAILED! => {\\n\\n    \\\"changed\\\": false, \\n\\n    \\\"failed\\\": true, \\n\\n    \\\"invocation\\\": {\\n\\n        \\\"module_name\\\": \\\"win_acl\\\"\\n\\n    }, \\n\\n    \\\"msg\\\": \\\"an error occurred when attempting to present FullControl permission(s) on HKLM:\\\\\\\\SYSTEM\\\\\\\\CurrentControlSet\\\\\\\\Control\\\\\\\\SecurePipeServers\\\\\\\\Winreg\\\\\\\\ for Administrators\\\"\\n\\n}\\n\\n\\n\\nAfter:\\n\\nTASK [File ACL task that works] *************************************************************************\\n\\ntask path: /home/bpleines/ansibleModuleUpdates/examplePlay.yml:4\\n\\nUsing module file /home/bpleines/ansibleModuleUpdates/ansible-1/lib/ansible/modules/windows/win_acl.ps1\\n\\n<35.165.79.53> ESTABLISH WINRM CONNECTION FOR USER: Administrator on PORT 5986 TO 35.165.79.53\\n\\n<35.165.79.53> EXEC Set-StrictMode -Version Latest\\n\\n(New-Item -Type Directory -Path $env:temp -Name \\\"ansible-tmp-1481905894.1-281441122675601\\\").FullName | Write-Host -Separator '';\\n\\n<35.165.79.53> PUT \\\"/tmp/tmpiPNjCn\\\" TO \\\"C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905894.1-281441122675601\\\\win_acl.ps1\\\"\\n\\n<35.165.79.53> EXEC Set-StrictMode -Version Latest\\n\\nTry\\n\\n{\\n\\n& 'C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905894.1-281441122675601\\\\win_acl.ps1'\\n\\n}\\n\\nCatch\\n\\n{\\n\\n$_obj = @{ failed = $true }\\n\\nIf ($_.Exception.GetType)\\n\\n{\\n\\n$_obj.Add('msg', $_.Exception.Message)\\n\\n}\\n\\nElse\\n\\n{\\n\\n$_obj.Add('msg', $_.ToString())\\n\\n}\\n\\nIf ($_.InvocationInfo.PositionMessage)\\n\\n{\\n\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\n\\n}\\n\\nElseIf ($_.ScriptStackTrace)\\n\\n{\\n\\n$_obj.Add('exception', $_.ScriptStackTrace)\\n\\n}\\n\\nTry\\n\\n{\\n\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\n\\n}\\n\\nCatch\\n\\n{\\n\\n}\\n\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\n\\nExit 1\\n\\n}\\n\\nFinally { Remove-Item \\\"C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905894.1-281441122675601\\\" -Force -Recurse -ErrorAction SilentlyContinue }\\n\\nok: [35.165.79.53] => {\\n\\n    \\\"changed\\\": false, \\n\\n    \\\"invocation\\\": {\\n\\n        \\\"module_name\\\": \\\"win_acl\\\"\\n\\n    }\\n\\n}\\n\\n\\n\\nTASK [Registry ACL task that fails] *********************************************************************\\n\\ntask path: /home/bpleines/ansibleModuleUpdates/examplePlay.yml:14\\n\\nUsing module file /home/bpleines/ansibleModuleUpdates/ansible-1/lib/ansible/modules/windows/win_acl.ps1\\n\\n<35.165.79.53> ESTABLISH WINRM CONNECTION FOR USER: Administrator on PORT 5986 TO 35.165.79.53\\n\\n<35.165.79.53> EXEC Set-StrictMode -Version Latest\\n\\n(New-Item -Type Directory -Path $env:temp -Name \\\"ansible-tmp-1481905899.94-44677112189729\\\").FullName | Write-Host -Separator '';\\n\\n<35.165.79.53> PUT \\\"/tmp/tmpGO58wa\\\" TO \\\"C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905899.94-44677112189729\\\\win_acl.ps1\\\"\\n\\n<35.165.79.53> EXEC Set-StrictMode -Version Latest\\n\\nTry\\n\\n{\\n\\n& 'C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905899.94-44677112189729\\\\win_acl.ps1'\\n\\n}\\n\\nCatch\\n\\n{\\n\\n$_obj = @{ failed = $true }\\n\\nIf ($_.Exception.GetType)\\n\\n{\\n\\n$_obj.Add('msg', $_.Exception.Message)\\n\\n}\\n\\nElse\\n\\n{\\n\\n$_obj.Add('msg', $_.ToString())\\n\\n}\\n\\nIf ($_.InvocationInfo.PositionMessage)\\n\\n{\\n\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\n\\n}\\n\\nElseIf ($_.ScriptStackTrace)\\n\\n{\\n\\n$_obj.Add('exception', $_.ScriptStackTrace)\\n\\n}\\n\\nTry\\n\\n{\\n\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\n\\n}\\n\\nCatch\\n\\n{\\n\\n}\\n\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\n\\nExit 1\\n\\n}\\n\\nFinally { Remove-Item \\\"C:\\\\Users\\\\Administrator\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1481905899.94-44677112189729\\\" -Force -Recurse -ErrorAction SilentlyContinue }\\n\\nchanged: [35.165.79.53] => {\\n\\n    \\\"changed\\\": true, \\n\\n    \\\"invocation\\\": {\\n\\n        \\\"module_name\\\": \\\"win_acl\\\"\\n\\n    }\\n\\n}\\n\\n```\", \n    \"title\": \"Adding registry functionality to win_acl module\"\n  }, \n  \"19446\": {\n    \"ansible_version\": \"ansible-playbook 2.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n- New Module Pull Request\\r\\n##### COMPONENT NAME\\r\\n\\r\\n<!--- Name of the plugin/module/task -->\\r\\n\\r\\ngcdataproc\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n\\r\\n```\\r\\nansible-playbook 2.2.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n##### SUMMARY\\r\\n\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nThis is a resubmission of a PR in ansible-modules-extras: ansible/ansible-modules-extras#3293\\r\\n\\r\\nThis module uses `google-api-python-client` to make requests as opposed to `libcloud` as `libcloud` did not support the Dataproc API at the time of writing this module. The module requires a slightly different profile of information given the switch from `libcloud` to `google-api-python-client` and the nature of the Dataproc API compared to Compute for example.\\r\\n\\r\\nI have removed the explicit parameters (but can add them back in if this seems more like a bug than a simplification) corresponding to  `GCE_EMAIL`, `GCE_PROJECT`, and `GCE_CREDENTIALS_FILE_PATH` environment variables that are supported in the other modules.\\r\\n\\r\\nAnother note is that the `google-api-python-client` calls are asynchronous to Dataproc. I have a very ugly poll-sleep interface for synchronous calls and would be open to hearing suggestions as I am unsure whether other Google APIs support event based calls or if `libcloud` simply emulates synchronous calls in a way similar to what I do (from what I saw of the code, it seems to support the latter).\\r\\n\\r\\nThe last noteworthy design decision was to pass unvalidated data into the Google API. This is a decision I saw in parameters like `metadata` in the `gce` module and some of these parameters are so highly variable that this seems like a better task for the user in the playbooks to pick and choose based on the documentation which parts of the object to pass in as not all are required for the API. I also think that the number of parameters would be a bit excessive without this structure and not easily represented within the ansible framework.\\r\\n\\r\\nTODOS:\\r\\n1. I need to work more on documentation and welcome suggestions. One issue that I just saw is that the Google docs and the return values from the `google-api-python-client` call do not seem to match. I need to look into this and fix the documentation there.\\r\\n2. I only support the creation and destruction of clusters currently. Is anyone interested in the other components of the Dataproc API for this module? One warning is that I am unsure of the ability we will have to make this idempotent.\\r\\n3. Cluster destruction does not currently support synchronous operations.\\r\\n\\r\\n<!--- Paste verbatim command output below, e.g. before and after your change -->\\r\\n\\r\\n```\\r\\n***********************************\\r\\nPARSED OUTPUT\\r\\n{\\r\\n    \\\"changed\\\": true, \\r\\n    \\\"clusterName\\\": \\\"test\\\", \\r\\n    \\\"clusterUuid\\\": \\\"7cf1ff27-4c9a-465e-8106-f646739eced3\\\", \\r\\n    \\\"config\\\": {\\r\\n        \\\"configBucket\\\": \\\"dataproc-2433fc45-780c-44a7-a05b-2aa6fa077e39-us\\\", \\r\\n        \\\"gceClusterConfig\\\": {\\r\\n            \\\"networkUri\\\": \\\"https://www.googleapis.com/compute/v1/projects/[PROJECT]/global/networks/default\\\", \\r\\n            \\\"serviceAccountScopes\\\": [\\r\\n                \\\"https://www.googleapis.com/auth/bigquery\\\", \\r\\n                \\\"https://www.googleapis.com/auth/bigtable.admin.table\\\", \\r\\n                \\\"https://www.googleapis.com/auth/bigtable.data\\\", \\r\\n                \\\"https://www.googleapis.com/auth/cloud.useraccounts.readonly\\\", \\r\\n                \\\"https://www.googleapis.com/auth/devstorage.full_control\\\", \\r\\n                \\\"https://www.googleapis.com/auth/devstorage.read_write\\\", \\r\\n                \\\"https://www.googleapis.com/auth/logging.write\\\"\\r\\n            ], \\r\\n            \\\"zoneUri\\\": \\\"https://www.googleapis.com/compute/v1/projects/[PROJECT]/zones/us-central1-a\\\"\\r\\n        }, \\r\\n        \\\"masterConfig\\\": {\\r\\n            \\\"diskConfig\\\": {\\r\\n                \\\"bootDiskSizeGb\\\": 500\\r\\n            }, \\r\\n            \\\"imageUri\\\": \\\"https://www.googleapis.com/compute/v1/projects/cloud-dataproc/global/images/dataproc-1-1-20161017-161942\\\", \\r\\n            \\\"instanceNames\\\": [\\r\\n                \\\"test-m\\\"\\r\\n            ], \\r\\n            \\\"machineTypeUri\\\": \\\"https://www.googleapis.com/compute/v1/projects/[PROJECT]/zones/us-central1-a/machineTypes/n1-standard-4\\\", \\r\\n            \\\"numInstances\\\": 1\\r\\n        }, \\r\\n        \\\"softwareConfig\\\": {\\r\\n            \\\"imageVersion\\\": \\\"1.1.8\\\", \\r\\n            \\\"properties\\\": {\\r\\n                \\\"distcp:mapreduce.map.java.opts\\\": \\\"-Xmx2457m\\\", \\r\\n                \\\"distcp:mapreduce.map.memory.mb\\\": \\\"3072\\\", \\r\\n                \\\"distcp:mapreduce.reduce.java.opts\\\": \\\"-Xmx4915m\\\", \\r\\n                \\\"distcp:mapreduce.reduce.memory.mb\\\": \\\"6144\\\", \\r\\n                \\\"mapred:mapreduce.map.cpu.vcores\\\": \\\"1\\\", \\r\\n                \\\"mapred:mapreduce.map.java.opts\\\": \\\"-Xmx2457m\\\", \\r\\n                \\\"mapred:mapreduce.map.memory.mb\\\": \\\"3072\\\", \\r\\n                \\\"mapred:mapreduce.reduce.cpu.vcores\\\": \\\"2\\\", \\r\\n                \\\"mapred:mapreduce.reduce.java.opts\\\": \\\"-Xmx4915m\\\", \\r\\n                \\\"mapred:mapreduce.reduce.memory.mb\\\": \\\"6144\\\", \\r\\n                \\\"mapred:yarn.app.mapreduce.am.command-opts\\\": \\\"-Xmx4915m\\\", \\r\\n                \\\"mapred:yarn.app.mapreduce.am.resource.cpu-vcores\\\": \\\"2\\\", \\r\\n                \\\"mapred:yarn.app.mapreduce.am.resource.mb\\\": \\\"6144\\\", \\r\\n                \\\"spark:spark.driver.maxResultSize\\\": \\\"1920m\\\", \\r\\n                \\\"spark:spark.driver.memory\\\": \\\"3840m\\\", \\r\\n                \\\"spark:spark.executor.cores\\\": \\\"2\\\", \\r\\n                \\\"spark:spark.executor.memory\\\": \\\"5586m\\\", \\r\\n                \\\"spark:spark.yarn.am.memory\\\": \\\"5586m\\\", \\r\\n                \\\"spark:spark.yarn.am.memoryOverhead\\\": \\\"558\\\", \\r\\n                \\\"spark:spark.yarn.executor.memoryOverhead\\\": \\\"558\\\", \\r\\n                \\\"yarn:yarn.nodemanager.resource.memory-mb\\\": \\\"12288\\\", \\r\\n                \\\"yarn:yarn.scheduler.maximum-allocation-mb\\\": \\\"12288\\\", \\r\\n                \\\"yarn:yarn.scheduler.minimum-allocation-mb\\\": \\\"1024\\\"\\r\\n            }\\r\\n        }, \\r\\n        \\\"workerConfig\\\": {\\r\\n            \\\"diskConfig\\\": {\\r\\n                \\\"bootDiskSizeGb\\\": 500\\r\\n            }, \\r\\n            \\\"imageUri\\\": \\\"https://www.googleapis.com/compute/v1/projects/cloud-dataproc/global/images/dataproc-1-1-20161017-161942\\\", \\r\\n            \\\"instanceNames\\\": [\\r\\n                \\\"test-w-0\\\", \\r\\n                \\\"test-w-1\\\"\\r\\n            ], \\r\\n            \\\"machineTypeUri\\\": \\\"https://www.googleapis.com/compute/v1/projects/[PROJECT]/zones/us-central1-a/machineTypes/n1-standard-4\\\", \\r\\n            \\\"numInstances\\\": 2\\r\\n        }\\r\\n    }, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"bucket\\\": null, \\r\\n            \\\"image_version\\\": null, \\r\\n            \\\"init_actions\\\": null, \\r\\n            \\\"master_config\\\": null, \\r\\n            \\\"metadata\\\": null, \\r\\n            \\\"name\\\": \\\"test\\\", \\r\\n            \\\"network\\\": null, \\r\\n            \\\"poll_interval\\\": 1, \\r\\n            \\\"region\\\": \\\"us-central1\\\", \\r\\n            \\\"second_worker_config\\\": null, \\r\\n            \\\"service_account_scopes\\\": null, \\r\\n            \\\"state\\\": \\\"present\\\", \\r\\n            \\\"subnetwork\\\": null, \\r\\n            \\\"sync\\\": true, \\r\\n            \\\"worker_config\\\": null, \\r\\n            \\\"zone\\\": \\\"us-central1-a\\\"\\r\\n        }\\r\\n    }, \\r\\n    \\\"metrics\\\": {}, \\r\\n    \\\"projectId\\\": [PROJECT], \\r\\n    \\\"status\\\": {\\r\\n        \\\"state\\\": \\\"RUNNING\\\", \\r\\n        \\\"stateStartTime\\\": \\\"2016-10-25T19:06:32.545Z\\\"\\r\\n    }, \\r\\n    \\\"statusHistory\\\": [\\r\\n        {\\r\\n            \\\"state\\\": \\\"CREATING\\\", \\r\\n            \\\"stateStartTime\\\": \\\"2016-10-25T19:04:36.149Z\\\"\\r\\n        }\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n/cc @ryansb @supertom \\r\\n\", \n    \"component_name\": \"gcdataproc\", \n    \"component_raw\": \"gcdataproc\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19446\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"gce\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/google/gc_dataproc.py\", \n    \"summary\": \"This is a resubmission of a PR in ansible-modules-extras: ansible/ansible-modules-extras#3293\\n\\n\\n\\nThis module uses `google-api-python-client` to make requests as opposed to `libcloud` as `libcloud` did not support the Dataproc API at the time of writing this module. The module requires a slightly different profile of information given the switch from `libcloud` to `google-api-python-client` and the nature of the Dataproc API compared to Compute for example.\\n\\n\\n\\nI have removed the explicit parameters (but can add them back in if this seems more like a bug than a simplification) corresponding to  `GCE_EMAIL`, `GCE_PROJECT`, and `GCE_CREDENTIALS_FILE_PATH`\", \n    \"title\": \"Resubmission of dataproc module PR post repo merge\"\n  }, \n  \"19447\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_chocolatey\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nFrom: Ubuntu 16.04\\r\\nTo: Windows 7\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nSome chocolatey packages (e.g. `visualstudio2015community`) take longer than the 2700 sec default timeout. Add execution-timeout support.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```yaml\\r\\n- name: \\\"Compiler: Visual Studio 2015 Community\\\"\\r\\n  win_chocolatey:\\r\\n    name: visualstudio2015community\\r\\n```\\r\\n\\r\\nI would like to be able to specify the execution-timeout:\\r\\n\\r\\n```yaml\\r\\n- name: \\\"Compiler: Visual Studio 2015 Community\\\"\\r\\n  win_chocolatey:\\r\\n    name: visualstudio2015community\\r\\n    execution_timeout: 100000\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nBe able to set the execution-timeout for chocolatey\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nansible-playbook just hangs and never stops even though chocolatey has timed out.\\r\\n\", \n    \"component_name\": \"win_chocolatey\", \n    \"component_raw\": \"win_chocolatey\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19447\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_chocolatey.ps1\", \n    \"summary\": \"Some chocolatey packages (e.g. `visualstudio2015community`) take longer than the 2700 sec default timeout. Add execution-timeout support.\", \n    \"title\": \"Add execution-timeout parameter for win_chocolatey\"\n  }, \n  \"19448\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_chocolatey\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nFixes #19447\\r\\n\\r\\nSome chocolatey packages (e.g. visualstudio2015community) take longer than the 2700 sec default timeout. Add execution-timeout support.\\r\\n \", \n    \"component_name\": \"win_chocolatey\", \n    \"component_raw\": \"win_chocolatey\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19448\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"committer_review\", \n      \"feature\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_chocolatey.ps1\", \n    \"summary\": \"Fixes #19447\\n\\n\\n\\nSome chocolatey packages (e.g. visualstudio2015community) take longer than the 2700 sec default timeout. Add execution-timeout support.\", \n    \"title\": \"win_chocolatey: Add execution-timeout support\"\n  }, \n  \"19450\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"# DO NOT MERGE\\r\\n\\r\\n##### ISSUE TYPE\\r\\n\\r\\n - Feature Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nbecome method pmrun\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nAdds support for a pmrun privilege-escalation/become method based on documented examples.\\r\\n\\r\\n\", \n    \"component_name\": \"become method pmrun\", \n    \"component_raw\": \"become method pmrun\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19450\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:constants\", \n      \"c:playbook/play\", \n      \"c:playbook/play_context\", \n      \"feature\", \n      \"in progress\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Adds support for a pmrun privilege-escalation/become method based on documented examples.\", \n    \"title\": \"[WIP] First draft of prmrun support\"\n  }, \n  \"19451\": {\n    \"ansible_version\": \"New feature - latest\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncontrib/inventory/azure_rm.py\\r\\nlib/ansible/module_utils/azure_rm_common.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nNew feature - latest\\r\\n\\r\\n##### SUMMARY\\r\\nNot all Azure cloud are public azure with endpoint to 'https://management.azure.com/'\\r\\nFor instance:\\r\\n- Azure China: 'https://management.chinacloudapi.cn/'\\r\\n- Gov Azure: 'https://management.usgovcloudapi.net/'\\r\\n- German Azure: 'https://management.microsoftazure.de/'\\r\\n\\r\\nCurrently the azure_rm module provides no possibility to do configure that. This has to be done at two place:\\r\\n- Inside the authentication ServicePrincipalCredentials or UserPassCredentials by adding `resource=\\\"endpoint\\\"\\r\\n- Inside the client by using base_url parameter\\r\\n\\r\\nExample:\\r\\n```python\\r\\nendpoint = 'https://management.usgovcloudapi.net/'\\r\\nself.azure_credentials = UserPassCredentials(\\r\\n    self.credentials['ad_user'],\\r\\n    self.credentials['password'],\\r\\n    resource=endpoint\\r\\n)\\r\\nself._compute_client = ComputeManagementClient(\\r\\n    self.azure_credentials,\\r\\n    self.subscription_id,\\r\\n    base_url=endpoint\\r\\n)\\r\\n```\\r\\n\\r\\nCode MUST check that endpoint is ending with a /, since this is requirement from AD and you will get an invalid token otherwise. Should be done at the SDK level, but it's not done for now, so double-check here is safer.\\r\\n\\r\\nI'll try to do a PR asap, just wanted to track this down.\\r\\n\\r\\n\", \n    \"component_name\": \"contrib/inventory/azure_rm.py\", \n    \"component_raw\": \"contrib/inventory/azure_rm.py\\nlib/ansible/module_utils/azure_rm_common.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19451\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [], \n    \"module_match\": null, \n    \"summary\": \"Not all Azure cloud are public azure with endpoint to 'https://management.azure.com/'\\n\\nFor instance:\\n\\n- Azure China: 'https://management.chinacloudapi.cn/'\\n\\n- Gov Azure: 'https://management.usgovcloudapi.net/'\\n\\n- German Azure: 'https://management.microsoftazure.de/'\\n\\n\\n\\nCurrently the azure_rm module provides no possibility to do configure that. This has to be done at two place:\\n\\n- Inside the authentication ServicePrincipalCredentials or UserPassCredentials by adding `resource=\\\"endpoint\\\"\\n\\n- Inside the client by using base_url parameter\\n\\n\\n\\nExample:\\n\\n```python\\n\\nendpoint = 'https://management.usgovcloudapi.net/'\\n\\nself.azure_credentials = UserPassCredentials(\\n\\n    self.credentials['ad_user'],\\n\\n    self.credentials['password'],\\n\\n    resource=endpoint\\n\\n)\\n\\nself._compute_client = ComputeManagementClient(\\n\\n    self.azure_credentials,\\n\\n    self.subscription_id,\\n\\n    base_url=endpoint\\n\\n)\\n\\n```\\n\\n\\n\\nCode MUST check that endpoint is ending with a /, since this is requirement from AD and you will get an invalid token otherwise. Should be done at the SDK level, but it's not done for now, so double-check here is safer.\\n\\n\\n\\nI'll try to do a PR asap, just wanted to track this down.\", \n    \"title\": \"Add support for Azure multi-cloud\"\n  }, \n  \"19452\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.3.0 @ 00859a4\\nconfig file = ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nec2_eni\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.3.0 @ 00859a4\\r\\n  config file = ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n- defaults in ansible.cfg\\r\\n- uses ec2.py inventory script to get data from AWS (also default configuration in ec2.ini)\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n- OSX 10.11.6\\r\\n- Python 2.7.12\\r\\n\\r\\n##### SUMMARY\\r\\nec2_eni module is called with a specific eni to attach to a specific instance.  Each time that it's called, the invocation arguments being passed to the module look correct, but the response from the module indicates that a new ENI was created with the default settings, and attached to the instance selected. \\r\\n\\r\\nI can confirm that by running the same command directly with the aws cli, that the selected eni gets attached properly.\\r\\n\\r\\nI have been able to pretty consistently reproduce this issue within my playbook, and will try to narrow it down below.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- debug: \\r\\n    msg: \\\"associating {{ansible_ec2_instance_id}} with {{(dest_eni|first).network_interface_id}} in {{ (instance_facts.instances|first).tags.subnet }}\\\" \\r\\n\\r\\n- name: associate selected eni to this instance\\r\\n  connection: local\\r\\n  ec2_eni:\\r\\n    attached: yes\\r\\n    device_index: 1 \\r\\n    region: \\\"{{ region }}\\\"\\r\\n    instance_id: \\\"{{ ansible_ec2_instance_id }}\\\"\\r\\n    eni_id: \\\"{{ (dest_eni|first).network_interface_id }}\\\"\\r\\n    subnet_id: \\\"{{ (instance_facts.instances|first).tags.subnet }}\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nIn the context of the two steps above, I would have expected the instance to have have the eni selected to be added to the instance selected (see actual results below).\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\nAs you can see below, the output of the commands show that instance `i-0669e0aa441a0258b` should be associated with `eni-d14560a9` as in the debug statement, and the module `invocation` arguments.  \\r\\n\\r\\nHowever - the output of the module (the `interface` object) is returned saying that instance `i-0669e0aa441a0258b` is incorrectly given a newly created `eni-398fa941` ENI.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [allocate_eip : debug] *****************************************************************************************************************\\r\\ntask path: roles/allocate_eip/tasks/main.yml:55\\r\\nok: [1.1.1.1] => {\\r\\n    \\\"msg\\\": \\\"associating i-0669e0aa441a0258b with eni-d14560a9 in subnet-43098b27\\\"\\r\\n}\\r\\n\\r\\nTASK [allocate_eip : associate one of the eip's with this instance] *************************************************************************\\r\\ntask path: roles/allocate_eip/tasks/main.yml:61\\r\\nUsing module file /usr/local/Cellar/ansible/HEAD-00859a4_1/libexec/lib/python2.7/site-packages/ansible/modules/cloud/amazon/ec2_eni.py\\r\\n<1.1.1.1> ESTABLISH LOCAL CONNECTION FOR USER: gaieges\\r\\n<1.1.1.1> EXEC /bin/sh -c '/usr/bin/python && sleep 0'\\r\\nUsing module file /usr/local/Cellar/ansible/HEAD-00859a4_1/libexec/lib/python2.7/site-packages/ansible/modules/cloud/amazon/ec2_eni.py\\r\\n<1.1.1.1> ESTABLISH LOCAL CONNECTION FOR USER: gaieges\\r\\n<1.1.1.1> EXEC /bin/sh -c '/usr/bin/python && sleep 0'\\r\\nchanged: [1.1.1.1] => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"interface\\\": {\\r\\n        \\\"attachment\\\": {\\r\\n            \\\"attach_time\\\": \\\"2016-12-16T19:20:48.000Z\\\",\\r\\n            \\\"attachment_id\\\": \\\"eni-attach-6d7b2a02\\\",\\r\\n            \\\"delete_on_termination\\\": false,\\r\\n            \\\"device_index\\\": 1,\\r\\n            \\\"instance_id\\\": \\\"i-0669e0aa441a0258b\\\",\\r\\n            \\\"status\\\": \\\"attached\\\"\\r\\n        },\\r\\n        \\\"description\\\": \\\"\\\",\\r\\n        \\\"groups\\\": {\\r\\n            \\\"sg-83fc17e4\\\": \\\"ssh_everywhere\\\",\\r\\n            \\\"sg-bcfc17db\\\": \\\"indexer\\\"\\r\\n        },\\r\\n        \\\"id\\\": \\\"eni-398fa941\\\",\\r\\n        \\\"mac_address\\\": \\\"02:52:8a:05:9b:13\\\",\\r\\n        \\\"owner_id\\\": \\\"473480\\\",\\r\\n        \\\"private_ip_address\\\": \\\"10.0.10.11\\\",\\r\\n        \\\"private_ip_addresses\\\": [\\r\\n            {\\r\\n                \\\"primary_address\\\": true,\\r\\n                \\\"private_ip_address\\\": \\\"10.0.10.11\\\"\\r\\n            }\\r\\n        ],\\r\\n        \\\"source_dest_check\\\": true,\\r\\n        \\\"status\\\": \\\"in-use\\\",\\r\\n        \\\"subnet_id\\\": \\\"subnet-43098b27\\\",\\r\\n        \\\"vpc_id\\\": \\\"vpc-0dd81f69\\\"\\r\\n    },\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"attached\\\": true,\\r\\n            \\\"aws_access_key\\\": null,\\r\\n            \\\"aws_secret_key\\\": null,\\r\\n            \\\"delete_on_termination\\\": null,\\r\\n            \\\"description\\\": null,\\r\\n            \\\"device_index\\\": 1,\\r\\n            \\\"ec2_url\\\": null,\\r\\n            \\\"eni_id\\\": \\\"eni-d14560a9\\\",\\r\\n            \\\"force_detach\\\": false,\\r\\n            \\\"instance_id\\\": \\\"i-0669e0aa441a0258b\\\",\\r\\n            \\\"private_ip_address\\\": null,\\r\\n            \\\"profile\\\": null,\\r\\n            \\\"region\\\": \\\"ap-southeast-2\\\",\\r\\n            \\\"secondary_private_ip_address_count\\\": null,\\r\\n            \\\"secondary_private_ip_addresses\\\": null,\\r\\n            \\\"security_groups\\\": [\\r\\n                \\\"indexer\\\",\\r\\n                \\\"ssh_everywhere\\\"\\r\\n            ],\\r\\n            \\\"security_token\\\": null,\\r\\n            \\\"source_dest_check\\\": null,\\r\\n            \\\"state\\\": \\\"present\\\",\\r\\n            \\\"subnet_id\\\": \\\"subnet-43098b27\\\",\\r\\n            \\\"validate_certs\\\": true\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"ec2_eni\\\"\\r\\n    }\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"ec2_eni\", \n    \"component_raw\": \"ec2_eni\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19452\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_eni.py\", \n    \"summary\": \"ec2_eni module is called with a specific eni to attach to a specific instance.  Each time that it's called, the invocation arguments being passed to the module look correct, but the response from the module indicates that a new ENI was created with the default settings, and attached to the instance selected. \\n\\n\\n\\nI can confirm that by running the same command directly with the aws cli, that the selected eni gets attached properly.\\n\\n\\n\\nI have been able to pretty consistently reproduce this issue within my playbook, and will try to narrow it down below.\", \n    \"title\": \"ec2_eni module modifying instance to attach different eni than what was requested\"\n  }, \n  \"19453\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\nfiles/archive.\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nThe archive module allows you to pass a glob to the path argument.\\nThis feature allows end users to continue to pass a glob to the path argument,\\nbut enables a new argument to exclude specific dirs, or a glob of dirs in order to prevent\\nunwanted paths from being archived. The idea is to enable similar functionality as the\\n`--exclude=PATTERN` option for the `tar` command.\\n\", \n    \"component_name\": \"files/archive.\", \n    \"component_raw\": \"files/archive.\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19453\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"needs_revision\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/archive.py\", \n    \"summary\": \"The archive module allows you to pass a glob to the path argument.\\nThis feature allows end users to continue to pass a glob to the path argument,\\nbut enables a new argument to exclude specific dirs, or a glob of dirs in order to prevent\\nunwanted paths from being archived. The idea is to enable similar functionality as the\\n`--exclude=PATTERN` option for the `tar` command.\", \n    \"title\": \"Add Ability to Exlude Paths from Archive\"\n  }, \n  \"19456\": {\n    \"ansible_version\": \"[jtang~/develop/ansible] devel(1) 2s  ansible --version\\nansible 2.3.0 (devel a710e6b762) last updated 2016/12/16 203639 (GMT +100)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - New Module Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nlogentries_msg\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n[jtang:~/develop/ansible] devel(1) 2s \\u00b1 ansible --version\\r\\nansible 2.3.0 (devel a710e6b762) last updated 2016/12/16 20:36:39 (GMT +100)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nThis is a resubmission of https://github.com/ansible/ansible-modules-extras/pull/904 which got lost amidst a bunch of changes to how the modules were handled.\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\\r\\n\\r\\n\\u2026extras/pull/904\", \n    \"component_name\": \"logentries_msg\", \n    \"component_raw\": \"logentries_msg\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19456\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/notification/logentries_msg.py\", \n    \"summary\": \"This is a resubmission of https://github.com/ansible/ansible-modules-extras/pull/904 which got lost amidst a bunch of changes to how the modules were handled.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n\\n\\n```\\n\\n\\n\\nextras/pull/904\", \n    \"title\": \"This is a resubmission of https://github.com/ansible/ansible-modules-\\u2026\"\n  }, \n  \"19457\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\nstress\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.2.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nBenchmarking is a field which automation is often sought after. By wrapping these benchmark tools (more to come) as Ansible modules, it enables people to quickly launch benchmarks remotely and at scale. Each benchmark module is formatted with essentially the same boilerplate with specific changes to just the parsing and execution portions. As much of the code is kept the same as possible as to allow adding new benchmarks to be quick and painless.\\n\\nstress is a deliberately simple workload generator for POSIX systems. It imposes a configurable amount of CPU, memory, I/O, and disk stress on the system. \\n\", \n    \"component_name\": \"stress\", \n    \"component_raw\": \"stress\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19457\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/benchmarks/stress.py\", \n    \"summary\": \"Benchmarking is a field which automation is often sought after. By wrapping these benchmark tools (more to come) as Ansible modules, it enables people to quickly launch benchmarks remotely and at scale. Each benchmark module is formatted with essentially the same boilerplate with specific changes to just the parsing and execution portions. As much of the code is kept the same as possible as to allow adding new benchmarks to be quick and painless.\\n\\nstress is a deliberately simple workload generator for POSIX systems. It imposes a configurable amount of CPU, memory, I/O, and disk stress on the system.\", \n    \"title\": \"Stress module\"\n  }, \n  \"19459\": {\n    \"ansible_version\": \"ansible 2.3.0 (ec2_asg_add_aws_retry 4867add4ad) last updated 2016/12/17 000325 (GMT +300)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Feature Pull Request\\r\\n##### COMPONENT NAME\\r\\n\\r\\nec2_asg\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 (ec2_asg_add_aws_retry 4867add4ad) last updated 2016/12/17 00:03:25 (GMT +300)\\r\\n```\\r\\n##### SUMMARY\\r\\n\\r\\nUpdated ec2_asg to use the AWSRetry.decorator.\\r\\n\\r\\nI also fixed deleting notification topics from an autoscaling group that is being deleted.\\r\\n\\r\\nNote that this was migrated manually from https://github.com/ansible/ansible-modules-core/pull/5242 which I wasn't able to migrate automatically.\", \n    \"component_name\": \"ec2_asg\", \n    \"component_raw\": \"ec2_asg\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19459\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"committer_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_asg.py\", \n    \"summary\": \"Updated ec2_asg to use the AWSRetry.decorator.\\n\\n\\n\\nI also fixed deleting notification topics from an autoscaling group that is being deleted.\\n\\n\\n\\nNote that this was migrated manually from https://github.com/ansible/ansible-modules-core/pull/5242 which I wasn't able to migrate automatically.\", \n    \"title\": \"ec2_asg: Add AWSRetry decorator to AWS calls\"\n  }, \n  \"19460\": {\n    \"ansible_version\": \"2.2.1\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n - Feature Idea\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nsynchronize\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n2.2.1\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"synchronize\", \n    \"component_raw\": \"synchronize\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19460\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"bug\", \n      \"c:galaxy/\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/synchronize.py\", \n    \"summary\": \"\", \n    \"title\": \"TRIAGE TEST\"\n  }, \n  \"19463\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \" - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible/modules/extras/packaging/os/macports.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nOSX El Capitan\\r\\n\\r\\n##### SUMMARY\\r\\nIf the port \\\"gsettings-desktop-schemas\\\" is installed, then check for present state of package \\\"mas\\\" gives wrong result.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nFirst install package gsettings-desktop-schemas e.g. manually.\\r\\n      sudo port install gsettings-desktop-schemas\\r\\n\\r\\nSecond make sure package mas is not installed.\\r\\n      sudo port uninstall mas\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- name: install port packages\\r\\n  become: true\\r\\n  macports: name=mas state=present\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nmacport package mas should be installed\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nmacport package is not  installed\\r\\n\\r\\n##### FIX\\r\\nLine 72:\\r\\nrc, out, err = module.run_command(\\\"%s installed | grep -q ^.*%s\\\" % (pipes.quote(port_path), pipes.quote(name)), use_unsafe_shell=True)\\r\\n\\r\\nregular expression should be changed to:  '^ *%s '\", \n    \"component_name\": \"ansible/modules/extras/packaging/os/macports.py\", \n    \"component_raw\": \"ansible/modules/extras/packaging/os/macports.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19463\", \n    \"issue_type\": null, \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"waiting_on_maintainer\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/macports.py\", \n    \"summary\": \"If the port \\\"gsettings-desktop-schemas\\\" is installed, then check for present state of package \\\"mas\\\" gives wrong result.\", \n    \"title\": \"macports present test not reliable\"\n  }, \n  \"19465\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodules/notification/telegram.py\\r\\n\\r\\n##### SUMMARY\\r\\nhttps://core.telegram.org/bots/api\\r\\n\\r\\n**parse_mode**\\r\\n\\r\\nSend Markdown or HTML, if you want Telegram apps to show bold, italic, fixed-width text or inline URLs in your bot's message.\\r\\n\", \n    \"component_name\": \"s/notification/telegram.py\", \n    \"component_raw\": \"modules/notification/telegram.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19465\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/notification/telegram.py\", \n    \"summary\": \"https://core.telegram.org/bots/api\\n\\n\\n\\n**parse_mode**\\n\\n\\n\\nSend Markdown or HTML, if you want Telegram apps to show bold, italic, fixed-width text or inline URLs in your bot's message.\", \n    \"title\": \"Add Telegram API parse_mode option to modules/notification/telegram.py\"\n  }, \n  \"19466\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nredhat_subscription\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nRHEL 7.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nredhat_subscription manager is overloading the value type of the original subscription manager.  This causes confusion and over-consumption of entitlements.\\r\\n\\r\\nThe official Red Hat Subscription Manager allows attaching subscriptions by Pool ID, NOT by Pool Name.\\r\\n```\\r\\n[root@rhel7 ~]# subscription-manager attach --help\\r\\nUsage: subscription-manager attach [OPTIONS]\\r\\n\\r\\nAttach a specified subscription to the registered system\\r\\n\\r\\nOptions:\\r\\n  -h, --help            show this help message and exit\\r\\n  --proxy=PROXY_URL     proxy URL in the form of proxy_hostname:proxy_port\\r\\n  --proxyuser=PROXY_USER\\r\\n                        user for HTTP proxy with basic authentication\\r\\n  --proxypassword=PROXY_PASSWORD\\r\\n                        password for HTTP proxy with basic authentication\\r\\n  --pool=POOL           the ID of the pool to attach (can be specified more\\r\\n                        than once)\\r\\n  --quantity=QUANTITY   number of subscriptions to attach\\r\\n  --auto                Automatically attach compatible subscriptions to this\\r\\n                        system. This is the default action.\\r\\n  --servicelevel=SERVICE_LEVEL\\r\\n                        service level to apply to this system\\r\\n  --file=FILE           A file from which to read pool IDs. If a hyphen is\\r\\n                        provided, pool IDs will be read from stdin.\\r\\n[root@rhel7 ~]# \\r\\n```\\r\\n\\r\\nBecause this module is allowing a user to specify a name and trying to do its own logic and parsing of available Pool IDs, it is incorrectly attempting to extend the capabilities of the official subscription manager.  It also does it poorly, allowing multiple subscriptions to be consumed when they were not desired.\\r\\n\\r\\nLarge customers will have many duplicate subscriptions of the same name due to growth and purchases made at different times.  This could have a very large impact to large customers.\\r\\n\\r\\nThe feature to enable using the Pool ID is a good start, but we also must remove the capability of adding by Name.  This Ansible module should not attempt to do more than the original tool allows.\\r\\nhttps://github.com/ansible/ansible-modules-core/pull/4603\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- redhat_subscription:\\r\\n    state: present\\r\\n    username: \\\"{{ rhn_username }}\\\"\\r\\n    password: \\\"{{ rhn_password }}\\\"\\r\\n    pool: '^Employee SKU$'\\r\\n#    pool: \\\"{{ POOL_ID }}\\\"\\r\\n  when: ansible_distribution == 'RedHat'\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nOnly a single Pool ID attached, presumably the first one matched.  But certainly not ALL matches.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nI have altered the values below to protect our actual Pool IDs (XXX, YYY, ZZZ).  I can provide actual examples privately.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n<util7vm> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r -tt util7vm '/bin/sh -c '\\\"'\\\"'sudo -H -S -n -u root /bin/sh -c '\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'echo BECOME-SUCCESS-pyeuamdvwtzvyzuxvbczhjotjfyacqxn; /usr/bin/python /root/.ansible/tmp/ansible-tmp-1481978149.12-197063747409681/redhat_subscription.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1481978149.12-197063747409681/\\\" > /dev/null 2>&1'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"' && sleep 0'\\\"'\\\"''\\r\\nchanged: [util7vm] => {\\r\\n    \\\"changed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"activationkey\\\": null, \\r\\n            \\\"autosubscribe\\\": false, \\r\\n            \\\"consumer_id\\\": null, \\r\\n            \\\"consumer_name\\\": null, \\r\\n            \\\"consumer_type\\\": null, \\r\\n            \\\"environment\\\": null, \\r\\n            \\\"force_register\\\": false, \\r\\n            \\\"org_id\\\": null, \\r\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n            \\\"pool\\\": \\\"^Employee SKU$\\\", \\r\\n            \\\"rhsm_baseurl\\\": \\\"https://cdn.redhat.com\\\", \\r\\n            \\\"server_hostname\\\": \\\"subscription.rhn.redhat.com\\\", \\r\\n            \\\"server_insecure\\\": \\\"0\\\", \\r\\n            \\\"state\\\": \\\"present\\\", \\r\\n            \\\"username\\\": \\\"my-rhn-support-username\\\"\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"redhat_subscription\\\"\\r\\n    }, \\r\\n    \\\"subscribed_pool_ids\\\": [\\r\\n        \\\"XXXXXXXXXXXXXXXXXXXXXXXXXXX\\\",   \\r\\n        \\\"YYYYYYYYYYYYYYYYYYYYYYYY\\\", \\r\\n        \\\"ZZZZZZZZZZZZZZZZZZZZZZZZZZZ\\\"\\r\\n    ], \\r\\n    \\\"unsubscribed_serials\\\": []\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nutil7vm                    : ok=2    changed=1    unreachable=0    failed=0   \\r\\n```\", \n    \"component_name\": \"redhat_subscription\", \n    \"component_raw\": \"redhat_subscription\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19466\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"waiting_on_maintainer\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/redhat_subscription.py\", \n    \"summary\": \"redhat_subscription manager is overloading the value type of the original subscription manager.  This causes confusion and over-consumption of entitlements.\\n\\n\\n\\nThe official Red Hat Subscription Manager allows attaching subscriptions by Pool ID, NOT by Pool Name.\\n\\n```\\n\\n[root@rhel7 ~]# subscription-manager attach --help\\n\\nUsage: subscription-manager attach [OPTIONS]\\n\\n\\n\\nAttach a specified subscription to the registered system\\n\\n\\n\\nOptions:\\n\\n  -h, --help            show this help message and exit\\n\\n  --proxy=PROXY_URL     proxy URL in the form of proxy_hostname:proxy_port\\n\\n  --proxyuser=PROXY_USER\\n\\n                        user for HTTP proxy with basic authentication\\n\\n  --proxypassword=PROXY_PASSWORD\\n\\n                        password for HTTP proxy with basic authentication\\n\\n  --pool=POOL           the ID of the pool to attach (can be specified more\\n\\n                        than once)\\n\\n  --quantity=QUANTITY   number of subscriptions to attach\\n\\n  --auto                Automatically attach compatible subscriptions to this\\n\\n                        system. This is the default action.\\n\\n  --servicelevel=SERVICE_LEVEL\\n\\n                        service level to apply to this system\\n\\n  --file=FILE           A file from which to read pool IDs. If a hyphen is\\n\\n                        provided, pool IDs will be read from stdin.\\n\\n[root@rhel7 ~]# \\n\\n```\\n\\n\\n\\nBecause this module is allowing a user to specify a name and trying to do its own logic and parsing of available Pool IDs, it is incorrectly attempting to extend the capabilities of the official subscription manager.  It also does it poorly, allowing multiple subscriptions to be consumed when they were not desired.\\n\\n\\n\\nLarge customers will have many duplicate subscriptions of the same name due to growth and purchases made at different times.  This could have a very large impact to large customers.\\n\\n\\n\\nThe feature to enable using the Pool ID is a good start, but we also must remove the capability of adding by Name.  This Ansible module should not attempt to do more than the original tool allows.\\n\\nhttps://github.com/ansible/ansible-modules-core/pull/4603\", \n    \"title\": \"redhat_subscription should not allow attaching subscriptions by name\"\n  }, \n  \"19469\": {\n    \"ansible_version\": \"2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nansible-galaxy\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.2.0.0\\r\\n```\\r\\n\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nansible-galaxy can't install roles in a requirements file from a custom source, if that role has a 'role' attribute, error is ` [WARNING]: - my_github_demo_role was NOT installed successfully: Role has no field named u'owner`\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```shell\\r\\ncat << EOF > requirements.yml\\r\\n- role: my_github_demo_role\\r\\n  src: https://github.com/silpion/ansible-lib.git\\r\\nEOF\\r\\nansible-galaxy install --force -r requirements.yml\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n```\\r\\n- extracting my_github_demo_role to /tmp/fasfasfasfas/roles/my_github_demo_role\\r\\n- my_github_demo_role was installed successfully\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\n[DEPRECATION WARNING]: The comma separated role spec format, use the yaml/explicit format instead..\\r\\nThis feature will be removed in a future release. Deprecation warnings can be disabled by setting deprecation_warnings=False in \\r\\nansible.cfg.\\r\\n- downloading role 'my_github_demo_role', owned by \\r\\n [WARNING]: - my_github_demo_role was NOT installed successfully: Role has no field named u'owner'\\r\\n\\r\\nERROR! - you can use --ignore-errors to skip failed roles and finish processing the list\\r\\n```\\r\\n\\r\\nThis error does not occur when the role in the requirements file doesn't have a `role` attribute.\\r\\nIt seems like ansible-galaxy tries to talk the galaxy api if it finds roles with the `role` attribute.\\r\\n\\r\\nInstead, ansible-galaxy should try to talk to the galaxy api only if a role does not have a `src` attribute.\\r\\n\\r\\nThe current behaviour is counterintuitive at best.\", \n    \"component_name\": \"ansible-galaxy\", \n    \"component_raw\": \"ansible-galaxy\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19469\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"ansible-galaxy can't install roles in a requirements file from a custom source, if that role has a 'role' attribute, error is ` [WARNING]: - my_github_demo_role was NOT installed successfully: Role has no field named u'owner`\", \n    \"title\": \"ansible-galaxy can't install roles in a requirements file from a custom source if that role has the 'role' attribute\"\n  }, \n  \"19470\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @opoplawski on September 28, 2016 16:2_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Feature Idea\\n##### COMPONENT NAME\\n\\npacakge\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### OS / ENVIRONMENT\\n\\nFedora\\n##### SUMMARY\\n\\nThe package module should have the ability to update the package system cache\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5079_\", \n    \"component_name\": \"pacakge\", \n    \"component_raw\": \"pacakge\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19470\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/package.py\", \n    \"summary\": \"The package module should have the ability to update the package system cache\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5079_\", \n    \"title\": \"package module: Add update_cache option\"\n  }, \n  \"19471\": {\n    \"ansible_version\": null, \n    \"body\": \"##### Issue Type:\\n- Feature Pull Request\\n##### Plugin Name:\\n\\nnmcli\\n##### Summary:\\n\\nAllow setting ipv4.dhcp-client-id parameter for an interface.  Fixes #1523\\n##### Example:\\n\\n```\\n- name: Configure dhcp-client-id for CORA network\\n  nmcli: state=present type=ethernet conn_name=CORA dhcp_client_id={{ ansible_fqdn }}\\n  tags: network\\n```\\n\", \n    \"component_name\": \"nmcli\", \n    \"component_raw\": \":\\nnmcli\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19471\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"feature\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nmcli.py\", \n    \"summary\": \":\\n\\nAllow setting ipv4.dhcp-client-id parameter for an interface.  Fixes #1523\\n##### Example:\\n\\n```\\n- name: Configure dhcp-client-id for CORA network\\n  nmcli: state=present type=ethernet conn_name=CORA dhcp_client_id={{ ansible_fqdn }}\\n  tags: network\\n```\", \n    \"title\": \"Allow setting ipv4.dhcp-client-id parameter\"\n  }, \n  \"19472\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ninclude_role:\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\ninclude_role: inside a block: does not work with when: crashes when starting to execute the included role.\\r\\nIf I remove the external when: clause, everything works fine.\\r\\n\\r\\n(this is a re-submition of #19085 which was incorrectly closed)\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\ncalling script:\\r\\n```\\r\\n- block:\\r\\n    - include_role:\\r\\n          name: \\\"ansible-lib--infra/v1/ez123--moodle-moosh\\\"\\r\\n          static:  no\\r\\n          private: yes\\r\\n      when: (zzz_moodle__skip__moosh is not defined) or (not (zzz_moodle__skip__moosh |bool))\\r\\n```\\r\\non the included role, under tasks/main.yml\\r\\n```\\r\\n- name: \\\"check if moosh is already installed (1)\\\"\\r\\n  command: \\\"./moosh --help\\\"\\r\\n  args:\\r\\n    chdir: \\\"{{ ez123_moosh__bin_dir }}\\\"\\r\\n  register: _X_moosh_ver_0\\r\\n  changed_when: false\\r\\n  failed_when: false\\r\\n```\\r\\n##### EXPECTED RESULTS\\r\\nThere should be no error/crash.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nTASK [ansible-lib--infra/v1/ez123--moodle-moosh : check if moosh is already installed (1)] ***\\r\\ntask path: /etc/ansible/roles.glx/ansible-lib--infra/v1/ez123--moodle-moosh/tasks/main.yml:4\\r\\nfatal: [host000000]: FAILED! => {\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"msg\\\": \\\"The conditional check '{' failed. The error was: template error while templating string: unexpected '%'. String: {% if ( %} True {% else %} False {% endif %}\\\\n\\\\nThe error appears to have been in '/opt/src/ansible/dom/roles/dom-roles/func/tasks/main.yml': line 4, column 7, but may\\\\nbe elsewhere in the file depending on the exact syntax problem.\\\\n\\\\nThe offending line appears to be:\\\\n\\\\n- block:\\\\n    - include_role:\\\\n      ^ here\\\\n\\\"\\r\\n}```\\r\\n\", \n    \"component_name\": \"include_role\", \n    \"component_raw\": \"include_role:\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19472\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/include_role.py\", \n    \"summary\": \"include_role: inside a block: does not work with when: crashes when starting to execute the included role.\\n\\nIf I remove the external when: clause, everything works fine.\\n\\n\\n\\n(this is a re-submition of #19085 which was incorrectly closed)\", \n    \"title\": \"include_role: inside a block: does not work with when: (even for non-string condition) \"\n  }, \n  \"19475\": {\n    \"ansible_version\": \"ansible 2.1.0 (devel 3c3061378b) last updated 2016/04/18 195238 (GMT +1100)\\nlib/ansible/modules/core (detached HEAD 5409ed1b28) last updated 2016/04/18 195251 (GMT +1100)\\nlib/ansible/modules/extras (detached HEAD 3afe117730) last updated 2016/04/18 195303 (GMT +1100)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\nportenforce\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.0 (devel 3c3061378b) last updated 2016/04/18 19:52:38 (GMT +1100)\\n  lib/ansible/modules/core: (detached HEAD 5409ed1b28) last updated 2016/04/18 19:52:51 (GMT +1100)\\n  lib/ansible/modules/extras: (detached HEAD 3afe117730) last updated 2016/04/18 19:53:03 (GMT +1100)\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nThis module allows the user to define whitelists for TCP and/or UDP ports that a host is allowed to have processes listening on, killing processes that are listening on a port not in the whitelist. This is designed to be a small component in a larger offensive security Ansible setup.\\n\", \n    \"component_name\": \"portenforce\", \n    \"component_raw\": \"portenforce\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19475\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/portenforce.py\", \n    \"summary\": \"This module allows the user to define whitelists for TCP and/or UDP ports that a host is allowed to have processes listening on, killing processes that are listening on a port not in the whitelist. This is designed to be a small component in a larger offensive security Ansible setup.\", \n    \"title\": \"Added portenforce module\"\n  }, \n  \"19477\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\niptables module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nAdd check mode support for flush and policy command. Fix #19476 issue (Iptables module make policy and flush changes in check mode)\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n\\r\\n\", \n    \"component_name\": \"iptables\", \n    \"component_raw\": \"iptables module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19477\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/iptables.py\", \n    \"summary\": \"Add check mode support for flush and policy command. Fix #19476 issue (Iptables module make policy and flush changes in check mode)\", \n    \"title\": \"iptables module make policy and flush changes in check mode: fix #19476\"\n  }, \n  \"19478\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [/srv/web/infra/ansible/library /usr/share/ansible]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncommand module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = ['/srv/web/infra/ansible/library', '/usr/share/ansible']\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nRHEL 7 managing RHEL 7\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nIn Fedora we use the command module and check its output to see if certain things need to be changed regarding kerberos:\\r\\nhttps://infrastructure.fedoraproject.org/cgit/ansible.git/tree/roles/keytab/service/tasks/main.yml#n49\\r\\n\\r\\nSince ansible seems to use the user's locale when running the commands, checking the output fails if it is not an English locale but for example German.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```\\r\\n$ ansible -m command -a \\\"printenv LANG\\\" localhost\\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n\\r\\nlocalhost | SUCCESS | rc=0 >>\\r\\nde_DE.UTF-8\\r\\n$ LANG=C ansible -m command -a \\\"printenv LANG\\\" localhost\\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n\\r\\nlocalhost | SUCCESS | rc=0 >>\\r\\nC\\r\\n\\r\\n$ LANG=C ansible -m command -a \\\"printenv LANG\\\" centos6test\\r\\ncentos6test | SUCCESS | rc=0 >>\\r\\nC\\r\\n\\r\\n$ ansible -m command -a \\\"printenv LANG\\\" centos6test\\r\\ncentos6test | SUCCESS | rc=0 >>\\r\\nde_DE.UTF-8\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe command environment should not depend on the users environment as documented. Otherwise it should be clearly documented, but then the command module should also allow to specify values for the affected environment to make sure that there are no side effects from the user running a playbook.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nIt seems that ansible explicitly sets the locale on the target machine to the user's locale...\\r\\n```\\r\\n$ ansible -vvvv -m command -a \\\"printenv LANG\\\" centos6test\\r\\nUsing /etc/ansible/ansible.cfg as config file\\r\\nLoaded callback minimal of type stdout, v2.0\\r\\n<centos6test> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<centos6test> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/till/.ansible/cp/ansible-ssh-%C -tt centos6test '/bin/sh -c '\\\"'\\\"'( umask 22 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1482055880.26-122303795708877 `\\\" && echo \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1482055880.26-122303795708877 `\\\" )'\\\"'\\\"''\\r\\n<centos6test> PUT /tmp/tmpoaOUrx TO /root/.ansible/tmp/ansible-tmp-1482055880.26-122303795708877/command\\r\\n<centos6test> SSH: EXEC sftp -b - -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/till/.ansible/cp/ansible-ssh-%C '[centos6test]'\\r\\n<centos6test> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<centos6test> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/till/.ansible/cp/ansible-ssh-%C -tt centos6test '/bin/sh -c '\\\"'\\\"'LANG=de_DE.UTF-8 LC_ALL=de_DE.UTF-8 LC_MESSAGES=de_DE.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1482055880.26-122303795708877/command; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1482055880.26-122303795708877/\\\" > /dev/null 2>&1'\\\"'\\\"''\\r\\ncentos6test | SUCCESS | rc=0 >>\\r\\nde_DE.UTF-8\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"command\", \n    \"component_raw\": \"command module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19478\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"docs_report\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/commands/command.py\", \n    \"summary\": \"In Fedora we use the command module and check its output to see if certain things need to be changed regarding kerberos:\\n\\nhttps://infrastructure.fedoraproject.org/cgit/ansible.git/tree/roles/keytab/service/tasks/main.yml#n49\\n\\n\\n\\nSince ansible seems to use the user's locale when running the commands, checking the output fails if it is not an English locale but for example German.\", \n    \"title\": \"ansible command module uses users's locale but states it is not affected by user's environment\"\n  }, \n  \"19479\": {\n    \"ansible_version\": \"ansible 2.0.0.1\", \n    \"body\": \"Original PR: https://github.com/ansible/ansible-modules-core/pull/3389\\r\\nAll credit should go to @h00dy (https://github.com/h00dy),\\r\\nI merely rebased his changes and requested pull to appropriate repo.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nsupervisorctl module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.0.0.1\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdd support for `all` pseudogroup, so that the following command would restart all supervised programs as expected:\\r\\n```\\r\\nansible -m supervisorctl -a 'name=all state=restarted'\\r\\n ```\", \n    \"component_name\": \"supervisorctl\", \n    \"component_raw\": \"supervisorctl module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19479\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/web_infrastructure/supervisorctl.py\", \n    \"summary\": \"Add support for `all` pseudogroup, so that the following command would restart all supervised programs as expected:\\n\\n```\\n\\nansible -m supervisorctl -a 'name=all state=restarted'\\n\\n ```\", \n    \"title\": \"Add support for supervisorctl `all` pseudogroup\"\n  }, \n  \"19480\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 48dee1b6d0) last updated 2016/12/18 104614 (GMT -300)\", \n    \"body\": \"Since proxmox 4.4 it's possible to create unprivileged containers.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nproxmox\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 (devel 48dee1b6d0) last updated 2016/12/18 10:46:14 (GMT -300)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdd 'unprivileged container' support to proxmox module\\r\\n\\r\\n\", \n    \"component_name\": \"proxmox\", \n    \"component_raw\": \"proxmox\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19480\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/misc/proxmox.py\", \n    \"summary\": \"Add 'unprivileged container' support to proxmox module\", \n    \"title\": \"Add 'unprivileged container' support to proxmox module\"\n  }, \n  \"19481\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\nBugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nproxmox\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n2.3\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nthis PR fixes #19480 (adding unprivileged container support to proxmox module)\\r\\n\", \n    \"component_name\": \"proxmox\", \n    \"component_raw\": \"proxmox\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19481\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"community_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/misc/proxmox.py\", \n    \"summary\": \"this PR fixes #19480 (adding unprivileged container support to proxmox module)\", \n    \"title\": \"Add unprivileged container support\"\n  }, \n  \"19485\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\n- Bugfix Pull Request\\n- Docs Pull Request\\n##### COMPONENT NAME\\n\\nsource_control/git.py\\n##### SUMMARY\\n\\nDocument the git module return values `after` and `before`\\nFix #5379 \\n\", \n    \"component_name\": \"source_control/git.py\", \n    \"component_raw\": \"source_control/git.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19485\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"needs_revision\"\n    ], \n    \"module_match\": \"lib/ansible/modules/source_control/git.py\", \n    \"summary\": \"Document the git module return values `after` and `before`\\nFix #5379\", \n    \"title\": \"Document git module return values\"\n  }, \n  \"19487\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nI can currently create containers with\\nproxmox vmid=$CT_NUMBER node=$NODE api_user=david@pam api_password=redacted api_host=$API_HOST password=$CT_PASS hostname=$HOSTNAME storage=redacted ostemplate=especificosvztmpl/debian-8.0-standard_8.4-1_amd64.tar.gz\\nItd be lovely to avoid having to manually attach to the new containers to add the pubkey before continuing with the process.\\n_Copied from original issue ansible/ansible-modules-extras2897_\", \n    \"body\": \"_From @DavidVentura on September 11, 2016 23:28_\\n\\nSince proxmox 4.2 it's possible to create containers with a pre-defined public key to allow ssh access as root.\\n##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nproxmox\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.0.0\\n\\n```\\n\\nI can currently create containers with\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\nproxmox: vmid=$CT_NUMBER node='$NODE' api_user='david@pam' api_password='redacted' api_host='$API_HOST' password='$CT_PASS' hostname='$HOSTNAME' storage='redacted' ostemplate='especificos:vztmpl/debian-8.0-standard_8.4-1_amd64.tar.gz'\\n```\\n\\nIt'd be lovely to avoid having to manually attach to the new containers to add the pubkey before continuing with the process.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#2897_\", \n    \"component_name\": \"proxmox\", \n    \"component_raw\": \"proxmox\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19487\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"cloud\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/misc/proxmox.py\", \n    \"summary\": null, \n    \"title\": \"Add public key support to proxmox module\"\n  }, \n  \"19488\": {\n    \"ansible_version\": null, \n    \"body\": \"_From @jdsilberzahn on March 4, 2016 12:47_\\n\\nPlugin name: proxmox\\n\\nwhen using netif / ip_address with LXC containers (pve 4), it results in a 400 Bad Request Error\\n\\nQuick and dirty workaround:\\n- task call : netif='name=eth0,hwaddr=52:4A:5E:26:58:D8,ip=192.168.15.147/24,gw=192.168.15.1,bridge=vmbr0'\\n- in proxmox.py (ligne 349 - create_instance) :                       net0 = module.params['netif'],\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#1789_\", \n    \"component_name\": \"proxmox\", \n    \"component_raw\": \": proxmox\\nwhen using netif / ip_address with LXC containers (pve 4), it results in a 400 Bad Request Error\\nQuick and dirty workaround:\\n- task call : netif='name=eth0,hwaddr=52:4A:5E:26:58:D8,ip=192.168.15.147/24,gw=192.168.15.1,bridge=vmbr0'\\n- in proxmox.py (ligne 349 - create_instance) :                       net0 = module.params['netif'],\\n_Copied from original issue: ansible/ansible-modules-extras#1789_\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19488\", \n    \"issue_type\": null, \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"module\", \n      \"waiting_on_maintainer\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/misc/proxmox.py\", \n    \"summary\": null, \n    \"title\": \"Proxmox : netif and ip_address incompatible with proxmox 4.0\"\n  }, \n  \"19489\": {\n    \"ansible_version\": \"2.2\", \n    \"body\": \"##### ISSUE TYPE\\n- Bugfix Pull Request\\n##### COMPONENT NAME\\n\\nsts_session_token\\n##### ANSIBLE VERSION\\n\\n2.2\\n##### SUMMARY\\n\\nThis module was merged quickly before I could review.\\n\\nThis PR just changes the return values to match boto3 as we want to keep values closely aligned to the API.  It also uses the helper function camel_dict_to_snake_dict to keep code DRY.\\n\\nAlso fixed the exception handling for AWS ClientError\\n\", \n    \"component_name\": \"sts_session_token\", \n    \"component_raw\": \"sts_session_token\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19489\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"committer_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/sts_session_token.py\", \n    \"summary\": \"This module was merged quickly before I could review.\\n\\nThis PR just changes the return values to match boto3 as we want to keep values closely aligned to the API.  It also uses the helper function camel_dict_to_snake_dict to keep code DRY.\\n\\nAlso fixed the exception handling for AWS ClientError\", \n    \"title\": \"Minor sts_session_token fixes aligning more closely to boto3 api\"\n  }, \n  \"19491\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\nelb_application_lb\\n##### ANSIBLE VERSION\\n\\n2.3\\n##### SUMMARY\\n\\nNew module for AWS application ELBs.  I have broken with naming convention compared to the classic elb module ec2_elb_lb because ELB is actually a separate part of boto3 and not part of ec2.  I suggest we rename ec2_elb_lb to elb_classic_lb.\\n\\nI have also not attempted to merge classic and application load balancers in to one module because they are again separate in boto3 API and operate different enough to warrant two modules.\\n\\nThe module is currently unfinished.  I know there are bugs and modification of listeners doesn't work properly at the moment either but i have created the PR to get some feedback from the community as I imagine this module is probably quite sought after.\\n\", \n    \"component_name\": \"elb_application_lb\", \n    \"component_raw\": \"elb_application_lb\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19491\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/elb_application_lb.py\", \n    \"summary\": \"New module for AWS application ELBs.  I have broken with naming convention compared to the classic elb module ec2_elb_lb because ELB is actually a separate part of boto3 and not part of ec2.  I suggest we rename ec2_elb_lb to elb_classic_lb.\\n\\nI have also not attempted to merge classic and application load balancers in to one module because they are again separate in boto3 API and operate different enough to warrant two modules.\\n\\nThe module is currently unfinished.  I know there are bugs and modification of listeners doesn't work properly at the moment either but i have created the PR to get some feedback from the community as I imagine this module is probably quite sought after.\", \n    \"title\": \"New module = elb_application_lb\"\n  }, \n  \"19492\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\nelb_target_group\\n##### ANSIBLE VERSION\\n\\n2.3\\n##### SUMMARY\\n\\nA new module for AWS elastic load balancer target groups.  Goes well with my other PR for ec2_application_lb.\\n\\nUnfinished but eager to get some feedback from the community.\\n\", \n    \"component_name\": \"elb_target_group\", \n    \"component_raw\": \"elb_target_group\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19492\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/elb_target_group.py\", \n    \"summary\": \"A new module for AWS elastic load balancer target groups.  Goes well with my other PR for ec2_application_lb.\\n\\nUnfinished but eager to get some feedback from the community.\", \n    \"title\": \"New module = elb_target_group\"\n  }, \n  \"19495\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\nI don't see any issue reported similar to this.\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nvsphere_guest\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.1.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n[defaults]\\r\\ninventory      = /etc/ansible/hosts\\r\\nremote_tmp     = $HOME/.ansible/tmp\\r\\npattern        = *\\r\\nforks          = 5\\r\\npoll_interval  = 15\\r\\nsudo_user      = root\\r\\ntransport      = smart\\r\\nmodule_lang    = C\\r\\ngathering = smart\\r\\nroles_path    = $HOME\\r\\nsudo_exe = sudo\\r\\ntimeout = 10\\r\\nansible_managed = Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host}\\r\\naction_plugins     = /usr/share/ansible_plugins/action_plugins\\r\\ncallback_plugins   = /usr/share/ansible_plugins/callback_plugins\\r\\nconnection_plugins = /usr/share/ansible_plugins/connection_plugins\\r\\nlookup_plugins     = /usr/share/ansible_plugins/lookup_plugins\\r\\nvars_plugins       = /usr/share/ansible_plugins/vars_plugins\\r\\nfilter_plugins     = /usr/share/ansible_plugins/filter_plugins\\r\\nfact_caching = memory\\r\\nretry_files_enabled = False\\r\\n[privilege_escalation]\\r\\n[paramiko_connection]\\r\\n[ssh_connection]\\r\\nssh_args = -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no  -o ControlMaster=auto -o ControlPersist=60s\\r\\npipelining = false\\r\\n[accelerate]\\r\\naccelerate_port = 5099\\r\\naccelerate_timeout = 30\\r\\naccelerate_connect_timeout = 5.0\\r\\naccelerate_daemon_timeout = 1\\r\\n[selinux]\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nRed Hat Enterprise Linux Server release 6.7 (Santiago)\\r\\n2.6.32-573.22.1.el6.x86_64\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWe have a playbook that provision a VM. We run this from Ansible tower.\\r\\nIt works on ESXi 5 but fails on ESXi 6.\\r\\nWe tried to hard code the datastore but still same error.\\r\\nOpened issue previously to ansible-modules-core:\\r\\nhttps://github.com/ansible/ansible-modules-core/issues/5718#issuecomment-262686804\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nUse vsphere_guest module to create VM. Use iso to boot from.\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\nThis the play where it failed. This play is run from a role that we created.\\r\\n   - name: Creating VM\\r\\n     vsphere_guest:\\r\\n      vcenter_hostname: \\\"{{env}}\\\"\\r\\n      username: \\\"{{user_name}}\\\"\\r\\n      password: \\\"{{password}}\\\"\\r\\n      guest: \\\"{{item.0}}\\\"\\r\\n      state: powered_on\\r\\n      vm_extra_config:\\r\\n       vcpu.hotadd: yes\\r\\n       mem.hotadd:  yes\\r\\n      vm_disk:\\r\\n        disk1:\\r\\n         size_gb: 70\\r\\n         type: thin\\r\\n         datastore: \\\"ESX_PRD_VIDEO_APP_Green_DP0_DS1\\\"\\r\\n      vm_nic:\\r\\n        nic1:\\r\\n         type: vmxnet3\\r\\n         network: \\\"{{vlan_prefix}}130\\\"\\r\\n         network_type: dvs\\r\\n      vm_hardware:\\r\\n       memory_mb: \\\"{{item.1}}\\\"\\r\\n       num_cpus: \\\"{{item.2}}\\\"\\r\\n       osid: centos64Guest\\r\\n       scsi: paravirtual\\r\\n       vm_cdrom:\\r\\n        type: \\\"iso\\\"\\r\\n        iso_path: \\\"{{isods}}/ISOs/kdc-auto-build.{{item.0}}.iso\\\"\\r\\n      esxi:\\r\\n       datacenter: \\\"{{datacenter}}\\\"\\r\\n       hostname: \\\"{{esx_server.stdout}}\\\"\\r\\n      validate_certs: False\\r\\n     register: vm_create\\r\\n     with_together:\\r\\n       - \\\"{{server_name}}.ds.acc.co.nz\\\"\\r\\n       - \\\"{{memory}}\\\"\\r\\n       - \\\"{{cpu}}\\\"\\r\\n```\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nIt should create the VM and boot from ISO.\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nIt failed and the error is the datastore does not exist.\\r\\n\\\"msg\\\": \\\"Datastore: ESX_PRD_VIDEO_APP_Green_DP0_DS1 does not appear to exist\\\"}\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [vm-provision : Creating VM] **********************************************\\r\\ntask path: /var/lib/awx/projects/vm-provision-project-test/roles/vm-provision/tasks/create-vm.yml:16\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: ansible\\r\\n<127.0.0.1> EXEC /bin/sh -c 'LANG=C LC_ALL=C LC_MESSAGES=C /usr/bin/python2.6 && sleep 0'\\r\\nfailed: [localhost] (item=[u'kdctestguest99.ds.acc.co.nz', u'2048', u'1']) => {\\\"failed\\\": true, \\\"invocation\\\": {\\\"module_args\\\": {\\\"cluster\\\": null, \\\"esxi\\\": {\\\"datacenter\\\": \\\"Kapiti Datacenter\\\", \\\"hostname\\\": \\\"kdcvmh5101.ds.acc.co.nz\\\"}, \\\"force\\\": false, \\\"from_template\\\": null, \\\"guest\\\": \\\"kdctestguest99.ds.acc.co.nz\\\", \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\\"power_on_after_clone\\\": true, \\\"resource_pool\\\": null, \\\"snapshot_to_clone\\\": null, \\\"state\\\": \\\"powered_on\\\", \\\"template_src\\\": null, \\\"username\\\": \\\"DS\\\\\\\\cruzc\\\", \\\"validate_certs\\\": false, \\\"vcenter_hostname\\\": \\\"kdcwvc0003\\\", \\\"vm_disk\\\": {\\\"disk1\\\": {\\\"datastore\\\": \\\"ESX_PRD_VIDEO_APP_Green_DP0_DS1\\\", \\\"size_gb\\\": 70, \\\"type\\\": \\\"thin\\\"}}, \\\"vm_extra_config\\\": {\\\"mem.hotadd\\\": true, \\\"vcpu.hotadd\\\": true}, \\\"vm_hardware\\\": {\\\"memory_mb\\\": \\\"2048\\\", \\\"num_cpus\\\": \\\"1\\\", \\\"osid\\\": \\\"centos64Guest\\\", \\\"scsi\\\": \\\"paravirtual\\\", \\\"vm_cdrom\\\": {\\\"iso_path\\\": \\\"ESX_DEV_Green_DP8_SR1/ISOs/kdc-auto-build.kdctestguest99.ds.acc.co.nz.iso\\\", \\\"type\\\": \\\"iso\\\"}}, \\\"vm_hw_version\\\": null, \\\"vm_nic\\\": {\\\"nic1\\\": {\\\"network\\\": \\\"dvPortGroup_DEV_Green_PortGroup_130\\\", \\\"network_type\\\": \\\"dvs\\\", \\\"type\\\": \\\"vmxnet3\\\"}}, \\\"vmware_guest_facts\\\": null}, \\\"module_name\\\": \\\"vsphere_guest\\\"}, \\\"item\\\": [\\\"kdctestguest99.ds.acc.co.nz\\\", \\\"2048\\\", \\\"1\\\"], \\\"msg\\\": \\\"Datastore: ESX_PRD_VIDEO_APP_Green_DP0_DS1 does not appear to exist\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"vsphere_guest\", \n    \"component_raw\": \"vsphere_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19495\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\", \n    \"summary\": \"We have a playbook that provision a VM. We run this from Ansible tower.\\n\\nIt works on ESXi 5 but fails on ESXi 6.\\n\\nWe tried to hard code the datastore but still same error.\\n\\nOpened issue previously to ansible-modules-core:\\n\\nhttps://github.com/ansible/ansible-modules-core/issues/5718#issuecomment-262686804\", \n    \"title\": \"vsphere_guest: datastore does not exist when deploying on esxi 6\"\n  }, \n  \"19500\": {\n    \"ansible_version\": \"ansible 2.3.0 (assemble-sort 1c9218785b) last updated 2016/12/18 205059 (GMT -400)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nAssemble module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 (assemble-sort 1c9218785b) last updated 2016/12/18 20:50:59 (GMT -400)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nAllow alternate to sort in the assemble module. \\r\\nRefer to: https://github.com/ansible/ansible/issues/19442\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"assemble\", \n    \"component_raw\": \"Assemble module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19500\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/action\", \n      \"feature\", \n      \"module\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"test\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/assemble.py\", \n    \"summary\": \"Allow alternate to sort in the assemble module. \\n\\nRefer to: https://github.com/ansible/ansible/issues/19442\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"Update assemble to allow alternate source of files\"\n  }, \n  \"19504\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmongodb_user\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nUbuntu Linux 16.04\\r\\n\\r\\n##### SUMMARY\\r\\nI use the mongodb_user command as part of my playbook for setting up the mongoDB machines. It always reports as changed whenever I run the playbook.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- name: Create MongoDB user and database for some-app\\r\\n  mongodb_user:\\r\\n    name: some-app\\r\\n    database: some-app\\r\\n    password: \\\"{{ mongodb_some_app_passwd }}\\\"\\r\\n    replica_set: mongodbpope\\r\\n    roles:\\r\\n      - readWrite\\r\\n    login_database: admin\\r\\n    login_user: admin\\r\\n    login_password: \\\"{{ mongodb_admin_passwd }}\\\"\\r\\n    state: present\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nIt should report as changed only when the DB user does not already exist.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"mongodb_user\", \n    \"component_raw\": \"mongodb_user\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19504\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/database/mongodb/mongodb_user.py\",\n    \"summary\": \"I use the mongodb_user command as part of my playbook for setting up the mongoDB machines. It always reports as changed whenever I run the playbook.\", \n    \"title\": \"mongodb_user always reports as changed\"\n  }, \n  \"19507\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"#### ISSUE TYPE\\r\\n\\r\\n    Bug Report\\r\\n\\r\\n#### COMPONENT NAME\\r\\n\\r\\nall (docker_container, shell, command)\\r\\n\\r\\n#### ANSIBLE VERSION\\r\\n\\r\\nansible 2.2.0.0\\r\\n\\r\\n#### CONFIGURATION\\r\\n\\r\\n#### OS / ENVIRONMENT\\r\\n\\r\\nMac OS X \\\"El Capitan\\\"\\r\\n```\\r\\ndocker version\\r\\nClient:\\r\\n Version:      1.12.3\\r\\n API version:  1.24\\r\\n Go version:   go1.6.3\\r\\n Git commit:   6b644ec\\r\\n Built:        Wed Oct 26 23:26:11 2016\\r\\n OS/Arch:      darwin/amd64\\r\\n\\r\\nServer:\\r\\n Version:      1.12.3\\r\\n API version:  1.24\\r\\n Go version:   go1.6.3\\r\\n Git commit:   6b644ec\\r\\n Built:        Wed Oct 26 23:26:11 2016\\r\\n OS/Arch:      linux/amd64\\r\\n```\\r\\n\\r\\n#### SUMMARY\\r\\n\\r\\nAnsible uses Mac OS X \\\"El Capitan\\\" system python3, not python in $PATH or that installed python.\\r\\n\\r\\n#### STEPS TO REPRODUCE\\r\\nInstall Python 2, Python 3, Ansible:\\r\\n```\\r\\nbrew install python\\r\\npip install --upgrade pip setuptools\\r\\nbrew install python3\\r\\npip3 install --upgrade pip setuptools wheel\\r\\nsudo -H pip install ansible\\r\\ncat <<-PLAYBOOK > hello.yml\\r\\n---\\r\\n- hosts: localhost\\r\\n  gather_facts: no\\r\\n  tasks:\\r\\n    - name: Hello server\\r\\n      shell: echo \\\"Hello\\\"\\r\\n\\r\\nPLAYBOOK\\r\\nansible-playbook hello.yml\\r\\n```\\r\\n\\r\\n#### EXPECTED RESULTS\\r\\n\\r\\nPython3 would be picked up from local path and use HomeBrew installed user python, not system-wide python that has no installed dependent libraries:\\r\\n\\r\\n```\\r\\nls -l /usr/local/opt/python3/bin/python3\\r\\nlrwxr-xr-x  1 joaquin  admin  55 Jun 25 14:38 /usr/local/opt/python3/bin/python3 -> ../Frameworks/Python.framework/Versions/3.5/bin/python3\\r\\n```\\r\\n\\r\\nAlso, I tried it again with `export PYTHONPATH=/usr/local/lib/python3.5/site-package/`, but this was ignored as well.\\r\\n\\r\\n\\r\\n#### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\n$ ansible-playbook -vvv hello.yml\\r\\nNo config file found; using defaults\\r\\n [WARNING]: Host file not found: /etc/ansible/hosts\\r\\n\\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n\\r\\n\\r\\nPLAYBOOK: hello.yml ************************************************************\\r\\n1 plays in hello.yml\\r\\n\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [Hello server] ************************************************************\\r\\ntask path: /Users/joaquin/projarea/wordpress-exp/container/ansible/hello.yml:5\\r\\nUsing module file /usr/local/lib/python3.5/site-packages/ansible/modules/core/commands/command.py\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: joaquin\\r\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1482143337.670153-23437391495252 `\\\" && echo ansible-tmp-1482143337.670153-23437391495252=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1482143337.670153-23437391495252 `\\\" ) && sleep 0'\\r\\n<127.0.0.1> PUT /var/folders/79/4dttv20s6p30d78_yqmr3jjh0000gn/T/tmp1der1wbo TO /Users/joaquin/.ansible/tmp/ansible-tmp-1482143337.670153-23437391495252/command.py\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /Users/joaquin/.ansible/tmp/ansible-tmp-1482143337.670153-23437391495252/ /Users/joaquin/.ansible/tmp/ansible-tmp-1482143337.670153-23437391495252/command.py && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/local/opt/python3/bin/python3.5 /Users/joaquin/.ansible/tmp/ansible-tmp-1482143337.670153-23437391495252/command.py; rm -rf \\\"/Users/joaquin/.ansible/tmp/ansible-tmp-1482143337.670153-23437391495252/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nchanged: [localhost] => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"cmd\\\": \\\"echo \\\\\\\"Hello\\\\\\\"\\\",\\r\\n    \\\"delta\\\": \\\"0:00:00.004077\\\",\\r\\n    \\\"end\\\": \\\"2016-12-19 02:28:57.908638\\\",\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"_raw_params\\\": \\\"echo \\\\\\\"Hello\\\\\\\"\\\",\\r\\n            \\\"_uses_shell\\\": true,\\r\\n            \\\"chdir\\\": null,\\r\\n            \\\"creates\\\": null,\\r\\n            \\\"executable\\\": null,\\r\\n            \\\"removes\\\": null,\\r\\n            \\\"warn\\\": true\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"command\\\"\\r\\n    },\\r\\n    \\\"rc\\\": 0,\\r\\n    \\\"start\\\": \\\"2016-12-19 02:28:57.904561\\\",\\r\\n    \\\"stderr\\\": \\\"\\\",\\r\\n    \\\"stdout\\\": \\\"Hello\\\",\\r\\n    \\\"stdout_lines\\\": [\\r\\n        \\\"Hello\\\"\\r\\n    ],\\r\\n    \\\"warnings\\\": []\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=1    unreachable=0    failed=0   \\r\\n```\\r\\n\\r\\n\\r\\n\", \n    \"component_name\": \"all (docker_container shell command)\", \n    \"component_raw\": \"all (docker_container, shell, command)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19507\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"python3\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Ansible uses Mac OS X \\\"El Capitan\\\" system python3, not python in $PATH or that installed python.\", \n    \"title\": \"Ansible 2.2 ignores homebrew installed python\"\n  }, \n  \"19508\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\ndocker_container module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\ndocker-py==1.10.6\\r\\nDocker version 1.12.3, build 6b644ec(Docker for Mac)\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\nMacOS 10.12.1\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\nWhen I specified custom network with networks parameter in docker_container module, the container belongs both custom network and default bridge network.\\r\\nThe exposed ports of the container are bounded to bridge network because default bridge is above of my customize network in neworklist, so that my containers can't use alias name in my custom network.\\r\\nIf I specified `purge_networks: yes` , the container only belongs to custom network.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- name: run master container\\r\\n  docker_container:\\r\\n    name: \\\"{{ master_name }}\\\"\\r\\n    hostname: \\\"{{ master_name }}\\\"\\r\\n    image: my_container\\r\\n    state: started\\r\\n    networks:\\r\\n      - name: my_custom_network\\r\\n        aliases:\\r\\n          - \\\"{{ master_name }}\\\"\\r\\n    ports:\\r\\n      - \\\"2122:2122\\\"\\r\\n      - \\\"9000\\\"\\r\\n- \\\"19888:19888\\\"\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nA container deployed with networks parameter should belong only the specified network.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\naurora:post kuromt$ docker network inspect bridge\\r\\n[\\r\\n    {\\r\\n        \\\"Name\\\": \\\"bridge\\\",\\r\\n        \\\"Id\\\": \\\"ccdbd510466ed658b4a2ade2f8ab3c262f7d12f9a27d933c48b7dd367f75b020\\\",\\r\\n        \\\"Scope\\\": \\\"local\\\",\\r\\n        \\\"Driver\\\": \\\"bridge\\\",\\r\\n        \\\"EnableIPv6\\\": false,\\r\\n        \\\"IPAM\\\": {\\r\\n            \\\"Driver\\\": \\\"default\\\",\\r\\n            \\\"Options\\\": null,\\r\\n            \\\"Config\\\": [\\r\\n                {\\r\\n                    \\\"Subnet\\\": \\\"172.17.0.0/16\\\",\\r\\n                    \\\"Gateway\\\": \\\"172.17.0.1\\\"\\r\\n                }\\r\\n            ]\\r\\n        },\\r\\n        \\\"Internal\\\": false,\\r\\n        \\\"Containers\\\": {\\r\\n            \\\"c122c252893948210f64218563224c3f076080a3e1abe8450a84dfd96b8db709\\\": {\\r\\n                \\\"Name\\\": \\\"master_name\\\",\\r\\n                \\\"EndpointID\\\": \\\"8e6f7ca9539d51b59eeb32af5070c9d28865c0fe01a0c6b836ecf88c4fd2116d\\\",\\r\\n                \\\"MacAddress\\\": \\\"02:42:ac:11:00:02\\\",\\r\\n                \\\"IPv4Address\\\": \\\"172.17.0.2/16\\\",\\r\\n                \\\"IPv6Address\\\": \\\"\\\"\\r\\n            }\\r\\n        },\\r\\n        \\\"Options\\\": {\\r\\n            \\\"com.docker.network.bridge.default_bridge\\\": \\\"true\\\",\\r\\n            \\\"com.docker.network.bridge.enable_icc\\\": \\\"true\\\",\\r\\n            \\\"com.docker.network.bridge.enable_ip_masquerade\\\": \\\"true\\\",\\r\\n            \\\"com.docker.network.bridge.host_binding_ipv4\\\": \\\"0.0.0.0\\\",\\r\\n            \\\"com.docker.network.bridge.name\\\": \\\"docker0\\\",\\r\\n            \\\"com.docker.network.driver.mtu\\\": \\\"1500\\\"\\r\\n        },\\r\\n        \\\"Labels\\\": {}\\r\\n    }\\r\\n]\\r\\n\\r\\naurora:post kuromt$ docker network inspect my_custom_network\\r\\n[\\r\\n    {\\r\\n        \\\"Name\\\": \\\"my_custom_network\\\",\\r\\n        \\\"Id\\\": \\\"71acb8dc92eb05ffd33b2a33258e92b5791a624197d9d48b1b8b2f0478a1c045\\\",\\r\\n        \\\"Scope\\\": \\\"local\\\",\\r\\n        \\\"Driver\\\": \\\"bridge\\\",\\r\\n        \\\"EnableIPv6\\\": false,\\r\\n        \\\"IPAM\\\": {\\r\\n            \\\"Driver\\\": \\\"default\\\",\\r\\n            \\\"Options\\\": null,\\r\\n            \\\"Config\\\": [\\r\\n                {\\r\\n                    \\\"Subnet\\\": \\\"172.18.0.0/16\\\",\\r\\n                    \\\"Gateway\\\": \\\"172.18.0.1\\\"\\r\\n                }\\r\\n            ]\\r\\n        },\\r\\n        \\\"Internal\\\": false,\\r\\n        \\\"Containers\\\": {\\r\\n            \\\"c122c252893948210f64218563224c3f076080a3e1abe8450a84dfd96b8db709\\\": {\\r\\n                \\\"Name\\\": \\\"master_name\\\",\\r\\n                \\\"EndpointID\\\": \\\"1a78127549bef14cfd29edb4ff8dfc7f9b7ec4853be87f390fc78edde982ce24\\\",\\r\\n                \\\"MacAddress\\\": \\\"02:42:ac:12:00:02\\\",\\r\\n                \\\"IPv4Address\\\": \\\"172.18.0.2/16\\\",\\r\\n                \\\"IPv6Address\\\": \\\"\\\"\\r\\n            }\\r\\n        },\\r\\n        \\\"Options\\\": {},\\r\\n        \\\"Labels\\\": {}\\r\\n    }\\r\\n]\\r\\n```\\r\\n\", \n    \"component_name\": \"docker_container\", \n    \"component_raw\": \"docker_container module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19508\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"summary\": \"When I specified custom network with networks parameter in docker_container module, the container belongs both custom network and default bridge network.\\n\\nThe exposed ports of the container are bounded to bridge network because default bridge is above of my customize network in neworklist, so that my containers can't use alias name in my custom network.\\n\\nIf I specified `purge_networks: yes` , the container only belongs to custom network.\", \n    \"title\": \"container deployed by docker_container module with networks parameter belongs to both specified my custom network and unspecifiede default bridge.\"\n  }, \n  \"19510\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nexternal inventories\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdds an inventory to the list of external inventories in contrib. This inventory allows Ansible users to query information from Foreman and Satellite 6 (https://github.com/theforeman/foreman_ansible_inventory).\\r\\n\\r\\nShould I add the README here too?\", \n    \"component_name\": \"external inventories\", \n    \"component_raw\": \"external inventories\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19510\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:inventory/contrib_script\", \n      \"feature\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Adds an inventory to the list of external inventories in contrib. This inventory allows Ansible users to query information from Foreman and Satellite 6 (https://github.com/theforeman/foreman_ansible_inventory).\\n\\n\\n\\nShould I add the README here too?\", \n    \"title\": \"Add Foreman inventory\"\n  }, \n  \"19511\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\\nCONFIGURATION\\nno specific config\", \n    \"body\": \"Hi,\\r\\n\\r\\nSorry if I'm making some sort of mistake, I can't find any reference to this issue and don't konw how to fix it. I'm using the same configuration that works with ansible 2.1.0, but it fails with ansible 2.2.0\\r\\n\\r\\n##### ISSUE TYPE\\r\\n- Bug Report\\r\\n \\r\\n##### COMPONENT NAME\\r\\ndocker_service\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nno specific config\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nrunning from multiple OS (linux and mac) but managing an ubuntu machine (16.04 LTS xenial)\\r\\n\\r\\n##### SUMMARY\\r\\nOn executing docker_service, I get an error running the docker services that seems to be related to Dockerfile, although I have specified not to build the containers. Not sure if I need to explicitly add another parameter or not.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n\\r\\nmy playbook:\\r\\n```\\r\\n- debug: msg=\\\"restarting services\\\"\\r\\n- docker_service:\\r\\n    project_src: /apps/liveheats\\r\\n    state: present\\r\\n    build: no\\r\\n    files:\\r\\n        - docker-compose.yml\\r\\n        - docker-compose.production.yml\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nWith 2.1.0.0 it would start the docker services correctly\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nfatal: [X.X.X.X]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"api_version\\\": null, \\r\\n            \\\"build\\\": false, \\r\\n            \\\"cacert_path\\\": null, \\r\\n            \\\"cert_path\\\": null, \\r\\n            \\\"debug\\\": false, \\r\\n            \\\"definition\\\": null, \\r\\n            \\\"dependencies\\\": true, \\r\\n            \\\"docker_host\\\": null, \\r\\n            \\\"files\\\": [\\r\\n                \\\"docker-compose.yml\\\", \\r\\n                \\\"docker-compose.production.yml\\\"\\r\\n            ], \\r\\n            \\\"filter_logger\\\": false, \\r\\n            \\\"hostname_check\\\": false, \\r\\n            \\\"key_path\\\": null, \\r\\n            \\\"nocache\\\": false, \\r\\n            \\\"project_name\\\": null, \\r\\n            \\\"project_src\\\": \\\"/apps/liveheats\\\", \\r\\n            \\\"pull\\\": false, \\r\\n            \\\"recreate\\\": \\\"smart\\\", \\r\\n            \\\"remove_images\\\": null, \\r\\n            \\\"remove_orphans\\\": false, \\r\\n            \\\"remove_volumes\\\": false, \\r\\n            \\\"restarted\\\": false, \\r\\n            \\\"scale\\\": null, \\r\\n            \\\"services\\\": null, \\r\\n            \\\"ssl_version\\\": null, \\r\\n            \\\"state\\\": \\\"present\\\", \\r\\n            \\\"stopped\\\": false, \\r\\n            \\\"timeout\\\": 10, \\r\\n            \\\"tls\\\": null, \\r\\n            \\\"tls_hostname\\\": null, \\r\\n            \\\"tls_verify\\\": null\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"docker_service\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"Error starting project - 500 Server Error: Internal Server Error (\\\\\\\"Cannot locate specified Dockerfile: Dockerfile\\\\\\\")\\\"\\r\\n}\\r\\n```\", \n    \"component_name\": \"docker_service\", \n    \"component_raw\": \"docker_service\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19511\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\", \n      \"needs_info\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_service.py\", \n    \"summary\": \"On executing docker_service, I get an error running the docker services that seems to be related to Dockerfile, although I have specified not to build the containers. Not sure if I need to explicitly add another parameter or not.\", \n    \"title\": \"docker_service not working as expected on 2.2.0\"\n  }, \n  \"19513\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible/contrib/inventory/azure_rm.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nCurrently Azure dynamic inventory uses the unqualified resource name of the VMs as inventory name. (`inventory_hostname`, not `ansible_hostname`.) \\r\\n\\r\\nFor the sake of convention we use the same resource name (e.g. 'appserver') for different VMs in multiple resource groups (e.g 'resourceGroups/production/appserver' and 'resourceGroups/qa/appserver'). In this case the dynamic inventory will only yield one of the two VMs as inventory host by the name 'appserver'.\\r\\n\\r\\nThis pull request makes the inventory name configurable by allowing to specify a Python format string. The user can then specify any naming based on the host variables already provided by the script, including 'name' (i.e. resource name), 'resource_group', 'computer_name', 'fqdn'.\\r\\n\\r\\nThis way the user can disambiguate hosts, but also choose more convenient names.\\r\\n\\r\\nThe default behavior is unchanged.\\r\\n\\r\\n```\\r\\n$ ansible -i azure_rm.py --list-hosts all\\r\\n  hosts (1):\\r\\n    appserver\\r\\n$ AZURE_ID_FORMAT=\\\"{resource_group}_{name}\\\" ansible -i azure_rm.py --list-hosts all\\r\\n  hosts (2):\\r\\n    production_appserver\\r\\n    qa_appserver\\r\\n$ AZURE_ID_FORMAT=\\\"{fqdn}\\\" ansible -i azure_rm.py --list-hosts all\\r\\n  hosts (2):\\r\\n    appserver.production.company.com\\r\\n    appserver.qa.company.com\\r\\n```\\r\\n\\r\\n##### OPEN QUESTIONS/DOUBTS\\r\\n1. Is it good practice to expose a Python format string as configuration? (Security concerns?)\\r\\n2. Should we come up with a better name for the environment variable/setting than  `AZURE_ID_FORMAT`/`id_format`. Unfortunately inventory/host name is pretty ambiguous in meaning - `inventory_hostname` and `ansible_hostname` are not very descriptive either.\\r\\n\", \n    \"component_name\": \"ansible/contrib/inventory/azure_rm.py\", \n    \"component_raw\": \"ansible/contrib/inventory/azure_rm.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19513\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"azure\", \n      \"cloud\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Currently Azure dynamic inventory uses the unqualified resource name of the VMs as inventory name. (`inventory_hostname`, not `ansible_hostname`.) \\n\\n\\n\\nFor the sake of convention we use the same resource name (e.g. 'appserver') for different VMs in multiple resource groups (e.g 'resourceGroups/production/appserver' and 'resourceGroups/qa/appserver'). In this case the dynamic inventory will only yield one of the two VMs as inventory host by the name 'appserver'.\\n\\n\\n\\nThis pull request makes the inventory name configurable by allowing to specify a Python format string. The user can then specify any naming based on the host variables already provided by the script, including 'name' (i.e. resource name), 'resource_group', 'computer_name', 'fqdn'.\\n\\n\\n\\nThis way the user can disambiguate hosts, but also choose more convenient names.\\n\\n\\n\\nThe default behavior is unchanged.\\n\\n\\n\\n```\\n\\n$ ansible -i azure_rm.py --list-hosts all\\n\\n  hosts (1):\\n\\n    appserver\\n\\n$ AZURE_ID_FORMAT=\\\"{resource_group}_{name}\\\" ansible -i azure_rm.py --list-hosts all\\n\\n  hosts (2):\\n\\n    production_appserver\\n\\n    qa_appserver\\n\\n$ AZURE_ID_FORMAT=\\\"{fqdn}\\\" ansible -i azure_rm.py --list-hosts all\\n\\n  hosts (2):\\n\\n    appserver.production.company.com\\n\\n    appserver.qa.company.com\\n\\n```\\n\\n\\n\\n##### OPEN QUESTIONS/DOUBTS\\n\\n1. Is it good practice to expose a Python format string as\", \n    \"title\": \"Azure dynamic inventory: make host name in inventory configurable\"\n  }, \n  \"19514\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0.0\\nconfig file = /home/rcardona/Projects/devtools/dev-servers/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nfile and/or template\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /home/rcardona/Projects/devtools/dev-servers/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n```ini\\r\\n[defaults]\\r\\nhostfile = ./hosts.ini\\r\\njinja2_extensions =  jinja2.ext.with_\\r\\nvault_password_file = .vault-password-file.txt\\r\\nroles_path = roles/shared:roles/playbook\\r\\ncallback_plugins = plugins/callbacks\\r\\nfilter_plugins = plugins/filters\\r\\nretry_files_enabled = False\\r\\n\\r\\n[privilege_escalation]\\r\\nbecome_ask_pass=True\\r\\n\\r\\n[github]\\r\\ntoken_uri = ./vars/vault.yml#vault.github_token\\r\\norganization = Polyconseil\\r\\n\\r\\n# Needed because of: https://github.com/ansible/ansible/issues/13401\\r\\n[ssh_connection]\\r\\nscp_if_ssh=True\\r\\n\\r\\n[slack]\\r\\ntoken_key = ./vars/vault.yml#vault.slack_ansible_token\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n```\\r\\n$ python --version\\r\\nPython 3.4.2\\r\\n $ head -n1 /etc/os-release \\r\\nPRETTY_NAME=\\\"Debian GNU/Linux 8 (jessie)\\\"\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\n`with_items` on `mydict.keys()` fails with `AnsibleUndefinedVariable` error\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- name: Add client configuration entries\\r\\n  template:\\r\\n    src: client-config-dir-entry.j2\\r\\n    dest: /etc/openvpn/clients/{{ item }}\\r\\n  with_items: \\\"{{ openvpn_clients.keys() }}\\\"\\r\\n```\\r\\nI had to rework the playbook to \\r\\n```yaml\\r\\n- name: Add client configuration entries\\r\\n  template:\\r\\n    src: client-config-dir-entry.j2\\r\\n    dest: /etc/openvpn/clients/{{ item.key }}\\r\\n  with_dict: \\\"{{ openvpn_clients }}\\\"\\r\\n```\\r\\nand update my template accordingly.\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nUsed to work on python2.7. Looks like a py3k regression.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nTASK [openvpn-gateway : Add client configuration entries] **********************\\r\\ntask path: /home/rcardona/Projects/devtools/dev-servers/roles/playbook/openvpn-gateway/tasks/main.yml:20\\r\\n{\\r\\n  \\\"changed\\\": false,\\r\\n  \\\"failed\\\": true,\\r\\n  \\\"msg\\\": \\\"One or more items failed\\\"\\r\\n}\\r\\nfailed: [misaki.polydev.blue] (item=dict_keys(['asterisk'])) => {\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"dest\\\": \\\"/etc/openvpn/clients/dict_keys(['asterisk'])\\\",\\r\\n            \\\"src\\\": \\\"client-config-dir-entry.j2\\\"\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"template\\\"\\r\\n    },\\r\\n    \\\"item\\\": \\\"dict_keys(['asterisk'])\\\",\\r\\n    \\\"msg\\\": \\\"AnsibleUndefinedVariable: 'dict object' has no attribute \\\\\\\"dict_keys(['asterisk'])\\\\\\\"\\\"\\r\\n}\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"file and/or template\", \n    \"component_raw\": \"file and/or template\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19514\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"`with_items` on `mydict.keys()` fails with `AnsibleUndefinedVariable` error\", \n    \"title\": \"with_items on mydict.keys() fails with AnsibleUndefinedVariable error\"\n  }, \n  \"19515\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\nBugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nproxmox\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n2.3\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nthis PR fixes #19487 (adding pubkey support to proxmox module)\", \n    \"component_name\": \"proxmox\", \n    \"component_raw\": \"proxmox\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19515\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"needs_revision\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/misc/proxmox.py\", \n    \"summary\": \"this PR fixes #19487 (adding pubkey support to proxmox module)\", \n    \"title\": \"proxmox: Add public key support: fix #19487\"\n  }, \n  \"19520\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`include_version` used in a loop statement\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nno specific configuration\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nIf the name of the task is any integer >= 1 (without quotes) we get the exception mentioned in the header. If we write `- name: 0` everything works fine.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n1) create file `roles/z1/tasks/main.yml`\\r\\n```yaml\\r\\n- debug: msg=\\\"included\\\"\\r\\n```\\r\\n\\r\\n2) create file `roles/z2/tasks/main.yml`\\r\\n```yaml\\r\\n- name: 1\\r\\n  include_role:\\r\\n    name: z1\\r\\n  with_items:\\r\\n    - anything\\r\\n```\\r\\n3) create playbook `playbook.yml`\\r\\n```yaml\\r\\n- name: test\\r\\n  hosts: localhost\\r\\n  gather_facts: False\\r\\n  roles:\\r\\n    - z2\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n```\\r\\nPLAY [test] ********************************************************************\\r\\n\\r\\nTASK [z2 : include_role] *******************************************************\\r\\n\\r\\nTASK [z1 : debug] **************************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": \\\"included\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=0   \\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nPLAY [test] ********************************************************************\\r\\nERROR! Unexpected Exception: argument of type 'int' is not iterable\\r\\nto see the full traceback, use -vvv\\r\\n```\\r\\n\\r\\n```\\r\\nPLAYBOOK: playbook.yml *************************************************************\\r\\n1 plays in playbook.yml\\r\\n\\r\\nPLAY [test] ********************************************************************\\r\\nERROR! Unexpected Exception: argument of type 'int' is not iterable\\r\\nthe full traceback was:\\r\\n\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/usr/local/bin/ansible-playbook\\\", line 103, in <module>\\r\\n    exit_code = cli.run()\\r\\n  File \\\"/opt/ansible-2.2.0.0/local/lib/python2.7/site-packages/ansible/cli/playbook.py\\\", line 159, in run\\r\\n    results = pbex.run()\\r\\n  File \\\"/opt/ansible-2.2.0.0/local/lib/python2.7/site-packages/ansible/executor/playbook_executor.py\\\", line 154, in run\\r\\n    result = self._tqm.run(play=play)\\r\\n  File \\\"/opt/ansible-2.2.0.0/local/lib/python2.7/site-packages/ansible/executor/task_queue_manager.py\\\", line 282, in run\\r\\n    play_return = strategy.run(iterator, play_context)\\r\\n  File \\\"/opt/ansible-2.2.0.0/local/lib/python2.7/site-packages/ansible/plugins/strategy/linear.py\\\", line 178, in run\\r\\n    host_tasks = self._get_next_task_lockstep(hosts_left, iterator)\\r\\n  File \\\"/opt/ansible-2.2.0.0/local/lib/python2.7/site-packages/ansible/plugins/strategy/linear.py\\\", line 59, in _get_next_task_lockstep\\r\\n    host_tasks[host.name] = iterator.get_next_task_for_host(host, peek=True)\\r\\n  File \\\"/opt/ansible-2.2.0.0/local/lib/python2.7/site-packages/ansible/executor/play_iterator.py\\\", line 289, in get_next_task_for_host\\r\\n    display.debug(\\\" ^ task is: %s\\\" % task)\\r\\n  File \\\"/opt/ansible-2.2.0.0/local/lib/python2.7/site-packages/ansible/playbook/task.py\\\", line 143, in __repr__\\r\\n    if self.get_name() == 'meta':\\r\\n  File \\\"/opt/ansible-2.2.0.0/local/lib/python2.7/site-packages/ansible/playbook/task.py\\\", line 112, in get_name\\r\\n    if self._role and self.name and (\\\"%s : \\\" % self._role._role_name) not in self.name:\\r\\nTypeError: argument of type 'int' is not iterable\\r\\n```\", \n    \"component_name\": \"include_version used in a loop statement\", \n    \"component_raw\": \"`include_version` used in a loop statement\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19520\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"If the name of the task is any integer >= 1 (without quotes) we get the exception mentioned in the header. If we write `- name: 0` everything works fine.\", \n    \"title\": \"Unexpected Exception: argument of type 'int' is not iterable\"\n  }, \n  \"19521\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [/home/vlg/ansible-playbooks/common/library]\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = ['/home/vlg/ansible-playbooks/common/library']\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nN/A\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nAfter upgrading Ansible to 2.2.0 our playbooks fatal out due to AWS rejecting the setting of a flag on certain AMI types (instance-store backed AMIs)\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n  - name: Spinning up 2 '{{ app }}' servers\\r\\n    ec2:\\r\\n      key_name: keynameishere\\r\\n      instance_type: c3.xlarge\\r\\n      image: '{{ image }}'\\r\\n      wait: yes\\r\\n      group_id: '{{ group }}'\\r\\n      vpc_subnet_id: '{{ subnet }}'\\r\\n      region: us-east-1\\r\\n      count: 2\\r\\n      user_data: |\\r\\n                 #!/bin/bash\\r\\n                 bootstrap script is here (redacted)\\r\\n      assign_public_ip: '{{ use_public_ip }}'\\r\\n      instance_profile_name: '{{ instance_profile }}'\\r\\n      instance_tags:\\r\\n        Platform: 'PlatformName'\\r\\n        Environment: '{{ env }}'\\r\\n        Application: '{{ app_type }}'\\r\\n        Canary: 'Yes'\\r\\n    register: ec2\\r\\n```\\r\\nrelevant group_vars\\r\\n```yaml\\r\\ndl_image: ami-amiID\\r\\ndl_group: sg-groupid\\r\\ndl_subnet: subnet-subnetid\\r\\ndl_elb: elbid\\r\\ndl_instance_profile: IAMinstanceprofile\\r\\ndl_use_public_ip: no\\r\\n```\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nInstance should be spun up.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\nInstance spin up fails because current Amazon Linux AMI is instance-store rather than EBS backed. instance_initiated_shutdown_behavior default value of 'stop' is invalid for an instance-store backed AMI, which we are using. \\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nbuild\\t19-Dec-2016 10:14:25\\tfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Instance creation failed => InvalidParameterCombination: The attribute instanceInitiatedShutdownBehavior can only be used for EBS-backed images.\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"ec2\", \n    \"component_raw\": \"ec2\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19521\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2.py\", \n    \"summary\": \"After upgrading Ansible to 2.2.0 our playbooks fatal out due to AWS rejecting the setting of a flag on certain AMI types (instance-store backed AMIs)\", \n    \"title\": \"ec2 module: instance_initiated_shutdown_behavior is invalid for instance-store backed AMIs\"\n  }, \n  \"19522\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel e396d5d508) last updated 2016/08/24 121310 (GMT +1000)\\nlib/ansible/modules/core (detached HEAD 368ca738fa) last updated 2016/08/24 121321 (GMT +1000)\\nlib/ansible/modules/extras (detached HEAD 0749ce6faa) last updated 2016/08/24 121330 (GMT +1000)\", \n    \"body\": \"##### ISSUE TYPE\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\nrds_cluster\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0 (devel e396d5d508) last updated 2016/08/24 12:13:10 (GMT +1000)\\n  lib/ansible/modules/core: (detached HEAD 368ca738fa) last updated 2016/08/24 12:13:21 (GMT +1000)\\n  lib/ansible/modules/extras: (detached HEAD 0749ce6faa) last updated 2016/08/24 12:13:30 (GMT +1000)\\n```\\n##### SUMMARY\\n\\nThis module manages the creation, modification, deletion, snapshot and restore of RDS Clusters for Aurora instances in AWS.\\n\\n```\\nTASK [print new Aurora RDS cluster] ********************************************\\nok: [localhost] => {\\n    \\\"msg\\\": {\\n        \\\"changed\\\": true, \\n        \\\"rds\\\": {\\n            \\\"DBClusters\\\": [\\n                {\\n                    \\\"AllocatedStorage\\\": 1, \\n                    \\\"AvailabilityZones\\\": [\\n                        \\\"ap-southeast-2a\\\", \\n                        \\\"ap-southeast-2b\\\", \\n                        \\\"ap-southeast-2c\\\"\\n                    ], \\n                    \\\"BackupRetentionPeriod\\\": 10, \\n                    \\\"DBClusterIdentifier\\\": \\\"test-aurora-cluster\\\", \\n                    \\\"DBClusterMembers\\\": [], \\n                    \\\"DBClusterParameterGroup\\\": \\\"test-aurora-param-group\\\", \\n                    \\\"DBSubnetGroup\\\": \\\"aag-vpc-99-sbg-rds-green\\\", \\n                    \\\"DbClusterResourceId\\\": \\\"cluster-TQILXHYILLHWNEPZLLHWNEC5Q\\\", \\n                    \\\"EarliestRestorableTime\\\": \\\"2016-08-28T23:24:54.858000+00:00\\\", \\n                    \\\"Endpoint\\\": \\\"test-aurora-cluster.cluster-c41234a2bug.ap-southeast-2.rds.amazonaws.com\\\", \\n                    \\\"Engine\\\": \\\"aurora\\\", \\n                    \\\"EngineVersion\\\": \\\"5.6.10a\\\", \\n                    \\\"HostedZoneId\\\": \\\"Z32T0VXXXEXS0V\\\", \\n                    \\\"KmsKeyId\\\": \\\"arn:aws:kms:ap-southeast-2:486509402765:key/1b184ef4-1234-5678-a0f0-d5970a9f8e21\\\", \\n                    \\\"LatestRestorableTime\\\": \\\"2016-08-28T23:24:54.858000+00:00\\\", \\n                    \\\"MasterUsername\\\": \\\"testuser\\\", \\n                    \\\"Port\\\": 3306, \\n                    \\\"PreferredBackupWindow\\\": \\\"15:35-16:05\\\", \\n                    \\\"PreferredMaintenanceWindow\\\": \\\"sun:18:34-sun:19:04\\\", \\n                    \\\"Status\\\": \\\"available\\\", \\n                    \\\"StorageEncrypted\\\": true, \\n                    \\\"VpcSecurityGroups\\\": [\\n                        {\\n                            \\\"Status\\\": \\\"active\\\", \\n                            \\\"VpcSecurityGroupId\\\": \\\"sg-d111c7b6\\\"\\n                        }\\n                    ]\\n                }\\n            ], \\n            \\\"ResponseMetadata\\\": {\\n                \\\"HTTPStatusCode\\\": 200, \\n                \\\"RequestId\\\": \\\"ab1de429-6d76-11e6-9d17-df1f331e0454\\\"\\n            }\\n        }\\n    }\\n}\\n```\\n\", \n    \"component_name\": \"rds_cluster\", \n    \"component_raw\": \"rds_cluster\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19522\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"module\", \n      \"needs_revision\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/rds_cluster.py\", \n    \"summary\": \"This module manages the creation, modification, deletion, snapshot and restore of RDS Clusters for Aurora instances in AWS.\\n\\n```\\nTASK [print new Aurora RDS cluster] ********************************************\\nok: [localhost] => {\\n    \\\"msg\\\": {\\n        \\\"changed\\\": true, \\n        \\\"rds\\\": {\\n            \\\"DBClusters\\\": [\\n                {\\n                    \\\"AllocatedStorage\\\": 1, \\n                    \\\"AvailabilityZones\\\": [\\n                        \\\"ap-southeast-2a\\\", \\n                        \\\"ap-southeast-2b\\\", \\n                        \\\"ap-southeast-2c\\\"\\n                    ], \\n                    \\\"BackupRetentionPeriod\\\": 10, \\n                    \\\"DBClusterIdentifier\\\": \\\"test-aurora-cluster\\\", \\n                    \\\"DBClusterMembers\\\": [], \\n                    \\\"DBClusterParameterGroup\\\": \\\"test-aurora-param-group\\\", \\n                    \\\"DBSubnetGroup\\\": \\\"aag-vpc-99-sbg-rds-green\\\", \\n                    \\\"DbClusterResourceId\\\": \\\"cluster-TQILXHYILLHWNEPZLLHWNEC5Q\\\", \\n                    \\\"EarliestRestorableTime\\\": \\\"2016-08-28T23:24:54.858000+00:00\\\", \\n                    \\\"Endpoint\\\": \\\"test-aurora-cluster.cluster-c41234a2bug.ap-southeast-2.rds.amazonaws.com\\\", \\n                    \\\"Engine\\\": \\\"aurora\\\", \\n                    \\\"EngineVersion\\\": \\\"5.6.10a\\\", \\n                    \\\"HostedZoneId\\\": \\\"Z32T0VXXXEXS0V\\\", \\n                    \\\"KmsKeyId\\\": \\\"arn:aws:kms:ap-southeast-2:486509402765:key/1b184ef4-1234-5678-a0f0-d5970a9f8e21\\\", \\n                    \\\"LatestRestorableTime\\\": \\\"2016-08-28T23:24:54.858000+00:00\\\", \\n                    \\\"MasterUsername\\\": \\\"testuser\\\", \\n                    \\\"Port\\\": 3306, \\n                    \\\"PreferredBackupWindow\\\": \\\"15:35-16:05\\\", \\n                    \\\"PreferredMaintenanceWindow\\\": \\\"sun:18:34-sun:19:04\\\", \\n                    \\\"Status\\\": \\\"available\\\", \\n                    \\\"StorageEncrypted\\\": true, \\n                    \\\"VpcSecurityGroups\\\": [\\n                        {\\n                            \\\"Status\\\": \\\"active\\\", \\n                            \\\"VpcSecurityGroupId\\\": \\\"sg-d111c7b6\\\"\\n                        }\\n                    ]\\n                }\\n            ], \\n            \\\"ResponseMetadata\\\": {\\n                \\\"HTTPStatusCode\\\": 200, \\n                \\\"RequestId\\\": \\\"ab1de429-6d76-11e6-9d17-df1f331e0454\\\"\\n            }\\n        }\\n    }\\n}\\n```\", \n    \"title\": \"New AWS module to manage RDS Clusters \"\n  }, \n  \"19523\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel e396d5d508) last updated 2016/08/24 121310 (GMT +1000)\\nlib/ansible/modules/core (detached HEAD 368ca738fa) last updated 2016/08/24 121321 (GMT +1000)\\nlib/ansible/modules/extras (detached HEAD 0749ce6faa) last updated 2016/08/24 121330 (GMT +1000)\", \n    \"body\": \"##### ISSUE TYPE\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\nrds_v2\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0 (devel e396d5d508) last updated 2016/08/24 12:13:10 (GMT +1000)\\n  lib/ansible/modules/core: (detached HEAD 368ca738fa) last updated 2016/08/24 12:13:21 (GMT +1000)\\n  lib/ansible/modules/extras: (detached HEAD 0749ce6faa) last updated 2016/08/24 12:13:30 (GMT +1000)\\n```\\n##### SUMMARY\\n\\nThis module manages the creation, modification, deletion, snapshot, restore, reboot, replicate and promote of RDS Instances in AWS.\\n\\nNote: Technically this is a rewrite of the existing core RDS module and while I believe rewrites using older API's aren't being included until 2.3 I thought people could still use this in the meantime, especially if support for Aurora is required. \\n\\n```\\nTASK [print new RDS instance] **************************************************\\nok: [localhost] => {\\n    \\\"msg\\\": {\\n        \\\"changed\\\": true, \\n        \\\"rds\\\": {\\n            \\\"DBInstances\\\": [\\n                {\\n                    \\\"AllocatedStorage\\\": 10, \\n                    \\\"AutoMinorVersionUpgrade\\\": true, \\n                    \\\"AvailabilityZone\\\": \\\"ap-southeast-2a\\\", \\n                    \\\"BackupRetentionPeriod\\\": 10, \\n                    \\\"CACertificateIdentifier\\\": \\\"rds-ca-2015\\\", \\n                    \\\"CopyTagsToSnapshot\\\": false, \\n                    \\\"DBInstanceClass\\\": \\\"db.t2.medium\\\", \\n                    \\\"DBInstanceIdentifier\\\": \\\"test-instance\\\", \\n                    \\\"DBInstanceStatus\\\": \\\"available\\\", \\n                    \\\"DBParameterGroups\\\": [\\n                        {\\n                            \\\"DBParameterGroupName\\\": \\\"test-param-group\\\", \\n                            \\\"ParameterApplyStatus\\\": \\\"in-sync\\\"\\n                        }\\n                    ], \\n                    \\\"DBSecurityGroups\\\": [], \\n                    \\\"DBSubnetGroup\\\": {\\n                        \\\"DBSubnetGroupDescription\\\": \\\"test subnet group\\\", \\n                        \\\"DBSubnetGroupName\\\": \\\"test-subnet-group\\\", \\n                        \\\"SubnetGroupStatus\\\": \\\"Complete\\\", \\n                        \\\"Subnets\\\": [\\n                            {\\n                                \\\"SubnetAvailabilityZone\\\": {\\n                                    \\\"Name\\\": \\\"ap-southeast-2a\\\"\\n                                }, \\n                                \\\"SubnetIdentifier\\\": \\\"subnet-75ed1123\\\", \\n                                \\\"SubnetStatus\\\": \\\"Active\\\"\\n                            }, \\n                            {\\n                                \\\"SubnetAvailabilityZone\\\": {\\n                                    \\\"Name\\\": \\\"ap-southeast-2b\\\"\\n                                }, \\n                                \\\"SubnetIdentifier\\\": \\\"subnet-6ae33123\\\", \\n                                \\\"SubnetStatus\\\": \\\"Active\\\"\\n                            }\\n                        ], \\n                        \\\"VpcId\\\": \\\"vpc-aad24acf\\\"\\n                    }, \\n                    \\\"DbInstancePort\\\": 0, \\n                    \\\"DbiResourceId\\\": \\\"db-7ZINBVLFLHNOT5ROFK76T4XXXX\\\", \\n                    \\\"Endpoint\\\": {\\n                        \\\"Address\\\": \\\"test-instance2.c4nb0jta2bug.ap-southeast-2.rds.amazonaws.com\\\", \\n                        \\\"HostedZoneId\\\": \\\"Z32T0VRHXEXXXX\\\", \\n                        \\\"Port\\\": 3306\\n                    }, \\n                    \\\"Engine\\\": \\\"mysql\\\", \\n                    \\\"EngineVersion\\\": \\\"5.6.27\\\", \\n                    \\\"InstanceCreateTime\\\": \\\"2016-09-03T07:36:28.832000+00:00\\\", \\n                    \\\"LatestRestorableTime\\\": \\\"2016-09-03T07:40:00+00:00\\\", \\n                    \\\"LicenseModel\\\": \\\"general-public-license\\\", \\n                    \\\"MasterUsername\\\": \\\"testuser\\\", \\n                    \\\"MonitoringInterval\\\": 0, \\n                    \\\"MultiAZ\\\": false, \\n                    \\\"OptionGroupMemberships\\\": [\\n                        {\\n                            \\\"OptionGroupName\\\": \\\"test-option-group\\\", \\n                            \\\"Status\\\": \\\"in-sync\\\"\\n                        }\\n                    ], \\n                    \\\"PendingModifiedValues\\\": {}, \\n                    \\\"PreferredBackupWindow\\\": \\\"17:54-18:24\\\", \\n                    \\\"PreferredMaintenanceWindow\\\": \\\"fri:12:54-fri:13:24\\\", \\n                    \\\"PubliclyAccessible\\\": false, \\n                    \\\"ReadReplicaDBInstanceIdentifiers\\\": [], \\n                    \\\"StorageEncrypted\\\": false, \\n                    \\\"StorageType\\\": \\\"standard\\\", \\n                    \\\"VpcSecurityGroups\\\": [\\n                        {\\n                            \\\"Status\\\": \\\"active\\\", \\n                            \\\"VpcSecurityGroupId\\\": \\\"sg-d188c123\\\"\\n                        }\\n                    ]\\n                }\\n            ], \\n            \\\"ResponseMetadata\\\": {\\n                \\\"HTTPStatusCode\\\": 200, \\n                \\\"RequestId\\\": \\\"022114a4-71aa-11e6-8a7d-bd9007adb1d5\\\"\\n            }\\n        }\\n    }\\n}\\n```\\n\", \n    \"component_name\": \"rds_v2\", \n    \"component_raw\": \"rds_v2\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19523\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/rds_v2.py\", \n    \"summary\": \"This module manages the creation, modification, deletion, snapshot, restore, reboot, replicate and promote of RDS Instances in AWS.\\n\\nNote: Technically this is a rewrite of the existing core RDS module and while I believe rewrites using older API's aren't being included until 2.3 I thought people could still use this in the meantime, especially if support for Aurora is required. \\n\\n```\\nTASK [print new RDS instance] **************************************************\\nok: [localhost] => {\\n    \\\"msg\\\": {\\n        \\\"changed\\\": true, \\n        \\\"rds\\\": {\\n            \\\"DBInstances\\\": [\\n                {\\n                    \\\"AllocatedStorage\\\": 10, \\n                    \\\"AutoMinorVersionUpgrade\\\": true, \\n                    \\\"AvailabilityZone\\\": \\\"ap-southeast-2a\\\", \\n                    \\\"BackupRetentionPeriod\\\": 10, \\n                    \\\"CACertificateIdentifier\\\": \\\"rds-ca-2015\\\", \\n                    \\\"CopyTagsToSnapshot\\\": false, \\n                    \\\"DBInstanceClass\\\": \\\"db.t2.medium\\\", \\n                    \\\"DBInstanceIdentifier\\\": \\\"test-instance\\\", \\n                    \\\"DBInstanceStatus\\\": \\\"available\\\", \\n                    \\\"DBParameterGroups\\\": [\\n                        {\\n                            \\\"DBParameterGroupName\\\": \\\"test-param-group\\\", \\n                            \\\"ParameterApplyStatus\\\": \\\"in-sync\\\"\\n                        }\\n                    ], \\n                    \\\"DBSecurityGroups\\\": [], \\n                    \\\"DBSubnetGroup\\\": {\\n                        \\\"DBSubnetGroupDescription\\\": \\\"test subnet group\\\", \\n                        \\\"DBSubnetGroupName\\\": \\\"test-subnet-group\\\", \\n                        \\\"SubnetGroupStatus\\\": \\\"Complete\\\", \\n                        \\\"Subnets\\\": [\\n                            {\\n                                \\\"SubnetAvailabilityZone\\\": {\\n                                    \\\"Name\\\": \\\"ap-southeast-2a\\\"\\n                                }, \\n                                \\\"SubnetIdentifier\\\": \\\"subnet-75ed1123\\\", \\n                                \\\"SubnetStatus\\\": \\\"Active\\\"\\n                            }, \\n                            {\\n                                \\\"SubnetAvailabilityZone\\\": {\\n                                    \\\"Name\\\": \\\"ap-southeast-2b\\\"\\n                                }, \\n                                \\\"SubnetIdentifier\\\": \\\"subnet-6ae33123\\\", \\n                                \\\"SubnetStatus\\\": \\\"Active\\\"\\n                            }\\n                        ], \\n                        \\\"VpcId\\\": \\\"vpc-aad24acf\\\"\\n                    }, \\n                    \\\"DbInstancePort\\\": 0, \\n                    \\\"DbiResourceId\\\": \\\"db-7ZINBVLFLHNOT5ROFK76T4XXXX\\\", \\n                    \\\"Endpoint\\\": {\\n                        \\\"Address\\\": \\\"test-instance2.c4nb0jta2bug.ap-southeast-2.rds.amazonaws.com\\\", \\n                        \\\"HostedZoneId\\\": \\\"Z32T0VRHXEXXXX\\\", \\n                        \\\"Port\\\": 3306\\n                    }, \\n                    \\\"Engine\\\": \\\"mysql\\\", \\n                    \\\"EngineVersion\\\": \\\"5.6.27\\\", \\n                    \\\"InstanceCreateTime\\\": \\\"2016-09-03T07:36:28.832000+00:00\\\", \\n                    \\\"LatestRestorableTime\\\": \\\"2016-09-03T07:40:00+00:00\\\", \\n                    \\\"LicenseModel\\\": \\\"general-public-license\\\", \\n                    \\\"MasterUsername\\\": \\\"testuser\\\", \\n                    \\\"MonitoringInterval\\\": 0, \\n                    \\\"MultiAZ\\\": false, \\n                    \\\"OptionGroupMemberships\\\": [\\n                        {\\n                            \\\"OptionGroupName\\\": \\\"test-option-group\\\", \\n                            \\\"Status\\\": \\\"in-sync\\\"\\n                        }\\n                    ], \\n                    \\\"PendingModifiedValues\\\": {}, \\n                    \\\"PreferredBackupWindow\\\": \\\"17:54-18:24\\\", \\n                    \\\"PreferredMaintenanceWindow\\\": \\\"fri:12:54-fri:13:24\\\", \\n                    \\\"PubliclyAccessible\\\": false, \\n                    \\\"ReadReplicaDBInstanceIdentifiers\\\": [], \\n                    \\\"StorageEncrypted\\\": false, \\n                    \\\"StorageType\\\": \\\"standard\\\", \\n                    \\\"VpcSecurityGroups\\\": [\\n                        {\\n                            \\\"Status\\\": \\\"active\\\", \\n                            \\\"VpcSecurityGroupId\\\": \\\"sg-d188c123\\\"\\n                        }\\n                    ]\\n                }\\n            ], \\n            \\\"ResponseMetadata\\\": {\\n                \\\"HTTPStatusCode\\\": 200, \\n                \\\"RequestId\\\": \\\"022114a4-71aa-11e6-8a7d-bd9007adb1d5\\\"\\n            }\\n        }\\n    }\\n}\\n```\", \n    \"title\": \"New AWS module for managing RDS instance using newer boto3 API\"\n  }, \n  \"19524\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"_From @willthames on October 21, 2016 7:42_\\n\\n##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nrds\\n##### ANSIBLE VERSION\\n\\n2.3\\n##### CONFIGURATION\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\nN/A\\n##### SUMMARY\\n\\nAdd boto3 capabilities to rds so that lots and lots of other issues can be fixed. I'm going to update all those issues to mention this so that we can keep track of them (alternative is an rds_boto3 tag)\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5343_\", \n    \"component_name\": \"rds\", \n    \"component_raw\": \"rds\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19524\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/rds.py\", \n    \"summary\": \"Add boto3 capabilities to rds so that lots and lots of other issues can be fixed. I'm going to update all those issues to mention this so that we can keep track of them (alternative is an rds_boto3 tag)\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5343_\", \n    \"title\": \"RDS: add boto3 capabilities\"\n  }, \n  \"19530\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /git/ansible/\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n- Feature Pull Request\\r\\n##### COMPONENT NAME\\r\\n\\r\\n<!--- Name of the plugin/module/task -->\\r\\n\\r\\ngitlab_project\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n\\r\\n```\\r\\nansible 2.1.2.0\\r\\n  config file = /git/ansible/environment/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n##### SUMMARY\\r\\n\\r\\nThe python module used in the previous version seems not alive anymore. Suggestion from #2159 was to use other python module, one that is alive. This PR make use of this suggested module and added some new options. Other modules will be updated soon.\\r\\n\", \n    \"component_name\": \"gitlab_project\", \n    \"component_raw\": \"gitlab_project\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19530\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"feature\", \n      \"module\", \n      \"owner_pr\"\n    ], \n    \"module_match\": \"lib/ansible/modules/source_control/gitlab_project.py\", \n    \"summary\": \"The python module used in the previous version seems not alive anymore. Suggestion from #2159 was to use other python module, one that is alive. This PR make use of this suggested module and added some new options. Other modules will be updated soon.\", \n    \"title\": \"Updated the gitlab_project module with usage of other python module\"\n  }, \n  \"19536\": {\n    \"ansible_version\": \"2.3.0\", \n    \"body\": \"Some ini files will allow an option to appear several times\\r\\nwith different values (e.g. systemd services files)\\r\\n\\r\\nAdd a new option, 'unique', defaulting to yes, to specifie if\\r\\na option can appears once or multiples times.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nini_file\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n2.3.0\\r\\n```\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nOptions in a ini file can appear multiple times in the same section. Until now, only one was allowed, deleting the rest.\\r\\n\\r\\n[default]\\r\\npath=/usr/bin\\r\\npath=/usr/sbin\\r\\n\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"ini_file\", \n    \"component_raw\": \"ini_file\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19536\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/ini_file.py\", \n    \"summary\": \"Options in a ini file can appear multiple times in the same section. Until now, only one was allowed, deleting the rest.\\n\\n\\n\\n[default]\\n\\npath=/usr/bin\\n\\npath=/usr/sbin\\n\\n\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"Allow multiple options in ini_file\"\n  }, \n  \"19538\": {\n    \"ansible_version\": \"ansible 2.1.0.0 (stable-2.1 2c8715178f)\", \n    \"body\": \"_From @kaneda-fr on May 10, 2016 7:58_\\n\\n##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\ncloud/vmware/vca_vapp.py\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.0.0 (stable-2.1 2c8715178f)\\n```\\n##### CONFIGURATION\\n##### OS / ENVIRONMENT\\n\\nOSX El Capitan: Darwin  15.4.0 Darwin Kernel Version 15.4.0\\n##### SUMMARY\\n\\nWhen creating anew vApp and and passing an existing omg VDC network name, the app is created without attaching the network .\\n\\nLooking into pyvcloud vckoudair.py, the function create_vapp seems to do nothing with the network_name, so we may need to add instruction to attach network after the VApp creation.\\n##### STEPS TO REPRODUCE\\n\\n```\\n- hosts: localhost\\n  connection: local\\n  vars:\\n  tasks:\\n   - vca_vapp:\\n       state: deployed\\n       operation: noop\\n       org: 'sita_cloud_eng_0003'\\n       vdc_name: 'VDC_IAAS_CLOUD_ENG_0003'\\n       vapp_name: 'Test_API'\\n       catalog_name: \\\"Public catalog\\\"\\n       template_name: CentOS_6.5_64bits\\n       vm_name: VM-CentOS-Seb\\n       vm_cpus: 2\\n       vm_memory: 2096\\n       username: xxx\\n       password: yay\\n       api_version: 5.6\\n       host: zzz\\n       service_type: vcd\\n       network_name: VDCNET\\n       network_mode: pool\\n       gateway_name: EG_CLOUD_ENG_0003\\n\\n     register: myvm\\n\\n   - debug: var=myvm\\n```\\n##### EXPECTED RESULTS\\n\\nNetwork passed as option via network_name should be attached to Vapp during creation\\n##### ACTUAL RESULTS\\n\\nNetwork passed as option via network_name is not attached at Vapp creation.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#2203_\", \n    \"component_name\": \"cloud/vmware/vca_vapp.py\", \n    \"component_raw\": \"cloud/vmware/vca_vapp.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19538\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vca_vapp.py\", \n    \"summary\": \"When creating anew vApp and and passing an existing omg VDC network name, the app is created without attaching the network .\\n\\nLooking into pyvcloud vckoudair.py, the function create_vapp seems to do nothing with the network_name, so we may need to add instruction to attach network after the VApp creation.\", \n    \"title\": \"vmware/vca_vapp: network not attached to Vapp during creation\"\n  }, \n  \"19539\": {\n    \"ansible_version\": \"ansible 2.1.0.0 (stable-2.1 2c8715178f)\", \n    \"body\": \"_From @kaneda-fr on May 9, 2016 11:30_\\r\\n\\r\\n##### ISSUE TYPE\\r\\n- Bug Report\\r\\n- ~~Feature Idea~~\\r\\n##### COMPONENT NAME\\r\\n\\r\\ncloud/vmware/vca_vapp.py \\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.1.0.0 (stable-2.1 2c8715178f)\\r\\n```\\r\\n##### CONFIGURATION\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nN/A\\r\\n##### SUMMARY\\r\\n\\r\\nWhen an incorrect catalog name is provided, `module.vca.create_vapp` on line 184 will return false and next line with `module.vca.block_until_completed(task)` will fail.\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nUse an incorrect catalog name in your playbook\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nError reporting could be improved to indicate the reason for the error. \\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n<!--- What actually happened? If possible run with high verbosity (-vvvv) -->\\r\\n\\r\\n```\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/var/folders/ws/r0hq3mp13hj6bz9gy0tkwt580000gr/T/ansible_MJF6FG/ansible_module_vca_vapp.py\\\", line 282, in <module>\\r\\n    main()\\r\\n  File \\\"/var/folders/ws/r0hq3mp13hj6bz9gy0tkwt580000gr/T/ansible_MJF6FG/ansible_module_vca_vapp.py\\\", line 263, in main\\r\\n    create(module)\\r\\n  File \\\"/var/folders/ws/r0hq3mp13hj6bz9gy0tkwt580000gr/T/ansible_MJF6FG/ansible_module_vca_vapp.py\\\", line 188, in create\\r\\n    module.vca.block_until_completed(task)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/pyvcloud/vcloudair.py\\\", line 959, in block_until_completed\\r\\n    progress = task.get_Progress()\\r\\nAttributeError: 'bool' object has no attribute 'get_Progress'\\r\\n```\\r\\n\\r\\n\\r\\n_Copied from original issue: ansible/ansible-modules-extras#2189_\", \n    \"component_name\": \"cloud/vmware/vca_vapp.py\", \n    \"component_raw\": \"cloud/vmware/vca_vapp.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19539\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vca_vapp.py\", \n    \"summary\": \"When an incorrect catalog name is provided, `module.vca.create_vapp` on line 184 will return false and next line with `module.vca.block_until_completed(task)` will fail.\", \n    \"title\": \"vmware/vca_vapp: Improve error reporting when catalog cannot be found\"\n  }, \n  \"19543\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"Attaching network to VAPP and VM and returning assigned VM ip as fact vm_ip.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nmodules/cloud/vmware/vca_vapp.py \\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nConnecting app network to vApp and VM after vApp creation\\r\\nReturning the IP assigned to the VM as fact 'vm_ip'\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\nFixes #19538 \\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\", \n    \"component_name\": \"s/cloud/vmware/vca_vapp.py\", \n    \"component_raw\": \"modules/cloud/vmware/vca_vapp.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19543\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"needs_revision\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vca_vapp.py\", \n    \"summary\": \"Connecting app network to vApp and VM after vApp creation\\n\\nReturning the IP assigned to the VM as fact 'vm_ip'\\n\\n\\n\\n\\n\\n\\n\\nFixes #19538 \\n\\n\\n\\n\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"vca_vapp: Attaching network to VAPP and VM and returning assigned VM ip as fact vm_ip.\"\n  }, \n  \"19549\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @jcassee on December 2, 2016 16:51_\\n\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndocker_container\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n*none*\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nUbuntu 16.04\\r\\n\\r\\n##### SUMMARY\\r\\nWhen using `pull: yes`, the action always reports changed, even when the image is not changed (and so the container is not restarted). The old `docker` module would report ok in this case.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nRun this playbook twice:\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n- hosts: localhost\\r\\n  tasks:\\r\\n    - docker_container:\\r\\n        name: test\\r\\n        image: alpine\\r\\n        pull: yes\\r\\n        command: sleep 10000\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nI would expect the second run to report *ok* for the task.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nThe task reports *changed* on the second run.\\r\\n\\r\\n```\\r\\n$ ansible-playbook test.yml\\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n\\r\\n\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [docker_container] ********************************************************\\r\\nchanged: [localhost]\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=2    changed=1    unreachable=0    failed=0   \\r\\n\\r\\n$ ansible-playbook test.yml\\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n\\r\\n\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [docker_container] ********************************************************\\r\\nchanged: [localhost]\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=2    changed=1    unreachable=0    failed=0   \\r\\n\\r\\n```\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5804_\", \n    \"component_name\": \"docker_container\", \n    \"component_raw\": \"docker_container\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19549\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"summary\": \"When using `pull: yes`, the action always reports changed, even when the image is not changed (and so the container is not restarted). The old `docker` module would report ok in this case.\", \n    \"title\": \"docker_container with pull: true will always report changed\"\n  }, \n  \"19550\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @jcassee on December 2, 2016 16:14_\\n\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndocker_container\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n*none*\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nUbuntu 16.04\\r\\n\\r\\n##### SUMMARY\\r\\nWhen using `links: []`, the container is always restarted.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nRun this playbook twice:\\r\\n```\\r\\n- hosts: localhost\\r\\n  tasks:\\r\\n    - docker_container:\\r\\n        name: test\\r\\n        image: alpine\\r\\n        links: []\\r\\n        command: sleep 10000\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe container is started once. It is not restarted when running the second time.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nThe container is restarted on the second run. When running with `-vvv --diff`:\\r\\n\\r\\n```\\r\\nTASK [docker_container] ********************************************************\\r\\n[...]\\r\\nchanged: [localhost] => {\\r\\n    \\\"ansible_facts\\\": {}, \\r\\n    \\\"changed\\\": true, \\r\\n    \\\"diff\\\": {\\r\\n        \\\"differences\\\": [\\r\\n            {\\r\\n                \\\"expected_links\\\": {\\r\\n                    \\\"container\\\": null, \\r\\n                    \\\"parameter\\\": []\\r\\n                }\\r\\n            }\\r\\n        ]\\r\\n    }, \\r\\n    \\\"invocation\\\": {\\r\\n        [...]\\r\\n```\\r\\n\\r\\nThe problem seems to be that the modules compares an empty list with `None`. From `docker.log` (when enabled):\\r\\n\\r\\n```\\r\\ncheck differences expected_links [] vs None\\r\\nprimitive compare: expected_links\\r\\n[...]\\r\\ndifferences\\r\\n[\\r\\n    {\\r\\n        \\\"expected_links\\\": {\\r\\n            \\\"container\\\": null,\\r\\n            \\\"parameter\\\": []\\r\\n        }\\r\\n    }\\r\\n]\\r\\n```\\n\\n_Copied from original issue: ansible/ansible-modules-core#5802_\", \n    \"component_name\": \"docker_container\", \n    \"component_raw\": \"docker_container\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19550\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"summary\": \"When using `links: []`, the container is always restarted.\", \n    \"title\": \"docker_container with empty links list always restarts\"\n  }, \n  \"19553\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvmware_portgroup\\r\\n\\r\\n##### SUMMARY\\r\\nIn certain situations, adding a portgroup to a vCenter may only be desirable upon a single cluster. For example if other clusters are also present in the vCenter that are not identical in hardware and won't be compatible with the desired changes.\\r\\n\\r\\nI imagine it would be another option to the module, called 'cluster' or something alike.\\r\\n\\r\\n```\\r\\n- vmware_portgroup:\\r\\n    hostname: \\\"{{ vcenter_hostname }}\\\"\\r\\n    username: \\\"{{ vcenter_username }}\\\"\\r\\n    password: \\\"{{ vcenter_password }}\\\"\\r\\n    cluster: \\\"DC1\\\"\\r\\n    vlan_id: \\\"{{ vlan_id }}\\\"\\r\\n    switch_name: \\\"vSwitch3\\\"\\r\\n    validate_certs: False\\r\\n```\", \n    \"component_name\": \"vmware_portgroup\", \n    \"component_raw\": \"vmware_portgroup\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19553\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_portgroup.py\", \n    \"summary\": \"In certain situations, adding a portgroup to a vCenter may only be desirable upon a single cluster. For example if other clusters are also present in the vCenter that are not identical in hardware and won't be compatible with the desired changes.\\n\\n\\n\\nI imagine it would be another option to the module, called 'cluster' or something alike.\\n\\n\\n\\n```\\n\\n- vmware_portgroup:\\n\\n    hostname: \\\"{{ vcenter_hostname }}\\\"\\n\\n    username: \\\"{{ vcenter_username }}\\\"\\n\\n    password: \\\"{{ vcenter_password }}\\\"\\n\\n    cluster: \\\"DC1\\\"\\n\\n    vlan_id: \\\"{{ vlan_id }}\\\"\\n\\n    switch_name: \\\"vSwitch3\\\"\\n\\n    validate_certs: False\\n\\n```\", \n    \"title\": \"Add a cluster filter to the vmware_portgroup module\"\n  }, \n  \"19554\": {\n    \"ansible_version\": \"N/A\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`intro_inventory.rst`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nAdded missing `ansible_become_exe` and `ansible_become_flags` docs \\r\\n\", \n    \"component_name\": \"intro_inventory.rst\", \n    \"component_raw\": \"`intro_inventory.rst`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19554\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Added missing `ansible_become_exe` and `ansible_become_flags` docs\", \n    \"title\": \"Added become_exe and become_flags docs\"\n  }, \n  \"19555\": {\n    \"ansible_version\": \"ansible 2.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnxos_file_copy\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nFix md5 sums check\", \n    \"component_name\": \"nxos_file_copy\", \n    \"component_raw\": \"nxos_file_copy\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19555\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"networking\", \n      \"owner_pr\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nxos/nxos_file_copy.py\", \n    \"summary\": \"Fix md5 sums check\", \n    \"title\": \"Fixing md5 check on nxos_file_copy\"\n  }, \n  \"19556\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnxos_file_copy\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nFix md5 sums check\", \n    \"component_name\": \"nxos_file_copy\", \n    \"component_raw\": \"nxos_file_copy\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19556\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"needs_revision\", \n      \"networking\", \n      \"owner_pr\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nxos/nxos_file_copy.py\", \n    \"summary\": \"Fix md5 sums check\", \n    \"title\": \"nxos_file_copy: Fix md5 sums check\"\n  }, \n  \"19557\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnxos_snmp_community\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nChanged how module work to make it use running config for module operations instead of cli commands. Referring to #5214\\r\\n\", \n    \"component_name\": \"nxos_snmp_community\", \n    \"component_raw\": \"nxos_snmp_community\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19557\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"networking\", \n      \"owner_pr\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nxos/nxos_snmp_community.py\", \n    \"summary\": \"Changed how module work to make it use running config for module operations instead of cli commands. Referring to #5214\", \n    \"title\": \"nxos_snmp_community: Use running config for module operations instead of cli commands. \"\n  }, \n  \"19562\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"Check result of vApp creation and return module failure if creation task not present\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nmodules/cloud/vmware/vca_vapp.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdded check of the value returned from create_vapp and fail module if task is False.\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nFixes #19539 \\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\nTASK [vcd : Create VM] *********************************************************\\r\\nfatal: [elk0-dev3]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failed to create vapp\\\"}\\r\\nfatal: [elk0-dev4]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failed to create vapp\\\"}\\r\\nfatal: [elk0-dev2]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failed to create vapp\\\"}\\r\\nfatal: [elk0-dev5]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failed to create vapp\\\"}\\r\\nfatal: [elk0-dev1]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failed to create vapp\\\"}\\r\\n\\r\\n```\", \n    \"component_name\": \"s/cloud/vmware/vca_vapp.py\", \n    \"component_raw\": \"modules/cloud/vmware/vca_vapp.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19562\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vca_vapp.py\", \n    \"summary\": \"Added check of the value returned from create_vapp and fail module if task is False.\\n\\n\\n\\nFixes #19539 \\n\\n\\n\\n```\\n\\nTASK [vcd : Create VM] *********************************************************\\n\\nfatal: [elk0-dev3]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failed to create vapp\\\"}\\n\\nfatal: [elk0-dev4]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failed to create vapp\\\"}\\n\\nfatal: [elk0-dev2]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failed to create vapp\\\"}\\n\\nfatal: [elk0-dev5]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failed to create vapp\\\"}\\n\\nfatal: [elk0-dev1]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failed to create vapp\\\"}\\n\\n\\n\\n```\", \n    \"title\": \"Update vca_vapp.py\"\n  }, \n  \"19564\": {\n    \"ansible_version\": \"ansible 2.3.0 (valid_bool_error e04933113d) last updated 2016/12/20 104029 (GMT -400)\\nconfig file = /home/adrian/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n\\r\\n \\r\\n - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nlib/ansible/module_utils/basic.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (valid_bool_error e04933113d) last updated 2016/12/20 10:40:29 (GMT -400)\\r\\n  config file = /home/adrian/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nIf we throw an error about a value not being a valid boolean, also include the list of valid booleans.\\r\\n\\r\\nBefore:\\r\\n```\\r\\n[fedora-23:ansible (devel % u=)]$ ansible -i hosts localhost -m copy -a 'src=README.md dest=/tmp/readme.txt unsafe_writes=4xrtvdvr'\\r\\nlocalhost | FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"checksum\\\": \\\"e400e0d41a48a66433478d2c9b0f21269febe06b\\\", \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"msg\\\": \\\"Boolean 4xrtvdvr not in either boolean list\\\"\\r\\n}\\r\\n```\\r\\n\\r\\nAfter:\\r\\n```\\r\\n[fedora-23:ansible (valid_bool_error %)]$ ansible -i hosts localhost -m copy -a 'src=README.md dest=/tmp/readme.txt unsafe_writes=4xrtvdvr'\\r\\nlocalhost | FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"checksum\\\": \\\"e400e0d41a48a66433478d2c9b0f21269febe06b\\\", \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"msg\\\": \\\"4xrtvdvr is not a valid boolean. Valid booleans include: y,yes,on,1,true,1,True,n,no,off,0,false,0,False\\\"\\r\\n}\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"lib/ansible/module_utils/basic.py\", \n    \"component_raw\": \"lib/ansible/module_utils/basic.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19564\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"c:module_utils/basic\", \n      \"in progress\", \n      \"module_util\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"If we throw an error about a value not being a valid boolean, also include the list of valid booleans.\\n\\n\\n\\nBefore:\\n\\n```\\n\\n[fedora-23:ansible (devel % u=)]$ ansible -i hosts localhost -m copy -a 'src=README.md dest=/tmp/readme.txt unsafe_writes=4xrtvdvr'\\n\\nlocalhost | FAILED! => {\\n\\n    \\\"changed\\\": false, \\n\\n    \\\"checksum\\\": \\\"e400e0d41a48a66433478d2c9b0f21269febe06b\\\", \\n\\n    \\\"failed\\\": true, \\n\\n    \\\"msg\\\": \\\"Boolean 4xrtvdvr not in either boolean list\\\"\\n\\n}\\n\\n```\\n\\n\\n\\nAfter:\\n\\n```\\n\\n[fedora-23:ansible (valid_bool_error %)]$ ansible -i hosts localhost -m copy -a 'src=README.md dest=/tmp/readme.txt unsafe_writes=4xrtvdvr'\\n\\nlocalhost | FAILED! => {\\n\\n    \\\"changed\\\": false, \\n\\n    \\\"checksum\\\": \\\"e400e0d41a48a66433478d2c9b0f21269febe06b\\\", \\n\\n    \\\"failed\\\": true, \\n\\n    \\\"msg\\\": \\\"4xrtvdvr is not a valid boolean. Valid booleans include: y,yes,on,1,true,1,True,n,no,off,0,false,0,False\\\"\\n\\n}\\n\\n```\", \n    \"title\": \"Show valid bool symbols in error for invalid bool symbol\"\n  }, \n  \"19568\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0.0\\nconfig file = /home/cory/panopta/infrastructure/src/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n- gc_storage\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /home/cory/panopta/infrastructure/src/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nConfig file changes:\\r\\n```\\r\\n[defaults]\\r\\njinja2_extensions = jinja2.ext.do,jinja2.ext.i18n\\r\\nhost_key_checking = False\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nAnsible Host: Ubuntu 16.04.1 LTS\\r\\nAnsible Target: localhost but reaching to GC Storage API\\r\\n\\r\\n##### SUMMARY\\r\\nIt looks like the gc_storage module is somehow throwing an error on the first upload of a new file to GC Storage buckets. It throws an error but it _does_ upload the file anyway. Subsequent runs to upload the file once it exists in the bucket function as expected.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nRun this, removed my info and replaced with variables. Normally this would be filled in\\r\\n```\\r\\nansible-playbook -i localhost gcp_config.yml -e \\\"gcp_config_bucket_name=$BUCKET project_id=$PROJECT envname=$ENVIRONMENT gs_access_key=$GS_KEY gs_secret_key=$GS_SECRET\\\" -vvvv\\r\\n```\\r\\n```yaml\\r\\n- name: upload template to GC Storage\\r\\n  gc_storage: bucket=\\\"{{gcp_config_bucket_name}}\\\" object=controlpanel.cfg src=/tmp/controlpanel.cfg mode=put force=yes gs_access_key=\\\"{{gs_access_key}}\\\" gs_secret_key=\\\"{{gs_secret_key}}\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nUpload a file to GC Storage without error every time\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nThe file is uploaded properly every time, the first time however throws an error below. On subsequent runs, it seems to run fine.\\r\\n\\r\\n```\\r\\n(junkenv)cory@cory-ThinkPad-X1-Carbon-2nd:~/panopta/infrastructure/src/ansible$ ansible-playbook -i localhost gcp_config.yml -e \\\"project_id=$PROJECT envname=$ENVIRONMENT gs_access_key=$GS_KEY gs_secret_key=$GS_SECRET\\\" -vvvv\\r\\nUsing /home/cory/panopta/infrastructure/src/ansible/ansible.cfg as config file\\r\\n [WARNING]: Host file not found: localhost\\r\\n\\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n\\r\\nLoading callback plugin default of type stdout, v2.0 from /home/cory/junkenv/local/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc\\r\\n\\r\\nPLAYBOOK: gcp_config.yml *******************************************************\\r\\n1 plays in gcp_config.yml\\r\\n\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [upload template to GC Storage] *******************************************\\r\\ntask path: /home/cory/panopta/infrastructure/src/ansible/roles/controlpanel-lb/tasks/gcp.yml:6\\r\\nUsing module file /home/cory/junkenv/local/lib/python2.7/site-packages/ansible/modules/core/cloud/google/gc_storage.py\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: cory\\r\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1482251197.78-85869852942481 `\\\" && echo ansible-tmp-1482251197.78-85869852942481=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1482251197.78-85869852942481 `\\\" ) && sleep 0'\\r\\n<127.0.0.1> PUT /tmp/tmpA3n_Ws TO /home/cory/.ansible/tmp/ansible-tmp-1482251197.78-85869852942481/gc_storage.py\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /home/cory/.ansible/tmp/ansible-tmp-1482251197.78-85869852942481/ /home/cory/.ansible/tmp/ansible-tmp-1482251197.78-85869852942481/gc_storage.py && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c 'python /home/cory/.ansible/tmp/ansible-tmp-1482251197.78-85869852942481/gc_storage.py; rm -rf \\\"/home/cory/.ansible/tmp/ansible-tmp-1482251197.78-85869852942481/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/tmp/ansible_wbzVcO/ansible_module_gc_storage.py\\\", line 437, in <module>\\r\\n    main()\\r\\n  File \\\"/tmp/ansible_wbzVcO/ansible_module_gc_storage.py\\\", line 405, in main\\r\\n    handle_put(module, gs, bucket, obj, overwrite, src, expiry)\\r\\n  File \\\"/tmp/ansible_wbzVcO/ansible_module_gc_storage.py\\\", line 308, in handle_put\\r\\n    upload_gsfile(module, gs, bucket, obj, src, expiration)\\r\\n  File \\\"/tmp/ansible_wbzVcO/ansible_module_gc_storage.py\\\", line 244, in upload_gsfile\\r\\n    url = key.generate_url(expiry)\\r\\n  File \\\"/home/cory/junkenv/local/lib/python2.7/site-packages/boto/s3/key.py\\\", line 707, in generate_url\\r\\n    version_id)\\r\\n  File \\\"/home/cory/junkenv/local/lib/python2.7/site-packages/boto/s3/connection.py\\\", line 393, in generate_url\\r\\n    expires = int(time.time() + expires_in)\\r\\nTypeError: unsupported operand type(s) for +: 'float' and 'str'\\r\\n\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"gc_storage\\\"\\r\\n    }, \\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_wbzVcO/ansible_module_gc_storage.py\\\\\\\", line 437, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_wbzVcO/ansible_module_gc_storage.py\\\\\\\", line 405, in main\\\\n    handle_put(module, gs, bucket, obj, overwrite, src, expiry)\\\\n  File \\\\\\\"/tmp/ansible_wbzVcO/ansible_module_gc_storage.py\\\\\\\", line 308, in handle_put\\\\n    upload_gsfile(module, gs, bucket, obj, src, expiration)\\\\n  File \\\\\\\"/tmp/ansible_wbzVcO/ansible_module_gc_storage.py\\\\\\\", line 244, in upload_gsfile\\\\n    url = key.generate_url(expiry)\\\\n  File \\\\\\\"/home/cory/junkenv/local/lib/python2.7/site-packages/boto/s3/key.py\\\\\\\", line 707, in generate_url\\\\n    version_id)\\\\n  File \\\\\\\"/home/cory/junkenv/local/lib/python2.7/site-packages/boto/s3/connection.py\\\\\\\", line 393, in generate_url\\\\n    expires = int(time.time() + expires_in)\\\\nTypeError: unsupported operand type(s) for +: 'float' and 'str'\\\\n\\\", \\r\\n    \\\"module_stdout\\\": \\\"\\\", \\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n\\tto retry, use: --limit @/home/cory/panopta/infrastructure/src/ansible/gcp_config.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=0    changed=0    unreachable=0    failed=1   \\r\\n\\r\\n(junkenv)cory@cory-ThinkPad-X1-Carbon-2nd:~/panopta/infrastructure/src/ansible$ \\r\\n```\\r\\n\", \n    \"component_name\": \"gc_storage\", \n    \"component_raw\": \"- gc_storage\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19568\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"gce\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/google/gc_storage.py\", \n    \"summary\": \"It looks like the gc_storage module is somehow throwing an error on the first upload of a new file to GC Storage buckets. It throws an error but it _does_ upload the file anyway. Subsequent runs to upload the file once it exists in the bucket function as expected.\", \n    \"title\": \"Ansible 2.2 - gc_storage module errors on new file to bucket\"\n  }, \n  \"19570\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"Original-code-by: https://github.com/nonshankus\\r\\nMore or less a rebase of PR onto master: https://github.com/ansible/ansible-modules-core/issues/3217\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_vol\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.1.1.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdd support to specify the encryption key for encrypted EBS volumes.\\r\\n\\r\\nIt adds an additional config `kms_key_id` that can be used to use a key other than the default.\\r\\n\", \n    \"component_name\": \"ec2_vol\", \n    \"component_raw\": \"ec2_vol\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19570\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"shipit\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_vol.py\", \n    \"summary\": \"Add support to specify the encryption key for encrypted EBS volumes.\\n\\n\\n\\nIt adds an additional config `kms_key_id` that can be used to use a key other than the default.\", \n    \"title\": \"ec2_vol: Add key selection support for EBS volume encryption.\"\n  }, \n  \"19571\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n - ec2.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nansible 2.2.0.0\\r\\n\\r\\n##### SUMMARY\\r\\nFrom the extended `ec2.ini' \\r\\n```\\r\\n# This allows you to override the ansible_ssh_host with an ec2 variable.\\r\\n# Ansible uses the value of ansible_ssh_host to ssh into a host.\\r\\n# If ansible_ssh_host isn't explicitly configured, it is implicitly set to the\\r\\n# hosts destination address.\\r\\n#\\r\\n# Example:\\r\\n#   # use private EC2 ip address as destination variable, for instance to include\\r\\n#   # stopped instances in the repository listing\\r\\n#   vpc_destination_variable = private_ip\\r\\n#   # but ssh to the public ip address when connecting to running instances\\r\\n#   ansible_ssh_host = ip_address\\r\\n#\\r\\n# Typically, ansible_ssh_host is either set to the ec2 variable 'ip_address'\\r\\n# or 'public_dns_name'.\\r\\n#\\r\\n#ansible_ssh_host=ip_address\\r\\n#ansible_ssh_host=public_dns_name\\r\\n```\\r\\n\", \n    \"component_name\": \"ec2.py\", \n    \"component_raw\": \"- ec2.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19571\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"From the extended `ec2.ini' \\n\\n```\\n\\n# This allows you to override the ansible_ssh_host with an ec2 variable.\\n\\n# Ansible uses the value of ansible_ssh_host to ssh into a host.\\n\\n# If ansible_ssh_host isn't explicitly configured, it is implicitly set to the\\n\\n# hosts destination address.\\n\\n#\\n\\n# Example:\\n\\n#   # use private EC2 ip address as destination variable, for instance to include\\n\\n#   # stopped instances in the repository listing\\n\\n#   vpc_destination_variable = private_ip\\n\\n#   # but ssh to the public ip address when connecting to running instances\\n\\n#   ansible_ssh_host = ip_address\\n\\n#\\n\\n# Typically, ansible_ssh_host is either set to the ec2 variable 'ip_address'\\n\\n# or 'public_dns_name'.\\n\\n#\\n\\n#ansible_ssh_host=ip_address\\n\\n#ansible_ssh_host=public_dns_name\\n\\n```\", \n    \"title\": \"support configuration option ansible_ssh_host\"\n  }, \n  \"19572\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0.0\\nconfig file = /home/ubuntu/work/playbooks/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nmodules-extra / cloud / openstack / os_recordset\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /home/ubuntu/work/playbooks/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n```\\r\\n[defaults]\\r\\ninventory=inventory/openstack.py\\r\\n\\r\\n[ssh_connection]\\r\\npipelining=False\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nUbuntu 16.04.  The task uses delegate_to: localhost\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nIt seems the os_recordset module is unable to create domain records with both A and  AAAA records if they both have the same name. This isn't uncommon in IPv4 and IPv6 deployments.  I should be able to create both A and AAAA records for the same name.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- hosts: testhost\\r\\n  tasks:\\r\\n    - name: Setting up testhost IPv4\\r\\n      delegate_to: localhost\\r\\n      os_recordset:\\r\\n        cloud: dev\\r\\n        state: present\\r\\n        zone: \\\"example.com.\\\"\\r\\n        name: \\\"www\\\"\\r\\n        recordset_type: A\\r\\n        records: \\\"{{ openstack.accessIPv4 }}\\\"\\r\\n        ttl: 3600\\r\\n    - name: Setting up testhost IPv6\\r\\n      delegate_to: localhost\\r\\n      os_recordset:\\r\\n        cloud: dev\\r\\n        state: present\\r\\n        zone: \\\"example.com.\\\"\\r\\n        name: \\\"www\\\"\\r\\n        recordset_type: AAAA\\r\\n        records: \\\"{{ openstack.accessIPv6 }}\\\"\\r\\n        ttl: 3600\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nI would expect both A and AAAA records to be created without error.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nCreating A/AAAA record and both an A and AAAA records already exist in OpenStack:\\r\\n```\\r\\nTASK [Setting up testhost IPv4] ************************************************\\r\\nfatal: [www.example.com -> localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Unable to create recordset www (Inner Exception: Duplicate RecordSet)\\\"}\\r\\n```\\r\\nCreating A record and only an AAAA record already exists in OpenStack:\\r\\n```\\r\\nTASK [Setting up testhost IPv4] ************************************************\\r\\nfatal: [www.example.com -> localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Error updating recordset www.example.com. (Inner Exception: u'10.0.0.1' is not a 'ipv6')\\\"}\\r\\n```\\r\\nVerbose on: \\r\\n```\\r\\nfatal: [www.example.com -> localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"api_timeout\\\": null, \\r\\n            \\\"auth\\\": null, \\r\\n            \\\"auth_type\\\": null, \\r\\n            \\\"availability_zone\\\": null, \\r\\n            \\\"cacert\\\": null, \\r\\n            \\\"cert\\\": null, \\r\\n            \\\"cloud\\\": \\\"dev\\\", \\r\\n            \\\"description\\\": null, \\r\\n            \\\"endpoint_type\\\": \\\"public\\\", \\r\\n            \\\"key\\\": null, \\r\\n            \\\"name\\\": \\\"www\\\", \\r\\n            \\\"records\\\": [\\r\\n                \\\"10.0.0.1\\\"\\r\\n            ], \\r\\n            \\\"recordset_type\\\": \\\"A\\\", \\r\\n            \\\"region_name\\\": null, \\r\\n            \\\"state\\\": \\\"present\\\", \\r\\n            \\\"timeout\\\": 180, \\r\\n            \\\"ttl\\\": 3600, \\r\\n            \\\"verify\\\": true, \\r\\n            \\\"wait\\\": true, \\r\\n            \\\"zone\\\": \\\"example.com.\\\"\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"os_recordset\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"Error updating recordset www.example.com. (Inner Exception: u'10.0.0.1' is not a 'ipv6')\\\"\\r\\n}\\r\\n\\r\\n```\\r\\nCreating an AAAA record and an A record already exists in OpenStack\\r\\n```\\r\\n    \\\"msg\\\": \\\"Error updating recordset www.example.com. (Inner Exception: u'<ipv6 address removed>' is not a 'ipv4')\\\"\\r\\n\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"s-extra / cloud / openstack / os_recordset\", \n    \"component_raw\": \"modules-extra / cloud / openstack / os_recordset\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19572\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_recordset.py\", \n    \"summary\": \"It seems the os_recordset module is unable to create domain records with both A and  AAAA records if they both have the same name. This isn't uncommon in IPv4 and IPv6 deployments.  I should be able to create both A and AAAA records for the same name.\", \n    \"title\": \"os_recordset module: Unable to have both A and AAAA records\"\n  }, \n  \"19573\": {\n    \"ansible_version\": \"ansible 2.1.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_get_url module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nansible 2.1.0.0\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n##### SUMMARY\\r\\nThe \\\"win_get_url\\\" is, in theory, the Windows equivalent of the standard \\\"get_url\\\" module (which is normally run on a Linux node).  However, in practice, there are certain limitations that the win_get_url module has versus the get_url module.  For me, the most striking difference is the lack of a \\\"headers:\\\" parameter.  This is something that we need, as we need some way of passing in an API token in order to download a file.   While the \\\"win_uri\\\" module DOES allow for a \\\"headers\\\" parameter, it is also limited by not having a \\\"dest\\\" parameter (which I logged as a separate issue, 19575: https://github.com/ansible/ansible/issues/19575).\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nCompare the acceptable options here:\\r\\nhttp://docs.ansible.com/ansible/get_url_module.html\\r\\n\\r\\nversus here:\\r\\n\\r\\nhttp://docs.ansible.com/ansible/win_get_url_module.html\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\ntasks:\\r\\n    - name: download FILE\\r\\n      win_get_url:\\r\\n         force: yes\\r\\n         dest: C:\\\\Temp\\\\\\r\\n         url: <URL>\\r\\n         headers:\\r\\n            <API_TOKEN>: <API_TOKEN_VALUE>\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThis should be a valid use of the win_get_url module, and the file should be downloaded to the specified directory after passing in the correct API token credentials.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\nI get a 404 error message, presumably because this extra unknown option is messing with the web request.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nException calling \\\\\\\"DownloadFile\\\\\\\" with \\\\\\\"2\\\\\\\" argument(s): \\\\\\\"The remote server returned an error: (404) Not Found.\\\\\\\"\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"win_get_url\", \n    \"component_raw\": \"win_get_url module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19573\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\", \n      \"module\", \n      \"waiting_on_contributor\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_get_url.ps1\", \n    \"summary\": \"The \\\"win_get_url\\\" is, in theory, the Windows equivalent of the standard \\\"get_url\\\" module (which is normally run on a Linux node).  However, in practice, there are certain limitations that the win_get_url module has versus the get_url module.  For me, the most striking difference is the lack of a \\\"headers:\\\" parameter.  This is something that we need, as we need some way of passing in an API token in order to download a file.   While the \\\"win_uri\\\" module DOES allow for a \\\"headers\\\" parameter, it is also limited by not having a \\\"dest\\\" parameter (which I logged as a separate issue, 19575: https://github.com/ansible/ansible/issues/19575).\", \n    \"title\": \"Unable to pass in the \\\"headers:\\\" parameter into win_get_url (unlike get_url)\"\n  }, \n  \"19574\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /sbux-dci/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\neos_command\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /sbux-dci/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nANSIBLE_NET_USERNAME=xxxxxx\\r\\nANSIBLE_NET_PASSWORD=1xxx'xxx1\\r\\nANSIBLE_NET_AUTH_PASS=1xxx'xxx1\\r\\n\\r\\nusing random password generator to get password so it has multiple special characters in it - the single quote is the suspected problem\\r\\nexporting ANSIBLE_NET_PASSWORD with actual password with double quotes \\\"xxxxxxx\\\"\\r\\n   example:  export ANSIBLE_NET_PASSWORD=\\\"1xxx'xxx1\\\"\\r\\n                    export ANSIBLE_NET_AUTH_PASS=$ANSIBLE_NET_PASSWORD\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n```\\r\\nrunning from Docker container:\\r\\nDISTRIB_ID=Ubuntu\\r\\nDISTRIB_RELEASE=16.04\\r\\nDISTRIB_CODENAME=xenial\\r\\nDISTRIB_DESCRIPTION=\\\"Ubuntu 16.04 LTS\\\"\\r\\n```\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nunable to connect to devices using the eos modules when passing a single quote in a password environment variable. removed single quote and verified connectivity. The failed password contained the following characters:\\r\\n```\\r\\n    + ! ' : >\\r\\n```\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- name: Cache EOS Running Configuration\\r\\n  eos_command:\\r\\n    commands:\\r\\n      - command: \\\"show running-config all\\\"\\r\\n        output: 'text'\\r\\n    provider: \\\"{{ eos_connection }}\\\"\\r\\n  register: running_config\\r\\n  no_log: false\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nwhen I used a different password I was able to connect - so verified pw was the problem. am able to ssh into device directly with username/pw \\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nfatal: [xxxxxxxxxxx]: FAILED! => {\\r\\n    \\\"body\\\": \\\"Unable to authenticate user: Bad username/password combination\\\",\\r\\n    \\\"cache-control\\\": \\\"no-store, no-cache, must-revalidate, max-age=0, pre-check=0, post-check=0\\\",\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"connection\\\": \\\"close\\\",\\r\\n    \\\"content-length\\\": \\\"62\\\",\\r\\n    \\\"content-type\\\": \\\"text/plain\\\",\\r\\n    \\\"date\\\": \\\"Tue, 20 Dec 2016 17:14:19 GMT\\\",\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"auth_pass\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n            \\\"authorize\\\": true,\\r\\n            \\\"commands\\\": [\\r\\n                {\\r\\n                    \\\"command\\\": \\\"show running-config all\\\",\\r\\n                    \\\"output\\\": \\\"text\\\"\\r\\n                }\\r\\n            ],\\r\\n            \\\"host\\\": \\\"xxxxxxxx\\\",\\r\\n            \\\"interval\\\": 1,\\r\\n            \\\"match\\\": \\\"all\\\",\\r\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n            \\\"port\\\": null,\\r\\n            \\\"provider\\\": {\\r\\n                \\\"authorize\\\": true,\\r\\n                \\\"host\\\": \\\"xxxxx\\\",\\r\\n                \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n                \\\"transport\\\": \\\"eapi\\\",\\r\\n                \\\"use_ssl\\\": true,\\r\\n                \\\"username\\\": \\\"xxxxx\\\",\\r\\n                \\\"validate_certs\\\": false\\r\\n            },\\r\\n            \\\"retries\\\": 10,\\r\\n            \\\"ssh_keyfile\\\": null,\\r\\n            \\\"timeout\\\": 10,\\r\\n            \\\"transport\\\": \\\"eapi\\\",\\r\\n            \\\"use_ssl\\\": true,\\r\\n            \\\"username\\\": \\\"xxxxxx\\\",\\r\\n            \\\"validate_certs\\\": false,\\r\\n            \\\"wait_for\\\": null\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"eos_command\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"HTTP Error 401: Unauthorized\\\",\\r\\n    \\\"pragma\\\": \\\"no-cache\\\",\\r\\n    \\\"server\\\": \\\"nginx\\\",\\r\\n    \\\"status\\\": 401,\\r\\n    \\\"url\\\": \\\"https://xxxxxxxxx.someone.com:443/command-api\\\",\\r\\n    \\\"www-authenticate\\\": \\\"Basic realm=\\\\\\\"COMMAND_API_AUTH\\\\\\\"\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"eos_command\", \n    \"component_raw\": \"eos_command\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19574\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"P2\", \n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/eos/eos_command.py\", \n    \"summary\": \"unable to connect to devices using the eos modules when passing a single quote in a password environment variable. removed single quote and verified connectivity. The failed password contained the following characters:\\n\\n```\\n\\n    + ! ' : >\\n\\n```\", \n    \"title\": \"cant connect to device if single quote is in password environment variable\"\n  }, \n  \"19579\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nSlack module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nN/A\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n##### SUMMARY\\r\\nSlack notification messages are being HTML escaped before being sent to Slack, causing all Slack markup to appear as literal strings. This issue was introduced by [this PR](https://github.com/ansible/ansible-modules-extras/pull/3032).\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nExecute the following command using a valid Slack webhook token:\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- name: send a slack message\\r\\n  slack:\\r\\n    token: \\\"{{ valid_token }}\\\"\\r\\n    username: \\\"Test Message\\\"\\r\\n    msg: \\\"<https://google.com|google>\\\"\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nA message from Test Message appearing as: [google](https://google.com)\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nA message from Test Message appearing as: `<https://google.com|google>`\\r\\n<!--- Paste verbatim command output between quotes below -->\", \n    \"component_name\": \"slack\", \n    \"component_raw\": \"Slack module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19579\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/notification/slack.py\", \n    \"summary\": \"Slack notification messages are being HTML escaped before being sent to Slack, causing all Slack markup to appear as literal strings. This issue was introduced by [this PR](https://github.com/ansible/ansible-modules-extras/pull/3032).\", \n    \"title\": \"Slack module escapes all message text, preventing use of Slack markup\"\n  }, \n  \"19582\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_chocolatey\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThis commit adds support for side by side installations of the different\\r\\nversions of the same Chocolatey package in Ansible.\\r\\n\\r\\nInternally the -m flag will be set when running the choco.exe install *\\r\\ncommand. This will make Chocolatey disregard the currently installed\\r\\nversion and thus not upgrade, but install it side-by-side.\\r\\n\\r\\nThis change will probably be unsupported by some packages and maybe there\\r\\nwill be a need to provide a path to Ansible's win_chocolatey module, so it\\r\\nis easier to manage multiple side-by-side installations of the same\\r\\npackage.\\r\\n\", \n    \"component_name\": \"win_chocolatey\", \n    \"component_raw\": \"win_chocolatey\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19582\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"committer_review\", \n      \"feature\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_chocolatey.ps1\", \n    \"summary\": \"This commit adds support for side by side installations of the different\\n\\nversions of the same Chocolatey package in Ansible.\\n\\n\\n\\nInternally the -m flag will be set when running the choco.exe install *\\n\\ncommand. This will make Chocolatey disregard the currently installed\\n\\nversion and thus not upgrade, but install it side-by-side.\\n\\n\\n\\nThis change will probably be unsupported by some packages and maybe there\\n\\nwill be a need to provide a path to Ansible's win_chocolatey module, so it\\n\\nis easier to manage multiple side-by-side installations of the same\\n\\npackage.\", \n    \"title\": \"[win_chocolatey]Support for Side by side installs\"\n  }, \n  \"19583\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - I gotta be honest, not sure how this classifies, could be a little of each category\\r\\n\\r\\n##### COMPONENT NAME\\r\\nMath filters `human_to_bytes` and `human_readable`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nI started out innocently updating someone's galaxy role and stumbled into the endless rabbit hole of size prefixes in computing (kilo-/mega-/giga-/tera-), and now I'm worried about Ansible's treatment of these prefixes.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nA brief history of the problem: computers measure bytes with two different systems:\\r\\n\\r\\n1. Kilobytes/Megabytes: Base 10, so 1 KB = 1000 bytes, 1 MB = 1000 KB, etc. Sometimes referred to as the \\\"SI\\\" standard. Commonly abbreviated as KB/MB/GB.\\r\\n2. Kibibytes/Mebibytes: Base 2, so 1 KiB = 1024 bytes, 1 MiB = 1024 KiB, etc. Sometimes referred to as the \\\"IEC\\\" standard. Most precisely abbreviated as KiB/MiB/GiB, but also commonly abbreviated as Ki/Mi/Gi or K/M/G. Even worse, also often abbreviated as KB/MB/GB and used indistinguishably from the base-10 prefixes.\\r\\n\\r\\n[More info from Wikipedia](https://en.wikipedia.org/wiki/Binary_prefix). Needless to say this has been a source of grief in computing for a long time. AFAIK, currently the IEC standard has won out in most areas, with the couple notable exceptions being how hard drive capacity is advertised and how network throughput is sometimes measured. This is why your \\\"2 TB\\\" hard drive is only 1.8 TiB once you plug it in.\\r\\n\\r\\nHere's what worries me: right now Ansible's tools use KB/MB/GB prefixes, which are probably the most ambiguous and likely to cause confusion.\\r\\n\\r\\n```sh\\r\\n$ ansible -m debug -a \\\"msg={{'2000'|human_readable(unit='K')}}\\\" localhost\\r\\nlocalhost | SUCCESS => {\\r\\n    \\\"msg\\\": \\\"1.95 KB\\\"\\r\\n}\\r\\n```\\r\\n\\r\\n```sh\\r\\n$ ansible -m debug -a \\\"msg={{'1K'|human_to_bytes}}\\\" localhost\\r\\nlocalhost | SUCCESS => {\\r\\n    \\\"msg\\\": \\\"1024\\\"\\r\\n}\\r\\n\\r\\n$ ansible -m debug -a \\\"msg={{'1KB'|human_to_bytes}}\\\" localhost\\r\\nlocalhost | SUCCESS => {\\r\\n    \\\"msg\\\": \\\"1024\\\"\\r\\n}\\r\\n\\r\\n$ ansible -m debug -a \\\"msg={{'1KiB'|human_to_bytes}}\\\" localhost\\r\\nlocalhost | FAILED! => {\\r\\n    \\\"failed\\\": true, \\r\\n    \\\"msg\\\": \\\"human_to_bytes() can't interpret following string: 1KiB\\\"\\r\\n}\\r\\n```\\r\\n\\r\\nThis is not consistent with, for example, how `dd` reads input\\u2014it treats \\\"KB\\\" as 1000 bytes.\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nIt's a tough judgment call as to what *should* happen. Here is my suggestion:\\r\\n\\r\\n* Output should use K/M/G. This is the most common practice among Unix tools like `ls -h` and `df -h` that report IEC numbers.\\r\\n* Parsing should accept K/M/G, Ki/Mi/Gi, and KiB/MiB/GiB and treat these as IEC prefixes.\\r\\n* Parsing should either accept KB/MB/GB and treat them as SI prefixes, or it should reject these formats for ambiguity, or it should take an option to the filter to specify which to use.\\r\\n\", \n    \"component_name\": \"math filters human_to_bytes and human_readable\", \n    \"component_raw\": \"Math filters `human_to_bytes` and `human_readable`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19583\", \n    \"issue_type\": \"I gotta be honest not sure how this classifies could be a little of each category\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I started out innocently updating someone's galaxy role and stumbled into the endless rabbit hole of size prefixes in computing (kilo-/mega-/giga-/tera-), and now I'm worried about Ansible's treatment of these prefixes.\", \n    \"title\": \"Megabytes vs. Mebibytes a.k.a. IEC vs. SI vs. common usage a.k.a the great memory unit clusterfsck\"\n  }, \n  \"19585\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel 372018dfce) last updated 2016/07/21 182738 (GMT +1100)\\nlib/ansible/modules/core (detached HEAD 7de287237f) last updated 2016/07/21 182759 (GMT +1100)\\nlib/ansible/modules/extras (detached HEAD 68ca157f3b) last updated 2016/07/21 182805 (GMT +1100)\\nconfig file =\\nconfigured module search path = Default w/o overrides\\nAlso had issue on 2.1.\", \n    \"body\": \"_From @d3v1an7 on July 21, 2016 8:38_\\n\\n##### ISSUE TYPE\\n- Bug Report [or]\\n- Documentation Report\\n##### COMPONENT NAME\\n\\nosx_defaults\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0 (devel 372018dfce) last updated 2016/07/21 18:27:38 (GMT +1100)\\n  lib/ansible/modules/core: (detached HEAD 7de287237f) last updated 2016/07/21 18:27:59 (GMT +1100)\\n  lib/ansible/modules/extras: (detached HEAD 68ca157f3b) last updated 2016/07/21 18:28:05 (GMT +1100)\\n  config file =\\n  configured module search path = Default w/o overrides\\n```\\n\\nAlso had issue on 2.1.\\n##### CONFIGURATION\\n\\nPlaybook level ansible.cfg\\n\\n```\\nretry_files_enabled = False\\n```\\n##### OS / ENVIRONMENT\\n\\n10.11.5\\n##### SUMMARY\\n\\nWhen attempting to interface with an array, I get the error: `Invalid value. Expected value to be an array`.\\n##### STEPS TO REPRODUCE\\n\\nCopy code from docs: http://docs.ansible.com/ansible/osx_defaults_module.html\\n\\n```\\n- osx_defaults:\\n    key: AppleLanguages\\n    type: array\\n    value: [\\\"en\\\", \\\"nl\\\"]\\n```\\n##### EXPECTED RESULTS\\n\\nA green ok :)\\n##### ACTUAL RESULTS\\n\\n```\\nTASK [system/install : osx_defaults] *******************************************\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Invalid value. Expected value to be an array\\\"}\\n```\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#2610_\", \n    \"component_name\": \"osx_defaults\", \n    \"component_raw\": \"osx_defaults\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19585\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/osx_defaults.py\", \n    \"summary\": \"When attempting to interface with an array, I get the error: `Invalid value. Expected value to be an array`.\", \n    \"title\": \"osx_defaults \\\"Invalid value. Expected value to be an array\\\"\"\n  }, \n  \"19586\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\\nI believe this is unchanged in 2.3 from my quick read of the source I have not however tested it.\", \n    \"body\": \"\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\neos_config\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\nI believe this is unchanged in 2.3 from my quick read of the source, I have not however tested it.\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nEOS 4.14.12M \\r\\n\\r\\n##### SUMMARY\\r\\nEOS config attempts to use a configuration session in a way that isnt supported on older EOS versions. Specifically the \\\"show session-config diffs\\\" command doesnt always exist.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nOn older versions of EOS specifically tested against 4.14.12M this play will fail\\r\\n```yaml\\r\\n---\\r\\n- name: Change the password\\r\\n  eos_config:\\r\\n    provider: \\\"{{ cli }}\\\"\\r\\n    force: true\\r\\n    lines:\\r\\n      - \\\"username admin privilege 15 role network-admin secret 0 {{ secret_password }}\\\"\\r\\n```\\r\\n##### EXPECTED RESULTS\\r\\nSuccessful run of the play\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nfatal: [<removed>]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"commands\\\": [\\r\\n        \\\"configure session ansible_1482233620\\\",\\r\\n        \\\"show session-config diffs\\\",\\r\\n        \\\"end\\\"\\r\\n    ],\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"after\\\": null,\\r\\n            \\\"auth_pass\\\": null,\\r\\n            \\\"authorize\\\": false,\\r\\n            \\\"backup\\\": false,\\r\\n            \\\"before\\\": null,\\r\\n            \\\"config\\\": null,\\r\\n            \\\"defaults\\\": false,\\r\\n            \\\"force\\\": true,\\r\\n            \\\"host\\\": <removed>,\\r\\n            \\\"lines\\\": [\\r\\n                \\\"username admin privilege 15 role network-admin secret 0 <removed>\\\",\\r\\n            ],\\r\\n            \\\"match\\\": \\\"none\\\",\\r\\n            \\\"parents\\\": null,\\r\\n            \\\"password\\\": <removed>\\r\\n            \\\"port\\\": null,\\r\\n            \\\"provider\\\": {\\r\\n                \\\"host\\\": <removed>\\r\\n                \\\"password\\\": <removed>\\r\\n                \\\"transport\\\": \\\"cli\\\",\\r\\n                \\\"username\\\": <removed>\\r\\n            },\\r\\n            \\\"replace\\\": \\\"line\\\",\\r\\n            \\\"save\\\": false,\\r\\n            \\\"src\\\": null,\\r\\n            \\\"ssh_keyfile\\\": null,\\r\\n            \\\"timeout\\\": 10,\\r\\n            \\\"transport\\\": \\\"cli\\\",\\r\\n            \\\"use_ssl\\\": true,\\r\\n            \\\"username\\\": <removed>,\\r\\n            \\\"validate_certs\\\": true\\r\\n        }\\r\\n    },\\r\\n    \\\"msg\\\": \\\"matched error in response: show session-config diffs\\\\r\\\\n% Invalid input\\\\r\\\\n<removed>(config-s-ansibl)#\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"eos_config\", \n    \"component_raw\": \"eos_config\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19586\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/eos/eos_config.py\", \n    \"summary\": \"EOS config attempts to use a configuration session in a way that isnt supported on older EOS versions. Specifically the \\\"show session-config diffs\\\" command doesnt always exist.\", \n    \"title\": \"eos_config: fails on earlier EOS versions due to session-config\"\n  }, \n  \"19587\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nyum module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.2.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nMac OS Sierra 10.12.2 (16C67)\\r\\n\\r\\n##### SUMMARY\\r\\nyum module doesnt take --skip-broken as parameter somewhere\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\ntry doing an upgrade via yum on any cpanel host and you are likely to encounter that \\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n    - name: Centos package upgrade \\r\\n      yum: name=* state=latest\\r\\n      when: ansible_os_family == \\\"RedHat\\\"\\r\\n```\\r\\n\", \n    \"component_name\": \"yum\", \n    \"component_raw\": \"yum module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19587\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/yum.py\", \n    \"summary\": \"yum module doesnt take --skip-broken as parameter somewhere\", \n    \"title\": \"yum skip broken issue\"\n  }, \n  \"19588\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/ubuntu/work/playbooks/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\ncloud/openstack/os_recordset\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/ubuntu/work/playbooks/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nFixes #19572 \\r\\n\\r\\nOnly the name of the DNS record was searched by the `shade` client (not by type too). While there can only be 1 unique entry per name + type,  it was assuming that there could only be 1 unique entry per name.  In our case, we have both A and AAAA records and thus it was getting hung up when trying to read (or write) a second record for the same DNS name.\\r\\n\\r\\nThis patch searches for the specific name + type before passing it to the rest of the module to work on. \\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n\\r\\nBefore (when both A and AAAA records already existed)\\r\\n```\\r\\nTASK [Setup testhost A record] ************************************************\\r\\nfatal: [www.example.com -> localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Unable to create recordset www (Inner Exception: Duplicate RecordSet)\\\"}\\r\\nTASK [Setup testhost AAAA record] ************************************************\\r\\nfatal: [www.example.com -> localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Unable to create recordset www (Inner Exception: Duplicate RecordSet)\\\"}\\r\\n```\\r\\n\\r\\nBEFORE (when only an AAAA record existed)\\r\\n```\\r\\nTASK [Setup testhost A record] ************************************************\\r\\nfatal: [www.example.com -> localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Error updating recordset www.example.com. (Inner Exception: u'10.0.0.1' is not a 'ipv6')\\\"}\\r\\n```\\r\\n\\r\\nAFTER (when both exist):\\r\\n```\\r\\nTASK [Setup testhost A record] ***********************************************\\r\\nok: [www.example.com -> localhost]\\r\\n\\r\\nTASK [Setup testhost AAAA record] ********************************************\\r\\nok: [www.example.com -> localhost]\\r\\n```\\r\\nAFTER (when only an AAAA record exists)\\r\\n```\\r\\nTASK [Setup testhost A record] ***********************************************\\r\\nchanged: [www.example.com -> localhost]\\r\\n\\r\\nTASK [Setup testhost AAAA record] ********************************************\\r\\nok: [www.example.com -> localhost]\\r\\n```\\r\\nAFTER (when only an A record exists)\\r\\n```\\r\\nTASK [Setup testhost A record] ***********************************************\\r\\nok: [www.example.com -> localhost]\\r\\n\\r\\nTASK [Setup testhost AAAA record] ********************************************\\r\\nchanged: [www.example.com -> localhost]\\r\\n```\\r\\n\", \n    \"component_name\": \"cloud/openstack/os_recordset\", \n    \"component_raw\": \"cloud/openstack/os_recordset\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19588\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_recordset.py\", \n    \"summary\": \"Fixes #19572 \\n\\n\\n\\nOnly the name of the DNS record was searched by the `shade` client (not by type too). While there can only be 1 unique entry per name + type,  it was assuming that there could only be 1 unique entry per name.  In our case, we have both A and AAAA records and thus it was getting hung up when trying to read (or write) a second record for the same DNS name.\\n\\n\\n\\nThis patch searches for the specific name + type before passing it to the rest of the module to work on. \\n\\n\\n\\n\\n\\n\\n\\n\\n\\nBefore (when both A and AAAA records already existed)\\n\\n```\\n\\nTASK [Setup testhost A record] ************************************************\\n\\nfatal: [www.example.com -> localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Unable to create recordset www (Inner Exception: Duplicate RecordSet)\\\"}\\n\\nTASK [Setup testhost AAAA record] ************************************************\\n\\nfatal: [www.example.com -> localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Unable to create recordset www (Inner Exception: Duplicate RecordSet)\\\"}\\n\\n```\\n\\n\\n\\nBEFORE (when only an AAAA record existed)\\n\\n```\\n\\nTASK [Setup testhost A record] ************************************************\\n\\nfatal: [www.example.com -> localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Error updating recordset www.example.com. (Inner Exception: u'10.0.0.1' is not a 'ipv6')\\\"}\\n\\n```\\n\\n\\n\\nAFTER (when both exist):\\n\\n```\\n\\nTASK [Setup testhost A record] ***********************************************\\n\\nok: [www.example.com -> localhost]\\n\\n\\n\\nTASK [Setup testhost AAAA record] ********************************************\\n\\nok: [www.example.com -> localhost]\\n\\n```\\n\\nAFTER (when only an AAAA record exists)\\n\\n```\\n\\nTASK [Setup testhost A record] ***********************************************\\n\\nchanged: [www.example.com -> localhost]\\n\\n\\n\\nTASK [Setup testhost AAAA record] ********************************************\\n\\nok: [www.example.com -> localhost]\\n\\n```\\n\\nAFTER (when only an A record exists)\\n\\n```\\n\\nTASK [Setup testhost A record] ***********************************************\\n\\nok: [www.example.com -> localhost]\\n\\n\\n\\nTASK [Setup testhost AAAA record] ********************************************\\n\\nchanged: [www.example.com -> localhost]\\n\\n```\", \n    \"title\": \"os_recordset fix for names with multiple DNS record types\"\n  }, \n  \"19590\": {\n    \"ansible_version\": \"ansible 2.0.2.0\", \n    \"body\": \"##### ISSUE TYPE\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\ncloud/openstack/os_quota\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.0.2.0\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nAllow full control over setting and updating project quotas in OpenStack.\\n\\nDoes require shade > 1.9.0\\nTested with shade 1.9.1\\n\\n<!---\\n\\n<!--- Paste verbatim command output below, e.g. before and after your change -->\\n\\n```\\nExample Playbook:\\n\\n---\\n\\n- include_vars: /etc/openstack_deploy/projects.yml\\n  tags: ['always']\\n  ignore_errors: yes\\n\\n- name: Update srt_stress_testing quota\\n  os_quota:\\n    name: \\\"{{ item.name }}\\\"\\n    backup_gigabytes: \\\"{{ item.backup_gigabytes }}\\\"\\n    backups: \\\"{{ item.backups }}\\\"\\n    cores: \\\"{{ item.cores }}\\\"\\n    fixed_ips: \\\"{{ item.fixed_ips }}\\\"\\n    floating_ips: \\\"{{ item.floating_ips }}\\\"\\n    gigabytes: \\\"{{ item.gigabytes }}\\\"\\n    injected_file_size: \\\"{{ item.injected_file_size }}\\\"\\n    injected_files: \\\"{{ item.injected_files }}\\\"\\n    injected_path_size: \\\"{{ item.injected_path_size }}\\\"\\n    instances: \\\"{{ item.instances }}\\\"\\n    port: \\\"{{ item.port }}\\\"\\n    key_pairs: \\\"{{ item.key_pairs }}\\\"\\n    per_volume_gigabytes: \\\"{{ item.per_volume_gigabytes }}\\\"\\n    properties: \\\"{{ item.properties }}\\\"\\n    ram: \\\"{{ item.ram }}\\\"\\n    secgroup_rules: \\\"{{ item.secgroup_rules }}\\\"\\n    secgroups: \\\"{{ item.secgroups }}\\\"\\n    server_group_members: \\\"{{ item.server_group_members }}\\\"\\n    server_groups: \\\"{{ item.server_groups }}\\\"\\n    snapshots: \\\"{{ item.snapshots }}\\\"\\n    volumes: \\\"{{ item.volumes }}\\\"\\n    volumes_types:\\n      volumes_lvm: \\\"{{ item.volumes_lvm }}\\\"\\n    snapshots_types:\\n      snapshots_lvm: \\\"{{ item.snapshots_lvm }}\\\"\\n    gigabytes_types:\\n      gigabytes_lvm: \\\"{{ item.gigabytes_lvm }}\\\"\\n  with_items:\\n    - \\\"{{ projects }}\\\"\\n```\\n\", \n    \"component_name\": \"cloud/openstack/os_quota\", \n    \"component_raw\": \"cloud/openstack/os_quota\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19590\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_quota.py\", \n    \"summary\": \"Allow full control over setting and updating project quotas in OpenStack.\\n\\nDoes require shade > 1.9.0\\nTested with shade 1.9.1\\n\\n\\n\\n```\\nExample Playbook:\\n\\n---\\n\\n- include_vars: /etc/openstack_deploy/projects.yml\\n  tags: ['always']\\n  ignore_errors: yes\\n\\n- name: Update srt_stress_testing quota\\n  os_quota:\\n    name: \\\"{{ item.name }}\\\"\\n    backup_gigabytes: \\\"{{ item.backup_gigabytes }}\\\"\\n    backups: \\\"{{ item.backups }}\\\"\\n    cores: \\\"{{ item.cores }}\\\"\\n    fixed_ips: \\\"{{ item.fixed_ips }}\\\"\\n    floating_ips: \\\"{{ item.floating_ips }}\\\"\\n    gigabytes: \\\"{{ item.gigabytes }}\\\"\\n    injected_file_size: \\\"{{ item.injected_file_size }}\\\"\\n    injected_files: \\\"{{ item.injected_files }}\\\"\\n    injected_path_size: \\\"{{ item.injected_path_size }}\\\"\\n    instances: \\\"{{ item.instances }}\\\"\\n    port: \\\"{{ item.port }}\\\"\\n    key_pairs: \\\"{{ item.key_pairs }}\\\"\\n    per_volume_gigabytes: \\\"{{ item.per_volume_gigabytes }}\\\"\\n    properties: \\\"{{ item.properties }}\\\"\\n    ram: \\\"{{ item.ram }}\\\"\\n    secgroup_rules: \\\"{{ item.secgroup_rules }}\\\"\\n    secgroups: \\\"{{ item.secgroups }}\\\"\\n    server_group_members: \\\"{{ item.server_group_members }}\\\"\\n    server_groups: \\\"{{ item.server_groups }}\\\"\\n    snapshots: \\\"{{ item.snapshots }}\\\"\\n    volumes: \\\"{{ item.volumes }}\\\"\\n    volumes_types:\\n      volumes_lvm: \\\"{{ item.volumes_lvm }}\\\"\\n    snapshots_types:\\n      snapshots_lvm: \\\"{{ item.snapshots_lvm }}\\\"\\n    gigabytes_types:\\n      gigabytes_lvm: \\\"{{ item.gigabytes_lvm }}\\\"\\n  with_items:\\n    - \\\"{{ projects }}\\\"\\n```\", \n    \"title\": \"Adding os_quota support to the OpenStack modules\"\n  }, \n  \"19591\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 8c5d321a23) last updated 2016/12/21 113316 (GMT +1000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nhacking/test-module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel 8c5d321a23) last updated 2016/12/21 11:33:16 (GMT +1000)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nIf a non-system python is used to run test-module (as is\\r\\nthe case with brew python for OS X or in a virtualenv)\\r\\nthen that same python should be used when exploding\\r\\nand executing the module.\\r\\n\", \n    \"component_name\": \"hacking/test-\", \n    \"component_raw\": \"hacking/test-module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19591\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"If a non-system python is used to run test-module (as is\\n\\nthe case with brew python for OS X or in a virtualenv)\\n\\nthen that same python should be used when exploding\\n\\nand executing the module.\", \n    \"title\": \"Use the python used with test-module to run modules\"\n  }, \n  \"19593\": {\n    \"ansible_version\": \"2.2.0.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\ncloud/vmware/vsphere_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nIt would be a handy feature to be able to deploy a new VM using the vsphere_guest module and also change the NIC afterward (optionally). So you can deploy any instance from one template and then as the last step, prior to boot - to configure the NIC to be on a different VLAN.\\r\\n\\r\\nIf by design not doable whilst templating, then allow JUST the nic to be altered as a new task using vm_nic block. Which I believe isn't possible, considering the configuration requires vm_disk, vm_hardware as extras. \\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n# from the vsphere_guest documentation.\\r\\n\\r\\n# Deploy a guest from a template\\r\\n- vsphere_guest:\\r\\n    vcenter_hostname: vcenter.mydomain.local\\r\\n    username: myuser\\r\\n    password: mypass\\r\\n    guest: newvm001\\r\\n    from_template: yes\\r\\n    template_src: centosTemplate\\r\\n    cluster: MainCluster\\r\\n    resource_pool: \\\"/Resources\\\"\\r\\n    nic: DMZ\\r\\n    vm_extra_config:\\r\\n      folder: MyFolder\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n- Nic is configured on the VM specified in \\\"hostname\\\" to be the new nic in \\\"nic\\\" variable when deploying from template. \\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nN/A - feature request, \\\"nic\\\" or similar doesn't exist.\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"cloud/vmware/vsphere_guest\", \n    \"component_raw\": \"cloud/vmware/vsphere_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19593\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\", \n    \"summary\": \"It would be a handy feature to be able to deploy a new VM using the vsphere_guest module and also change the NIC afterward (optionally). So you can deploy any instance from one template and then as the last step, prior to boot - to configure the NIC to be on a different VLAN.\\n\\n\\n\\nIf by design not doable whilst templating, then allow JUST the nic to be altered as a new task using vm_nic block. Which I believe isn't possible, considering the configuration requires vm_disk, vm_hardware as extras.\", \n    \"title\": \"vsphere_guest - Ability to deploy from template and change nic label\"\n  }, \n  \"19596\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\ninventory\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\ndynamic inventory script based on puppetdb using the python pypuppetdb library so ansible and puppet can be used together\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"inventory\", \n    \"component_raw\": \"inventory\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19596\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:inventory/contrib_script\", \n      \"feature\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"dynamic inventory script based on puppetdb using the python pypuppetdb library so ansible and puppet can be used together\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"Feature: puppetdb based dynamic inventory\"\n  }, \n  \"19600\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodule: s3\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nRunning default ansible with s3 and boto\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nRunning Amazon Linux AMI 2016.09.0 (HVM), SSD Volume Type\\r\\n\\r\\n##### SUMMARY\\r\\ns3 module fails on wrong s3 key.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nCreate S3 bucket \\\"myS3bucket\\\"\\r\\nCreate key s3://myS3bucket/one/two/three.txt\\r\\n\\r\\nRun this task on localhost:\\r\\n```yaml\\r\\n    - name: download ec2.py from s3\\r\\n      s3:\\r\\n        bucket: myS3bucket\\r\\n        object: /one/\\r\\n        dest: /tmp/test\\r\\n        mode: get\\r\\n```\\r\\n\\r\\n```yaml\\r\\n    - name: download ec2.py from s3 alternative)\\r\\n      s3:\\r\\n        bucket: myS3bucket\\r\\n        object: /one/two/\\r\\n        dest: /tmp/test\\r\\n        mode: get\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nClean failure on both tasks\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nThe first task results in module failure, the second one does not.\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [download ec2.py from s3] *************************************************\\r\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: OSError: [Errno 2] No such file or directory: '/etc/ansible/test/ec2.py'\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_hY5S7p/ansible_module_s3.py\\\\\\\", line 686, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_hY5S7p/ansible_module_s3.py\\\\\\\", line 519, in main\\\\n    download_s3file(module, s3, bucket, obj, dest, retries, version=version)\\\\n  File \\\\\\\"/tmp/ansible_hY5S7p/ansible_module_s3.py\\\\\\\", line 329, in download_s3file\\\\n    key.get_contents_to_filename(dest)\\\\n  File \\\\\\\"/usr/lib/python2.7/dist-packages/boto/s3/key.py\\\\\\\", line 1714, in get_contents_to_filename\\\\n    os.remove(filename)\\\\nOSError: [Errno 2] No such file or directory: '/etc/ansible/test/ec2.py'\\\\n\\\", \\\"module_stdout\\\": \\\"\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\"}\\r\\n        to retry, use: --limit @/home/ec2-user/s3test.retry\\r\\n```\\r\\nI suspect this is due to the s3 module in list mode listing /one/ as a key, but not /one/two/. This scenario is quite realistic, since a common way to sync a s3 buckets content to disk via ansible is collecting the keys with s3: mode=list and then using s3: mode=get to each key retrieved.\", \n    \"component_name\": \"s3\", \n    \"component_raw\": \"module: s3\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19600\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/s3.py\", \n    \"summary\": \"s3 module fails on wrong s3 key.\", \n    \"title\": \"S3 module: Crash on nonexisting key, listing nonexisting keys.\"\n  }, \n  \"19601\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nS3 module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\nUsing the S3 module with boto installed. Instance has a AWS IAM Role attached.\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nRunning Amazon Linux AMI 2016.09.0 (HVM), SSD Volume Type\\r\\n\\r\\n##### SUMMARY\\r\\nS3 module needs unnecessary permissions\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n1. Create a s3 bucket \\\"mybucket\\\"\\r\\n2. Create an EC2 instance with an attached IAM Role.\\r\\n3. Attach a policy to the S3 bucket that allows the IAM role only GetObject, but not ListBucket\\r\\n4. Install ansible + boto on the ec2 instance.\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n---\\r\\n- hosts: localhost\\r\\n  remote_user: ec2-user\\r\\n  tasks:\\r\\n    - name: download ec2.py from s3\\r\\n      s3:\\r\\n        bucket: mybucket\\r\\n        object: /ec2.py\\r\\n        dest: /tmp/ec2.py\\r\\n        mode: get\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nFile is downloaded from S3.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nFile can not be downloaded from S3. Message \\\"Source bucket can not be found\\\" is echoed instead.\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"aws_access_key\\\": null, \\r\\n            \\\"aws_secret_key\\\": null, \\r\\n            \\\"bucket\\\": \\\"mybucket\\\", \\r\\n            \\\"dest\\\": \\\"/tmp/ec2.py\\\", \\r\\n            \\\"ec2_url\\\": null, \\r\\n            \\\"encrypt\\\": true, \\r\\n            \\\"expiry\\\": \\\"600\\\", \\r\\n            \\\"headers\\\": null, \\r\\n            \\\"marker\\\": null, \\r\\n            \\\"max_keys\\\": \\\"1000\\\", \\r\\n            \\\"metadata\\\": null, \\r\\n            \\\"mode\\\": \\\"get\\\", \\r\\n            \\\"object\\\": \\\"/ec2.py\\\", \\r\\n            \\\"overwrite\\\": \\\"always\\\", \\r\\n            \\\"permission\\\": [\\r\\n                \\\"private\\\"\\r\\n            ], \\r\\n            \\\"prefix\\\": null, \\r\\n            \\\"profile\\\": null, \\r\\n            \\\"region\\\": null, \\r\\n            \\\"retries\\\": 0, \\r\\n            \\\"rgw\\\": false, \\r\\n            \\\"s3_url\\\": null, \\r\\n            \\\"security_token\\\": null, \\r\\n            \\\"src\\\": null, \\r\\n            \\\"validate_certs\\\": true, \\r\\n            \\\"version\\\": null\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"s3\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"Source bucket cannot be found\\\"\\r\\n}\\r\\n```\\r\\nDownloading the file using the AWS CLI tools works fine.\\r\\nAfter toying around for a few hours, and reiterating all steps several times with small changes, I found the issue: The S3 module with get only works if the IAM Role has ListBucket permissions on the bucket in addition to the GetObject permissions.\\r\\n\\r\\nI have:\\r\\n\\r\\n- Verified my boto version is new enough (boto 2.42)\\r\\n- Verified the EC2 instance role has the correct permissions (aws s3 cp s3://mybucket/ec2.py /tmp/ec2.py works just fine)\\r\\n- Verified the EC2 instance credentials are available through curl http://169.254.169.254/latest/meta-data/iam/security-credentials/s3access\\r\\n\\r\\nThe error message is not very helpful, and is actually wrong - the bucket can be found with the AWS S3 api.\\r\\n\\r\\nSuggestion: Do not require ListBucket permissions ob bucket for GetObject operation, or at least show a correct error message.\", \n    \"component_name\": \"s3\", \n    \"component_raw\": \"S3 module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19601\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/s3.py\", \n    \"summary\": \"S3 module needs unnecessary permissions\", \n    \"title\": \"S3 module: GetObject needs ListBucket permissions\"\n  }, \n  \"19604\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nvars in inventory file\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nRHEL 7.2\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nJust changing the name of a group alters the var values that hosts get.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\nGiven this inventory file:\\r\\n\\r\\nglm1 \\r\\nglm2 \\r\\nglm3\\r\\n\\r\\n[CG_xyzzy]\\r\\nglm1\\r\\nglm3\\r\\n\\r\\n[CG_xyzzy:vars]\\r\\ntestvar=xyzzy\\r\\n\\r\\n[IG_GriffIG]\\r\\nglm1\\r\\nglm2\\r\\nglm3\\r\\n\\r\\n[IG_GriffIG:vars]\\r\\ntestvar=GriffIG\\r\\n\\r\\n...I run this command:\\r\\n\\r\\n# ansible CG_xyzzy -m debug -a var=testvar\\r\\nglm3 | SUCCESS => {\\r\\n    \\\"testvar\\\": \\\"GriffIG\\\"\\r\\n}\\r\\nglm1 | SUCCESS => {\\r\\n    \\\"testvar\\\": \\\"GriffIG\\\"\\r\\n}\\r\\n\\r\\nI then change the name of the group \\u201cCG_xyzzy\\u201d to \\u201cxyzzy\\u201d:\\r\\n\\r\\nglm1 \\r\\nglm2 \\r\\nglm3\\r\\n\\r\\n[xyzzy]\\r\\nglm1\\r\\nglm3\\r\\n\\r\\n[xyzzy:vars]\\r\\ntestvar=xyzzy\\r\\n\\r\\n[IG_GriffIG]\\r\\nglm1\\r\\nglm2\\r\\nglm3\\r\\n\\r\\n[IG_GriffIG:vars]\\r\\ntestvar=GriffIG\\r\\n\\r\\n\\u2026and re-run the command (adjusting for the name change):\\r\\n\\r\\n# ansible xyzzy -m debug -a var=testvar\\r\\nglm1 | SUCCESS => {\\r\\n    \\\"testvar\\\": \\\"xyzzy\\\"\\r\\n}\\r\\nglm3 | SUCCESS => {\\r\\n    \\\"testvar\\\": \\\"xyzzy\\\"\\r\\n\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nI expected the result to be the same regardless of what I called the group.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nThe result changes depending on the name of the group.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"vars in inventory file\", \n    \"component_raw\": \"vars in inventory file\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19604\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"bug\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Just changing the name of a group alters the var values that hosts get.\", \n    \"title\": \"Alphabetical group_var precedence is not documented\"\n  }, \n  \"19607\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\nNetApp Clustered Data ONTAP storage platform\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nThe change adds modules that enable the management of a NetApp Clustered Data ONTAP storage platform. The modules were based on a design/approach similar to the existing NetApp E-Series (SANtricity) storage platform.\\n\", \n    \"component_name\": \"netapp clustered data ontap storage platform\", \n    \"component_raw\": \"NetApp Clustered Data ONTAP storage platform\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19607\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"docs\", \n      \"needs_revision\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/storage/netapp/netapp_e_amg.py\", \n    \"summary\": \"The change adds modules that enable the management of a NetApp Clustered Data ONTAP storage platform. The modules were based on a design/approach similar to the existing NetApp E-Series (SANtricity) storage platform.\", \n    \"title\": \"Add doc_fragment and module util for NetApp platforms\"\n  }, \n  \"19608\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nstacki_inventory\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nDynamic inventory script to pull node information from stacki-api. Required stacki-pro or enterprise.\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n$ ./stacki.py --list\\r\\n{\\r\\n    \\\"all\\\": {\\r\\n        \\\"hosts\\\": [\\r\\n            \\\"192.168.200.50\\\", \\r\\n            \\\"192.168.200.51\\\"\\r\\n        ]\\r\\n    }, \\r\\n    \\\"backends\\\": {\\r\\n        \\\"hosts\\\": [\\r\\n            \\\"192.168.200.51\\\"\\r\\n        ]\\r\\n    }, \\r\\n    \\\"_meta\\\": {\\r\\n        \\\"hostvars\\\": {\\r\\n            \\\"test-1\\\": {\\r\\n                \\\"box\\\": \\\"default\\\", \\r\\n                \\\"installaction\\\": \\\"install\\\", \\r\\n                \\\"runaction\\\": \\\"os\\\", \\r\\n                \\\"interfaces\\\": [\\r\\n                    {\\r\\n                        \\\"network\\\": \\\"private\\\", \\r\\n                        \\\"default\\\": true, \\r\\n                        \\\"ip\\\": \\\"192.168.200.51\\\", \\r\\n                        \\\"vlan\\\": null, \\r\\n                        \\\"host\\\": \\\"test-1\\\", \\r\\n                        \\\"module\\\": null, \\r\\n                        \\\"mac\\\": \\\"08:00:27:C7:10:D1\\\", \\r\\n                        \\\"interface\\\": \\\"enp0s17\\\", \\r\\n                        \\\"options\\\": null, \\r\\n                        \\\"channel\\\": null, \\r\\n                        \\\"name\\\": null\\r\\n                    }, \\r\\n                    {\\r\\n                        \\\"network\\\": null, \\r\\n                        \\\"default\\\": null, \\r\\n                        \\\"ip\\\": null, \\r\\n                        \\\"vlan\\\": null, \\r\\n                        \\\"host\\\": \\\"test-1\\\", \\r\\n                        \\\"module\\\": null, \\r\\n                        \\\"mac\\\": \\\"08:00:27:43:4b:51\\\", \\r\\n                        \\\"interface\\\": \\\"enp0s8\\\", \\r\\n                        \\\"options\\\": \\\"dhcp\\\", \\r\\n                        \\\"channel\\\": null, \\r\\n                        \\\"name\\\": null\\r\\n                    }\\r\\n                ], \\r\\n                \\\"appliance\\\": \\\"backend\\\", \\r\\n                \\\"cpus\\\": 1, \\r\\n                \\\"rank\\\": \\\"0\\\", \\r\\n                \\\"ansible_host\\\": \\\"192.168.200.51\\\", \\r\\n                \\\"host\\\": \\\"test-1\\\", \\r\\n                \\\"rack\\\": \\\"0\\\"\\r\\n            }, \\r\\n            \\\"stacki\\\": {\\r\\n                \\\"box\\\": \\\"default\\\", \\r\\n                \\\"installaction\\\": \\\"install\\\", \\r\\n                \\\"runaction\\\": \\\"os\\\", \\r\\n                \\\"interfaces\\\": [\\r\\n                    {\\r\\n                        \\\"network\\\": \\\"private\\\", \\r\\n                        \\\"default\\\": true, \\r\\n                        \\\"ip\\\": \\\"192.168.200.50\\\", \\r\\n                        \\\"vlan\\\": null, \\r\\n                        \\\"host\\\": \\\"stacki\\\", \\r\\n                        \\\"module\\\": null, \\r\\n                        \\\"mac\\\": \\\"08:00:27:e3:b4:5d\\\", \\r\\n                        \\\"interface\\\": \\\"enp0s8\\\", \\r\\n                        \\\"options\\\": null, \\r\\n                        \\\"channel\\\": null, \\r\\n                        \\\"name\\\": \\\"stacki\\\"\\r\\n                    }\\r\\n                ], \\r\\n                \\\"appliance\\\": \\\"frontend\\\", \\r\\n                \\\"cpus\\\": 1, \\r\\n                \\\"rank\\\": \\\"0\\\", \\r\\n                \\\"ansible_host\\\": \\\"192.168.200.50\\\", \\r\\n                \\\"host\\\": \\\"stacki\\\", \\r\\n                \\\"rack\\\": \\\"0\\\"\\r\\n            }\\r\\n        }\\r\\n    }, \\r\\n    \\\"frontends\\\": {\\r\\n        \\\"hosts\\\": [\\r\\n            \\\"192.168.200.50\\\"\\r\\n        ]\\r\\n    }\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"stacki_inventory\", \n    \"component_raw\": \"stacki_inventory\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19608\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"new_plugin\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Dynamic inventory script to pull node information from stacki-api. Required stacki-pro or enterprise.\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n$ ./stacki.py --list\\n\\n{\\n\\n    \\\"all\\\": {\\n\\n        \\\"hosts\\\": [\\n\\n            \\\"192.168.200.50\\\", \\n\\n            \\\"192.168.200.51\\\"\\n\\n        ]\\n\\n    }, \\n\\n    \\\"backends\\\": {\\n\\n        \\\"hosts\\\": [\\n\\n            \\\"192.168.200.51\\\"\\n\\n        ]\\n\\n    }, \\n\\n    \\\"_meta\\\": {\\n\\n        \\\"hostvars\\\": {\\n\\n            \\\"test-1\\\": {\\n\\n                \\\"box\\\": \\\"default\\\", \\n\\n                \\\"installaction\\\": \\\"install\\\", \\n\\n                \\\"runaction\\\": \\\"os\\\", \\n\\n                \\\"interfaces\\\": [\\n\\n                    {\\n\\n                        \\\"network\\\": \\\"private\\\", \\n\\n                        \\\"default\\\": true, \\n\\n                        \\\"ip\\\": \\\"192.168.200.51\\\", \\n\\n                        \\\"vlan\\\": null, \\n\\n                        \\\"host\\\": \\\"test-1\\\", \\n\\n                        \\\"module\\\": null, \\n\\n                        \\\"mac\\\": \\\"08:00:27:C7:10:D1\\\", \\n\\n                        \\\"interface\\\": \\\"enp0s17\\\", \\n\\n                        \\\"options\\\": null, \\n\\n                        \\\"channel\\\": null, \\n\\n                        \\\"name\\\": null\\n\\n                    }, \\n\\n                    {\\n\\n                        \\\"network\\\": null, \\n\\n                        \\\"default\\\": null, \\n\\n                        \\\"ip\\\": null, \\n\\n                        \\\"vlan\\\": null, \\n\\n                        \\\"host\\\": \\\"test-1\\\", \\n\\n                        \\\"module\\\": null, \\n\\n                        \\\"mac\\\": \\\"08:00:27:43:4b:51\\\", \\n\\n                        \\\"interface\\\": \\\"enp0s8\\\", \\n\\n                        \\\"options\\\": \\\"dhcp\\\", \\n\\n                        \\\"channel\\\": null, \\n\\n                        \\\"name\\\": null\\n\\n                    }\\n\\n                ], \\n\\n                \\\"appliance\\\": \\\"backend\\\", \\n\\n                \\\"cpus\\\": 1, \\n\\n                \\\"rank\\\": \\\"0\\\", \\n\\n                \\\"ansible_host\\\": \\\"192.168.200.51\\\", \\n\\n                \\\"host\\\": \\\"test-1\\\", \\n\\n                \\\"rack\\\": \\\"0\\\"\\n\\n            }, \\n\\n            \\\"stacki\\\": {\\n\\n                \\\"box\\\": \\\"default\\\", \\n\\n                \\\"installaction\\\": \\\"install\\\", \\n\\n                \\\"runaction\\\": \\\"os\\\", \\n\\n                \\\"interfaces\\\": [\\n\\n                    {\\n\\n                        \\\"network\\\": \\\"private\\\", \\n\\n                        \\\"default\\\": true, \\n\\n                        \\\"ip\\\": \\\"192.168.200.50\\\", \\n\\n                        \\\"vlan\\\": null, \\n\\n                        \\\"host\\\": \\\"stacki\\\", \\n\\n                        \\\"module\\\": null, \\n\\n                        \\\"mac\\\": \\\"08:00:27:e3:b4:5d\\\", \\n\\n                        \\\"interface\\\": \\\"enp0s8\\\", \\n\\n                        \\\"options\\\": null, \\n\\n                        \\\"channel\\\": null, \\n\\n                        \\\"name\\\": \\\"stacki\\\"\\n\\n                    }\\n\\n                ], \\n\\n                \\\"appliance\\\": \\\"frontend\\\", \\n\\n                \\\"cpus\\\": 1, \\n\\n                \\\"rank\\\": \\\"0\\\", \\n\\n                \\\"ansible_host\\\": \\\"192.168.200.50\\\", \\n\\n                \\\"host\\\": \\\"stacki\\\", \\n\\n                \\\"rack\\\": \\\"0\\\"\\n\\n            }\\n\\n        }\\n\\n    }, \\n\\n    \\\"frontends\\\": {\\n\\n        \\\"hosts\\\": [\\n\\n            \\\"192.168.200.50\\\"\\n\\n        ]\\n\\n    }\\n\\n}\\n\\n```\", \n    \"title\": \"Stacki inventory\"\n  }, \n  \"19609\": {\n    \"ansible_version\": \"ansible 2.0.0.2\\nconfig file = /home/......./ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ninclude\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.0.0.2\\r\\n  config file = /home/......./ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nonly inventory\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nRunning on Ubuntu 16.04.1.\\r\\nManaging Debian8.\\r\\n\\r\\n##### SUMMARY\\r\\nHave a role that triggers a handler. Need the handler to execute 2 tasks. Thus, created a separate file for these tasks, and including it in the handlers/main.yml. When using handler.yml, or ./handler.yml, I'm getting:\\r\\n\\r\\nfile_name <path to my main directory>/handler.yml does not exist, or is not readable\\r\\n\\r\\nWhen including roles/role-name/handlers/handler.yml everything works.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nroles/role-name/handlers/main.yml:\\r\\n- name: handler\\r\\n  include: handler.yml\\r\\n\\r\\nroles/role-name/handlers/handler.yml:\\r\\n- name: handler task 1\\r\\n  debug: msg=task1\\r\\n\\r\\n- name: handler task 2\\r\\n  debug: msg=task2\\r\\n\\r\\nroles/role-name/tasks/main.yml:\\r\\n- name: trigger handler\\r\\n  debug: msg=trigger\\r\\n  notify: handler\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nFile should be included, without producing an error message.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nError message pasted below.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nRUNNING HANDLER [role-name : Reconfigure whatever.] **************\\r\\nfatal: [hostname.net]: FAILED! => {\\\"failed\\\": true, \\\"reason\\\": \\\"ERROR! the file_name '/full/base/path/handler.yml' does not exist, or is not readable\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"include\", \n    \"component_raw\": \"include\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19609\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/include.py\", \n    \"summary\": \"Have a role that triggers a handler. Need the handler to execute 2 tasks. Thus, created a separate file for these tasks, and including it in the handlers/main.yml. When using handler.yml, or ./handler.yml, I'm getting:\\n\\n\\n\\nfile_name <path to my main directory>/handler.yml does not exist, or is not readable\\n\\n\\n\\nWhen including roles/role-name/handlers/handler.yml everything works.\", \n    \"title\": \"include in handler requires full path\"\n  }, \n  \"19610\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.1.0.0\", \n    \"body\": \"_From @stefanandres on July 5, 2016 14:56_\\n\\n##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nos_security_group_rule\\n##### ANSIBLE VERSION\\n\\n```\\n$ ansible --version\\nansible 2.1.0.0\\n```\\n##### CONFIGURATION\\n##### OS / ENVIRONMENT\\n##### SUMMARY\\n\\nWhen using the example from http://docs.ansible.com/ansible/os_security_group_rule_module.html for '# Another way to create the ping rule' - but use tcp instead of icmp, ansible is not idempotent.\\n##### STEPS TO REPRODUCE\\n\\n```\\n$ cat foo.yml\\n- hosts: localhost\\n  become: no\\n  tasks:\\n    - name: foo\\n      os_security_group_rule:\\n        security_group: default\\n        protocol: icmp\\n        port_range_min: -1\\n        port_range_max: -1\\n        remote_ip_prefix: 1.1.1.1/32\\n```\\n\\n```\\n$ ansible-playbook foo.yml\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [foo] *********************************************************************\\nchanged: [localhost]\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=2    changed=1    unreachable=0    failed=0\\n```\\n\\n```\\n$ ansible-playbook foo.yml\\n\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [foo] *********************************************************************\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Error creating security group rule: Security group rule already exists. Rule id is 5a63c1dc-c3aa-4ef3-9280-b7b7e9e5dbff.\\\"}\\n\\nNO MORE HOSTS LEFT *************************************************************\\n    to retry, use: --limit @foo.retry\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=1\\n```\\n\\nThis is needed to do more abstraction of security_group_rule, for example:\\n\\n```\\n- name: Create security group rules from os_security_rules_ports\\n  os_security_group_rule:\\n    security_group: \\\"{{ item.0.security_group | default(item.0.name) }}\\\"\\n    protocol: \\\"{{ item.0.protocol | default('tcp')  }}\\\"\\n    port_range_min: \\\"{{ item.0.port_range_min | default('-1') }}\\\"\\n    port_range_max: \\\"{{ item.0.port_range_max | default('-1') }}\\\"\\n    remote_ip_prefix: \\\"{{ item.1 }}\\\"\\n  with_subelements:\\n    - \\\"{{ os_security_rules_ports }}\\\"\\n    - remote_ip_prefixes\\n  when:\\n    - item.0.port_range_min\\n    - item.0.port_range_max\\n    - item.1 is defined\\n```\\n\\nWith a hash of\\n\\n```\\nos_security_rules_ports:\\n  - name: allow_office\\n    remote_ip_prefixes:\\n      - 1.1.1.1/32\\n      - 2.2.2.2/32\\n```\\n\\nwill not work, since it will always throw the above error.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#4108_\", \n    \"component_name\": \"os_security_group_rule\", \n    \"component_raw\": \"os_security_group_rule\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19610\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_security_group_rule.py\", \n    \"summary\": \"When using the example from http://docs.ansible.com/ansible/os_security_group_rule_module.html for '# Another way to create the ping rule' - but use tcp instead of icmp, ansible is not idempotent.\", \n    \"title\": \"os_security_group_rule is not idempotent for port_range_min: -1 as advertised in the documentation\"\n  }, \n  \"19612\": {\n    \"ansible_version\": \"ansible 2.1.0.0\", \n    \"body\": \"_From @g0trunks on August 1, 2016 13:21_\\r\\n\\r\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n- Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nos_router module\\r\\n\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n\\r\\n```\\r\\nansible 2.1.0.0\\r\\n```\\r\\n##### CONFIGURATION\\r\\n\\r\\n<!---\\r\\n-->\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\n<!---\\r\\nFedora 24\\r\\n$ rpm -qa | grep ansible\\r\\nansible-2.1.0.0-1.fc24.noarch\\r\\n$ uname -a\\r\\nLinux laptop 4.6.4-301.fc24.x86_64+debug #1 SMP Tue Jul 12 11:29:25 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux\\r\\n-->\\r\\n##### SUMMARY\\r\\n\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\nIf the first ip of a subnet is alredy assigned, router is created but interfaces are not.\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```\\r\\n- name: Connect subnets using a router\\r\\n  os_router:\\r\\n    cloud: \\\"{{ connection }}\\\"\\r\\n    state: present\\r\\n    name: router_internal\\r\\n    interfaces:\\r\\n        - security_subnet\\r\\n          ip: <<fixed ip address or next free ip if not selected>>\\r\\n        - private_subnet\\r\\n```\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n\\r\\n```\\r\\nTASK [ansible-OpenstackSecurityNetwork : Connect subnets using a router] ***\\r\\nfatal: [127.0.0.1 -> 127.0.0.1]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Error attaching interface to router 47ce1f62-19c4-4c02-8d88-51afce38a6a9: Unable to complete operation for network c8b362f5-fad4-4b15-9f1d-165f8e20c3bf. The IP address 22.0.0.1 is in use.\\\\nNeutron server returns request_ids: ['req-5f955b8c-ce00-4dd6-8619-e1b21e71cfb7']\\\"}\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nIf no IP is selected, ansible should use the first free IP on the newtork.\\r\\nIf IP is selected, ansible should use it to create the interface, and fail if IP address is already in use.\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\nActually, only first IP of the network can be used to create the interface, if IP is in use, ansible module fails to create the interface\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n\\r\\n```\\r\\n\\r\\n```\\r\\n\\r\\n\\r\\n_Copied from original issue: ansible/ansible-modules-core#4290_\", \n    \"component_name\": \"os_router\", \n    \"component_raw\": \"os_router module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19612\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_router.py\", \n    \"summary\": \"If the first ip of a subnet is alredy assigned, router is created but interfaces are not.\", \n    \"title\": \"Select ip for interface on os_router module\"\n  }, \n  \"19614\": {\n    \"ansible_version\": \"2.0.0.2\", \n    \"body\": \"_From @jbotelho2-bb on January 21, 2016 16:42_\\r\\n\\r\\n##### ISSUE TTYPE\\r\\nBug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nos_security_group_rule\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n2.0.0.2\\r\\n\\r\\n##### CONFIGURATION\\r\\nNo ansible.cfg, custom openstack config:\\r\\n\\r\\n``` yaml\\r\\nclouds:\\r\\n  my-cloud:\\r\\n    # <my auth information set here>\\r\\n    floating_ip_source: nova\\r\\n    secgroup_source: nova\\r\\n```\\r\\n\\r\\n##### ENVIRONMENT\\r\\nMac OS X 10.9.5, Python 2.7.8, shade 1.4.0\\r\\n\\r\\n##### SUMMARY\\r\\nUnable to create security group rules that use remote_group on OpenStack with Nova networking. It seems this is a combination of the ansible os_security_group_rule module making assumptions about the networking stack being Neutron (rather than Nova), and limitations of the shade library.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nRun a playbook that contains an OpenStack security group and rule, with remote_group set. For example:\\r\\n\\r\\n``` yml\\r\\n\\r\\n---\\r\\n- hosts: localhost\\r\\n  tasks:\\r\\n    - name: create security group\\r\\n      os_security_group:\\r\\n        cloud: my-cloud\\r\\n        name: test-group\\r\\n        description: Opens SSH within the group\\r\\n    - name: allow SSH within the group\\r\\n      os_security_group_rule:\\r\\n        cloud: my-cloud\\r\\n        security_group: test-group\\r\\n        protocol: tcp\\r\\n        port_range_min: 22\\r\\n        port_range_max: 22\\r\\n        remote_group: test-group\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nIt should create a security group and security group rule in the specified OpenStack cloud.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nIt creates the security group, but fails to create the security group rule, with the following output:\\r\\n\\r\\n```\\r\\n$ ansible-playbook sec_group_issue.yml \\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n\\r\\n\\r\\nPLAY ***************************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [create security group] ***************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [allow SSH within the group] **********************************************\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failed to create security group rule\\\"}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=2    changed=0    unreachable=0    failed=1   \\r\\n```\\r\\n\\r\\n\\r\\n_Copied from original issue: ansible/ansible-modules-core#2855_\", \n    \"component_name\": \"os_security_group_rule\", \n    \"component_raw\": \"os_security_group_rule\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19614\", \n    \"issue_type\": null, \n    \"labels\": [\n      \"affects_2.0\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_security_group_rule.py\", \n    \"summary\": \"Unable to create security group rules that use remote_group on OpenStack with Nova networking. It seems this is a combination of the ansible os_security_group_rule module making assumptions about the networking stack being Neutron (rather than Nova), and limitations of the shade library.\", \n    \"title\": \"Setting remote_group on os_security_group_rule fails with nova networking\"\n  }, \n  \"19615\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \" - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nios_facts\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nNone\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nN/A\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\nThe ios_facts ansible_net_model do not work on most tested Cisco ios device exept catalyst c6880.\\r\\nAlt2 below is not verifyed on big plattform with multipel line outputs.\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nalt 1, change ios_facts.py line \\r\\n->  match = re.search(r'^Cisco (.+) \\\\(revision', data, re.M)\\r\\n+> match = re.search(r'^cisco (.+) \\\\(revision', data, re.M)\\r\\n\\r\\nalt 2, change ios_facts.py to use show inventory instead of show version\\r\\n```\\r\\nclass Default(FactsBase):\\r\\n\\r\\n    def commands(self):\\r\\n        add_command(self.runner, 'show inventory')                 <--- change to use show inventory\\r\\n\\r\\n    def populate(self):\\r\\n        data = self.runner.get_command('show inventory')    <- use show inventory\\r\\n\\r\\n        self.facts['version'] = self.parse_version(data)\\r\\n        self.facts['serialnum'] = self.parse_serialnum(data)\\r\\n        self.facts['model'] = self.parse_model(data)\\r\\n        self.facts['image'] = self.parse_image(data)\\r\\n        self.facts['hostname'] = self.parse_hostname(data)\\r\\n\\r\\n    def parse_version(self, data):\\r\\n        match = re.search(r'Version (\\\\S+),', data)\\r\\n        if match:\\r\\n            return match.group(1)\\r\\n\\r\\n    def parse_hostname(self, data):\\r\\n        match = re.search(r'^(.+) uptime', data, re.M)\\r\\n        if match:\\r\\n            return match.group(1)\\r\\n\\r\\n    def parse_model(self, data):\\r\\n        match = re.search(r'^PID: (.+) , VID', data, re.M)     <--- changed search to match show inventory\\r\\n        if match:\\r\\n            return match.group(1)\\r\\n\\r\\n\\r\\n\\r\\n....\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n...\\r\\nTASK [Show facts from device] **************************************************\\r\\nok: [192.168.98.5] => {\\r\\n    \\\"msg\\\": \\\"Model= WS-C2960G-8TC-L   \\\"\\r\\n}\\r\\nok: [192.168.96.101] => {\\r\\n    \\\"msg\\\": \\\"Model= AIR-CAP1602I-E-K9 \\\"\\r\\n}\\r\\n...\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nTASK [Show facts from device] **************************************************\\r\\nok: [192.168.98.5] => {\\r\\n    \\\"msg\\\": \\\"Model=  \\\"\\r\\n}\\r\\nok: [192.168.96.101] => {\\r\\n    \\\"msg\\\": \\\"Model=  \\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"ios_facts\", \n    \"component_raw\": \"ios_facts\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19615\", \n    \"issue_type\": null, \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"c:module_utils/facts\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/ios/ios_facts.py\", \n    \"summary\": \"The ios_facts ansible_net_model do not work on most tested Cisco ios device exept catalyst c6880.\\n\\nAlt2 below is not verifyed on big plattform with multipel line outputs.\", \n    \"title\": \"ansible ios_facts ansible_net_model get few match\"\n  }, \n  \"19617\": {\n    \"ansible_version\": \"ansible 2.2.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @gunph1ld on October 13, 2016 13:21_\\n\\n##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nos_keystone_service, os_user, etc..\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n```\\n[defaults]\\nhostfile = hosts\\nhost_key_checking = False\\nretry_files_enabled = False\\n#deprecation_warnings=False\\n#display_skipped_hosts=False\\n\\n[paramiko_connection]\\nrecord_host_keys = False\\n\\n[ssh_connection]\\nssh_args = -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null  -o IdentitiesOnly=yes\\n```\\n##### SUMMARY\\n\\nI get an error with modules for OpenStack. `openstack` cli works well with the same parameters\\n##### STEPS TO REPRODUCE\\n\\n```\\n- os_keystone_service:\\n    cloud: local_bypass\\n    state: present\\n    name: keystone\\n    service_type: identity\\n    description: 'OpenStack Identity'\\n```\\n\\n```\\n[root@domain ~]# cat /etc/openstack/clouds.yaml \\nclouds:\\n  local_bypass:\\n    auth_type: token_endpoint\\n    identity_api_version: 3\\n    auth:\\n      token: QWESDFwse423fs\\n      url: http://domain.com:35357/v3\\n```\\n##### EXPECTED RESULTS\\n\\nCreate a service suceffull\\n##### ACTUAL RESULTS\\n\\n```\\nfatal: [domain.com]: FAILED! => {\\n    \\\"changed\\\": false, \\n    \\\"failed\\\": true, \\n    \\\"invocation\\\": {\\n        \\\"module_args\\\": {\\n            \\\"api_timeout\\\": null, \\n            \\\"auth\\\": null, \\n            \\\"auth_type\\\": null, \\n            \\\"availability_zone\\\": null, \\n            \\\"cacert\\\": null, \\n            \\\"cert\\\": null, \\n            \\\"cloud\\\": \\\"local_bypass\\\", \\n            \\\"description\\\": \\\"OpenStack Identity\\\", \\n            \\\"enabled\\\": true, \\n            \\\"endpoint_type\\\": \\\"public\\\", \\n            \\\"key\\\": null, \\n            \\\"name\\\": \\\"keystone\\\", \\n            \\\"region_name\\\": null, \\n            \\\"service_type\\\": \\\"identity\\\", \\n            \\\"state\\\": \\\"present\\\", \\n            \\\"timeout\\\": 180, \\n            \\\"verify\\\": true, \\n            \\\"wait\\\": true\\n        }, \\n        \\\"module_name\\\": \\\"os_keystone_service\\\"\\n    }, \\n    \\\"msg\\\": \\\"Problem with auth parameters\\\"\\n}\\n```\\n\\nbut with `openstack-cli` it works well\\n\\n```\\n# openstack --os-cloud local_bypass service create --name keystone --description \\\"OpenStack Identity\\\" identity\\n+-------------+----------------------------------+\\n| Field       | Value                            |\\n+-------------+----------------------------------+\\n| description | OpenStack Identity               |\\n| enabled     | True                             |\\n| id          | c70acc58b250421d8084c2a26f358e88 |\\n| name        | keystone                         |\\n| type        | identity                         |\\n+-------------+----------------------------------+\\n```\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5250_\", \n    \"component_name\": \"os_keystone_service os_user etc..\", \n    \"component_raw\": \"os_keystone_service, os_user, etc..\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19617\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_user.py\", \n    \"summary\": \"I get an error with modules for OpenStack. `openstack` cli works well with the same parameters\", \n    \"title\": \"OpenStack modules don't work with cloud specified auth\"\n  }, \n  \"19618\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"_From @queria on November 16, 2016 16:20_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\nos_network\\r\\nthough could be any other where ipv6 address in http url gets passed to requests (not tested)\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.1.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nShould not be related (no local config, unmodified distro version in /etc).\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nFedora 24\\r\\n\\r\\n##### SUMMARY\\r\\nWhen auth_url for os_network is in form of \\\"https://[2001:db8::a3]:13000/v2.0\\\" it stopped working with new [release 2.12.1 of requests](https://pypi.python.org/pypi/requests/2.12.1).\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nhttps://gist.github.com/queria/b5c0f5130e590c9e2e9d3a14341b2181\\r\\n\\r\\nIn our case we get the credentials as yaml output of other command, so kept that for completeness,\\r\\nthough probably not related.\\r\\n\\r\\nWhat may be another bug or related is that when os_network fails it prints out that url kind of masked by asterisks as it would be some password or something:\\r\\n`https://[2001:db8::a3]:13000/v2.0/tokens` is printed out as `********/tokens` (both requests versions)\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nIn both cases it should either fail on that example ipv6 address is not reachable from your machine (or you don't have ipv6 enabled at all), or work if it is reachable (e.g. you replace with valid url).\\r\\n\\r\\nin my case that ip is not reachable, but that's still ok for reprod. as it's at least attempting to connect\\r\\n```\\r\\n... snip ...\\r\\n%%%%%%%%%%%%%%%%% 2.11.1 REQUESTS %%%%%%%%%%%%\\r\\n+ pip install requests==2.11.1\\r\\nCollecting requests==2.11.1\\r\\n  Downloading requests-2.11.1-py2.py3-none-any.whl (514kB)\\r\\n    100% |\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588\\u2588| 522kB 1.6MB/s \\r\\nInstalling collected packages: requests\\r\\n  Found existing installation: requests 2.12.1\\r\\n    Uninstalling requests-2.12.1:\\r\\n      Successfully uninstalled requests-2.12.1\\r\\nSuccessfully installed requests-2.11.1\\r\\n+ ansible-playbook -i hosts my.yaml\\r\\n\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [emulate yaml output with credentials] ************************************\\r\\nchanged: [localhost]\\r\\n\\r\\nTASK [print out credentials we got] ********************************************\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": true, \\\"cmd\\\": \\\"echo \\\\\\\"{'username': 'admin', 'project_name': 'admin', 'password': 'r3pr0duc3rp455', 'auth_url': 'https://[2001:db8::a3]:13000/v2.0'}\\\\\\\"; false\\\", \\\"delta\\\": \\\"0:00:00.002694\\\", \\\"end\\\": \\\"2016-11-16 18:17:25.380542\\\", \\\"failed\\\": true, \\\"rc\\\": 1, \\\"start\\\": \\\"2016-11-16 18:17:25.377848\\\", \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"{'username': 'admin', 'project_name': 'admin', 'password': 'r3pr0duc3rp455', 'auth_url': 'https://[2001:db8::a3]:13000/v2.0'}\\\", \\\"stdout_lines\\\": [\\\"{'username': 'admin', 'project_name': 'admin', 'password': 'r3pr0duc3rp455', 'auth_url': 'https://[2001:db8::a3]:13000/v2.0'}\\\"], \\\"warnings\\\": []}\\r\\n...ignoring\\r\\n\\r\\nTASK [try using os_network] ****************************************************\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Error fetching network list: Unable to establish connection to ********/tokens: HTTPSConnectionPool(host='2001:db8::a3', port=13000): Max retries exceeded with url: /v2.0/tokens (Caused by NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x3b26050>: Failed to establish a new connection: [Errno 113] No route to host',))\\\"}\\r\\n\\r\\nNO MORE HOSTS LEFT *************************************************************\\r\\n [WARNING]: Could not create retry file 'my.retry'.         [Errno 2] No such file or directory: ''\\r\\n\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=3    changed=1    unreachable=0    failed=1   \\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nFails on _URL has an invalid label_.\\r\\n`{\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Error fetching network list: Unexpected exception for ********/tokens: URL has an invalid label.\\\"}`\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n... snip ...\\r\\n%%%%%%%%%%%%%%%%% NEWEST REQUESTS %%%%%%%%%%%%\\r\\n+ pip install -U requests\\r\\nRequirement already up-to-date: requests in ./myenv/lib/python2.7/site-packages\\r\\n+ ansible-playbook -i hosts my.yaml\\r\\n\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [emulate yaml output with credentials] ************************************\\r\\nchanged: [localhost]\\r\\n\\r\\nTASK [print out credentials we got] ********************************************\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": true, \\\"cmd\\\": \\\"echo \\\\\\\"{'username': 'admin', 'project_name': 'admin', 'password': 'r3pr0duc3rp455', 'auth_url': 'https://[2001:db8::a3]:13000/v2.0'}\\\\\\\"; false\\\", \\\"delta\\\": \\\"0:00:00.002809\\\", \\\"end\\\": \\\"2016-11-16 18:17:19.174993\\\", \\\"failed\\\": true, \\\"rc\\\": 1, \\\"start\\\": \\\"2016-11-16 18:17:19.172184\\\", \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"{'username': 'admin', 'project_name': 'admin', 'password': 'r3pr0duc3rp455', 'auth_url': 'https://[2001:db8::a3]:13000/v2.0'}\\\", \\\"stdout_lines\\\": [\\\"{'username': 'admin', 'project_name': 'admin', 'password': 'r3pr0duc3rp455', 'auth_url': 'https://[2001:db8::a3]:13000/v2.0'}\\\"], \\\"warnings\\\": []}\\r\\n...ignoring\\r\\n\\r\\nTASK [try using os_network] ****************************************************\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Error fetching network list: Unexpected exception for ********/tokens: URL has an invalid label.\\\"}\\r\\n\\r\\nNO MORE HOSTS LEFT *************************************************************\\r\\n [WARNING]: Could not create retry file 'my.retry'.         [Errno 2] No such file or directory: ''\\r\\n\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=3    changed=1    unreachable=0    failed=1   \\r\\n```\\r\\n\\r\\n\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5634_\", \n    \"component_name\": \"os_network\", \n    \"component_raw\": \"os_network\\nthough could be any other where ipv6 address in http url gets passed to requests (not tested)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19618\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_network.py\", \n    \"summary\": \"When auth_url for os_network is in form of \\\"https://[2001:db8::a3]:13000/v2.0\\\" it stopped working with new [release 2.12.1 of requests](https://pypi.python.org/pypi/requests/2.12.1).\", \n    \"title\": \"with requests==2.12.1 os_network fails when auth_url has ipv6 address for host\"\n  }, \n  \"19619\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @ericcitaire on November 17, 2016 14:41_\\n\\n##### ISSUE TYPE\\r\\nBug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nModule `os_volume`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nDefault\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nRunning from Mac OS 10.11.6 with virtualenv, managing Open Stack API\\r\\n\\r\\n##### SUMMARY\\r\\nWhen destroying an OpenStack volume, the module always resturns `changed=true`\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n- os_volume:\\r\\n    cloud: mycloud\\r\\n    display_name: myvol\\r\\n    state: absent\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n```\\r\\nok: [localhost]\\r\\n```\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nchanged: [localhost]\\r\\n```\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5649_\", \n    \"component_name\": \"os_volume\", \n    \"component_raw\": \"Module `os_volume`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19619\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_volume.py\", \n    \"summary\": \"When destroying an OpenStack volume, the module always resturns `changed=true`\", \n    \"title\": \"os_volume always returns `changed=true`\"\n  }, \n  \"19620\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @geektoor on November 24, 2016 14:43_\\n\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nos_floating_ip\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.1.2.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nnothing changed from default settings of ubuntu ansible ppa\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nubuntu mate, 16.04.1 LTS\\r\\nansible-ppa: http://ppa.launchpad.net/ansible/ansible/ubuntu\\r\\nOpenStack version: Mitaka (upstream)\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThe os_floating_ip module lacks the floating IP as feedback. I assigned a floating IP to an instance and found no easy way, to get the floating IP. My first try was to add os_server_facts and grab the IP from that output, but that doesn't work all the time (sometimes the floating IP is only shown the second time the playbook runs). So an easier solution for me was, to register the floating in the task by simply adding register: to it. Surprisingly the output shown was:\\r\\n\\r\\n```\\r\\nok: [localhost] => {\\r\\n    \\\"float\\\": {\\r\\n        \\\"changed\\\": true, \\r\\n        \\\"floating_ip\\\": null\\r\\n    }\\r\\n}\\r\\n```\\r\\n\\r\\nSo even if the floating IP was assigned, the floating_ip variable stays empty. For me it looks like a bug.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nRunning the following playbook shows the output provided above.\\r\\n\\r\\n```\\r\\n- name: os_floating_ip bug\\r\\n  hosts: localhost\\r\\n  gather_facts: false\\r\\n  tasks:\\r\\n\\r\\n  - name: Ensure external floating IP on osfloatbugvm\\r\\n    os_floating_ip:\\r\\n      cloud: OpenStack-Mitaka\\r\\n      server: osfloatbugvm\\r\\n      network: float_external\\r\\n      state: present\\r\\n    register: float\\r\\n\\r\\n  - name: print float\\r\\n    debug: var=float\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nI would expect to have the floating ip assigned to the VM available as float.floating_ip after attaching it:\\r\\n\\r\\n```\\r\\nok: [localhost] => {\\r\\n    \\\"float\\\": {\\r\\n        \\\"changed\\\": true, \\r\\n        \\\"floating_ip\\\": \\\"192.0.2.13\\\"\\r\\n    }\\r\\n}\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nok: [localhost] => {\\r\\n    \\\"float\\\": {\\r\\n        \\\"changed\\\": true, \\r\\n        \\\"floating_ip\\\": null\\r\\n    }\\r\\n}\\r\\n```\\r\\nPlease let me know if anything is missing.\\r\\n\\r\\nThanks and cheers,\\r\\nSven\\n\\n_Copied from original issue: ansible/ansible-modules-core#5724_\", \n    \"component_name\": \"os_floating_ip\", \n    \"component_raw\": \"os_floating_ip\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19620\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_floating_ip.py\", \n    \"summary\": \"The os_floating_ip module lacks the floating IP as feedback. I assigned a floating IP to an instance and found no easy way, to get the floating IP. My first try was to add os_server_facts and grab the IP from that output, but that doesn't work all the time (sometimes the floating IP is only shown the second time the playbook runs). So an easier solution for me was, to register the floating in the task by simply adding register: to it. Surprisingly the output shown was:\\n\\n\\n\\n```\\n\\nok: [localhost] => {\\n\\n    \\\"float\\\": {\\n\\n        \\\"changed\\\": true, \\n\\n        \\\"floating_ip\\\": null\\n\\n    }\\n\\n}\\n\\n```\\n\\n\\n\\nSo even if the floating IP was assigned, the floating_ip variable stays empty. For me it looks like a bug.\", \n    \"title\": \"os_floating_ip doesn't provide feedback about assigned IP\"\n  }, \n  \"19621\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"_From @mohi048 on November 25, 2016 11:57_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\nos_server\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.1.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nubuntu 14.04\\r\\nOpenstack Mitaka\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n1. Tyring to create an instance via ansible\\r\\n2. Getting \\\"msg\\\": \\\"Error fetching server list on ********s:: (Inner Exception: Problem with auth parameters)\\\"}\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n1. Run the playbook \\r\\n\\r\\n\\r\\n\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\nansible-playbook test-play.yml -i hosts -vvv \\r\\n\\r\\n\\r\\n---\\r\\n- name: Provision a compute instance\\r\\n  gather_facts: no\\r\\n  become: no\\r\\n  hosts: 06-deploy-openstack\\r\\n  user: root\\r\\n\\r\\n  tasks:\\r\\n\\r\\n    - name: Set necessary variables when Tower cloud credential config is present\\r\\n      set_fact:\\r\\n        os_auth:\\r\\n          auth_type: password\\r\\n          auth_url: http://192.168.56.104:35357/v3\\r\\n          username: admin\\r\\n          password: Secrete\\r\\n          project_name: admin\\r\\n          os_tenant_name: admin\\r\\n          project_domain_name: default\\r\\n          availability_zone: nova\\r\\n          user_domain_name: default\\r\\n          region_name: RegionOne\\r\\n          auth_version: 2\\r\\n          compute_api_version: 2\\r\\n\\r\\n\\r\\n    - name: Launch compute instances\\r\\n      os_server:\\r\\n        auth: \\\"{{ os_auth }}\\\"\\r\\n        name: compute-node-demo\\r\\n        auto_ip: no\\r\\n        image: Cirros\\r\\n        flavor: m1.tiny\\r\\n        availability_zone: nova\\r\\n        nics:\\r\\n          - net-name: public\\r\\n        wait: no\\r\\n        state: present\\r\\n\\r\\n\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nShould create the instance\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nNo config file found; using defaults\\r\\n\\r\\nPLAYBOOK: test-play.yml ********************************************************\\r\\n1 plays in test-play.yml\\r\\n\\r\\nPLAY [Provision a compute instance] ********************************************\\r\\n\\r\\nTASK [Set necessary variables when Tower cloud credential config is present] ***\\r\\ntask path: /Users/cccc/my_proj/Ansible/OpenStack/All-In-One_Liberty/test-play.yml:21\\r\\nok: [192.168.56.104] => {\\\"ansible_facts\\\": {\\\"os_auth\\\": {\\\"auth_type\\\": \\\"password\\\", \\\"auth_url\\\": \\\"http://192.168.56.104:35357/v3\\\", \\\"auth_version\\\": 2, \\\"availability_zone\\\": \\\"nova\\\", \\\"compute_api_version\\\": 2, \\\"os_tenant_name\\\": \\\"admin\\\", \\\"password\\\": \\\"Secrete\\\", \\\"project_domain_name\\\": \\\"default\\\", \\\"project_name\\\": \\\"admin\\\", \\\"user_domain_name\\\": \\\"default\\\", \\\"username\\\": \\\"admin\\\"}}, \\\"changed\\\": false, \\\"invocation\\\": {\\\"module_args\\\": {\\\"os_auth\\\": {\\\"auth_type\\\": \\\"password\\\", \\\"auth_url\\\": \\\"http://192.168.56.104:35357/v3\\\", \\\"auth_version\\\": 2, \\\"availability_zone\\\": \\\"nova\\\", \\\"compute_api_version\\\": 2, \\\"os_tenant_name\\\": \\\"admin\\\", \\\"password\\\": \\\"Secrete\\\", \\\"project_domain_name\\\": \\\"default\\\", \\\"project_name\\\": \\\"admin\\\", \\\"user_domain_name\\\": \\\"default\\\", \\\"username\\\": \\\"admin\\\"}}, \\\"module_name\\\": \\\"set_fact\\\"}}\\r\\n\\r\\nTASK [Launch compute instances] ************************************************\\r\\ntask path: /Users/cccc/my_proj/Ansible/OpenStack/All-In-One_Liberty/test-play.yml:55\\r\\n<192.168.56.104> ESTABLISH CONNECTION FOR USER: root on PORT 22 TO 192.168.56.104\\r\\n<192.168.56.104> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1480074461.66-185801142654384 `\\\" && echo ansible-tmp-1480074461.66-185801142654384=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1480074461.66-185801142654384 `\\\" ) && sleep 0'\\r\\n<192.168.56.104> PUT /var/folders/pf/r6d2yn7d2h1c1m6ttmdvct9msv0smb/T/tmpCqkVXK TO /root/.ansible/tmp/ansible-tmp-1480074461.66-185801142654384/os_server\\r\\n<192.168.56.104> EXEC /bin/sh -c 'LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1480074461.66-185801142654384/os_server; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1480074461.66-185801142654384/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nfatal: [192.168.56.104]: FAILED! => {\\\"changed\\\": false, \\\"extra_data\\\": null, \\\"failed\\\": true, \\\"invocation\\\": {\\\"module_args\\\": {\\\"api_timeout\\\": null, \\\"auth\\\": {\\\"auth_type\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\\"auth_url\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\\"auth_version\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\\"availability_zone\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\\"compute_api_version\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\\"os_tenant_name\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\\"project_domain_name\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\\"project_name\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\\"user_domain_name\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\\"username\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\"}, \\\"auth_type\\\": null, \\\"auto_ip\\\": false, \\\"availability_zone\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\\"boot_from_volume\\\": false, \\\"boot_volume\\\": null, \\\"cacert\\\": null, \\\"cert\\\": null, \\\"cloud\\\": null, \\\"config_drive\\\": false, \\\"endpoint_type\\\": \\\"public\\\", \\\"flavor\\\": \\\"m1.tiny\\\", \\\"flavor_include\\\": null, \\\"flavor_ram\\\": null, \\\"floating_ip_pools\\\": null, \\\"floating_ips\\\": null, \\\"image\\\": \\\"Cirros\\\", \\\"image_exclude\\\": \\\"(deprecated)\\\", \\\"key\\\": null, \\\"key_name\\\": null, \\\"meta\\\": null, \\\"name\\\": \\\"compute-node-demo\\\", \\\"network\\\": null, \\\"nics\\\": [{\\\"net-name\\\": \\\"public\\\"}], \\\"region_name\\\": null, \\\"scheduler_hints\\\": null, \\\"security_groups\\\": [\\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\"], \\\"state\\\": \\\"present\\\", \\\"terminate_volume\\\": false, \\\"timeout\\\": 180, \\\"userdata\\\": null, \\\"verify\\\": true, \\\"volume_size\\\": false, \\\"volumes\\\": [], \\\"wait\\\": false}, \\\"module_name\\\": \\\"os_server\\\"}, \\\"msg\\\": \\\"Error fetching server list on ********s:: (Inner Exception: Problem with auth parameters)\\\"}\\r\\n\\r\\nNO MORE HOSTS LEFT *************************************************************\\r\\n [WARNING]: Could not create retry file 'test-play.retry'.         [Errno 2] No such file or directory: ''\\r\\n\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\n192.168.56.104             : ok=1    changed=0    unreachable=0    failed=1   \\r\\n\\r\\n\\r\\n```\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5734_\", \n    \"component_name\": \"os_server\", \n    \"component_raw\": \"os_server\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19621\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_server.py\", \n    \"summary\": \"1. Tyring to create an instance via ansible\\n\\n2. Getting \\\"msg\\\": \\\"Error fetching server list on ********s:: (Inner Exception: Problem with auth parameters)\\\"}\", \n    \"title\": \"os_server: stuck on auth parameters\"\n  }, \n  \"19622\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @geektoor on November 28, 2016 19:52_\\r\\n\\r\\n##### ISSUE TYPE\\r\\n\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nos_network or os_subnet module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.1.2.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\ndefault settings\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nUbuntu Mate 16.04.1 LTS\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nWhile trying to figure out why DNS within the tenant is not working, i found the following issue:\\r\\nIf i use os_network to create a network, there is no option for specifying the dns-domain for that network. I also checked os_subnet but this also doesn't provide anything to add the dns domain for that network. The issue here is, that without that option, DNS resolving within the tenant is not working as expected. This is due to the fact, that without a DNS domain, the only dns-entries OpenStack is providing, are the \\\"host-ipoct1-ipoct2-ipoct3-ipoct4\\\" entries. No \\\"hostname\\\" entries at all. As soon as i issue a \\\"neutron net-update --dns-domain bla. $NETWORK_ID\\\" the hosts get updated and name resolving does work.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nSteps to reproduce:\\r\\n- create a network using ansible os_network\\r\\n- add subnet to this network\\r\\n- create two instances and attach it to the network\\r\\n- (optional, depending on setup) attach floating IPs to the instances\\r\\n- access instance one\\r\\n- try to \\\"ping instance2\\\"\\r\\n- see failure.\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n  - name: create internal network\\r\\n    os_network:\\r\\n      cloud: \\\"mycloud\\\"\\r\\n      name: \\\"internal-lan\\\"\\r\\n      state: present\\r\\n\\r\\n  - name: Create subnet on internal network\\r\\n    os_subnet:\\r\\n      cloud: \\\"mycloud\\\"\\r\\n      network_name: \\\"internal-lan\\\"\\r\\n      name: \\\"mysubnet\\\"\\r\\n      cidr: \\\"192.168.100.0/24\\\"\\r\\n      allocation_pool_start: \\\"192.168.100.50\\\"\\r\\n      allocation_pool_end: \\\"192.168.100.150\\\"\\r\\n      state: present\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nI'd expect to have an option to specify a DNS domain name for my network. The \\\"real issue\\\" behind the scene can be that this is more an issue within OpenStack, but in the end, the simple option to add the dns-domain fixes it. So the option is missing (if thats more like a feature request, i'm fine).\\r\\n\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nDNS resolving within the tenant don't work. At least not based on instance names.\\r\\n\\r\\n\\r\\n_Copied from original issue: ansible/ansible-modules-core#5753_\", \n    \"component_name\": \"os_network or os_subnet\", \n    \"component_raw\": \"os_network or os_subnet module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19622\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_network.py\", \n    \"summary\": \"While trying to figure out why DNS within the tenant is not working, i found the following issue:\\n\\nIf i use os_network to create a network, there is no option for specifying the dns-domain for that network. I also checked os_subnet but this also doesn't provide anything to add the dns domain for that network. The issue here is, that without that option, DNS resolving within the tenant is not working as expected. This is due to the fact, that without a DNS domain, the only dns-entries OpenStack is providing, are the \\\"host-ipoct1-ipoct2-ipoct3-ipoct4\\\" entries. No \\\"hostname\\\" entries at all. As soon as i issue a \\\"neutron net-update --dns-domain bla. $NETWORK_ID\\\" the hosts get updated and name resolving does work.\", \n    \"title\": \"os_network missing --dns-domain / dns based on hostnames not working in tenant\"\n  }, \n  \"19623\": {\n    \"ansible_version\": \"2.2\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nWindows Support documentation https://github.com/ansible/ansible/blob/devel/docsite/rst/intro_windows.rst\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.2\\r\\n```\\r\\n\\r\\n\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nN/A\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nN/A\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nDocumentation needs to show pypi installation of pykerberos package, not kerberos\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n\\r\\npip install kerberos requests_kerberos\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\npip install pykerberos requests_kerberos\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\npip install kerberos requests_kerberos\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n@nitzmahone \", \n    \"component_name\": \"windows support documentation https//github.com/ansible/ansible/blob/devel/docsite/rst/intro_windows.rst\", \n    \"component_raw\": \"Windows Support documentation https://github.com/ansible/ansible/blob/devel/docsite/rst/intro_windows.rst\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19623\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"docs_report\", \n      \"windows\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Documentation needs to show pypi installation of pykerberos package, not kerberos\", \n    \"title\": \"Documentation - Windows Support page needs an update to show pykerberos\"\n  }, \n  \"19630\": {\n    \"ansible_version\": \"[root@localhost ~] ansible --version\\nansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [/opt/worker/bsm_worker/ansible_handler/modules]\", \n    \"body\": \"_From @ShaolongTan on December 5, 2016 3:40_\\n\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nModule: script, command\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n[root@localhost ~]# ansible --version\\r\\nansible 2.1.1.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = ['/opt/worker/bsm_worker/ansible_handler/modules']\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nNot changed\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nI want to startup tomcat by script module . The running output show the script is successful at target machine but actually tomcat do not startup. I try same script by command module. I meet same issue. If I directly run the script at target machine, the tomcat can startup.\\r\\nPlease see below for detail. Thanks.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n1. Create a shell script for startuping tomat at ansible machine. File name is mytest.script\\r\\n```\\r\\n#! /usr/bin/bash\\r\\nsh /opt/apache-tomcat-9.0.0.M11/bin/startup.sh\\r\\n```\\r\\n\\r\\n2. Use script module to run the script. The output show \\\"Tomcat started\\\", but the tomcat do not start actually.\\r\\n```\\r\\n[root@localhost ~]# ansible 192.168.1.162 -m script -a \\\"/root/mytest.script\\\" -k\\r\\nSSH password: \\r\\n192.168.1.162 | SUCCESS => {\\r\\n    \\\"changed\\\": true, \\r\\n    \\\"rc\\\": 0, \\r\\n    \\\"stderr\\\": \\\"\\\", \\r\\n    \\\"stdout\\\": \\\"Using CATALINA_BASE:   /opt/apache-tomcat-9.0.0.M11\\\\r\\\\nUsing CATALINA_HOME:   /opt/apache-tomcat-9.0.0.M11\\\\r\\\\nUsing CATALINA_TMPDIR: /opt/apache-tomcat-9.0.0.M11/temp\\\\r\\\\nUsing JRE_HOME:        /usr\\\\r\\\\nUsing CLASSPATH:       /opt/apache-tomcat-9.0.0.M11/bin/bootstrap.jar:/opt/apache-tomcat-9.0.0.M11/bin/tomcat-juli.jar\\\\r\\\\nTomcat started.\\\\r\\\\n\\\", \\r\\n    \\\"stdout_lines\\\": [\\r\\n        \\\"Using CATALINA_BASE:   /opt/apache-tomcat-9.0.0.M11\\\", \\r\\n        \\\"Using CATALINA_HOME:   /opt/apache-tomcat-9.0.0.M11\\\", \\r\\n        \\\"Using CATALINA_TMPDIR: /opt/apache-tomcat-9.0.0.M11/temp\\\", \\r\\n        \\\"Using JRE_HOME:        /usr\\\", \\r\\n        \\\"Using CLASSPATH:       /opt/apache-tomcat-9.0.0.M11/bin/bootstrap.jar:/opt/apache-tomcat-9.0.0.M11/bin/tomcat-juli.jar\\\", \\r\\n        \\\"Tomcat started.\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\nIn target machine, check the tomcat processer. not found.\\r\\n```\\r\\n[root@client ~]# ps aux | grep tomcat\\r\\nroot      5924  0.0  0.0 112648   976 pts/0    R+   11:27   0:00 grep --color=auto tomcat\\r\\n```\\r\\n\\r\\n3. scp the script to the 192.168.1.162. Run it by command module and have same issue.\\r\\n```\\r\\n[root@localhost ~]# ansible 192.168.1.162 -m command -a \\\"/usr/bin/bash /root/mytest.script\\\" -k\\r\\nSSH password: \\r\\n192.168.1.162 | SUCCESS | rc=0 >>\\r\\nTomcat started.\\r\\n```\\r\\n```\\r\\n[root@client bin]# ps aux |grep tomcat\\r\\nroot      5980  0.0  0.0 112648   976 pts/1    R+   11:35   0:00 grep --color=auto tomcat\\r\\n```\\r\\n\\r\\n4. Direclty run the mytest.script. Tomcat is startup.\\r\\n```\\r\\n[root@client ~]# /usr/bin/bash /root/mytest.script \\r\\nUsing CATALINA_BASE:   /opt/apache-tomcat-9.0.0.M11\\r\\nUsing CATALINA_HOME:   /opt/apache-tomcat-9.0.0.M11\\r\\nUsing CATALINA_TMPDIR: /opt/apache-tomcat-9.0.0.M11/temp\\r\\nUsing JRE_HOME:        /usr\\r\\nUsing CLASSPATH:       /opt/apache-tomcat-9.0.0.M11/bin/bootstrap.jar:/opt/apache-tomcat-9.0.0.M11/bin/tomcat-juli.jar\\r\\nTomcat started.\\r\\n```\\r\\n```\\r\\n[root@client ~]# ps aux |grep tomcat\\r\\nroot      5998  7.7  5.9 3154888 112408 pts/1  Sl   11:37   0:02 /usr/bin/java -Djava.util.logging.config.file=/opt/apache-tomcat-9.0.0.M11/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Xms1024m -Xmx1024m -XX:+UseG1GC -Datlassian.plugins.enable.wait=300 -Djava.awt.headless=true -Xloggc:/logs/gc-2016-12-05_11-37-34.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=2M -XX:-PrintGCDetails -XX:+PrintGCTimeStamps -XX:-PrintTenuringDistribution -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Djava.rmi.server.hostname=192.168.1.162 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.class.path=/usr/share/collectd/java/collectd-api.jar:/usr/share/collectd/java/generic-jmx.jar -classpath /opt/apache-tomcat-9.0.0.M11/bin/bootstrap.jar:/opt/apache-tomcat-9.0.0.M11/bin/tomcat-juli.jar -Dcatalina.base=/opt/apache-tomcat-9.0.0.M11 -Dcatalina.home=/opt/apache-tomcat-9.0.0.M11 -Djava.io.tmpdir=/opt/apache-tomcat-9.0.0.M11/temp org.apache.catalina.startup.Bootstrap start\\r\\nroot      6032  0.0  0.0 112648   976 pts/1    R+   11:38   0:00 grep --color=auto tomcat\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nansible should startup tomcat by script or command module\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nsee above.\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5820_\", \n    \"component_name\": \"script command\", \n    \"component_raw\": \"Module: script, command\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19630\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/commands/script.py\", \n    \"summary\": \"I want to startup tomcat by script module . The running output show the script is successful at target machine but actually tomcat do not startup. I try same script by command module. I meet same issue. If I directly run the script at target machine, the tomcat can startup.\\n\\nPlease see below for detail. Thanks.\", \n    \"title\": \"script module show job successed but the job is failed or not work\"\n  }, \n  \"19631\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n- SolidFire storage platform\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.1.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\n<!--- Describe the change, including rationale and design decisions -->\\n\\nThe change adds modules that enable the management of a NetApp SolidFire storage platform. The modules were based on a design/approach similar to the existing NetApp E-Series (SANtricity) storage platform.\\n\", \n    \"component_name\": \"solidfire storage platform\", \n    \"component_raw\": \"- SolidFire storage platform\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19631\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"docs\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/storage/netapp/sf_volume_pair_manager.py\", \n    \"summary\": \"The change adds modules that enable the management of a NetApp SolidFire storage platform. The modules were based on a design/approach similar to the existing NetApp E-Series (SANtricity) storage platform.\", \n    \"title\": \"Add modules for SolidFire storage system.\"\n  }, \n  \"19633\": {\n    \"ansible_version\": \"ansible 2.3.0 (dockerpy_2 a5e4f50d0f) last updated 2016/12/22 094629 (GMT +200)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndocker modules\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (dockerpy_2 a5e4f50d0f) last updated 2016/12/22 09:46:29 (GMT +200)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nAdd support for python library `docker-py` >= `2.0.0`, which has been renamed in pip as [`docker`] and introduces some breaking changes.\\r\\n[release notes](https://github.com/docker/docker-py/releases)\", \n    \"component_name\": \"docker  s\", \n    \"component_raw\": \"docker modules\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19633\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"cloud\", \n      \"docker\", \n      \"feature\", \n      \"module\", \n      \"module_util\", \n      \"needs_rebase\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"summary\": \"Add support for python library `docker-py` >= `2.0.0`, which has been renamed in pip as [`docker`] and introduces some breaking changes.\\n\\n[release notes](https://github.com/docker/docker-py/releases)\", \n    \"title\": \"docker-py 2.0 compatibility\"\n  }, \n  \"19638\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @gunph1ld on November 30, 2016 7:34_\\n\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_ami_copy\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nMacOS Sierra, Darwin Kernel Version 16.1.0\\r\\nboto 2.43.0\\r\\n\\r\\n##### SUMMARY\\r\\ngetting this error when trying to copy an image to an encrypted image\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nrun the playbook\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n- ec2_ami_copy:\\r\\n    aws_access_key: \\\"{{ aws_access_key }}\\\"\\r\\n    aws_secret_key: \\\"{{ aws_secret_key }}\\\"\\r\\n    description: ENC_IMAGE\\r\\n    encrypted: yes\\r\\n    name: newimage\\r\\n    region: \\\"{{ region }}\\\"\\r\\n    source_image_id: \\\"{{ source_ami_image }}\\\"\\r\\n    source_region: \\\"{{ region }}\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nSuccessful copy an image to an encrypted image\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"aws_access_key\\\": \\\"******\\\",\\r\\n            \\\"aws_secret_key\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n            \\\"description\\\": \\\"ENC_IMAGE\\\",\\r\\n            \\\"ec2_url\\\": null,\\r\\n            \\\"encrypted\\\": yes,\\r\\n            \\\"kms_key_id\\\": null,\\r\\n            \\\"name\\\": \\\"newimage\\\",\\r\\n            \\\"profile\\\": null,\\r\\n            \\\"region\\\": \\\"eu-central-1\\\",\\r\\n            \\\"security_token\\\": null,\\r\\n            \\\"source_image_id\\\": \\\"ami-82cf0aed\\\",\\r\\n            \\\"source_region\\\": \\\"eu-central-1\\\",\\r\\n            \\\"tags\\\": null,\\r\\n            \\\"validate_certs\\\": true,\\r\\n            \\\"wait\\\": false,\\r\\n            \\\"wait_timeout\\\": \\\"1200\\\"\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"ec2_ami_copy\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"UnknownParameter: The parameter Encrypted is not recognized\\\"\\r\\n}\\r\\n```\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#3565_\", \n    \"component_name\": \"ec2_ami_copy\", \n    \"component_raw\": \"ec2_ami_copy\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19638\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_ami_copy.py\", \n    \"summary\": \"getting this error when trying to copy an image to an encrypted image\", \n    \"title\": \"ec2_ami_copy | The parameter Encrypted is not recognized\"\n  }, \n  \"19640\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\njenkins_script\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.1.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nThe jenkins cli functionality requires an existing SSH key and user to be created.\\nThere are a number of things that require using the jenkins groovy console to configure programatically.\\nCurrently it requires a lot of effort to handle this for a fully automated jenkins.\\n\\nThis allows for an arbitrary script, with basic python templating on the string for the script, to be passed to the jenkins instance and checks for a stacktrace or authentication error for a failure condition, otherwise the script is run and the results returned.\\n\\nThis allows for a fully configured jenkins via groovy console scripts where the rest API does not expose something suitable - eg authentication or credentials.\\n\\nFor example setting a proxy for jenkins can be carried out via this script, where the variable get replaced by python basic string templating from the args dict passed to the module:\\n\\n```\\nimport jenkins.model.*\\n    def instance = Jenkins.getInstance()\\n    final String name = \\\"${proxy_host}\\\"\\n    final int port = ${proxy_port}\\n    final def pc = new hudson.ProxyConfiguration(name, port)\\n    instance.proxy = pc\\n    instance.save()\\n```\\n\", \n    \"component_name\": \"jenkins_script\", \n    \"component_raw\": \"jenkins_script\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19640\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/web_infrastructure/jenkins_script.py\", \n    \"summary\": \"The jenkins cli functionality requires an existing SSH key and user to be created.\\nThere are a number of things that require using the jenkins groovy console to configure programatically.\\nCurrently it requires a lot of effort to handle this for a fully automated jenkins.\\n\\nThis allows for an arbitrary script, with basic python templating on the string for the script, to be passed to the jenkins instance and checks for a stacktrace or authentication error for a failure condition, otherwise the script is run and the results returned.\\n\\nThis allows for a fully configured jenkins via groovy console scripts where the rest API does not expose something suitable - eg authentication or credentials.\\n\\nFor example setting a proxy for jenkins can be carried out via this script, where the variable get replaced by python basic string templating from the args dict passed to the module:\\n\\n```\\nimport jenkins.model.*\\n    def instance = Jenkins.getInstance()\\n    final String name = \\\"${proxy_host}\\\"\\n    final int port = ${proxy_port}\\n    final def pc = new hudson.Proxy\", \n    \"title\": \"add jenkins_script module for running arbitrary jenkins console scrip\\u2026\"\n  }, \n  \"19645\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\ndocs \\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\", \n    \"component_name\": \"docs\", \n    \"component_raw\": \"docs\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19645\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"azure\", \n      \"cloud\", \n      \"docker\", \n      \"feature\", \n      \"gce\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"\", \n    \"title\": \"Consolidated docs\"\n  }, \n  \"19649\": {\n    \"ansible_version\": \"ansible 2.2.1.0 (stable-2.2 b1e44d1195) last updated 2016/12/21 095948 (GMT -500)\\nlib/ansible/modules/core (detached HEAD 62dbe0debb) last updated 2016/12/21 100023 (GMT -500)\\nlib/ansible/modules/extras (detached HEAD 17eebf2b4f) last updated 2016/12/21 100023 (GMT -500)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ninclude_vars\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.1.0 (stable-2.2 b1e44d1195) last updated 2016/12/21 09:59:48 (GMT -500)\\r\\n  lib/ansible/modules/core: (detached HEAD 62dbe0debb) last updated 2016/12/21 10:00:23 (GMT -500)\\r\\n  lib/ansible/modules/extras: (detached HEAD 17eebf2b4f) last updated 2016/12/21 10:00:23 (GMT -500)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n```\\r\\n$  env | grep ANSIBLE\\r\\nANSIBLE_HOME=/Users/cqx874/ansible/ansible\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n`include_vars` documentation says that `file` parameter `is relative, it will look for the file in vars/ subdirectory of a role or relative to playbook`.\\r\\n\\r\\nHowever when I use `include_vars` with `with_first_found` in sub-role variables are loaded from master role.\\r\\n\\r\\nI have lots of roles which try to load variables based on `ansible_distribution`, `ansible_os_family` or `ansible_system`.\\r\\nI also have lots of roles which depend on each other.\\r\\nI need a way to load variables relative to the role itself, just like documentation states.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nplaybook.yml:\\r\\n```\\r\\n- hosts: 127.0.0.1\\r\\n  connection: local\\r\\n  roles:\\r\\n    - master\\r\\n```\\r\\n\\r\\nroles/master/meta/main.yml:\\r\\n```\\r\\n---\\r\\ndependencies:\\r\\n    - { role: slave }\\r\\n```\\r\\n\\r\\nroles/slave/tasks/main.yml:\\r\\n```\\r\\n---\\r\\n- include_vars:\\r\\n    file: \\\"{{item}}\\\"\\r\\n  with_first_found:\\r\\n    - test_master.yml\\r\\n    - test_slave.yml\\r\\n\\r\\n- debug:\\r\\n    var: variable\\r\\n```\\r\\n\\r\\nroles/master/vars/test_master.yml:\\r\\n```\\r\\n---\\r\\nvariable: master\\r\\n```\\r\\n\\r\\nroles/slave/vars/test_slave.yml:\\r\\n```\\r\\n---\\r\\nvariable: slave\\r\\n```\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nExpected `variable` to be `slave` as there is no `test_master.yml` in `role/slave/vars`, so sensible should load `test_slave.yml` according to documentation.\\r\\n\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n`variable` is `master`.\\r\\n\\r\\n```\\r\\n$ ansible-playbook playbook.yml -vvv\\r\\nNo config file found; using defaults\\r\\n [WARNING]: Host file not found: /etc/ansible/hosts\\r\\n\\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n\\r\\n\\r\\nPLAYBOOK: playbook.yml *********************************************************\\r\\n1 plays in playbook.yml\\r\\n\\r\\nPLAY [127.0.0.1] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nUsing module file /Users/cqx874/ansible/ansible/lib/ansible/modules/core/system/setup.py\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: cqx874\\r\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo ~/.ansible/tmp/ansible-tmp-1482438409.93-219791886340997 `\\\" && echo ansible-tmp-1482438409.93-219791886340997=\\\"` echo ~/.ansible/tmp/ansible-tmp-1482438409.93-219791886340997 `\\\" ) && sleep 0'\\r\\n<127.0.0.1> PUT /var/folders/9h/p9701fj55yx6rld3m4d1w7qm0000gn/T/tmpTL11wC TO /Users/cqx874/.ansible/tmp/ansible-tmp-1482438409.93-219791886340997/setup.py\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /Users/cqx874/.ansible/tmp/ansible-tmp-1482438409.93-219791886340997/ /Users/cqx874/.ansible/tmp/ansible-tmp-1482438409.93-219791886340997/setup.py && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python /Users/cqx874/.ansible/tmp/ansible-tmp-1482438409.93-219791886340997/setup.py; rm -rf \\\"/Users/cqx874/.ansible/tmp/ansible-tmp-1482438409.93-219791886340997/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nok: [127.0.0.1]\\r\\n\\r\\nTASK [slave : include_vars] ****************************************************\\r\\ntask path: /Users/cqx874/ansible/bugs/XXXXX-vars-subroles/roles/slave/tasks/main.yml:2\\r\\nok: [127.0.0.1] => (item=/Users/cqx874/ansible/bugs/XXXXX-vars-subroles/roles/master/vars/test_master.yml) => {\\r\\n    \\\"ansible_facts\\\": {\\r\\n        \\\"variable\\\": \\\"master\\\"\\r\\n    }, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"file\\\": \\\"/Users/cqx874/ansible/bugs/XXXXX-vars-subroles/roles/master/vars/test_master.yml\\\"\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"include_vars\\\"\\r\\n    }, \\r\\n    \\\"item\\\": \\\"/Users/cqx874/ansible/bugs/XXXXX-vars-subroles/roles/master/vars/test_master.yml\\\"\\r\\n}\\r\\n\\r\\nTASK [slave : debug] ***********************************************************\\r\\ntask path: /Users/cqx874/ansible/bugs/XXXXX-vars-subroles/roles/slave/tasks/main.yml:8\\r\\nok: [127.0.0.1] => {\\r\\n    \\\"variable\\\": \\\"master\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\n127.0.0.1                  : ok=3    changed=0    unreachable=0    failed=0   \\r\\n```\\r\\n\", \n    \"component_name\": \"include_vars\", \n    \"component_raw\": \"include_vars\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19649\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/include_vars.py\", \n    \"summary\": \"`include_vars` documentation says that `file` parameter `is relative, it will look for the file in vars/ subdirectory of a role or relative to playbook`.\\n\\n\\n\\nHowever when I use `include_vars` with `with_first_found` in sub-role variables are loaded from master role.\\n\\n\\n\\nI have lots of roles which try to load variables based on `ansible_distribution`, `ansible_os_family` or `ansible_system`.\\n\\nI also have lots of roles which depend on each other.\\n\\nI need a way to load variables relative to the role itself, just like documentation states.\", \n    \"title\": \"Ansible sub-role loads variables from parent role\"\n  }, \n  \"19652\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 69c14bd003) last updated 2016/12/22 112302 (GMT -400)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnxos_ntp\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 (devel 69c14bd003) last updated 2016/12/22 11:23:02 (GMT -400)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nNo special config\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nNX-OS version 7.0(3)I2(4)\\r\\n\\r\\n##### SUMMARY\\r\\nTrying to add a new NTP server with no servers present results in a failure.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nTrying to run this simple playbook, hosts n9k-tor group has host 192.168.2.11\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n---\\r\\n\\r\\n- name: gather int data\\r\\n  hosts: n9k-tor \\r\\n  connection: local\\r\\n  gather_facts: no\\r\\n\\r\\n\\r\\n  tasks:\\r\\n\\r\\n    - nxos_ntp:\\r\\n        host: \\\"{{ inventory_hostname }}\\\"\\r\\n        transport: cli \\r\\n        username: ***\\r\\n        password: ****\\r\\n        use_ssl: yes\\r\\n        validate_certs: False\\r\\n        server: 10.20.30.40 \\r\\n        state: present\\r\\n\\r\\n```\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nServer is added\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nThe following error occurs:\\r\\n\\r\\n```\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/tmp/ansible_B58nks/ansible_module_nxos_ntp.py\\\", line 635, in <module>\\r\\n    main()\\r\\n  File \\\"/tmp/ansible_B58nks/ansible_module_nxos_ntp.py\\\", line 578, in main\\r\\n    existing, peer_server_list = get_ntp_existing(address, peer_type, module)\\r\\n  File \\\"/tmp/ansible_B58nks/ansible_module_nxos_ntp.py\\\", line 454, in get_ntp_existing\\r\\n    peer_list = get_ntp_peer(module)\\r\\n  File \\\"/tmp/ansible_B58nks/ansible_module_nxos_ntp.py\\\", line 403, in get_ntp_peer\\r\\n    command, module, command_type='cli_show_ascii')[0]\\r\\nIndexError: list index out of range\\r\\n\\r\\nfatal: [192.168.2.11]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"nxos_ntp\\\"\\r\\n    }, \\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_B58nks/ansible_module_nxos_ntp.py\\\\\\\", line 635, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_B58nks/ansible_module_nxos_ntp.py\\\\\\\", line 578, in main\\\\n    existing, peer_server_list = get_ntp_existing(address, peer_type, module)\\\\n  File \\\\\\\"/tmp/ansible_B58nks/ansible_module_nxos_ntp.py\\\\\\\", line 454, in get_ntp_existing\\\\n    peer_list = get_ntp_peer(module)\\\\n  File \\\\\\\"/tmp/ansible_B58nks/ansible_module_nxos_ntp.py\\\\\\\", line 403, in get_ntp_peer\\\\n    command, module, command_type='cli_show_ascii')[0]\\\\nIndexError: list index out of range\\\\n\\\", \\r\\n    \\\"module_stdout\\\": \\\"\\\", \\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\", \\r\\n    \\\"rc\\\": 0\\r\\n\\r\\n```\\r\\n##### QUICK FIX\\r\\nI have discovered that changing lines 402-403 from\\r\\n```\\r\\n    ntp = execute_show_command(\\r\\ncommand, module, command_type='cli_show_ascii')[0]\\r\\n```\\r\\nto\\r\\n```\\r\\n    ntp1 = execute_show_command( \\r\\n                command, module, command_type='cli_show_ascii')\\r\\n    if len(ntp1) > 0:\\r\\n      ntp = ntp1[0]\\r\\n    else:\\r\\n      return []\\r\\n\\r\\n```\\r\\nappears to fix the issue, but since I am quite new to programming, I am not sure whether it brakes any other functionality and how to test that properly.\", \n    \"component_name\": \"nxos_ntp\", \n    \"component_raw\": \"nxos_ntp\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19652\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nxos/nxos_ntp.py\", \n    \"summary\": \"Trying to add a new NTP server with no servers present results in a failure.\", \n    \"title\": \"nxos_ntp: module fails if no NTP config is present\"\n  }, \n  \"19654\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"\\u2026 is partly based on a complaint of a user who accidentally named one of his own groups \\\"all\\\", and partly to document a useful (but obscure) way to set variables for all hosts.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\ninventory\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nAdded doc paragraph about the implicit \\\"all\\\" group.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\nNot applicable\\r\\n```\\r\\n\", \n    \"component_name\": \"inventory\", \n    \"component_raw\": \"inventory\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19654\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"```\\n\\nNot applicable\\n\\n```\", \n    \"title\": \"Added paragraph, example for the special, implicit \\\"all\\\" group.  This\\u2026\"\n  }, \n  \"19659\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nrabbitmq_user\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nIf you are going to update permissions with items in the vhost options, all the permissions will be overwritten\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nuse the playbook below\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- rabbitmq_user:\\r\\n    user: \\\"{{ rabbit_user }}\\\"\\r\\n    password: \\\"{{ rabbit_password }}\\\"\\r\\n    permissions:\\r\\n      - vhost: \\\"{{ item }}\\\"\\r\\n        configure_priv: .*\\r\\n        read_priv: .*\\r\\n        write_priv: .*\\r\\n  with_items:\\r\\n    - \\\"{{ vhosts }}\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\na user should has permissions for all {{ vhosts }}\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\na user has permissions for the last {{ vhosts }} value\\r\\n\", \n    \"component_name\": \"rabbitmq_user\", \n    \"component_raw\": \"rabbitmq_user\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19659\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/messaging/rabbitmq_user.py\", \n    \"summary\": \"If you are going to update permissions with items in the vhost options, all the permissions will be overwritten\", \n    \"title\": \"rabbitmq_user should not update permissions each time\"\n  }, \n  \"19660\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndocker_container\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nFixes #18461 : docker_container return fact is filtered by the data parser. \\r\\nSo I just changed the name of the dictionnary returned by the module. \\r\\nwas: ansible_docker_container \\r\\nbecomes : docker_container. \\r\\n\\r\\nBefore\\r\\n```\\r\\nTASK [starting container] ******************************************************\\r\\nchanged: [localhost] => {\\\"ansible_facts\\\": {}, \\\"changed\\\": true}\\r\\n\\r\\nTASK [inventory addendum] ******************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"docker_cont\\\": {\\r\\n        \\\"ansible_facts\\\": {}, \\r\\n        \\\"changed\\\": true\\r\\n    }\\r\\n}\\r\\n```\\r\\nAfter :\\r\\n```\\r\\nTASK [starting container] **************************************************************\\r\\nchanged: [localhost] => {\\\"ansible_facts\\\": {\\\"docker_container\\\": {\\\"AppArmorProfile\\\": \\\"\\\", \\\"Args\\\": [\\\" \\r\\n```\\r\\n[...]\\r\\n\", \n    \"component_name\": \"docker_container\", \n    \"component_raw\": \"docker_container\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19660\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:plugins/action\", \n      \"c:plugins/connection/docker\", \n      \"cloud\", \n      \"committer_review\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"summary\": \"Fixes #18461 : docker_container return fact is filtered by the data parser. \\n\\nSo I just changed the name of the dictionnary returned by the module. \\n\\nwas: ansible_docker_container \\n\\nbecomes : docker_container. \\n\\n\\n\\nBefore\\n\\n```\\n\\nTASK [starting container] ******************************************************\\n\\nchanged: [localhost] => {\\\"ansible_facts\\\": {}, \\\"changed\\\": true}\\n\\n\\n\\nTASK [inventory addendum] ******************************************************\\n\\nok: [localhost] => {\\n\\n    \\\"docker_cont\\\": {\\n\\n        \\\"ansible_facts\\\": {}, \\n\\n        \\\"changed\\\": true\\n\\n    }\\n\\n}\\n\\n```\\n\\nAfter :\\n\\n```\\n\\nTASK [starting container] **************************************************************\\n\\nchanged: [localhost] => {\\\"ansible_facts\\\": {\\\"docker_container\\\": {\\\"AppArmorProfile\\\": \\\"\\\", \\\"Args\\\": [\\\" \\n\\n```\\n\\n[...]\", \n    \"title\": \"FIX issue 18461 : docker_container fact filtered by data parser\"\n  }, \n  \"19662\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\ndatadog_monitor module\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nDuring the muting action add sets operator (last elif) generates false positive: \\r\\n```python\\r\\ndef mute_monitor(module):\\r\\n    monitor = _get_monitor(module)\\r\\n    if not monitor:\\r\\n         module.fail_json(msg=\\\"Monitor %s not found!\\\" % module.params['name'])\\r\\n    elif monitor['options']['silenced']:\\r\\n        module.fail_json(msg=\\\"Monitor is already muted. Datadog does not allow to modify muted alerts, consider unmuting it first.\\\")\\r\\n    elif (module.params['silenced'] is not None\\r\\n         and len(set(monitor['options']['silenced']) - set(module.params['silenced'])) == 0):\\r\\n        module.exit_json(changed=False)\\r\\n```\\r\\nDuring my tests muting function always exit with false status and never mute monitor.\\r\\n\\r\\nIn my opinion in the last elif the XOR should be used, it correctly compares sets and allows to mute monitor if it was not muted before. \\r\\n```python\\r\\ndef mute_monitor(module):\\r\\n    monitor = _get_monitor(module)\\r\\n    if not monitor:\\r\\n         module.fail_json(msg=\\\"Monitor %s not found!\\\" % module.params['name'])\\r\\n    elif monitor['options']['silenced']:\\r\\n        module.fail_json(msg=\\\"Monitor is already muted. Datadog does not allow to modify muted alerts, consider unmuting it first.\\\")\\r\\n    elif (module.params['silenced'] is not None\\r\\n         and len(set(monitor['options']['silenced']) ^ set(module.params['silenced'])) == 0):\\r\\n        module.exit_json(changed=False)\\r\\n```\\r\\n\", \n    \"component_name\": \"datadog_monitor\", \n    \"component_raw\": \"datadog_monitor module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19662\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"community_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/monitoring/datadog_monitor.py\", \n    \"summary\": \"During the muting action add sets operator (last elif) generates false positive: \\n\\n```python\\n\\ndef mute_monitor(module):\\n\\n    monitor = _get_monitor(module)\\n\\n    if not monitor:\\n\\n         module.fail_json(msg=\\\"Monitor %s not found!\\\" % module.params['name'])\\n\\n    elif monitor['options']['silenced']:\\n\\n        module.fail_json(msg=\\\"Monitor is already muted. Datadog does not allow to modify muted alerts, consider unmuting it first.\\\")\\n\\n    elif (module.params['silenced'] is not None\\n\\n         and len(set(monitor['options']['silenced']) - set(module.params['silenced'])) == 0):\\n\\n        module.exit_json(changed=False)\\n\\n```\\n\\nDuring my tests muting function always exit with false status and never mute monitor.\\n\\n\\n\\nIn my opinion in the last elif the XOR should be used, it correctly compares sets and allows to mute monitor if it was not muted before. \\n\\n```python\\n\\ndef mute_monitor(module):\\n\\n    monitor = _get_monitor(module)\\n\\n    if not monitor:\\n\\n         module.fail_json(msg=\\\"Monitor %s not found!\\\" % module.params['name'])\\n\\n    elif monitor['options']['silenced']:\\n\\n        module.fail_json(msg=\\\"Monitor is already muted. Datadog does not allow to modify muted alerts, consider unmuting it first.\\\")\\n\\n    elif (module.params['silenced'] is not None\\n\\n         and len(set(monitor['options']['silenced']) ^ set(module.params['silenced'])) == 0):\\n\\n        module.exit_json(changed=False)\\n\\n```\", \n    \"title\": \"datadog_monitor: mute function fix\"\n  }, \n  \"19663\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nrabbitmq_user\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdded a new comparison, if `state=append`, then don't need to clear existing permissions.\\r\\n\", \n    \"component_name\": \"rabbitmq_user\", \n    \"component_raw\": \"rabbitmq_user\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19663\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"needs_revision\"\n    ], \n    \"module_match\": \"lib/ansible/modules/messaging/rabbitmq_user.py\", \n    \"summary\": \"Added a new comparison, if `state=append`, then don't need to clear existing permissions.\", \n    \"title\": \"rabbitmq_user: Append user permissions\"\n  }, \n  \"19664\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\nFeature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nTemplar\\r\\n\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThis patch allows to use Jinja2 expressions in dictionary keys. Using this patch, the output of the following play\\r\\n\\r\\n```\\r\\n---\\r\\n- hosts: all\\r\\n  connection: local\\r\\n  gather_facts: no\\r\\n  vars:\\r\\n   test_var: aaa\\r\\n   test_list:\\r\\n     - \\\"{{ test_var }}\\\"\\r\\n     - \\\"{{ test_var }}\\\": bbb\\r\\n  tasks:\\r\\n    - debug:\\r\\n       var: test_list\\r\\n```\\r\\n\\r\\nwill result into this output:\\r\\n\\r\\n```\\r\\nTASK [debug] *******************************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"test_list\\\": [\\r\\n        \\\"aaa\\\", \\r\\n        {\\r\\n            \\\"aaa\\\": \\\"bbb\\\"\\r\\n        }\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\ninstead of to this:\\r\\n\\r\\n```\\r\\nTASK [debug] *******************************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"test_list\\\": [\\r\\n        \\\"aaa\\\", \\r\\n        {\\r\\n            \\\"{{ test_var }}\\\": \\\"bbb\\\"\\r\\n        }\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\nfixes #19956\", \n    \"component_name\": \"templar\", \n    \"component_raw\": \"Templar\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19664\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This patch allows to use Jinja2 expressions in dictionary keys. Using this patch, the output of the following play\\n\\n\\n\\n```\\n\\n---\\n\\n- hosts: all\\n\\n  connection: local\\n\\n  gather_facts: no\\n\\n  vars:\\n\\n   test_var: aaa\\n\\n   test_list:\\n\\n     - \\\"{{ test_var }}\\\"\\n\\n     - \\\"{{ test_var }}\\\": bbb\\n\\n  tasks:\\n\\n    - debug:\\n\\n       var: test_list\\n\\n```\\n\\n\\n\\nwill result into this output:\\n\\n\\n\\n```\\n\\nTASK [debug] *******************************************************************\\n\\nok: [localhost] => {\\n\\n    \\\"test_list\\\": [\\n\\n        \\\"aaa\\\", \\n\\n        {\\n\\n            \\\"aaa\\\": \\\"bbb\\\"\\n\\n        }\\n\\n    ]\\n\\n}\\n\\n```\\n\\n\\n\\ninstead of to this:\\n\\n\\n\\n```\\n\\nTASK [debug] *******************************************************************\\n\\nok: [localhost] => {\\n\\n    \\\"test_list\\\": [\\n\\n        \\\"aaa\\\", \\n\\n        {\\n\\n            \\\"{{ test_var }}\\\": \\\"bbb\\\"\\n\\n        }\\n\\n    ]\\n\\n}\\n\\n```\\n\\n\\n\\nfixes #19956\", \n    \"title\": \"Support Jinja2 in dict keys\"\n  }, \n  \"19665\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 02842767c6) last updated 2016/11/28 195130 (GMT +200)\\nlib/ansible/modules/core (detached HEAD dedfe2becf) last updated 2016/11/28 195134 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD 43bb97bc37) last updated 2016/11/28 195135 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @tux-00 on December 4, 2016 17:10_\\r\\n\\r\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Documentation Report\\r\\n - ~~Bug Report~~\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\nAnsible module naming\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel 02842767c6) last updated 2016/11/28 19:51:30 (GMT +200)\\r\\n  lib/ansible/modules/core: (detached HEAD dedfe2becf) last updated 2016/11/28 19:51:34 (GMT +200)\\r\\n  lib/ansible/modules/extras: (detached HEAD 43bb97bc37) last updated 2016/11/28 19:51:35 (GMT +200)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nDefault configuration.\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nTested on Fedora 25 and Debian 8.6.\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nI can't found something mentioning a naming rules for ansible modules in documentation and I'm not sure it's modules-core problem.\\r\\n\\r\\nI was trying to develop a new module for tests named test-test.py. When I execute my playbook to run my new module, ansible return a syntax error. The cause is the hyphen in the name of my module, If I delete it, everything works.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nAny module name containing hyphens should reproduce this issue.\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n---\\r\\n- hosts: localhost\\r\\n  tasks:\\r\\n    - name: test module\\r\\n      test-test:\\r\\n        state=present\\r\\n        name=example.localdomain\\r\\n      register: result\\r\\n    - debug: var=result\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\nansible-playbook test.yml -vvv\\r\\n```\\r\\nNo config file found; using defaults\\r\\n [WARNING]: Host file not found: /etc/ansible/hosts\\r\\n\\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n\\r\\n\\r\\nPLAYBOOK: test.yml *************************************************************\\r\\n1 plays in test.yml\\r\\n\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [Gathering Facts] *********************************************************\\r\\nUsing module file /home/tux/git/ansible/lib/ansible/modules/core/system/setup.py\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: tux\\r\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo ~/.ansible/tmp/ansible-tmp-1480577937.14-168698290574977 `\\\" && echo ansible-tmp-1480577937.14-168698290574977=\\\"` echo ~/.ansible/tmp/ansible-tmp-1480577937.14-168698290574977 `\\\" ) && sleep 0'\\r\\n<127.0.0.1> PUT /tmp/tmptsrkQZ TO /home/tux/.ansible/tmp/ansible-tmp-1480577937.14-168698290574977/setup.py\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /home/tux/.ansible/tmp/ansible-tmp-1480577937.14-168698290574977/ /home/tux/.ansible/tmp/ansible-tmp-1480577937.14-168698290574977/setup.py && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python /home/tux/.ansible/tmp/ansible-tmp-1480577937.14-168698290574977/setup.py; rm -rf \\\"/home/tux/.ansible/tmp/ansible-tmp-1480577937.14-168698290574977/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nok: [localhost]\\r\\n\\r\\nTASK [test module] *************************************************************\\r\\ntask path: /home/tux/git/ansible_test_module/test.yml:4\\r\\nUsing module file /home/tux/git/ansible_test_module/library/test-test.py\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: tux\\r\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo ~/.ansible/tmp/ansible-tmp-1480577937.39-52371074508194 `\\\" && echo ansible-tmp-1480577937.39-52371074508194=\\\"` echo ~/.ansible/tmp/ansible-tmp-1480577937.39-52371074508194 `\\\" ) && sleep 0'\\r\\n<127.0.0.1> PUT /tmp/tmpowTuul TO /home/tux/.ansible/tmp/ansible-tmp-1480577937.39-52371074508194/test-test.py\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /home/tux/.ansible/tmp/ansible-tmp-1480577937.39-52371074508194/ /home/tux/.ansible/tmp/ansible-tmp-1480577937.39-52371074508194/test-test.py && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python /home/tux/.ansible/tmp/ansible-tmp-1480577937.39-52371074508194/test-test.py; rm -rf \\\"/home/tux/.ansible/tmp/ansible-tmp-1480577937.39-52371074508194/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"test-test\\\"\\r\\n    }, \\r\\n    \\\"module_stderr\\\": \\\"  File \\\\\\\"/home/tux/.ansible/tmp/ansible-tmp-1480577937.39-52371074508194/test-test.py\\\\\\\", line 99\\\\n    from ansible_module_test-test import main\\\\n                            ^\\\\nSyntaxError: invalid syntax\\\\n\\\", \\r\\n    \\\"module_stdout\\\": \\\"\\\", \\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n\\r\\nmsg: MODULE FAILURE\\r\\n\\tto retry, use: --limit @/home/tux/git/ansible_test_module/test.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=1   \\r\\n```\\r\\n\\r\\n.ansible_module_generated : https://gist.github.com/tux-00/08f77be0b1cbed8bfce8924b327ce274\\r\\n\\r\\n\\r\\n_Copied from original issue: ansible/ansible-modules-core#5818_\", \n    \"component_name\": \"ansible   naming\", \n    \"component_raw\": \"Ansible module naming\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19665\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I can't found something mentioning a naming rules for ansible modules in documentation and I'm not sure it's modules-core problem.\\n\\n\\n\\nI was trying to develop a new module for tests named test-test.py. When I execute my playbook to run my new module, ansible return a syntax error. The cause is the hyphen in the name of my module, If I delete it, everything works.\", \n    \"title\": \"Module name containing hyphens cause a crash\"\n  }, \n  \"19666\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_ami\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nOS X 10.12.2\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\nWhen registering the output of `ec2_ami`, where a `name` param is a passed in, this is does not appear on the output.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```\\r\\n    - name: create AMI\\r\\n      ec2_ami:\\r\\n        description: desc\\r\\n        instance_id: id-xxxxx\\r\\n        name: \\\"foo\\\"\\r\\n        region: region\\r\\n        wait: yes\\r\\n      register: create_ami_output\\r\\n\\r\\n    - debug: var=create_ami_output\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nRegistered debug output contains `name: foo`.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nOutput does not show `name` as a separate key:value pair. Closest is `location`, which has to be split.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nok: [localhost] => {\\r\\n    \\\"create_ami_output\\\": {\\r\\n        \\\"architecture\\\": \\\"x86_64\\\",\\r\\n        \\\"block_device_mapping\\\": {\\r\\n            \\\"/dev/sda1\\\": {\\r\\n                \\\"delete_on_termination\\\": true,\\r\\n                \\\"encrypted\\\": false,\\r\\n                \\\"size\\\": 64,\\r\\n                \\\"snapshot_id\\\": \\\"snap-06sdfsdf\\\",\\r\\n                \\\"volume_type\\\": \\\"gp2\\\"\\r\\n            },\\r\\n            \\\"/dev/xvdb\\\": {\\r\\n                \\\"delete_on_termination\\\": true,\\r\\n                \\\"encrypted\\\": true,\\r\\n                \\\"size\\\": 200,\\r\\n                \\\"snapshot_id\\\": \\\"snap-sdfsdfsdfsdf9\\\",\\r\\n                \\\"volume_type\\\": \\\"gp2\\\"\\r\\n            }\\r\\n        },\\r\\n        \\\"changed\\\": true,\\r\\n        \\\"creationDate\\\": \\\"2016-11-22T16:11:20.000Z\\\",\\r\\n        \\\"description\\\": \\\"sdfsdfsd\\\",\\r\\n        \\\"hypervisor\\\": \\\"xen\\\",\\r\\n        \\\"image_id\\\": \\\"ami-sdfsdf\\\",\\r\\n        \\\"is_public\\\": false,\\r\\n        \\\"location\\\": \\\"435345345345345/foo\\\",\\r\\n        \\\"msg\\\": \\\"AMI creation operation complete\\\",\\r\\n        \\\"ownerId\\\": \\\"345345345\\\",\\r\\n        \\\"root_device_name\\\": \\\"/dev/sda1\\\",\\r\\n        \\\"root_device_type\\\": \\\"ebs\\\",\\r\\n        \\\"state\\\": \\\"available\\\",\\r\\n        \\\"tags\\\": {},\\r\\n        \\\"virtualization_type\\\": \\\"hvm\\\"\\r\\n    }\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"ec2_ami\", \n    \"component_raw\": \"ec2_ami\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19666\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"cloud\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_ami.py\", \n    \"summary\": \"When registering the output of `ec2_ami`, where a `name` param is a passed in, this is does not appear on the output.\", \n    \"title\": \"ec2_ami registered output does not include 'name' from invocation\"\n  }, \n  \"19667\": {\n    \"ansible_version\": \"ansible 2.2.0.0 (detached HEAD cdec853e37) last updated 2016/11/01 123201 (GMT +100)\\nlib/ansible/modules/core (detached HEAD fe9c56a003) last updated 2016/11/01 123205 (GMT +100)\\nlib/ansible/modules/extras (detached HEAD f564e77a08) last updated 2016/11/01 123205 (GMT +100)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"ISSUE TYPE\\r\\n\\r\\nFeature Pull Request\\r\\nCOMPONENT NAME\\r\\n\\r\\nec2_asg\\r\\n\\r\\nANSIBLE VERSION\\r\\n\\r\\nansible 2.2.0.0 (detached HEAD cdec853e37) last updated 2016/11/01 12:32:01 (GMT +100)\\r\\n  lib/ansible/modules/core: (detached HEAD fe9c56a003) last updated 2016/11/01 12:32:05 (GMT +100)\\r\\n  lib/ansible/modules/extras: (detached HEAD f564e77a08) last updated 2016/11/01 12:32:05 (GMT +100)\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\nSUMMARY\\r\\n\\r\\nUpgrade module to use boto3 in order to support new functionality.\\r\\nAdded support for Application ELBs via Target Groups\\r\\nCompliments the following PRs in that it enables creation of an ASG with ansible generated application load balancers and target groups:\\r\\nelb_target_group: ansible/ansible-modules-extras#2947\\r\\nelb_application_lb: ansible/ansible-modules-extras#2946\\r\\n\\r\\nNote:\\r\\n\\r\\nOnly significant logic change is to support the integration with target groups/application lbs, so any existing issues remain\\r\\nOnly minimal testing performed\", \n    \"component_name\": \"ec2_asg\", \n    \"component_raw\": \"ec2_asg\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19667\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"committer_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_asg.py\", \n    \"summary\": \"Upgrade module to use boto3 in order to support new functionality.\\n\\nAdded support for Application ELBs via Target Groups\\n\\nCompliments the following PRs in that it enables creation of an ASG with ansible generated application load balancers and target groups:\\n\\nelb_target_group: ansible/ansible-modules-extras#2947\\n\\nelb_application_lb: ansible/ansible-modules-extras#2946\\n\\n\\n\\nNote:\\n\\n\\n\\nOnly significant logic change is to support the integration with target groups/application lbs, so any existing issues remain\\n\\nOnly minimal testing performed\", \n    \"title\": \"switch to boto3 and add support for application ELBs with target groups.\"\n  }, \n  \"19669\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible/contrib/inventory/azure_rm.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThe following changes were made to make the dynamic inventory script for Microsoft Azure more robust.\\r\\n\\r\\nI was encountering the following error:\\r\\n![ansible-error-01s](https://cloud.githubusercontent.com/assets/12058089/21463370/f255f650-c92d-11e6-8a88-cd76600e91b3.png)\\r\\n\\r\\nI believe this is the issue described in #17727 as well.\\r\\n\\r\\nI found this problem to be the result of Azure returning virtual machines that did not have an os_profile defined. I added checks for various objects and refactored the code slightly to correct this error and prevent further issues of this type.\\r\\n\\r\\nI then began receiving a new error:\\r\\n![ansible-error-03s](https://cloud.githubusercontent.com/assets/12058089/21463525/22f25aae-c930-11e6-980c-822f281522f4.png)\\r\\n\\r\\nI found this problem to be due to the [azure.mgmt.compute.models.ProtocolTypes](https://azure-sdk-for-python.readthedocs.io/en/latest/ref/azure.mgmt.compute.models.html#azure.mgmt.compute.models.ProtocolTypes) being an Enum, and the json.dumps method not being able to serialize it. I implemented a very generic [Encoder](https://docs.python.org/2/library/json.html#encoders-and-decoders) to provide generic serialization of Enums.\\r\\n\\r\\nNote that this probably will not de-serialize well, if at all, but I feel that any attempt to standardize serialization and de-serialization should be left to the maintainers. In the event such a standard is agreed upon, the implementation can easily be removed or corrected.\", \n    \"component_name\": \"ansible/contrib/inventory/azure_rm.py\", \n    \"component_raw\": \"ansible/contrib/inventory/azure_rm.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19669\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"azure\", \n      \"bug\", \n      \"cloud\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The following changes were made to make the dynamic inventory script for Microsoft Azure more robust.\\n\\n\\n\\nI was encountering the following error:\\n\\n![ansible-error-01s](https://cloud.githubusercontent.com/assets/12058089/21463370/f255f650-c92d-11e6-8a88-cd76600e91b3.png)\\n\\n\\n\\nI believe this is the issue described in #17727 as well.\\n\\n\\n\\nI found this problem to be the result of Azure returning virtual machines that did not have an os_profile defined. I added checks for various objects and refactored the code slightly to correct this error and prevent further issues of this type.\\n\\n\\n\\nI then began receiving a new error:\\n\\n![ansible-error-03s](https://cloud.githubusercontent.com/assets/12058089/21463525/22f25aae-c930-11e6-980c-822f281522f4.png)\\n\\n\\n\\nI found this problem to be due to the [azure.mgmt.compute.models.ProtocolTypes](https://azure-sdk-for-python.readthedocs.io/en/latest/ref/azure.mgmt.compute.models.html#azure.mgmt.compute.models.ProtocolTypes) being an Enum, and the json.dumps method not being able to serialize it. I implemented a very generic [Encoder](https://docs.python.org/2/library/json.html#encoders-and-decoders) to provide generic serialization of Enums.\\n\\n\\n\\nNote that this probably will not de-serialize well, if at all, but I feel that any attempt to standardize serialization and de-serialization should be left to the maintainers. In the event such a standard is agreed upon, the implementation can easily be removed or corrected.\", \n    \"title\": \"Corrected Null Object and JSON Serialization Errors\"\n  }, \n  \"19670\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\n - azure_rm_storageaccount\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nDistributor ID: Ubuntu\\r\\nDescription:    Ubuntu 16.10\\r\\nRelease:        16.10\\r\\nCodename:       yakkety\\r\\n\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\nI'm trying to create a storage account in my Azure resource group. I have a Service Principal created using Azure CLI and granted \\\"Owner\\\" role to the resource group under my Azure sandbox subscription.  I validated I can login successfully (using SP) and can also create storage account in my resource group using Azure CLI using the command  below\\r\\nazure storage account create teststorageacct14 -g <resource_group_name> -s <subscription_id> --location westus --kind Storage --sku-name LRS\\r\\n\\r\\nWhen I use the azure_rm_storageaccount module to do the same, I get AuthorizationFailed error. I have tried to pass credentials by passing parameters directly to the task as well as by setting environment variables. \\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n\\r\\n-->\\r\\n\\r\\nOn the Ansible control node, enter the command below (You should have Azure CLI installed prior to this)\\r\\n\\r\\n1: Login to Azure from the command line on the Ansible control server\\r\\nazure login\\r\\n\\r\\n2: It will provide a url where you enter the device code that comes back from the above command. \\r\\n\\r\\n3: Once you enter the code, it will detect it is for Azure CLI and it will ask you to provide your credential that has access to the Azure subscription you're trying to access. Enter these credentials (in my case, I use my network AD credentials)\\r\\n\\r\\n4: Once authenticated, you will see a message on the Azure CLI reporting login was successful. \\r\\n\\r\\n5: Create Service Principal using CLI\\r\\n    azure sp create -n ansible -p <some_password> \\r\\n\\r\\n6: You will get back the service principal name, object id, application id. app_id and service principal name will be the same\\r\\n\\r\\n7: Grant the service principal permissions on your subscription. (I granted the Owner role on the resource group, as that is what my network AD account that I used to login to azure cli has permissions to grant. My network account has \\\"Owner\\\" role on the RG only. I cannot grant any roles at the subscription level). \\r\\n\\r\\n   azure role assignment create --objectId 65c88993-5a65-42d3-b00e-032c62cfcacf -o Owner -c /subscriptions/<subscription_id>/resourceGroups/<rg_name>\\r\\n\\r\\n8: Create a storage account \\r\\n\\r\\n   azure storage account create teststorageacct10 -g <rg_name> -s <subscription_id> --location westus --kind Storage --skuname LRS\\r\\n \\r\\n9: Storage account is created successfully and I can verify on the Azure Portal\\r\\n\\r\\n10: Excecute my Ansible playbook (yaml attached) and it fails with the error below. I have tried setting the environment variable (both the Linux way, setting it in my bash profile and via environment directive inside the playbook) as well as passing parameters directly to the \\\"azure_rm_storageaccount\\\" task . Same result. \\r\\n\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n---\\r\\n- hosts: local\\r\\n\\r\\n  tasks:\\r\\n    - name: Create storage account\\r\\n      azure_rm_storageaccount:\\r\\n        resource_group: RG-SbuxSandbox-Customer-Data-Exchange\\r\\n        name: ansiblestgacct78\\r\\n        account_type: Standard_LRS\\r\\n        tenant: ee69be27-d938-4eb5-8711-c5e69ca43718\\r\\n        client_id: 1963c6a0-fd5f-4b0d-9216-d18ae2c29a85\\r\\n        secret: i2GprOGdIbSODhfTzNdVjf0y1P0rnjBn438zBr1/wTg=\\r\\n        subscription_id: 479ab15d-b97b-4c20-99fa-869075cd52ae\\r\\n        state: present\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nStorage account to be created successfully in the resource group\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\nazure_rm_storageaccount task failed with AuthorizationFailed error\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nansible@CDX-CICD:/etc/ansible/playbooks$ ansible-playbook azure_create_storage_account.yml -vvvv\\r\\nUsing /etc/ansible/ansible.cfg as config file\\r\\nLoading callback plugin default of type stdout, v2.0 from /usr/lib/python2.7/dist-packages/ansible/plugins/callback/__init__.pyc\\r\\n\\r\\nPLAYBOOK: azure_create_storage_account.yml *************************************\\r\\n1 plays in azure_create_storage_account.yml\\r\\n\\r\\nPLAY [local] *******************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/core/system/setup.py\\r\\n<localhost> ESTABLISH SSH CONNECTION FOR USER: ansible\\r\\n<localhost> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ansible -o ConnectTimeout=10 -o ControlPath=/home/ansible/.ansible/cp/ansible-ssh-%h-%p-%r localhost '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1482533588.2-147375583897386 `\\\" && echo ansible-tmp-1482533588.2-147375583897386=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1482533588.2-147375583897386 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<localhost> PUT /tmp/tmpML3rhv TO /home/ansible/.ansible/tmp/ansible-tmp-1482533588.2-147375583897386/setup.py\\r\\n<localhost> SSH: EXEC sftp -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ansible -o ConnectTimeout=10 -o ControlPath=/home/ansible/.ansible/cp/ansible-ssh-%h-%p-%r '[localhost]'\\r\\n<localhost> ESTABLISH SSH CONNECTION FOR USER: ansible\\r\\n<localhost> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ansible -o ConnectTimeout=10 -o ControlPath=/home/ansible/.ansible/cp/ansible-ssh-%h-%p-%r localhost '/bin/sh -c '\\\"'\\\"'chmod u+x /home/ansible/.ansible/tmp/ansible-tmp-1482533588.2-147375583897386/ /home/ansible/.ansible/tmp/ansible-tmp-1482533588.2-147375583897386/setup.py && sleep 0'\\\"'\\\"''\\r\\n<localhost> ESTABLISH SSH CONNECTION FOR USER: ansible\\r\\n<localhost> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ansible -o ConnectTimeout=10 -o ControlPath=/home/ansible/.ansible/cp/ansible-ssh-%h-%p-%r -tt localhost '/bin/sh -c '\\\"'\\\"'/usr/bin/python /home/ansible/.ansible/tmp/ansible-tmp-1482533588.2-147375583897386/setup.py; rm -rf \\\"/home/ansible/.ansible/tmp/ansible-tmp-1482533588.2-147375583897386/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\nok: [localhost]\\r\\n\\r\\nTASK [Create storage account] **************************************************\\r\\ntask path: /etc/ansible/playbooks/azure_create_storage_account.yml:5\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/core/cloud/azure/azure_rm_storageaccount.py\\r\\n<localhost> ESTABLISH SSH CONNECTION FOR USER: ansible\\r\\n<localhost> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ansible -o ConnectTimeout=10 -o ControlPath=/home/ansible/.ansible/cp/ansible-ssh-%h-%p-%r localhost '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1482533588.84-67375248268989 `\\\" && echo ansible-tmp-1482533588.84-67375248268989=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1482533588.84-67375248268989 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<localhost> PUT /tmp/tmpl8ufxh TO /home/ansible/.ansible/tmp/ansible-tmp-1482533588.84-67375248268989/azure_rm_storageaccount.py\\r\\n<localhost> SSH: EXEC sftp -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ansible -o ConnectTimeout=10 -o ControlPath=/home/ansible/.ansible/cp/ansible-ssh-%h-%p-%r '[localhost]'\\r\\n<localhost> ESTABLISH SSH CONNECTION FOR USER: ansible\\r\\n<localhost> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ansible -o ConnectTimeout=10 -o ControlPath=/home/ansible/.ansible/cp/ansible-ssh-%h-%p-%r localhost '/bin/sh -c '\\\"'\\\"'chmod u+x /home/ansible/.ansible/tmp/ansible-tmp-1482533588.84-67375248268989/ /home/ansible/.ansible/tmp/ansible-tmp-1482533588.84-67375248268989/azure_rm_storageaccount.py && sleep 0'\\\"'\\\"''\\r\\n<localhost> ESTABLISH SSH CONNECTION FOR USER: ansible\\r\\n<localhost> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ansible -o ConnectTimeout=10 -o ControlPath=/home/ansible/.ansible/cp/ansible-ssh-%h-%p-%r -tt localhost '/bin/sh -c '\\\"'\\\"'/usr/bin/python /home/ansible/.ansible/tmp/ansible-tmp-1482533588.84-67375248268989/azure_rm_storageaccount.py; rm -rf \\\"/home/ansible/.ansible/tmp/ansible-tmp-1482533588.84-67375248268989/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"account_type\\\": \\\"Standard_LRS\\\",\\r\\n            \\\"ad_user\\\": null,\\r\\n            \\\"append_tags\\\": true,\\r\\n            \\\"client_id\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n            \\\"custom_domain\\\": null,\\r\\n            \\\"force\\\": false,\\r\\n            \\\"kind\\\": \\\"Storage\\\",\\r\\n            \\\"location\\\": null,\\r\\n            \\\"name\\\": \\\"ansiblestgacct78\\\",\\r\\n            \\\"password\\\": null,\\r\\n            \\\"profile\\\": null,\\r\\n            \\\"resource_group\\\": \\\"RG-SbuxSandbox-Customer-Data-Exchange\\\",\\r\\n            \\\"secret\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n            \\\"state\\\": \\\"present\\\",\\r\\n            \\\"subscription_id\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n            \\\"tags\\\": null,\\r\\n            \\\"tenant\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\"\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"azure_rm_storageaccount\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"One-time registration of Microsoft.Storage failed - Azure Error: AuthorizationFailed\\\\nMessage: The client '65c88993-5a65-42d3-b00e-032c62cfcacf' with object id '65c88993-5a65-42d3-b00e-032c62cfcacf' does not have authorization to perform action 'Microsoft.Storage/register/action' over scope '/subscriptions/********'.\\\"\\r\\n}\\r\\n        to retry, use: --limit @/home/ansible/ansible-retry/azure_create_storage_account.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=1\\r\\n\\r\\n\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"azure_rm_storageaccount\", \n    \"component_raw\": \"- azure_rm_storageaccount\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19670\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"azure\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/azure/azure_rm_storageaccount.py\", \n    \"summary\": \"I'm trying to create a storage account in my Azure resource group. I have a Service Principal created using Azure CLI and granted \\\"Owner\\\" role to the resource group under my Azure sandbox subscription.  I validated I can login successfully (using SP) and can also create storage account in my resource group using Azure CLI using the command  below\\n\\nazure storage account create teststorageacct14 -g <resource_group_name> -s <subscription_id> --location westus --kind Storage --sku-name LRS\\n\\n\\n\\nWhen I use the azure_rm_storageaccount module to do the same, I get AuthorizationFailed error. I have tried to pass credentials by passing parameters directly to the task as well as by setting environment variables.\", \n    \"title\": \"azure_rm_storageaccount module throws AuthorizationFailed error\"\n  }, \n  \"19671\": {\n    \"ansible_version\": \"2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n- `lib/ansible/module_utils/facts.py`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```2.2.0.0```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nAdd facts for SMGL, after [adding Sorcery support](https://github.com/ansible/ansible/pull/19072) to Ansible.\", \n    \"component_name\": \"lib/ansible/module_utils/facts.py\", \n    \"component_raw\": \"- `lib/ansible/module_utils/facts.py`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19671\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"c:module_utils/facts\", \n      \"feature\", \n      \"module_util\", \n      \"needs_revision\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Add facts for SMGL, after [adding Sorcery support](https://github.com/ansible/ansible/pull/19072) to Ansible.\", \n    \"title\": \"Add Source Mage GNU/Linux facts\"\n  }, \n  \"19672\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\nHi,\\r\\nI went through a thread on GitHub but that didnt give a proper resolution(It was downgrading the app).So I have created this new issue.While copying dir. from server1 to server2 using my simple ansible-playbook (AnsibleServer which is 3rd server). So basically, when I use ping all command it connects, but sync it gives error\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nsynchronize\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nhost_key_checking=False\\r\\n\\r\\n[privilege_escalation]\\r\\nbecome=True\\r\\nbecome_method=sudo\\r\\n\\r\\nOther tahn this all commented\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nCentOS Linux release 7.2.1511 (Core)\\r\\nNAME=\\\"CentOS Linux\\\"\\r\\nVERSION=\\\"7 (Core)\\\"\\r\\nID=\\\"centos\\\"\\r\\nID_LIKE=\\\"rhel fedora\\\"\\r\\nVERSION_ID=\\\"7\\\"\\r\\nPRETTY_NAME=\\\"CentOS Linux 7 (Core)\\\"\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nbelow error:(I tried both pull and push method by changing the delegate_server and hosts)\\r\\n\\r\\nTASK [Transfer files from Server1 to Server2] **********************************\\r\\nfatal: [x.x.x.x]: UNREACHABLE! => {\\\"changed\\\": false, \\\"msg\\\": \\\"Failed to connect to the host via ssh: ssh: Could not resolve hostname serv1: Name or service not known\\\\r\\\\n\\\", \\\"unreachable\\\": true}\\r\\nto retry, use: --limit @/etc/ansible/playbook/hello.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\n\\r\\nbut ping is success:\\r\\nansible -i /etc/ansible/copyHosts -m ping all\\r\\nx.x.x.x | SUCCESS => {\\r\\n\\\"changed\\\": false,\\r\\n\\\"ping\\\": \\\"pong\\\"\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nansible-playbook -i /etc/ansible/copyHosts /etc/ansible/playbook/transfer.yml\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nShould read the inventory file which has server1 and 2 info about IP, keys, ports and users and copy dirctories recursively\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nUnreachable error\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"synchronize\", \n    \"component_raw\": \"synchronize\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19672\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/synchronize.py\", \n    \"summary\": \"below error:(I tried both pull and push method by changing the delegate_server and hosts)\\n\\n\\n\\nTASK [Transfer files from Server1 to Server2] **********************************\\n\\nfatal: [x.x.x.x]: UNREACHABLE! => {\\\"changed\\\": false, \\\"msg\\\": \\\"Failed to connect to the host via ssh: ssh: Could not resolve hostname serv1: Name or service not known\\\\r\\\\n\\\", \\\"unreachable\\\": true}\\n\\nto retry, use: --limit @/etc/ansible/playbook/hello.retry\\n\\n\\n\\nPLAY RECAP *********************************************************************\\n\\n\\n\\nbut ping is success:\\n\\nansible -i /etc/ansible/copyHosts -m ping all\\n\\nx.x.x.x | SUCCESS => {\\n\\n\\\"changed\\\": false,\\n\\n\\\"ping\\\": \\\"pong\\\"\", \n    \"title\": \"Ansible:Synchronize module throwing UNREACHABLE! error\"\n  }, \n  \"19673\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\n`plugins/strategy/__init__.py`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nFresh install\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nRHEL\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\n`meta: clear_host_errors`   is not working as expected\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- hosts: all\\r\\n  gather_facts: no\\r\\n  tasks:\\r\\n\\r\\n  - name: dummy check 1\\r\\n    changed_when: no\\r\\n    failed_when: no\\r\\n    ignore_errors: yes\\r\\n    shell: uname\\r\\n\\r\\n  - meta: clear_host_errors\\r\\n\\r\\n  - name: dummy check 2\\r\\n    changed_when: no\\r\\n    failed_when: no\\r\\n    ignore_errors: yes\\r\\n    shell: uname -n\\r\\n\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n$ ansible-playbook -i localhost,google.com  dummy.yml\\r\\n\\r\\nPLAY [all] *********************************************************************\\r\\n\\r\\nTASK [dummy check 1] ***********************************************************\\r\\nok: [localhost]\\r\\nfatal: [google.com]: UNREACHABLE! => {\\\"changed\\\": false, \\\"msg\\\": \\\"Failed to connect to the host via ssh: ssh: connect to host google.com port 22: Connection timed out\\\\r\\\\n\\\", \\\"unreachable\\\": true}\\r\\n\\r\\nTASK [dummy check 2] ***********************************************************\\r\\nok: [localhost]\\r\\nfatal: [google.com]: UNREACHABLE! => {\\\"changed\\\": false, \\\"msg\\\": \\\"Failed to connect to the host via ssh: ssh: connect to host google.com port 22: Connection timed out\\\\r\\\\n\\\", \\\"unreachable\\\": true}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\ngoogle.com                 : ok=0    changed=0    unreachable=2    failed=0\\r\\nlocalhost                  : ok=2    changed=0    unreachable=0    failed=0\\r\\n\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nExpected to use unreachable host in the subsequent task. As per  https://github.com/ansible/ansible/pull/18127/files \\r\\n \\\"Connection failures set hosts as 'UNREACHABLE', which will remove them from the list of active hosts for the run. To recover from these issues you can use `meta: clear_host_errors` to have all currently flagged hosts reactivated, so subsequent tasks can try to use them again.\\\"\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n$ ansible-playbook -i localhost,google.com  dummy.yml\\r\\n\\r\\nPLAY [all] *********************************************************************\\r\\n\\r\\nTASK [dummy check 1] ***********************************************************\\r\\nok: [localhost]\\r\\nfatal: [google.com]: UNREACHABLE! => {\\\"changed\\\": false, \\\"msg\\\": \\\"Failed to connect to the host via ssh: ssh: connect to host google.com port 22: Connection timed out\\\\r\\\\n\\\", \\\"unreachable\\\": true}\\r\\n\\r\\nTASK [dummy check 2] ***********************************************************\\r\\nok: [localhost]\\r\\n        to retry, use: --limit @/root/dummy.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\ngoogle.com                 : ok=0    changed=0    unreachable=1    failed=0\\r\\nlocalhost                  : ok=2    changed=0    unreachable=0    failed=0\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"plugins/strategy/init.py\", \n    \"component_raw\": \"`plugins/strategy/__init__.py`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19673\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"`meta: clear_host_errors`   is not working as expected\", \n    \"title\": \"meta: clear_host_errors not working on tasks\"\n  }, \n  \"19675\": {\n    \"ansible_version\": \"ansible 2.3.0 (18768-cron-oserror-selinux 5fe684da1b) last updated 2016/12/25 025737 (GMT +000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`cron` module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (18768-cron-oserror-selinux 5fe684da1b) last updated 2016/12/25 02:57:37 (GMT +000)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nRunning a task without a `cron_file` parameter against an SELinux enabled host results in attempting to set a context against a null filename...this evidently manifests as an OSError.\\r\\n\\r\\nAdded a check that `cron_file` exists before applying said context, and verified against a vagrant machine with SELinux installed.\\r\\n\\r\\n###### Before the patch\\r\\n```\\r\\nTASK [test cron job] *******************************************************************************************************************************************************************************************\\r\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: OSError: [Errno 14] Bad address\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_sgtLRe/ansible_module_cron.py\\\\\\\", line 779, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_sgtLRe/ansible_module_cron.py\\\\\\\", line 746, in main\\\\n    crontab.write()\\\\n  File \\\\\\\"/tmp/ansible_sgtLRe/ansible_module_cron.py\\\\\\\", line 349, in write\\\\n    selinux.selinux_lsetfilecon_default(self.cron_file)\\\\nOSError: [Errno 14] Bad address\\\\n\\\", \\\"module_stdout\\\": \\\"\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\", \\\"rc\\\": 0}\\r\\n\\tto retry, use: --limit @/vagrant/test.retry\\r\\n```\\r\\n\\r\\n###### After the patch\\r\\n```\\r\\nTASK [test cron job] *******************************************************************************************************************************************************************************************\\r\\nchanged: [localhost]\\r\\n```\\r\\n\\r\\nFixes #18768\", \n    \"component_name\": \"cron\", \n    \"component_raw\": \"`cron` module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19675\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"committer_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/cron.py\", \n    \"summary\": \"Running a task without a `cron_file` parameter against an SELinux enabled host results in attempting to set a context against a null filename...this evidently manifests as an OSError.\\n\\n\\n\\nAdded a check that `cron_file` exists before applying said context, and verified against a vagrant machine with SELinux installed.\\n\\n\\n\\n###### Before the patch\\n\\n```\\n\\nTASK [test cron job] *******************************************************************************************************************************************************************************************\\n\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: OSError: [Errno 14] Bad address\\n\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_sgtLRe/ansible_module_cron.py\\\\\\\", line 779, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_sgtLRe/ansible_module_cron.py\\\\\\\", line 746, in main\\\\n    crontab.write()\\\\n  File \\\\\\\"/tmp/ansible_sgtLRe/ansible_module_cron.py\\\\\\\", line 349, in write\\\\n    selinux.selinux_lsetfilecon_default(self.cron_file)\\\\nOSError: [Errno 14] Bad address\\\\n\\\", \\\"module_stdout\\\": \\\"\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\", \\\"rc\\\": 0}\\n\\n\\tto retry, use: --limit @/vagrant/test.retry\\n\\n```\\n\\n\\n\\n###### After the patch\\n\\n```\\n\\nTASK [test cron job] *******************************************************************************************************************************************************************************************\\n\\nchanged: [localhost]\\n\\n```\\n\\n\\n\\nFixes #18768\", \n    \"title\": \"cron - Apply SELinux context only if cron_file exists\"\n  }, \n  \"19682\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nCallback method named `v2_playbook_on_cleanup_task_start`, see `lib/ansible/plugins/callback/__init__.py` file.\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\nSee [full reproducer](https://github.com/marbu/reproducer-ansible-issue19682) referenced below.\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nFedora 24\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nIt seems that callback method named `v2_playbook_on_cleanup_task_start` is not actually called for anywhere.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nHere is minimal playbook so that all `v2_playbook_on.*start` callback methods can be checked:\\r\\n\\r\\n\\r\\n```yaml\\r\\n---\\r\\n- name: Playbook to reproduce issue with cleanup task callback\\r\\n  hosts: localhost\\r\\n  connection: local\\r\\n\\r\\n  tasks:\\r\\n\\r\\n   - name: Check that tmp file exists\\r\\n     file:\\r\\n       path=/tmp/reproducer-{{ 100 | random }}\\r\\n       state=touch\\r\\n     notify: ping-handler\\r\\n\\r\\n   # example based on https://docs.ansible.com/ansible/playbooks_blocks.html\\r\\n   - block:\\r\\n       - debug: msg='I execute normally'\\r\\n       - command: /bin/false\\r\\n     rescue:\\r\\n       - debug: msg='I caught an error'\\r\\n     always:\\r\\n       - debug: msg=\\\"This always executes\\\" \\r\\n\\r\\n  handlers:\\r\\n\\r\\n   - name: ping-handler\\r\\n     action: ping\\r\\n```\\r\\n\\r\\nNow to test the callbacks, we need to run this playbook with plugin which will\\r\\nuse them:\\r\\n\\r\\n```\\r\\n# make coding more python3-ish\\r\\nfrom __future__ import (absolute_import, division, print_function)\\r\\n__metaclass__ = type\\r\\n\\r\\n\\r\\nfrom ansible.plugins.callback import CallbackBase\\r\\nfrom ansible import constants as C\\r\\n\\r\\n\\r\\nclass CallbackModule(CallbackBase):\\r\\n    CALLBACK_VERSION = 2.0\\r\\n    CALLBACK_NAME = 'reproducer'\\r\\n    CALLBACK_NEEDS_WHITELIST = False\\r\\n\\r\\n    def __init__(self):\\r\\n        super(CallbackModule, self).__init__()\\r\\n        print(\\\"*** callback: init\\\")\\r\\n\\r\\n    #\\r\\n    # start callbacks\\r\\n    #\\r\\n\\r\\n    def v2_playbook_on_start(self, playbook):\\r\\n        print(\\\"*** callback: on_start\\\")\\r\\n\\r\\n    def v2_playbook_on_play_start(self, play):\\r\\n        print(\\\"*** callback: on_play_start\\\")\\r\\n\\r\\n    def v2_playbook_on_task_start(self, task, is_conditional):\\r\\n        print(\\\"*** callback: on_task_start\\\")\\r\\n\\r\\n    def v2_playbook_on_handler_task_start(self, task):\\r\\n        print(\\\"*** callback: on_handler_task_start\\\")\\r\\n\\r\\n    def v2_playbook_on_cleanup_task_start(self, task):\\r\\n        print(\\\"*** callback: on_handler_cleanup_start\\\")\\r\\n\\r\\n```\\r\\n\\r\\nSee [repository with full reproducer](https://github.com/marbu/reproducer-ansible-issue19682) to reproduce the issue:\\r\\n\\r\\n\\r\\n```\\r\\n$ git clone https://github.com/marbu/reproducer-ansible-issue19682\\r\\n$ cd reproducer-ansible-issue19682\\r\\n$ ansible-playbook reproducer.yml\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nI can see that all callback handlers  (`v2_playbook_on_start`, `v2_playbook_on_play_start`, `v2_playbook_on_task_start`, `v2_playbook_on_handler_task_start`) but `v2_playbook_on_cleanup_task_start` were used:\\r\\n\\r\\n```\\r\\n$ ansible-playbook reproducer.yml \\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n\\r\\n*** callback: init\\r\\n*** callback: on_start\\r\\n\\r\\nPLAY [Playbook to reproduce issue with cleanup task callback] ******************\\r\\n*** callback: on_play_start\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\n*** callback: on_task_start\\r\\nok: [localhost]\\r\\n\\r\\nTASK [Check that tmp file exists] **********************************************\\r\\n*** callback: on_task_start\\r\\nchanged: [localhost]\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\n*** callback: on_task_start\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": \\\"I execute normally\\\"\\r\\n}\\r\\n\\r\\nTASK [command] *****************************************************************\\r\\n*** callback: on_task_start\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": true, \\\"cmd\\\": [\\\"/bin/false\\\"], \\\"delta\\\": \\\"0:00:00.010491\\\", \\\"end\\\": \\\"2016-12-26 15:25:47.212042\\\", \\\"failed\\\": true, \\\"rc\\\": 1, \\\"start\\\": \\\"2016-12-26 15:25:47.201551\\\", \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"\\\", \\\"stdout_lines\\\": [], \\\"warnings\\\": []}\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\n*** callback: on_task_start\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": \\\"I caught an error\\\"\\r\\n}\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\n*** callback: on_task_start\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": \\\"This always executes\\\"\\r\\n}\\r\\n\\r\\nRUNNING HANDLER [ping-handler] *************************************************\\r\\n*** callback: on_handler_task_start\\r\\nok: [localhost]\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=6    changed=1    unreachable=0    failed=0 \\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nTo fix this, you could either drop the callback method\\r\\n`v2_playbook_on_cleanup_task_start` or actually call it during execution so\\r\\nthat I could use it in callback plugin. I'm not sure which\\r\\nsolution would make more sense.\\r\\n\\r\\n##### ADDITIONAL DETAILS\\r\\n\\r\\nI run into callback method named `v2_playbook_on_cleanup_task_start` while I\\r\\nwas working on a custom ansible callback plugin. When I tried to check what the\\r\\npurpose of this callback actually is (to better understand if I could use it\\r\\nin the plugin I was working on), I noticed that that it's not actually called\\r\\nfor anything anywhere:\\r\\n\\r\\n\\r\\n```\\r\\nmarbu@kari 15:08:46 ~/projects/ansible (devel= 47c0c71)\\r\\n$ git grep v2_playbook_on_cleanup_task_start\\r\\nlib/ansible/plugins/callback/__init__.py:    def v2_playbook_on_cleanup_task_start(self, task):\\r\\nlib/ansible/plugins/callback/default.py:    def v2_playbook_on_cleanup_task_start(self, task):\\r\\nlib/ansible/plugins/callback/dense.py:    def v2_playbook_on_cleanup_task_start(self, task):\\r\\nlib/ansible/plugins/callback/junit.py:    def v2_playbook_on_cleanup_task_start(self, task):\\r\\n```\\r\\n\\r\\nAs you can see, only the ``__init__.py`` file of the callback module and some\\r\\nother plugins there contain definition of the callback method, but no other\\r\\nusage is found.\\r\\n\", \n    \"component_name\": \"callback method named v2_playbook_on_cleanup_task_start see lib/ansible/plugins/callback/init.py file.\", \n    \"component_raw\": \"Callback method named `v2_playbook_on_cleanup_task_start`, see `lib/ansible/plugins/callback/__init__.py` file.\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19682\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"It seems that callback method named `v2_playbook_on_cleanup_task_start` is not actually called for anywhere.\", \n    \"title\": \"callback method v2_playbook_on_cleanup_task_start is not used\"\n  }, \n  \"19685\": {\n    \"ansible_version\": \"ansible 2.1.0.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\ncloud/amazon/iam_cert\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.0.0\\n```\\n##### SUMMARY\\n\\nI added a new state: `ping`\\nImho it's very useful to retrieve informations about a certificate without manipulation:\\n- check the expiration date and trigger something...\\n- retrieve the arn path to create an aws elb with https...\\n##### TEST\\n###### good\\n\\n```\\n19:54 $ python ansible/hacking/test-module -m ./ansible-modules-core/cloud/amazon/iam_cert.py -a \\\"name=xxx.com state='ping'\\\"\\n***********************************\\nRAW OUTPUT\\n\\n{\\\"upload_date\\\": \\\"2015-03-16T09:36:04Z\\\", \\\"name\\\": \\\"xxx.com\\\", \\\"expiration_date\\\": \\\"2016-09-18T05:47:53Z\\\", \\\"changed\\\": false, \\\"cert_body\\\": \\\"-----BEGIN CERTIFICATE-----\\\\n\\\\nIwQYMBaAFGtpKwm\\\\neO9Z9uifJ+JMspQ39UlTH+t2K+X9IseqwfNA\\\\n-----END CERTIFICATE-----\\\", \\\"invocation\\\": {\\\"module_args\\\": {\\\"profile\\\": null, \\\"new_name\\\": null, \\\"dup_ok\\\": null, \\\"new_path\\\": null, \\\"name\\\": \\\"mmtro.com\\\", \\\"security_token\\\": null, \\\"state\\\": \\\"ping\\\", \\\"region\\\": null, \\\"aws_secret_key\\\": null, \\\"aws_access_key\\\": null, \\\"cert\\\": null, \\\"key\\\": null, \\\"ec2_url\\\": null, \\\"path\\\": \\\"/\\\", \\\"validate_certs\\\": true, \\\"cert_chain\\\": null}}, \\\"cert_path\\\": \\\"/cloudfront/xxx.com/\\\", \\\"arn\\\": \\\"arn:aws:iam::xxx:server-certificate/cloudfront/xxx.com/xxx.com\\\"}\\n\\n\\n***********************************\\nPARSED OUTPUT\\n{\\n    \\\"arn\\\": \\\"arn:aws:iam::xxxserver-certificate/cloudfront/xxx.com/xxx.com\\\", \\n    \\\"cert_body\\\": \\\"-----BEGIN CERTIFICATE-----\\\\/\\\\n41W8XFek9i9WpbFROeqZaZEtIsnZ3c5iQq7kY5k4WkykQKDgpWSOqPLhjsZzAsfb\\\\neO9Z9uifJ+JMspQ39UlTH+t2K+X9IseqwfNA\\\\n-----END CERTIFICATE-----\\\", \\n    \\\"cert_path\\\": \\\"/cloudfront/xxx.com/\\\", \\n    \\\"changed\\\": false, \\n    \\\"expiration_date\\\": \\\"2015-09-18T05:47:53Z\\\", \\n    \\\"invocation\\\": {\\n        \\\"module_args\\\": {\\n            \\\"aws_access_key\\\": null, \\n            \\\"aws_secret_key\\\": null, \\n            \\\"cert\\\": null, \\n            \\\"cert_chain\\\": null, \\n            \\\"dup_ok\\\": null, \\n            \\\"ec2_url\\\": null, \\n            \\\"key\\\": null, \\n            \\\"name\\\": \\\"xxx.com\\\", \\n            \\\"new_name\\\": null, \\n            \\\"new_path\\\": null, \\n            \\\"path\\\": \\\"/\\\", \\n            \\\"profile\\\": null, \\n            \\\"region\\\": null, \\n            \\\"security_token\\\": null, \\n            \\\"state\\\": \\\"ping\\\", \\n            \\\"validate_certs\\\": true\\n        }\\n    }, \\n    \\\"name\\\": \\\"xxx.com\\\", \\n    \\\"upload_date\\\": \\\"2015-03-16T09:36:04Z\\\"\\n}\\n```\\n##### fail\\n\\n```\\n19:54 $ python ansible/hacking/test-module -m ./ansible-modules-core-lujeni/cloud/amazon/iam_cert.py -a \\\"name=ansible.com state='ping'\\\"\\n***********************************\\nRAW OUTPUT\\n\\n{\\\"invocation\\\": {\\\"module_args\\\": {\\\"profile\\\": null, \\\"new_name\\\": null, \\\"dup_ok\\\": null, \\\"new_path\\\": null, \\\"name\\\": \\\"ansible.com\\\", \\\"security_token\\\": null, \\\"state\\\": \\\"ping\\\", \\\"region\\\": null, \\\"aws_secret_key\\\": null, \\\"aws_access_key\\\": null, \\\"cert\\\": null, \\\"key\\\": null, \\\"ec2_url\\\": null, \\\"path\\\": \\\"/\\\", \\\"validate_certs\\\": true, \\\"cert_chain\\\": null}}, \\\"message\\\": \\\"The Server Certificate with name ansible.com cannot be found.\\\", \\\"changed\\\": false, \\\"name\\\": \\\"ansible.com\\\"}\\n\\n\\n***********************************\\nPARSED OUTPUT\\n{\\n    \\\"changed\\\": false, \\n    \\\"invocation\\\": {\\n        \\\"module_args\\\": {\\n            \\\"aws_access_key\\\": null, \\n            \\\"aws_secret_key\\\": null, \\n            \\\"cert\\\": null, \\n            \\\"cert_chain\\\": null, \\n            \\\"dup_ok\\\": null, \\n            \\\"ec2_url\\\": null, \\n            \\\"key\\\": null, \\n            \\\"name\\\": \\\"ansible.com\\\", \\n            \\\"new_name\\\": null, \\n            \\\"new_path\\\": null, \\n            \\\"path\\\": \\\"/\\\", \\n            \\\"profile\\\": null, \\n            \\\"region\\\": null, \\n            \\\"security_token\\\": null, \\n            \\\"state\\\": \\\"ping\\\", \\n            \\\"validate_certs\\\": true\\n        }\\n    }, \\n    \\\"message\\\": \\\"The Server Certificate with name ansible.com cannot be found.\\\", \\n    \\\"name\\\": \\\"ansible.com\\\"\\n}\\n```\\n\\nThanks\\n\", \n    \"component_name\": \"cloud/amazon/iam_cert\", \n    \"component_raw\": \"cloud/amazon/iam_cert\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19685\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"needs_revision\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/iam_cert.py\", \n    \"summary\": \"I added a new state: `ping`\\nImho it's very useful to retrieve informations about a certificate without manipulation:\\n- check the expiration date and trigger something...\\n- retrieve the arn path to create an aws elb with https...\\n##### TEST\\n###### good\\n\\n```\\n19:54 $ python ansible/hacking/test-module -m ./ansible-modules-core/cloud/amazon/iam_cert.py -a \\\"name=xxx.com state='ping'\\\"\\n***********************************\\nRAW OUTPUT\\n\\n{\\\"upload_date\\\": \\\"2015-03-16T09:36:04Z\\\", \\\"name\\\": \\\"xxx.com\\\", \\\"expiration_date\\\": \\\"2016-09-18T05:47:53Z\\\", \\\"changed\\\": false, \\\"cert_body\\\": \\\"-----BEGIN CERTIFICATE-----\\\\n\\\\nIwQYMBaAFGtpKwm\\\\neO9Z9uifJ+JMspQ39UlTH+t2K+X9IseqwfNA\\\\n-----END CERTIFICATE-----\\\", \\\"invocation\\\": {\\\"module_args\\\": {\\\"profile\\\": null, \\\"new_name\\\": null, \\\"dup_ok\\\": null, \\\"new_path\\\": null, \\\"name\\\": \\\"mmtro.com\\\", \\\"security_token\\\": null, \\\"state\\\": \\\"ping\\\", \\\"region\\\": null, \\\"aws_secret_key\\\": null, \\\"aws_access_key\\\": null, \\\"cert\\\": null, \\\"key\\\": null, \\\"ec2_url\\\": null, \\\"path\\\": \\\"/\\\", \\\"validate_certs\\\": true, \\\"cert_chain\\\": null}}, \\\"cert_path\\\": \\\"/cloudfront/xxx.com/\\\", \\\"arn\\\": \\\"arn:aws:iam::xxx:server-certificate/cloudfront/xxx.com/xxx.com\\\"}\\n\\n\\n***********************************\\nPARSED OUTPUT\\n{\\n    \\\"arn\\\": \\\"arn:aws:iam::xxxserver-certificate/cloudfront/xxx.com/xxx.com\\\", \\n    \\\"cert_body\\\": \\\"-----BEGIN CERTIFICATE-----\\\\/\\\\n41W8XFek9i9WpbFROeqZaZEtIsnZ3c5iQq7kY5k4WkykQKDgpWSOqPLhjsZzAsfb\\\\neO9Z9uifJ+JMspQ39UlTH+t2K+X9IseqwfNA\\\\n-----END CERTIFICATE-----\\\", \\n    \\\"cert_path\\\": \\\"/cloudfront/xxx.com/\\\", \\n    \\\"changed\\\": false, \\n    \\\"expiration_date\\\": \\\"2015-09-18T05:47:53Z\\\", \\n    \\\"invocation\\\": {\\n        \\\"module_args\\\": {\\n            \\\"aws_access_key\\\": null, \\n            \\\"aws_secret_key\\\": null, \\n            \\\"cert\\\": null, \\n            \\\"cert_chain\\\": null, \\n            \\\"dup_ok\\\": null, \\n            \\\"ec2_url\\\": null, \\n            \\\"key\\\": null, \\n            \\\"name\\\": \\\"xxx.com\\\", \\n            \\\"new_name\\\": null, \\n            \\\"new_path\\\": null, \\n            \\\"path\\\": \\\"/\\\", \\n            \\\"profile\\\": null, \\n            \\\"region\\\": null, \\n            \\\"security_token\\\": null, \\n            \\\"state\\\": \\\"ping\\\", \\n            \\\"validate_certs\\\": true\\n        }\\n    }, \\n    \\\"name\\\": \\\"xxx.com\\\", \\n    \\\"upload_date\\\": \\\"2015-03-16T09:36:04Z\\\"\\n}\\n```\\n##### fail\\n\\n```\\n19:54 $ python ansible/hacking/test-module -m ./ansible-modules-core-lujeni/cloud/amazon/iam_cert.py -a \\\"name=ansible.com state='ping'\\\"\\n***********************************\\nRAW OUTPUT\\n\\n{\\\"invocation\\\": {\\\"module_args\\\": {\\\"profile\\\": null, \\\"new_name\\\": null, \\\"dup_ok\\\": null, \\\"new_path\\\": null, \\\"name\\\": \\\"ansible.com\\\", \\\"security_token\\\": null, \\\"state\\\": \\\"ping\\\", \\\"region\\\": null, \\\"aws_secret_key\\\": null, \\\"aws_access_key\\\": null, \\\"cert\\\": null, \\\"key\\\": null, \\\"ec2_url\\\": null, \\\"path\\\": \\\"/\\\", \\\"validate_certs\\\": true, \\\"cert_chain\\\": null}}, \\\"message\\\": \\\"The Server Certificate with name ansible.com cannot be found.\\\", \\\"changed\\\": false, \\\"name\\\": \\\"ansible.com\\\"}\\n\\n\\n***********************************\\nPARSED OUTPUT\\n{\\n    \\\"changed\\\": false, \\n    \\\"invocation\\\": {\\n        \\\"module_args\\\": {\\n            \\\"aws_access_key\\\": null, \\n            \\\"aws_secret_key\\\": null, \\n            \\\"cert\\\": null, \\n            \\\"cert_chain\\\": null, \\n            \\\"dup_ok\\\": null, \\n            \\\"ec2_url\\\": null, \\n            \\\"key\\\": null, \\n            \\\"name\\\": \\\"ansible.com\\\", \\n            \\\"new_name\\\": null, \\n            \\\"new_path\\\": null, \\n            \\\"path\\\": \\\"/\\\", \\n            \\\"profile\\\": null, \\n            \\\"region\\\": null, \\n            \\\"security_token\\\": null, \\n            \\\"state\\\": \\\"ping\\\", \\n            \\\"validate_certs\\\": true\\n        }\\n    }, \\n    \\\"message\\\": \\\"The Server Certificate with name ansible.com cannot be found.\\\", \\n    \\\"name\\\": \\\"ansible.com\\\"\\n}\\n```\\n\\nThanks\", \n    \"title\": \"New state on iam_cert module\"\n  }, \n  \"19688\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\npip\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nRelated to https://github.com/ansible/ansible/issues/19028.\\r\\n\\r\\nThe pip editable flag should be added when when `editable` directive is set (not only compound condition with vcs)\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\", \n    \"component_name\": \"pip\", \n    \"component_raw\": \"pip\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19688\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"needs_revision\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/language/pip.py\", \n    \"summary\": \"Related to https://github.com/ansible/ansible/issues/19028.\\n\\n\\n\\nThe pip editable flag should be added when when `editable` directive is set (not only compound condition with vcs)\", \n    \"title\": \"Fix the editable condition into pip module (#19028)\"\n  }, \n  \"19689\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodule system/zfs\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n```\\r\\nhash_behavior = merge\\r\\nforce_handlers = True\\r\\npipelining = True\\r\\ncontrol_path =  %(directory)s/%%p-%%h-%%r\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nManaging from macOS 10.12\\r\\nManaging Gentoo Linux hosts\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\n*(this issue was ported over from https://github.com/ansible/ansible-modules-extras/issues/3543 following the repository merge of ansible/ansible-modules-extras into ansible/ansible)*\\r\\n\\r\\nCurrently, the ZFS module will only consider `local` settings while comparing the current state of a ZFS filesystem and its intended target state. This can lead to unwanted `set` operations to occur even when the target filesystem is in the state described in the play, hurting idempotence.\\r\\n\\r\\nA good example of this is with the \\\"mountpoint\\\" property. If ZFS dataset `B` exists as a child of dataset `A`, but dataset `A` was previously restored from a backup with `zfs receive`, therefore having most of its properties not flagged as `local`, but as `received` instead (including `mountpoint`), a run of the ZFS module on `A` will attempt to first unmount `B` so that it can perform a `mountpoint` property change on `A` even though `A` already has its `mountpoint` property set to the correct value.\\r\\n\\r\\nIn some cases the above will fail (for example if a file is open in dataset `B` so that `B` can't be unmounted), but in other cases this will still yield an unwanted side effect where an unmount will be forced to occur even when it shouldn't.\\r\\n\\r\\nI'm not sure why only `local` properties are being considered at present when comparing current dataset state and target dataset state. Unless I'm missing something, I believe a valid fix could be to simply delete the following line: https://github.com/ansible/ansible-modules-extras/blob/9760ec2538f8b44cb7f27924617a8e024a694724/system/zfs.py#L198\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n1. `zfs receive` any dataset containing children in place of one normally managed by an ansible play\\r\\n2. run something on the server making use of a file in the one of the children datasets and keeping it open \\r\\n3. run the play containing the zfs module call that tries to ensure zfs dataset properties are set correctly\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nno `zfs set` command should be issued for dataset properties which are already set to the correct value\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n`zfs set` commands are issued on the managed host to set properties to a value they are already set at, in some cases causing unwanted side effects on the managed dataset and its children.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nUsing module file /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ansible/modules/extras/system/zfs.py\\r\\n<xxx.yyy.zzz> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<xxx.yyy.zzz> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/Users/guillaume/.ansible/cp/%p-%h-%r xxx.yyy.zzz '/bin/sh -c '\\\"'\\\"'/usr/bin/python2 && sleep 0'\\\"'\\\"''\\r\\nfatal: [xxx.yyy.zzz]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"atime\\\": \\\"off\\\", \\r\\n            \\\"canmount\\\": \\\"on\\\", \\r\\n            \\\"casesensitivity\\\": \\\"sensitive\\\", \\r\\n            \\\"checksum\\\": \\\"fletcher4\\\", \\r\\n            \\\"compression\\\": \\\"lz4\\\", \\r\\n            \\\"copies\\\": \\\"1\\\", \\r\\n            \\\"createparent\\\": null, \\r\\n            \\\"devices\\\": \\\"off\\\", \\r\\n            \\\"exec\\\": \\\"off\\\", \\r\\n            \\\"logbias\\\": \\\"latency\\\", \\r\\n            \\\"mountpoint\\\": \\\"/var/lib/mysql\\\", \\r\\n            \\\"nbmand\\\": \\\"off\\\", \\r\\n            \\\"normalization\\\": \\\"formD\\\", \\r\\n            \\\"primarycache\\\": \\\"metadata\\\", \\r\\n            \\\"quota\\\": \\\"none\\\", \\r\\n            \\\"readonly\\\": \\\"off\\\", \\r\\n            \\\"recordsize\\\": \\\"16K\\\", \\r\\n            \\\"refquota\\\": \\\"none\\\", \\r\\n            \\\"refreservation\\\": \\\"none\\\", \\r\\n            \\\"reservation\\\": \\\"none\\\", \\r\\n            \\\"secondarycache\\\": \\\"none\\\", \\r\\n            \\\"setuid\\\": \\\"off\\\", \\r\\n            \\\"sharenfs\\\": \\\"off\\\", \\r\\n            \\\"sharesmb\\\": \\\"off\\\", \\r\\n            \\\"snapdir\\\": \\\"hidden\\\", \\r\\n            \\\"utf8only\\\": \\\"on\\\", \\r\\n            \\\"xattr\\\": \\\"off\\\"\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"zfs\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"umount: /var/lib/mysql/relay_log: target is busy\\\\n        (In some cases useful info about processes that\\\\n         use the device is found by lsof(8) or fuser(1).)\\\\ncannot unmount '/var/lib/mysql/relay_log': umount failed\\\\n\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"system/zfs\", \n    \"component_raw\": \"module system/zfs\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19689\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"waiting_on_maintainer\"\n    ], \n    \"module_match\": \"lib/ansible/modules/storage/zfs/zfs.py\", \n    \"summary\": \"*(this issue was ported over from https://github.com/ansible/ansible-modules-extras/issues/3543 following the repository merge of ansible/ansible-modules-extras into ansible/ansible)*\\n\\n\\n\\nCurrently, the ZFS module will only consider `local` settings while comparing the current state of a ZFS filesystem and its intended target state. This can lead to unwanted `set` operations to occur even when the target filesystem is in the state described in the play, hurting idempotence.\\n\\n\\n\\nA good example of this is with the \\\"mountpoint\\\" property. If ZFS dataset `B` exists as a child of dataset `A`, but dataset `A` was previously restored from a backup with `zfs receive`, therefore having most of its properties not flagged as `local`, but as `received` instead (including `mountpoint`), a run of the ZFS module on `A` will attempt to first unmount `B` so that it can perform a `mountpoint` property change on `A` even though `A` already has its `mountpoint` property set to the correct value.\\n\\n\\n\\nIn some cases the above will fail (for example if a file is open in dataset `B` so that `B` can't be unmounted), but in other cases this will still yield an unwanted side effect where an unmount will be forced to occur even when it shouldn't.\\n\\n\\n\\nI'm not sure why only `local` properties are being considered at present when comparing current dataset state and target dataset state. Unless I'm missing something, I believe a valid fix could be to simply delete the following line: https://github.com/ansible/ansible-modules-extras/blob/9760ec2538f8b44cb7f27924617a8e024a694724/system/zfs.py#L198\", \n    \"title\": \"ZFS module idempotence problems with received dataset properties\"\n  }, \n  \"19690\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nPIP module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n````\\r\\nansible 2.2.0.0\\r\\n````\\r\\n\\r\\n##### SUMMARY\\r\\nAdd support for version specifiers when installing packages using `pip` module. This allows users to specify a minimum required version or a version range. It fallbacks to an exact version match if no version is specified, to maintain backward compatibility.\\r\\n\\r\\nExample:\\r\\n```\\r\\n- name: upgrade pip\\r\\n  pip: name=pip version=\\\">=9.0.1\\\"\\r\\n```\\r\\n\", \n    \"component_name\": \"pip\", \n    \"component_raw\": \"PIP module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19690\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"needs_revision\", \n      \"test\", \n      \"waiting_on_maintainer\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/language/pip.py\", \n    \"summary\": \"Add support for version specifiers when installing packages using `pip` module. This allows users to specify a minimum required version or a version range. It fallbacks to an exact version match if no version is specified, to maintain backward compatibility.\\n\\n\\n\\nExample:\\n\\n```\\n\\n- name: upgrade pip\\n\\n  pip: name=pip version=\\\">=9.0.1\\\"\\n\\n```\", \n    \"title\": \"Allow version specifiers for pip install\"\n  }, \n  \"19693\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"ISSUE TYPE\\r\\n\\r\\nNew Module Pull Request\\r\\nCOMPONENT NAME\\r\\n\\r\\nAppend value to Path Variable\\r\\n\\r\\nANSIBLE VERSION\\r\\n\\r\\nansible 2.1.2.0\\r\\nconfig file = /etc/ansible/ansible.cfg\\r\\nconfigured module search path = Default w/o overrides\\r\\n\\r\\nSUMMARY\\r\\n\\r\\nSet an path environment variable for all level (User,Machine)\\r\\n\\r\\nwin_append_path_var:\\r\\npathvalue: 'C:\\\\Program Files\\\\Java\\\\bin'\\r\\nlevel: machine\\r\\n\\r\\nExpexcted Result : In System env, Path variable should contain the above mentioned value\\r\\n\\r\\nExpand an path environment variable for the current users\\r\\n\\r\\nwin_append_path_var:\\r\\npathvalue: '%JAVA_HOME%\\\\bin'\\r\\nlevel: user\\r\\nExpexcted Result : In User env, Path variable should contain the above mentioned value in expanded format(C:\\\\Program Files\\\\Java\\\\jdk1.8.0_112\\\\bin)\\r\\n\\r\\nValidation :\\r\\n\\r\\nChecks path variable is present or not based on input for given level (User & machine)\\r\\nCreates path variable with given value for given level(User & machine)\\r\\nIt will not add the value if it is already present in the path variable for given level(User & machine)\\r\\nValidates User value with value available in \\\"Path\\\" Environment variable for given Level(User,Machine)and append the value to it if path value is not available.\\r\\nExpands User value with value available in \\\"Path\\\" Environment variable for given Level(User,Machine)and append the value to it if path value is not available.\\r\\nCreates new Path variable if it is not available for given Level(User,Machine) and append the value to it\\r\\n\\r\\n\\r\\nReference \\r\\n\\r\\nhttps://github.com/ansible/ansible-modules-extras/pull/3534\", \n    \"component_name\": \"append value to path variable\", \n    \"component_raw\": \"Append value to Path Variable\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19693\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_append_path_var.py\", \n    \"summary\": \"Set an path\", \n    \"title\": \"Module for appending windows environment Path variable User, System, Process level\"\n  }, \n  \"19694\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"ISSUE TYPE\\r\\n\\r\\nNew Module Pull Request\\r\\nCOMPONENT NAME\\r\\n\\r\\nAdding shortcut to windows host\\r\\n\\r\\nANSIBLE VERSION\\r\\n\\r\\nansible 2.1.2.0\\r\\nconfig file = /etc/ansible/ansible.cfg\\r\\nconfigured module search path = Default w/o overrides\\r\\n\\r\\nSUMMARY\\r\\n\\r\\nAdding windows shortcut to the windows host\\r\\n\\r\\nExample :\\r\\nwin_shortcut:\\r\\n    state: present\\r\\n    src: 'C:\\\\Program Files\\\\Mozilla Firefox\\\\Firefox.exe'\\r\\n    dest: 'D:\\\\test\\\\Mozilla Firefox\\\\Firefox.lnk'\\r\\n   arguments: 'IPAddress'\\r\\n   directory: 'C:\\\\Program Files\\\\Mozilla Firefox'\\r\\n    hotkey: 'CTRL+SHIFT+1'\\r\\n    desc: 'Creating shortcut using ansible'\\r\\n    icon: 'C:\\\\Windows\\\\System32\\\\Shell32.dll,18'\\r\\n\\r\\nReference\\r\\nhttps://github.com/ansible/ansible-modules-extras/pull/3552\\r\\n\", \n    \"component_name\": \"adding shortcut to windows host\", \n    \"component_raw\": \"Adding shortcut to windows host\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19694\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_shortcut.py\", \n    \"summary\": \"Adding windows shortcut to the windows host\\n\\n\\n\\nExample :\\n\\nwin_shortcut:\\n\\n    state: present\\n\\n    src: 'C:\\\\Program Files\\\\Mozilla Firefox\\\\Firefox.exe'\\n\\n    dest: 'D:\\\\test\\\\Mozilla Firefox\\\\Firefox.lnk'\\n\\n   arguments: 'IPAddress'\\n\\n   directory: 'C:\\\\Program Files\\\\Mozilla Firefox'\\n\\n    hotkey: 'CTRL+SHIFT+1'\\n\\n    desc: 'Creating shortcut using ansible'\\n\\n    icon: 'C:\\\\Windows\\\\System32\\\\Shell32.dll,18'\\n\\n\\n\\nReference\\n\\nhttps://github.com/ansible/ansible-modules-extras/pull/3552\", \n    \"title\": \"add win_shortcut module\"\n  }, \n  \"19695\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /Users/dkimsey/.ansible.cfg\\nconfigured module search path = [library/]\", \n    \"body\": \"##### ISSUE TYPE\\r\\nFeature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nrhn_channel\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /Users/dkimsey/.ansible.cfg\\r\\n  configured module search path = ['library/']\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThe rhn_channel module lacked the ability to change a system's base\\r\\nchannel. This adds the functionality and improves some of its error\\r\\nhandling to be a bit more friendly and descriptive where possible.\\r\\n\\r\\nFor clarity on the \\\"name\\\" parameter, an alias is added, \\\"channel\\\".\\r\\n\\r\\nWhile improving error message, resolve the \\\"TypeError: cannot marshal\\r\\nNone unless allow_none is enabled\\\" when the system isn't found on\\r\\nRHN/Satellite.\\r\\n\\r\\nThere is one added TODO, currently the get_systemid function silently\\r\\nignores the presence of multiple systems with the same name. This is\\r\\nexisting functionality and perhaps should be made into an error. I've\\r\\nleft it in for now. I did however make it deterministic, previously it\\r\\nwas in whatever order Satellite returned it which is undefined.  Also,\\r\\nthis uses the listUserSystems API call and not search.system. Satellite\\r\\ndocs suggest the former is limited to systems the current user has\\r\\naccess to. This may be an edge case worth addressing at some later\\r\\npoint, but doing so might break existing uses.  It is likely for large\\r\\ninfrastructures listUserSystems is slow since it returns all systems and\\r\\nthen enumerates for exact matches.\\r\\n\\r\\nNote: This PR is a port of [ansible-modules-core#4293](https://github.com/ansible/ansible-modules-core/pull/4293)\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n##### Demo\\r\\n\\r\\n_Feature: Setting a base channel_\\r\\n```\\r\\n$ ansible all -m rhn_channel -a 'name=dev-centos7-base-x86_64 sysname=test-foo-01.com url=https://spacewalk.com/rpc/api user=svc-ansible password=********' -i test-foo-01.com,\\r\\n# Before\\r\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: xmlrpclib.Fault: <Fault 1230: 'redstone.xmlrpc.XmlRpcFault: Unable to subscribe this system to the requested channel: \\\"dev-centos7-base-x86_64\\\"'>\\r\\ntest-foo-01.com | FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_qCsyQm/ansible_module_rhn_channel.py\\\\\\\", line 169, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_qCsyQm/ansible_module_rhn_channel.py\\\\\\\", line 154, in main\\\\n    subscribe_channels(channelname, client, session, systname, sys_id)\\\\n  File \\\\\\\"/tmp/ansible_qCsyQm/ansible_module_rhn_channel.py\\\\\\\", line 96, in subscribe_channels\\\\n    return client.system.setChildChannels(session, sys_id, channels)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1233, in __call__\\\\n    return self.__send(self.__name, args)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1587, in __request\\\\n    verbose=self.__verbose\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1273, in request\\\\n    return self.single_request(host, handler, request_body, verbose)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1306, in single_request\\\\n    return self.parse_response(response)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1482, in parse_response\\\\n    return u.close()\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 794, in close\\\\n    raise Fault(**self._stack[0])\\\\nxmlrpclib.Fault: <Fault 1230: 'redstone.xmlrpc.XmlRpcFault: Unable to subscribe this system to the requested channel: \\\\\\\"dev-centos7-base-x86_64\\\\\\\"'>\\\\n\\\",\\r\\n    \\\"module_stdout\\\": \\\"\\\",\\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n# After\\r\\ntest-foo-01.com | SUCCESS => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"channel_type\\\": \\\"base\\\",\\r\\n    \\\"msg\\\": \\\"Channel dev-centos7-base-x86_64 set\\\"\\r\\n}\\r\\n```\\r\\n\\r\\n_Bugfix: Missing system or invalid name dies_\\r\\n```\\r\\n$ ansible all -m rhn_channel -a 'name=prod-centos7-base-x86_64 sysname=no-such-host.com url=https://spacewalk.com/rpc/api user=svc-ansible password=********' -i test-foo-01.com,\\r\\n# Before\\r\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: TypeError: cannot marshal None unless allow_none is enabled\\r\\ntest-foo-01.com | FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_CUUwXB/ansible_module_rhn_channel.py\\\\\\\", line 169, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_CUUwXB/ansible_module_rhn_channel.py\\\\\\\", line 147, in main\\\\n    chans = base_channels(client, session, sys_id)\\\\n  File \\\\\\\"/tmp/ansible_CUUwXB/ansible_module_rhn_channel.py\\\\\\\", line 108, in base_channels\\\\n    basechan = client.channel.software.listSystemChannels(session, sys_id)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1233, in __call__\\\\n    return self.__send(self.__name, args)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1581, in __request\\\\n    allow_none=self.__allow_none)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1086, in dumps\\\\n    data = m.dumps(params)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 633, in dumps\\\\n    dump(v, write)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 655, in __dump\\\\n    f(self, value, write)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 659, in dump_nil\\\\n    raise TypeError, \\\\\\\"cannot marshal None unless allow_none is enabled\\\\\\\"\\\\nTypeError: cannot marshal None unless allow_none is enabled\\\\n\\\",\\r\\n    \\\"module_stdout\\\": \\\"\\\",\\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n# After\\r\\ntest-foo-01.com | FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"msg\\\": \\\"Satellite system not found: no-such-host.com\\\"\\r\\n}\\r\\n```\\r\\n\\r\\n_Bugfix: Incorrect or invalid channel name dies_\\r\\n```\\r\\n$ ansible all -m rhn_channel -a 'name=no-such-channel sysname=test-foo-01.com url=https://spacewalk.com/rpc/api user=svc-ansible password=********' -i test-foo-01.com,\\r\\n# Before\\r\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: xmlrpclib.Fault: <Fault 1201: 'redstone.xmlrpc.XmlRpcFault: Invalid channel label'>\\r\\ntest-foo-01.com | FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_e6ds3p/ansible_module_rhn_channel.py\\\\\\\", line 169, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_e6ds3p/ansible_module_rhn_channel.py\\\\\\\", line 154, in main\\\\n    subscribe_channels(channelname, client, session, systname, sys_id)\\\\n  File \\\\\\\"/tmp/ansible_e6ds3p/ansible_module_rhn_channel.py\\\\\\\", line 96, in subscribe_channels\\\\n    return client.system.setChildChannels(session, sys_id, channels)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1233, in __call__\\\\n    return self.__send(self.__name, args)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1587, in __request\\\\n    verbose=self.__verbose\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1273, in request\\\\n    return self.single_request(host, handler, request_body, verbose)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1306, in single_request\\\\n    return self.parse_response(response)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1482, in parse_response\\\\n    return u.close()\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 794, in close\\\\n    raise Fault(**self._stack[0])\\\\nxmlrpclib.Fault: <Fault 1201: 'redstone.xmlrpc.XmlRpcFault: Invalid channel label'>\\\\n\\\",\\r\\n    \\\"module_stdout\\\": \\\"\\\",\\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n# After\\r\\ntest-foo-01.com | FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"msg\\\": \\\"Channel no-such-channel not found\\\"\\r\\n}\\r\\n```\\r\\n\\r\\n_Bugfix: Improved errors on API login failures, bad host_\\r\\n```\\r\\n$ ansible all -m rhn_channel -a 'name=channel-irrelevant sysname=system-irrelevant url=https://bad-host.com/rpc/api user=svc-ansible password=********' -i test-foo-01.com,\\r\\n# Before\\r\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: socket.gaierror: [Errno -2] Name or service not known\\r\\ntest-foo-01.com | FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_EaCaLD/ansible_module_rhn_channel.py\\\\\\\", line 169, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_EaCaLD/ansible_module_rhn_channel.py\\\\\\\", line 141, in main\\\\n    session = client.auth.login(user, password)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1233, in __call__\\\\n    return self.__send(self.__name, args)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1587, in __request\\\\n    verbose=self.__verbose\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1273, in request\\\\n    return self.single_request(host, handler, request_body, verbose)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1301, in single_request\\\\n    self.send_content(h, request_body)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1448, in send_content\\\\n    connection.endheaders(request_body)\\\\n  File \\\\\\\"/usr/lib64/python2.7/httplib.py\\\\\\\", line 975, in endheaders\\\\n    self._send_output(message_body)\\\\n  File \\\\\\\"/usr/lib64/python2.7/httplib.py\\\\\\\", line 835, in _send_output\\\\n    self.send(msg)\\\\n  File \\\\\\\"/usr/lib64/python2.7/httplib.py\\\\\\\", line 797, in send\\\\n    self.connect()\\\\n  File \\\\\\\"/usr/lib64/python2.7/httplib.py\\\\\\\", line 1189, in connect\\\\n    HTTPConnection.connect(self)\\\\n  File \\\\\\\"/usr/lib64/python2.7/httplib.py\\\\\\\", line 778, in connect\\\\n    self.timeout, self.source_address)\\\\n  File \\\\\\\"/usr/lib64/python2.7/socket.py\\\\\\\", line 553, in create_connection\\\\n    for res in getaddrinfo(host, port, 0, SOCK_STREAM):\\\\nsocket.gaierror: [Errno -2] Name or service not known\\\\n\\\",\\r\\n    \\\"module_stdout\\\": \\\"\\\",\\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n# After\\r\\ntest-foo-01.com | FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"msg\\\": \\\"Failed to connect <https://bad-host.com/rpc/api>: [Errno -2] Name or service not known\\\"\\r\\n}\\r\\n```\\r\\n\\r\\n_Bugfix: Improved errors on API login failures, bad path_\\r\\n```\\r\\n$ ansible all -m rhn_channel -a 'name=channel-irrelevant sysname=system-irrelevant url=https://spacewalk.com/bad/api/path user=svc-ansible password=********' -i test-foo-01.com,\\r\\n# Before\\r\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: xmlrpclib.ProtocolError: <ProtocolError for spacewalk.com/bad-api-path/rpc/api: 404 Not Found>\\r\\ntest-foo-01.com | FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_4o9T0M/ansible_module_rhn_channel.py\\\\\\\", line 169, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_4o9T0M/ansible_module_rhn_channel.py\\\\\\\", line 141, in main\\\\n    session = client.auth.login(user, password)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1233, in __call__\\\\n    return self.__send(self.__name, args)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1587, in __request\\\\n    verbose=self.__verbose\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1273, in request\\\\n    return self.single_request(host, handler, request_body, verbose)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1321, in single_request\\\\n    response.msg,\\\\nxmlrpclib.ProtocolError: <ProtocolError for spacewalk.com/bad-api-path/rpc/api: 404 Not Found>\\\\n\\\",\\r\\n    \\\"module_stdout\\\": \\\"\\\",\\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n# After\\r\\ntest-foo-01.com | FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"msg\\\": \\\"Failed to connect <https://spacewalk.com/bad-api-path/rpc/api> (invalid or incorrect url?): <ProtocolError for spacewalk.com/bad-api-path/rpc/api: 404 Not Found>\\\"\\r\\n}\\r\\n```\\r\\n\\r\\n_Bugfix: Improved errors on API login failures, bad username or password_\\r\\n```\\r\\n$ ansible all -m rhn_channel -a 'name=channel-irrelevant sysname=system-irrelevant url=https://spacewalk.com/rpc/api user=no-such-user password=or-bad-password -i test-foo-01.com,\\r\\n# Before\\r\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: xmlrpclib.Fault: <Fault 2950: 'redstone.xmlrpc.XmlRpcFault: Either the password or username is incorrect.'>\\r\\ntest-foo-01.com | FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_ZlQeWe/ansible_module_rhn_channel.py\\\\\\\", line 169, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_ZlQeWe/ansible_module_rhn_channel.py\\\\\\\", line 141, in main\\\\n    session = client.auth.login(user, password)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1233, in __call__\\\\n    return self.__send(self.__name, args)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1587, in __request\\\\n    verbose=self.__verbose\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1273, in request\\\\n    return self.single_request(host, handler, request_body, verbose)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1306, in single_request\\\\n    return self.parse_response(response)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1482, in parse_response\\\\n    return u.close()\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 794, in close\\\\n    raise Fault(**self._stack[0])\\\\nxmlrpclib.Fault: <Fault 2950: 'redstone.xmlrpc.XmlRpcFault: Either the password or username is incorrect.'>\\\\n\\\",\\r\\n    \\\"module_stdout\\\": \\\"\\\",\\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n# After\\r\\ntest-foo-01.com | FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"msg\\\": \\\"Unable to login <https://spacewalk.com/rpc/api>: redstone.xmlrpc.XmlRpcFault: Either the password or username is incorrect.\\\"\\r\\n}\\r\\n```\", \n    \"component_name\": \"rhn_channel\", \n    \"component_raw\": \"rhn_channel\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19695\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"core_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/rhn_channel.py\", \n    \"summary\": \"The rhn_channel module lacked the ability to change a system's base\\n\\nchannel. This adds the functionality and improves some of its error\\n\\nhandling to be a bit more friendly and descriptive where possible.\\n\\n\\n\\nFor clarity on the \\\"name\\\" parameter, an alias is added, \\\"channel\\\".\\n\\n\\n\\nWhile improving error message, resolve the \\\"TypeError: cannot marshal\\n\\nNone unless allow_none is enabled\\\" when the system isn't found on\\n\\nRHN/Satellite.\\n\\n\\n\\nThere is one added TODO, currently the get_systemid function silently\\n\\nignores the presence of multiple systems with the same name. This is\\n\\nexisting functionality and perhaps should be made into an error. I've\\n\\nleft it in for now. I did however make it deterministic, previously it\\n\\nwas in whatever order Satellite returned it which is undefined.  Also,\\n\\nthis uses the listUserSystems API call and not search.system. Satellite\\n\\ndocs suggest the former is limited to systems the current user has\\n\\naccess to. This may be an edge case worth addressing at some later\\n\\npoint, but doing so might break existing uses.  It is likely for large\\n\\ninfrastructures listUserSystems is slow since it returns all systems and\\n\\nthen enumerates for exact matches.\\n\\n\\n\\nNote: This PR is a port of [ansible-modules-core#4293](https://github.com/ansible/ansible-modules-core/pull/4293)\\n\\n\\n\\n##### Demo\\n\\n\\n\\n_Feature: Setting a base channel_\\n\\n```\\n\\n$ ansible all -m rhn_channel -a 'name=dev-centos7-base-x86_64 sysname=test-foo-01.com url=https://spacewalk.com/rpc/api user=svc-ansible password=********' -i test-foo-01.com,\\n\\n# Before\\n\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: xmlrpclib.Fault: <Fault 1230: 'redstone.xmlrpc.XmlRpcFault: Unable to subscribe this system to the requested channel: \\\"dev-centos7-base-x86_64\\\"'>\\n\\ntest-foo-01.com | FAILED! => {\\n\\n    \\\"changed\\\": false,\\n\\n    \\\"failed\\\": true,\\n\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_qCsyQm/ansible_module_rhn_channel.py\\\\\\\", line 169, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_qCsyQm/ansible_module_rhn_channel.py\\\\\\\", line 154, in main\\\\n    subscribe_channels(channelname, client, session, systname, sys_id)\\\\n  File \\\\\\\"/tmp/ansible_qCsyQm/ansible_module_rhn_channel.py\\\\\\\", line 96, in subscribe_channels\\\\n    return client.system.setChildChannels(session, sys_id, channels)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1233, in __call__\\\\n    return self.__send(self.__name, args)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1587, in __request\\\\n    verbose=self.__verbose\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1273, in request\\\\n    return self.single_request(host, handler, request_body, verbose)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1306, in single_request\\\\n    return self.parse_response(response)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1482, in parse_response\\\\n    return u.close()\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 794, in close\\\\n    raise Fault(**self._stack[0])\\\\nxmlrpclib.Fault: <Fault 1230: 'redstone.xmlrpc.XmlRpcFault: Unable to subscribe this system to the requested channel: \\\\\\\"dev-centos7-base-x86_64\\\\\\\"'>\\\\n\\\",\\n\\n    \\\"module_stdout\\\": \\\"\\\",\\n\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\n\\n}\\n\\n# After\\n\\ntest-foo-01.com | SUCCESS => {\\n\\n    \\\"changed\\\": true,\\n\\n    \\\"channel_type\\\": \\\"base\\\",\\n\\n    \\\"msg\\\": \\\"Channel dev-centos7-base-x86_64 set\\\"\\n\\n}\\n\\n```\\n\\n\\n\\n_Bugfix: Missing system or invalid name dies_\\n\\n```\\n\\n$ ansible all -m rhn_channel -a 'name=prod-centos7-base-x86_64 sysname=no-such-host.com url=https://spacewalk.com/rpc/api user=svc-ansible password=********' -i test-foo-01.com,\\n\\n# Before\\n\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: TypeError: cannot marshal None unless allow_none is enabled\\n\\ntest-foo-01.com | FAILED! => {\\n\\n    \\\"changed\\\": false,\\n\\n    \\\"failed\\\": true,\\n\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_CUUwXB/ansible_module_rhn_channel.py\\\\\\\", line 169, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_CUUwXB/ansible_module_rhn_channel.py\\\\\\\", line 147, in main\\\\n    chans = base_channels(client, session, sys_id)\\\\n  File \\\\\\\"/tmp/ansible_CUUwXB/ansible_module_rhn_channel.py\\\\\\\", line 108, in base_channels\\\\n    basechan = client.channel.software.listSystemChannels(session, sys_id)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1233, in __call__\\\\n    return self.__send(self.__name, args)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1581, in __request\\\\n    allow_none=self.__allow_none)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1086, in dumps\\\\n    data = m.dumps(params)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 633, in dumps\\\\n    dump(v, write)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 655, in __dump\\\\n    f(self, value, write)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 659, in dump_nil\\\\n    raise TypeError, \\\\\\\"cannot marshal None unless allow_none is enabled\\\\\\\"\\\\nTypeError: cannot marshal None unless allow_none is enabled\\\\n\\\",\\n\\n    \\\"module_stdout\\\": \\\"\\\",\\n\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\n\\n}\\n\\n# After\\n\\ntest-foo-01.com | FAILED! => {\\n\\n    \\\"changed\\\": false,\\n\\n    \\\"failed\\\": true,\\n\\n    \\\"msg\\\": \\\"Satellite system not found: no-such-host.com\\\"\\n\\n}\\n\\n```\\n\\n\\n\\n_Bugfix: Incorrect or invalid channel name dies_\\n\\n```\\n\\n$ ansible all -m rhn_channel -a 'name=no-such-channel sysname=test-foo-01.com url=https://spacewalk.com/rpc/api user=svc-ansible password=********' -i test-foo-01.com,\\n\\n# Before\\n\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: xmlrpclib.Fault: <Fault 1201: 'redstone.xmlrpc.XmlRpcFault: Invalid channel label'>\\n\\ntest-foo-01.com | FAILED! => {\\n\\n    \\\"changed\\\": false,\\n\\n    \\\"failed\\\": true,\\n\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_e6ds3p/ansible_module_rhn_channel.py\\\\\\\", line 169, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_e6ds3p/ansible_module_rhn_channel.py\\\\\\\", line 154, in main\\\\n    subscribe_channels(channelname, client, session, systname, sys_id)\\\\n  File \\\\\\\"/tmp/ansible_e6ds3p/ansible_module_rhn_channel.py\\\\\\\", line 96, in subscribe_channels\\\\n    return client.system.setChildChannels(session, sys_id, channels)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1233, in __call__\\\\n    return self.__send(self.__name, args)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1587, in __request\\\\n    verbose=self.__verbose\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1273, in request\\\\n    return self.single_request(host, handler, request_body, verbose)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1306, in single_request\\\\n    return self.parse_response(response)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1482, in parse_response\\\\n    return u.close()\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 794, in close\\\\n    raise Fault(**self._stack[0])\\\\nxmlrpclib.Fault: <Fault 1201: 'redstone.xmlrpc.XmlRpcFault: Invalid channel label'>\\\\n\\\",\\n\\n    \\\"module_stdout\\\": \\\"\\\",\\n\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\n\\n}\\n\\n# After\\n\\ntest-foo-01.com | FAILED! => {\\n\\n    \\\"changed\\\": false,\\n\\n    \\\"failed\\\": true,\\n\\n    \\\"msg\\\": \\\"Channel no-such-channel not found\\\"\\n\\n}\\n\\n```\\n\\n\\n\\n_Bugfix: Improved errors on API login failures, bad host_\\n\\n```\\n\\n$ ansible all -m rhn_channel -a 'name=channel-irrelevant sysname=system-irrelevant url=https://bad-host.com/rpc/api user=svc-ansible password=********' -i test-foo-01.com,\\n\\n# Before\\n\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: socket.gaierror: [Errno -2] Name or service not known\\n\\ntest-foo-01.com | FAILED! => {\\n\\n    \\\"changed\\\": false,\\n\\n    \\\"failed\\\": true,\\n\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_EaCaLD/ansible_module_rhn_channel.py\\\\\\\", line 169, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_EaCaLD/ansible_module_rhn_channel.py\\\\\\\", line 141, in main\\\\n    session = client.auth.login(user, password)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1233, in __call__\\\\n    return self.__send(self.__name, args)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1587, in __request\\\\n    verbose=self.__verbose\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1273, in request\\\\n    return self.single_request(host, handler, request_body, verbose)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1301, in single_request\\\\n    self.send_content(h, request_body)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1448, in send_content\\\\n    connection.endheaders(request_body)\\\\n  File \\\\\\\"/usr/lib64/python2.7/httplib.py\\\\\\\", line 975, in endheaders\\\\n    self._send_output(message_body)\\\\n  File \\\\\\\"/usr/lib64/python2.7/httplib.py\\\\\\\", line 835, in _send_output\\\\n    self.send(msg)\\\\n  File \\\\\\\"/usr/lib64/python2.7/httplib.py\\\\\\\", line 797, in send\\\\n    self.connect()\\\\n  File \\\\\\\"/usr/lib64/python2.7/httplib.py\\\\\\\", line 1189, in connect\\\\n    HTTPConnection.connect(self)\\\\n  File \\\\\\\"/usr/lib64/python2.7/httplib.py\\\\\\\", line 778, in connect\\\\n    self.timeout, self.source_address)\\\\n  File \\\\\\\"/usr/lib64/python2.7/socket.py\\\\\\\", line 553, in create_connection\\\\n    for res in getaddrinfo(host, port, 0, SOCK_STREAM):\\\\nsocket.gaierror: [Errno -2] Name or service not known\\\\n\\\",\\n\\n    \\\"module_stdout\\\": \\\"\\\",\\n\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\n\\n}\\n\\n# After\\n\\ntest-foo-01.com | FAILED! => {\\n\\n    \\\"changed\\\": false,\\n\\n    \\\"failed\\\": true,\\n\\n    \\\"msg\\\": \\\"Failed to connect <https://bad-host.com/rpc/api>: [Errno -2] Name or service not known\\\"\\n\\n}\\n\\n```\\n\\n\\n\\n_Bugfix: Improved errors on API login failures, bad path_\\n\\n```\\n\\n$ ansible all -m rhn_channel -a 'name=channel-irrelevant sysname=system-irrelevant url=https://spacewalk.com/bad/api/path user=svc-ansible password=********' -i test-foo-01.com,\\n\\n# Before\\n\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: xmlrpclib.ProtocolError: <ProtocolError for spacewalk.com/bad-api-path/rpc/api: 404 Not Found>\\n\\ntest-foo-01.com | FAILED! => {\\n\\n    \\\"changed\\\": false,\\n\\n    \\\"failed\\\": true,\\n\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_4o9T0M/ansible_module_rhn_channel.py\\\\\\\", line 169, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_4o9T0M/ansible_module_rhn_channel.py\\\\\\\", line 141, in main\\\\n    session = client.auth.login(user, password)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1233, in __call__\\\\n    return self.__send(self.__name, args)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1587, in __request\\\\n    verbose=self.__verbose\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1273, in request\\\\n    return self.single_request(host, handler, request_body, verbose)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1321, in single_request\\\\n    response.msg,\\\\nxmlrpclib.ProtocolError: <ProtocolError for spacewalk.com/bad-api-path/rpc/api: 404 Not Found>\\\\n\\\",\\n\\n    \\\"module_stdout\\\": \\\"\\\",\\n\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\n\\n}\\n\\n# After\\n\\ntest-foo-01.com | FAILED! => {\\n\\n    \\\"changed\\\": false,\\n\\n    \\\"failed\\\": true,\\n\\n    \\\"msg\\\": \\\"Failed to connect <https://spacewalk.com/bad-api-path/rpc/api> (invalid or incorrect url?): <ProtocolError for spacewalk.com/bad-api-path/rpc/api: 404 Not Found>\\\"\\n\\n}\\n\\n```\\n\\n\\n\\n_Bugfix: Improved errors on API login failures, bad username or password_\\n\\n```\\n\\n$ ansible all -m rhn_channel -a 'name=channel-irrelevant sysname=system-irrelevant url=https://spacewalk.com/rpc/api user=no-such-user password=or-bad-password -i test-foo-01.com,\\n\\n# Before\\n\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: xmlrpclib.Fault: <Fault 2950: 'redstone.xmlrpc.XmlRpcFault: Either the password or username is incorrect.'>\\n\\ntest-foo-01.com | FAILED! => {\\n\\n    \\\"changed\\\": false,\\n\\n    \\\"failed\\\": true,\\n\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_ZlQeWe/ansible_module_rhn_channel.py\\\\\\\", line 169, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_ZlQeWe/ansible_module_rhn_channel.py\\\\\\\", line 141, in main\\\\n    session = client.auth.login(user, password)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1233, in __call__\\\\n    return self.__send(self.__name, args)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1587, in __request\\\\n    verbose=self.__verbose\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1273, in request\\\\n    return self.single_request(host, handler, request_body, verbose)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1306, in single_request\\\\n    return self.parse_response(response)\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 1482, in parse_response\\\\n    return u.close()\\\\n  File \\\\\\\"/usr/lib64/python2.7/xmlrpclib.py\\\\\\\", line 794, in close\\\\n    raise Fault(**self._stack[0])\\\\nxmlrpclib.Fault: <Fault 2950: 'redstone.xmlrpc.XmlRpcFault: Either the password or username is incorrect.'>\\\\n\\\",\\n\\n    \\\"module_stdout\\\": \\\"\\\",\\n\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\n\\n}\\n\\n# After\\n\\ntest-foo-01.com | FAILED! => {\\n\\n    \\\"changed\\\": false,\\n\\n    \\\"failed\\\": true,\\n\\n    \\\"msg\\\": \\\"Unable to login <https://spacewalk.com/rpc/api>: redstone.xmlrpc.XmlRpcFault: Either the password or username is incorrect.\\\"\\n\\n}\\n\\n```\", \n    \"title\": \"[PATCH] [rhn_channel] Add support for setting base channels\"\n  }, \n  \"19696\": {\n    \"ansible_version\": \"ansible 2.3.0 (imgadm 56b1ba6b7d) last updated 2016/12/27 174159 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\n\\r\\n`imgadm`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (imgadm 56b1ba6b7d) last updated 2016/12/27 17:41:59 (GMT +200)\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nThis new module allows Ansible to manage SmartOS images through [imgadm(1M)](https://smartos.org/man/1m/imgadm). While many tools on SmartOS take JSON for input, or emit it as output, unfortunately this cannot be used (here) as the JSON output from `imgadm(1M)` results in errors of the JSON parsers (\\\"invalid object\\\") due to newlines. At least for now it's not strictly needed.\\r\\n\\r\\ntasks:\\r\\n```\\r\\n  - name: add new source\\r\\n    imgadm:\\r\\n      source: 'https://datasets.project-fifo.net'\\r\\n      state: present\\r\\n\\r\\n  - name: delete a source\\r\\n    imgadm:\\r\\n      source: 'https://datasets.joyent.com/datasets'\\r\\n      state: absent\\r\\n\\r\\n  - name: import image\\r\\n    imgadm:\\r\\n      uuid: 'e7b557c2-b2a8-11e6-b2c1-7f681aa61371'\\r\\n      state: imported\\r\\n\\r\\n  - name: delete image\\r\\n    imgadm:\\r\\n      uuid: 'e7b557c2-b2a8-11e6-b2c1-7f681aa61371'\\r\\n      state: deleted\\r\\n\\r\\n  - name: update installed images\\r\\n    imgadm:\\r\\n      uuid: '*'\\r\\n      state: updated\\r\\n```\\r\\n\\r\\noutput:\\r\\n```\\r\\nTASK [add new source] **********************************************************\\r\\nok: [calafate-gz] => {\\\"changed\\\": false, \\\"source\\\": \\\"https://datasets.project-fifo.net\\\", \\\"state\\\": \\\"present\\\"}\\r\\n\\r\\nTASK [delete a source] *********************************************************\\r\\nok: [calafate-gz] => {\\\"changed\\\": false, \\\"source\\\": \\\"https://datasets.joyent.com/datasets\\\", \\\"state\\\": \\\"absent\\\"}\\r\\n\\r\\nTASK [import image] ************************************************************\\r\\nok: [calafate-gz] => {\\\"changed\\\": false, \\\"state\\\": \\\"imported\\\", \\\"uuid\\\": \\\"e7b557c2-b2a8-11e6-b2c1-7f681aa61371\\\"}\\r\\n\\r\\nTASK [delete image] ************************************************************\\r\\nchanged: [calafate-gz] => {\\\"changed\\\": true, \\\"state\\\": \\\"deleted\\\", \\\"uuid\\\": \\\"e7b557c2-b2a8-11e6-b2c1-7f681aa61371\\\"}\\r\\n\\r\\nTASK [update installed images] *************************************************\\r\\nchanged: [calafate-gz] => {\\\"changed\\\": true, \\\"state\\\": \\\"updated\\\", \\\"uuid\\\": \\\"*\\\"}\\r\\n```\", \n    \"component_name\": \"imgadm\", \n    \"component_raw\": \"`imgadm`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19696\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/smartos/imgadm.py\", \n    \"summary\": \"This new module allows Ansible to manage SmartOS images through [imgadm(1M)](https://smartos.org/man/1m/imgadm). While many tools on SmartOS take JSON for input, or emit it as output, unfortunately this cannot be used (here) as the JSON output from `imgadm(1M)` results in errors of the JSON parsers (\\\"invalid object\\\") due to newlines. At least for now it's not strictly needed.\\n\\n\\n\\ntasks:\\n\\n```\\n\\n  - name: add new source\\n\\n    imgadm:\\n\\n      source: 'https://datasets.project-fifo.net'\\n\\n      state: present\\n\\n\\n\\n  - name: delete a source\\n\\n    imgadm:\\n\\n      source: 'https://datasets.joyent.com/datasets'\\n\\n      state: absent\\n\\n\\n\\n  - name: import image\\n\\n    imgadm:\\n\\n      uuid: 'e7b557c2-b2a8-11e6-b2c1-7f681aa61371'\\n\\n      state: imported\\n\\n\\n\\n  - name: delete image\\n\\n    imgadm:\\n\\n      uuid: 'e7b557c2-b2a8-11e6-b2c1-7f681aa61371'\\n\\n      state: deleted\\n\\n\\n\\n  - name: update installed images\\n\\n    imgadm:\\n\\n      uuid: '*'\\n\\n      state: updated\\n\\n```\\n\\n\\n\\noutput:\\n\\n```\\n\\nTASK [add new source] **********************************************************\\n\\nok: [calafate-gz] => {\\\"changed\\\": false, \\\"source\\\": \\\"https://datasets.project-fifo.net\\\", \\\"state\\\": \\\"present\\\"}\\n\\n\\n\\nTASK [delete a source] *********************************************************\\n\\nok: [calafate-gz] => {\\\"changed\\\": false, \\\"source\\\": \\\"https://datasets.joyent.com/datasets\\\", \\\"state\\\": \\\"absent\\\"}\\n\\n\\n\\nTASK [import image] ************************************************************\\n\\nok: [calafate-gz] => {\\\"changed\\\": false, \\\"state\\\": \\\"imported\\\", \\\"uuid\\\": \\\"e7b557c2-b2a8-11e6-b2c1-7f681aa61371\\\"}\\n\\n\\n\\nTASK [delete image] ************************************************************\\n\\nchanged: [calafate-gz] => {\\\"changed\\\": true, \\\"state\\\": \\\"deleted\\\", \\\"uuid\\\": \\\"e7b557c2-b2a8-11e6-b2c1-7f681aa61371\\\"}\\n\\n\\n\\nTASK [update installed images] *************************************************\\n\\nchanged: [calafate-gz] => {\\\"changed\\\": true, \\\"state\\\": \\\"updated\\\", \\\"uuid\\\": \\\"*\\\"}\\n\\n```\", \n    \"title\": \"Add new module to manage SmartOS images through imgadm(1M)\"\n  }, \n  \"19697\": {\n    \"ansible_version\": \"Current website version\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\ndocker\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nCurrent website version\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nThe documentation for docker module uses M() macro in the DEPRECATED section but it's not working, because DEPRECATED section doesn't have convert_symbols_to_format function.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n- Go to http://docs.ansible.com/ansible/docker_module.html#deprecated\\r\\n\", \n    \"component_name\": \"docker\", \n    \"component_raw\": \"docker\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19697\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"docker\", \n      \"docs_report\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/_docker.py\", \n    \"summary\": \"The documentation for docker module uses M() macro in the DEPRECATED section but it's not working, because DEPRECATED section doesn't have convert_symbols_to_format function.\", \n    \"title\": \"Documentation for docker module uses M() in DEPRECATED section but it's not working\"\n  }, \n  \"19698\": {\n    \"ansible_version\": \"ansible 2.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncloud/linode\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nAdded a number of features that allow for more customization when deploying a new Linode.\\r\\nOptions for:\\r\\n\\r\\n- private IPs\\r\\n- additional disks\\r\\n- watchdog configurations\\r\\n\\r\\n<!---\\r\\n\\r\\n\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"cloud/linode\", \n    \"component_raw\": \"cloud/linode\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19698\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"needs_revision\", \n      \"waiting_on_maintainer\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/linode/linode.py\", \n    \"summary\": \"Added a number of features that allow for more customization when deploying a new Linode.\\n\\nOptions for:\\n\\n\\n\\n- private IPs\\n\\n- additional disks\\n\\n- watchdog\", \n    \"title\": \"Adding more functionality for Linode cloud module\"\n  }, \n  \"19699\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvirt_net\\r\\n\", \n    \"component_name\": \"virt_net\", \n    \"component_raw\": \"virt_net\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19699\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"docs\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/misc/virt_net.py\", \n    \"summary\": null, \n    \"title\": \"Add documentation for the modify command, by giving a example\"\n  }, \n  \"19700\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvirt_net\\r\\n\\r\\n\", \n    \"component_name\": \"virt_net\", \n    \"component_raw\": \"virt_net\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19700\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"owner_pr\", \n      \"shipit\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/misc/virt_net.py\", \n    \"summary\": null, \n    \"title\": \"Add DHCP leases to the facts return by the module\"\n  }, \n  \"19701\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\ngce.py\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nCurrent release will not allow creating an instance with a named external ip, rather\\r\\nyou can only specify \\\"none\\\" or \\\"ephemeral\\\".  Anything else defaults to ephemeral.\\r\\n\\r\\nThe problem was the code checked to see if the input was a string or not and the input is always a python string even when the YAML specifies a list.\\r\\n\\r\\nThe code now checks explicitly for \\\"none\\\" and \\\"ephemeral\\\" and if the input is neither, it tries to find a static IP of the specified name.\\r\\n\\r\\nAlso, there is no longer a need to try to fake a list.  The previous code just tried to take the first item in the list anyway.\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\", \n    \"component_name\": \"gce.py\", \n    \"component_raw\": \"gce.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19701\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"community_review\", \n      \"gce\", \n      \"module\", \n      \"waiting_on_maintainer\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/google/gce.py\", \n    \"summary\": \"Current release will not allow creating an instance with a named external ip, rather\\n\\nyou can only specify \\\"none\\\" or \\\"ephemeral\\\".  Anything else defaults to ephemeral.\\n\\n\\n\\nThe problem was the code checked to see if the input was a string or not and the input is always a python string even when the YAML specifies a list.\\n\\n\\n\\nThe code now checks explicitly for \\\"none\\\" and \\\"ephemeral\\\" and if the input is neither, it tries to find a static IP of the specified name.\\n\\n\\n\\nAlso, there is no longer a need to try to fake a list.  The previous code just tried to take the first item in the list anyway.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"Fixed bug where it was impossible to set non-ephemeral external ips.\"\n  }, \n  \"19702\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [/usr/share/ansible]\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nadd_host\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = ['/usr/share/ansible']\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nCentOS release 6.8 (Final)\\r\\n2.6.32-642.3.1.el6.x86_64\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nI have a playbook which collects information from vsphere, creates a yaml file containing servers and their business function and then uses add_host to build a dynamic inventory, then uses this inventory to push out ssh keys (and eventually more). The playbook fails on the last play, noting that a server name is invalid, the server its mentioning is in the host group of the previous play, but not in the failing play.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\nPlaybook: \\r\\n```yaml\\r\\n---\\r\\n- name: Updating Inventory\\r\\n  hosts: localhost\\r\\n  roles:\\r\\n    - get_inventory\\r\\n\\r\\n- name: Push keys to Development servers\\r\\n  hosts: dyn_dev\\r\\n  roles:\\r\\n    - key\\r\\n\\r\\n- name: Push keys to test servers\\r\\n  hosts: dyn_test\\r\\n  roles:\\r\\n    - key\\r\\n```\\r\\n\\r\\nget_inventory role:\\r\\n```yaml\\r\\n--- #Gathers data from vmware for inventory lists\\r\\n  - include_vars: connection.yml\\r\\n  - name: Collecting inventory from Vsphere\\r\\n    shell: /usr/bin/python {{role_path}}/files/build_inv.py {{vsphere.login}} {{vsphere.passwd}}\\r\\n  - include_vars: dynamic_inv.yml\\r\\n  - name: Building inventory from dynamic data\\r\\n    add_host:\\r\\n      #name: \\\"{{item.1.server.id}}\\\"\\r\\n      name: \\\"{{item.1.server.name}}\\\"\\r\\n      groups: \\\"{{item.0.function}}\\\"\\r\\n    with_subelements:\\r\\n      - dyn_inv\\r\\n      - servers\\r\\n```\\r\\n\\r\\ndynamic_inv.yml (reduced and redacted for security):\\r\\n```yaml\\r\\n---\\r\\ndyn_inv:\\r\\n  - function: dyn_test\\r\\n    servers:\\r\\n      - server: {'name':'server1','id':'xxx.xxx.xxx.xxx'}\\r\\n  - function: dyn_dev\\r\\n    servers:\\r\\n      - server: {'name':'server_2','id':'xxx.xxx.xxx.xxx'}\\r\\n      - server: {'name':'server_3','id':'xxx.xxx.xxx.xxx'}\\r\\n      - server: {'name':'server_4','id':'xxx.xxx.xxx.xxx'}\\r\\n      - server: {'name':'server_5','id':'xxx.xxx.xxx.xxx'}\\r\\n```\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nI expect server_4 connection to fail, its missing some python modules. I expect the third play to run normally as its host group does not contain server_4\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nThe third play fails, stating an invalid host name of the first server that was fatal from the previous play. It seems as though only servers with python issues (missing modules/packages) are causing this issue. \\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nPLAY [Updating Inventory] ******************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [get_inventory : include_vars] ********************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [get_inventory : Collecting inventory from Vsphere] ***********************\\r\\nchanged: [localhost]\\r\\n\\r\\nTASK [get_inventory : include_vars] ********************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [get_inventory : Building inventory from dynamic data] ********************\\r\\n[DEPRECATION WARNING]: Using bare variables is deprecated. Update your playbooks\\r\\n so that the environment value uses the full variable syntax ('{{dyn_inv}}').\\r\\n\\r\\nThis feature will be removed in a future release. Deprecation warnings can be\\r\\ndisabled by setting deprecation_warnings=False in ansible.cfg.\\r\\nchanged: [localhost] => (item=({u'function': u'dyn_test'}, {u'server': {u'name': u'server_1', u'id': u'xxx.xxx.xxx.xxx'}}))\\r\\nchanged: [localhost] => (item=({u'function': u'dyn_dev'}, {u'server': {u'name': u'server_2', u'id': u'xxx.xxx.xxx.xxx'}}))\\r\\nchanged: [localhost] => (item=({u'function': u'dyn_dev'}, {u'server': {u'name': u'server_3', u'id': u'xxx.xxx.xxx.xxx'}}))\\r\\nchanged: [localhost] => (item=({u'function': u'dyn_dev'}, {u'server': {u'name': u'server_4', u'id': u'xxx.xxx.xxx.xxx'}}))\\r\\nchanged: [localhost] => (item=({u'function': u'dyn_dev'}, {u'server': {u'name': u'server_5', u'id': u'xxx.xxx.xxx.xxx'}}))\\r\\n\\r\\nPLAY [Push keys to Development servers] *******************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [server_2]\\r\\nok: [server_3]\\r\\nfatal: [server_4]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"\\\", \\\"module_stdout\\\": \\\"Traceback (most recent call last):\\\\r\\\\n  File \\\\\\\"/root/.ansible/tmp/ansible-tmp-1482872693.15-136579533077142/setup\\\\\\\", line 10, in ?\\\\r\\\\n    import subprocess\\\\r\\\\nImportError: No module named subprocess\\\\r\\\\n\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\", \\\"parsed\\\": false}\\r\\nok: [server_5]\\r\\n\\r\\nTASK [key : Creating directory if needed]************************************************\\r\\nok: [server_2]\\r\\nok: [server_3]\\r\\nok: [server_5]\\r\\n\\r\\nTASK [key : Copy over ssh keys] ************************************************\\r\\nok: [server_2]\\r\\nok: [server_3]\\r\\nok: [server_5]\\r\\n\\r\\nNO MORE HOSTS LEFT *************************************************************\\r\\n\\r\\nPLAY [Push keys to test servers] **************************************\\r\\nERROR! invalid host (server_4) specified for playbook iteration\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"add_host\", \n    \"component_raw\": \"add_host\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19702\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\", \n      \"needs_info\"\n    ], \n    \"module_match\": \"lib/ansible/modules/inventory/add_host.py\", \n    \"summary\": \"I have a playbook which collects information from vsphere, creates a yaml file containing servers and their business function and then uses add_host to build a dynamic inventory, then uses this inventory to push out ssh keys (and eventually more). The playbook fails on the last play, noting that a server name is invalid, the server its mentioning is in the host group of the previous play, but not in the failing play.\", \n    \"title\": \"Invalid Host error for host failed in previous play (dynamic inventory)\"\n  }, \n  \"19703\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\ngce.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nAdded a parameter to the gce module to set the size of the boot volume.\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\", \n    \"component_name\": \"gce.py\", \n    \"component_raw\": \"gce.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19703\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"gce\", \n      \"module\", \n      \"shipit\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/google/gce.py\", \n    \"summary\": \"Added a parameter to the gce module to set the size of the boot volume.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"Added the ability to set the size of the boot volume.\"\n  }, \n  \"19704\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvariables\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nMacOS and Linux\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nansible_host variable is not accessible if set by host_vars/serv1 and \\r\\ninventory set to directory, i.e. hostfile = inventory\\r\\nEverything works fine when hostfile = hosts (single file)\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nansible.cfg:\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n[defaults]\\r\\nhostfile = inventory\\r\\n```\\r\\ninventory/hosts:\\r\\n```\\r\\n[webservers]\\r\\nserv1\\r\\n```\\r\\nhost_vars/serv1:\\r\\n```\\r\\nansible_host: 1.1.1.1\\r\\n```\\r\\n\\r\\nRunning:\\r\\n```\\r\\nansible serv1 -m debug -a \\\"var=hostvars['serv1']['ansible_host']\\\"\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n```\\r\\nserv1 | SUCCESS => {\\r\\n    \\\"hostvars['serv1']['ansible_host']\\\": \\\"1.1.1.1\\\"\\r\\n}\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nserv1 | SUCCESS => {\\r\\n    \\\"hostvars['serv1']['ansible_host']\\\": \\\"VARIABLE IS NOT DEFINED!\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"variables\", \n    \"component_raw\": \"variables\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19704\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"needs_info\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"ansible_host variable is not accessible if set by host_vars/serv1 and \\n\\ninventory set to directory, i.e. hostfile = inventory\\n\\nEverything works fine when hostfile = hosts (single file)\", \n    \"title\": \"Variable ansible_host is undefined in hostvars when using inventory\"\n  }, \n  \"19706\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0.0\\nconfig file = /home/rkhadgar/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n```\\r\\nvim ./lib/ansible/module_utils/facts.py\\r\\n\\r\\n1186     def get_dmi_facts(self):\\r\\n1187         ''' learn dmi facts from system\\r\\n1188 \\r\\n1189         Try /sys first for dmi related facts.\\r\\n1190         If that is not available, fall back to dmidecode executable '''\\r\\n1191 \\r\\n1192         if os.path.exists('/sys/devices/virtual/dmi/id/product_name'):\\r\\n1193             # Use kernel DMI info, if available\\r\\n...\\r\\n1205             DMI_DICT = {\\r\\n1206                     'bios_date': '/sys/devices/virtual/dmi/id/bios_date',\\r\\n1207                     'bios_version': '/sys/devices/virtual/dmi/id/bios_version',\\r\\n...\\r\\n1216             for (key,path) in DMI_DICT.items():\\r\\n1217                 data = get_file_content(path)\\r\\n...\\r\\n3683 def get_file_content(path, default=None, strip=True):\\r\\n3684     data = default\\r\\n3685     if os.path.exists(path) and os.access(path, os.R_OK):\\r\\n3686         try:\\r\\n3687             try:\\r\\n3688                 datafile = open(path)\\r\\n3689                 data = datafile.read()\\r\\n```\\r\\n\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /home/rkhadgar/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n\\r\\n##### CONFIGURATION\\r\\nn/a\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nLinux\\r\\n\\r\\n##### SUMMARY\\r\\n/sys file are readable only to root, and would need to be \\\"gathered\\\" using sudo\\r\\n\\r\\n```\\r\\n$ ll  /sys/devices/virtual/dmi/id/\\r\\n...\\r\\n-r--------. 1 root root 4096 Dec 28 09:12 product_serial\\r\\n-r--------. 1 root root 4096 Dec 28 09:12 product_uuid\\r\\n```\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```\\r\\n[user@system] ansible localhost -m setup 2>&1 | grep product_uuid\\r\\n        \\\"ansible_product_uuid\\\": \\\"NA\\\", \\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nproduct uuid and other information\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nget_file_content should be able to retry reading as root\\r\\n\", \n    \"component_name\": \"vim ./lib/ansible/module_utils/facts.py\", \n    \"component_raw\": \"```\\nvim ./lib/ansible/module_utils/facts.py\\n1186     def get_dmi_facts(self):\\n1187         ''' learn dmi facts from system\\n1188\\n1189         Try /sys first for dmi related facts.\\n1190         If that is not available, fall back to dmidecode executable '''\\n1191\\n1192         if os.path.exists('/sys/devices/virtual/dmi/id/product_name'):\\n1193             # Use kernel DMI info, if available\\n...\\n1205             DMI_DICT = {\\n1206                     'bios_date': '/sys/devices/virtual/dmi/id/bios_date',\\n1207                     'bios_version': '/sys/devices/virtual/dmi/id/bios_version',\\n...\\n1216             for (key,path) in DMI_DICT.items():\\n1217                 data = get_file_content(path)\\n...\\n3683 def get_file_content(path, default=None, strip=True):\\n3684     data = default\\n3685     if os.path.exists(path) and os.access(path, os.R_OK):\\n3686         try:\\n3687             try:\\n3688                 datafile = open(path)\\n3689                 data = datafile.read()\\n```\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19706\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"needs_info\", \n      \"pending_action\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"/sys file are readable only to root, and would need to be \\\"gathered\\\" using sudo\\n\\n\\n\\n```\\n\\n$ ll  /sys/devices/virtual/dmi/id/\\n\\n...\\n\\n-r--------. 1 root root 4096 Dec 28 09:12 product_serial\\n\\n-r--------. 1 root root 4096 Dec 28 09:12 product_uuid\\n\\n```\", \n    \"title\": \"facts/dmi information is broken\"\n  }, \n  \"19707\": {\n    \"ansible_version\": \"ansible 2.3.0 (serial_group_by 8bbc821485) last updated 2016/12/28 094051 (GMT +200)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible core (playbook executor)\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (serial_group_by 8bbc821485) last updated 2016/12/28 09:40:51 (GMT +200)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nUse case: execute rolling upgrade of several clusters at once, in single play.\\r\\n\\r\\nThis change modifies the *serial* feature by adding optional keyword `serial_group_by` that slices hosts list by jinja2 expression (similar to the \\\"group by\\\" feature in sql, hence the name) and then creating batches from all these slices in parallel. This means that for _M_ slices and serial value of _N_, each batch have _M_*_N_ hosts.\\r\\n\\r\\nDefault behavior (ie without any `serial_group_by`) is fully backward compatible and this change should not cause any compatibility problems for existing playbooks.\\r\\n\\r\\nBehaviour in detail:\\r\\n- `serial_group_by` is completely ignored if there is no `serial` value\\r\\n- value of `serial_group_by` can be of any type that is usable as key in python dictionary\\r\\n  - it can even be static value, but that's useless - it would just create single slice (ie default behaviour)\\r\\n  - jinja2 expression is evaluated for *each host*\\r\\n  - special variable `host` contains the host object (`ansible.inventory.host.Host`)\\r\\n    - useful attributes are: `groups` (list), `vars` (dictionary), `name` (string)\\r\\n- both integer and percent values of `serial` are supported\\r\\n  - percents are computed for each slice separately (ie if one slice has twice as many hosts in total, it will have twice as many hosts in each batch)\\r\\n\\r\\n##### EXAMPLE\\r\\nHost file contains four hosts forming two clusters:\\r\\n```\\r\\n[wfteamio]\\r\\nwfteamio-1.dev7.lmc.lan\\r\\nwfteamio-2.dev7.lmc.lan\\r\\n\\r\\n[wfusrcomp]\\r\\nwfusrcomp-1.dev7.lmc.lan\\r\\nwfusrcomp-2.dev7.lmc.lan\\r\\n```\\r\\nPlaybook defines that hosts should be grouped by the groups of each host:\\r\\n```\\r\\n- name: sample of the serial_group_by\\r\\n  gather_facts: False \\r\\n  hosts: 'all'\\r\\n  serial: 1\\r\\n  serial_group_by: '{{host.groups}}'\\r\\n  tasks:\\r\\n    - debug: msg='running!'\\r\\n```\\r\\nWhen executed, this playbook first executed tasks on `wfteamio-1.dev7.lmc.lan` + `wfusrcomp-1.dev7.lmc.lan`, then `wfteamio-2.dev7.lmc.lan` + `wfusrcomp-2.dev7.lmc.lan`\\r\\n\\r\\n\", \n    \"component_name\": \"ansible core (playbook executor)\", \n    \"component_raw\": \"ansible core (playbook executor)\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19707\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:executor/playbook_executor\", \n      \"c:executor/task_queue_manager\", \n      \"c:playbook/play\", \n      \"feature\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Use case: execute rolling upgrade of several clusters at once, in single play.\\n\\n\\n\\nThis change modifies the *serial* feature by adding optional keyword `serial_group_by` that slices hosts list by jinja2 expression (similar to the \\\"group by\\\" feature in sql, hence the name) and then creating batches from all these slices in parallel. This means that for _M_ slices and serial value of _N_, each batch have _M_*_N_ hosts.\\n\\n\\n\\nDefault behavior (ie without any `serial_group_by`) is fully backward compatible and this change should not cause any compatibility problems for existing playbooks.\\n\\n\\n\\nBehaviour in detail:\\n\\n- `serial_group_by` is completely ignored if there is no `serial` value\\n\\n- value of `serial_group_by` can be of any type that is usable as key in python dictionary\\n\\n  - it can even be static value, but that's useless - it would just create single slice (ie default behaviour)\\n\\n  - jinja2 expression is evaluated for *each host*\\n\\n  - special variable `host` contains the host object (`ansible.inventory.host.Host`)\\n\\n    - useful attributes are: `groups` (list), `vars` (dictionary), `name` (string)\\n\\n- both integer and percent values of `serial` are supported\\n\\n  - percents are computed for each slice separately (ie if one slice has twice as many hosts in total, it will have twice as many hosts in each batch)\\n\\n\\n\\n##### EXAMPLE\\n\\nHost file contains four hosts forming two clusters:\\n\\n```\\n\\n[wfteamio]\\n\\nwfteamio-1.dev7.lmc.lan\\n\\nwfteamio-2.dev7.lmc.lan\\n\\n\\n\\n[wfusrcomp]\\n\\nwfusrcomp-1.dev7.lmc.lan\\n\\nwfusrcomp-2.dev7.lmc.lan\\n\\n```\\n\\nPlaybook defines that hosts should be grouped by the groups of each host:\\n\\n```\\n\\n- name: sample of the serial_group_by\\n\\n  gather_facts: False \\n\\n  hosts: 'all'\\n\\n  serial: 1\\n\\n  serial_group_by: '{{host.groups}}'\\n\\n  tasks:\\n\\n    - debug: msg='running!'\\n\\n```\\n\\nWhen executed, this playbook first executed tasks on `wfteamio-1.dev7.lmc.lan` + `wfusrcomp-1.dev7.lmc.lan`, then `wfteamio-2.dev7.lmc.lan` + `wfusrcomp-2.dev7.lmc.lan`\", \n    \"title\": \"Serial group by\"\n  }, \n  \"19709\": {\n    \"ansible_version\": \"\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nhacking/templates/rst.j2\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n##### SUMMARY\\r\\nUse convert_symbols_to_format function in \\\"deprecated\\\" section, so we can link to newer modules which supersedes the deprecated one.\\r\\n\\r\\nFixes #19697 \\r\\n\\r\\nThanks\", \n    \"component_name\": \"hacking/templates/rst.j2\", \n    \"component_raw\": \"hacking/templates/rst.j2\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19709\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Use convert_symbols_to_format function in \\\"deprecated\\\" section, so we can link to newer modules which supersedes the deprecated one.\\n\\n\\n\\nFixes #19697 \\n\\n\\n\\nThanks\", \n    \"title\": \"Use convert_symbols_to_format function in \\\"deprecated\\\" section\"\n  }, \n  \"19710\": {\n    \"ansible_version\": \"2.2.0.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\n```\\r\\napt\\r\\n```\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n```\\r\\nhost_key_checking = False\\r\\nansible_python_interpreter=/usr/bin/python3\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n```\\r\\nboth managed nodes and control node are: Ubuntu 16.04 LTS amd64\\r\\n```\\r\\n\\r\\n##### SUMMARY<!--- Explain the problem briefly -->\\r\\nWhen declare python3 as the default python, apt module is unable to install deb over the Internet. However, if python2 is the default python, issue doesn't exist.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nAssume the inventory file call \\\"hosts\\\" defines one host \\\"localhost\\\".\\r\\n```\\r\\nansible -i hosts localhost -e 'ansible_python_interpreter=/usr/bin/python3' -u username -k  --ask-sudo-pass -m apt -a \\\"deb=http://ftp.twaren.net/Linux/Ubuntu/ubuntu/pool/main/v/vim/vim-common_7.3.547-6ubuntu3_amd64.deb\\\"\\r\\n```\\r\\nand it returns:\\r\\n```\\r\\n\\\"msg\\\": \\\"Failure downloading http://ftp.twaren.net/Linux/Ubuntu/ubuntu/pool/main/v/vim/vim-common_7.3.547-6ubuntu3_amd64.deb, 'NoneType' object has no attribute 'read'\\\"\\r\\n```\\r\\nI tried to install deb from private deb repo, the error message turned:\\r\\n```\\r\\n\\\"msg\\\": \\\"Failure downloading http://provision.hct.com/pub/pool/main/p/provision-priv-repo/provision-priv-repo_2016.0809_all.deb, write() argument must be str, not bytes\\\"\\r\\n```\\r\\nHowever if python interpreter is python(2.7.x), there is no problem at all. Below is a part of my playbook:\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n- name: <registration> installing private apt repo...\\r\\n  apt:\\r\\n      deb: http://provision.hct.com/pub/pool/main/p/provision-priv-repo/provision-priv-repo_{{provision_version}}_all.deb\\r\\n\\r\\n- name: <registration> installing AndApp8 private keys...\\r\\n  apt:\\r\\n      deb: http://provision.hct.com/pub/pool/main/a/andapp-privkey/andapp-privkey_{{privkey_version}}_all.deb\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nBoth \\\"ansible_python_interpreter=/usr/bin/python3\\\" and \\\"ansible_python_interpreter=/usr/bin/python\\\" should produce the same result.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nParser seems to behave differently between python2 and python3.\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n\\r\\n\", \n    \"component_name\": \"apt\", \n    \"component_raw\": \"```\\napt\\n```\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19710\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"python3\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/apt.py\", \n    \"summary\": \"When declare python3 as the default python, apt module is unable to install deb over the Internet. However, if python2 is the default python, issue doesn't exist.\", \n    \"title\": \"apt: unable to install deb from URI with python3 interpreter\"\n  }, \n  \"19711\": {\n    \"ansible_version\": \"2.2.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nhostname_module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.2.0\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nCentOS 7\\r\\n\\r\\n##### SUMMARY\\r\\nThe hostname is not permanent and there is no option to make it permanent\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n1.\\r\\n```\\r\\n- name: Set hostname\\r\\n  hostname:\\r\\n    name: my_host.example.com \\r\\n```\\r\\n2. Reboot\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nMachine keeps hostname\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nMachine loose hostaname\", \n    \"component_name\": \"hostname_module\", \n    \"component_raw\": \"hostname_module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19711\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/hostname.py\", \n    \"summary\": \"The hostname is not permanent and there is no option to make it permanent\", \n    \"title\": \"Hostname module not permanent\"\n  }, \n  \"19712\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nlib/ansible/modules/system/service\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nFall back on using initctl command to manage services in preference of start/stop/restart binaries.\\r\\nMain reason is to use a resolved binary location as service command. Start's location eg is resolved to see if it exists, but the full location is not used to launch the command, as at that point in code not the service command is beeing used but the bare action.\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\nBefore:\\r\\n```\\r\\n$ ansible <host>-i <inventory> -sKo -m service -a 'name=<service> state=started enabled=yes'\\r\\nSUDO password:\\r\\n<host> | FAILED! => {\\\"changed\\\": false, \\\"cmd\\\": \\\"initctl version\\\", \\\"failed\\\": true, \\\"msg\\\": \\\"[Errno 2] No such file or directory\\\", \\\"rc\\\": 2}\\r\\n```\\r\\nAfter:\\r\\n```\\r\\n$ ansible <host> -i <inventory> -sKo -m service -a 'name=<service> state=started enabled=yes'\\r\\nSUDO password:\\r\\n<host>| SUCCESS => {\\\"changed\\\": false, \\\"enabled\\\": true, \\\"name\\\": \\\"<service>\\\", \\\"state\\\": \\\"started\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"lib/ansible/ s/system/service\", \n    \"component_raw\": \"lib/ansible/modules/system/service\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19712\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"core_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/service.py\", \n    \"summary\": \"Fall back on using initctl command to manage services in preference of start/stop/restart binaries.\\n\\nMain reason is to use a resolved binary location as service command. Start's location eg is resolved to see if it exists, but the full location is not used to launch the command, as at that point in code not the service command is beeing used but the bare action.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nBefore:\\n\\n```\\n\\n$ ansible <host>-i <inventory> -sKo -m service -a 'name=<service> state=started enabled=yes'\\n\\nSUDO password:\\n\\n<host> | FAILED! => {\\\"changed\\\": false, \\\"cmd\\\": \\\"initctl version\\\", \\\"failed\\\": true, \\\"msg\\\": \\\"[Errno 2] No such file or directory\\\", \\\"rc\\\": 2}\\n\\n```\\n\\nAfter:\\n\\n```\\n\\n$ ansible <host> -i <inventory> -sKo -m service -a 'name=<service> state=started enabled=yes'\\n\\nSUDO password:\\n\\n<host>| SUCCESS => {\\\"changed\\\": false, \\\"enabled\\\": true, \\\"name\\\": \\\"<service>\\\", \\\"state\\\": \\\"started\\\"}\\n\\n```\", \n    \"title\": \"system/service module initctl location usage\"\n  }, \n  \"19714\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /Users/jbergstroem/Work/node/build/ansible/ansible.cfg\\nconfigured module search path = [plugins/library]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n- apk\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /Users/jbergstroem/Work/node/build/ansible/ansible.cfg\\r\\n  configured module search path = ['plugins/library']\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\nNot really relevant (sans squash), but:\\r\\n```ini\\r\\n[defaults]\\r\\nfilter_plugins      = plugins/filter\\r\\ngathering           = explicit\\r\\nhost_key_checking   = False\\r\\ninventory           = plugins/inventory/nodejs_yaml.py\\r\\nlibrary             = plugins/library\\r\\nremote_user         = root\\r\\nretry_files_enabled = False\\r\\nroles_path          = roles\\r\\nsquash_actions      = apk\\r\\n\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\n- host os: macOS 10.12.2\\r\\n- target os: alpine linux 3.4\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nAs mentioned in [this issue](https://github.com/ansible/ansible/issues/15742#issuecomment-217310285), the apk module doesn't support squashable args, which makes below example blow up since we're passing it as a jinja list. The suggested workaround is to use `squash_actions` in the config; but then I run into another type of regex error.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```yaml\\r\\n- name: install packages\\r\\n  package: name=\\\"{{ package }}\\\" state=present\\r\\n  loop_control:\\r\\n    loop_var: package\\r\\n  with_items:\\r\\n  # this list is generated elsewhere, hence it being\\r\\n  # passed as a list instead of multiple items\\r\\n    - \\\"{{ [\\r\\n    'autoconf',\\r\\n    'ccache',\\r\\n    'g++',\\r\\n    'gcc',\\r\\n    'git',\\r\\n    'linux-headers',\\r\\n    'm4',\\r\\n    'make',\\r\\n    'procps',\\r\\n    'xz'\\r\\n  ] }}\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nAll packages should install successfully, as separate items (again, with squash enabled).\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nWith squash in config, this happens:\\r\\n```console\\r\\nok: [test-joyent-alpine34-x64-1] => (item=autoconf)\\r\\nok: [test-joyent-alpine34-x64-1] => (item=ccache)\\r\\nok: [test-joyent-alpine34-x64-1] => (item=gcc)\\r\\nok: [test-joyent-alpine34-x64-1] => (item=git)\\r\\nok: [test-joyent-alpine34-x64-1] => (item=linux-headers)\\r\\nok: [test-joyent-alpine34-x64-1] => (item=m4)\\r\\nok: [test-joyent-alpine34-x64-1] => (item=make)\\r\\nok: [test-joyent-alpine34-x64-1] => (item=procps)\\r\\nok: [test-joyent-alpine34-x64-1] => (item=xz)\\r\\nfailed: [test-joyent-alpine34-x64-1] (item=g++) => {\\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"name\\\": \\\"g++\\\", \\r\\n            \\\"state\\\": \\\"present\\\"\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"package\\\"\\r\\n    }, \\r\\n    \\\"module_stderr\\\": \\\"Shared connection to 72.2.114.80 closed.\\\\r\\\\n\\\", \\r\\n    \\\"module_stdout\\\": \\\"Traceback (most recent call last):\\\\r\\\\n  File \\\\\\\"/tmp/ansible_XeAiQG/ansible_module_apk.py\\\\\\\", line 248, in <module>\\\\r\\\\n    main()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_XeAiQG/ansible_module_apk.py\\\\\\\", line 241, in main\\\\r\\\\n    install_packages(module, p['name'], p['state'])\\\\r\\\\n  File \\\\\\\"/tmp/ansible_XeAiQG/ansible_module_apk.py\\\\\\\", line 154, in install_packages\\\\r\\\\n    if query_virtual(module, name):\\\\r\\\\n  File \\\\\\\"/tmp/ansible_XeAiQG/ansible_module_apk.py\\\\\\\", line 123, in query_virtual\\\\r\\\\n    if re.search(search_pattern, stdout):\\\\r\\\\n  File \\\\\\\"/usr/lib/python2.7/re.py\\\\\\\", line 146, in search\\\\r\\\\n    return _compile(pattern, flags).search(string)\\\\r\\\\n  File \\\\\\\"/usr/lib/python2.7/re.py\\\\\\\", line 251, in _compile\\\\r\\\\n    raise error, v # invalid expression\\\\r\\\\nsre_constants.error: multiple repeat\\\\r\\\\n\\\", \\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\", \\r\\n    \\\"package\\\": \\\"g++\\\"\\r\\n}\\r\\n```\\r\\n\\r\\nTraceback pulled out for convenience:\\r\\n```python\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/tmp/ansible_XeAiQG/ansible_module_apk.py\\\", line 248, in <module>\\r\\n    main()\\r\\n  File \\\"/tmp/ansible_XeAiQG/ansible_module_apk.py\\\", line 241, in main\\r\\n    install_packages(module, p['name'], p['state'])\\r\\n  File \\\"/tmp/ansible_XeAiQG/ansible_module_apk.py\\\", line 154, in install_packages\\r\\n    if query_virtual(module, name):\\r\\n  File \\\"/tmp/ansible_XeAiQG/ansible_module_apk.py\\\", line 123, in query_virtual\\r\\n    if re.search(search_pattern, stdout):\\r\\n  File \\\"/usr/lib/python2.7/re.py\\\", line 146, in search\\r\\n    return _compile(pattern, flags).search(string)\\r\\n  File \\\"/usr/lib/python2.7/re.py\\\", line 251, in _compile\\r\\n    raise error, v # invalid expression\\r\\nsre_constants.error: multiple repeat\\r\\n```\\r\\n\\r\\n..and without squash:\\r\\n```console\\r\\nfailed: [test-joyent-alpine34-x64-1] (item=[u'autoconf', u'ccache', u'g++', u'gcc', u'git', u'linux-headers', u'm4', u'make', u'procps', u'xz']) => {\\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"name\\\": [\\r\\n                \\\"autoconf\\\", \\r\\n                \\\"ccache\\\", \\r\\n                \\\"g++\\\", \\r\\n                \\\"gcc\\\", \\r\\n                \\\"git\\\", \\r\\n                \\\"linux-headers\\\", \\r\\n                \\\"m4\\\", \\r\\n                \\\"make\\\", \\r\\n                \\\"procps\\\", \\r\\n                \\\"xz\\\"\\r\\n            ], \\r\\n            \\\"state\\\": \\\"present\\\"\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"package\\\"\\r\\n    }, \\r\\n    \\\"module_stderr\\\": \\\"Shared connection to 72.2.114.80 closed.\\\\r\\\\n\\\", \\r\\n    \\\"module_stdout\\\": \\\"Traceback (most recent call last):\\\\r\\\\n  File \\\\\\\"/tmp/ansible_hMFhkY/ansible_module_apk.py\\\\\\\", line 248, in <module>\\\\r\\\\n    main()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_hMFhkY/ansible_module_apk.py\\\\\\\", line 241, in main\\\\r\\\\n    install_packages(module, p['name'], p['state'])\\\\r\\\\n  File \\\\\\\"/tmp/ansible_hMFhkY/ansible_module_apk.py\\\\\\\", line 154, in install_packages\\\\r\\\\n    if query_virtual(module, name):\\\\r\\\\n  File \\\\\\\"/tmp/ansible_hMFhkY/ansible_module_apk.py\\\\\\\", line 123, in query_virtual\\\\r\\\\n    if re.search(search_pattern, stdout):\\\\r\\\\n  File \\\\\\\"/usr/lib/python2.7/re.py\\\\\\\", line 146, in search\\\\r\\\\n    return _compile(pattern, flags).search(string)\\\\r\\\\n  File \\\\\\\"/usr/lib/python2.7/re.py\\\\\\\", line 251, in _compile\\\\r\\\\n    raise error, v # invalid expression\\\\r\\\\nsre_constants.error: multiple repeat\\\\r\\\\n\\\", \\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\", \\r\\n    \\\"package\\\": [\\r\\n        \\\"autoconf\\\", \\r\\n        \\\"ccache\\\", \\r\\n        \\\"g++\\\", \\r\\n        \\\"gcc\\\", \\r\\n        \\\"git\\\", \\r\\n        \\\"linux-headers\\\", \\r\\n        \\\"m4\\\", \\r\\n        \\\"make\\\", \\r\\n        \\\"procps\\\", \\r\\n        \\\"xz\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n..again, python traceback:\\r\\n```python\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/tmp/ansible_hMFhkY/ansible_module_apk.py\\\", line 248, in <module>\\r\\n    main()\\r\\n  File \\\"/tmp/ansible_hMFhkY/ansible_module_apk.py\\\", line 241, in main\\r\\n    install_packages(module, p['name'], p['state'])\\r\\n  File \\\"/tmp/ansible_hMFhkY/ansible_module_apk.py\\\", line 154, in install_packages\\r\\n    if query_virtual(module, name):\\r\\n  File \\\"/tmp/ansible_hMFhkY/ansible_module_apk.py\\\", line 123, in query_virtual\\r\\n    if re.search(search_pattern, stdout):\\r\\n  File \\\"/usr/lib/python2.7/re.py\\\", line 146, in search\\r\\n    return _compile(pattern, flags).search(string)\\r\\n  File \\\"/usr/lib/python2.7/re.py\\\", line 251, in _compile\\r\\n    raise error, v # invalid expression\\r\\nsre_constants.error: multiple repeat\\r\\n```\", \n    \"component_name\": \"apk\", \n    \"component_raw\": \"- apk\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19714\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/apk.py\", \n    \"summary\": \"As mentioned in [this issue](https://github.com/ansible/ansible/issues/15742#issuecomment-217310285), the apk module doesn't support squashable args, which makes below example blow up since we're passing it as a jinja list. The suggested workaround is to use `squash_actions` in the config; but then I run into another type of regex error.\", \n    \"title\": \"apk: invalid expression sre_constants.error: multiple repeat\"\n  }, \n  \"19716\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvsphere_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\ndevel\\r\\n\\r\\n##### SUMMARY\\r\\nDisplay relevant error message when user tries to perform state operation on a vm which doesn't exists.\\r\\nFixes issue #5633 \\r\\n\\r\\n### Playbook:\\r\\n\\r\\n```\\r\\n  - vsphere_guest:\\r\\n     vcenter_hostname: hostname\\r\\n     username: username\\r\\n     password: password\\r\\n     validate_certs: False\\r\\n     guest: doesnt_exists\\r\\n     state: powered_on\\r\\n```\\r\\n\\r\\n### Before:\\r\\n\\r\\n`\\\"msg\\\": \\\"Missing required key/pair [disk1]. vm_disk must contain {'disk1': {'datastore': <type 'basestring'>, 'type': <type 'basestring'>, 'size_gb': <type 'int'>}}\\\"`\\r\\n\\r\\n### After:\\r\\n\\r\\n`\\\"msg\\\": \\\"vm doesnt_exists not present\\\"`\\r\\n\", \n    \"component_name\": \"vsphere_guest\", \n    \"component_raw\": \"vsphere_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19716\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vsphere_guest.py\", \n    \"summary\": \"Display relevant error message when user tries to perform state operation on a vm which doesn't exists.\\n\\nFixes issue #5633 \\n\\n\\n\\n### Playbook:\\n\\n\\n\\n```\\n\\n  - vsphere_guest:\\n\\n     vcenter_hostname: hostname\\n\\n     username: username\\n\\n     password: password\\n\\n     validate_certs: False\\n\\n     guest: doesnt_exists\\n\\n     state: powered_on\\n\\n```\\n\\n\\n\\n### Before:\\n\\n\\n\\n`\\\"msg\\\": \\\"Missing required key/pair [disk1]. vm_disk must contain {'disk1': {'datastore': <type 'basestring'>, 'type': <type 'basestring'>, 'size_gb': <type 'int'>}}\\\"`\\n\\n\\n\\n### After:\\n\\n\\n\\n`\\\"msg\\\": \\\"vm doesnt_exists not present\\\"`\", \n    \"title\": \"vsphere_guest - Display relevant error message when user tries to perform state operation on a vm which doesn't exists\"\n  }, \n  \"19717\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/jfenal/.ansible.cfg\\nconfigured module search path = [/home/jfenal/dev/ansible-modules-jfenal]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nredhat_repositories\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/jfenal/.ansible.cfg\\r\\n  configured module search path = ['/home/jfenal/dev/ansible-modules-jfenal']\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nNew module to go along with core's redhat_subscription to handle missing part of redhat_subscription: automate repository subscription which is usually (always) needed after system registration to be able to have a clean baseline.\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnnn\\\" in your commit\\r\\nmessage and your description; but you should still explain what the change does.\\r\\n-->\\r\\n\\r\\n<!--- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```>\\r\\n> REDHAT_REPOSITORY\\r\\n\\r\\n  Manage repositories with the Red Hat Subscription Management entitlement platform using the `subscription-manager' command\\r\\n\\r\\nOptions (= is mandatory):\\r\\n\\r\\n- id\\r\\n        `RepoIDs' of repositories to enable or disable When specifying multiple repos, separate them with a \\\",\\\". To specify all repositories, use \\\"*\\\". In incremental mode, other repos won't be touched. In idempotent\\r\\n        mode (default), other repos would be disabled or enabled depending on their actual state.\\r\\n        [Default: None]\\r\\n- list\\r\\n        List either all repositories, or only enabled or disabled\\r\\n        (Choices: all, enabled, disabled)[Default: all]\\r\\n- mode\\r\\n        Use either the idempotent or the incremental mode\\r\\n        (Choices: idempotent, incremental)[Default: idempotent]\\r\\n- state\\r\\n        whether to enable (`enabled') or disable (`disabled') a repository\\r\\n        (Choices: enabled, disabled)[Default: enabled]\\r\\nNotes:\\r\\n  * In order to be able to enable repositories, a system will need first to be subscribed to RHSM. Use the `redhat_subscription' Ansible module for that matter.\\r\\nRequirements:  subscription-manager\\r\\n\\r\\nEXAMPLES:\\r\\n# List all repositories\\r\\n- redhat_repositories: list=all\\r\\n\\r\\n# List enabled repositories\\r\\n- redhat_repositories: list=enabled\\r\\n\\r\\n# List disabled repositories\\r\\n- redhat_repositories: list=disabled\\r\\n\\r\\n# Enable only those repositories (implicit default idempotent mode)\\r\\n- redhat_repositories:\\r\\n    id:\\r\\n      - rhel-7-server-rpms\\r\\n      - rhel-7-server-optional-rpms\\r\\n    state: enabled\\r\\n\\r\\n# Enable only those repositories (explicit idempotent mode)\\r\\n- redhat_repositories:\\r\\n    id:\\r\\n      - rhel-7-server-rpms\\r\\n      - rhel-7-server-optional-rpms\\r\\n    state: enabled\\r\\n    mode: idempotent\\r\\n\\r\\n# Disable repositories\\r\\n- redhat_repositories:\\r\\n    id:\\r\\n      - .*-beta-.*\\r\\n      - .*-htb-.*\\r\\n      - .*-eus-.*\\r\\n      - .*-aus-.*\\r\\n    state: disabled\\r\\n    mode: incremental\\r\\n\\r\\n# Disable all repositories (mode=incremental must be specified for now)\\r\\n- redhat_repositories: id=* state=disabled mode=incremental\\r\\n\\r\\n\\r\\nRETURN VALUES:\\r\\nredhat_repositories:\\r\\n    description: list of repositories and their data\\r\\n    returned: always\\r\\n    type: dict\\r\\n    sample: '{\\r\\n        \\\"redhat_repositories\\\": {\\r\\n            \\\"rhel_7_server_extras_rpms\\\": {\\r\\n                \\\"enabled\\\": true,\\r\\n                \\\"id\\\": \\\"rhel-7-server-extras-rpms\\\",\\r\\n                \\\"name\\\": \\\"Red Hat Enterprise Linux 7 Server - Extras (RPMs)\\\",\\r\\n                \\\"url\\\": \\\"https://cdn.redhat.com/content/dist/rhel/server/7/7Server/$basearch/extras/os\\\"\\r\\n            },\\r\\n            \\\"rhel_7_server_rpms\\\": {\\r\\n                \\\"enabled\\\": true,\\r\\n                \\\"id\\\": \\\"rhel-7-server-rpms\\\",\\r\\n                \\\"name\\\": \\\"Red Hat Enterprise Linux 7 Server (RPMs)\\\",\\r\\n                \\\"url\\\": \\\"https://cdn.redhat.com/content/dist/rhel/server/7/$releasever/$basearch/os\\\"\\r\\n            }\\r\\n        }\\r\\n    }'\\r\\n\\r\\n\\r\\n\\r\\nMAINTAINERS: Jerome Fenal (@jfenal)\\r\\n\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"redhat_repositories\", \n    \"component_raw\": \"redhat_repositories\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19717\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"feature\", \n      \"module\", \n      \"new_module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/redhat_repositories.py\", \n    \"summary\": \"New module to go along with core's redhat_subscription to handle missing part of redhat_subscription: automate repository subscription which is usually (always) needed after system registration to be able to have a clean baseline.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n```>\\n\\n> REDHAT_REPOSITORY\\n\\n\\n\\n  Manage repositories with the Red Hat Subscription Management entitlement platform using the `subscription-manager' command\\n\\n\\n\\nOptions (= is mandatory):\\n\\n\\n\\n- id\\n\\n        `RepoIDs' of repositories to enable or disable When specifying multiple repos, separate them with a \\\",\\\". To specify all repositories, use \\\"*\\\". In incremental mode, other repos won't be touched. In idempotent\\n\\n        mode (default), other repos would be disabled or enabled depending on their actual state.\\n\\n        [Default: None]\\n\\n- list\\n\\n        List either all repositories, or only enabled or disabled\\n\\n        (Choices: all, enabled, disabled)[Default: all]\\n\\n- mode\\n\\n        Use either the idempotent or the incremental mode\\n\\n        (Choices: idempotent, incremental)[Default: idempotent]\\n\\n- state\\n\\n        whether to enable (`enabled') or disable (`disabled') a repository\\n\\n        (Choices: enabled, disabled)[Default: enabled]\\n\\nNotes:\\n\\n  * In order to be able to enable repositories, a system will need first to be subscribed to RHSM. Use the `redhat_subscription' Ansible module for that matter.\\n\\nRequirements:  subscription-manager\\n\\n\\n\\nEXAMPLES:\\n\\n# List all repositories\\n\\n- redhat_repositories: list=all\\n\\n\\n\\n# List enabled repositories\\n\\n- redhat_repositories: list=enabled\\n\\n\\n\\n# List disabled repositories\\n\\n- redhat_repositories: list=disabled\\n\\n\\n\\n# Enable only those repositories (implicit default idempotent mode)\\n\\n- redhat_repositories:\\n\\n    id:\\n\\n      - rhel-7-server-rpms\\n\\n      - rhel-7-server-optional-rpms\\n\\n    state: enabled\\n\\n\\n\\n# Enable only those repositories (explicit idempotent mode)\\n\\n- redhat_repositories:\\n\\n    id:\\n\\n      - rhel-7-server-rpms\\n\\n      - rhel-7-server-optional-rpms\\n\\n    state: enabled\\n\\n    mode: idempotent\\n\\n\\n\\n# Disable repositories\\n\\n- redhat_repositories:\\n\\n    id:\\n\\n      - .*-beta-.*\\n\\n      - .*-htb-.*\\n\\n      - .*-eus-.*\\n\\n      - .*-aus-.*\\n\\n    state: disabled\\n\\n    mode: incremental\\n\\n\\n\\n# Disable all repositories (mode=incremental must be specified for now)\\n\\n- redhat_repositories: id=* state=disabled mode=incremental\\n\\n\\n\\n\\n\\nRETURN VALUES:\\n\\nredhat_repositories:\\n\\n    description: list of repositories and their data\\n\\n    returned: always\\n\\n    type: dict\\n\\n    sample: '{\\n\\n        \\\"redhat_repositories\\\": {\\n\\n            \\\"rhel_7_server_extras_rpms\\\": {\\n\\n                \\\"enabled\\\": true,\\n\\n                \\\"id\\\": \\\"rhel-7-server-extras-rpms\\\",\\n\\n                \\\"name\\\": \\\"Red Hat Enterprise Linux 7 Server - Extras (RPMs)\\\",\\n\\n                \\\"url\\\": \\\"https://cdn.redhat.com/content/dist/rhel/server/7/7Server/$basearch/extras/os\\\"\\n\\n            },\\n\\n            \\\"rhel_7_server_rpms\\\": {\\n\\n                \\\"enabled\\\": true,\\n\\n                \\\"id\\\": \\\"rhel-7-server-rpms\\\",\\n\\n                \\\"name\\\": \\\"Red Hat Enterprise Linux 7 Server (RPMs)\\\",\\n\\n                \\\"url\\\": \\\"https://cdn.redhat.com/content/dist/rhel/server/7/$releasever/$basearch/os\\\"\\n\\n            }\\n\\n        }\\n\\n    }'\\n\\n\\n\\n\\n\\n\\n\\nMAINTAINERS: Jerome Fenal (@jfenal)\\n\\n\\n\\n```\", \n    \"title\": \"Add redhat_repositories to manage subscription-manager repos\"\n  }, \n  \"19719\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nLOOKUP(dig)\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nIn using `lookup('dig')` in my playbooks, I've come to realize that neither `pip` or Fedora's packaging system install `python2-dns` or in pip - `dnspython` are installed as a dependency and the task fails with\\r\\n\\r\\n```\\r\\n$\\u00a0ansible localhost -m debug -a var='lookup(\\\"dig\\\",\\\"google.com\\\")'\\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n\\r\\nlocalhost | FAILED! => {\\r\\n    \\\"failed\\\": true,                                                                                                                                                 \\r\\n    \\\"msg\\\": \\\"Can't LOOKUP(dig): module dns.resolver is not installed\\\"                                                                                                \\r\\n}      \\r\\n```\\r\\nIt may be obvious to a python developer how to resolve `dns.resolver` into a PyPI package name but it was not for me. Let me explain the gymnastics needed in order for a layperson to figure this out: Since I didn't really know what else to do, and know my packaging system better (DNF) than I do python, i used `dnf provides \\\"*/dnf/resolver*\\\"` to get the name of the package that I needed (`python2-dns`) -- full stop there if I'm using `ansible` from Fedora packages, and I filed [a bug with them](https://bugzilla.redhat.com/show_bug.cgi?id=1408936) to see if I could get them to include that as a package dependency.\\r\\n\\r\\nIn trying to bolster my supporting argument, I noticed that pip, which you control, also doesn't pull in said DNS depdendency, so I then had to figure out which one that would be. As a mostly non-python person, I know not how to go from `dns.resolver` to `dnspython` and the only way I could think to do it was rely on Fedora packages and `dnf info python2-dns` output in order to get more information about what that was (when I finally got the `dnspython` name)\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n1. Install ansible as normal, make sure you don't otherwise have a dependency that includes `dnspython` elsewhere. \\r\\n2. `ansible localhost -m debug -a var='lookup(\\\"dig\\\",\\\"google.com\\\")'`\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n1. Primary expected result is that it just works out of the box:\\r\\n```\\r\\nlocalhost | SUCCESS => {\\r\\n    \\\"lookup(\\\\\\\"dig\\\\\\\",\\\\\\\"google.com\\\\\\\")\\\": \\\"74.125.138.101,74.125.138.138,74.125.138.113,74.125.138.102,74.125.138.100,74.125.138.139\\\"\\r\\n}\\r\\n```\\r\\n2. Alternative expected result:\\r\\n```\\r\\nlocalhost | FAILED! => {\\r\\n    \\\"failed\\\": true,                                                                                                                                                 \\r\\n    \\\"msg\\\": \\\"Can't LOOKUP(dig): module dns.resolver is not installed, please install 'dnspython' from PyPi or through your distrubutions package manager.\\\"                                                                                                \\r\\n}          \\r\\n```\\r\\n\\r\\nThe alternative result is the main focus of the ticket, only because I suspect that if you wanted to include `dnspython` as a dependency you would have already, so I'd at least like someone to \\\"throw me a bone\\\" and help me out with how to get it working quickly in the event that I don't have that module already installed. \\r\\n\\r\\nTangentially, what had happened was that I never noticed this missing dependency because I had other things that pulled it into the system, and failed during a demo because it was missing. Yes I learned my lesson about testing on blank canvases beforehand, but chiefly dislike the way this was handled and presented to the user. \\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nlocalhost | FAILED! => {\\r\\n    \\\"failed\\\": true,                                                                                                                                                 \\r\\n    \\\"msg\\\": \\\"Can't LOOKUP(dig): module dns.resolver is not installed\\\"                                                                                                \\r\\n} \\r\\n```\\r\\n\", \n    \"component_name\": \"lookup(dig)\", \n    \"component_raw\": \"LOOKUP(dig)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19719\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"In using `lookup('dig')` in my playbooks, I've come to realize that neither `pip` or Fedora's packaging system install `python2-dns` or in pip - `dnspython` are installed as a dependency and the task fails with\\n\\n\\n\\n```\\n\\n$ansible localhost -m debug -a var='lookup(\\\"dig\\\",\\\"google.com\\\")'\\n\\n [WARNING]: provided hosts list is empty, only localhost is available\\n\\n\\n\\nlocalhost | FAILED! => {\\n\\n    \\\"failed\\\": true,                                                                                                                                                 \\n\\n    \\\"msg\\\": \\\"Can't LOOKUP(dig): module dns.resolver is not installed\\\"                                                                                                \\n\\n}      \\n\\n```\\n\\nIt may be obvious to a python developer how to resolve `dns.resolver` into a PyPI package name but it was not for me. Let me explain the gymnastics needed in order for a layperson to figure this out: Since I didn't really know what else to do, and know my packaging system better (DNF) than I do python, i used `dnf provides \\\"*/dnf/resolver*\\\"` to get the name of the package that I needed (`python2-dns`) -- full stop there if I'm using `ansible` from Fedora packages, and I filed [a bug with them](https://bugzilla.redhat.com/show_bug.cgi?id=1408936) to see if I could get them to include that as a package dependency.\\n\\n\\n\\nIn trying to bolster my supporting argument, I noticed that pip, which you control, also doesn't pull in said DNS depdendency, so I then had to figure out which one that would be. As a mostly non-python person, I know not how to go from `dns.resolver` to `dnspython` and the only way I could think to do it was rely on Fedora packages and `dnf info python2-dns` output in order to get more information about what that was (when I finally got the `dnspython` name)\", \n    \"title\": \"Please improve missing LOOKUP(dig) error message\"\n  }, \n  \"19720\": {\n    \"ansible_version\": \"> ansible --version\\nansible 2.3.0 (devel a10209cbe9) last updated 2016/12/28 221302 (GMT +200)\\nconfig file = /Users/ko/Development/projects/new-nest/ansible.cfg\\nconfigured module search path = Default w/o overrides\\n> ansible-playbook --version\\nansible-playbook 2.3.0 (devel a10209cbe9) last updated 2016/12/28 221302 (GMT +200)\\nconfig file = /Users/ko/Development/projects/new-nest/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Docs Report\\r\\n- ~~Bug Report~~\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`ansible-playbook` command.\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n > ansible --version\\r\\nansible 2.3.0 (devel a10209cbe9) last updated 2016/12/28 22:13:02 (GMT +200)\\r\\n  config file = /Users/ko/Development/projects/new-nest/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n > ansible-playbook --version\\r\\nansible-playbook 2.3.0 (devel a10209cbe9) last updated 2016/12/28 22:13:02 (GMT +200)\\r\\n  config file = /Users/ko/Development/projects/new-nest/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n```\\r\\n[defaults]\\r\\ndisplay_skipped_hosts = False\\r\\nretry_files_enabled = False\\r\\nroles_path = ./roles:./galaxy-roles\\r\\n```\\r\\n(but should not be related to the problem)\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nRunning Ansible from macOS `10.12.1 (16B2555)`\\r\\n\\r\\n##### SUMMARY\\r\\nThe exit codes from the `ansible-playbook` command with an unreachable host is not as reported in `man ansible-playbook` (`4` instead of `3`).\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n(Just follow the code)\\r\\n```yaml\\r\\n# playbook.yml\\r\\n- hosts: all\\r\\n  tasks:\\r\\n    - debug:  var=hostvars\\r\\n```\\r\\n\\r\\n```\\r\\n# inventory\\r\\nfoobar.baz # Be shure, this host does not exist o_O\\r\\n```\\r\\n\\r\\n```bash\\r\\n# then run\\r\\nansible-playbook -i inventory playbook.yml\\r\\necho \\\"Exit code is: $?\\\"\\r\\n```\\r\\n\\r\\nThis as a gist: https://gist.github.com/kolibri/744effd6d713b69928aa9b9bddea291a\\r\\n(clone an `./run.sh`)\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nExit code `3` when a host ist unreachable (or, if this is not an error, a more understandable documentation what `unreachable` means) \\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nUsing /etc/ansible/ansible.cfg as config file\\r\\n\\r\\nPLAYBOOK: playbook.yml ***************************************************************************************************************************\\r\\n1 plays in playbook.yml\\r\\n\\r\\nPLAY [all] ***************************************************************************************************************************************\\r\\n\\r\\nTASK [Gathering Facts] ***************************************************************************************************************************\\r\\nUsing module file /Users/ko/Development/vendor/ansible/lib/ansible/modules/system/setup.py\\r\\n<foobar.baz> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<foobar.baz> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/Users/ko/.ansible/cp/ansible-ssh-%h-%p-%r foobar.baz '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo ~/.ansible/tmp/ansible-tmp-1482961771.21-8227272489736 `\\\" && echo ansible-tmp-1482961771.21-8227272489736=\\\"` echo ~/.ansible/tmp/ansible-tmp-1482961771.21-8227272489736 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\nfatal: [foobar.baz]: UNREACHABLE! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"msg\\\": \\\"Failed to connect to the host via ssh: ssh: Could not resolve hostname foobar.baz: nodename nor servname provided, or not known\\\\r\\\\n\\\",\\r\\n    \\\"unreachable\\\": true\\r\\n}\\r\\n\\r\\nPLAY RECAP ***************************************************************************************************************************************\\r\\nfoobar.baz                 : ok=0    changed=0    unreachable=1    failed=0\\r\\n\\r\\nExit code is: 4\\r\\n```\\r\\n(this is not really necessary for this issue, is it? So, here a snippet from my `man ansible-playbook` that is more related: )\\r\\n```\\r\\nEXIT STATUS -----------\\r\\n\\r\\n*0* -- OK or no hosts matched\\r\\n\\r\\n*1* -- Error\\r\\n\\r\\n*2* -- One or more hosts failed\\r\\n\\r\\n*3* -- One or more hosts were unreachable\\r\\n\\r\\n*4* -- Parser error\\r\\n\\r\\n*5* -- Bad or incomplete options\\r\\n\\r\\n*99* -- User interrupted execution\\r\\n\\r\\n*250* -- Unexpected error\\r\\n```\", \n    \"component_name\": \"ansible-playbook command.\", \n    \"component_raw\": \"`ansible-playbook` command.\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19720\", \n    \"issue_type\": \"Docs Report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The exit codes from the `ansible-playbook` command with an unreachable host is not as reported in `man ansible-playbook` (`4` instead of `3`).\", \n    \"title\": \"Exit status of `ansible-playbook` not as documented\"\n  }, \n  \"19721\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nget_url\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nget_url module does not set file attributes when the destination already exists and the checksum matches. See get_url.py line 355.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n- get_url:\\r\\n    url: http://fun.drno.de/pics/english/nine_lives.jpg\\r\\n    dest: /tmp/nine_lives.jpg\\r\\n    checksum: \\\"sha256:d4c93617fa241e9f3da2d244c7a1365a8019d1b473fbfd236fec4d8833ca6ced\\\"\\r\\n    mode: \\\"{{ item }}\\\"\\r\\n  with_items:\\r\\n    - 0600\\r\\n    - 0644\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nI expect this to download the image on first item with mode 0600. On second item, I expect ansible to change mode to 0644.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nMode change is skipped.\\r\\n\\r\\n```\\r\\nchanged: [target] => (item=384) => {\\\"changed\\\": true, \\\"checksum_dest\\\": null, \\\"checksum_src\\\": \\\"e66a24b3dc16c079facd36a6544c92feece6bdf6\\\", \\\"dest\\\": \\\"/tmp/nine_lives.jpg\\\", \\\"gid\\\": 0, \\\"group\\\": \\\"root\\\", \\\"item\\\": 384, \\\"md5sum\\\": \\\"92171d40dbc1a59fad634dcc95461842\\\", \\\"mode\\\": \\\"0600\\\", \\\"msg\\\": \\\"OK (28343 bytes)\\\", \\\"owner\\\": \\\"root\\\", \\\"size\\\": 28343, \\\"src\\\": \\\"/tmp/tmpYZkUT7\\\", \\\"state\\\": \\\"file\\\", \\\"uid\\\": 0, \\\"url\\\": \\\"http://fun.drno.de/pics/english/nine_lives.jpg\\\"}\\r\\nok: [target] => (item=420) => {\\\"changed\\\": false, \\\"dest\\\": \\\"/tmp/nine_lives.jpg\\\", \\\"gid\\\": 0, \\\"group\\\": \\\"root\\\", \\\"item\\\": 420, \\\"mode\\\": \\\"0600\\\", \\\"msg\\\": \\\"file already exists\\\", \\\"owner\\\": \\\"root\\\", \\\"size\\\": 28343, \\\"state\\\": \\\"file\\\", \\\"uid\\\": 0, \\\"url\\\": \\\"http://fun.drno.de/pics/english/nine_lives.jpg\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"get_url\", \n    \"component_raw\": \"get_url\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19721\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/basics/get_url.py\", \n    \"summary\": \"get_url module does not set file attributes when the destination already exists and the checksum matches. See get_url.py line 355.\", \n    \"title\": \"get_url with checksum and !force won't fix file permissions\"\n  }, \n  \"19725\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @leynos on November 24, 2016 9:26_\\n\\n##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_chocolatey module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nn/a\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nWindows Server 2012 R2 target machine, with ChocolateyInstall environment variable set at the machine level\\r\\nRHEL 7.1 control machine\\r\\n\\r\\n##### SUMMARY\\r\\nChocolatey supports specifying the install location using the ChocolateyInstall environment variable.  The win_chocolatey module provides the capability to install chocolatey prior to first use if it is not present on the system.  However, if this installation is performed, the location of the choco.exe binary is hard coded as \\\"C:\\\\ProgramData\\\\chocolatey\\\\bin\\\\choco.exe\\\" ([here](https://github.com/ansible/ansible-modules-extras/blob/1ade801f65888c1f697ccfab2e4c823e65f1c9a2/windows/win_chocolatey.ps1#L71)).\\r\\n\\r\\nThe win_chocolatey module could support user specified install locations on first use by checking for the presense of the ChocolateyInstall environment variable and interpolating this into the path string assigned to the $script:executable environment variable if set, falling back to the default if it is not.\\r\\n\\r\\nThe ChocolateyInstall environment variable is described in the section \\\"Before You Install\\\" on the Chocolatey web site, [here](https://chocolatey.org/install).\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nCurrently, if ChocolateyInstall is set, chocolatey installs to the location specified by this variable when win_chocolatey is called on a system without chocolatey installed.  However, the action requested of the module fails with an error indicating that the choco.exe binary could not be found (assuming that ChocolateyInstall is not \\\"C:\\\\ProgramData\\\\chocolatey\\\").\\r\\n\\r\\nSubsequent calls to win_chocolatey under these circumstances function as expected.\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#3536_\", \n    \"component_name\": \"win_chocolatey\", \n    \"component_raw\": \"win_chocolatey module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19725\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_chocolatey.ps1\", \n    \"summary\": \"Chocolatey supports specifying the install location using the ChocolateyInstall environment variable.  The win_chocolatey module provides the capability to install chocolatey prior to first use if it is not present on the system.  However, if this installation is performed, the location of the choco.exe binary is hard coded as \\\"C:\\\\ProgramData\\\\chocolatey\\\\bin\\\\choco.exe\\\" ([here](https://github.com/ansible/ansible-modules-extras/blob/1ade801f65888c1f697ccfab2e4c823e65f1c9a2/windows/win_chocolatey.ps1#L71)).\\n\\n\\n\\nThe win_chocolatey module could support user specified install locations on first use by checking for the presense of the ChocolateyInstall environment variable and interpolating this into the path string assigned to the $script:executable environment variable if set, falling back to the default if it is not.\\n\\n\\n\\nThe ChocolateyInstall environment variable is described in the section \\\"Before You Install\\\" on the Chocolatey web site, [here](https://chocolatey.org/install).\", \n    \"title\": \"Custom install locations specified by the ChocolateyInstall env variable in win_chocolatey\"\n  }, \n  \"19726\": {\n    \"ansible_version\": \"ansible 2.0.0.2\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Bugfix Pull Request\\r\\n##### COMPONENT NAME\\r\\n\\r\\nmaven_artifact\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\nansible 2.0.0.2\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n##### SUMMARY\\r\\n\\r\\nReduced code base in approximately 30%, (removed dead code, simplified some logic), using ansible's own error checking to catch the glaring ones (such as absence of required parameters).\\r\\nAdded ignore_checksum option, enabling artifact download without forcing remote checksum validation.\\r\\nAdded aliases to repository, username and password parameters for better consistency.\\r\\nFixed (unreported) issue where http credentials weren't being propagated correctly.\\r\\nModule initialization parameters are mandatory according to the documentation but not in the code.\\r\\nAdd support for local .m2 repositories (allowing a simple 'mvn install' to work without requiring a full fledged repository).\\r\\n##### TESTING\\r\\n\\r\\nI've been using this in production on my company for a few months now (a few thousand downloads so far, very heterogeneous parameters), no issues found.\", \n    \"component_name\": \"maven_artifact\", \n    \"component_raw\": \"maven_artifact\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19726\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/language/maven_artifact.py\", \n    \"summary\": \"Reduced code base in approximately 30%, (removed dead code, simplified some logic), using ansible's own error checking to catch the glaring ones (such as absence of required parameters).\\n\\nAdded ignore_checksum option, enabling artifact download without forcing remote checksum validation.\\n\\nAdded aliases to repository, username and password parameters for better consistency.\\n\\nFixed (unreported) issue where http credentials weren't being propagated correctly.\\n\\nModule initialization parameters are mandatory according to the documentation but not in the code.\\n\\nAdd support for local .m2 repositories (allowing a simple 'mvn install' to work without requiring a full fledged repository).\\n\\n##### TESTING\\n\\n\\n\\nI've been using this in production on my company for a few months now (a few thousand downloads so far, very heterogeneous parameters), no issues found.\", \n    \"title\": \"Add support for local repositories (file://).\"\n  }, \n  \"19727\": {\n    \"ansible_version\": \"ansible 2.1.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncloud_front_facts\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.1.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThis module allows for gathering of aws cloudfront facts using boto3. I initially developed it to get the dns name of a cloudfront distribution based on the CNAME alias. I decided to expand it to the full cloudfront facts once started. It was based on cloudformation_facts.py as a starting point. It's my first pull request so I hope it's ok. :)\\r\\n\\r\\nIt gathers facts on individual elements (get-) as well as lists, such as:\\r\\n\\r\\nget-cloud-front-origin-access-identity\\r\\nget-cloud-front-origin-access-identity-config\\r\\nget-distribution\\r\\nget-distribution-config\\r\\nget-invalidation\\r\\nget-streaming-distribution\\r\\nget-streaming-distribution-config\\r\\nlist-cloud-front-origin-access-identities\\r\\nlist-distributions\\r\\nlist-distributions-by-web-acl-id\\r\\nlist-invalidations\\r\\nlist-streaming-distributions\\r\\n\\r\\nIt uses the following boolean inputs to specify the output:\\r\\n\\r\\n- distribution\\r\\n- distribution_config\\r\\n- cloud_front_origin_access_identity\\r\\n- cloud_front_origin_access_identity_config\\r\\n- invalidation\\r\\n- get_streaming_distribution\\r\\n- get_streaming_distribution  \\r\\n\\r\\nAnd the following string inputs to specify details of the facts:\\r\\n\\r\\n- distribution_id or the domain_name_alias \\r\\n- invalidation_id \\r\\n- cloud_front_origin_access_identity_id\\r\\n- web_acl_id\\r\\n\", \n    \"component_name\": \"cloud_front_facts\", \n    \"component_raw\": \"cloud_front_facts\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19727\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/cloudfront_facts.py\", \n    \"summary\": \"This module allows for gathering of aws cloudfront facts using boto3. I initially developed it to get the dns name of a cloudfront distribution based on the CNAME alias. I decided to expand it to the full cloudfront facts once started. It was based on cloudformation_facts.py as a starting point. It's my first pull request so I hope it's ok. :)\\n\\n\\n\\nIt gathers facts on individual elements (get-) as well as lists, such as:\\n\\n\\n\\nget-cloud-front-origin-access-identity\\n\\nget-cloud-front-origin-access-identity-config\\n\\nget-distribution\\n\\nget-distribution-config\\n\\nget-invalidation\\n\\nget-streaming-distribution\\n\\nget-streaming-distribution-config\\n\\nlist-cloud-front-origin-access-identities\\n\\nlist-distributions\\n\\nlist-distributions-by-web-acl-id\\n\\nlist-invalidations\\n\\nlist-streaming-distributions\\n\\n\\n\\nIt uses the following boolean inputs to specify the output:\\n\\n\\n\\n- distribution\\n\\n- distribution_config\\n\\n- cloud_front_origin_access_identity\\n\\n- cloud_front_origin_access_identity_config\\n\\n- invalidation\\n\\n- get_streaming_distribution\\n\\n- get_streaming_distribution  \\n\\n\\n\\nAnd the following string inputs to specify details of the facts:\\n\\n\\n\\n- distribution_id or the domain_name_alias \\n\\n- invalidation_id \\n\\n- cloud_front_origin_access_identity_id\\n\\n- web_acl_id\", \n    \"title\": \"cloudfront_facts.py\"\n  }, \n  \"19728\": {\n    \"ansible_version\": \"Ansible 2.0.0.2   (CSWansible)\", \n    \"body\": \"Hi \\r\\n\\r\\nEncouterred issue when run ansible on Solaris 5.10, needs advise and help.   Thank you very much\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nInstalled Ansible as follow on Solaris VM ( (SunOS mysolaris1 5.10 Generic_147148-26 i86pc i386 i86pc) on virtual box\\r\\npkgadd -d http://get.opencsw.org/now\\r\\n/opt/csw/bin/pkgutil -U\\r\\n/opt/csw/bin/pkgutil -y -i ansible \\r\\n/usr/sbin/pkgchk -L CSWansible # list files\\r\\n\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nAnsible 2.0.0.2   (CSWansible)\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\n\\r\\n/etc/opt/csw/ansible/ansible.cfg is kept as per default, only uncomment this line belwo\\r\\ninventory = /etc/opt/csw/ansible/hosts\\r\\n\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\n\\r\\nAnsible Server\\r\\nmysolaris1:/opt/csw/bin #uname -a\\r\\nSunOS mysolaris1 5.10 Generic_147148-26 i86pc i386 i86pc\\r\\n\\r\\nAnsible Clients\\r\\n1)\\tSolaris 5.10\\r\\nroot@10.x.x.70 # /usr/bin/python -V\\r\\nPython 2.6.4\\r\\n\\r\\nroot@10.x.x.70  # uname -a\\r\\nSunOS 10.x.x.70    5.10 Generic_147440-07 sun4v sparc sun4v\\r\\n\\r\\n\\tls \\u2013lrht /bin/sh\\r\\n\\tLrwxrwxrwx\\t1\\troot\\troot\\t13\\tMay 11  2011\\t\\t/bin/sh \\uf0e0 ../../sbin/sh\\r\\n\\r\\n\\t-r-xr-xr-x\\t1\\troot\\troot\\t93K\\tSep 22\\t2010\\t\\t sh\\r\\n\\r\\n2)\\tSolaris 5.11\\r\\nroot@10.x.x.41:~# /usr/bin/python -V\\r\\nPython 2.7.9\\r\\n\\r\\nroot@10.x.x.41:~# uname -a\\r\\nSunOS 10.x.x.41  5.11 11.3 sun4v sparc sun4v\\r\\n\\r\\n\\tls \\u2013lrht /bin/sh\\r\\n\\tLrwxrwxrwx \\t1\\troot \\troot\\t13\\tFeb 3 \\t2016\\t/bin/sh -> sparcv9/ksh93\\r\\n\\r\\n\\t-r-xr-xr-x \\t8\\troot\\tbin\\t2.2M\\tFeb 4\\t2016\\t ksh93\\r\\n\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\nWhen run Ansible to Solaris 5.11 it worked but not on Solaris 5.10.  Throwing error: \\r\\n    \\\"module_stderr\\\": \\\"/bin/sh: syntax error at line 1: `(' unexpected\\\\r\\\\n\\\",\\r\\n    \\\"module_stdout\\\": \\\"/bin/sh: syntax error at line 1: `(' unexpected\\\\r\\\\n\\\",\\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\",\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n\\r\\nmysolaris1:/opt/csw/bin #./ansible 10.x.x.26 -m file -a \\\"dest=/tmp/abc mode=755\\\"  -u test -k -v -b --become-method=su --ask-become-pass\\r\\nUsing /etc/opt/csw/ansible/ansible.cfg as config file\\r\\nSSH password:\\r\\nSU password[defaults to SSH password]:\\r\\n10.x.x.26 | FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true,\\r\\n    \\\"module_stderr\\\": \\\"/bin/sh: syntax error at line 1: `(' unexpected\\\\r\\\\n\\\",\\r\\n    \\\"module_stdout\\\": \\\"/bin/sh: syntax error at line 1: `(' unexpected\\\\r\\\\n\\\",\\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\",\\r\\n    \\\"parsed\\\": false\\r\\n}\\r\\n\\r\\nmysolaris1:/opt/csw/bin #./ansible 10.x.x.41 -m file -a \\\"dest=/tmp/abc mode=755\\\"  -u admin -k -v -b --become-method=su --ask-become-pass\\r\\nUsing /etc/opt/csw/ansible/ansible.cfg as config file\\r\\nSSH password:\\r\\nSU password[defaults to SSH password]:\\r\\n10.x.x.41 | SUCCESS => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"gid\\\": 0,\\r\\n    \\\"group\\\": \\\"root\\\",\\r\\n    \\\"mode\\\": \\\"0755\\\",\\r\\n    \\\"owner\\\": \\\"root\\\",\\r\\n    \\\"path\\\": \\\"/tmp/abc\\\",\\r\\n    \\\"size\\\": 29,\\r\\n    \\\"state\\\": \\\"file\\\",\\r\\n    \\\"uid\\\": 0\\r\\n}\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nExpect to see successful result as Solaris 5.11\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n\\\"/bin/sh: syntax error at line 1: `(' unexpected\\\\r\\\\n\\\",  on Solaris 5.10\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\nError on Solaris 5.10\\r\\nmysolaris1:/opt/csw/bin #./ansible 10.x.x.70 -m file -a \\\"dest=/tmp/abc mode=755\\\" -u test -k -vvv -b --become-method=su --ask-become-pass\\r\\nUsing /etc/opt/csw/ansible/ansible.cfg as config file\\r\\nSSH password:\\r\\nSU password[defaults to SSH password]:\\r\\n<10.x.x.70> ESTABLISH CONNECTION FOR USER: test on PORT 22 TO 10.x.x.70\\r\\n<10.x.x.70> EXEC ( umask 22 && mkdir -p \\\"$( echo $HOME/.ansible/tmp/ansible-tmp-1482912590.43-126399425923882 )\\\" && echo \\\"$( echo $HOME/.ansible/tmp/ansibl e-tmp-1482912590.43-126399425923882 )\\\" )\\r\\n<10.x.x.70> PUT /tmp/tmpRFEd0w TO $( echo /export/home/test/.ansible/tmp/ansible-tmp-1482912590.43-126399425923882 )/file\\r\\n<10.x.x.70> EXEC /bin/sh -c 'su  root -c \\\"/bin/sh -c '\\\"'\\\"'echo BECOME-SUCCESS-crnszpmffbxxcqmekmlunzemcuyekcnl; LANG=C LC_ALL=C LC_MESSAGES=C /usr/bin/pyth on '\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'$( echo /export/home/test/.ansible/tmp/ansible-tmp-1482912590.43-126399425923882 )/file'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'; rm -rf \\\"$( echo /export/home/te st/.ansible/tmp/ansible-tmp-1482912590.43-126399425923882 )/\\\" > /dev/null 2>&1'\\\"'\\\"'\\\"'\\r\\n10.x.x.70 | FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"file\\\"\\r\\n    },\\r\\n    \\\"module_stderr\\\": \\\"/bin/sh: syntax error at line 1: `(' unexpected\\\\r\\\\n\\\",\\r\\n    \\\"module_stdout\\\": \\\"/bin/sh: syntax error at line 1: `(' unexpected\\\\r\\\\n\\\",\\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\",\\r\\n    \\\"parsed\\\": false\\r\\n}\\r\\n\\r\\n\\r\\nSucceeded on Solaris 5.11\\r\\nmysolaris1:/opt/csw/bin #./ansible 10.x.x.41 -m file -a \\\"dest=/tmp/abc mode=755\\\" -u admin -k -vvv -b --become-method=su --ask-become-pass\\r\\nUsing /etc/opt/csw/ansible/ansible.cfg as config file\\r\\nSSH password:\\r\\nSU password[defaults to SSH password]:\\r\\n<10.x.x.41> ESTABLISH CONNECTION FOR USER: admin on PORT 22 TO 10.x.x.41\\r\\n<10.x.x.41> EXEC ( umask 22 && mkdir -p \\\"$( echo $HOME/.ansible/tmp/ansible-tmp-1482912667.26-183108740085870 )\\\" && echo \\\"$( echo $HOME/.ansible/tmp/ansibl e-tmp-1482912667.26-183108740085870 )\\\" )\\r\\n<10.x.x.41> PUT /tmp/tmpN7JYnc TO /export/home/admin/.ansible/tmp/ansible-tmp-1482912667.26-183108740085870/file\\r\\n<10.x.x.41> EXEC /bin/sh -c 'su  root -c \\\"/bin/sh -c '\\\"'\\\"'echo BECOME-SUCCESS-zggncvorsmkpqhfejtsceicdtpvxndda; LANG=C LC_ALL=C LC_MESSAGES=C /usr/bin/pyth on /export/home/admin/.ansible/tmp/ansible-tmp-1482912667.26-183108740085870/file; rm -rf \\\"/export/home/admin/.ansible/tmp/ansible-tmp-1482912667.26-18310874 0085870/\\\" > /dev/null 2>&1'\\\"'\\\"'\\\"'\\r\\n10.x.x.41 | SUCCESS => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"gid\\\": 0,\\r\\n    \\\"group\\\": \\\"root\\\",\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"backup\\\": null,\\r\\n            \\\"content\\\": null,\\r\\n            \\\"delimiter\\\": null,\\r\\n            \\\"dest\\\": \\\"/tmp/abc\\\",\\r\\n            \\\"diff_peek\\\": null,\\r\\n            \\\"directory_mode\\\": null,\\r\\n            \\\"follow\\\": false,\\r\\n            \\\"force\\\": false,\\r\\n            \\\"group\\\": null,\\r\\n            \\\"mode\\\": \\\"755\\\",\\r\\n            \\\"original_basename\\\": null,\\r\\n            \\\"owner\\\": null,\\r\\n            \\\"path\\\": \\\"/tmp/abc\\\",\\r\\n            \\\"recurse\\\": false,\\r\\n            \\\"regexp\\\": null,\\r\\n            \\\"remote_src\\\": null,\\r\\n            \\\"selevel\\\": null,\\r\\n            \\\"serole\\\": null,\\r\\n            \\\"setype\\\": null,\\r\\n            \\\"seuser\\\": null,\\r\\n            \\\"src\\\": null,\\r\\n            \\\"state\\\": null,\\r\\n            \\\"validate\\\": null\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"file\\\"\\r\\n    },\\r\\n    \\\"mode\\\": \\\"0755\\\",\\r\\n    \\\"owner\\\": \\\"root\\\",\\r\\n    \\\"path\\\": \\\"/tmp/abc\\\",\\r\\n    \\\"size\\\": 29,\\r\\n    \\\"state\\\": \\\"file\\\",\\r\\n    \\\"uid\\\": 0\\r\\n}\\r\\n\\r\\n```\", \n    \"component_name\": \"installed ansible as follow on solaris vm ( (sunos mysolaris1 5.10 generic_147148-26 i86pc i386 i86pc) on virtual box\", \n    \"component_raw\": \"Installed Ansible as follow on Solaris VM ( (SunOS mysolaris1 5.10 Generic_147148-26 i86pc i386 i86pc) on virtual box\\npkgadd -d http://get.opencsw.org/now\\n/opt/csw/bin/pkgutil -U\\n/opt/csw/bin/pkgutil -y -i ansible\\n/usr/sbin/pkgchk -L CSWansible # list files\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19728\", \n    \"issue_type\": null, \n    \"labels\": [\n      \"affects_2.0\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When run Ansible to Solaris 5.11 it worked but not on Solaris 5.10.  Throwing error: \\n\\n    \\\"module_stderr\\\": \\\"/bin/sh: syntax error at line 1: `(' unexpected\\\\r\\\\n\\\",\\n\\n    \\\"module_stdout\\\": \\\"/bin/sh: syntax error at line 1: `(' unexpected\\\\r\\\\n\\\",\\n\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\",\", \n    \"title\": \"Ansible to Solaris 5.10 not working but Solaris 5.11 ok\"\n  }, \n  \"19729\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /Users/myuser/script/homelab/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nbecome functionality\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /Users/myuser/script/homelab/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n```\\r\\n$ egrep -v '(^#|^$)' ansible.cfg\\r\\n[defaults] \\r\\nlog_path=ansible.log\\r\\nroles_path = ./\\r\\ntransport = ssh\\r\\nforks=5\\r\\ncallback_plugins = callback_plugins/\\r\\ntimeout = 30\\r\\n[ssh_connection]\\r\\nssh_args = -o ForwardAgent=yes\\r\\npipelining=True\\r\\nscp_if_ssh=True\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nOrchestrator: Macos 10.11, target 10.12\\r\\n\\r\\n##### SUMMARY\\r\\nWhen using become with non-privileged user, tasks are failing with\\r\\n```\\r\\n{\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied\\\\njob-working-directory: error retrieving current directory: getcwd: cannot access parent directories: Permission denied\\\\nTraceback (most recent call last):\\\\n  File \\\\\\\"<stdin>\\\\\\\", line 10, in <module>\\\\n  File \\\\\\\"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py\\\\\\\", line 364, in abspath\\\\n    cwd = os.getcwd()\\\\nOSError: [Errno 13] Permission denied\\\\n\\\", \\\"module_stdout\\\": \\\"\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\"}\\r\\n```\\r\\n\\r\\napply to single task on or on include: for example osx_defaults\\r\\nProblem is I think, ansible should chdir to a world-readable directory before 'become' like / or /tmp. else python is trying its own actions later and failed because of permissions.\\r\\n\\r\\nNote: ansible user is non-root user with sudo capacity. both this user and root user have private home non-readable by other users.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```yaml\\r\\n- hosts: mac \\r\\n  tasks:\\r\\n    - name: Show Hidden Files\\r\\n      osx_defaults: domain=com.apple.finder key=AppleShowAllFiles type=bool value=true state=present\\r\\n      become: yes \\r\\n      become_user: local_user\\r\\n\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\ntask should apply in user context without failure.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\n$ time ansible-playbook -i inventory--limit mac test-become.yml -vvvv\\r\\n\\r\\nUsing /Users/myuser/script/homelab/ansible.cfg as config file\\r\\nLoading callback plugin default of type stdout, v2.0 from /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc\\r\\n\\r\\nPLAYBOOK: test-become.yml ******************************************************\\r\\n1 plays in test-become.yml\\r\\n\\r\\nPLAY [mac] *********************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nUsing module file /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ansible/modules/core/system/setup.py\\r\\n<x.y.1.7> ESTABLISH SSH CONNECTION FOR USER: deploy\\r\\n<x.y.1.7> SSH: EXEC ssh -vvv -o ForwardAgent=yes -o 'IdentityFile=\\\"/Users/myuser/.ssh/keys/sshkey1\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gs\\r\\nsapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=deploy -o ConnectTimeout=30 x.y.1.7 '/bin/sh -c '\\\"'\\\"'/usr/bin/python && sleep 0'\\\"'\\\"''\\r\\nok: [air]\\r\\n\\r\\nTASK [Show Hidden Files] *******************************************************\\r\\ntask path: /Users/myuser/script/homelab/test-become.yml:4\\r\\nUsing module file /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ansible/modules/extras/system/osx_defaults.py\\r\\n<x.y.1.7> ESTABLISH SSH CONNECTION FOR USER: deploy\\r\\n<x.y.1.7> SSH: EXEC ssh -vvv -o ForwardAgent=yes -o 'IdentityFile=\\\"/Users/myuser/.ssh/keys/sshkey1\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gs\\r\\nsapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=deploy -o ConnectTimeout=30 x.y.1.7 '/bin/sh -c '\\\"'\\\"'sudo -H -S -n -u myuser /bin/sh -c '\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'echo BECOME-\\r\\nSUCCESS-tiiyfmjvqivumyjnytpqwfmmhubpibav; /usr/bin/python'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"' && sleep 0'\\\"'\\\"''\\r\\nfatal: [air]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"osx_defaults\\\"\\r\\n    }, \\r\\n    \\\"module_stderr\\\": \\\"OpenSSH_6.9p1, LibreSSL 2.1.8\\\\r\\\\ndebug1: Reading configuration data /Users/myuser/.ssh/config\\\\r\\\\ndebug3: kex names ok: [diffie-hellman-group-exchange-sha256,diffie-\\r\\nhellman-group-exchange-sha1,diffie-hellman-group14-sha1]\\\\r\\\\ndebug1: /Users/myuser/.ssh/config line 286: Applying options for *\\\\r\\\\ndebug1: Reading configuration data /etc/ssh/ssh_config\\\\r\\r\\n\\\\ndebug1: /etc/ssh/ssh_config line 56: Applying options for *\\\\r\\\\ndebug1: auto-mux: Trying existing master\\\\r\\\\ndebug1: Control socket \\\\\\\"/Users/myuser/.ssh/ctl-deploy-x.y.1.7-22\\\\\\\" does not\\r\\n exist\\\\r\\\\ndebug2: ssh_connect: needpriv 0\\\\r\\\\ndebug1: Connecting to x.y.1.7 [x.y.1.7] port 22.\\\\r\\\\ndebug2: fd 3 setting O_NONBLOCK\\\\r\\\\ndebug1: fd 3 clearing O_NONBLOCK\\\\r\\\\ndebug1: Connecti\\r\\non established.\\\\r\\\\ndebug3: timeout: 28887 ms remain after connect\\\\r\\\\ndebug1: identity file /Users/myuser/.ssh/keys/sshkey1 type 4\\\\r\\\\ndebug1: key_load_public: No such file or directory\\r\\n\\\\r\\\\ndebug1: identity file /Users/myuser/.ssh/keys/sshkey1-cert type -1\\\\r\\\\ndebug1: Enabling compatibility mode for protocol 2.0\\\\r\\\\ndebug1: Local version string SSH-2.0-OpenSSH_6.9\\\\r\\\\nd\\r\\nebug1: Remote protocol version 2.0, remote software version OpenSSH_7.3\\\\r\\\\ndebug1: match: OpenSSH_7.3 pat OpenSSH* compat 0x04000000\\\\r\\\\ndebug2: fd 3 setting O_NONBLOCK\\\\r\\\\ndebug1: Authent\\r\\nicating to x.y.1.7:22 as 'deploy'\\\\r\\\\ndebug3: hostkeys_foreach: reading file \\\\\\\"/Users/myuser/.ssh/known_hosts\\\\\\\"\\\\r\\\\ndebug3: record_hostkey: found key type ECDSA in file /Users/myuser/.ssh\\r\\n/known_hosts:40\\\\r\\\\ndebug3: load_hostkeys: loaded 1 keys from x.y.1.7\\\\r\\\\ndebug3: order_hostkeyalgs: prefer hostkeyalgs: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-\\r\\nv01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521\\\\r\\\\ndebug1: SSH2_MSG_KEXINIT sent\\\\r\\\\ndebug1: SSH2_MSG_KEXINIT received\\r\\n\\\\r\\\\ndebug2: kex_parse_kexinit: curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sh\\r\\na1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1\\\\r\\\\ndebug2: kex_parse_kexinit: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp\\r\\n521-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-ce\\r\\nrt-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ssh-ed25519,ssh-rsa,ssh-dss\\\\r\\\\ndebug2: kex_parse_kexinit: aes256-ctr,aes192-ctr,aes128-ctr\\\\r\\\\ndebug2: kex_parse_kexinit: aes256-ctr,aes192\\r\\n-ctr,aes128-ctr\\\\r\\\\ndebug2: kex_parse_kexinit: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-\\r\\n64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com\\r\\n,hmac-md5,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96\\\\r\\\\ndebug2: kex_parse_kexinit: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,\\r\\nhmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1,hmac-md5-etm@openssh.com,hmac-ripemd160-etm@openssh\\r\\n.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96\\\\r\\\\ndebug2: kex_parse_kexinit: none,zlib@openssh.\\r\\ncom,zlib\\\\r\\\\ndebug2: kex_parse_kexinit: none,zlib@openssh.com,zlib\\\\r\\\\ndebug2: kex_parse_kexinit: \\\\r\\\\ndebug2: kex_parse_kexinit: \\\\r\\\\ndebug2: kex_parse_kexinit: first_kex_follows 0 \\\\r\\\\ndebu\\r\\ng2: kex_parse_kexinit: reserved 0 \\\\r\\\\ndebug2: kex_parse_kexinit: curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha25\\r\\n6,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1\\\\r\\\\ndebug2: kex_parse_kexinit: ssh-rsa,rsa-sha2-512,rsa-sha2-256,ec\\r\\ndsa-sha2-nistp256,ssh-ed25519\\\\r\\\\ndebug2: kex_parse_kexinit: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com\\\\r\\\\ndebug2: kex_pa\\r\\nrse_kexinit: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com\\\\r\\\\ndebug2: kex_parse_kexinit: umac-64-etm@openssh.com,umac-128-e\\r\\ntm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1\\\\r\\\\ndeb\\r\\nug2: kex_parse_kexinit: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1\\\\r\\\\ndebug2: kex_parse_kexinit: none,zlib@openssh.com\\\\r\\\\ndebug2: kex_parse_kexinit: none,zlib@openssh.com\\\\r\\\\ndebug2: kex_parse_kexinit: \\\\r\\\\ndebug2: kex_parse_kexinit: \\\\r\\\\ndebug2: kex_parse_kexinit: first_kex_follows 0 \\\\r\\\\ndebug2: kex_parse_kexinit: reserved 0 \\\\r\\\\ndebug1: kex: server->client aes256-ctr umac-64-etm@openssh.com none\\\\r\\\\ndebug1: kex: client->server aes256-ctr umac-64-etm@openssh.com none\\\\r\\\\ndebug1: expecting SSH2_MSG_KEX_ECDH_REPLY\\\\r\\\\ndebug1: Server host key: ecdsa-sha2-nistp256 SHA256:Rg62+0HaDpRVOtfWgR1iggZzDrk+6v4LuzcdzS93BTk\\\\r\\\\ndebug3: hostkeys_foreach: reading file \\\\\\\"/Users/myuser/.ssh/known_hosts\\\\\\\"\\\\r\\\\ndebug3: record_hostkey: found key type ECDSA in file /Users/myuser/.ssh/known_hosts:40\\\\r\\\\ndebug3: load_hostkeys: loaded 1 keys from x.y.1.7\\\\r\\\\ndebug1: Host 'x.y.1.7' is known and matches the ECDSA host key.\\\\r\\\\ndebug1: Found key in /Users/myuser/.ssh/known_hosts:40\\\\r\\\\ndebug2: set_newkeys: mode 1\\\\r\\\\ndebug1: SSH2_MSG_NEWKEYS sent\\\\r\\\\ndebug1: expecting SSH2_MSG_NEWKEYS\\\\r\\\\ndebug2: set_newkeys: mode 0\\\\r\\\\ndebug1: SSH2_MSG_NEWKEYS received\\\\r\\\\ndebug1: SSH2_MSG_SERVICE_REQUEST sent\\\\r\\\\ndebug2: service_accept: ssh-userauth\\\\r\\\\ndebug1: SSH2_MSG_SERVICE_ACCEPT received\\\\r\\\\ndebug2: key: /Users/myuser/.ssh/keys/sshkey1 (0x7fb933d141f0), explicit\\\\r\\\\ndebug1: Authentications that can continue: publickey,keyboard-interactive\\\\r\\\\ndebug3: start over, passed a different list publickey,keyboard-interactive\\\\r\\\\ndebug3: preferred gssapi-with-mic,gssapi-keyex,hostbased,publickey\\\\r\\\\ndebug3: authmethod_lookup publickey\\\\r\\\\ndebug3: remaining preferred: ,gssapi-keyex,hostbased,publickey\\\\r\\\\ndebug3: authmethod_is_enabled publickey\\\\r\\\\ndebug1: Next authentication method: publickey\\\\r\\\\ndebug1: Offering ED25519 public key: /Users/myuser/.ssh/keys/sshkey1\\\\r\\\\ndebug3: send_pubkey_test\\\\r\\\\ndebug2: we sent a publickey packet, wait for reply\\\\r\\\\ndebug1: Server accepts key: pkalg ssh-ed25519 blen 51\\\\r\\\\ndebug2: input_userauth_pk_ok: fp SHA256:X/9fGyWVW1VJY8S+s4oTugq+zKgu8yuigFjBo+CgTzw\\\\r\\\\ndebug3: sign_and_send_pubkey: ED25519 SHA256:X/9fGyWVW1VJY8S+s4oTugq+zKgu8yuigFjBo+CgTzw\\\\r\\\\ndebug1: Authentication succeeded (publickey).\\\\r\\\\nAuthenticated to x.y.1.7 ([x.y.1.7]:22).\\\\r\\\\ndebug1: setting up multiplex master socket\\\\r\\\\ndebug3: muxserver_listen: temporary control path /Users/myuser/.ssh/ctl-deploy-x.y.1.7-22.TghyBP5n3Qzoagpa\\\\r\\\\ndebug2: fd 5 setting O_NONBLOCK\\\\r\\\\ndebug3: fd 5 is O_NONBLOCK\\\\r\\\\ndebug3: fd 5 is O_NONBLOCK\\\\r\\\\ndebug1: channel 0: new [/Users/myuser/.ssh/ctl-deploy-x.y.1.7-22]\\\\r\\\\ndebug3: muxserver_listen: mux listener channel 0 fd 5\\\\r\\\\ndebug2: fd 6 setting O_NONBLOCK\\\\r\\\\ndebug2: fd 7 setting O_NONBLOCK\\\\r\\\\ndebug2: fd 8 setting O_NONBLOCK\\\\r\\\\ndebug1: channel 1: new [client-session]\\\\r\\\\ndebug3: ssh_session2_open: channel_new: 1\\\\r\\\\ndebug2: channel 1: send open\\\\r\\\\ndebug1: Entering interactive session.\\\\r\\\\ndebug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0\\\\r\\\\ndebug2: callback start\\\\r\\\\ndebug1: Requesting authentication agent forwarding.\\\\r\\\\ndebug2: channel 1: request auth-agent-req@openssh.com confirm 0\\\\r\\\\ndebug2: fd 3 setting TCP_NODELAY\\\\r\\\\ndebug3: ssh_packet_set_tos: set IP_TOS 0x08\\\\r\\\\ndebug2: client_session2_setup: id 1\\\\r\\\\ndebug1: Sending environment.\\\\r\\\\ndebug3: Ignored env MANPATH\\\\r\\\\ndebug3: Ignored env TERM_PROGRAM\\\\r\\\\ndebug3: Ignored env D\\\\r\\\\ndebug3: Ignored env GPG_AGENT_INFO\\\\r\\\\ndebug3: Ignored env SHELL\\\\r\\\\ndebug3: Ignored env TERM\\\\r\\\\ndebug3: Ignored env G\\\\r\\\\ndebug3: Ignored env TMPDIR\\\\r\\\\ndebug3: Ignored env Apple_PubSub_Socket_Render\\\\r\\\\ndebug3: Ignored env CVSROOT\\\\r\\\\ndebug3: Ignored env TERM_PROGRAM_VERSION\\\\r\\\\ndebug3: Ignored env OLDPWD\\\\r\\\\ndebug3: Ignored env TERM_SESSION_ID\\\\r\\\\ndebug3: Ignored env USER\\\\r\\\\ndebug3: Ignored env SSH_AUTH_SOCK\\\\r\\\\ndebug3: Ignored env TERMCAP\\\\r\\\\ndebug3: Ignored env __CF_USER_TEXT_ENCODING\\\\r\\\\ndebug3: Ignored env PATH\\\\r\\\\ndebug3: Ignored env STY\\\\r\\\\ndebug3: Ignored env PWD\\\\r\\\\ndebug3: Ignored env EXINIT\\\\r\\\\ndebug3: Ignored env DBUS_LAUNCHD_SESSION_BUS_SOCKET\\\\r\\\\ndebug3: Ignored env TCLLIBPATH\\\\r\\\\ndebug3: Ignored env FIREBIRD_HOME\\\\r\\\\ndebug3: Ignored env mp\\\\r\\\\ndebug3: Ignored env XPC_FLAGS\\\\r\\\\ndebug3: Ignored env XPC_SERVICE_NAME\\\\r\\\\ndebug3: Ignored env m\\\\r\\\\ndebug3: Ignored env HOME\\\\r\\\\ndebug3: Ignored env SHLVL\\\\r\\\\ndebug3: Ignored env r\\\\r\\\\ndebug3: Ignored env LOGNAME\\\\r\\\\ndebug3: Ignored env WINDOW\\\\r\\\\ndebug3: Ignored env LC_CTYPE\\\\r\\\\ndebug3: Ignored env DISPLAY\\\\r\\\\ndebug3: Ignored env SECURITYSESSIONID\\\\r\\\\ndebug3: Ignored env _\\\\r\\\\ndebug1: Sending command: /bin/sh -c 'sudo -H -S -n -u myuser /bin/sh -c '\\\\\\\"'\\\\\\\"'echo BECOME-SUCCESS-tiiyfmjvqivumyjnytpqwfmmhubpibav; /usr/bin/python'\\\\\\\"'\\\\\\\"' && sleep 0'\\\\r\\\\ndebug2: channel 1: request exec confirm 1\\\\r\\\\ndebug2: callback done\\\\r\\\\ndebug2: channel 1: open confirm rwindow 0 rmax 32768\\\\r\\\\ndebug2: channel 1: rcvd adjust 2097152\\\\r\\\\ndebug2: channel_input_status_confirm: type 99 id 1\\\\r\\\\ndebug2: exec request accepted on channel 1\\\\r\\\\ndebug2: channel 1: rcvd ext data 108\\\\r\\\\ndebug2: channel 1: rcvd ext data 119\\\\r\\\\nshell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied\\\\njob-working-directory: error retrieving current directory: getcwd: cannot access parent directories: Permission denied\\\\ndebug2: channel 1: written 227 to efd 8\\\\r\\\\ndebug2: channel 1: read<=0 rfd 6 len 0\\\\r\\\\ndebug2: channel 1: read failed\\\\r\\\\ndebug2: channel 1: close_read\\\\r\\\\ndebug2: channel 1: input open -> drain\\\\r\\\\ndebug2: channel 1: ibuf empty\\\\r\\\\ndebug2: channel 1: send eof\\\\r\\\\ndebug2: channel 1: input drain -> closed\\\\r\\\\ndebug2: channel 1: rcvd ext data 74\\\\r\\\\ndebug2: channel 1: rcvd ext data 115\\\\r\\\\nTraceback (most recent call last):\\\\n  File \\\\\\\"<stdin>\\\\\\\", line 10, in <module>\\\\n  File \\\\\\\"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py\\\\\\\", line 364, in abspath\\\\ndebug2: channel 1: written 189 to efd 8\\\\r\\\\ndebug2: channel 1: rcvd ext data 22\\\\r\\\\ndebug2: channel 1: rcvd ext data 9\\\\r\\\\ndebug2: channel 1: rcvd ext data 29\\\\r\\\\n    cwd = os.getcwd()\\\\nOSError: [Errno 13] Permission denied\\\\ndebug2: channel 1: written 60 to efd 8\\\\r\\\\ndebug2: channel 1: rcvd eof\\\\r\\\\ndebug2: channel 1: output open -> drain\\\\r\\\\ndebug2: channel 1: obuf empty\\\\r\\\\ndebug2: channel 1: close_write\\\\r\\\\ndebug2: channel 1: output drain -> closed\\\\r\\\\ndebug1: client_input_channel_req: channel 1 rtype exit-status reply 0\\\\r\\\\ndebug2: channel 1: rcvd close\\\\r\\\\ndebug3: channel 1: will not send data after close\\\\r\\\\ndebug2: channel 1: almost dead\\\\r\\\\ndebug2: channel 1: gc: notify user\\\\r\\\\ndebug2: channel 1: gc: user detached\\\\r\\\\ndebug2: channel 1: send close\\\\r\\\\ndebug2: channel 1: is dead\\\\r\\\\ndebug2: channel 1: garbage collecting\\\\r\\\\ndebug1: channel 1: free: client-session, nchannels 2\\\\r\\\\ndebug3: channel 1: status: The following connections are open:\\\\r\\\\n  #1 client-session (t4 r0 i3/0 o3/0 fd -1/-1 cc -1)\\\\r\\\\n\\\\r\\\\ndebug1: channel 0: free: /Users/myuser/.ssh/ctl-deploy-x.y.1.7-22, nchannels 1\\\\r\\\\ndebug3: channel 0: status: The following connections are open:\\\\r\\\\n\\\\r\\\\ndebug1: fd 0 clearing O_NONBLOCK\\\\r\\\\ndebug1: fd 1 clearing O_NONBLOCK\\\\r\\\\ndebug1: fd 2 clearing O_NONBLOCK\\\\r\\\\nTransferred: sent 59336, received 3356 bytes, in 0.1 seconds\\\\r\\\\nBytes per second: sent 915284.7, received 51767.8\\\\r\\\\ndebug1: Exit status 1\\\\r\\\\n\\\", \\r\\n    \\\"module_stdout\\\": \\\"\\\", \\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"become functionality\", \n    \"component_raw\": \"become functionality\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19729\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When using become with non-privileged user, tasks are failing with\\n\\n```\\n\\n{\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied\\\\njob-working-directory: error retrieving current directory: getcwd: cannot access parent directories: Permission denied\\\\nTraceback (most recent call last):\\\\n  File \\\\\\\"<stdin>\\\\\\\", line 10, in <module>\\\\n  File \\\\\\\"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py\\\\\\\", line 364, in abspath\\\\n    cwd = os.getcwd()\\\\nOSError: [Errno 13] Permission denied\\\\n\\\", \\\"module_stdout\\\": \\\"\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\"}\\n\\n```\\n\\n\\n\\napply to single task on or on include: for example osx_defaults\\n\\nProblem is I think, ansible should chdir to a world-readable directory before 'become' like / or /tmp. else python is trying its own actions later and failed because of permissions.\\n\\n\\n\\nNote: ansible user is non-root user with sudo capacity. both this user and root user have private home non-readable by other users.\", \n    \"title\": \"become: getcwd: cannot access parent directories: Permission denied\"\n  }, \n  \"19730\": {\n    \"ansible_version\": \"v2.2\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nyum_repository\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.2\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWhen removing a yum repository using the yum_repository module, the repository metadata (cache) is left behind in */var/cache/yum*. It would be nice if the module would make sure nothing is left behind.\", \n    \"component_name\": \"yum_repository\", \n    \"component_raw\": \"yum_repository\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19730\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/yum_repository.py\", \n    \"summary\": \"When removing a yum repository using the yum_repository module, the repository metadata (cache) is left behind in */var/cache/yum*. It would be nice if the module would make sure nothing is left behind.\", \n    \"title\": \"yum_repository does not remove repo cache when removing repo\"\n  }, \n  \"19731\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncopy module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nWhen using \\\"copy\\\" module to copy files to a specific file system that does not support chmod(), module fails.\\r\\nMy /etc/pve directory is a mount point of a file system not supporting chmod().\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n- name: Copy pve SSL cert and key\\r\\n  copy: src=/etc/pve/pve-ssl.key dest=/etc/pve/nodes/host106/pve-ssl.key remote_src=True\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\ncopy successful.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nfailed: [host106] (item=pve-ssl.key) => {\\\"failed\\\": true, \\\"item\\\": \\\"pve-ssl.key\\\", \\\"module_stderr\\\": \\\"Shared connection to XX.XX.XX.XX closed.\\\\r\\\\n\\\", \\\"module_stdout\\\": \\\"Traceback (most recent call last):\\\\r\\\\n  File \\\\\\\"/tmp/ansible_Vy2Iw6/ansible_module_copy.py\\\\\\\", line 364, in <module>\\\\r\\\\n    main()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_Vy2Iw6/ansible_module_copy.py\\\\\\\", line 342, in main\\\\r\\\\n    shutil.copy2(b_src, b_mysrc)\\\\r\\\\n  File \\\\\\\"/usr/lib/python2.7/shutil.py\\\\\\\", line 131, in copy2\\\\r\\\\n    copystat(src, dst)\\\\r\\\\n  File \\\\\\\"/usr/lib/python2.7/shutil.py\\\\\\\", line 100, in copystat\\\\r\\\\n    os.chmod(dst, mode)\\\\r\\\\nOSError: [Errno 38] Function not implemented: '/etc/pve/nodes/host106/tmptbef1A'\\\\r\\\\n\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"copy\", \n    \"component_raw\": \"copy module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19731\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/copy.py\", \n    \"summary\": \"When using \\\"copy\\\" module to copy files to a specific file system that does not support chmod(), module fails.\\n\\nMy /etc/pve directory is a mount point of a file system not supporting chmod().\", \n    \"title\": \"copy: do not chmod() if mode is not set\"\n  }, \n  \"19735\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [/root/ansible-playbooks/playbooks/library]\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nvmware_guest\\r\\nvmware_vm_facts\\r\\nPotentially, all vmware_* modules \\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = ['/root/ansible-playbooks/playbooks/library']\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nUbuntu 16.04 \\r\\nPython 2.7.12\\r\\npython-pyvmomi 5.5.0-2014.1.1-3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nAny attempt to use vmware_guest or vmware_vm_facts modules fail with SSL certificate check, while validate_certs is set to False False\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- name: Test VCenter \\r\\n  vmware_vm_facts:  \\r\\n    hostname: test\\r\\n    username: test\\r\\n    password: test\\r\\n  ignore_errors: True\\r\\n- name: Make sure guest 'test'  is down\\r\\n  vmware_guest:\\r\\n    validate_certs: False\\r\\n    hostname: test\\r\\n    username: test\\r\\n    password: test\\r\\n    name: \\\"test\\\"\\r\\n    state: poweredoff\\r\\n    folder: Test\\r\\n    datacenter: Test\\r\\n  delegate_to: 127.0.0.1\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nThe playbook should list the VM hosted on vcenter server, and check the \\\"test\\\" VM is down\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nErroc \\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [Test VCenter] ************************************************************\\r\\ntask path: /root/ansible-playbooks/playbooks/guest.yml:13\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/extras/cloud/vmware/vmware_vm_facts.py\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: root\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python && sleep 0'\\r\\nfatal: [127.0.0.1]: FAILED! => {\\r\\n\\\"changed\\\": false,\\r\\n\\\"failed\\\": true,\\r\\n\\\"invocation\\\": {\\r\\n\\\"module_args\\\": {\\r\\n\\\"hostname\\\": \\\"test\\\",\\r\\n\\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n\\\"username\\\": \\\"test\\\",\\r\\n\\\"validate_certs\\\": false\\r\\n},\\r\\n\\\"module_name\\\": \\\"vmware_vm_facts\\\"\\r\\n},\\r\\n\\\"msg\\\": \\\"[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)\\\"\\r\\n}\\r\\n...ignoring\\r\\n\\r\\nTASK [Make sure template is down] **********************************************\\r\\ntask path: /root/ansible-playbooks/playbooks/guest.yml:21\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/extras/cloud/vmware/vmware_guest.py\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: root\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python && sleep 0'\\r\\nfatal: [127.0.0.1 -> 127.0.0.1]: FAILED! => {\\r\\n\\\"changed\\\": false,\\r\\n\\\"failed\\\": true,\\r\\n\\\"invocation\\\": {\\r\\n\\\"module_name\\\": \\\"vmware_guest\\\"\\r\\n},\\r\\n\\\"module_stderr\\\": \\\"/usr/lib/python2.7/dist-packages/urllib3/connectionpool.py:794: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.html\\\\n InsecureRequestWarning)\\\\nTraceback (most recent call last):\\\\n File \\\"/tmp/ansible_nJHXC1/ansible_module_vmware_guest.py\\\", line 959, in \\\\n main()\\\\n File \\\"/tmp/ansible_nJHXC1/ansible_module_vmware_guest.py\\\", line 900, in main\\\\n pyv = PyVmomiHelper(module)\\\\n File \\\"/tmp/ansible_nJHXC1/ansible_module_vmware_guest.py\\\", line 179, in init\\\\n self.smartconnect()\\\\n File \\\"/tmp/ansible_nJHXC1/ansible_module_vmware_guest.py\\\", line 185, in smartconnect\\\\n self.content = connect_to_api(self.module)\\\\n File \\\"/tmp/ansible_nJHXC1/ansible_modlib.zip/ansible/module_utils/vmware.py\\\", line 196, in connect_to_api\\\\n File \\\"/usr/lib/python2.7/dist-packages/pyVim/connect.py\\\", line 590, in SmartConnect\\\\n path=path)\\\\n File \\\"/usr/lib/python2.7/dist-packages/pyVim/connect.py\\\", line 234, in Connect\\\\n keyFile, certFile)\\\\n File \\\"/usr/lib/python2.7/dist-packages/pyVim/connect.py\\\", line 319, in __Login\\\\n reraise(vim.fault.HostConnectFault, fault, traceback)\\\\n File \\\"/usr/lib/python2.7/dist-packages/pyVim/connect.py\\\", line 307, in __Login\\\\n content = si.RetrieveContent()\\\\n File \\\"/usr/lib/python2.7/dist-packages/pyVmomi/VmomiSupport.py\\\", line 566, in \\\\n self.f(*(self.args + (obj,) + args), **kwargs)\\\\n File \\\"/usr/lib/python2.7/dist-packages/pyVmomi/VmomiSupport.py\\\", line 375, in _InvokeMethod\\\\n return self._stub.InvokeMethod(self, info, args)\\\\n File \\\"/usr/lib/python2.7/dist-packages/pyVmomi/SoapAdapter.py\\\", line 1254, in InvokeMethod\\\\n conn.request('POST', self.path, req, headers)\\\\n File \\\"/usr/lib/python2.7/httplib.py\\\", line 1057, in request\\\\n self._send_request(method, url, body, headers)\\\\n File \\\"/usr/lib/python2.7/httplib.py\\\", line 1097, in _send_request\\\\n self.endheaders(body)\\\\n File \\\"/usr/lib/python2.7/httplib.py\\\", line 1053, in endheaders\\\\n self._send_output(message_body)\\\\n File \\\"/usr/lib/python2.7/httplib.py\\\", line 897, in _send_output\\\\n self.send(msg)\\\\n File \\\"/usr/lib/python2.7/httplib.py\\\", line 859, in send\\\\n self.connect()\\\\n File \\\"/usr/lib/python2.7/httplib.py\\\", line 1278, in connect\\\\n server_hostname=server_hostname)\\\\n File \\\"/usr/lib/python2.7/ssl.py\\\", line 353, in wrap_socket\\\\n _context=self)\\\\n File \\\"/usr/lib/python2.7/ssl.py\\\", line 601, in init\\\\n self.do_handshake()\\\\n File \\\"/usr/lib/python2.7/ssl.py\\\", line 830, in do_handshake\\\\n self._sslobj.do_handshake()\\\\npyVmomi.VmomiSupport.HostConnectFault: (vim.fault.HostConnectFault) {\\\\n dynamicType = ,\\\\n dynamicProperty = (vmodl.DynamicProperty) [],\\\\n msg = '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)',\\\\n faultCause = ,\\\\n faultMessage = (vmodl.LocalizableMessage) []\\\\n}\\\\n\\\",\\r\\n\\\"module_stdout\\\": \\\"\\\",\\r\\n\\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\\nvmware_vm_facts\\nPotentially, all vmware_* modules\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19735\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"Any attempt to use vmware_guest or vmware_vm_facts modules fail with SSL certificate check, while validate_certs is set to False False\", \n    \"title\": \"vmware_* modules SSL failed on Ubuntu 16.04 even with validate_certs=False\"\n  }, \n  \"19736\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nintegration tests\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\ndevel\\r\\n\\r\\n##### SUMMARY\\r\\nThe integration tests in this repo should follow current best practices. I'd recommend to run `ansible-lint` on them to ensure this.\\r\\nSince the integration tests don't follow the standard playbook/role layout one has to think about how to best run those.\", \n    \"component_name\": \"integration tests\", \n    \"component_raw\": \"integration tests\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19736\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The integration tests in this repo should follow current best practices. I'd recommend to run `ansible-lint` on them to ensure this.\\n\\nSince the integration tests don't follow the standard playbook/role layout one has to think about how to best run those.\", \n    \"title\": \"Run ansible-lint on integration tests\"\n  }, \n  \"19737\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ngit\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\ndevel\\r\\n\\r\\n##### SUMMARY\\r\\n* Split git tests in seperate files\\r\\n* Remove use of repo_depth_url\\r\\n* Use native yaml\\r\\n* Remove unnecessary remote/local clones\\r\\n\\r\\nThis cleans up the git tests a bit and tries to reduce the dependency on external repositories. This turns out to be hard, but I removed one already and reduces the number of remote calls by reusing local clones.\\r\\n\", \n    \"component_name\": \"git\", \n    \"component_raw\": \"git\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19737\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"* Split git tests in seperate files\\n\\n* Remove use of repo_depth_url\\n\\n* Use native yaml\\n\\n* Remove unnecessary remote/local clones\\n\\n\\n\\nThis cleans up the git tests a bit and tries to reduce the dependency on external repositories. This turns out to be hard, but I removed one already and reduces the number of remote calls by reusing local clones.\", \n    \"title\": \"Cleanup git tests\"\n  }, \n  \"19739\": {\n    \"ansible_version\": \"ansible 2.3.0 (module-spectrum-device f1c081a5f4) last updated 2016/12/29 190809 (GMT -200)\\nconfig file = /home/renato/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nspectrum_device\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (module-spectrum-device f1c081a5f4) last updated 2016/12/29 19:08:09 (GMT -200)\\r\\n  config file = /home/renato/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThis new module allows to add and remove devices to CA Spectrum using the RESTful api. For now, it does not update attributes on the model if it already exists. The operations are restricted to the landscape server specified as a parameter to the module.\\r\\n\", \n    \"component_name\": \"spectrum_device\", \n    \"component_raw\": \"spectrum_device\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19739\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/monitoring/spectrum_device.py\", \n    \"summary\": \"This new module allows to add and remove devices to CA Spectrum using the RESTful api. For now, it does not update attributes on the model if it already exists. The operations are restricted to the landscape server specified as a parameter to the module.\", \n    \"title\": \"add spectrum_device module\"\n  }, \n  \"19740\": {\n    \"ansible_version\": \"ansible 2.3.0 (openbsd_pkg-namelist 5a6007bbfa) last updated 2016/12/29 221506 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"This commit also adds the module to DEFAULT_SQUASH_ACTIONS which is\\r\\npossible with this change.\\r\\n\\r\\nThe module still calls the pkg_* tools once per name internally, so the only\\r\\ndifference is less invocations of the module itself when using with_items.\\r\\n##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nopenbsd_pkg\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (openbsd_pkg-namelist 5a6007bbfa) last updated 2016/12/29 22:15:06 (GMT +200)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThere have been more than one instance of people running into problems because openbsd_pkg does not support a list of names:\\r\\nhttps://github.com/ansible/ansible/issues/15742\\r\\nhttps://github.com/ansible/ansible-modules-core/issues/5595\\r\\n\\r\\nWhile the latter issue lead to @bcoca removing the \\\"package\\\" wrapper from the DEFAULT_SQUASH_ACTIONS list effectively fixing the problems, it seems to me the package managing modules are almost expected to support the list input nowadays.\\r\\n\\r\\nThis change adds such support to openbsd_pkg and also enables it in DEFAULT_SQUASH_ACTIONS.\\r\\n\\r\\nThere is at least one drawback with this change: If one of the names in the supplied list fails then the whole module will throw a failure, hiding the fact that the remaining names might very well have been properly handled. This might be confusing.\\r\\n\\r\\nAs stated in the commit message it does not make the module run any of the actual pkg_* tools less amount of times. This is because I already find it quite complex to handle differences in pkg_* tool behaviour with different package names without having to think about what multiple packages at the same time throws in the mix. \\r\\n\\r\\nGiven this playbook:\\r\\n```\\r\\n- hosts: openbsd_pkg-tests\\r\\n  tasks:\\r\\n  - name: install basic packages\\r\\n    action: openbsd_pkg name={{ item }} state=present\\r\\n    with_items:\\r\\n        - nmap-7.40\\r\\n        - bwm-ng\\r\\n        - mtr--\\r\\n        - python%3.5\\r\\n```\\r\\n\\r\\nBefore:\\r\\n```\\r\\n$ ansible-playbook -c ssh -u root -i hosts with-items.yaml                                                                                   \\r\\n\\r\\nPLAY [openbsd_pkg-tests] ***********************************************************************************************************************************\\r\\n\\r\\nTASK [Gathering Facts] *************************************************************************************************************************************\\r\\nok: [192.168.1.62]\\r\\n\\r\\nTASK [install basic packages] ******************************************************************************************************************************\\r\\nchanged: [192.168.1.62] => (item=nmap-7.40)\\r\\nchanged: [192.168.1.62] => (item=bwm-ng)\\r\\nchanged: [192.168.1.62] => (item=mtr--)\\r\\nchanged: [192.168.1.62] => (item=python%3.5)\\r\\n\\r\\nPLAY RECAP *************************************************************************************************************************************************\\r\\n192.168.1.62               : ok=2    changed=1    unreachable=0    failed=0   \\r\\n```\\r\\nAfter:\\r\\n```\\r\\n$ time ansible-playbook -c ssh -u root -i hosts with-items.yaml  \\r\\n\\r\\nPLAY [openbsd_pkg-tests] ***********************************************************************************************************************************\\r\\n\\r\\nTASK [Gathering Facts] *************************************************************************************************************************************\\r\\nok: [192.168.1.62]\\r\\n\\r\\nTASK [install basic packages] ******************************************************************************************************************************\\r\\nchanged: [192.168.1.62] => (item=[u'nmap-7.40', u'bwm-ng', u'mtr--', u'python%3.5'])\\r\\n\\r\\nPLAY RECAP *************************************************************************************************************************************************\\r\\n192.168.1.62               : ok=2    changed=1    unreachable=0    failed=0   \\r\\n```\\r\\n\\r\\nI would appreciate input from at least @bcoca on this. Maby @jasperla would be interested as well.\", \n    \"component_name\": \"openbsd_pkg\", \n    \"component_raw\": \"openbsd_pkg\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19740\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/openbsd_pkg.py\", \n    \"summary\": \"There have been more than one instance of people running into problems because openbsd_pkg does not support a list of names:\\n\\nhttps://github.com/ansible/ansible/issues/15742\\n\\nhttps://github.com/ansible/ansible-modules-core/issues/5595\\n\\n\\n\\nWhile the latter issue lead to @bcoca removing the \\\"package\\\" wrapper from the DEFAULT_SQUASH_ACTIONS list effectively fixing the problems, it seems to me the package managing modules are almost expected to support the list input nowadays.\\n\\n\\n\\nThis change adds such support to openbsd_pkg and also enables it in DEFAULT_SQUASH_ACTIONS.\\n\\n\\n\\nThere is at least one drawback with this change: If one of the names in the supplied list fails then the whole module will throw a failure, hiding the fact that the remaining names might very well have been properly handled. This might be confusing.\\n\\n\\n\\nAs stated in the commit message it does not make the module run any of the actual pkg_* tools less amount of times. This is because I already find it quite complex to handle differences in pkg_* tool behaviour with different package names without having to think about what multiple packages at the same time throws in the mix. \\n\\n\\n\\nGiven this playbook:\\n\\n```\\n\\n- hosts: openbsd_pkg-tests\\n\\n  tasks:\\n\\n  - name: install basic packages\\n\\n    action: openbsd_pkg name={{ item }} state=present\\n\\n    with_items:\\n\\n        - nmap-7.40\\n\\n        - bwm-ng\\n\\n        - mtr--\\n\\n        - python%3.5\\n\\n```\\n\\n\\n\\nBefore:\\n\\n```\\n\\n$ ansible-playbook -c ssh -u root -i hosts with-items.yaml                                                                                   \\n\\n\\n\\nPLAY [openbsd_pkg-tests] ***********************************************************************************************************************************\\n\\n\\n\\nTASK [Gathering Facts] *************************************************************************************************************************************\\n\\nok: [192.168.1.62]\\n\\n\\n\\nTASK [install basic packages] ******************************************************************************************************************************\\n\\nchanged: [192.168.1.62] => (item=nmap-7.40)\\n\\nchanged: [192.168.1.62] => (item=bwm-ng)\\n\\nchanged: [192.168.1.62] => (item=mtr--)\\n\\nchanged: [192.168.1.62] => (item=python%3.5)\\n\\n\\n\\nPLAY RECAP *************************************************************************************************************************************************\\n\\n192.168.1.62               : ok=2    changed=1    unreachable=0    failed=0   \\n\\n```\\n\\nAfter:\\n\\n```\\n\\n$ time ansible-playbook -c ssh -u root -i hosts with-items.yaml  \\n\\n\\n\\nPLAY [openbsd_pkg-tests] ***********************************************************************************************************************************\\n\\n\\n\\nTASK [Gathering Facts] *************************************************************************************************************************************\\n\\nok: [192.168.1.62]\\n\\n\\n\\nTASK [install basic packages] ******************************************************************************************************************************\\n\\nchanged: [192.168.1.62] => (item=[u'nmap-7.40', u'bwm-ng', u'mtr--', u'python%3.5'])\\n\\n\\n\\nPLAY RECAP *************************************************************************************************************************************************\\n\\n192.168.1.62               : ok=2    changed=1    unreachable=0    failed=0   \\n\\n```\\n\\n\\n\\nI would appreciate input from at least @bcoca on this. Maby @jasperla would be interested as well.\", \n    \"title\": \"openbsd_pkg: make \\\"name\\\" take a list.\"\n  }, \n  \"19741\": {\n    \"ansible_version\": \"v2.2+\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\ntemplate\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.2+\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nBeing able to template a file inline (in the playbook itself) would be super-useful in those cases the content is very short and self-contained (e.g. a templated list, or templated content).\\r\\n\\r\\nAlso the `content:` option documentation in the **copy** module refers the **template** module if you need templated content.:\\r\\n```\\r\\nWhen used instead of 'src', sets the contents of a file directly to the specified value. This is for\\r\\nsimple values, for anything complex or with formatting please switch to the template module.\\r\\n```\\r\\n\", \n    \"component_name\": \"template\", \n    \"component_raw\": \"template\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19741\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/template.py\", \n    \"summary\": \"Being able to template a file inline (in the playbook itself) would be super-useful in those cases the content is very short and self-contained (e.g. a templated list, or templated content).\\n\\n\\n\\nAlso the `content:` option documentation in the **copy** module refers the **template** module if you need templated content.:\\n\\n```\\n\\nWhen used instead of 'src', sets the contents of a file directly to the specified value. This is for\\n\\nsimple values, for anything complex or with formatting please switch to the template module.\\n\\n```\", \n    \"title\": \"Add content option to template module\"\n  }, \n  \"19743\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 368a837481) last updated 2016/11/03 133104 (GMT +200)\\nlib/ansible/modules/core (detached HEAD 7cc4d3fe04) last updated 2016/11/03 133210 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD e4bc618956) last updated 2016/11/03 133236 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @johnnynotsolucky on November 3, 2016 11:51_\\n\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndocker_login\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel 368a837481) last updated 2016/11/03 13:31:04 (GMT +200)\\r\\n  lib/ansible/modules/core: (detached HEAD 7cc4d3fe04) last updated 2016/11/03 13:32:10 (GMT +200)\\r\\n  lib/ansible/modules/extras: (detached HEAD e4bc618956) last updated 2016/11/03 13:32:36 (GMT +200)\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n - OS X 10.11.6\\r\\n - Linux 4.4.23-31.51.amzn1.x86_64 x86_64\\r\\n\\r\\n##### SUMMARY\\r\\ndocker_login module throws a `NameError` when validating the task parameters for Docker Hub authentication.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nRun a docker_login task\\r\\n\\r\\n```\\r\\ntasks:\\r\\n  - docker_login:\\r\\n      username: <username>\\r\\n      password: <password>\\r\\n      email: <email>\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nTo be logged into Docker Hub\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nThe error was: NameError: global name 'module' is not defined\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/var/folders/74/y_0xp6zs31b8fxxl3csvqw100000gp/T/ansible_NfSlXR/ansible_module_docker_login.py\\\\\\\", line 329, in <module>\\\\n    main()\\\\n  File \\\\\\\"/var/folders/74/y_0xp6zs31b8fxxl3csvqw100000gp/T/ansible_NfSlXR/ansible_module_docker_login.py\\\\\\\", line 317, in main\\\\n    if module.params['state'] == 'present' and module.params['registry_url'] == DEFAULT_DOCKER_REGISTRY and not module.params['email']:\\\\nNameError: global name 'module' is not defined\\\\n\\\", \\\"module_stdout\\\": \\\"\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\"}\\r\\n```\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5466_\", \n    \"component_name\": \"docker_login\", \n    \"component_raw\": \"docker_login\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19743\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_login.py\", \n    \"summary\": \"docker_login module throws a `NameError` when validating the task parameters for Docker Hub authentication.\", \n    \"title\": \"NameError when running docker_login task against Docker Hub\"\n  }, \n  \"19744\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 368a837481) last updated 2016/11/03 133104 (GMT +200)\\nlib/ansible/modules/core (detached HEAD 7cc4d3fe04) last updated 2016/11/03 133210 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD e4bc618956) last updated 2016/11/03 133236 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndocker_login\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel 368a837481) last updated 2016/11/03 13:31:04 (GMT +200)\\r\\n  lib/ansible/modules/core: (detached HEAD 7cc4d3fe04) last updated 2016/11/03 13:32:10 (GMT +200)\\r\\n  lib/ansible/modules/extras: (detached HEAD e4bc618956) last updated 2016/11/03 13:32:36 (GMT +200)\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\n`module` is a property of the `client` object.\\r\\n\\r\\nBefore change\\r\\n```\\r\\nTASK [docker_login] ************************************************************\\r\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: NameError: global name 'module' is not defined\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/var/folders/74/y_0xp6zs31b8fxxl3csvqw100000gp/T/ansible_6w8AQQ/ansible_module_docker_login.py\\\\\\\", line 329, in <module>\\\\n    main()\\\\n  File \\\\\\\"/var/folders/74/y_0xp6zs31b8fxxl3csvqw100000gp/T/ansible_6w8AQQ/ansible_module_docker_login.py\\\\\\\", line 317, in main\\\\n    if client.module.params['state'] == 'present' and client.module.params['registry_url'] == DEFAULT_DOCKER_REGISTRY and not module.params['email']:\\\\nNameError: global name 'module' is not defined\\\\n\\\", \\\"module_stdout\\\": \\\"\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\"}\\r\\n```\\r\\n\\r\\nAfter change with `email` parameter\\r\\n```\\r\\nTASK [docker_login] ************************************************************\\r\\nok: [localhost]\\r\\n```\\r\\n\\r\\nAfter change without `email` parameter\\r\\n```\\r\\nTASK [docker_login] ************************************************************\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"'email' is required when logging into DockerHub\\\"}\\r\\n```\\r\\n\\r\\nFixes #19743\\r\\n\\r\\nEdit: Updated issue reference after migrate.\", \n    \"component_name\": \"docker_login\", \n    \"component_raw\": \"docker_login\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19744\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"backport\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_login.py\", \n    \"summary\": \"`module` is a property of the `client` object.\\n\\n\\n\\nBefore change\\n\\n```\\n\\nTASK [docker_login] ************************************************************\\n\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: NameError: global name 'module' is not defined\\n\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/var/folders/74/y_0xp6zs31b8fxxl3csvqw100000gp/T/ansible_6w8AQQ/ansible_module_docker_login.py\\\\\\\", line 329, in <module>\\\\n    main()\\\\n  File \\\\\\\"/var/folders/74/y_0xp6zs31b8fxxl3csvqw100000gp/T/ansible_6w8AQQ/ansible_module_docker_login.py\\\\\\\", line 317, in main\\\\n    if client.module.params['state'] == 'present' and client.module.params['registry_url'] == DEFAULT_DOCKER_REGISTRY and not module.params['email']:\\\\nNameError: global name 'module' is not defined\\\\n\\\", \\\"module_stdout\\\": \\\"\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\"}\\n\\n```\\n\\n\\n\\nAfter change with `email` parameter\\n\\n```\\n\\nTASK [docker_login] ************************************************************\\n\\nok: [localhost]\\n\\n```\\n\\n\\n\\nAfter change without `email` parameter\\n\\n```\\n\\nTASK [docker_login] ************************************************************\\n\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"'email' is required when logging into DockerHub\\\"}\\n\\n```\\n\\n\\n\\nFixes #19743\\n\\n\\n\\nEdit: Updated issue reference after migrate.\", \n    \"title\": \"Bugfix for docker_login access to module property\"\n  }, \n  \"19746\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/sh/.ansible.cfg\\nconfigured module search path = [/home/sh/repo/ansible/library]\", \n    \"body\": \"##### ISSUE TYPE\\r\\nBug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nsynchronize module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/sh/.ansible.cfg\\r\\n  configured module search path = ['/home/sh/repo/ansible/library']\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n```\\r\\n[ssh_connection]\\r\\n; Shorten ansible's control path to avoid UNIX socket failure due long host names\\r\\ncontrol_path=%(directory)s/%%h-%%p-%%r\\r\\npipelining=True\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nAnsible OS: Manjaro Linux\\r\\n```\\r\\n$ uname -a\\r\\nLinux sh.local 4.4.33-1-MANJARO #1 SMP PREEMPT Fri Nov 18 18:06:44 UTC 2016 x86_64 GNU/Linux\\r\\n```\\r\\nRemote OS: Debian GNU/Linux 8 (jessie)\\r\\n```\\r\\n$ uname -a\\r\\nLinux remote.local 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u1 (2016-09-03) x86_64 GNU/Linux\\r\\n```\\r\\n##### SUMMARY\\r\\nI use become in a task with the synchronize module to retrieve a directory from a remote host (remote.local).\\r\\nThis results in a password prompt from sudo, probably because the become user is not passed to the executed command.\\r\\n\\r\\nActuelly if I add the parameter `rsync_path = 'sudo -u {{ ansible_user_id }} rsync'` to the synchronize task, it works just fine.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nWhen the task is executed the following command is executed by ansible:\\r\\n```\\r\\ncmd: /usr/bin/rsync --delay-updates -F --compress --dry-run --archive --rsh 'ssh  -S none -o StrictHostKeyChecking=no' --rsync-path=\\\"sudo rsync\\\" --out-format='<<CHANGED>>%i %n%L' \\\"remote.local:/home/data-user/data-dir/\\\" \\\"/home/sh/data-dir\\\"\\r\\n```\\r\\n\\r\\nPlaybook:\\r\\n```yaml\\r\\n- hosts: remote.local\\r\\n  become: yes\\r\\n  become_user: data-user\\r\\n  tasks:\\r\\n    - name: Retrieve data-dir from remote\\r\\n      synchronize:\\r\\n        mode: pull\\r\\n        src: '{{ ansible_user_dir }}/data-dir/'\\r\\n        dest: '/home/sh/data-dir'\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nI expect rsync to retrieve the data-dir from the remote host without getting a password prompt.\\r\\nAt this point it's import to know that on the remote host, my personal user is allowed to execute any command for the user data-user, e.g. `sudo -u data-user rsync ...`.\\r\\n\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nThis results in a password prompt from sudo, which is not the result I expected:\\r\\n```\\r\\nmsg: \\r\\nWe trust you have received the usual lecture from the local System\\r\\nAdministrator. It usually boils down to these three things:\\r\\n\\r\\n    #1) Respect the privacy of others.\\r\\n    #2) Think before you type.\\r\\n    #3) With great power comes great responsibility.\\r\\n\\r\\nsudo: no tty present and no askpass program specified\\r\\n...\\r\\n```\\r\\n\", \n    \"component_name\": \"synchronize\", \n    \"component_raw\": \"synchronize module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19746\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/synchronize.py\", \n    \"summary\": \"I use become in a task with the synchronize module to retrieve a directory from a remote host (remote.local).\\n\\nThis results in a password prompt from sudo, probably because the become user is not passed to the executed command.\\n\\n\\n\\nActuelly if I add the parameter `rsync_path = 'sudo -u {{ ansible_user_id }} rsync'` to the synchronize task, it works just fine.\", \n    \"title\": \"become breaks synchronize module\"\n  }, \n  \"19748\": {\n    \"ansible_version\": \"2.2.0.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\npip package\\r\\nhttps://pypi.python.org/pypi/ansible/2.2.0.0\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\npip package contains old code, while stable-2.2 branch was updated after package release\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nInstall `ansible` package with `pip install ansible`\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nEncrypted inventory files well included\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nhttps://github.com/ansible/ansible/issues/18355 still reproduced\\r\\n\", \n    \"component_name\": \"pip package\", \n    \"component_raw\": \"pip package\\nhttps://pypi.python.org/pypi/ansible/2.2.0.0\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19748\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"pip package contains old code, while stable-2.2 branch was updated after package release\", \n    \"title\": \"pip package contains old code of stable-2.2 branch\"\n  }, \n  \"19750\": {\n    \"ansible_version\": \"N/A\", \n    \"body\": \"_From @winggundamth on July 21, 2016 14:13_\\n\\n##### ISSUE TYPE\\n\\nBug Report\\n##### COMPONENT NAME\\n\\nos_floating_ip\\n##### ANSIBLE VERSION\\n\\nN/A\\n##### SUMMARY\\n\\nI have this use case http://blog.aaronorosen.com/?p=320 to Implementing High Availability Instances with Neutron using VRRP. This need to create fixed-ip and assign floating-ip to fixed-ip that just created with these command\\n\\n``` bash\\nneutron port-create --fixed-ip ip_address=192.168.1.2 dev-network\\nneutron floatingip-create --port-id=$(neutron port-list --fixed-ips ip_address=192.168.1.2 --format value -c id) external-network\\n```\\n\\nBut when I use this task\\n\\n``` yml\\n- os_floating_ip:\\n     state: present\\n     reuse: yes\\n     network: dev-network\\n     fixed_address: 192.168.1.2\\n```\\n\\nI got this error\\n\\n```\\nfatal: [haproxy-dev-1 -> 127.0.0.1]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"missing required arguments: server\\\"}\\n```\\n\\nI succeed by using `neutron floatingip-create` command so it should accept assign floating without server parameter\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#4230_\", \n    \"component_name\": \"os_floating_ip\", \n    \"component_raw\": \"os_floating_ip\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19750\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_floating_ip.py\", \n    \"summary\": \"I have this use case http://blog.aaronorosen.com/?p=320 to Implementing High Availability Instances with Neutron using VRRP. This need to create fixed-ip and assign floating-ip to fixed-ip that just created with these command\\n\\n``` bash\\nneutron port-create --fixed-ip ip_address=192.168.1.2 dev-network\\nneutron floatingip-create --port-id=$(neutron port-list --fixed-ips ip_address=192.168.1.2 --format value -c id) external-network\\n```\\n\\nBut when I use this task\\n\\n``` yml\\n- os_floating_ip:\\n     state: present\\n     reuse: yes\\n     network: dev-network\\n     fixed_address: 192.168.1.2\\n```\\n\\nI got this error\\n\\n```\\nfatal: [haproxy-dev-1 -> 127.0.0.1]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"missing required arguments: server\\\"}\\n```\\n\\nI succeed by using `neutron floatingip-create` command so it should accept assign floating without server parameter\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#4230_\", \n    \"title\": \"os_floating_ip shouldn't required server parameter in some cases\"\n  }, \n  \"19751\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\\nI also tester with the last devel version of the related python file (cloud/amazon/rds.py)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n`cloud/amazon/rds`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\nI also tester with the last devel version of the related python file (`cloud/amazon/rds.py`)\\r\\n\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\nDefault settings, just provided exported aws variables (`AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nI created a RDS with ansible `rds_module` regarding the doc http://docs.ansible.com/ansible/rds_module.html\\r\\nReally simple one with `instance_type: db.t2.micro`.\\r\\n\\r\\nAfter created completed I desided to test a modify with the `wait` flag to yes to modify `instance_type` (also use `apply_immediately: yes`).\\r\\n\\r\\n  * Expected behavior : ansible wait during the RDS is not in available state.\\r\\n  * Behavior : Ansible didn't wait whereas the instance is not in available state on the aws console.\\r\\n\\r\\nThis issue seems to be only with modify, works find for create and delete action.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nNote : I'm in region Irlande `eu-west-1`\\r\\n\\r\\nAfter adding some debug logs here https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/cloud/amazon/rds.py#L652\\r\\n\\r\\nI found that amazon don't instentanly put the RDS instance in `modifying` state, it take several secondes.\\r\\n\\r\\nSo during the modify, when we go through the `await_resource` methode, the state given by `resource.status` is already in `available` state.\\r\\nThe methode don't go in the while loop and stop to wait.\\r\\n\\r\\nMy ansible config :\\r\\n```\\r\\n  - rds:\\r\\n      command: modify\\r\\n      instance_name: \\\"{{ instance_name }}\\\"\\r\\n      region: eu-west-1\\r\\n      apply_immediately: yes \\r\\n      wait: yes \\r\\n      instance_type: db.t2.small\\r\\n      wait_timeout: 600\\r\\n```\\r\\n\\r\\nMy crappy debug code to have some logs :\\r\\n\\r\\n\\r\\n\\r\\n```\\r\\ndef await_resource(conn, resource, status, module):\\r\\n+    import datetime\\r\\n+    for i in range(1,100):\\r\\n+        resource = conn.get_db_instance(resource.name)\\r\\n+        _now =  datetime.datetime.strftime(datetime.datetime.now(), '%H:%M:%S')\\r\\n+        with open('/tmp/log', 'a+') as f:\\r\\n+           f.write(\\\"STATUS %s %s waithing for %s\\\\n\\\" % (_now, resource.status, status))\\r\\n+        time.sleep(0.5)\\r\\n    wait_timeout = module.params.get('wait_timeout') + time.time()\\r\\n    while wait_timeout > time.time() and resource.status != status:\\r\\n```\\r\\n\\r\\nThe result :\\r\\n\\r\\n```\\r\\nSTATUS  11:51:39 available waithing for available\\r\\n...\\r\\nSTATUS  11:51:40 modifying waithing for available\\r\\n```\\r\\n\\r\\n```\\r\\nSTATUS  11:57:23 available waithing for available\\r\\n...\\r\\nSTATUS  11:57:37 modifying waithing for available\\r\\n```\\r\\n\\r\\nThe gap time before state change is kind of random.\\r\\n\\r\\n**Idea of fix** :\\r\\n  * Add a static wait time before checking the status\\r\\n  * Add a `delay` parameter like it's done in the `wait_for` module (http://docs.ansible.com/ansible/wait_for_module.html)\\r\\n  * Check if we are going through `modifying` status before wait\\r\\n\\r\\n\\r\\nFor people facing the same issue who want a workaround, I'm using that : \\r\\n\\r\\n```\\r\\n  # Wait a bit\\r\\n  - local_action: wait_for path=\\\".\\\" state=present delay=20\\r\\n\\r\\n  # Waiting end of modifying state\\r\\n  - rds:\\r\\n      command: facts\\r\\n      instance_name: \\\"{{ instance_name }}\\\"\\r\\n      region: eu-west-1\\r\\n    register: new_database_facts\\r\\n    until: new_database_facts.instance.status != \\\"modifying\\\"\\r\\n    retries: 90\\r\\n    delay: 10\\r\\n```\", \n    \"component_name\": \"cloud/amazon/rds\", \n    \"component_raw\": \"`cloud/amazon/rds`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19751\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/rds.py\", \n    \"summary\": \"I created a RDS with ansible `rds_module` regarding the doc http://docs.ansible.com/ansible/rds_module.html\\n\\nReally simple one with `instance_type: db.t2.micro`.\\n\\n\\n\\nAfter created completed I desided to test a modify with the `wait` flag to yes to modify `instance_type` (also use `apply_immediately: yes`).\\n\\n\\n\\n  * Expected behavior : ansible wait during the RDS is not in available state.\\n\\n  * Behavior : Ansible didn't wait whereas the instance is not in available state on the aws console.\\n\\n\\n\\nThis issue seems to be only with modify, works find for create and delete action.\", \n    \"title\": \"cloud/amazon/rds don't wait while using modify and the wait param\"\n  }, \n  \"19752\": {\n    \"ansible_version\": \"v2.2+\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\ncopy / template\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.2+\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\nThe **copy** module documentation implies that `content:` only works\\r\\nfor 'simple values' and for complex stuff you need the **template**\\r\\nmodule, but that is an understatement. You can use **copy** to template\\r\\nanything you desire.\\r\\n\\r\\nSo I changed the wording, added an example, and also added a note\\r\\nto the template module that the **copy** module could be used for\\r\\n'inline templating'.\\r\\n\\r\\nThis fixes #19741.\", \n    \"component_name\": \"copy / template\", \n    \"component_raw\": \"copy / template\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19752\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"core_review\", \n      \"docs\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/copy.py\", \n    \"summary\": \"The **copy** module documentation implies that `content:` only works\\n\\nfor 'simple values' and for complex stuff you need the **template**\\n\\nmodule, but that is an understatement. You can use **copy** to template\\n\\nanything you desire.\\n\\n\\n\\nSo I changed the wording, added an example, and also added a note\\n\\nto the template module that the **copy** module could be used for\\n\\n'inline templating'.\\n\\n\\n\\nThis fixes #19741.\", \n    \"title\": \"Add example of templating inline using copy module\"\n  }, \n  \"19753\": {\n    \"ansible_version\": \"v2.2+\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nyum_repository\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.2+\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\nThis PR improves the documentation so that it is clear that this module does\\r\\nnot clean the repository metadata cache on removal, and add an example\\r\\nnotification handler to the removal example as an extra reminder.\\r\\n\\r\\nThis fixes #19730\", \n    \"component_name\": \"yum_repository\", \n    \"component_raw\": \"yum_repository\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19753\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/yum_repository.py\", \n    \"summary\": \"This PR improves the documentation so that it is clear that this module does\\n\\nnot clean the repository metadata cache on removal, and add an example\\n\\nnotification handler to the removal example as an extra reminder.\\n\\n\\n\\nThis fixes #19730\", \n    \"title\": \"Inform user that the yum metadata cache remains\"\n  }, \n  \"19754\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nCore Inventory\\r\\n\\r\\n##### CONFIGURATION\\r\\nDefault\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nAny\\r\\n\\r\\n##### SUMMARY\\r\\nI'm use dynamic naming for Inventory host groups with servers like\\r\\n\\r\\n```\\r\\n[ubuntu-servers]\\r\\n[01:25]-datacenter.example.com\\r\\n\\r\\n```\\r\\n\\r\\nSometimes, i need to have params/vars for that host group like:\\r\\n\\r\\n```\\r\\n[es-cluster-servers]\\r\\n01-datacenter.example.com some_variable_like_external_ip_of_some_container=\\\"192.168.111.1\\\"\\r\\n02-datacenter.example.com some_variable_like_external_ip_of_some_container=\\\"192.168.111.2\\\"\\r\\n03-datacenter.example.com some_variable_like_external_ip_of_some_container=\\\"192.168.111.3\\\"\\r\\n...etc\\r\\n```\\r\\n\\r\\nI want to use dynamic mappings like in ubuntu-servers group, for example its can to be looks like:\\r\\n\\r\\n```\\r\\n[es-cluster-servers]\\r\\n[01:25]-datacenter.example.com external_ip_of_some_container=\\\"192.168.111.[01:25]\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nWorked dynamic variables in Inventory Hostgroups\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nI cannot find way to use dynamic variables in Inventory Hostgroups\\r\\n\\r\\nPS. If we have some way for that, please give answer.\", \n    \"component_name\": \"core inventory\", \n    \"component_raw\": \"Core Inventory\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19754\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I'm use dynamic naming for Inventory host groups with servers like\\n\\n\\n\\n```\\n\\n[ubuntu-servers]\\n\\n[01:25]-datacenter.example.com\\n\\n\\n\\n```\\n\\n\\n\\nSometimes, i need to have params/vars for that host group like:\\n\\n\\n\\n```\\n\\n[es-cluster-servers]\\n\\n01-datacenter.example.com some_variable_like_external_ip_of_some_container=\\\"192.168.111.1\\\"\\n\\n02-datacenter.example.com some_variable_like_external_ip_of_some_container=\\\"192.168.111.2\\\"\\n\\n03-datacenter.example.com some_variable_like_external_ip_of_some_container=\\\"192.168.111.3\\\"\\n\\n...etc\\n\\n```\\n\\n\\n\\nI want to use dynamic mappings like in ubuntu-servers group, for example its can to be looks like:\\n\\n\\n\\n```\\n\\n[es-cluster-servers]\\n\\n[01:25]-datacenter.example.com external_ip_of_some_container=\\\"192.168.111.[01:25]\\\"\\n\\n```\", \n    \"title\": \"Possible to use dynamic variables mapping [00:xx] in Inventory HostGroups\"\n  }, \n  \"19755\": {\n    \"ansible_version\": \"v2.2.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nsetup\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.2.0\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nRHEL 6.7 on z/VM 6.3.0\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nThe setup module does not provide the same data-structure on IBM S/390 as on other Linux architectures.\\r\\n\\r\\nNormal Linux system:\\r\\n```yaml\\r\\n\\\"ansible_processor\\\": [\\r\\n    \\\"GenuineIntel\\\",\\r\\n    \\\"Intel(R) Xeon(R) CPU          E5504  @ 2.00GHz\\\",\\r\\n    \\\"GenuineIntel\\\",\\r\\n    \\\"Intel(R) Xeon(R) CPU          E5504  @ 2.00GHz\\\",\\r\\n    \\\"GenuineIntel\\\",\\r\\n    \\\"Intel(R) Xeon(R) CPU          E5504  @ 2.00GHz\\\",\\r\\n    \\\"GenuineIntel\\\",\\r\\n    \\\"Intel(R) Xeon(R) CPU          E5504  @ 2.00GHz\\\"\\r\\n],\\r\\n\\\"ansible_processor_cores\\\": 2,\\r\\n\\\"ansible_processor_count\\\": 2,\\r\\n\\\"ansible_processor_threads_per_core\\\": 1,\\r\\n\\\"ansible_processor_vcpus\\\": 4,\\r\\n```\\r\\n\\r\\nOn IBM S/390 one gets:\\r\\n```yaml\\r\\n\\\"ansible_processor\\\": [\\r\\n    \\\"IBM/S390\\\"\\r\\n],\\r\\n\\\"ansible_processor_cores\\\": 2,\\r\\n```\\r\\n\\r\\nIn itself I think the default data-structure was a bad choice, as it is a list composed of 2 entries per CPU.\\r\\nBut since that's what it is now, we should keep other systems using the same standard (or break with the standard and fix it for real).\\r\\n\\r\\nAs a result of this, I cannot list the processor type on all our systems by using `ansible_processor[1]`.\", \n    \"component_name\": \"setup\", \n    \"component_raw\": \"setup\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19755\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/setup.py\", \n    \"summary\": \"The setup module does not provide the same data-structure on IBM S/390 as on other Linux architectures.\\n\\n\\n\\nNormal Linux system:\\n\\n```yaml\\n\\n\\\"ansible_processor\\\": [\\n\\n    \\\"GenuineIntel\\\",\\n\\n    \\\"Intel(R) Xeon(R) CPU          E5504  @ 2.00GHz\\\",\\n\\n    \\\"GenuineIntel\\\",\\n\\n    \\\"Intel(R) Xeon(R) CPU          E5504  @ 2.00GHz\\\",\\n\\n    \\\"GenuineIntel\\\",\\n\\n    \\\"Intel(R) Xeon(R) CPU          E5504  @ 2.00GHz\\\",\\n\\n    \\\"GenuineIntel\\\",\\n\\n    \\\"Intel(R) Xeon(R) CPU          E5504  @ 2.00GHz\\\"\\n\\n],\\n\\n\\\"ansible_processor_cores\\\": 2,\\n\\n\\\"ansible_processor_count\\\": 2,\\n\\n\\\"ansible_processor_threads_per_core\\\": 1,\\n\\n\\\"ansible_processor_vcpus\\\": 4,\\n\\n```\\n\\n\\n\\nOn IBM S/390 one gets:\\n\\n```yaml\\n\\n\\\"ansible_processor\\\": [\\n\\n    \\\"IBM/S390\\\"\\n\\n],\\n\\n\\\"ansible_processor_cores\\\": 2,\\n\\n```\\n\\n\\n\\nIn itself I think the default data-structure was a bad choice, as it is a list composed of 2 entries per CPU.\\n\\nBut since that's what it is now, we should keep other systems using the same standard (or break with the standard and fix it for real).\\n\\n\\n\\nAs a result of this, I cannot list the processor type on all our systems by using `ansible_processor[1]`.\", \n    \"title\": \"ansible_processor on IBM S/390 not compatible with others\"\n  }, \n  \"19756\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"Doc update typo\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\natomic_image.py\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n-          - Start or Stop the continer\\r\\n+          - Start or Stop the container\\r\\n```\", \n    \"component_name\": \"atomic_image.py\", \n    \"component_raw\": \"atomic_image.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19756\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"docs\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/atomic/atomic_image.py\", \n    \"summary\": \"```\\n\\n-          - Start or Stop the continer\\n\\n+          - Start or Stop the container\\n\\n```\", \n    \"title\": \"Update atomic_image.py\"\n  }, \n  \"19757\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\ncore / vars expansion\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides```\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nUbuntu 16.04\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nA variable assignment can pass through a simple numeric value, but not a numeric value from a member of an object - in that case it gets silently converted to a string.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```yaml\\r\\n- hosts: localhost\\r\\n\\r\\n  vars:\\r\\n    five: 5\\r\\n    nested:\\r\\n      five: 5\\r\\n\\r\\n  tasks:\\r\\n    - set_fact:\\r\\n        a: 5\\r\\n        b: '{{ five }}'\\r\\n        c: '{{ nested.five }}'\\r\\n\\r\\n    - debug: msg=\\\"a0={{a}}\\\"\\r\\n    - debug: msg=\\\"a1={{a+1}}\\\"\\r\\n    - debug: msg=\\\"b0={{b}}\\\"\\r\\n    - debug: msg=\\\"b1={{b+1}}\\\"\\r\\n    - debug: msg=\\\"c0={{c}}\\\"\\r\\n    - debug: msg=\\\"c1={{c+1}}\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\na, b and c are the number 5; the values of a+1, b+1 and c+1 are 6.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [set_fact] ****************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": \\\"a0=5\\\"\\r\\n}\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": \\\"a1=6\\\"\\r\\n}\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": \\\"b0=5\\\"\\r\\n}\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": \\\"b1=6\\\"\\r\\n}\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": \\\"c0=5\\\"\\r\\n}\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nfatal: [localhost]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"Unexpected templating type error occurred on (c1={{c+1}}): coercing to Unicode: need string or buffer, int found\\\"}\\r\\n\\tto retry, use: --limit @/home/ubuntu/vtp/ansible/bar.retry\\r\\n```\\r\\n\\r\\nThat is, the value of c is a string not a number.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nHere is another example, this time using the `vars` option to the `template` module. The final test case, using with_items, is the actual use case which bit me.\\r\\n\\r\\ntemplates/test.j2\\r\\n\\r\\n```\\r\\n{% for i in range(num) %}\\r\\n{{ i }}\\r\\n{% endfor %}\\r\\n```\\r\\n\\r\\nfoo.yml\\r\\n\\r\\n```yaml\\r\\n- hosts: localhost\\r\\n\\r\\n  tasks:\\r\\n    - name: test with direct var\\r\\n      template:\\r\\n        src: test.j2\\r\\n        dest: /tmp/f1\\r\\n      vars:\\r\\n        num: 5\\r\\n\\r\\n    - name: test with item var\\r\\n      template:\\r\\n        src: test.j2\\r\\n        dest: '{{ item.filename }}'\\r\\n      vars:\\r\\n        num: '{{ item.count }}'\\r\\n      with_items:\\r\\n        - { filename: '/tmp/f2', count: 5 }\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nIn both cases, the template would be expanded with `num` equal to the number 5.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [test with direct var] ****************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [test with item var] ******************************************************\\r\\nfailed: [localhost] (item={u'count': 5, u'filename': u'/tmp/f2'}) => {\\\"failed\\\": true, \\\"item\\\": {\\\"count\\\": 5, \\\"filename\\\": \\\"/tmp/f2\\\"}, \\\"msg\\\": \\\"AnsibleError: Unexpected templating type error occurred on ({% for i in range(num) %}\\\\n{{ i }}\\\\n{% endfor %}\\\\n): an integer is required\\\"}\\r\\n\\tto retry, use: --limit @/home/ubuntu/vtp/ansible/foo.retry\\r\\n```\\r\\n\\r\\nThat is, in the with_items case, the value is string \\\"5\\\" rather than number 5.\\r\\n\\r\\n##### WORKAROUND\\r\\n\\r\\nChange the template so it says:\\r\\n\\r\\n```\\r\\n{% for i in range(num | int) %}\\r\\n{{ i }}\\r\\n{% endfor %}\\r\\n```\\r\\n\\r\\nBut this seems very arbitrary. Surely an integer value is always an integer value?\", \n    \"component_name\": \"core / vars expansion\", \n    \"component_raw\": \"core / vars expansion\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19757\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"A variable assignment can pass through a simple numeric value, but not a numeric value from a member of an object - in that case it gets silently converted to a string.\", \n    \"title\": \"expansion of int values sometimes gives strings (when member of object)\"\n  }, \n  \"19758\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\npamd\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n1.) Changed the module_args parameter to be a list instead of a string.  I think this improves readability of the module in a playbook.\\r\\n\\r\\n2.) Added parameter types.\\r\\n\\r\\n3.) Changed the default state from \\\"None\\\" to \\\"updated\\\".\\r\\n\\r\\n4.) Some of the documentation needed to be corrected.\", \n    \"component_name\": \"pamd\", \n    \"component_raw\": \"pamd\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19758\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/pamd.py\", \n    \"summary\": \"1.) Changed the module_args parameter to be a list instead of a string.  I think this improves readability of the module in a playbook.\\n\\n\\n\\n2.) Added parameter types.\\n\\n\\n\\n3.) Changed the default state from \\\"None\\\" to \\\"updated\\\".\\n\\n\\n\\n4.) Some of the documentation needed to be corrected.\", \n    \"title\": \"Minor rework of pamd module.  Fixed some documentation.\"\n  }, \n  \"19759\": {\n    \"ansible_version\": \"ansible 2.2.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\\ninstall sudo pip install -U git+https//github.com/ansible/ansible.git@v2.2.1.0-0.2.rc2 --upgrade --ignore-installed six\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nec2_group\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\ninstall: sudo pip install -U git+https://github.com/ansible/ansible.git@v2.2.1.0-0.2.rc2 --upgrade --ignore-installed six\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\ndefault ansible.cfg\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nOS X El Capitan 10.11.6\\r\\nMulti VPC AWS environment.  Peers between VPC's w/appropriate routing between them\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nec2_group does not allow group_name to use groups via group name from other peered VPC's.  This worked in v1.9.6 and v2.0.2.  It appears to be due to some additional conditions that were added on 7/27/16.  If I revert this change, it works as expected.\\r\\n\\r\\nhttps://github.com/ansible/ansible/commit/04199140c5f089db8215aee4842d5987cf12e28d\\r\\n\\r\\nUsing group_id with the name of the security group in a different VPC works but is not idempotent.  It will create the rule if it's new but will fail if it already exists.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nAttempt to use a AWS security group name from another VPC with required peering present using group_name:\\r\\n```\\r\\n- name: Provision Security Groups\\r\\n  ec2_group:\\r\\n    name: MyGroup\\r\\n    description: MyDesc\\r\\n    region: us-east-1\\r\\n    vpc_id: vpc-xxxxxxxx\\r\\n    rules:\\r\\n       - proto: tcp\\r\\n          from_port: 22\\r\\n          to_port: 22\\r\\n          group_name: <Other_VPC_SG_NAME>\\r\\n```\\r\\n\\r\\nAttempt to use a AWS security group name from another VPC with required peering present using group_id:\\r\\n```\\r\\n- name: Provision Security Groups\\r\\n  ec2_group:\\r\\n    name: MyGroup\\r\\n    description: MyDesc\\r\\n    region: us-east-1\\r\\n    vpc_id: vpc-xxxxxxxx\\r\\n    rules:\\r\\n       - proto: tcp\\r\\n          from_port: 22\\r\\n          to_port: 22\\r\\n          group_id: <Other_VPC_SG_NAME>\\r\\n```\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nTranslate group name to group ID (sg-xxxxxxxx) and update rule with the security group ID of the other VPC's security group.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nThe group in the peered VPC is not found and an attempt to create a new group in the current VPC is executed.  In my case, this fails due to \\\"no description\\\"\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\nMessage using group_name with security group name from a different VPC\\r\\n```\\r\\n\\\"msg\\\": \\\"group <PeeredVPCGroupName> will be automatically created by rule {'to_port': 22, 'from_port': 22, 'group_name': '<PeeredVPCGroupName>', 'proto': 'tcp'} and no description was provided\\\"\\r\\n```\\r\\n\\r\\nMessage using group_id with security group name from a different VPC if the rule exists.  If the rule does not exist, it is added as expected.\\r\\n```\\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/var/folders/t8/vdrxm90s1ps41pghp7wxn8n80000gp/T/ansible_pJu0pZ/ansible_module_ec2_group.py\\\\\\\", line 479, in <module>\\\\n    main()\\\\n  File \\\\\\\"/var/folders/t8/vdrxm90s1ps41pghp7wxn8n80000gp/T/ansible_pJu0pZ/ansible_module_ec2_group.py\\\\\\\", line 374, in main\\\\n    group.authorize(rule['proto'], rule['from_port'], rule['to_port'], thisip, grantGroup)\\\\n  File \\\\\\\"/Library/Python/2.7/site-packages/boto-2.38.0-py2.7.egg/boto/ec2/securitygroup.py\\\\\\\", line 203, in authorize\\\\n    dry_run=dry_run)\\\\n  File \\\\\\\"/Library/Python/2.7/site-packages/boto-2.38.0-py2.7.egg/boto/ec2/connection.py\\\\\\\", line 3191, in authorize_security_group\\\\n    params, verb='POST')\\\\n  File \\\\\\\"/Library/Python/2.7/site-packages/boto-2.38.0-py2.7.egg/boto/connection.py\\\\\\\", line 1227, in get_status\\\\n    raise self.ResponseError(response.status, response.reason, body)\\\\nboto.exception.EC2ResponseError: EC2ResponseError: 400 Bad Request\\\\n<?xml version=\\\\\\\"1.0\\\\\\\" encoding=\\\\\\\"UTF-8\\\\\\\"?>\\\\n<Response><Errors><Error><Code>InvalidPermission.Duplicate</Code><Message>the specified rule \\\\\\\"peer: sg-xxxxxxxx, TCP, from port: 22, to port: 22, ALLOW\\\\\\\" already exists</Message></Error></Errors><RequestID>b9ec5eee-4a86-49d7-90b8-86bfbf2ba21b</RequestID></Response>\\\\n\\\", \\r\\n    \\\"module_stdout\\\": \\\"\\\", \\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n```\\r\\n\", \n    \"component_name\": \"ec2_group\", \n    \"component_raw\": \"ec2_group\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19759\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_group.py\", \n    \"summary\": \"ec2_group does not allow group_name to use groups via group name from other peered VPC's.  This worked in v1.9.6 and v2.0.2.  It appears to be due to some additional conditions that were added on 7/27/16.  If I revert this change, it works as expected.\\n\\n\\n\\nhttps://github.com/ansible/ansible/commit/04199140c5f089db8215aee4842d5987cf12e28d\\n\\n\\n\\nUsing group_id with the name of the security group in a different VPC works but is not idempotent.  It will create the rule if it's new but will fail if it already exists.\", \n    \"title\": \"ec2_group - Using SG's from peered VPC's\"\n  }, \n  \"19760\": {\n    \"ansible_version\": \"ansible 2.0.0.2\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @edysli on February 16, 2016 8:47_\\n\\n##### Issue Type:\\n\\nFeature Idea\\n##### Component Name:\\n\\nunarchive\\n##### Ansible Version:\\n\\n```\\nansible 2.0.0.2\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### Summary:\\n\\nCurrently, using unarchive with `mode=0644` creates directories without the execute permission, making them impossible to `cd` into. It would be nice to have a `directory_mode` parameter for unarchive, just like the copy module has, in order to set the proper mode on directories (`directory_mode=0755`).\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#3048_\", \n    \"component_name\": \"unarchive\", \n    \"component_raw\": \":\\nunarchive\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19760\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"feature\", \n      \"module\", \n      \"waiting_on_contributor\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/unarchive.py\", \n    \"summary\": \":\\n\\nCurrently, using unarchive with `mode=0644` creates directories without the execute permission, making them impossible to `cd` into. It would be nice to have a `directory_mode` parameter for unarchive, just like the copy module has, in order to set the proper mode on directories (`directory_mode=0755`).\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#3048_\", \n    \"title\": \"unarchive module add directory_mode parameter\"\n  }, \n  \"19763\": {\n    \"ansible_version\": \"ansible 1.9.4\\nAnsible\", \n    \"body\": \"Issue Type:\\r\\nBug Report\\r\\n\\r\\nComponent Name:\\r\\nservice module\\r\\n\\r\\nAnsible Version:\\r\\nansible 1.9.4\\r\\n\\r\\nAnsible Configuration:\\r\\nretry_files_enabled = False\\r\\n\\r\\nEnvironment:\\r\\nRunning from Mac OS X 10.10.5, python 2.7.10\\r\\nto FreeBSD 10.1-RELEASE-p16 #0: Tue Jul 28 12:04:19 UTC 2015\\r\\nwith PostgreSQL 9.4.5\\r\\n\\r\\nSummary:\\r\\n\\r\\nAttempting to use the 'service' module to control PostgreSQL hangs every time. I strongly suspect that this is the same issue as ansible/ansible#5923\\r\\n\\r\\nSteps To Reproduce:\\r\\n\\r\\n```\\r\\n1) Install postgres94-client and postgres94-server packages on FreeBSD 10.1\\r\\n2) set up inventory so that the dbserver is in group fll2-dev-dbservers in inventory file development.ini\\r\\n[fll2-dev-dbservers]\\r\\nfll2gdbs01dev\\r\\n\\r\\n3) ansible -vvvv -i development.ini fll2-dev-dbservers -m service -a \\\"name=postgresql state=stopped\\\"\\r\\n```\\r\\n\\r\\nExpected Results:\\r\\n\\r\\npg_ctl is called to stop the server, returns when finished, ansible reports success/failure and server state\\r\\n\\r\\nActual Results:\\r\\n\\r\\n```\\r\\n<fll2gdbs01dev> ESTABLISH CONNECTION FOR USER: rmartin\\r\\n<fll2gdbs01dev> REMOTE_MODULE service name=postgresql state=restarted\\r\\n<fll2gdbs01dev> EXEC ssh -C -tt -vvv -o ControlMaster=auto -o ControlPersist=60s -o ControlPath=\\\"/Users/rmartin/.ansible/cp/ansible-ssh-%h-%p-%r\\\" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 fll2gdbs01dev /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1447359262.53-79308781944931 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1447359262.53-79308781944931 && echo $HOME/.ansible/tmp/ansible-tmp-1447359262.53-79308781944931'\\r\\n<fll2gdbs01dev> PUT /var/folders/j_/gh1x7cn138b04zb7w6q41ffw59y07m/T/tmpHfd5G9 TO /home/rmartin/.ansible/tmp/ansible-tmp-1447359262.53-79308781944931/service\\r\\n<fll2gdbs01dev> EXEC ssh -C -tt -vvv -o ControlMaster=auto -o ControlPersist=60s -o ControlPath=\\\"/Users/rmartin/.ansible/cp/ansible-ssh-%h-%p-%r\\\" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 fll2gdbs01dev /bin/sh -c 'LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/local/bin/python2.7 /home/rmartin/.ansible/tmp/ansible-tmp-1447359262.53-79308781944931/service; rm -rf /home/rmartin/.ansible/tmp/ansible-tmp-1447359262.53-79308781944931/ >/dev/null 2>&1'\\r\\n```\\r\\n\\r\\nps auxww excerpt on the server during the hang:\\r\\n\\r\\n```\\r\\nrmartin 1258   0.0  0.1 17068  2484  0  Is+   3:14PM  0:00.01 /bin/sh -c LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/local/bin/python2.7 /home/rmartin/.ansible/tmp/ansible-tmp-1447359262.53-79308781944931/service; rm -rf /home/rmartin/.ansible/tmp/ansible-tmp-1447359262.53-79308781944931/ >/dev/null 2>&1\\r\\nrmartin 1259   0.0  0.3 81724 13236  0  S+    3:14PM  0:00.16 /usr/local/bin/python2.7 /home/rmartin/.ansible/tmp/ansible-tmp-1447359262.53-79308781944931/service\\r\\nrmartin 1261   0.0  0.1 17068  2852  0  I+    3:14PM  0:00.03 /bin/sh /usr/local/etc/rc.d/postgresql onestatus\\r\\nroot    1268   0.0  0.1 49768  2652  0  I<+   3:14PM  0:00.00 su -l pgsql -c exec /usr/local/bin/pg_ctl -D /usr/local/pgsql/data -l /dev/null -w -s -m fast status\\r\\n```\\r\\n\\r\\nI have tried both with and without the fix suggested in the old ticket #5923:\\r\\n\\r\\n```\\r\\npostgresql_flags=\\\"-l /dev/null -w -s -m fast\\\"\\r\\n```\\r\\n\\r\\nIt has not made a difference.\\r\\n\\r\\nNote that copying the ansible command\\r\\n\\r\\n```\\r\\nLANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/local/bin/python2.7 /home/rmartin/.ansible/tmp/ansible-tmp-1447359262.53-79308781944931/service; rm -rf /home/rmartin/.ansible/tmp/ansible-tmp-1447359262.53-79308781944931/ >/dev/null 2>&1\\r\\nfrom the hung SSH command above, and pasting it into a bash prompt running on that server over interactive SSH works fine.\\r\\n```\\r\\n\\r\\nAny ideas why this is misbehaving, or how to work around it?\", \n    \"component_name\": \"service\", \n    \"component_raw\": \":\\nservice module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19763\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_1.9\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/service.py\", \n    \"summary\": \":\\n\\n\\n\\nAttempting to use the 'service' module to control PostgreSQL hangs every time. I strongly suspect that this is the same issue as ansible/ansible#5923\", \n    \"title\": \"FreeBSD target: service: name=postgresql state=* hangs the whole playbook\"\n  }, \n  \"19765\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnotify\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\ndefaults\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nArgument `notify` added to include instruction does not run handler on task change inside included file.\\r\\n\\r\\n```\\r\\n- include: other.yml\\r\\n  notify: run handler\\r\\n```\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nplaybook.yml:\\r\\n\\r\\n```yaml\\r\\n---\\r\\n- hosts: localhost\\r\\n  gather_facts: no\\r\\n  become: no\\r\\n  roles:\\r\\n    - testrole\\r\\n```\\r\\n\\r\\ntestrole/tasks/main.yml:\\r\\n\\r\\n```yaml\\r\\n---\\r\\n- include: other.yml\\r\\n  notify: run handler\\r\\n```\\r\\n\\r\\ntestrole/tasks/other.yml:\\r\\n\\r\\n```yaml\\r\\n---\\r\\n- name: task always change\\r\\n  shell: date\\r\\n```\\r\\n\\r\\ntestroles/handlers/main.yml:\\r\\n\\r\\n```yaml\\r\\n---\\r\\n- name: run handler\\r\\n  debug:\\r\\n    msg: Running handler on change\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n```\\r\\n$ ansible-playbook playbook.yml\\r\\n\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [testrole : task alaways change] ******************************************\\r\\nchanged: [localhost]\\r\\n\\r\\nRUNNING HANDLER [testrole : run handler] ***************************************\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": \\\"Running handler on change\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=2    changed=1    unreachable=0    failed=0\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\n$ ansible-playbook playbook.yml\\r\\n\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [testrole : task alaways change] ******************************************\\r\\nchanged: [localhost]\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=1    unreachable=0    failed=0\\r\\n```\\r\\n\", \n    \"component_name\": \"notify\", \n    \"component_raw\": \"notify\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19765\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Argument `notify` added to include instruction does not run handler on task change inside included file.\\n\\n\\n\\n```\\n\\n- include: other.yml\\n\\n  notify: run handler\\n\\n```\", \n    \"title\": \"notify on include does not run handler\"\n  }, \n  \"19766\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nazure_rm_virtualmachine\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nFailed to create VM from Azure Marketplace, if image requires Plan information in the request.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\nFor example try to create this VM using azure_rm_virtualmachine: https://azure.microsoft.com/en-us/marketplace/partners/netgate/netgate-pfsense-appliance/\\r\\n\\r\\n    publisher: netgate\\r\\n    offer: netgate-pfsense-appliance\\r\\n    sku: pfsense-router-fw-vpn-225\\r\\n    version: latest\\r\\n\\r\\nInfo: http://stackoverflow.com/questions/35871496/how-to-include-plan-information-when-creating-arm-vm-from-a-captured-image-usi\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n\\r\\n---\\r\\n\\r\\n- name: Create a resource group\\r\\n  azure_rm_resourcegroup:\\r\\n    name: \\\"{{ azure_rg_name }}\\\"\\r\\n    profile: \\\"{{ azure_rg_profile }}\\\"\\r\\n    location: \\\"{{ azure_rg_location }}\\\"\\r\\n\\r\\n- name: Create storage account\\r\\n  azure_rm_storageaccount:\\r\\n    name: \\\"{{ azure_storage_name }}\\\"\\r\\n    account_type: \\\"{{ azure_storage_type }}\\\"\\r\\n    resource_group: \\\"{{ azure_rg_name }}\\\"\\r\\n\\r\\n- name: Create virtual network\\r\\n  azure_rm_virtualnetwork:\\r\\n    name: \\\"{{ azure_vn_name }}\\\"\\r\\n    address_prefixes: \\\"{{ azure_vn_prefix }}\\\"\\r\\n    resource_group: \\\"{{ azure_rg_name }}\\\"\\r\\n\\r\\n- name: Create subnet\\r\\n  azure_rm_subnet:\\r\\n    name: \\\"{{ azure_subnet_name }}\\\"\\r\\n    address_prefix: \\\"{{ azure_subnet_prefix }}\\\"\\r\\n    virtual_network: \\\"{{ azure_vn_name }}\\\"\\r\\n    resource_group: \\\"{{ azure_rg_name }}\\\"\\r\\n\\r\\n- name: Create security group\\r\\n  azure_rm_securitygroup:\\r\\n    name: \\\"{{ azure_rg_name }}\\\"\\r\\n    rules: \\\"{{ azure_sg_rules }}\\\"\\r\\n    resource_group: \\\"{{ azure_rg_name }}\\\"\\r\\n\\r\\n### VMs ###\\r\\n\\r\\n- name: Create public IP\\r\\n  azure_rm_publicipaddress:\\r\\n    name: \\\"{{ item.name }}-IP\\\"\\r\\n    allocation_method: Static\\r\\n    resource_group: \\\"{{ azure_rg_name }}\\\"\\r\\n  with_items: \\\"{{ azure_vms }}\\\"\\r\\n\\r\\n- name: Create NIC\\r\\n  azure_rm_networkinterface:\\r\\n    name: \\\"{{ item.name }}-NIC\\\"\\r\\n    subnet: \\\"{{ item.subnet_name }}\\\"\\r\\n    public_ip_name: \\\"{{ item.name }}-IP\\\"\\r\\n    private_ip_address: \\\"{{ item.private_ip_address }}\\\"\\r\\n    private_ip_allocation_method: \\\"{{ item.private_ip_allocation_method }}\\\"\\r\\n    virtual_network: \\\"{{ azure_vn_name }}\\\"\\r\\n    resource_group: \\\"{{ azure_rg_name }}\\\"\\r\\n  with_items: \\\"{{ azure_vms }}\\\"\\r\\n\\r\\n- name: Create VM\\r\\n  azure_rm_virtualmachine:\\r\\n    name: \\\"{{ item.name }}\\\"\\r\\n    vm_size: \\\"{{ item.vm_size }}\\\"\\r\\n    storage_blob: \\\"{{ item.name }}-OS.vhd\\\"\\r\\n    admin_username: \\\"{{ item.username }}\\\"\\r\\n    admin_password: \\\"{{ item.password }}\\\"\\r\\n    os_type: \\\"{{ item.os_type }}\\\"\\r\\n    os_disk_caching: \\\"{{ item.os_disk_caching }}\\\"\\r\\n    network_interfaces: \\\"{{ item.name }}-NIC\\\"\\r\\n    image:\\r\\n      offer: \\\"{{ item.image_offer }}\\\"\\r\\n      publisher: \\\"{{ item.image_publisher }}\\\"\\r\\n      sku: \\\"{{ item.image_sku }}\\\"\\r\\n      version: \\\"{{ item.image_version }}\\\"\\r\\n    storage_account: \\\"{{ azure_storage_name }}\\\"\\r\\n    resource_group: \\\"{{ azure_rg_name }}\\\"\\r\\n  with_items: \\\"{{ azure_vms }}\\\"\\r\\n\\r\\n---\\r\\nazure_vms:\\r\\n    # XX-XXX-XX\\r\\n  - name: XX-XXX-XX\\r\\n    vm_size: Standard_A0\\r\\n    os_type: Linux\\r\\n    username: username\\r\\n    password: password\\r\\n    # Storage\\r\\n    os_disk_caching: ReadWrite\\r\\n    # Networking\\r\\n    private_ip_address: \\\"xxx.xxx.xxx.xxx\\\"\\r\\n    private_ip_allocation_method: Static\\r\\n    subnet_name: Production\\r\\n    # Image\\r\\n    image_publisher: netgate\\r\\n    image_offer: netgate-pfsense-appliance\\r\\n    image_sku: pfsense-router-fw-vpn-225\\r\\n    image_version: latest\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nThat VM will be provisioned successfully.\\r\\n(module parameters is missing for this case)\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nfailed: [localhost](item = {\\r\\n\\t\\tu 'username': u 'username',\\r\\n\\t\\tu 'image_version': u 'latest',\\r\\n\\t\\tu 'name': u 'XX-XXX-XX',\\r\\n\\t\\tu 'image_offer': u 'netgate-pfsense-appliance',\\r\\n\\t\\tu 'image_publisher': u 'netgate',\\r\\n\\t\\tu 'image_sku': u 'pfsense-router-fw-vpn-225',\\r\\n\\t\\tu 'private_ip_allocation_method': u 'Static',\\r\\n\\t\\tu 'subnet_name': u 'Production',\\r\\n\\t\\tu 'private_ip_address': u 'xxx.xxx.xxx.xxx',\\r\\n\\t\\tu 'vm_size': u 'Standard_A0',\\r\\n\\t\\tu 'password': u 'password!',\\r\\n\\t\\tu 'os_type': u 'Linux',\\r\\n\\t\\tu 'os_disk_caching': u 'ReadWrite'\\r\\n\\t}) => {\\r\\n\\t\\\"failed\\\": true,\\r\\n\\t\\\"item\\\": {\\r\\n\\t\\t\\\"image_offer\\\": \\\"netgate-pfsense-appliance\\\",\\r\\n\\t\\t\\\"image_publisher\\\": \\\"netgate\\\",\\r\\n\\t\\t\\\"image_sku\\\": \\\"pfsense-router-fw-vpn-225\\\",\\r\\n\\t\\t\\\"image_version\\\": \\\"latest\\\",\\r\\n\\t\\t\\\"name\\\": \\\"XX-XXX-XX\\\",\\r\\n\\t\\t\\\"os_disk_caching\\\": \\\"ReadWrite\\\",\\r\\n\\t\\t\\\"os_type\\\": \\\"Linux\\\",\\r\\n\\t\\t\\\"password\\\": \\\"password!\\\",\\r\\n\\t\\t\\\"private_ip_address\\\": \\\"xxx.xxx.xxx.xxx\\\",\\r\\n\\t\\t\\\"private_ip_allocation_method\\\": \\\"Static\\\",\\r\\n\\t\\t\\\"subnet_name\\\": \\\"Production\\\",\\r\\n\\t\\t\\\"username\\\": \\\"username\\\",\\r\\n\\t\\t\\\"vm_size\\\": \\\"Standard_A0\\\"\\r\\n\\t},\\r\\n\\t\\\"msg\\\": \\\"Error creating or updating virtual machine XX-XXX-XX - Azure Error: VMMarketplaceInvalidInput\\\\nMessage: Creating a virtual machine from Marketplace image requires Plan information in the request. OS disk name is XX-XXX-XX-OS.vhd.\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"azure_rm_virtualmachine\", \n    \"component_raw\": \"azure_rm_virtualmachine\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19766\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"azure\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\", \n    \"summary\": \"Failed to create VM from Azure Marketplace, if image requires Plan information in the request.\", \n    \"title\": \"azure_rm_virtualmachine - Creating a virtual machine from Marketplace image requires Plan information in the request\"\n  }, \n  \"19768\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"Currently, only the `install` command is available, and you must provide IDs\\r\\nwhen installing applications.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmas\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThis adds a new `mas` module that can be used to install packages on OSX from the Mac App Store. The module requires that `mas` is preinstalled.\\r\\n\\r\\nYou can currently only install packages by ID, but there is scope to add a `mas_facts` module to allow searching via the MAS API to populate a lookup from application name to ID. You can see a discussion I had with @dfederlein around this [on Reddit](https://www.reddit.com/r/ansible/comments/4y6smd/new_module_mas_install_apps_from_the_mac_app_store/)\\r\\n\", \n    \"component_name\": \"mas\", \n    \"component_raw\": \"mas\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19768\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/mas.py\", \n    \"summary\": \"This adds a new `mas` module that can be used to install packages on OSX from the Mac App Store. The module requires that `mas` is preinstalled.\\n\\n\\n\\nYou can currently only install packages by ID, but there is scope to add a `mas_facts` module to allow searching via the MAS API to populate a lookup from application name to ID. You can see a discussion I had with @dfederlein around this [on Reddit](https://www.reddit.com/r/ansible/comments/4y6smd/new_module_mas_install_apps_from_the_mac_app_store/)\", \n    \"title\": \"Add `mas` module for installing applications via the Mac App Store\"\n  }, \n  \"19769\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 9f2d8c2409) last updated 2017/01/01 174207 (GMT +200)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"Ohai,\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nsdist\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel 9f2d8c2409) last updated 2017/01/01 17:42:07 (GMT +200)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nI think it would be nice to include the docsite and tests in the release tarballs. This would help distribution packagers to provide a better expirience to their users. The doscite contains a lot of valuable information and it would be nice to a) have that information available offline as a (additional) package and b) ship a copy that matches the shipped Ansible release. The tests on the other hand would allow packagers to verify their package more easily, as they can run the whole testsuite against the packaged version of ansible.\\r\\n\\r\\nI did a quick test and each of the folders adds about 0.5MB to the release tarball. While 0.5MB is about 20% of the current tarball (and as such not too small), I think even a 3.6MB big tarball has still reasonable value and the added benefit outweighs the size.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n`make sdist`\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\ngenerated tarball contains the `docsite` and `test` folders\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\ntarball does not contain the folders\", \n    \"component_name\": \"sdist\", \n    \"component_raw\": \"sdist\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19769\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I think it would be nice to include the docsite and tests in the release tarballs. This would help distribution packagers to provide a better expirience to their users. The doscite contains a lot of valuable information and it would be nice to a) have that information available offline as a (additional) package and b) ship a copy that matches the shipped Ansible release. The tests on the other hand would allow packagers to verify their package more easily, as they can run the whole testsuite against the packaged version of ansible.\\n\\n\\n\\nI did a quick test and each of the folders adds about 0.5MB to the release tarball. While 0.5MB is about 20% of the current tarball (and as such not too small), I think even a 3.6MB big tarball has still reasonable value and the added benefit outweighs the size.\", \n    \"title\": \"please include docsite and tests in releases\"\n  }, \n  \"19770\": {\n    \"ansible_version\": \"ansible 2.3.0 (improve-ipa-module b255485b05) last updated 2017/01/01 222122 (GMT +200)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nidentity/ipa\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (improve-ipa-module b255485b05) last updated 2017/01/01 22:21:22 (GMT +200)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nipa_user module supports only a subset of parameters available in FreeIPA. This patchset extends the list of supported parameters. Further a new module ipa_service is added.\\r\\n\\r\\nDesign change:\\r\\nThe ipa_user module tries to apply a given set of parameters only if this would lead to a change in FreeIPA. This requires some logic in Ansible to evaluate if the set of parameters given to Ansible differs from the set of parameters currently stored in FreeIPA. This design has some disadvantages:\\r\\n- Providing a perfect and complete implementation to evaluate changes between different sets of FreeIPA parameters would be complex.\\r\\n- Maintaining the code for different versions of FreeIPA might be impossible on the long run.\\r\\n- Read parameters from FreeIPA and write them back only if something changed is not atomic. At least theoretically, this might lead to unexpected race conditions.\\r\\n\\r\\nThe new ipa_user module simply forwards all parameters to FreeIPA. FreeIPA returns an error if nothing changed. This error is used to set the changed flag in Ansible.\", \n    \"component_name\": \"identity/ipa\", \n    \"component_raw\": \"identity/ipa\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19770\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"community_review\", \n      \"feature\", \n      \"module\", \n      \"module_util\", \n      \"new_module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/identity/ipa/ipa_user.py\", \n    \"summary\": \"ipa_user module supports only a subset of parameters available in FreeIPA. This patchset extends the list of supported parameters. Further a new module ipa_service is added.\\n\\n\\n\\nDesign change:\\n\\nThe ipa_user module tries to apply a given set of parameters only if this would lead to a change in FreeIPA. This requires some logic in Ansible to evaluate if the set of parameters given to Ansible differs from the set of parameters currently stored in FreeIPA. This design has some disadvantages:\\n\\n- Providing a perfect and complete implementation to evaluate changes between different sets of FreeIPA parameters would be complex.\\n\\n- Maintaining the code for different versions of FreeIPA might be impossible on the long run.\\n\\n- Read parameters from FreeIPA and write them back only if something changed is not atomic. At least theoretically, this might lead to unexpected race conditions.\\n\\n\\n\\nThe new ipa_user module simply forwards all parameters to FreeIPA. FreeIPA returns an error if nothing changed. This error is used to set the changed flag in Ansible.\", \n    \"title\": \"Improve ipa module\"\n  }, \n  \"19771\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 9f2d8c2409) last updated 2017/01/01 201608 (GMT -600)\\nconfig file = /home/lf/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nhostvars\\r\\n\\r\\n(I guess?)\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel 9f2d8c2409) last updated 2017/01/01 20:16:08 (GMT -600)\\r\\n  config file = /home/lf/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nFedora 25\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n`ansible_become_method` cannot be relied upon to always be available. It would be more sensible to have it defined by default as the value in ansible.cfg or the default. On hosts which it is set explicitly, it *is* available.\\r\\n\\r\\nThis makes it trickier to write playbooks such as my initial setup playbook which configures privilege escalation automatically based on the configured method.\\r\\n\", \n    \"component_name\": \"hostvars\", \n    \"component_raw\": \"hostvars\\n(I guess?)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19771\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"`ansible_become_method` cannot be relied upon to always be available. It would be more sensible to have it defined by default as the value in ansible.cfg or the default. On hosts which it is set explicitly, it *is* available.\\n\\n\\n\\nThis makes it trickier to write playbooks such as my initial setup playbook which configures privilege escalation automatically based on the configured method.\", \n    \"title\": \"By default, ansible_become_method is not defined but it should be set to the ansible.cfg value\"\n  }, \n  \"19772\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 9f2d8c2409) last updated 2017/01/02 183706 (GMT +1000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\namazon RDS\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel 9f2d8c2409) last updated 2017/01/02 18:37:06 (GMT +1000)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nSplit the existing rds module into three separate modules, and make the modules idempotent (remove the `command` argument).\\r\\n\\r\\nThe new modules are expected to be almost entirely backward compatible with the old module, other than the command change - it should be easy to update existing code to use the new modules.\\r\\n\\r\\nThe new modules are entirely boto3 -  support for boto has been dropped for the new modules.\\r\\n\\r\\nThis is currently a work in progress, there are likely to be bugs, but a lot of the key features work as it stands. \\r\\n\\r\\nI have also added a test suite that exercises all of the modules so that people can verify that things are working as expected.\\r\\n\\r\\nIf people find issues with this PR, the easiest way to improve the new modules while this PR is unmerged would be a PR against my branch - I can then incorporate your commits into this PR.\\r\\n\\r\\nImplements ansible/ansible-modules-core#5343\\r\\n\\r\\n## Known issues at time of PR\\r\\n\\r\\n* Use of `q` module for debugging\\r\\n* Some modifications don't really work as expected - #19751 might apply equally here\\r\\n* Test suite takes a really long time and state transitions are very slow, so haven't yet had a successful run through.\", \n    \"component_name\": \"amazon rds\", \n    \"component_raw\": \"amazon RDS\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19772\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"c:module_utils/\", \n      \"cloud\", \n      \"module\", \n      \"module_util\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\", \n      \"test\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/rds_snapshot.py\", \n    \"summary\": \"Split the existing rds module into three separate modules, and make the modules idempotent (remove the `command` argument).\\n\\n\\n\\nThe new modules are expected to be almost entirely backward compatible with the old module, other than the command change - it should be easy to update existing code to use the new modules.\\n\\n\\n\\nThe new modules are entirely boto3 -  support for boto has been dropped for the new modules.\\n\\n\\n\\nThis is currently a work in progress, there are likely to be bugs, but a lot of the key features work as it stands. \\n\\n\\n\\nI have also added a test suite that exercises all of the modules so that people can verify that things are working as expected.\\n\\n\\n\\nIf people find issues with this PR, the easiest way to improve the new modules while this PR is unmerged would be a PR against my branch - I can then incorporate your commits into this PR.\\n\\n\\n\\nImplements ansible/ansible-modules-core#5343\\n\\n\\n\\n## Known issues at time of PR\\n\\n\\n\\n* Use of `q` module for debugging\\n\\n* Some modifications don't really work as expected - #19751 might apply equally here\\n\\n* Test suite takes a really long time and state transitions are very slow, so haven't yet had a successful run through.\", \n    \"title\": \"WIP: RDS split\"\n  }, \n  \"19773\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 9f2d8c2409) last updated 2017/01/02 183706 (GMT +1000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2 inventory script\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel 9f2d8c2409) last updated 2017/01/02 18:37:06 (GMT +1000)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nEnsure that AWS inventory gathering failures due to lack of\\r\\npermissions result in a lack of that information, rather than\\r\\nerrors causing no information at all.\\r\\n\\r\\nRefixes #5236\\r\\n\", \n    \"component_name\": \"ec2 inventory script\", \n    \"component_raw\": \"ec2 inventory script\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19773\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Ensure that AWS inventory gathering failures due to lack of\\n\\npermissions result in a lack of that information, rather than\\n\\nerrors causing no information at all.\\n\\n\\n\\nRefixes #5236\", \n    \"title\": \"Improve AWS inventory permission problems\"\n  }, \n  \"19775\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwait_for\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nDerived from https://github.com/ansible/ansible/pull/19505\\r\\n\\r\\nIt makes it possible to let the user define which connection states should be seen/counted as \\\"active\\\".\\r\\nThe current version is hardcoded to count \\\"time_wait\\\" state as active.\\r\\n\\r\\nMy commits add the active_connection_states parameter, which allows the user to specify which states should be counted as active. It defaults to the values which are hardcoded in the current version, so it's backwards compatible and doesn't change the current behaviour. \", \n    \"component_name\": \"wait_for\", \n    \"component_raw\": \"wait_for\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19775\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"shipit\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/wait_for.py\", \n    \"summary\": \"Derived from https://github.com/ansible/ansible/pull/19505\\n\\n\\n\\nIt makes it possible to let the user define which connection states should be seen/counted as \\\"active\\\".\\n\\nThe current version is hardcoded to count \\\"time_wait\\\" state as active.\\n\\n\\n\\nMy commits add the active_connection_states parameter, which allows the user to specify which states should be counted as active. It defaults to the values which are hardcoded in the current version, so it's backwards compatible and doesn't change the current behaviour.\", \n    \"title\": \"Let user define which connection_states are active when draining\"\n  }, \n  \"19779\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nmodule_utils/basic.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nRemote user is not root, become user is also not root.\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nPOSIX.1e filesystem acl supported on the managed host. Temporary directory on the remote host is mounted with POSIX acls enabled and the setfacl tool is in the remote PATH.  See http://docs.ansible.com/ansible/become.html for context.\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\nCopied files retain acl's of the become user when the remote host supports acls.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\nCopy a file using a remote user that is not root and become to a user that also is not root.  Finally, the become user needs to have permissions to move (rename) the file in the tmp to the final destination directory.\\r\\nBecause the remote user is not a root user and acls are enabled, files transferred using the copy module will have acls set.   Then, because the file is renamed instead of copied (https://github.com/ansible/ansible/blob/d9e1e374b249b568b7b7376b5cc5586327a9a206/lib/ansible/module_utils/basic.py#L2052), the newly created file inherits the acls.  Finally, the acls are not removed (https://github.com/ansible/ansible/blob/d9e1e374b249b568b7b7376b5cc5586327a9a206/lib/ansible/module_utils/basic.py#L2118) \\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nNo acls on copied files.\\r\\n\\r\\nI suspect that we need to remove all acl's in the \\\"created\\\" section of module_utils/basic.py: \\r\\n(https://github.com/ansible/ansible/blob/d9e1e374b249b568b7b7376b5cc5586327a9a206/lib/ansible/module_utils/basic.py#L2118) \\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\nAcls on copied files.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n    \\\"acl\\\": [\\r\\n        \\\"user::r--\\\",\\r\\n        \\\"user:mybecome_user:r-x\\\\t#effective:r--\\\",\\r\\n        \\\"group::---\\\",\\r\\n        \\\"mask::r--\\\",\\r\\n        \\\"other::---\\\"\\r\\n    ],\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"msg\\\": \\\"current acl\\\"\\r\\n```\\r\\n\", \n    \"component_name\": \"module_utils/basic.py\", \n    \"component_raw\": \"module_utils/basic.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19779\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Copied files retain acl's of the become user when the remote host supports acls.\", \n    \"title\": \"Copied files retain acl's of the become user\"\n  }, \n  \"19780\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\nBugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nos_router module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nIt is currently impossible to call `os_router` if the specified router already exists on any OpenStack installation which uses HA routers (such as a default OpenStack-Ansible deploy). This bug potentially also affects OpenStack installations using DVR, although I didn't test this case.\\r\\n\\r\\nThis happens because the `os_router` module always detects the router as changed if it already exists, as it considers the HA network tenant ports as router interfaces. Even worse, the module fails because it tries to remove these HA network tenant ports from the router, an operation which is not allowed.\\r\\n\\r\\nThe proposed fix is to check if ports are owned by the router itself when enumerating router interfaces. The procedure is analogous to one adopted by Horizon [here](https://github.com/openstack/horizon/blob/01877336d19cd0f74d8a5fe8bd2e02730af7d36a/openstack_dashboard/api/neutron.py#L51-L55) and [here](https://github.com/openstack/horizon/blob/01877336d19cd0f74d8a5fe8bd2e02730af7d36a/openstack_dashboard/api/neutron.py#L474-L476).\\r\\n\\r\\n**Before**:\\r\\n```\\r\\nTASK [Setup router] ***********************************************************\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Error detaching interface from router 7cd448ea-973a-42ab-9f0e-f27003e1f86f: Router 7cd448ea-973a-42ab-9f0e-f27003e1f86f does not have an interface with id 243a769f-1085-4e45-b8d4-7e177b1ffb73\\\\nNeutron server returns request_ids: ['req-e0022e17-9754-4bd2-bbf7-9566b2688674']\\\"}\\r\\n```\\r\\n\\r\\n**After**:\\r\\n```\\r\\nTASK [Setup router] ***********************************************************\\r\\nok: [localhost]\\r\\n```\\r\\n\\r\\nIt is also needed to backport this change to the [ansible/ansible-modules-core](https://github.com/ansible/ansible-modules-core) repository in order to fix it in stable.\", \n    \"component_name\": \"os_router\", \n    \"component_raw\": \"os_router module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19780\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_router.py\", \n    \"summary\": \"It is currently impossible to call `os_router` if the specified router already exists on any OpenStack installation which uses HA routers (such as a default OpenStack-Ansible deploy). This bug potentially also affects OpenStack installations using DVR, although I didn't test this case.\\n\\n\\n\\nThis happens because the `os_router` module always detects the router as changed if it already exists, as it considers the HA network tenant ports as router interfaces. Even worse, the module fails because it tries to remove these HA network tenant ports from the router, an operation which is not allowed.\\n\\n\\n\\nThe proposed fix is to check if ports are owned by the router itself when enumerating router interfaces. The procedure is analogous to one adopted by Horizon [here](https://github.com/openstack/horizon/blob/01877336d19cd0f74d8a5fe8bd2e02730af7d36a/openstack_dashboard/api/neutron.py#L51-L55) and [here](https://github.com/openstack/horizon/blob/01877336d19cd0f74d8a5fe8bd2e02730af7d36a/openstack_dashboard/api/neutron.py#L474-L476).\\n\\n\\n\\n**Before**:\\n\\n```\\n\\nTASK [Setup router] ***********************************************************\\n\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Error detaching interface from router 7cd448ea-973a-42ab-9f0e-f27003e1f86f: Router 7cd448ea-973a-42ab-9f0e-f27003e1f86f does not have an interface with id 243a769f-1085-4e45-b8d4-7e177b1ffb73\\\\nNeutron server returns request_ids: ['req-e0022e17-9754-4bd2-bbf7-9566b2688674']\\\"}\\n\\n```\\n\\n\\n\\n**After**:\\n\\n```\\n\\nTASK [Setup router] ***********************************************************\\n\\nok: [localhost]\\n\\n```\\n\\n\\n\\nIt is also needed to backport this change to the [ansible/ansible-modules-core](https://github.com/ansible/ansible-modules-core) repository in order to fix it in stable.\", \n    \"title\": \"os_router: fix checking if router needs update\"\n  }, \n  \"19781\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/justin/projects/base_site/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"In the `EXAMPLES` docstring for the `wait_for` module, the `local_action` example should use `args` to define arguments to pass to `wait_for`.  Without this, the example does not run correctly.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\n`wait_for` module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/justin/projects/base_site/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nThe current `EXAMPLE` docstring for the `wait_for` module includes an example using `local_action`, but it does not currently run as-is.  To pass arguments to the module using the multi-line syntax, they have to be placed within an `args` dictionary.\\r\\n\\r\\nThis PR adds `args` so that the example runs correctly.\\r\\n\\r\\nBefore, the file and output looked like this:\\r\\n\\r\\n```\\r\\n---\\r\\n- hosts: debian_8\\r\\n  tasks:\\r\\n    - local_action: wait_for\\r\\n        port: 22\\r\\n        host: \\\"{{ ansible_ssh_host | default(inventory_hostname) }}\\\"\\r\\n        search_regex: OpenSSH\\r\\n        delay: 10\\r\\n```\\r\\n```\\r\\nansible-playbook test.yml\\r\\n```\\r\\n```\\r\\nERROR! Syntax Error while loading YAML.\\r\\n\\r\\n\\r\\nThe error appears to have been in '/home/justin/projects/base_site/ansible/test.yml': line 5, column 13, but may\\r\\nbe elsewhere in the file depending on the exact syntax problem.\\r\\n\\r\\nThe offending line appears to be:\\r\\n\\r\\n    - local_action: wait_for\\r\\n        port: 22\\r\\n            ^ here\\r\\n```\\r\\n\\r\\nAfter the change, the example runs as expected:\\r\\n\\r\\n```\\r\\n---\\r\\n- hosts: debian_8\\r\\n  tasks:\\r\\n    - local_action: wait_for\\r\\n      args:\\r\\n        port: 22\\r\\n        host: \\\"{{ ansible_ssh_host | default(inventory_hostname) }}\\\"\\r\\n        search_regex: OpenSSH\\r\\n        delay: 10\\r\\n```\\r\\n```\\r\\nansible-playbook test.yml\\r\\n```\\r\\n```\\r\\nPLAY [debian_8] ****************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [xxx.xxx.xxx.xxx]\\r\\n\\r\\nTASK [wait_for] ****************************************************************\\r\\nok: [xxx.xxx.xxx.xxx -> localhost]\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nxxx.xxx.xxx.xxx            : ok=2    changed=0    unreachable=0    failed=0\\r\\n```\", \n    \"component_name\": \"wait_for\", \n    \"component_raw\": \"`wait_for` module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19781\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"module\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/wait_for.py\", \n    \"summary\": \"The current `EXAMPLE` docstring for the `wait_for` module includes an example using `local_action`, but it does not currently run as-is.  To pass arguments to the module using the multi-line syntax, they have to be placed within an `args` dictionary.\\n\\n\\n\\nThis PR adds `args` so that the example runs correctly.\\n\\n\\n\\nBefore, the file and output looked like this:\\n\\n\\n\\n```\\n\\n---\\n\\n- hosts: debian_8\\n\\n  tasks:\\n\\n    - local_action: wait_for\\n\\n        port: 22\\n\\n        host: \\\"{{ ansible_ssh_host | default(inventory_hostname) }}\\\"\\n\\n        search_regex: OpenSSH\\n\\n        delay: 10\\n\\n```\\n\\n```\\n\\nansible-playbook test.yml\\n\\n```\\n\\n```\\n\\nERROR! Syntax Error while loading YAML.\\n\\n\\n\\n\\n\\nThe error appears to have been in '/home/justin/projects/base_site/ansible/test.yml': line 5, column 13, but may\\n\\nbe elsewhere in the file depending on the exact syntax problem.\\n\\n\\n\\nThe offending line appears to be:\\n\\n\\n\\n    - local_action: wait_for\\n\\n        port: 22\\n\\n            ^ here\\n\\n```\\n\\n\\n\\nAfter the change, the example runs as expected:\\n\\n\\n\\n```\\n\\n---\\n\\n- hosts: debian_8\\n\\n  tasks:\\n\\n    - local_action: wait_for\\n\\n      args:\\n\\n        port: 22\\n\\n        host: \\\"{{ ansible_ssh_host | default(inventory_hostname) }}\\\"\\n\\n        search_regex: OpenSSH\\n\\n        delay: 10\\n\\n```\\n\\n```\\n\\nansible-playbook test.yml\\n\\n```\\n\\n```\\n\\nPLAY [debian_8] ****************************************************************\\n\\n\\n\\nTASK [setup] *******************************************************************\\n\\nok: [xxx.xxx.xxx.xxx]\\n\\n\\n\\nTASK [wait_for] ****************************************************************\\n\\nok: [xxx.xxx.xxx.xxx -> localhost]\\n\\n\\n\\nPLAY RECAP *********************************************************************\\n\\nxxx.xxx.xxx.xxx            : ok=2    changed=0    unreachable=0    failed=0\\n\\n```\", \n    \"title\": \"Add `args` to `local_action` example in the `wait_for` module docs.\"\n  }, \n  \"19782\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel e396d5d508) last updated 2016/08/24 121310 (GMT +1000)\\nlib/ansible/modules/core (detached HEAD 368ca738fa) last updated 2016/08/24 121321 (GMT +1000)\\nlib/ansible/modules/extras (detached HEAD 0749ce6faa) last updated 2016/08/24 121330 (GMT +1000)\", \n    \"body\": \"##### ISSUE TYPE\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\nrds_cluster\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0 (devel e396d5d508) last updated 2016/08/24 12:13:10 (GMT +1000)\\n  lib/ansible/modules/core: (detached HEAD 368ca738fa) last updated 2016/08/24 12:13:21 (GMT +1000)\\n  lib/ansible/modules/extras: (detached HEAD 0749ce6faa) last updated 2016/08/24 12:13:30 (GMT +1000)\\n```\\n##### SUMMARY\\n\\nThis module manages the creation, modification, deletion, snapshot and restore of RDS Clusters for Aurora instances in AWS.\\n\\n```\\nTASK [print new Aurora RDS cluster] ********************************************\\nok: [localhost] => {\\n    \\\"msg\\\": {\\n        \\\"changed\\\": true, \\n        \\\"rds\\\": {\\n            \\\"DBClusters\\\": [\\n                {\\n                    \\\"AllocatedStorage\\\": 1, \\n                    \\\"AvailabilityZones\\\": [\\n                        \\\"ap-southeast-2a\\\", \\n                        \\\"ap-southeast-2b\\\", \\n                        \\\"ap-southeast-2c\\\"\\n                    ], \\n                    \\\"BackupRetentionPeriod\\\": 10, \\n                    \\\"DBClusterIdentifier\\\": \\\"test-aurora-cluster\\\", \\n                    \\\"DBClusterMembers\\\": [], \\n                    \\\"DBClusterParameterGroup\\\": \\\"test-aurora-param-group\\\", \\n                    \\\"DBSubnetGroup\\\": \\\"aag-vpc-99-sbg-rds-green\\\", \\n                    \\\"DbClusterResourceId\\\": \\\"cluster-TQILXHYILLHWNEPZLLHWNEC5Q\\\", \\n                    \\\"EarliestRestorableTime\\\": \\\"2016-08-28T23:24:54.858000+00:00\\\", \\n                    \\\"Endpoint\\\": \\\"test-aurora-cluster.cluster-c41234a2bug.ap-southeast-2.rds.amazonaws.com\\\", \\n                    \\\"Engine\\\": \\\"aurora\\\", \\n                    \\\"EngineVersion\\\": \\\"5.6.10a\\\", \\n                    \\\"HostedZoneId\\\": \\\"Z32T0VXXXEXS0V\\\", \\n                    \\\"KmsKeyId\\\": \\\"arn:aws:kms:ap-southeast-2:486509402765:key/1b184ef4-1234-5678-a0f0-d5970a9f8e21\\\", \\n                    \\\"LatestRestorableTime\\\": \\\"2016-08-28T23:24:54.858000+00:00\\\", \\n                    \\\"MasterUsername\\\": \\\"testuser\\\", \\n                    \\\"Port\\\": 3306, \\n                    \\\"PreferredBackupWindow\\\": \\\"15:35-16:05\\\", \\n                    \\\"PreferredMaintenanceWindow\\\": \\\"sun:18:34-sun:19:04\\\", \\n                    \\\"Status\\\": \\\"available\\\", \\n                    \\\"StorageEncrypted\\\": true, \\n                    \\\"VpcSecurityGroups\\\": [\\n                        {\\n                            \\\"Status\\\": \\\"active\\\", \\n                            \\\"VpcSecurityGroupId\\\": \\\"sg-d111c7b6\\\"\\n                        }\\n                    ]\\n                }\\n            ], \\n            \\\"ResponseMetadata\\\": {\\n                \\\"HTTPStatusCode\\\": 200, \\n                \\\"RequestId\\\": \\\"ab1de429-6d76-11e6-9d17-df1f331e0454\\\"\\n            }\\n        }\\n    }\\n}\\n```\\n\", \n    \"component_name\": \"rds_cluster\", \n    \"component_raw\": \"rds_cluster\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19782\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/rds_cluster.py\", \n    \"summary\": \"This module manages the creation, modification, deletion, snapshot and restore of RDS Clusters for Aurora instances in AWS.\\n\\n```\\nTASK [print new Aurora RDS cluster] ********************************************\\nok: [localhost] => {\\n    \\\"msg\\\": {\\n        \\\"changed\\\": true, \\n        \\\"rds\\\": {\\n            \\\"DBClusters\\\": [\\n                {\\n                    \\\"AllocatedStorage\\\": 1, \\n                    \\\"AvailabilityZones\\\": [\\n                        \\\"ap-southeast-2a\\\", \\n                        \\\"ap-southeast-2b\\\", \\n                        \\\"ap-southeast-2c\\\"\\n                    ], \\n                    \\\"BackupRetentionPeriod\\\": 10, \\n                    \\\"DBClusterIdentifier\\\": \\\"test-aurora-cluster\\\", \\n                    \\\"DBClusterMembers\\\": [], \\n                    \\\"DBClusterParameterGroup\\\": \\\"test-aurora-param-group\\\", \\n                    \\\"DBSubnetGroup\\\": \\\"aag-vpc-99-sbg-rds-green\\\", \\n                    \\\"DbClusterResourceId\\\": \\\"cluster-TQILXHYILLHWNEPZLLHWNEC5Q\\\", \\n                    \\\"EarliestRestorableTime\\\": \\\"2016-08-28T23:24:54.858000+00:00\\\", \\n                    \\\"Endpoint\\\": \\\"test-aurora-cluster.cluster-c41234a2bug.ap-southeast-2.rds.amazonaws.com\\\", \\n                    \\\"Engine\\\": \\\"aurora\\\", \\n                    \\\"EngineVersion\\\": \\\"5.6.10a\\\", \\n                    \\\"HostedZoneId\\\": \\\"Z32T0VXXXEXS0V\\\", \\n                    \\\"KmsKeyId\\\": \\\"arn:aws:kms:ap-southeast-2:486509402765:key/1b184ef4-1234-5678-a0f0-d5970a9f8e21\\\", \\n                    \\\"LatestRestorableTime\\\": \\\"2016-08-28T23:24:54.858000+00:00\\\", \\n                    \\\"MasterUsername\\\": \\\"testuser\\\", \\n                    \\\"Port\\\": 3306, \\n                    \\\"PreferredBackupWindow\\\": \\\"15:35-16:05\\\", \\n                    \\\"PreferredMaintenanceWindow\\\": \\\"sun:18:34-sun:19:04\\\", \\n                    \\\"Status\\\": \\\"available\\\", \\n                    \\\"StorageEncrypted\\\": true, \\n                    \\\"VpcSecurityGroups\\\": [\\n                        {\\n                            \\\"Status\\\": \\\"active\\\", \\n                            \\\"VpcSecurityGroupId\\\": \\\"sg-d111c7b6\\\"\\n                        }\\n                    ]\\n                }\\n            ], \\n            \\\"ResponseMetadata\\\": {\\n                \\\"HTTPStatusCode\\\": 200, \\n                \\\"RequestId\\\": \\\"ab1de429-6d76-11e6-9d17-df1f331e0454\\\"\\n            }\\n        }\\n    }\\n}\\n```\", \n    \"title\": \"New AWS module to manage RDS Clusters \"\n  }, \n  \"19783\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel e396d5d508) last updated 2016/08/24 121310 (GMT +1000)\\nlib/ansible/modules/core (detached HEAD 368ca738fa) last updated 2016/08/24 121321 (GMT +1000)\\nlib/ansible/modules/extras (detached HEAD 0749ce6faa) last updated 2016/08/24 121330 (GMT +1000)\", \n    \"body\": \"##### ISSUE TYPE\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\nrds_v2\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0 (devel e396d5d508) last updated 2016/08/24 12:13:10 (GMT +1000)\\n  lib/ansible/modules/core: (detached HEAD 368ca738fa) last updated 2016/08/24 12:13:21 (GMT +1000)\\n  lib/ansible/modules/extras: (detached HEAD 0749ce6faa) last updated 2016/08/24 12:13:30 (GMT +1000)\\n```\\n##### SUMMARY\\n\\nThis module manages the creation, modification, deletion, snapshot, restore, reboot, replicate and promote of RDS Instances in AWS.\\n\\nNote: Technically this is a rewrite of the existing core RDS module and while I believe rewrites using older API's aren't being included until 2.3 I thought people could still use this in the meantime, especially if support for Aurora is required. \\n\\n```\\nTASK [print new RDS instance] **************************************************\\nok: [localhost] => {\\n    \\\"msg\\\": {\\n        \\\"changed\\\": true, \\n        \\\"rds\\\": {\\n            \\\"DBInstances\\\": [\\n                {\\n                    \\\"AllocatedStorage\\\": 10, \\n                    \\\"AutoMinorVersionUpgrade\\\": true, \\n                    \\\"AvailabilityZone\\\": \\\"ap-southeast-2a\\\", \\n                    \\\"BackupRetentionPeriod\\\": 10, \\n                    \\\"CACertificateIdentifier\\\": \\\"rds-ca-2015\\\", \\n                    \\\"CopyTagsToSnapshot\\\": false, \\n                    \\\"DBInstanceClass\\\": \\\"db.t2.medium\\\", \\n                    \\\"DBInstanceIdentifier\\\": \\\"test-instance\\\", \\n                    \\\"DBInstanceStatus\\\": \\\"available\\\", \\n                    \\\"DBParameterGroups\\\": [\\n                        {\\n                            \\\"DBParameterGroupName\\\": \\\"test-param-group\\\", \\n                            \\\"ParameterApplyStatus\\\": \\\"in-sync\\\"\\n                        }\\n                    ], \\n                    \\\"DBSecurityGroups\\\": [], \\n                    \\\"DBSubnetGroup\\\": {\\n                        \\\"DBSubnetGroupDescription\\\": \\\"test subnet group\\\", \\n                        \\\"DBSubnetGroupName\\\": \\\"test-subnet-group\\\", \\n                        \\\"SubnetGroupStatus\\\": \\\"Complete\\\", \\n                        \\\"Subnets\\\": [\\n                            {\\n                                \\\"SubnetAvailabilityZone\\\": {\\n                                    \\\"Name\\\": \\\"ap-southeast-2a\\\"\\n                                }, \\n                                \\\"SubnetIdentifier\\\": \\\"subnet-75ed1123\\\", \\n                                \\\"SubnetStatus\\\": \\\"Active\\\"\\n                            }, \\n                            {\\n                                \\\"SubnetAvailabilityZone\\\": {\\n                                    \\\"Name\\\": \\\"ap-southeast-2b\\\"\\n                                }, \\n                                \\\"SubnetIdentifier\\\": \\\"subnet-6ae33123\\\", \\n                                \\\"SubnetStatus\\\": \\\"Active\\\"\\n                            }\\n                        ], \\n                        \\\"VpcId\\\": \\\"vpc-aad24acf\\\"\\n                    }, \\n                    \\\"DbInstancePort\\\": 0, \\n                    \\\"DbiResourceId\\\": \\\"db-7ZINBVLFLHNOT5ROFK76T4XXXX\\\", \\n                    \\\"Endpoint\\\": {\\n                        \\\"Address\\\": \\\"test-instance2.c4nb0jta2bug.ap-southeast-2.rds.amazonaws.com\\\", \\n                        \\\"HostedZoneId\\\": \\\"Z32T0VRHXEXXXX\\\", \\n                        \\\"Port\\\": 3306\\n                    }, \\n                    \\\"Engine\\\": \\\"mysql\\\", \\n                    \\\"EngineVersion\\\": \\\"5.6.27\\\", \\n                    \\\"InstanceCreateTime\\\": \\\"2016-09-03T07:36:28.832000+00:00\\\", \\n                    \\\"LatestRestorableTime\\\": \\\"2016-09-03T07:40:00+00:00\\\", \\n                    \\\"LicenseModel\\\": \\\"general-public-license\\\", \\n                    \\\"MasterUsername\\\": \\\"testuser\\\", \\n                    \\\"MonitoringInterval\\\": 0, \\n                    \\\"MultiAZ\\\": false, \\n                    \\\"OptionGroupMemberships\\\": [\\n                        {\\n                            \\\"OptionGroupName\\\": \\\"test-option-group\\\", \\n                            \\\"Status\\\": \\\"in-sync\\\"\\n                        }\\n                    ], \\n                    \\\"PendingModifiedValues\\\": {}, \\n                    \\\"PreferredBackupWindow\\\": \\\"17:54-18:24\\\", \\n                    \\\"PreferredMaintenanceWindow\\\": \\\"fri:12:54-fri:13:24\\\", \\n                    \\\"PubliclyAccessible\\\": false, \\n                    \\\"ReadReplicaDBInstanceIdentifiers\\\": [], \\n                    \\\"StorageEncrypted\\\": false, \\n                    \\\"StorageType\\\": \\\"standard\\\", \\n                    \\\"VpcSecurityGroups\\\": [\\n                        {\\n                            \\\"Status\\\": \\\"active\\\", \\n                            \\\"VpcSecurityGroupId\\\": \\\"sg-d188c123\\\"\\n                        }\\n                    ]\\n                }\\n            ], \\n            \\\"ResponseMetadata\\\": {\\n                \\\"HTTPStatusCode\\\": 200, \\n                \\\"RequestId\\\": \\\"022114a4-71aa-11e6-8a7d-bd9007adb1d5\\\"\\n            }\\n        }\\n    }\\n}\\n```\\n\", \n    \"component_name\": \"rds_v2\", \n    \"component_raw\": \"rds_v2\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19783\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/rds_v2.py\", \n    \"summary\": \"This module manages the creation, modification, deletion, snapshot, restore, reboot, replicate and promote of RDS Instances in AWS.\\n\\nNote: Technically this is a rewrite of the existing core RDS module and while I believe rewrites using older API's aren't being included until 2.3 I thought people could still use this in the meantime, especially if support for Aurora is required. \\n\\n```\\nTASK [print new RDS instance] **************************************************\\nok: [localhost] => {\\n    \\\"msg\\\": {\\n        \\\"changed\\\": true, \\n        \\\"rds\\\": {\\n            \\\"DBInstances\\\": [\\n                {\\n                    \\\"AllocatedStorage\\\": 10, \\n                    \\\"AutoMinorVersionUpgrade\\\": true, \\n                    \\\"AvailabilityZone\\\": \\\"ap-southeast-2a\\\", \\n                    \\\"BackupRetentionPeriod\\\": 10, \\n                    \\\"CACertificateIdentifier\\\": \\\"rds-ca-2015\\\", \\n                    \\\"CopyTagsToSnapshot\\\": false, \\n                    \\\"DBInstanceClass\\\": \\\"db.t2.medium\\\", \\n                    \\\"DBInstanceIdentifier\\\": \\\"test-instance\\\", \\n                    \\\"DBInstanceStatus\\\": \\\"available\\\", \\n                    \\\"DBParameterGroups\\\": [\\n                        {\\n                            \\\"DBParameterGroupName\\\": \\\"test-param-group\\\", \\n                            \\\"ParameterApplyStatus\\\": \\\"in-sync\\\"\\n                        }\\n                    ], \\n                    \\\"DBSecurityGroups\\\": [], \\n                    \\\"DBSubnetGroup\\\": {\\n                        \\\"DBSubnetGroupDescription\\\": \\\"test subnet group\\\", \\n                        \\\"DBSubnetGroupName\\\": \\\"test-subnet-group\\\", \\n                        \\\"SubnetGroupStatus\\\": \\\"Complete\\\", \\n                        \\\"Subnets\\\": [\\n                            {\\n                                \\\"SubnetAvailabilityZone\\\": {\\n                                    \\\"Name\\\": \\\"ap-southeast-2a\\\"\\n                                }, \\n                                \\\"SubnetIdentifier\\\": \\\"subnet-75ed1123\\\", \\n                                \\\"SubnetStatus\\\": \\\"Active\\\"\\n                            }, \\n                            {\\n                                \\\"SubnetAvailabilityZone\\\": {\\n                                    \\\"Name\\\": \\\"ap-southeast-2b\\\"\\n                                }, \\n                                \\\"SubnetIdentifier\\\": \\\"subnet-6ae33123\\\", \\n                                \\\"SubnetStatus\\\": \\\"Active\\\"\\n                            }\\n                        ], \\n                        \\\"VpcId\\\": \\\"vpc-aad24acf\\\"\\n                    }, \\n                    \\\"DbInstancePort\\\": 0, \\n                    \\\"DbiResourceId\\\": \\\"db-7ZINBVLFLHNOT5ROFK76T4XXXX\\\", \\n                    \\\"Endpoint\\\": {\\n                        \\\"Address\\\": \\\"test-instance2.c4nb0jta2bug.ap-southeast-2.rds.amazonaws.com\\\", \\n                        \\\"HostedZoneId\\\": \\\"Z32T0VRHXEXXXX\\\", \\n                        \\\"Port\\\": 3306\\n                    }, \\n                    \\\"Engine\\\": \\\"mysql\\\", \\n                    \\\"EngineVersion\\\": \\\"5.6.27\\\", \\n                    \\\"InstanceCreateTime\\\": \\\"2016-09-03T07:36:28.832000+00:00\\\", \\n                    \\\"LatestRestorableTime\\\": \\\"2016-09-03T07:40:00+00:00\\\", \\n                    \\\"LicenseModel\\\": \\\"general-public-license\\\", \\n                    \\\"MasterUsername\\\": \\\"testuser\\\", \\n                    \\\"MonitoringInterval\\\": 0, \\n                    \\\"MultiAZ\\\": false, \\n                    \\\"OptionGroupMemberships\\\": [\\n                        {\\n                            \\\"OptionGroupName\\\": \\\"test-option-group\\\", \\n                            \\\"Status\\\": \\\"in-sync\\\"\\n                        }\\n                    ], \\n                    \\\"PendingModifiedValues\\\": {}, \\n                    \\\"PreferredBackupWindow\\\": \\\"17:54-18:24\\\", \\n                    \\\"PreferredMaintenanceWindow\\\": \\\"fri:12:54-fri:13:24\\\", \\n                    \\\"PubliclyAccessible\\\": false, \\n                    \\\"ReadReplicaDBInstanceIdentifiers\\\": [], \\n                    \\\"StorageEncrypted\\\": false, \\n                    \\\"StorageType\\\": \\\"standard\\\", \\n                    \\\"VpcSecurityGroups\\\": [\\n                        {\\n                            \\\"Status\\\": \\\"active\\\", \\n                            \\\"VpcSecurityGroupId\\\": \\\"sg-d188c123\\\"\\n                        }\\n                    ]\\n                }\\n            ], \\n            \\\"ResponseMetadata\\\": {\\n                \\\"HTTPStatusCode\\\": 200, \\n                \\\"RequestId\\\": \\\"022114a4-71aa-11e6-8a7d-bd9007adb1d5\\\"\\n            }\\n        }\\n    }\\n}\\n```\", \n    \"title\": \"New AWS module for managing RDS instance using newer boto3 API\"\n  }, \n  \"19784\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel e396d5d508) last updated 2016/08/24 121310 (GMT +1000)\\nlib/ansible/modules/core (detached HEAD 368ca738fa) last updated 2016/08/24 121321 (GMT +1000)\\nlib/ansible/modules/extras (detached HEAD 0749ce6faa) last updated 2016/08/24 121330 (GMT +1000)\", \n    \"body\": \"##### ISSUE TYPE\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\nrds_cluster_param_group\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0 (devel e396d5d508) last updated 2016/08/24 12:13:10 (GMT +1000)\\n  lib/ansible/modules/core: (detached HEAD 368ca738fa) last updated 2016/08/24 12:13:21 (GMT +1000)\\n  lib/ansible/modules/extras: (detached HEAD 0749ce6faa) last updated 2016/08/24 12:13:30 (GMT +1000)\\n```\\n##### SUMMARY\\n\\nThis module manages the creation, modification and deletion of RDS Cluster (aurora) parameter groups and the associated parameters. \\n\\n```\\nTASK [print cluster param group] ***********************************************\\nok: [localhost] => {\\n    \\\"msg\\\": {\\n        \\\"changed\\\": true, \\n        \\\"cluster_param_group\\\": {\\n            \\\"DBClusterParameterGroups\\\": [\\n                {\\n                    \\\"DBClusterParameterGroupName\\\": \\\"test-cluster-param-group\\\", \\n                    \\\"DBParameterGroupFamily\\\": \\\"aurora5.6\\\", \\n                    \\\"Description\\\": \\\"test cluster param group\\\"\\n                }\\n            ], \\n            \\\"ResponseMetadata\\\": {\\n                \\\"HTTPStatusCode\\\": 200, \\n                \\\"RequestId\\\": \\\"819c2d36-7e53-11e6-bf6b-6961a087f3da\\\"\\n            }\\n        }\\n    }\\n}\\n\\n```\\n\", \n    \"component_name\": \"rds_cluster_param_group\", \n    \"component_raw\": \"rds_cluster_param_group\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19784\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/rds_cluster_param_group.py\", \n    \"summary\": \"This module manages the creation, modification and deletion of RDS Cluster (aurora) parameter groups and the associated parameters. \\n\\n```\\nTASK [print cluster param group] ***********************************************\\nok: [localhost] => {\\n    \\\"msg\\\": {\\n        \\\"changed\\\": true, \\n        \\\"cluster_param_group\\\": {\\n            \\\"DBClusterParameterGroups\\\": [\\n                {\\n                    \\\"DBClusterParameterGroupName\\\": \\\"test-cluster-param-group\\\", \\n                    \\\"DBParameterGroupFamily\\\": \\\"aurora5.6\\\", \\n                    \\\"Description\\\": \\\"test cluster param group\\\"\\n                }\\n            ], \\n            \\\"ResponseMetadata\\\": {\\n                \\\"HTTPStatusCode\\\": 200, \\n                \\\"RequestId\\\": \\\"819c2d36-7e53-11e6-bf6b-6961a087f3da\\\"\\n            }\\n        }\\n    }\\n}\\n\\n```\", \n    \"title\": \"New AWS module for managing RDS Cluster parameter groups\"\n  }, \n  \"19785\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel e396d5d508) last updated 2016/08/24 121310 (GMT +1000)\\nlib/ansible/modules/core (detached HEAD 368ca738fa) last updated 2016/08/24 121321 (GMT +1000)\\nlib/ansible/modules/extras (detached HEAD 0749ce6faa) last updated 2016/08/24 121330 (GMT +1000)\", \n    \"body\": \"##### ISSUE TYPE\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\nrds_facts\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0 (devel e396d5d508) last updated 2016/08/24 12:13:10 (GMT +1000)\\n  lib/ansible/modules/core: (detached HEAD 368ca738fa) last updated 2016/08/24 12:13:21 (GMT +1000)\\n  lib/ansible/modules/extras: (detached HEAD 0749ce6faa) last updated 2016/08/24 12:13:30 (GMT +1000)\\n```\\n##### SUMMARY\\n\\nThis is a facts module for describing RDS instances in AWS using the current boto3 API.\\n\\nNote: There is a facts command option within the older RDS module however this uses the old API and doesn't provide information required for working with Aurora, encryption and other newer features. \\n\\n```\\nTASK [print rds facts] *********************************************************\\nok: [localhost] => {\\n    \\\"msg\\\": {\\n        \\\"changed\\\": false, \\n        \\\"db_instances\\\": [\\n            {\\n                \\\"AllocatedStorage\\\": 25, \\n                \\\"AutoMinorVersionUpgrade\\\": true, \\n                \\\"AvailabilityZone\\\": \\\"ap-southeast-2b\\\", \\n                \\\"BackupRetentionPeriod\\\": 7, \\n                \\\"CACertificateIdentifier\\\": \\\"rds-ca-2015\\\", \\n                \\\"CopyTagsToSnapshot\\\": false, \\n                \\\"DBInstanceClass\\\": \\\"db.t2.medium\\\", \\n                \\\"DBInstanceIdentifier\\\": \\\"test-instance\\\", \\n                \\\"DBInstanceStatus\\\": \\\"available\\\", \\n                \\\"DBParameterGroups\\\": [\\n                    {\\n                        \\\"DBParameterGroupName\\\": \\\"test-param-group\\\", \\n                        \\\"ParameterApplyStatus\\\": \\\"in-sync\\\"\\n                    }\\n                ], \\n                \\\"DBSecurityGroups\\\": [], \\n                \\\"DBSubnetGroup\\\": {\\n                    \\\"DBSubnetGroupDescription\\\": \\\"Dev subnet group\\\", \\n                    \\\"DBSubnetGroupName\\\": \\\"test-subnet-group\\\", \\n                    \\\"SubnetGroupStatus\\\": \\\"Complete\\\", \\n                    \\\"Subnets\\\": [\\n                        {\\n                            \\\"SubnetAvailabilityZone\\\": {\\n                                \\\"Name\\\": \\\"ap-southeast-2b\\\"\\n                            }, \\n                            \\\"SubnetIdentifier\\\": \\\"subnet-25bef123\\\", \\n                            \\\"SubnetStatus\\\": \\\"Active\\\"\\n                        }, \\n                        {\\n                            \\\"SubnetAvailabilityZone\\\": {\\n                                \\\"Name\\\": \\\"ap-southeast-2a\\\"\\n                            }, \\n                            \\\"SubnetIdentifier\\\": \\\"subnet-ac680123\\\", \\n                            \\\"SubnetStatus\\\": \\\"Active\\\"\\n                        }\\n                    ], \\n                    \\\"VpcId\\\": \\\"vpc-aad24123\\\"\\n                }, \\n                \\\"DbInstancePort\\\": 0, \\n                \\\"DbiResourceId\\\": \\\"db-WJWNIULS77P3NJY7RGZNCPHTBA\\\", \\n                \\\"Endpoint\\\": {\\n                    \\\"Address\\\": \\\"test-instance.c4nb0jta2bug.ap-southeast-2.rds.amazonaws.com\\\", \\n                    \\\"HostedZoneId\\\": \\\"Z32T0VRHXEXXXX\\\", \\n                    \\\"Port\\\": 3306\\n                }, \\n                \\\"Engine\\\": \\\"mysql\\\", \\n                \\\"EngineVersion\\\": \\\"5.6.23\\\", \\n                \\\"InstanceCreateTime\\\": \\\"2016-09-04T08:58:56.275000+00:00\\\", \\n                \\\"LatestRestorableTime\\\": \\\"2016-09-04T09:10:00+00:00\\\", \\n                \\\"LicenseModel\\\": \\\"general-public-license\\\", \\n                \\\"MasterUsername\\\": \\\"root\\\", \\n                \\\"MonitoringInterval\\\": 0, \\n                \\\"MultiAZ\\\": false, \\n                \\\"OptionGroupMemberships\\\": [\\n                    {\\n                        \\\"OptionGroupName\\\": \\\"test-option-group\\\", \\n                        \\\"Status\\\": \\\"in-sync\\\"\\n                    }\\n                ], \\n                \\\"PendingModifiedValues\\\": {}, \\n                \\\"PreferredBackupWindow\\\": \\\"12:37-13:07\\\", \\n                \\\"PreferredMaintenanceWindow\\\": \\\"sat:19:06-sat:19:36\\\", \\n                \\\"PubliclyAccessible\\\": false, \\n                \\\"ReadReplicaDBInstanceIdentifiers\\\": [], \\n                \\\"StorageEncrypted\\\": false, \\n                \\\"StorageType\\\": \\\"gp2\\\", \\n                \\\"VpcSecurityGroups\\\": [\\n                    {\\n                        \\\"Status\\\": \\\"active\\\", \\n                        \\\"VpcSecurityGroupId\\\": \\\"sg-a5838123\\\"\\n                    }\\n                ]\\n            }\\n        ]\\n    }\\n}\\n```\\n\", \n    \"component_name\": \"rds_facts\", \n    \"component_raw\": \"rds_facts\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19785\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/rds_facts.py\", \n    \"summary\": \"This is a facts module for describing RDS instances in AWS using the current boto3 API.\\n\\nNote: There is a facts command option within the older RDS module however this uses the old API and doesn't provide information required for working with Aurora, encryption and other newer features. \\n\\n```\\nTASK [print rds facts] *********************************************************\\nok: [localhost] => {\\n    \\\"msg\\\": {\\n        \\\"changed\\\": false, \\n        \\\"db_instances\\\": [\\n            {\\n                \\\"AllocatedStorage\\\": 25, \\n                \\\"AutoMinorVersionUpgrade\\\": true, \\n                \\\"AvailabilityZone\\\": \\\"ap-southeast-2b\\\", \\n                \\\"BackupRetentionPeriod\\\": 7, \\n                \\\"CACertificateIdentifier\\\": \\\"rds-ca-2015\\\", \\n                \\\"CopyTagsToSnapshot\\\": false, \\n                \\\"DBInstanceClass\\\": \\\"db.t2.medium\\\", \\n                \\\"DBInstanceIdentifier\\\": \\\"test-instance\\\", \\n                \\\"DBInstanceStatus\\\": \\\"available\\\", \\n                \\\"DBParameterGroups\\\": [\\n                    {\\n                        \\\"DBParameterGroupName\\\": \\\"test-param-group\\\", \\n                        \\\"ParameterApplyStatus\\\": \\\"in-sync\\\"\\n                    }\\n                ], \\n                \\\"DBSecurityGroups\\\": [], \\n                \\\"DBSubnetGroup\\\": {\\n                    \\\"DBSubnetGroupDescription\\\": \\\"Dev subnet group\\\", \\n                    \\\"DBSubnetGroupName\\\": \\\"test-subnet-group\\\", \\n                    \\\"SubnetGroupStatus\\\": \\\"Complete\\\", \\n                    \\\"Subnets\\\": [\\n                        {\\n                            \\\"SubnetAvailabilityZone\\\": {\\n                                \\\"Name\\\": \\\"ap-southeast-2b\\\"\\n                            }, \\n                            \\\"SubnetIdentifier\\\": \\\"subnet-25bef123\\\", \\n                            \\\"SubnetStatus\\\": \\\"Active\\\"\\n                        }, \\n                        {\\n                            \\\"SubnetAvailabilityZone\\\": {\\n                                \\\"Name\\\": \\\"ap-southeast-2a\\\"\\n                            }, \\n                            \\\"SubnetIdentifier\\\": \\\"subnet-ac680123\\\", \\n                            \\\"SubnetStatus\\\": \\\"Active\\\"\\n                        }\\n                    ], \\n                    \\\"VpcId\\\": \\\"vpc-aad24123\\\"\\n                }, \\n                \\\"DbInstancePort\\\": 0, \\n                \\\"DbiResourceId\\\": \\\"db-WJWNIULS77P3NJY7RGZNCPHTBA\\\", \\n                \\\"Endpoint\\\": {\\n                    \\\"Address\\\": \\\"test-instance.c4nb0jta2bug.ap-southeast-2.rds.amazonaws.com\\\", \\n                    \\\"HostedZoneId\\\": \\\"Z32T0VRHXEXXXX\\\", \\n                    \\\"Port\\\": 3306\\n                }, \\n                \\\"Engine\\\": \\\"mysql\\\", \\n                \\\"EngineVersion\\\": \\\"5.6.23\\\", \\n                \\\"InstanceCreateTime\\\": \\\"2016-09-04T08:58:56.275000+00:00\\\", \\n                \\\"LatestRestorableTime\\\": \\\"2016-09-04T09:10:00+00:00\\\", \\n                \\\"LicenseModel\\\": \\\"general-public-license\\\", \\n                \\\"MasterUsername\\\": \\\"root\\\", \\n                \\\"MonitoringInterval\\\": 0, \\n                \\\"MultiAZ\\\": false, \\n                \\\"OptionGroupMemberships\\\": [\\n                    {\\n                        \\\"OptionGroupName\\\": \\\"test-option-group\\\", \\n                        \\\"Status\\\": \\\"in-sync\\\"\\n                    }\\n                ], \\n                \\\"PendingModifiedValues\\\": {}, \\n                \\\"PreferredBackupWindow\\\": \\\"12:37-13:07\\\", \\n                \\\"PreferredMaintenanceWindow\\\": \\\"sat:19:06-sat:19:36\\\", \\n                \\\"PubliclyAccessible\\\": false, \\n                \\\"ReadReplicaDBInstanceIdentifiers\\\": [], \\n                \\\"StorageEncrypted\\\": false, \\n                \\\"StorageType\\\": \\\"gp2\\\", \\n                \\\"VpcSecurityGroups\\\": [\\n                    {\\n                        \\\"Status\\\": \\\"active\\\", \\n                        \\\"VpcSecurityGroupId\\\": \\\"sg-a5838123\\\"\\n                    }\\n                ]\\n            }\\n        ]\\n    }\\n}\\n```\", \n    \"title\": \"New AWS module for describing RDS facts using boto3\"\n  }, \n  \"19786\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel c5d3aac822) last updated 2017/01/15 124425 (GMT +1000)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- New Module Pull Request\\r\\n##### COMPONENT NAME\\r\\n\\r\\nrds_option_group\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n\\r\\n```\\r\\nansible 2.3.0 (devel c5d3aac822) last updated 2017/01/15 12:44:25 (GMT +1000)\\r\\n```\\r\\n##### SUMMARY\\r\\n\\r\\nThis module manages the creation, modification, deletion of RDS Option groups and the associated options applied to those groups. \\r\\n\\r\\nNote: Some of the options list output has been removed for the sake of brevity. \\r\\n\\r\\n```\\r\\nTASK [print new option group] **************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": {\\r\\n        \\\"changed\\\": true, \\r\\n        \\\"option_group\\\": {\\r\\n            \\\"OptionGroupsList\\\": [\\r\\n                {\\r\\n                    \\\"AllowsVpcAndNonVpcInstanceMemberships\\\": false, \\r\\n                    \\\"EngineName\\\": \\\"mysql\\\", \\r\\n                    \\\"MajorEngineVersion\\\": \\\"5.6\\\", \\r\\n                    \\\"OptionGroupDescription\\\": \\\"test mysql option group\\\", \\r\\n                    \\\"OptionGroupName\\\": \\\"test-mysql-option-group\\\", \\r\\n                    \\\"Options\\\": [\\r\\n                        {\\r\\n                            \\\"DBSecurityGroupMemberships\\\": [], \\r\\n                            \\\"OptionDescription\\\": \\\"Innodb Memcached for MySQL\\\", \\r\\n                            \\\"OptionName\\\": \\\"MEMCACHED\\\", \\r\\n                            \\\"OptionSettings\\\": [\\r\\n                                {\\r\\n                                    \\\"AllowedValues\\\": \\\"1-2\\\", \\r\\n                                    \\\"ApplyType\\\": \\\"STATIC\\\", \\r\\n                                    \\\"DataType\\\": \\\"FLOAT\\\", \\r\\n                                    \\\"DefaultValue\\\": \\\"1.25\\\", \\r\\n                                    \\\"Description\\\": \\\"Chunk size growth factor that controls the size of each successive chunk with each chunk growing times this amount larger than the previous chunk.\\\", \\r\\n                                    \\\"IsCollection\\\": false, \\r\\n                                    \\\"IsModifiable\\\": true, \\r\\n                                    \\\"Name\\\": \\\"CHUNK_SIZE_GROWTH_FACTOR\\\", \\r\\n                                    \\\"Value\\\": \\\"1.35\\\"\\r\\n                                }, \\r\\n                                {\\r\\n                                    \\\"AllowedValues\\\": \\\"10-1024\\\", \\r\\n                                    \\\"ApplyType\\\": \\\"STATIC\\\", \\r\\n                                    \\\"DataType\\\": \\\"INTEGER\\\", \\r\\n                                    \\\"DefaultValue\\\": \\\"1024\\\", \\r\\n                                    \\\"Description\\\": \\\"Maximum number of concurrent connections. Setting this value to anything less than 10 prevents MySQL from starting.\\\", \\r\\n                                    \\\"IsCollection\\\": false, \\r\\n                                    \\\"IsModifiable\\\": true, \\r\\n                                    \\\"Name\\\": \\\"MAX_SIMULTANEOUS_CONNECTIONS\\\", \\r\\n                                    \\\"Value\\\": \\\"20\\\"\\r\\n                                }\\r\\n                            ], \\r\\n                            \\\"Permanent\\\": false, \\r\\n                            \\\"Persistent\\\": false, \\r\\n                            \\\"Port\\\": 11211, \\r\\n                            \\\"VpcSecurityGroupMemberships\\\": [\\r\\n                                {\\r\\n                                    \\\"Status\\\": \\\"active\\\", \\r\\n                                    \\\"VpcSecurityGroupId\\\": \\\"sg-d188c123\\\"\\r\\n                                }\\r\\n                            ]\\r\\n                        }\\r\\n                    ], \\r\\n                    \\\"VpcId\\\": \\\"vpc-aad24123\\\"\\r\\n                }\\r\\n            ], \\r\\n            \\\"ResponseMetadata\\\": {\\r\\n                \\\"HTTPStatusCode\\\": 200, \\r\\n                \\\"RequestId\\\": \\\"cb9bf613-7027-11e6-8515-d3586c4629c2\\\"\\r\\n            }\\r\\n        }\\r\\n    }\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"rds_option_group\", \n    \"component_raw\": \"rds_option_group\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19786\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/rds_option_group.py\", \n    \"summary\": \"This module manages the creation, modification, deletion of RDS Option groups and the associated options applied to those groups. \\n\\n\\n\\nNote: Some of the options list output has been removed for the sake of brevity. \\n\\n\\n\\n```\\n\\nTASK [print new option group] **************************************************\\n\\nok: [localhost] => {\\n\\n    \\\"msg\\\": {\\n\\n        \\\"changed\\\": true, \\n\\n        \\\"option_group\\\": {\\n\\n            \\\"OptionGroupsList\\\": [\\n\\n                {\\n\\n                    \\\"AllowsVpcAndNonVpcInstanceMemberships\\\": false, \\n\\n                    \\\"EngineName\\\": \\\"mysql\\\", \\n\\n                    \\\"MajorEngineVersion\\\": \\\"5.6\\\", \\n\\n                    \\\"OptionGroupDescription\\\": \\\"test mysql option group\\\", \\n\\n                    \\\"OptionGroupName\\\": \\\"test-mysql-option-group\\\", \\n\\n                    \\\"Options\\\": [\\n\\n                        {\\n\\n                            \\\"DBSecurityGroupMemberships\\\": [], \\n\\n                            \\\"OptionDescription\\\": \\\"Innodb Memcached for MySQL\\\", \\n\\n                            \\\"OptionName\\\": \\\"MEMCACHED\\\", \\n\\n                            \\\"OptionSettings\\\": [\\n\\n                                {\\n\\n                                    \\\"AllowedValues\\\": \\\"1-2\\\", \\n\\n                                    \\\"ApplyType\\\": \\\"STATIC\\\", \\n\\n                                    \\\"DataType\\\": \\\"FLOAT\\\", \\n\\n                                    \\\"DefaultValue\\\": \\\"1.25\\\", \\n\\n                                    \\\"Description\\\": \\\"Chunk size growth factor that controls the size of each successive chunk with each chunk growing times this amount larger than the previous chunk.\\\", \\n\\n                                    \\\"IsCollection\\\": false, \\n\\n                                    \\\"IsModifiable\\\": true, \\n\\n                                    \\\"Name\\\": \\\"CHUNK_SIZE_GROWTH_FACTOR\\\", \\n\\n                                    \\\"Value\\\": \\\"1.35\\\"\\n\\n                                }, \\n\\n                                {\\n\\n                                    \\\"AllowedValues\\\": \\\"10-1024\\\", \\n\\n                                    \\\"ApplyType\\\": \\\"STATIC\\\", \\n\\n                                    \\\"DataType\\\": \\\"INTEGER\\\", \\n\\n                                    \\\"DefaultValue\\\": \\\"1024\\\", \\n\\n                                    \\\"Description\\\": \\\"Maximum number of concurrent connections. Setting this value to anything less than 10 prevents MySQL from starting.\\\", \\n\\n                                    \\\"IsCollection\\\": false, \\n\\n                                    \\\"IsModifiable\\\": true, \\n\\n                                    \\\"Name\\\": \\\"MAX_SIMULTANEOUS_CONNECTIONS\\\", \\n\\n                                    \\\"Value\\\": \\\"20\\\"\\n\\n                                }\\n\\n                            ], \\n\\n                            \\\"Permanent\\\": false, \\n\\n                            \\\"Persistent\\\": false, \\n\\n                            \\\"Port\\\": 11211, \\n\\n                            \\\"VpcSecurityGroupMemberships\\\": [\\n\\n                                {\\n\\n                                    \\\"Status\\\": \\\"active\\\", \\n\\n                                    \\\"VpcSecurityGroupId\\\": \\\"sg-d188c123\\\"\\n\\n                                }\\n\\n                            ]\\n\\n                        }\\n\\n                    ], \\n\\n                    \\\"VpcId\\\": \\\"vpc-aad24123\\\"\\n\\n                }\\n\\n            ], \\n\\n            \\\"ResponseMetadata\\\": {\\n\\n                \\\"HTTPStatusCode\\\": 200, \\n\\n                \\\"RequestId\\\": \\\"cb9bf613-7027-11e6-8515-d3586c4629c2\\\"\\n\\n            }\\n\\n        }\\n\\n    }\\n\\n}\\n\\n```\", \n    \"title\": \"New AWS module rds_option_group.py\"\n  }, \n  \"19787\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel c5d3aac822) last updated 2017/01/15 124425 (GMT +1000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- New Module Pull Request\\r\\n##### COMPONENT NAME\\r\\n\\r\\nec2_vpc_igw_facts\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 (devel c5d3aac822) last updated 2017/01/15 12:44:25 (GMT +1000)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n\\r\\n```\\r\\n##### SUMMARY\\r\\n\\r\\nThis module returns internet gateway facts for an AWS account.\\r\\n\\r\\n```\\r\\nTASK [print output] ************************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": {\\r\\n        \\\"changed\\\": false, \\r\\n        \\\"internet_gateways\\\": [\\r\\n            {\\r\\n                \\\"attachments\\\": [\\r\\n                    {\\r\\n                        \\\"state\\\": \\\"available\\\", \\r\\n                        \\\"vpc_id\\\": \\\"vpc-02642b23\\\"\\r\\n                    }\\r\\n                ], \\r\\n                \\\"internet_gateway_id\\\": \\\"igw-12e3645d\\\", \\r\\n                \\\"tags\\\": [\\r\\n                    {\\r\\n                        \\\"key\\\": \\\"Name\\\", \\r\\n                        \\\"value\\\": \\\"igw-test\\\"\\r\\n                    }\\r\\n                ]\\r\\n            }\\r\\n        ]\\r\\n    }\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"ec2_vpc_igw_facts\", \n    \"component_raw\": \"ec2_vpc_igw_facts\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19787\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw_facts.py\", \n    \"summary\": \"This module returns internet gateway facts for an AWS account.\\n\\n\\n\\n```\\n\\nTASK [print output] ************************************************************\\n\\nok: [localhost] => {\\n\\n    \\\"msg\\\": {\\n\\n        \\\"changed\\\": false, \\n\\n        \\\"internet_gateways\\\": [\\n\\n            {\\n\\n                \\\"attachments\\\": [\\n\\n                    {\\n\\n                        \\\"state\\\": \\\"available\\\", \\n\\n                        \\\"vpc_id\\\": \\\"vpc-02642b23\\\"\\n\\n                    }\\n\\n                ], \\n\\n                \\\"internet_gateway_id\\\": \\\"igw-12e3645d\\\", \\n\\n                \\\"tags\\\": [\\n\\n                    {\\n\\n                        \\\"key\\\": \\\"Name\\\", \\n\\n                        \\\"value\\\": \\\"igw-test\\\"\\n\\n                    }\\n\\n                ]\\n\\n            }\\n\\n        ]\\n\\n    }\\n\\n}\\n\\n```\", \n    \"title\": \"New AWS module for ec2 internet gateway facts\"\n  }, \n  \"19788\": {\n    \"ansible_version\": \"ansible 2.0.2.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\ndatadog_dashboard\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.0.2.0\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nAllows you to manage Datadog screenboards and timeboards.\\n\\nUseful if you have an environment-specific prefix and thus need to clone an existing dashboard with slightly varying configuration, or simply if you want to put these configurations under version control. The module exports the remote dashboard as a fact in check mode, thus allowing you to bootstrap the configuration for existing dashboards.\\n\", \n    \"component_name\": \"datadog_dashboard\", \n    \"component_raw\": \"datadog_dashboard\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19788\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/monitoring/datadog_dashboard.py\", \n    \"summary\": \"Allows you to manage Datadog screenboards and timeboards.\\n\\nUseful if you have an\", \n    \"title\": \"Add a module to manage Datadog dashboards\"\n  }, \n  \"19789\": {\n    \"ansible_version\": \"ansible-playbook --version\\nansible-playbook 2.1.3.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\\nbut also verified bug in devel branch\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nhttps://github.com/ansible/ansible/blob/devel/lib/ansible/modules/cloud/amazon/ec2_group.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible-playbook --version\\r\\nansible-playbook 2.1.3.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\nbut also verified bug in devel branch\\r\\n\\r\\n##### CONFIGURATION\\r\\nnothing special\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nosx / don't think it is os related\\r\\n\\r\\n##### SUMMARY\\r\\nec2_group does not handle that the description property is immutable for some cases\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n(I've added an integration test to my pull request)\\r\\n\\r\\n```yaml\\r\\n- name: test state=present (expected changed=true)\\r\\n  ec2_group:\\r\\n    name='{{ec2_group_name}}'\\r\\n    description='{{ec2_group_description}}'\\r\\n    state=present\\r\\n# ============================================================\\r\\n- name: test state=present different description raises error\\r\\n  ec2_group:\\r\\n    name='{{ec2_group_name}}'\\r\\n    description='{{ec2_group_description}}CHANGED'\\r\\n    state=present\\r\\n### Ansible will not report that the description was actually not updated unless the SG is currently used\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nAnsible ought to report that updating descriptions is always not possible.\\r\\nAlso Ansible ought not fetch the entire EC2 inventory as part of checking whether to error\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nNo error\\r\\n\", \n    \"component_name\": \"https//github.com/ansible/ansible/blob/devel/lib/ansible/modules/cloud/amazon/ec2_group.py\", \n    \"component_raw\": \"https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/cloud/amazon/ec2_group.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19789\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_group.py\", \n    \"summary\": \"ec2_group does not handle that the description property is immutable for some cases\", \n    \"title\": \"ec2_group: does not handle immutable description property properly \"\n  }, \n  \"19798\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\ntest/integration/targets/dnf/tasks/dnf.yml\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3 \\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nlinux/fedora-rawhide/1  at shippable\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\npull request, run shippable CI timeout\\uff1a\\r\\nhttps://app.shippable.com/runs/586b3c37f6c7101000c4b0ce/10/console\\r\\nhttps://app.shippable.com/runs/586a435f07d537130074937c/10/console\\r\\nhttps://app.shippable.com/runs/586a1537f6c7101000c46dc4/10/console\\r\\nA lot of shippable test exceptions\\uff0cwhat's wrong? \\r\\n\\r\\n2017-01-02 08:58:42 TASK [dnf : uninstall python2-dnf with shell] **********************************\\r\\n2017-01-02 08:58:42 task path: /root/ansible/test/integration/targets/dnf/tasks/dnf.yml:12\\r\\n2017-01-02 08:58:42 Using module file /root/ansible/lib/ansible/modules/commands/command.py\\r\\n2017-01-02 08:58:42 <127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: root\\r\\n2017-01-02 08:58:42 <127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo ~/.ansible/tmp/ansible-tmp-1483347522.98-255967491825593 `\\\" && echo ansible-tmp-1483347522.98-255967491825593=\\\"` echo ~/.ansible/tmp/ansible-tmp-1483347522.98-255967491825593 `\\\" ) && sleep 0'\\r\\n2017-01-02 08:58:42 <127.0.0.1> PUT /tmp/tmpFIkpXO TO /root/.ansible/tmp/ansible-tmp-1483347522.98-255967491825593/command.py\\r\\n2017-01-02 08:58:42 <127.0.0.1> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1483347522.98-255967491825593/ /root/.ansible/tmp/ansible-tmp-1483347522.98-255967491825593/command.py && sleep 0'\\r\\n2017-01-02 08:58:42 <127.0.0.1> EXEC /bin/sh -c '/tmp/ansible-test-coverage-E_KyZH/coverage/runner2.7 /root/.ansible/tmp/ansible-tmp-1483347522.98-255967491825593/command.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1483347522.98-255967491825593/\\\" > /dev/null 2>&1 && sleep 0'\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n1. create a pull request\\r\\n2. run shippable test automatic\\r\\n3.  Shippable \\u2014 Run XXX status is TIMEOUT, e.g.\\r\\nhttps://app.shippable.com/runs/586a1537f6c7101000c46dc4/10/console\\r\\n\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- name: uninstall python2-dnf with shell\\r\\n  shell: dnf -y remove python2-dnf\\r\\n  when: rpm_result|success\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\nhttps://github.com/ansible/ansible/blob/devel/test/integration/targets/dnf/tasks/dnf.yml\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nshippable run ok\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nnot involving\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"test/integration/targets/dnf/tasks/dnf.yml\", \n    \"component_raw\": \"test/integration/targets/dnf/tasks/dnf.yml\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19798\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"pull request, run shippable CI timeout\\n\\nhttps://app.shippable.com/runs/586b3c37f6c7101000c4b0ce/10/console\\n\\nhttps://app.shippable.com/runs/586a435f07d537130074937c/10/console\\n\\nhttps://app.shippable.com/runs/586a1537f6c7101000c46dc4/10/console\\n\\nA lot of shippable test exceptionswhat's wrong? \\n\\n\\n\\n2017-01-02 08:58:42 TASK [dnf : uninstall python2-dnf with shell] **********************************\\n\\n2017-01-02 08:58:42 task path: /root/ansible/test/integration/targets/dnf/tasks/dnf.yml:12\\n\\n2017-01-02 08:58:42 Using module file /root/ansible/lib/ansible/modules/commands/command.py\\n\\n2017-01-02 08:58:42 <127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: root\\n\\n2017-01-02 08:58:42 <127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo ~/.ansible/tmp/ansible-tmp-1483347522.98-255967491825593 `\\\" && echo ansible-tmp-1483347522.98-255967491825593=\\\"` echo ~/.ansible/tmp/ansible-tmp-1483347522.98-255967491825593 `\\\" ) && sleep 0'\\n\\n2017-01-02 08:58:42 <127.0.0.1> PUT /tmp/tmpFIkpXO TO /root/.ansible/tmp/ansible-tmp-1483347522.98-255967491825593/command.py\\n\\n2017-01-02 08:58:42 <127.0.0.1> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1483347522.98-255967491825593/ /root/.ansible/tmp/ansible-tmp-1483347522.98-255967491825593/command.py && sleep 0'\\n\\n2017-01-02 08:58:42 <127.0.0.1> EXEC /bin/sh -c '/tmp/ansible-test-coverage-E_KyZH/coverage/runner2.7 /root/.ansible/tmp/ansible-tmp-1483347522.98-255967491825593/command.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1483347522.98-255967491825593/\\\" > /dev/null 2>&1 && sleep 0'\", \n    \"title\": \"shippable test timeout at dnf integration test\"\n  }, \n  \"19800\": {\n    \"ansible_version\": \"v2.2\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nacl, blockinfile, ini_file, lineinfile, mount, replace, stat, win_lineinfile, xattr\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.2\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nNot all file-related modules consistently use \\\"path\\\" as the attribute to specify a single filename, some use \\\"dest\\\", others use \\\"name\\\". Most do have aliases for either \\\"name\\\" or \\\"destfile\\\".\\r\\n\\r\\nThis change makes \\\"path\\\" the default attribute for (single) file-related modules, but also adds \\\"dest\\\" and \\\"name\\\" as aliases, so that people can use a consistent way of attributing paths, but also to ensure backward compatibility with existing playbooks.\\r\\n\\r\\nThis is related to an older PR ansible/ansible-modules-core#5437\", \n    \"component_name\": \"acl blockinfile ini_file lineinfile mount replace stat win_lineinfile xattr\", \n    \"component_raw\": \"acl, blockinfile, ini_file, lineinfile, mount, replace, stat, win_lineinfile, xattr\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19800\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"needs_revision\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_lineinfile.ps1\", \n    \"summary\": \"Not all file-related modules consistently use \\\"path\\\" as the attribute to specify a single filename, some use \\\"dest\\\", others use \\\"name\\\". Most do have aliases for either \\\"name\\\" or \\\"destfile\\\".\\n\\n\\n\\nThis change makes \\\"path\\\" the default attribute for (single) file-related modules, but also adds \\\"dest\\\" and \\\"name\\\" as aliases, so that people can use a consistent way of attributing paths, but also to ensure backward compatibility with existing playbooks.\\n\\n\\n\\nThis is related to an older PR ansible/ansible-modules-core#5437\", \n    \"title\": \"Consistent path attribute for file-related modules\"\n  }, \n  \"19801\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 9f2d8c2409) last updated 2017/01/02 074534 (GMT -400)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\novirt_vms\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel 9f2d8c2409) last updated 2017/01/02 07:45:34 (GMT -400)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nFedora 25\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nWhen I try to remove a VM like so...\\r\\n\\r\\n- name: Remove the base VM from which we just created our template\\r\\n  delegate_to: localhost\\r\\n  ovirt_vms:\\r\\n    auth:\\r\\n      username: admin@internal\\r\\n      password: XXXXX\\r\\n      url: https://10.0.0.3/ovirt-engine/api\\r\\n      insecure: true\\r\\n    state: absent\\r\\n    name: rhel7-base-vm\\r\\n    wait: true\\r\\n\\r\\nI get...\\r\\n\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/tmp/ansible_oqYJc_/ansible_module_ovirt_vms.py\\\", line 891, in main\\r\\n    ret = vms_module.remove()\\r\\n  File \\\"/tmp/ansible_oqYJc_/ansible_modlib.zip/ansible/module_utils/ovirt.py\\\", line 540, in remove\\r\\n    poll_interval=self._module.params['poll_interval'],\\r\\n  File \\\"/tmp/ansible_oqYJc_/ansible_modlib.zip/ansible/module_utils/ovirt.py\\\", line 273, in wait\\r\\n    entity = service.get()\\r\\n  File \\\"/usr/lib64/python2.7/site-packages/ovirtsdk4/services.py\\\", line 18259, in get\\r\\n    self._check_fault(response)\\r\\n  File \\\"/usr/lib64/python2.7/site-packages/ovirtsdk4/service.py\\\", line 89, in _check_fault\\r\\n    xmlreader = xml.XmlReader(buf)\\r\\nException: Can't read first node\\r\\n\\r\\nfatal: [10.0.0.3 -> localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"boot_devices\\\": null,\\r\\n            \\\"cd_iso\\\": null,\\r\\n            \\\"clone\\\": false,\\r\\n            \\\"clone_permissions\\\": false,\\r\\n            \\\"cloud_init\\\": null,\\r\\n            \\\"cloud_init_nics\\\": null,\\r\\n            \\\"cluster\\\": null,\\r\\n            \\\"cpu_cores\\\": null,\\r\\n            \\\"cpu_shares\\\": null,\\r\\n            \\\"cpu_sockets\\\": null,\\r\\n            \\\"delete_protected\\\": null,\\r\\n            \\\"disks\\\": [],\\r\\n            \\\"fetch_nested\\\": false,\\r\\n            \\\"force\\\": false,\\r\\n            \\\"high_availability\\\": null,\\r\\n            \\\"host\\\": null,\\r\\n            \\\"id\\\": null,\\r\\n            \\\"memory\\\": null,\\r\\n            \\\"memory_guaranteed\\\": null,\\r\\n            \\\"name\\\": \\\"rhel7-base-vm\\\",\\r\\n            \\\"nested_attributes\\\": null,\\r\\n            \\\"nics\\\": [],\\r\\n            \\\"operating_system\\\": null,\\r\\n            \\\"poll_interval\\\": 3,\\r\\n            \\\"state\\\": \\\"absent\\\",\\r\\n            \\\"stateless\\\": null,\\r\\n            \\\"sysprep\\\": null,\\r\\n            \\\"template\\\": null,\\r\\n            \\\"template_version\\\": null,\\r\\n            \\\"timeout\\\": 180,\\r\\n            \\\"type\\\": null,\\r\\n            \\\"use_latest_template_version\\\": null,\\r\\n            \\\"wait\\\": true\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"ovirt_vms\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"Can't read first node\\\"\\r\\n}\\r\\n\\r\\n\\r\\nThe VM is deleted, but I get this error.\\r\\n\\r\\n\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nRun the task above\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe VM should be deleted without error\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nSee above.\", \n    \"component_name\": \"ovirt_vms\", \n    \"component_raw\": \"ovirt_vms\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19801\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms.py\", \n    \"summary\": \"When I try to remove a VM like so...\\n\\n\\n\\n- name: Remove the base VM from which we just created our template\\n\\n  delegate_to: localhost\\n\\n  ovirt_vms:\\n\\n    auth:\\n\\n      username: admin@internal\\n\\n      password: XXXXX\\n\\n      url: https://10.0.0.3/ovirt-engine/api\\n\\n      insecure: true\\n\\n    state: absent\\n\\n    name: rhel7-base-vm\\n\\n    wait: true\\n\\n\\n\\nI get...\\n\\n\\n\\nAn exception occurred during task execution. The full traceback is:\\n\\nTraceback (most recent call last):\\n\\n  File \\\"/tmp/ansible_oqYJc_/ansible_module_ovirt_vms.py\\\", line 891, in main\\n\\n    ret = vms_module.remove()\\n\\n  File \\\"/tmp/ansible_oqYJc_/ansible_modlib.zip/ansible/module_utils/ovirt.py\\\", line 540, in remove\\n\\n    poll_interval=self._module.params['poll_interval'],\\n\\n  File \\\"/tmp/ansible_oqYJc_/ansible_modlib.zip/ansible/module_utils/ovirt.py\\\", line 273, in wait\\n\\n    entity = service.get()\\n\\n  File \\\"/usr/lib64/python2.7/site-packages/ovirtsdk4/services.py\\\", line 18259, in get\\n\\n    self._check_fault(response)\\n\\n  File \\\"/usr/lib64/python2.7/site-packages/ovirtsdk4/service.py\\\", line 89, in _check_fault\\n\\n    xmlreader = xml.XmlReader(buf)\\n\\nException: Can't read first node\\n\\n\\n\\nfatal: [10.0.0.3 -> localhost]: FAILED! => {\\n\\n    \\\"changed\\\": false,\\n\\n    \\\"failed\\\": true,\\n\\n    \\\"invocation\\\": {\\n\\n        \\\"module_args\\\": {\\n\\n            \\\"boot_devices\\\": null,\\n\\n            \\\"cd_iso\\\": null,\\n\\n            \\\"clone\\\": false,\\n\\n            \\\"clone_permissions\\\": false,\\n\\n            \\\"cloud_init\\\": null,\\n\\n            \\\"cloud_init_nics\\\": null,\\n\\n            \\\"cluster\\\": null,\\n\\n            \\\"cpu_cores\\\": null,\\n\\n            \\\"cpu_shares\\\": null,\\n\\n            \\\"cpu_sockets\\\": null,\\n\\n            \\\"delete_protected\\\": null,\\n\\n            \\\"disks\\\": [],\\n\\n            \\\"fetch_nested\\\": false,\\n\\n            \\\"force\\\": false,\\n\\n            \\\"high_availability\\\": null,\\n\\n            \\\"host\\\": null,\\n\\n            \\\"id\\\": null,\\n\\n            \\\"memory\\\": null,\\n\\n            \\\"memory_guaranteed\\\": null,\\n\\n            \\\"name\\\": \\\"rhel7-base-vm\\\",\\n\\n            \\\"nested_attributes\\\": null,\\n\\n            \\\"nics\\\": [],\\n\\n            \\\"operating_system\\\": null,\\n\\n            \\\"poll_interval\\\": 3,\\n\\n            \\\"state\\\": \\\"absent\\\",\\n\\n            \\\"stateless\\\": null,\\n\\n            \\\"sysprep\\\": null,\\n\\n            \\\"template\\\": null,\\n\\n            \\\"template_version\\\": null,\\n\\n            \\\"timeout\\\": 180,\\n\\n            \\\"type\\\": null,\\n\\n            \\\"use_latest_template_version\\\": null,\\n\\n            \\\"wait\\\": true\\n\\n        },\\n\\n        \\\"module_name\\\": \\\"ovirt_vms\\\"\\n\\n    },\\n\\n    \\\"msg\\\": \\\"Can't read first node\\\"\\n\\n}\\n\\n\\n\\n\\n\\nThe VM is deleted, but I get this error.\", \n    \"title\": \"Error when removing VM with ovirt_vms\"\n  }, \n  \"19802\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel fa5f8a7543) last updated 2016/09/18 021005 (GMT -700)\\nlib/ansible/modules/core (detached HEAD 488f082761) last updated 2016/09/18 021048 (GMT -700)\\nlib/ansible/modules/extras (detached HEAD 24da3602c6) last updated 2016/09/18 021057 (GMT -700)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [/usr/share/ansible]\", \n    \"body\": \"_From @KpaBap on September 23, 2016 1:54_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\nec2_elb_lb.py\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0 (devel fa5f8a7543) last updated 2016/09/18 02:10:05 (GMT -700)\\n  lib/ansible/modules/core: (detached HEAD 488f082761) last updated 2016/09/18 02:10:48 (GMT -700)\\n  lib/ansible/modules/extras: (detached HEAD 24da3602c6) last updated 2016/09/18 02:10:57 (GMT -700)\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = ['/usr/share/ansible']\\n```\\n##### CONFIGURATION\\n\\n<!---\\nMention any settings you have changed/added/removed in ansible.cfg\\n(or using the ANSIBLE_* environment variables).\\n-->\\n\\nDefault\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nN/A\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nWhen running a playbook to create multiple ELBs, some of the ELBs would intermittently fail to get created with a KeyError exception.\\n\\nI tracked this issue down to some data structure inconsistency in the _set_elb_listeners function.\\nIt would appear that the data type stored in self.elb.listeners is sometimes a dict and other times a tuple.\\n\\nI hacked around this issue but am not sure if my fix has broken anything else. See the diff below:\\n\\n```\\nuser@utf:/tmp$ diff ec2_elb_lb.py mine.py\\n755,758c755,760\\n<                 if existing_listener[0] == int(listener['load_balancer_port']):\\n<                     existing_listener_found = self._api_listener_as_tuple(existing_listener)\\n<                     break\\n<\\n\\n---\\n>                 try:\\n>                     if self._listener_as_tuple(existing_listener)[0] == int(listener['load_balancer_port']):\\n>                         existing_listener_found = self._listener_as_tuple(existing_listener)\\n>                         break\\n>                 except KeyError:\\n>                     self.module.fail_json(msg=\\\"Ran into keyerror bug. self.elb.listeners is '%s'\\\" % self.elb.listeners)\\n776c778\\n<                 existing_listener_tuple = self._api_listener_as_tuple(existing_listener)\\n\\n---\\n>                 existing_listener_tuple = self._listener_as_tuple(existing_listener)\\n```\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n    - name: Create Control ELB\\n      ec2_elb_lb:\\n        name: \\\"Control-ELB\\\"\\n        state: present\\n        security_group_names: \\n          - \\\"{{ sg_name }}\\\"\\n        region: \\\"{{ aws_region }}\\\"\\n        purge_instance_ids: true\\n        idle_timeout: 60\\n        subnets:\\n          - \\\"{{ subnet_id }}\\\"\\n        purge_listeners: true\\n        listeners:\\n          - protocol: tcp\\n            load_balancer_port: 443\\n            instance_port: 443\\n        health_check:\\n          ping_protocol: http\\n          ping_port: 80\\n          ping_path: \\\"/health.html\\\"\\n          response_timeout: 5\\n          interval: 10\\n          unhealthy_threshold: 2\\n          healthy_threshold: 2\\n\\n\\n    - name: Create Service ELB\\n      ec2_elb_lb:\\n        name: \\\"Service-ELB\\\"\\n        state: present\\n        security_group_names: \\n          - \\\"{{ sg_name }}\\\"\\n        region: \\\"{{ aws_region }}\\\"\\n        purge_instance_ids: true\\n        idle_timeout: 3600\\n        subnets:\\n          - \\\"{{ subnet_id }}\\\"\\n        purge_listeners: true\\n        listeners:\\n          - protocol: tcp\\n            load_balancer_port: 443\\n            instance_port: 443\\n        health_check:\\n          ping_protocol: https\\n          ping_port: 443\\n          ping_path: \\\"/health.html\\\"\\n          response_timeout: 5\\n          interval: 10\\n          unhealthy_threshold: 2\\n          healthy_threshold: 2\\n\\n    - name: Create Internal ELB\\n      ec2_elb_lb:\\n        name: \\\"Int-ELB\\\"\\n        state: present\\n        subnets:\\n          - \\\"{{ subnet_id }}\\\"\\n        security_group_names: \\n          - \\\"{{ sg_name }}\\\"\\n        region: \\\"{{ aws_region }}\\\"\\n        purge_instance_ids: true\\n        scheme: \\\"internal\\\"\\n        idle_timeout: 3600\\n        purge_listeners: true\\n        listeners:\\n          - protocol: tcp\\n            load_balancer_port: 80\\n            instance_port: 80\\n        health_check:\\n          ping_protocol: tcp\\n          ping_port: 80\\n          response_timeout: 5\\n          interval: 10\\n          unhealthy_threshold: 2\\n          healthy_threshold: 2\\n\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nI expect all ELBs to be created properly with the given settings.\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\nThe ELBs get created but Ansible quits with a Python exception which breaks further playbooks from running in a workflow.\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nTASK [Create Internal ELB] ******************************************\\ntask path: /home/nsroot/ansible-work/playbooks/create-elbs.yml:96\\nUsing module file /home/nsroot/ansible/lib/ansible/modules/core/cloud/amazon/ec2_elb_lb.py\\n<localhost> ESTABLISH LOCAL CONNECTION FOR USER: nsroot\\n<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1474500949.27-185632929248572 `\\\" && echo ansible-tmp-1474500949.27-185632929248572=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1474500949.27-185632929248572 `\\\" ) && sleep 0'\\n<localhost> PUT /tmp/tmp9oxobX TO /home/nsroot/.ansible/tmp/ansible-tmp-1474500949.27-185632929248572/ec2_elb_lb.py\\n<localhost> EXEC /bin/sh -c 'chmod u+x /home/nsroot/.ansible/tmp/ansible-tmp-1474500949.27-185632929248572/ /home/nsroot/.ansible/tmp/ansible-tmp-1474500949.27-185632929248572/ec2_elb_lb.py && sleep 0'\\n<localhost> EXEC /bin/sh -c '/usr/bin/python /home/nsroot/.ansible/tmp/ansible-tmp-1474500949.27-185632929248572/ec2_elb_lb.py; rm -rf \\\"/home/nsroot/.ansible/tmp/ansible-tmp-1474500949.27-185632929248572/\\\" > /dev/null 2>&1 && sleep 0'\\nAn exception occurred during task execution. The full traceback is:\\nTraceback (most recent call last):\\n  File \\\"/tmp/ansible_Hbrcmm/ansible_module_ec2_elb_lb.py\\\", line 1354, in <module>\\n    main()\\n  File \\\"/tmp/ansible_Hbrcmm/ansible_module_ec2_elb_lb.py\\\", line 1338, in main\\n    elb_man.ensure_ok()\\n  File \\\"/tmp/ansible_Hbrcmm/ansible_module_ec2_elb_lb.py\\\", line 410, in _do_op\\n    return op(*args, **kwargs)\\n  File \\\"/tmp/ansible_Hbrcmm/ansible_module_ec2_elb_lb.py\\\", line 484, in ensure_ok\\n    self._set_elb_listeners()\\n  File \\\"/tmp/ansible_Hbrcmm/ansible_module_ec2_elb_lb.py\\\", line 755, in _set_elb_listeners\\n    if existing_listener[0] == int(listener['load_balancer_port']):\\nKeyError: 0\\n\\nfatal: [localhost]: FAILED! => {\\n    \\\"changed\\\": false,\\n    \\\"failed\\\": true,\\n    \\\"invocation\\\": {\\n        \\\"module_name\\\": \\\"ec2_elb_lb\\\"\\n    },\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_Hbrcmm/ansible_module_ec2_elb_lb.py\\\\\\\", line 1354, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_Hbrcmm/ansible_module_ec2_elb_lb.py\\\\\\\", line 1338, in main\\\\n    elb_man.ensure_ok()\\\\n  File \\\\\\\"/tmp/ansible_Hbrcmm/ansible_module_ec2_elb_lb.py\\\\\\\", line 410, in _do_op\\\\n    return op(*args, **kwargs)\\\\n  File \\\\\\\"/tmp/ansible_Hbrcmm/ansible_module_ec2_elb_lb.py\\\\\\\", line 484, in ensure_ok\\\\n    self._set_elb_listeners()\\\\n  File \\\\\\\"/tmp/ansible_Hbrcmm/ansible_module_ec2_elb_lb.py\\\\\\\", line 755, in _set_elb_listeners\\\\n    if existing_listener[0] == int(listener['load_balancer_port']):\\\\nKeyError: 0\\\\n\\\",\\n    \\\"module_stdout\\\": \\\"\\\",\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\n}\\n    to retry, use: --limit @/home/nsroot/ansible-work/playbooks/create-elbs.retry\\n```\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#4977_\", \n    \"component_name\": \"ec2_elb_lb.py\", \n    \"component_raw\": \"ec2_elb_lb.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19802\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\", \n    \"summary\": \"When running a playbook to create multiple ELBs, some of the ELBs would intermittently fail to get created with a KeyError exception.\\n\\nI tracked this issue down to some data structure inconsistency in the _set_elb_listeners function.\\nIt would appear that the data type stored in self.elb.listeners is sometimes a dict and other times a tuple.\\n\\nI hacked around this issue but am not sure if my fix has broken anything else. See the diff below:\\n\\n```\\nuser@utf:/tmp$ diff ec2_elb_lb.py mine.py\\n755,758c755,760\\n<                 if existing_listener[0] == int(listener['load_balancer_port']):\\n<                     existing_listener_found = self._api_listener_as_tuple(existing_listener)\\n<                     break\\n<\\n\\n---\\n>                 try:\\n>                     if self._listener_as_tuple(existing_listener)[0] == int(listener['load_balancer_port']):\\n>                         existing_listener_found = self._listener_as_tuple(existing_listener)\\n>                         break\\n>                 except KeyError:\\n>                     self.module.fail_json(msg=\\\"Ran into keyerror bug. self.elb.listeners is '%s'\\\" % self.elb.listeners)\\n776c778\\n<                 existing_listener_tuple = self._api_listener_as_tuple(existing_listener)\\n\\n---\\n>                 existing_listener_tuple = self._listener_as_tuple(existing_listener)\\n```\", \n    \"title\": \"ec2_elb_lb intermittently failing to create an ELB with KeyError exception\"\n  }, \n  \"19803\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /workspace-feature/iotcloud.infrastructure.openstack.deploy/ansible-deploy/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nregister variables\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /workspace-feature/iotcloud.infrastructure.openstack.deploy/ansible-deploy/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n[defaults]\\r\\ntimeout=300\\r\\nroles_path = roles\\r\\nnocows = 1\\r\\nnocolor = 0\\r\\ntransport = ssh\\r\\n#vars_plugins = plugins/vars\\r\\n#action_plugins = plugins/action\\r\\n#connection_plugins = plugins/connection\\r\\ncallback_plugins = plugins/callbacks\\r\\n#filter_plugins = plugins/filters\\r\\n#var_defaults_file = ../defaults-2.0.yml\\r\\nforks = 25\\r\\ngathering = smart\\r\\nretry_files_enabled = false\\r\\nlog_path=$HOME/.ansible/ansible.log\\r\\nhost_key_checking = False\\r\\n\\r\\n[ssh_connection]\\r\\npipelining=true\\r\\nssh_args = -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o ControlPath=/tmp/ansible-ssh-%h-%r\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nUbuntu 14.04\\r\\n\\r\\n##### SUMMARY\\r\\nRegistered variables created with a dynamic name are not accessible in Ansible 2.2. This is similar to the issue #15700 but the cause appears to be different. This worked previously in Ansible version 2.0.1\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nHave a task that includes another task and passes in the var \\\"output\\\" to be used as the dynamic register var name.\\r\\n\\r\\n```yaml\\r\\n- include: tasks/create_password.yml \\r\\n  vars:\\r\\n    output: \\\"docker_registry_password_output\\\"\\r\\n```\\r\\n\\r\\nin the tasks/create_password.yml:\\r\\n\\r\\n```yaml\\r\\n- name: Generating password\\r\\n   shell: head /dev/urandom | base64 | tr -dc \\\"{{ valid_chars|default('0-9a-zA-Z') }}\\\" | head \\\"-c{{ length|default(12) }}\\\"\\r\\n  register: \\\"{{ output }}\\\"\\r\\n\\r\\n- debug:\\r\\n    var: \\\"{{ output }}\\\"\\r\\n```\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nIt is expected that the registered variable will be defined with the name docker_registry_password_output in this case, and that docker_registry_password_output will be accessible within this playbook run.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nThe debug statement shows that the register var is not defined. \\r\\n\\r\\n```\\r\\nTASK [Generating password] *****************************************************\\r\\nTuesday 03 January 2017  13:23:42 +0000 (0:00:00.231)       0:00:20.435 *******\\r\\nchanged: [localhost] => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"cmd\\\": \\\"head /dev/urandom | base64 | tr -dc \\\\\\\"a-z\\\\\\\" | head \\\\\\\"-c10\\\\\\\"\\\",\\r\\n    \\\"delta\\\": \\\"0:00:00.005170\\\",\\r\\n    \\\"end\\\": \\\"2017-01-03 13:23:42.500811\\\",\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"_raw_params\\\": \\\"head /dev/urandom | base64 | tr -dc \\\\\\\"a-z\\\\\\\" | head \\\\\\\"-c10\\\\\\\"\\\",\\r\\n            \\\"_uses_shell\\\": true,\\r\\n            \\\"chdir\\\": null,\\r\\n            \\\"creates\\\": null,\\r\\n            \\\"executable\\\": null,\\r\\n            \\\"removes\\\": null,\\r\\n            \\\"warn\\\": true\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"command\\\"\\r\\n    },\\r\\n    \\\"rc\\\": 0,\\r\\n    \\\"start\\\": \\\"2017-01-03 13:23:42.495641\\\",\\r\\n    \\\"stderr\\\": \\\"\\\",\\r\\n    \\\"stdout\\\": \\\"plxktlrbpc\\\",\\r\\n    \\\"stdout_lines\\\": [\\r\\n        \\\"plxktlrbpc\\\"\\r\\n    ],\\r\\n    \\\"warnings\\\": []\\r\\n}\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nTuesday 03 January 2017  13:23:42 +0000 (0:00:00.113)       0:00:20.549 *******\\r\\nok: [localhost] => {\\r\\n    \\\"docker_registry_password_output\\\": \\\"VARIABLE IS NOT DEFINED!\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"register variables\", \n    \"component_raw\": \"register variables\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19803\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Registered variables created with a dynamic name are not accessible in Ansible 2.2. This is similar to the issue #15700 but the cause appears to be different. This worked previously in Ansible version 2.0.1\", \n    \"title\": \"Registered variable with dynamic name not working\"\n  }, \n  \"19808\": {\n    \"ansible_version\": \"ansible (master)$ ansible --version\\nansible 2.2.0.0\\nconfig file = /home/jon/ansible.cfg\\nconfigured module search path = Default w/o override\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodule filesystem\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible (master)$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /home/jon/ansible.cfg\\r\\n  configured module search path = Default w/o override\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nI created an LVM volume named 'data' and it causes the filesystem module to break on the first line which does not contain the block size and block count. As a result it continues to try and resize my filesystem even though all of the device space is being utilized.\\r\\n\\r\\nInstead of using `bsize=4096 blocks=11009024`, the module must be using `agcount=4 agsize=2752256` which is not going to match the size from `blockdev --getsize64`.\\r\\n\\r\\n```\\r\\nmeta-data=/dev/mapper/ebs_vols-data isize=256    agcount=4, agsize=2752256 blks\\r\\n         =                       sectsz=512   attr=2, projid32bit=1\\r\\n         =                       crc=0        finobt=0\\r\\ndata     =                       bsize=4096   blocks=11009024, imaxpct=25\\r\\n         =                       sunit=0      swidth=0 blks\\r\\nnaming   =version 2              bsize=4096   ascii-ci=0 ftype=0\\r\\n```\", \n    \"component_name\": \"filesystem\", \n    \"component_raw\": \"module filesystem\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19808\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"community_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/filesystem.py\", \n    \"summary\": \"I created an LVM volume named 'data' and it causes the filesystem module to break on the first line which does not contain the block size and block count. As a result it continues to try and resize my filesystem even though all of the device space is being utilized.\\n\\n\\n\\nInstead of using `bsize=4096 blocks=11009024`, the module must be using `agcount=4 agsize=2752256` which is not going to match the size from `blockdev --getsize64`.\\n\\n\\n\\n```\\n\\nmeta-data=/dev/mapper/ebs_vols-data isize=256    agcount=4, agsize=2752256 blks\\n\\n         =                       sectsz=512   attr=2, projid32bit=1\\n\\n         =                       crc=0        finobt=0\\n\\ndata     =                       bsize=4096   blocks=11009024, imaxpct=25\\n\\n         =                       sunit=0      swidth=0 blks\\n\\nnaming   =version 2              bsize=4096   ascii-ci=0 ftype=0\\n\\n```\", \n    \"title\": \"filesystem module: Check for line that starts with 'data' in xfs_info output\"\n  }, \n  \"19809\": {\n    \"ansible_version\": \"2.2.0.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\ngit module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n```\\r\\n[defaults]\\r\\ncallback_whitelist = profile_tasks\\r\\nhost_key_checking = False\\r\\nallow_world_readable_tmpfiles=True\\r\\n```\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nHost: MacOS 10.12.2\\r\\nRemote: Ubuntu 14.04\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWhen local modifications exist in a git repo on the machine with `force: yes` is set, `ansible-playbook` command does not update the repo.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n - name: Checkout cloudlaunch client source\\r\\n   git:\\r\\n     repo: https://github.com/galaxyproject/cloudlaunch-ui\\r\\n     dest: /opt/cloudlaunch-ui\\r\\n     accept_hostkey: yes\\r\\n     force: yes\\r\\n     version: master\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nUpdated git repo on the remote machine. \\r\\nIf I manually do `git reset --hard` on the remote machine and rerun the playbook, the task runs fine.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [cloudlaunch : Checkout cloudlaunch client source] ************************\\r\\nTuesday 03 January 2017  11:03:59 -0500 (0:00:01.336)       0:00:49.373 *******\\r\\nchanged: [149.165.171.39] => {\\\"after\\\": \\\"f9803c25f039f19bdc6153bd4943538c2db12fb8\\\", \\\"before\\\": \\\"f9803c25f039f19bdc6153bd4943538c2db12fb8\\\", \\\"changed\\\": true, \\\"msg\\\": \\\"Local modifications exist\\\", \\\"warnings\\\": []}\\r\\n```\\r\\n\", \n    \"component_name\": \"git\", \n    \"component_raw\": \"git module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19809\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/source_control/git.py\", \n    \"summary\": \"When local modifications exist in a git repo on the machine with `force: yes` is set, `ansible-playbook` command does not update the repo.\", \n    \"title\": \"git force=yes doesn't force a checkout if local changes exist on the target machine\"\n  }, \n  \"19810\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [/home/ansible/infra/library /usr/lib/python2.7/site-packages/ara/plugins/modules]\\npyzabbix (0.7.3)\\nzabbix-api (0.4)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nzabbix_host\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = ['/home/ansible/infra/library', '/usr/lib/python2.7/site-packages/ara/plugins/modules']\\r\\n\\r\\npyzabbix (0.7.3)\\r\\nzabbix-api (0.4)\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nAnsible control host: CentOS Linux release 7.2.1511 (Core)\\r\\nZabbix server: 2.4.7\\r\\n\\r\\n##### SUMMARY\\r\\nUnable to add a new zabbix host to a Zabbix server 2.4.7\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```yaml\\r\\n-  name: Create a new host or update an existing host's info\\r\\n    zabbix_host:\\r\\n      server_url: https://zabbix.test.local\\r\\n      login_user: admin\\r\\n      login_password: test123\\r\\n      host_name: 'server01'\\r\\n      host_groups:\\r\\n        - Linux hosts\\r\\n      link_templates:\\r\\n        - Template OS Linux\\r\\n      status: enabled\\r\\n      state: present\\r\\n      inventory_mode: automatic\\r\\n      interfaces:\\r\\n        - type: 1\\r\\n          main: 1\\r\\n          useip: 0\\r\\n          ip: '1.1.1.1'\\r\\n          dns: \\\"server01.test.local\\\"\\r\\n          port: 10050\\r\\n   delegate_to: localhost\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nSuccessfully add the new monitored host\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nTASK [Create a new host or update an existing host's info] *********************\\r\\ntask path: /home/ansible/infra/playbooks/include/zabbix_host.yml:1\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/extras/monitoring/zabbix_host.py\\r\\n<localhost> ESTABLISH LOCAL CONNECTION FOR USER: ansible\\r\\n<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1483460081.93-208116994514496 `\\\" && echo ansible-tmp-1483460081.93-208116994514496=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1483460081.93-208116994514496 `\\\" ) && sleep 0'\\r\\n<localhost> PUT /tmp/tmpbUhrB5 TO /home/ansible/.ansible/tmp/ansible-tmp-1483460081.93-208116994514496/zabbix_host.py\\r\\n<localhost> EXEC /bin/sh -c 'chmod u+x /home/ansible/.ansible/tmp/ansible-tmp-1483460081.93-208116994514496/ /home/ansible/.ansible/tmp/ansible-tmp-1483460081.93-208116994514496/zabbix_host.py && sleep 0'\\r\\n<localhost> EXEC /bin/sh -c '/usr/bin/python2 /home/ansible/.ansible/tmp/ansible-tmp-1483460081.93-208116994514496/zabbix_host.py; rm -rf \\\"/home/ansible/.ansible/tmp/ansible-tmp-1483460081.93-208116994514496/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nfatal: [server01 -> localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"force\\\": true,\\r\\n            \\\"host_groups\\\": [\\r\\n                \\\"Zabbix\\\"\\r\\n            ],\\r\\n            \\\"host_name\\\": \\\"server01\\\",\\r\\n            \\\"http_login_password\\\": null,\\r\\n            \\\"http_login_user\\\": null,\\r\\n            \\\"interfaces\\\": [\\r\\n                {\\r\\n                    \\\"dns\\\": \\\"server01.test.local\\\",\\r\\n                    \\\"ip\\\": \\\"1.1.1.1\\\",\\r\\n                    \\\"main\\\": 1,\\r\\n                    \\\"port\\\": 10050,\\r\\n                    \\\"type\\\": 1,\\r\\n                    \\\"useip\\\": 0\\r\\n                },\\r\\n                {\\r\\n                    \\\"dns\\\": \\\"server01.test.local\\\",\\r\\n                    \\\"ip\\\": \\\"1.1.1.1\\\",\\r\\n                    \\\"main\\\": 0,\\r\\n                    \\\"port\\\": 10050,\\r\\n                    \\\"type\\\": 1,\\r\\n                    \\\"useip\\\": 1\\r\\n                }\\r\\n            ],\\r\\n            \\\"inventory_mode\\\": \\\"automatic\\\",\\r\\n            \\\"link_templates\\\": [\\r\\n                \\\"Template OS Linux\\\"\\r\\n            ],\\r\\n            \\\"login_password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n            \\\"login_user\\\": \\\"Admin\\\",\\r\\n            \\\"proxy\\\": null,\\r\\n            \\\"server_url\\\": \\\"https://zabbix.test.local\\\",\\r\\n            \\\"state\\\": \\\"present\\\",\\r\\n            \\\"status\\\": \\\"enabled\\\",\\r\\n            \\\"timeout\\\": 10\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"zabbix_host\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"Failed to create host server01: (u'Error -32500: Application error., SQL statement execution has failed \\\\\\\"INSERT INTO hosts (status,host,name,hostid) VALUES (\\\\\\\\'0\\\\\\\\',\\\\\\\\'server01\\\\\\\\',\\\\\\\\'server01\\\\\\\\',\\\\\\\\'10693\\\\\\\\')\\\\\\\". while sending {\\\\\\\"params\\\\\\\": {\\\\\\\"status\\\\\\\": 0, \\\\\\\"host\\\\\\\": \\\\\\\"server01\\\\\\\", \\\\\\\"interfaces\\\\\\\": [{\\\\\\\"ip\\\\\\\": \\\\\\\"1.1.1.1\\\\\\\", \\\\\\\"useip\\\\\\\": 0, \\\\\\\"dns\\\\\\\": \\\\\\\"server01.test.local\\\\\\\", \\\\\\\"main\\\\\\\": 1, \\\\\\\"type\\\\\\\": 1, \\\\\\\"port\\\\\\\": 10050}, {\\\\\\\"ip\\\\\\\": \\\\\\\"1.1.1.1\\\\\\\", \\\\\\\"useip\\\\\\\": 1, \\\\\\\"dns\\\\\\\": \\\\\\\"server01.test.local\\\\\\\", \\\\\\\"main\\\\\\\": 0, \\\\\\\"type\\\\\\\": 1, \\\\\\\"port\\\\\\\": 10050}], \\\\\\\"groups\\\\\\\": [{\\\\\\\"groupid\\\\\\\": \\\\\\\"11\\\\\\\"}]}, \\\\\\\"jsonrpc\\\\\\\": \\\\\\\"2.0\\\\\\\", \\\\\\\"method\\\\\\\": \\\\\\\"host.create\\\\\\\", \\\\\\\"auth\\\\\\\": \\\\\\\"6679e7475242f2e5149ef6ec3c4d5cfa\\\\\\\", \\\\\\\"id\\\\\\\": 5}', -32500)\\\"\\r\\n}\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"zabbix_host\", \n    \"component_raw\": \"zabbix_host\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19810\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/monitoring/zabbix_host.py\", \n    \"summary\": \"Unable to add a new zabbix host to a Zabbix server 2.4.7\", \n    \"title\": \"Unable to add a new monitored server with zabbix_host on Zabbix 2.4.7\"\n  }, \n  \"19812\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel 89c826df9d) last updated 2016/09/16 151247 (GMT +000)\\nlib/ansible/modules/core (detached HEAD 48d932643b) last updated 2016/09/16 151315 (GMT +000)\\nlib/ansible/modules/extras (feature/gluster_volume 95f4f52167) last updated 2016/09/19 164419 (GMT +000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\nparted\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0 (devel 89c826df9d) last updated 2016/09/16 15:12:47 (GMT +000)\\n  lib/ansible/modules/core: (detached HEAD 48d932643b) last updated 2016/09/16 15:13:15 (GMT +000)\\n  lib/ansible/modules/extras: (feature/gluster_volume 95f4f52167) last updated 2016/09/19 16:44:19 (GMT +000)\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nThe module is a wrapper around the linux command parted intened to work with disk partitions.\\nThe module implements the parted commands as described by command documentation. \\nIt can be used to read information about the existing configuration, create, update or remove partitions as with the parted command itself\\n\", \n    \"component_name\": \"parted\", \n    \"component_raw\": \"parted\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19812\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/parted.py\", \n    \"summary\": \"The module is a wrapper around the linux command parted intened to work with disk partitions.\\nThe module implements the parted commands as described by command documentation. \\nIt can be used to read information about the existing\", \n    \"title\": \"Added parted module\"\n  }, \n  \"19813\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.0.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @juju4 on April 25, 2016 1:26_\\n\\n##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nmacports\\n##### ANSIBLE VERSION\\n\\n```\\n$ ansible --version\\nansible 2.0.2.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\nN/A\\n##### OS / ENVIRONMENT\\n\\nOrchestrator: Ubuntu trusty\\nTarget: Macos 10.11\\n##### SUMMARY\\n\\nfrom http://docs.ansible.com/ansible/macports_module.html\\nno state=latest is supported while commands `port upgrade {{ port }}` and `port outdated | grep {{ port }}` allow to upgrade and check if upgrade available.\\nA `port sync` might be needed as equivalent of update_cache\\n\\nMacports also allow to have different packages/variant for some compile/install options.\\nFor example\\n\\n```\\nport install lftp +ssl\\n```\\n\\na way to support it is needed. can have multiple +variant1 +variant2\\n##### STEPS TO REPRODUCE\\n\\n```\\n- name: Darwin | macports upgrade\\n  macports: name=* present=latest update_cache=yes\\n  when: ansible_os_family == \\\"Darwin\\\"\\n\\n- name: Darwin | variant install\\n  macports: name=lftp variants=ssl,variant2\\n  when: ansible_os_family == \\\"Darwin\\\"\\n\\n```\\n##### EXPECTED RESULTS\\n\\nMacports is upgraded\\nMacports has port installed with corresponding variants.\\n##### ACTUAL RESULTS\\n\\nAbove actions are currently not possible within module and must be executed as command losing idempotency.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#2092_\", \n    \"component_name\": \"macports\", \n    \"component_raw\": \"macports\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19813\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"bug\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/macports.py\", \n    \"summary\": \"from http://docs.ansible.com/ansible/macports_module.html\\nno state=latest is supported while commands `port upgrade {{ port }}` and `port outdated | grep {{ port }}` allow to upgrade and check if upgrade available.\\nA `port sync` might be needed as equivalent of update_cache\\n\\nMacports also allow to have different packages/variant for some compile/install options.\\nFor example\\n\\n```\\nport install lftp +ssl\\n```\\n\\na way to support it is needed. can have multiple +variant1 +variant2\", \n    \"title\": \"macports module: support for state=latest (upgrade) and for variants\"\n  }, \n  \"19814\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @juju4 on November 11, 2016 23:34_\\n\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nhostname module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n# ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nlocal run on ubuntu xenial (inside lxc containers with kitchen-test+kitchen-ansible)\\r\\n\\r\\n##### SUMMARY\\r\\nhostname module fails to set with above error\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```\\r\\n- debug: var=hostname_hostname\\r\\n- name: set hostname\\r\\n  hostname: \\\"name={{ hostname_hostname }}\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nset hostname without error.\\r\\nwas working with ansible 2.1\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\ntask is failing\\r\\n\\r\\n```\\r\\nTASK [hostname : debug] ********************************************************\\r\\ntask path: /tmp/kitchen/hostname/tasks/main.yml:3\\r\\nok: [localhost] => {\\r\\n    \\\"hostname_hostname\\\": \\\"example\\\"\\r\\n}\\r\\n\\r\\nTASK [hostname : set hostname] *************************************************\\r\\ntask path: /tmp/kitchen/hostname/tasks/main.yml:4\\r\\nUsing module file /usr/local/lib/python2.7/dist-packages/ansible/modules/core/system/hostname.py\\r\\n<localhost> ESTABLISH LOCAL CONNECTION FOR USER: root\\r\\n<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1478906878.17-90221180289250 `\\\" && echo ansible-tmp-1478906878.17-90221180289250=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1478906878.17-90221180289250 `\\\" ) && sleep 0'\\r\\n<localhost> PUT /tmp/tmpDdbhyS TO /root/.ansible/tmp/ansible-tmp-1478906878.17-90221180289250/hostname.py\\r\\n<localhost> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1478906878.17-90221180289250/ /root/.ansible/tmp/ansible-tmp-1478906878.17-90221180289250/hostname.py && sleep 0'\\r\\n<localhost> EXEC /bin/sh -c '/usr/bin/python /root/.ansible/tmp/ansible-tmp-1478906878.17-90221180289250/hostname.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1478906878.17-90221180289250/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"name\\\": \\\"example\\\"\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"hostname\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"Command failed rc=1, out=, err=Could not set property: Failed to activate service 'org.freedesktop.hostname1': timed out\\\\n\\\"\\r\\n}\\r\\n        to retry, use: --limit @/tmp/kitchen/default.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=2    changed=0    unreachable=0    failed=1 \\r\\n```\\r\\n\\r\\ntrying \\r\\n```\\r\\nsystemctl restart systemd-logind\\r\\n```\\r\\nand restarting playbook doesn't help\\r\\n\\r\\nusing hostname command directly is working.\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5582_\", \n    \"component_name\": \"hostname\", \n    \"component_raw\": \"hostname module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19814\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/hostname.py\", \n    \"summary\": \"hostname module fails to set with above error\", \n    \"title\": \"[2.2][hostname module] Could not set property: Failed to activate service 'org.freedesktop.hostname1': timed out\"\n  }, \n  \"19815\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.1.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @juju4 on October 27, 2016 20:28_\\n\\n##### ISSUE TYPE\\r\\n- Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nfile module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.1.2.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nUbuntu host to various guest\\r\\n##### SUMMARY\\r\\n\\r\\nWhen using file module with recurse, settings are set for all contents regardless of type.\\r\\nIdeally, mode should be given the option to be set differently for file or directory like rsync\\r\\nex:\\r\\n\\r\\n```\\r\\n- file: path=/etc/some_directory state=directory mode=D0755,F0644 recurse=yes\\r\\n[vs]\\r\\n$ rsync --chmod=D0755,F564 ...\\r\\n```\\r\\n\\r\\nAlso in many web tree, you have a tmp/cache folder with larger permissions (and some with stricter). Usual playbook now can't be idempotent easily without listing everything, especially as it seems with_fileglob is file only, not directory\\r\\n\\r\\n```\\r\\n[current playbook]\\r\\n- file: path=/var/www/html/app state=directory mode=0755 recurse=yes\\r\\n- file: path=/var/www/html/app/tmp state=directory mode=0775 owner=www-data\\r\\n- file: path=/var/www/html/app/data state=directory mode=0775 owner=www-data\\r\\n- file: path=/var/www/html/app/config state=directory mode=0640 group=www-data\\r\\n\\r\\n[wish]\\r\\n- file: path=/var/www/html/app state=directory mode=0755 recurse=yes exclude='(tmp|data|config)'\\r\\n- file: path=/var/www/html/app/tmp state=directory mode=0775 owner=www-data\\r\\n- file: path=/var/www/html/app/data state=directory mode=0775 owner=www-data\\r\\n- file: path=/var/www/html/app/config state=directory mode=0640 group=www-data\\r\\n```\\r\\n\\r\\nthis way playbook can be idempotent and still easily maintained.\\r\\nIf there is a better way, please advised.\\r\\n\\r\\nThanks\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5421_\", \n    \"component_name\": \"file\", \n    \"component_raw\": \"file module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19815\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/file.py\", \n    \"summary\": \"When using file module with recurse, settings are set for all contents regardless of type.\\n\\nIdeally, mode should be given the option to be set differently for file or directory like rsync\\n\\nex:\\n\\n\\n\\n```\\n\\n- file: path=/etc/some_directory state=directory mode=D0755,F0644 recurse=yes\\n\\n[vs]\\n\\n$ rsync --chmod=D0755,F564 ...\\n\\n```\\n\\n\\n\\nAlso in many web tree, you have a tmp/cache folder with larger permissions (and some with stricter). Usual playbook now can't be idempotent easily without listing everything, especially as it seems with_fileglob is file only, not directory\\n\\n\\n\\n```\\n\\n[current playbook]\\n\\n- file: path=/var/www/html/app state=directory mode=0755 recurse=yes\\n\\n- file: path=/var/www/html/app/tmp state=directory mode=0775 owner=www-data\\n\\n- file: path=/var/www/html/app/data state=directory mode=0775 owner=www-data\\n\\n- file: path=/var/www/html/app/config state=directory mode=0640 group=www-data\\n\\n\\n\\n[wish]\\n\\n- file: path=/var/www/html/app state=directory mode=0755 recurse=yes exclude='(tmp|data|config)'\\n\\n- file: path=/var/www/html/app/tmp state=directory mode=0775 owner=www-data\\n\\n- file: path=/var/www/html/app/data state=directory mode=0775 owner=www-data\\n\\n- file: path=/var/www/html/app/config state=directory mode=0640 group=www-data\\n\\n```\\n\\n\\n\\nthis way playbook can be idempotent and still easily maintained.\\n\\nIf there is a better way, please advised.\\n\\n\\n\\nThanks\\n\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5421_\", \n    \"title\": \"[FeatureRequest] file module with recurse: differentiate file mode and directory mode, exclude options\"\n  }, \n  \"19816\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.1.2.0\\nconfig file = /opt/tmp/vagrant/homelab/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @juju4 on October 12, 2016 2:35_\\n\\n##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\npip module\\n##### ANSIBLE VERSION\\n\\n```\\n$ ansible --version\\nansible 2.1.2.0\\n  config file = /opt/tmp/vagrant/homelab/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### OS / ENVIRONMENT\\n\\nOrchestrator: Linux Ubuntu Trusty or Xenial\\nGuest: various\\n##### SUMMARY\\n\\nwhen you do system package, there is a log file with activity history.\\npython pip has a logging option\\nhttps://pip.pypa.io/en/stable/reference/pip/#file-logging\\npip module should make it available.\\n\\nAs a note, this remark is valid for gem too but I didn't find a native option.\\n\\nexample\\n\\n```\\n- pip: name=bottle version=0.11 log=/var/log/pip.log\\n```\\n\\nshould result in command\\n\\n```\\npip install bottle==0.11 --log /var/log/pip.log\\n```\\n\\nThanks\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5231_\", \n    \"component_name\": \"pip\", \n    \"component_raw\": \"pip module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19816\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/language/pip.py\", \n    \"summary\": \"when you do system package, there is a log file with activity history.\\npython pip has a logging option\\nhttps://pip.pypa.io/en/stable/reference/pip/#file-logging\\npip module should make it available.\\n\\nAs a note, this remark is valid for gem too but I didn't find a native option.\\n\\nexample\\n\\n```\\n- pip: name=bottle version=0.11 log=/var/log/pip.log\\n```\\n\\nshould result in command\\n\\n```\\npip install bottle==0.11 --log /var/log/pip.log\\n```\\n\\nThanks\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5231_\", \n    \"title\": \"pip module: logging option ?\"\n  }, \n  \"19817\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @juju4 on September 18, 2016 13:35_\\n\\n##### ISSUE TYPE\\n- Feature Idea\\n##### COMPONENT NAME\\n\\nwin_get_url\\n##### ANSIBLE VERSION\\n\\n```\\n$ ansible --version\\nansible 2.1.1.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nwin_get_url has no checksum option like get_url module.\\nhttp://docs.ansible.com/ansible/get_url_module.html\\nhttp://docs.ansible.com/ansible/win_get_url_module.html\\nbackup and acl options would be nice too\\n\\nThanks\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#4901_\", \n    \"component_name\": \"win_get_url\", \n    \"component_raw\": \"win_get_url\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19817\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\", \n      \"module\", \n      \"waiting_on_contributor\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_get_url.ps1\", \n    \"summary\": \"win_get_url has no checksum option like get_url module.\\nhttp://docs.ansible.com/ansible/get_url_module.html\\nhttp://docs.ansible.com/ansible/win_get_url_module.html\\nbackup and acl options would be nice too\\n\\nThanks\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#4901_\", \n    \"title\": \"win_get_url: adding checksum, backup options\"\n  }, \n  \"19819\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.0.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @juju4 on April 25, 2016 1:25_\\r\\n\\r\\n##### ISSUE TYPE\\r\\n- Feature Idea\\r\\n##### COMPONENT NAME\\r\\n\\r\\nuser\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.0.2.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n##### CONFIGURATION\\r\\n\\r\\nN/A\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nOrchestrator: Ubuntu trusty\\r\\nTarget: Macos 10.11\\r\\n##### SUMMARY\\r\\n\\r\\nuser module doesn't support hidden status for user\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nfrom\\r\\n\\r\\n```\\r\\n- user: name={{ adduser_user_name }} password=\\\"{{ adduser_password }}\\\" comment=\\\"{{ adduser_user_comments }}\\\" shell=/bin/bash groups=admin append=yes\\r\\n\\r\\n```\\r\\n\\r\\nno parameter for hidden.\\r\\n\\r\\nCorresponding command line documentation\\r\\nhttps://support.apple.com/en-ca/HT203998\\r\\nsudo dscl . create /Users/hiddenuser IsHidden 1\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nyou should be able to specify hidden settings, apply it and respect idempotency\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nunsupported\\r\\n```\\r\\n\\r\\n\\r\\n_Copied from original issue: ansible/ansible-modules-core#3536_\\r\\n\\r\\n\\r\\ngundalow: Fixed formatting in from example so the code is now shown.\", \n    \"component_name\": \"user\", \n    \"component_raw\": \"user\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19819\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/user.py\", \n    \"summary\": \"user module doesn't support hidden status for user\", \n    \"title\": \"user module on darwin: add support for hidden user\"\n  }, \n  \"19820\": {\n    \"ansible_version\": \"N/A\", \n    \"body\": \"_From @juju4 on November 27, 2015 2:47_\\r\\n\\r\\n##### ISSUE TYPE\\r\\nFeature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmount module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nHello,\\r\\n\\r\\nFor temporary need, it should be possible to mount a filesystem without adding it to fstab\\r\\n\\r\\nhttp://docs.ansible.com/ansible/mount_module.html\\r\\nThe state values should be updated\\r\\npresent\\r\\nabsent\\r\\nmounted (just mount)\\r\\nmountedandpresent (mount+fstab)\\r\\nunmounted (unmount)\\r\\nunmountedandpresent (unmount but keep in fstab; ex: with opts noauto - only manual usage)\\r\\n\\r\\nMy main use case is using ansible for mass forensics collections and try to minimize as much as possible modifications to the system\\r\\n\\r\\nThanks\\r\\n\\r\\n\\r\\n_Copied from original issue: ansible/ansible-modules-core#2571_\", \n    \"component_name\": \"mount\", \n    \"component_raw\": \"mount module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19820\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"waiting_on_contributor\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/mount.py\", \n    \"summary\": \"Hello,\\n\\n\\n\\nFor temporary need, it should be possible to mount a filesystem without adding it to fstab\\n\\n\\n\\nhttp://docs.ansible.com/ansible/mount_module.html\\n\\nThe state values should be updated\\n\\npresent\\n\\nabsent\\n\\nmounted (just mount)\\n\\nmountedandpresent (mount+fstab)\\n\\nunmounted (unmount)\\n\\nunmountedandpresent (unmount but keep in fstab; ex: with opts noauto - only manual usage)\\n\\n\\n\\nMy main use case is using ansible for mass forensics collections and try to minimize as much as possible modifications to the system\\n\\n\\n\\nThanks\\n\\n\\n\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#2571_\", \n    \"title\": \"mount module feature request: allow to mount without adding to fstab\"\n  }, \n  \"19825\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_reboot module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nno special configs needed except username/password for winrm\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nWindows Server 2012R2 Datacenter\\r\\n\\r\\n##### SUMMARY\\r\\nwin_reboot never successfully continue after machine is rebooted, thus blocking playbook execution.\\r\\n\\r\\nThe machine in question has in fact been rebooted and is available for connections.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```\\r\\n- name: Reboot for changes to take effect\\r\\n  win_reboot: reboot_timeout_sec=3600\\r\\n              connect_timeout_sec=3600\\r\\n              shutdown_timeout_sec=3600\\r\\n\\r\\n```\\r\\n\\r\\n\\r\\nWith verbosity cranked up  this is the output:\\r\\n\\r\\n```\\r\\nTASK [risklink-common : Reboot for changes to take effect] *********************\\r\\ntask path: /Users/kbooth/rms/rms-ansible/roles/risklink-common/tasks/main.yml:71\\r\\n<10.92.4.10> ESTABLISH WINRM CONNECTION FOR USER: ***** on PORT 5986 TO 10.92.4.10\\r\\n<10.92.4.10> EXEC shutdown /r /t 2\\r\\n\\r\\n```\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nExpect that ansible will detect machine is back online after reboot and continue executing plays\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nActual results are that ansible waits forever until timeout values are reached.\\r\\n\\r\\n\\r\\n```\\r\\nTASK [risklink-common : Reboot for changes to take effect] *********************\\r\\ntask path: /Users/kbooth/rms/rms-ansible/roles/risklink-common/tasks/main.yml:71\\r\\n<10.92.4.10> ESTABLISH WINRM CONNECTION FOR USER: techops on PORT 5986 TO 10.92.4.10\\r\\n<10.92.4.10> EXEC shutdown /r /t 2\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"win_reboot\", \n    \"component_raw\": \"win_reboot module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19825\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"needs_info\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_reboot.py\", \n    \"summary\": \"win_reboot never successfully continue after machine is rebooted, thus blocking playbook execution.\\n\\n\\n\\nThe machine in question has in fact been rebooted and is available for connections.\", \n    \"title\": \"win_reboot never successfully continues after reboot is successful \"\n  }, \n  \"19826\": {\n    \"ansible_version\": \"ansible 2.3.0 (icinga2_module 565e83d687) last updated 2017/01/03 194423 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nicinga2_host\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (icinga2_module 565e83d687) last updated 2017/01/03 19:44:23 (GMT +200)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThis module allows to add or modify an host in Icinga2 using the API.\\r\\n\\r\\nThe module bypass the ca cert to request the API.\", \n    \"component_name\": \"icinga2_host\", \n    \"component_raw\": \"icinga2_host\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19826\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/monitoring/icinga2_host.py\", \n    \"summary\": \"This module allows to add or modify an host in Icinga2 using the API.\\n\\n\\n\\nThe module bypass the ca cert to request the API.\", \n    \"title\": \"Add Icinga2 module to manipulate hosts\"\n  }, \n  \"19827\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nEC2_GROUP\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n  ansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nAmazon Linux 2016.09\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\\"msg\\\": \\\"group referenced_group will be automatically created by rule {'to_port': 65535, 'from_port': 0, 'proto': 'tcp', 'group_name': 'referenced_group'} and no description was provided\\\"\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\npip install ansible\\r\\nattempt to apply group with a reference to another group\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n---\\r\\n- name: new_group\\r\\n  hosts: localhost\\r\\n  gather_facts: no\\r\\n  tasks:\\r\\n  - name: new_group\\r\\n    local_action:\\r\\n      module: ec2_group\\r\\n      name: new_group\\r\\n      description: new security group for some service\\r\\n      vpc_id: \\\"{{ vpc }}\\\"\\r\\n      region: \\\"{{ region }}\\\"\\r\\n      profile: \\\"{{ profile }}\\\"\\r\\n      rules:\\r\\n        - proto: tcp\\r\\n          from_port: 0\\r\\n          to_port: 65535\\r\\n          group_name: referenced_group\\r\\n\\r\\n        - proto: tcp\\r\\n          from_port: 22\\r\\n          to_port: 22\\r\\n          cidr_ip:  \\\"{{ access_cidr }}\\\"\\r\\n\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nApplication of security group(s)\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nfatal: [localhost -> localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n \\\"msg\\\": \\\"group referenced_group will be automatically created by rule {'to_port': 65535, 'from_port': 0, 'proto': 'tcp', 'group_name': 'referenced_group'} and no description was provided\\\"\\r\\n```\\r\\n\", \n    \"component_name\": \"ec2_group\", \n    \"component_raw\": \"EC2_GROUP\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19827\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_group.py\", \n    \"summary\": \"\\\"msg\\\": \\\"group referenced_group will be automatically created by rule {'to_port': 65535, 'from_port': 0, 'proto': 'tcp', 'group_name': 'referenced_group'} and no description was provided\\\"\", \n    \"title\": \"ec2_group Errors using self referencing groups\"\n  }, \n  \"19830\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\nIf your vcenter has unique VM names, there is no need to do the existing expensive lookups through the complete vCenter object store.\\r\\n\\r\\nThis change implements a new `unique_names:` option (as suggested by @jctanner) and blazingly fast finds a matching VM.\\r\\n\\r\\nIt supports the `name_match:` to find the first or last match (in case your names were not unique after all).\\r\\n\\r\\nQuick tests shows that the time to gather facts from an existing VM dropped from 3 minutes and 8 seconds to only 4 seconds, including the connection overhead and ansible playbook overhead ! Even with `name_match: last` (worst case) it takes 11 seconds.\\r\\n\\r\\nThis relates to #19417\\r\\nThis fixes #19064\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19830\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"If your vcenter has unique VM names, there is no need to do the existing expensive lookups through the complete vCenter object store.\\n\\n\\n\\nThis change implements a new `unique_names:` option (as suggested by @jctanner) and blazingly fast finds a matching VM.\\n\\n\\n\\nIt supports the `name_match:` to find the first or last match (in case your names were not unique after all).\\n\\n\\n\\nQuick tests shows that the time to gather facts from an existing VM dropped from 3 minutes and 8 seconds to only 4 seconds, including the connection overhead and ansible playbook overhead ! Even with `name_match: last` (worst case) it takes 11 seconds.\\n\\n\\n\\nThis relates to #19417\\n\\nThis fixes #19064\", \n    \"title\": \"vmware_guest: speed up VM name lookups by factor 60\"\n  }, \n  \"19831\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nefs_facts module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\ndevel\\r\\n\\r\\n##### SUMMARY\\r\\nif boto is given aws credentials and they don't have the efs:describefilesystems permission this block of code will spin forever\\r\\n\\r\\nhttps://github.com/ansible/ansible/blob/devel/lib/ansible/modules/cloud/amazon/efs_facts.py#L265-L278\", \n    \"component_name\": \"efs_facts\", \n    \"component_raw\": \"efs_facts module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19831\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/efs_facts.py\", \n    \"summary\": \"if boto is given aws credentials and they don't have the efs:describefilesystems permission this block of code will spin forever\\n\\n\\n\\nhttps://github.com/ansible/ansible/blob/devel/lib/ansible/modules/cloud/amazon/efs_facts.py#L265-L278\", \n    \"title\": \"efs_facts doesn't report permission errors and runs forever\"\n  }, \n  \"19833\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 69c14bd003) last updated 2016/12/22 112302 (GMT -400)\\nconfig file = /home/test/ans_fun/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnxos_config\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel 69c14bd003) last updated 2016/12/22 11:23:02 (GMT -400)\\r\\n  config file = /home/test/ans_fun/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nDefault config\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nNXOS: version 7.0(3)I2(4)\\r\\n\\r\\n##### SUMMARY\\r\\nI can not add \\\"spanning-tree port type edge\\\" to the interface, fails with \\\"unable to load response from device\\\" message\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n    - name: Set spanning tree port type edge\\r\\n      nxos_config:\\r\\n        provider: '{{ abc }}'\\r\\n        lines: spanning-tree port type edge\\r\\n        parents: 'interface Ethernet1/9'\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nCommand added to the interface config\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nfatal: [test_n9k_1]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"after\\\": null, \\r\\n            \\\"auth_pass\\\": null, \\r\\n            \\\"authorize\\\": false, \\r\\n            \\\"backup\\\": false, \\r\\n            \\\"before\\\": null, \\r\\n            \\\"config\\\": null, \\r\\n            \\\"defaults\\\": false, \\r\\n            \\\"force\\\": false, \\r\\n            \\\"host\\\": \\\"192.168.2.11\\\", \\r\\n            \\\"lines\\\": [\\r\\n                \\\"spanning-tree port type edge\\\", \\r\\n            ], \\r\\n            \\\"match\\\": \\\"line\\\", \\r\\n            \\\"parents\\\": [\\r\\n                \\\"interface Ethernet1/9\\\"\\r\\n            ], \\r\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n            \\\"port\\\": null, \\r\\n            \\\"provider\\\": {\\r\\n                \\\"host\\\": \\\"192.168.2.11\\\", \\r\\n                \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n                \\\"transport\\\": \\\"nxapi\\\", \\r\\n                \\\"use_ssl\\\": true, \\r\\n                \\\"username\\\": \\\"test\\\", \\r\\n                \\\"validate_certs\\\": false\\r\\n            }, \\r\\n            \\\"replace\\\": \\\"line\\\", \\r\\n            \\\"save\\\": false, \\r\\n            \\\"src\\\": null, \\r\\n            \\\"ssh_keyfile\\\": null, \\r\\n            \\\"timeout\\\": 10, \\r\\n            \\\"transport\\\": \\\"nxapi\\\", \\r\\n            \\\"use_ssl\\\": true, \\r\\n            \\\"username\\\": \\\"test\\\", \\r\\n            \\\"validate_certs\\\": false\\r\\n        }\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"unable to load response from device\\\"\\r\\n\\r\\n```\\r\\n\\r\\n##### POSSIBLE CAUSE\\r\\nThis is one of the very few commands that has a warning after being issued. From NX-API developer sandbox, here's the output from a usual command (in this case: int Eth1/9, desc 123):\\r\\n```\\r\\n[\\r\\n  {\\r\\n    \\\"jsonrpc\\\": \\\"2.0\\\",\\r\\n    \\\"result\\\": null,\\r\\n    \\\"id\\\": 1\\r\\n  },\\r\\n  {\\r\\n    \\\"jsonrpc\\\": \\\"2.0\\\",\\r\\n    \\\"result\\\": null,\\r\\n    \\\"id\\\": 2\\r\\n  }\\r\\n]\\r\\n```\\r\\nAnd here's the output from the commands int Eth1/9, spanning-tree port type edge:\\r\\n```\\r\\n[\\r\\n  {\\r\\n    \\\"jsonrpc\\\": \\\"2.0\\\",\\r\\n    \\\"result\\\": null,\\r\\n    \\\"id\\\": 1\\r\\n  },\\r\\n  {\\r\\n    \\\"jsonrpc\\\": \\\"2.0\\\",\\r\\n    \\\"result\\\": {\\r\\n      \\\"msg\\\": \\\"Edge port type (portfast) should only be enabled on ports connected to a single\\\\n host. Connecting hubs, concentrators, switches, bridges, etc...  to this\\\\n interface when edge port type (portfast) is enabled, can cause temporary bridging loops.\\\\n Use with CAUTION\\\\nEdge Port Type (Portfast) has been configured on Ethernet1/9 but will only\\\\n have effect when the interface is in a non-trunking mode.\\\\n\\\"\\r\\n    },\\r\\n    \\\"id\\\": 2\\r\\n  }\\r\\n]\\r\\n```\\r\\nI am guessing this extra output is what's throwing the module off, but I can't quite figure out where in the code this is happening.\", \n    \"component_name\": \"nxos_config\", \n    \"component_raw\": \"nxos_config\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19833\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nxos/nxos_config.py\", \n    \"summary\": \"I can not add \\\"spanning-tree port type edge\\\" to the interface, fails with \\\"unable to load response from device\\\" message\", \n    \"title\": \"nxos_config: can not set \\\"spanning-tree port type edge\\\"\"\n  }, \n  \"19834\": {\n    \"ansible_version\": \"Ansible 2.1.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n- Bugfix Pull Request\\r\\n##### COMPONENT NAME\\r\\n\\r\\n<!--- Name of the plugin/module/task -->\\r\\n\\r\\nmodule postgres_user\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n\\r\\n```\\r\\nAnsible 2.1.0.0\\r\\n```\\r\\n##### SUMMARY\\r\\n\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nAdd an else branch to `user_alter`, since any operation is completely skipped if there is no password change. Only implemented `role_attr_flags` feature.\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnnn\\\" in your commit\\r\\nmessage and your description; but you should still explain what the change does.\\r\\n-->\\r\\n\\r\\nFixes https://github.com/ansible/ansible/issues/19835\\r\\n\\r\\n<!--- Paste verbatim command output below, e.g. before and after your change -->\\r\\n###### BEFORE\\r\\n\\r\\n```\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [create user] *************************************************************\\r\\nchanged: [localhost] => {\\\"changed\\\": true, \\\"user\\\": \\\"test_user\\\"}\\r\\n\\r\\nTASK [add attributes to user] **************************************************\\r\\nok: [localhost] => {\\\"changed\\\": false, \\\"user\\\": \\\"test_user\\\"}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=3    changed=1    unreachable=0    failed=0\\r\\n```\\r\\n###### AFTER\\r\\n\\r\\n```\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [create user] *************************************************************\\r\\ntask path: /root/ansible/test/samples/test_postgres_user.yml:5\\r\\nchanged: [localhost] => {\\\"changed\\\": true, \\\"user\\\": \\\"testing_user\\\"}\\r\\n\\r\\nTASK [add attributes to user] **************************************************\\r\\ntask path: /root/ansible/test/samples/test_postgres_user.yml:13\\r\\nchanged: [localhost] => {\\\"changed\\\": true, \\\"user\\\": \\\"testing_user\\\"}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=3    changed=2    unreachable=0    failed=0\\r\\n```\\r\\n\", \n    \"component_name\": \"postgres_user\", \n    \"component_raw\": \"module postgres_user\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19834\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"community_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/database/postgresql/postgresql_user.py\", \n    \"summary\": \"Add an else branch to `user_alter`, since any operation is completely skipped if there is no password change. Only implemented `role_attr_flags` feature.\\n\\n\\n\\n\\n\\n\\n\\nFixes https://github.com/ansible/ansible/issues/19835\\n\\n\\n\\n\\n\\n###### BEFORE\\n\\n\\n\\n```\\n\\nPLAY [localhost] ***************************************************************\\n\\n\\n\\nTASK [setup] *******************************************************************\\n\\nok: [localhost]\\n\\n\\n\\nTASK [create user] *************************************************************\\n\\nchanged: [localhost] => {\\\"changed\\\": true, \\\"user\\\": \\\"test_user\\\"}\\n\\n\\n\\nTASK [add attributes to user] **************************************************\\n\\nok: [localhost] => {\\\"changed\\\": false, \\\"user\\\": \\\"test_user\\\"}\\n\\n\\n\\nPLAY RECAP *********************************************************************\\n\\nlocalhost                  : ok=3    changed=1    unreachable=0    failed=0\\n\\n```\\n\\n###### AFTER\\n\\n\\n\\n```\\n\\nPLAY [localhost] ***************************************************************\\n\\n\\n\\nTASK [setup] *******************************************************************\\n\\nok: [localhost]\\n\\n\\n\\nTASK [create user] *************************************************************\\n\\ntask path: /root/ansible/test/samples/test_postgres_user.yml:5\\n\\nchanged: [localhost] => {\\\"changed\\\": true, \\\"user\\\": \\\"testing_user\\\"}\\n\\n\\n\\nTASK [add attributes to user] **************************************************\\n\\ntask path: /root/ansible/test/samples/test_postgres_user.yml:13\\n\\nchanged: [localhost] => {\\\"changed\\\": true, \\\"user\\\": \\\"testing_user\\\"}\\n\\n\\n\\nPLAY RECAP *********************************************************************\\n\\nlocalhost                  : ok=3    changed=2    unreachable=0    failed=0\\n\\n```\", \n    \"title\": \"postgres_user module: `role_attr_flags` does nothing when combined with `no_password_changes`\"\n  }, \n  \"19835\": {\n    \"ansible_version\": \"Ansible 2.1.0.0\", \n    \"body\": \"_From @woqer on June 24, 2016 18:12_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\n##### ISSUE TYPE\\n\\n<!--- Pick one below and delete the rest: -->\\n- Bug Report\\n##### COMPONENT NAME\\n\\n<!--- Name of the plugin/module/task -->\\n\\npostgresql_user\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nAnsible 2.1.0.0\\n```\\n##### OS / ENVIRONMENT\\n\\n<!---\\nMention the OS you are running Ansible from, and the OS you are\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\n-->\\n\\nMac OS X El Capitan, Version 10.11.4\\nTested on Docker official postgres container and on Amazon RDS PostgreSQL DB instance\\n##### SUMMARY\\n\\n<!--- Explain the problem briefly -->\\n\\nWhen running a task with postgres_user module, the option `role_attr_flags` does not set any role attributes when `no_password_change` is set to `yes`\\n##### STEPS TO REPRODUCE\\n\\n<!---\\nFor bugs, show exactly how to reproduce the problem.\\nFor new features, show how the feature would be used.\\n-->\\n\\nRun a task with module postgres_user, set any attribute in `role_attr_flags` and the option `no_password_changes` to `yes`\\n\\n<!--- Paste example playbooks or commands between quotes below -->\\n\\n```\\n\\n---\\n- hosts: localhost\\n\\n  tasks:\\n    - name: create user\\n      postgresql_user:\\n        name: testing_user\\n        password: somerandompassword\\n        state: present\\n        login_host: your.amazon.url.to.postges.instance\\n        login_user: yourdefaultpostgresuser\\n        login_password: yoursecretpasswordforthedefaultuser\\n    - name: add attributes to user\\n      postgresql_user:\\n        name: testing_user\\n        no_password_changes: yes\\n        role_attr_flags: CREATEDB\\n        login_host: your.amazon.url.to.postges.instance\\n        login_user: yourdefaultpostgresuser\\n        login_password: yoursecretpasswordforthedefaultuser\\n```\\n\\n<!--- You can also paste gist.github.com links for larger files -->\\n##### EXPECTED RESULTS\\n\\n<!--- What did you expect to happen when running the steps above? -->\\n\\nThe user testing_user should have the CreateDB attribute\\n##### ACTUAL RESULTS\\n\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\n\\nNo changes made.\\n\\n<!--- Paste verbatim command output between quotes below -->\\n\\n```\\nPLAY [localhost] ***************************************************************\\n\\nTASK [setup] *******************************************************************\\nok: [localhost]\\n\\nTASK [create user] *************************************************************\\nchanged: [localhost] => {\\\"changed\\\": true, \\\"user\\\": \\\"test_user\\\"}\\n\\nTASK [add attributes to user] **************************************************\\nok: [localhost] => {\\\"changed\\\": false, \\\"user\\\": \\\"test_user\\\"}\\n\\nPLAY RECAP *********************************************************************\\nlocalhost                  : ok=3    changed=1    unreachable=0    failed=0\\n```\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#4034_\", \n    \"component_name\": \"postgresql_user\", \n    \"component_raw\": \"postgresql_user\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19835\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/database/postgresql/postgresql_user.py\", \n    \"summary\": \"When running a task with postgres_user module, the option `role_attr_flags` does not set any role attributes when `no_password_change` is set to `yes`\", \n    \"title\": \"postgres_user module: `role_attr_flags` does nothing when combined with `no_password_changes`\"\n  }, \n  \"19836\": {\n    \"ansible_version\": \"2.2/2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nmodules\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.2/2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\", \n    \"component_name\": \"s\", \n    \"component_raw\": \"modules\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19836\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"module_util\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"\", \n    \"title\": \"fixed id queries, should rely on effective\"\n  }, \n  \"19838\": {\n    \"ansible_version\": \"ini\\nansible 2.0.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvirtualenv\\r\\npip\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```ini\\r\\nansible 2.0.2.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n```ini\\r\\n[defaults]\\r\\nerror_on_undefined_vars=True\\r\\ngathering = 'explicit'\\r\\ncallback_whitelist = profile_tasks\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nCentOS Linux release 7.2.1511 (Core) \\r\\n\\r\\n##### SUMMARY\\r\\nInstalling a `flask` app that runs behind a `uwsgi` emperor. This app uses Python 2.7.11 which is the system python and the same python running in the virtualenv\\r\\n\\r\\nSeeing the following stack trace when running the app:\\r\\n```\\r\\nTraceback (most recent call last):\\r\\n  File \\\"app/server.py\\\", line 3, in <module>\\r\\n    import boto\\r\\n  File \\\"app/venv/lib/python2.7/site-packages/boto/__init__.py\\\", line 35, in <module>\\r\\n    import logging.config\\r\\n  File \\\"/usr/lib64/python2.7/logging/config.py\\\", line 27, in <module>\\r\\n    import sys, logging, logging.handlers, socket, struct, os, traceback, re\\r\\n  File \\\"/usr/lib64/python2.7/logging/handlers.py\\\", line 26, in <module>\\r\\n    import errno, logging, socket, os, cPickle, struct, time, re\\r\\nImportError: app/venv/lib/python2.7/lib-dynload/cPickle.so: undefined symbol: PyUnicodeUCS4_DecodeUTF8\\r\\nunable to load app 0 (mountpoint='') (callable not found or import error)\\r\\n```\\r\\n\\r\\nBased on my Google-fu, the consensus is that the virtualenv was built using an outdated python?\\r\\n\\r\\nManually installing the virtualenv (via standard steps), works just fine and fixes the issue:\\r\\n\\r\\n```bash\\r\\nvirtualenv app/venv\\r\\napp/venv/bin/activate\\r\\npip install -r app/requirements.txt\\r\\ndeactivate\\r\\n\\r\\nsystemctl start uwsgi\\r\\n```\\r\\n\\r\\nAs far as I can tell there is no difference between the manually installed virtualenv and the one using the pip module.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n    - name: Install virtualenv\\r\\n      pip:\\r\\n        name: virtualenv\\r\\n        state: latest\\r\\n\\r\\n    - name: Install venv packages\\r\\n      pip:\\r\\n        requirements: app/requirements.txt\\r\\n        virtualenv: app/venv\\r\\n```\\r\\n\\r\\napp/requirements.txt: \\r\\n```\\r\\nFlask==0.10.1\\r\\nitsdangerous==0.23\\r\\nsimplejson==3.6.3\\r\\nrequests==2.0.1\\r\\npymongo==2.4\\r\\nboto==2.9.7\\r\\n```\\r\\n\\r\\nEdit: Tried running this via the shell module, this seems to fail in the same way:\\r\\n```yaml\\r\\n    - name: Install VirtualEnv Packages\\r\\n      shell: |\\r\\n        virtualenv app/venv\\r\\n        source app/venv/bin/activate\\r\\n        pip install -r app/requirements.txt\\r\\n        deactivate\\r\\n```\\r\\n\", \n    \"component_name\": \"virtualenv\", \n    \"component_raw\": \"virtualenv\\npip\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19838\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Installing a `flask` app that runs behind a `uwsgi` emperor. This app uses Python 2.7.11 which is the system python and the same python running in the virtualenv\\n\\n\\n\\nSeeing the following stack trace when running the app:\\n\\n```\\n\\nTraceback (most recent call last):\\n\\n  File \\\"app/server.py\\\", line 3, in <module>\\n\\n    import boto\\n\\n  File \\\"app/venv/lib/python2.7/site-packages/boto/__init__.py\\\", line 35, in <module>\\n\\n    import logging.config\\n\\n  File \\\"/usr/lib64/python2.7/logging/config.py\\\", line 27, in <module>\\n\\n    import sys, logging, logging.handlers, socket, struct, os, traceback, re\\n\\n  File \\\"/usr/lib64/python2.7/logging/handlers.py\\\", line 26, in <module>\\n\\n    import errno, logging, socket, os, cPickle, struct, time, re\\n\\nImportError: app/venv/lib/python2.7/lib-dynload/cPickle.so: undefined symbol: PyUnicodeUCS4_DecodeUTF8\\n\\nunable to load app 0 (mountpoint='') (callable not found or import error)\\n\\n```\\n\\n\\n\\nBased on my Google-fu, the consensus is that the virtualenv was built using an outdated python?\\n\\n\\n\\nManually installing the virtualenv (via standard steps), works just fine and fixes the issue:\\n\\n\\n\\n```bash\\n\\nvirtualenv app/venv\\n\\napp/venv/bin/activate\\n\\npip install -r app/requirements.txt\\n\\ndeactivate\\n\\n\\n\\nsystemctl start uwsgi\\n\\n```\\n\\n\\n\\nAs far as I can tell there is no difference between the manually installed virtualenv and the one using the pip module.\", \n    \"title\": \"pip creates bad virtualenv\"\n  }, \n  \"19843\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel 89c826df9d) last updated 2016/09/16 151247 (GMT +000)\\nlib/ansible/modules/core (detached HEAD 48d932643b) last updated 2016/09/16 151315 (GMT +000)\\nlib/ansible/modules/extras (feature/gluster_volume 95f4f52167) last updated 2016/09/19 164419 (GMT +000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nrabbitmq_parameter\\nrabbitmq_policy\\nrabbitmq_user\\nrabbitmq_vhost\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0 (devel 89c826df9d) last updated 2016/09/16 15:12:47 (GMT +000)\\n  lib/ansible/modules/core: (detached HEAD 48d932643b) last updated 2016/09/16 15:13:15 (GMT +000)\\n  lib/ansible/modules/extras: (feature/gluster_volume 95f4f52167) last updated 2016/09/19 16:44:19 (GMT +000)\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### SUMMARY\\n\\nAdded support for RabbitMQ installation on a custom location.\\nThe change adds a prefix attribute, like the one in the module rabbitmq_plugin, to the plugins that use the command rabbitmqctl\\n\", \n    \"component_name\": \"rabbitmq_parameter\", \n    \"component_raw\": \"rabbitmq_parameter\\nrabbitmq_policy\\nrabbitmq_user\\nrabbitmq_vhost\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19843\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/messaging/rabbitmq_user.py\", \n    \"summary\": \"Added support for RabbitMQ installation on a custom location.\\nThe change adds a prefix attribute, like the one in the module rabbitmq_plugin, to the plugins that use the command rabbitmqctl\", \n    \"title\": \"Added prefix attribute to rabbitmq modules.\"\n  }, \n  \"19845\": {\n    \"ansible_version\": \"2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`module_utils/urls.py`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThese comparisons were failing (\\\"TypeError: a bytes-like object is required, not 'str'\\\"). This should be py2/py3 compatible.\\r\\n\\r\\n\", \n    \"component_name\": \"module_utils/urls.py\", \n    \"component_raw\": \"`module_utils/urls.py`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19845\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"c:module_utils/urls\", \n      \"module_util\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"python3\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"These comparisons were failing (\\\"TypeError: a bytes-like object is required, not 'str'\\\"). This should be py2/py3 compatible.\", \n    \"title\": \"urls.py py3-compatability (strings)\"\n  }, \n  \"19846\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/nick/dev/ansible/ansible.cfg\\nconfigured module search path = [/home/nick/dev/forks/ansible/lib/ansible/modules]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nlightsail\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/nick/dev/ansible/ansible.cfg\\r\\n  configured module search path = ['/home/nick/dev/forks/ansible/lib/ansible/modules']\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nNew module for provisioning(+removing) VPS instances on the new AWS Lightsail service.\\r\\n\\r\\nThis module follows the same pattern as the ec2 module and reuses the common aws/ec2 argument specs where possible. Also shares a dependency to boto3.\\r\\n\\r\\nSample playbook:\\r\\n```\\r\\n---\\r\\n# Provision lightsail instance\\r\\n- name: Provision lightsail instance\\r\\n  hosts: localhost\\r\\n  connection: local\\r\\n  gather_facts: False\\r\\n  tasks:\\r\\n  - name: Launch lightsail instance\\r\\n    lightsail:\\r\\n      state: present\\r\\n      name: myinstance\\r\\n      region: us-east-1\\r\\n      zone: us-east-1a\\r\\n      blueprint_id: ubuntu_16_04\\r\\n      bundle_id: nano_1_0\\r\\n      key_pair_name: id_rsa\\r\\n      wait_timeout: 500\\r\\n      user_data: \\\" echo 'hello world' > /home/ubuntu/test.txt\\\"\\r\\n      profile: nick-east-1\\r\\n    register: my_instance\\r\\n\\r\\n  - debug:\\r\\n      msg: \\\"Name is {{ my_instance.instance.name }}\\\"\\r\\n\\r\\n  - debug:\\r\\n      var: my_instance\\r\\n\\r\\n  - name: Delete lightsail instance\\r\\n    lightsail:\\r\\n      state: absent\\r\\n      name: myinstance\\r\\n      region: us-east-1\\r\\n      zone: us-east-1a\\r\\n      profile: nick-east-1\\r\\n```\\r\\n\\r\\nOutput:\\r\\n```\\r\\nPLAY [Provision lightsail instance] ********************************************\\r\\n\\r\\nTASK [Launch lightsail instance] ***********************************************\\r\\nchanged: [localhost]\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": \\\"Name is myinstance\\\"\\r\\n}\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"my_instance\\\": {\\r\\n        \\\"changed\\\": true, \\r\\n        \\\"instance\\\": {\\r\\n            \\\"arn\\\": \\\"arn:aws:lightsail:us-east-1:0000:Instance/0000-1111-2222-3333-4444\\\", \\r\\n            \\\"blueprintId\\\": \\\"ubuntu_16_04\\\", \\r\\n            \\\"blueprintName\\\": \\\"Ubuntu\\\", \\r\\n            \\\"bundleId\\\": \\\"nano_1_0\\\", \\r\\n            \\\"createdAt\\\": \\\"2017-01-03T21:34:47.841000-05:00\\\", \\r\\n            \\\"hardware\\\": {\\r\\n                \\\"cpuCount\\\": 1, \\r\\n                \\\"ramSizeInGb\\\": 0.5\\r\\n            }, \\r\\n            \\\"isStaticIp\\\": false, \\r\\n            \\\"location\\\": {\\r\\n                \\\"availabilityZone\\\": \\\"us-east-1a\\\", \\r\\n                \\\"regionName\\\": \\\"us-east-1\\\"\\r\\n            }, \\r\\n            \\\"name\\\": \\\"myinstance\\\", \\r\\n            \\\"networking\\\": {\\r\\n                \\\"monthlyTransfer\\\": {\\r\\n                    \\\"gbPerMonthAllocated\\\": 1000\\r\\n                }, \\r\\n                \\\"ports\\\": [\\r\\n                    {\\r\\n                        \\\"accessDirection\\\": \\\"inbound\\\", \\r\\n                        \\\"accessFrom\\\": \\\"Anywhere (0.0.0.0/0)\\\", \\r\\n                        \\\"accessType\\\": \\\"public\\\", \\r\\n                        \\\"commonName\\\": \\\"\\\", \\r\\n                        \\\"fromPort\\\": 80, \\r\\n                        \\\"protocol\\\": \\\"tcp\\\", \\r\\n                        \\\"toPort\\\": 80\\r\\n                    }, \\r\\n                    {\\r\\n                        \\\"accessDirection\\\": \\\"inbound\\\", \\r\\n                        \\\"accessFrom\\\": \\\"Anywhere (0.0.0.0/0)\\\", \\r\\n                        \\\"accessType\\\": \\\"public\\\", \\r\\n                        \\\"commonName\\\": \\\"\\\", \\r\\n                        \\\"fromPort\\\": 22, \\r\\n                        \\\"protocol\\\": \\\"tcp\\\", \\r\\n                        \\\"toPort\\\": 22\\r\\n                    }\\r\\n                ]\\r\\n            }, \\r\\n            \\\"privateIpAddress\\\": \\\"172.24.24.24\\\", \\r\\n            \\\"resourceType\\\": \\\"Instance\\\", \\r\\n            \\\"sshKeyName\\\": \\\"id_rsa\\\", \\r\\n            \\\"state\\\": {\\r\\n                \\\"code\\\": 0, \\r\\n                \\\"name\\\": \\\"pending\\\"\\r\\n            }, \\r\\n            \\\"supportCode\\\": \\\"1234/i-5678\\\", \\r\\n            \\\"username\\\": \\\"ubuntu\\\"\\r\\n        }\\r\\n    }\\r\\n}\\r\\n\\r\\nTASK [Delete lightsail instance] ***********************************************\\r\\nchanged: [localhost]\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=4    changed=2    unreachable=0    failed=0   \\r\\n```\", \n    \"component_name\": \"lightsail\", \n    \"component_raw\": \"lightsail\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19846\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/lightsail.py\", \n    \"summary\": \"New module for provisioning(+removing) VPS instances on the new AWS Lightsail service.\\n\\n\\n\\nThis module follows the same pattern as the ec2 module and reuses the common aws/ec2 argument specs where possible. Also shares a dependency to boto3.\\n\\n\\n\\nSample playbook:\\n\\n```\\n\\n---\\n\\n# Provision lightsail instance\\n\\n- name: Provision lightsail instance\\n\\n  hosts: localhost\\n\\n  connection: local\\n\\n  gather_facts: False\\n\\n  tasks:\\n\\n  - name: Launch lightsail instance\\n\\n    lightsail:\\n\\n      state: present\\n\\n      name: myinstance\\n\\n      region: us-east-1\\n\\n      zone: us-east-1a\\n\\n      blueprint_id: ubuntu_16_04\\n\\n      bundle_id: nano_1_0\\n\\n      key_pair_name: id_rsa\\n\\n      wait_timeout: 500\\n\\n      user_data: \\\" echo 'hello world' > /home/ubuntu/test.txt\\\"\\n\\n      profile: nick-east-1\\n\\n    register: my_instance\\n\\n\\n\\n  - debug:\\n\\n      msg: \\\"Name is {{ my_instance.instance.name }}\\\"\\n\\n\\n\\n  - debug:\\n\\n      var: my_instance\\n\\n\\n\\n  - name: Delete lightsail instance\\n\\n    lightsail:\\n\\n      state: absent\\n\\n      name: myinstance\\n\\n      region: us-east-1\\n\\n      zone: us-east-1a\\n\\n      profile: nick-east-1\\n\\n```\\n\\n\\n\\nOutput:\\n\\n```\\n\\nPLAY [Provision lightsail instance] ********************************************\\n\\n\\n\\nTASK [Launch lightsail instance] ***********************************************\\n\\nchanged: [localhost]\\n\\n\\n\\nTASK [debug] *******************************************************************\\n\\nok: [localhost] => {\\n\\n    \\\"msg\\\": \\\"Name is myinstance\\\"\\n\\n}\\n\\n\\n\\nTASK [debug] *******************************************************************\\n\\nok: [localhost] => {\\n\\n    \\\"my_instance\\\": {\\n\\n        \\\"changed\\\": true, \\n\\n        \\\"instance\\\": {\\n\\n            \\\"arn\\\": \\\"arn:aws:lightsail:us-east-1:0000:Instance/0000-1111-2222-3333-4444\\\", \\n\\n            \\\"blueprintId\\\": \\\"ubuntu_16_04\\\", \\n\\n            \\\"blueprintName\\\": \\\"Ubuntu\\\", \\n\\n            \\\"bundleId\\\": \\\"nano_1_0\\\", \\n\\n            \\\"createdAt\\\": \\\"2017-01-03T21:34:47.841000-05:00\\\", \\n\\n            \\\"hardware\\\": {\\n\\n                \\\"cpuCount\\\": 1, \\n\\n                \\\"ramSizeInGb\\\": 0.5\\n\\n            }, \\n\\n            \\\"isStaticIp\\\": false, \\n\\n            \\\"location\\\": {\\n\\n                \\\"availabilityZone\\\": \\\"us-east-1a\\\", \\n\\n                \\\"regionName\\\": \\\"us-east-1\\\"\\n\\n            }, \\n\\n            \\\"name\\\": \\\"myinstance\\\", \\n\\n            \\\"networking\\\": {\\n\\n                \\\"monthlyTransfer\\\": {\\n\\n                    \\\"gbPerMonthAllocated\\\": 1000\\n\\n                }, \\n\\n                \\\"ports\\\": [\\n\\n                    {\\n\\n                        \\\"accessDirection\\\": \\\"inbound\\\", \\n\\n                        \\\"accessFrom\\\": \\\"Anywhere (0.0.0.0/0)\\\", \\n\\n                        \\\"accessType\\\": \\\"public\\\", \\n\\n                        \\\"commonName\\\": \\\"\\\", \\n\\n                        \\\"fromPort\\\": 80, \\n\\n                        \\\"protocol\\\": \\\"tcp\\\", \\n\\n                        \\\"toPort\\\": 80\\n\\n                    }, \\n\\n                    {\\n\\n                        \\\"accessDirection\\\": \\\"inbound\\\", \\n\\n                        \\\"accessFrom\\\": \\\"Anywhere (0.0.0.0/0)\\\", \\n\\n                        \\\"accessType\\\": \\\"public\\\", \\n\\n                        \\\"commonName\\\": \\\"\\\", \\n\\n                        \\\"fromPort\\\": 22, \\n\\n                        \\\"protocol\\\": \\\"tcp\\\", \\n\\n                        \\\"toPort\\\": 22\\n\\n                    }\\n\\n                ]\\n\\n            }, \\n\\n            \\\"privateIpAddress\\\": \\\"172.24.24.24\\\", \\n\\n            \\\"resourceType\\\": \\\"Instance\\\", \\n\\n            \\\"sshKeyName\\\": \\\"id_rsa\\\", \\n\\n            \\\"state\\\": {\\n\\n                \\\"code\\\": 0, \\n\\n                \\\"name\\\": \\\"pending\\\"\\n\\n            }, \\n\\n            \\\"supportCode\\\": \\\"1234/i-5678\\\", \\n\\n            \\\"username\\\": \\\"ubuntu\\\"\\n\\n        }\\n\\n    }\\n\\n}\\n\\n\\n\\nTASK [Delete lightsail instance] ***********************************************\\n\\nchanged: [localhost]\\n\\n\\n\\nPLAY RECAP *********************************************************************\\n\\nlocalhost                  : ok=4    changed=2    unreachable=0    failed=0   \\n\\n```\", \n    \"title\": \"Add AWS lightsail module\"\n  }, \n  \"19851\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible core\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nNone\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nmacOS Sierra 10.11.6\\r\\nPython 2.7.13\\r\\n\\r\\n##### SUMMARY\\r\\nLists containing integers are casted to strings when using `set_fact`\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n- hosts: localhost\\r\\n  vars:\\r\\n    numbers:\\r\\n      - 123\\r\\n      - 234\\r\\n\\r\\n  tasks:\\r\\n    - name: show numbers[0]\\r\\n      debug: msg=\\\"{{ numbers[0] | to_json }}\\\"\\r\\n\\r\\n    - name: set fact_number = numbers[0]\\r\\n      set_fact: fact_number=\\\"{{ numbers[0] }}\\\"\\r\\n\\r\\n    - name: show fact_number\\r\\n      debug: msg=\\\"{{ fact_number | to_json }}\\\"\\r\\n\\r\\n    - name: set fact_number = numbers[0] and expilicitly cast to int\\r\\n      set_fact: fact_number=\\\"{{ numbers[0] | int }}\\\"\\r\\n\\r\\n    - name: show fact_number\\r\\n      debug: msg=\\\"{{ fact_number | to_json }}\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n```\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [show numbers[0]] *********************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": \\\"123\\\"\\r\\n}\\r\\n\\r\\nTASK [set fact_number = numbers[0]] ********************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [show fact_number] ********************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": \\\"123\\\"\\r\\n}\\r\\n\\r\\nTASK [set fact_number = numbers[0] and expilicitly cast to int] ****************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [show fact_number] ********************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": \\\"123\\\"\\r\\n}\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [show numbers[0]] *********************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": \\\"123\\\"\\r\\n}\\r\\n\\r\\nTASK [set fact_number = numbers[0]] ********************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [show fact_number] ********************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": \\\"\\\\\\\"123\\\\\\\"\\\"\\r\\n}\\r\\n\\r\\nTASK [set fact_number = numbers[0] and expilicitly cast to int] ****************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [show fact_number] ********************************************************\\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": \\\"\\\\\\\"123\\\\\\\"\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"ansible core\", \n    \"component_raw\": \"ansible core\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19851\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Lists containing integers are casted to strings when using `set_fact`\", \n    \"title\": \"Ansible mangles integers in lists\"\n  }, \n  \"19855\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\nFeature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible core\\r\\n\\r\\n##### SUMMARY\\r\\nAnsible allows to execute playbooks in serial mode, which results in execution batches.\\r\\nThis behavior is what I want, but only for single tasks, such that all tasks before and after the serialized task are executed in parallel.\", \n    \"component_name\": \"ansible core\", \n    \"component_raw\": \"ansible core\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19855\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Ansible allows to execute playbooks in serial mode, which results in execution batches.\\n\\nThis behavior is what I want, but only for single tasks, such that all tasks before and after the serialized task are executed in parallel.\", \n    \"title\": \"Serialized tasks\"\n  }, \n  \"19856\": {\n    \"ansible_version\": \"ansible 2.1.0.0\", \n    \"body\": \"Return failure is the option is set to true.\\r\\nWhen we start to work on a pacemaker cluster, in some usage\\r\\nwe need to be sure that the cluster status is what we expected.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n \\r\\n##### COMPONENT NAME\\r\\npacemaker_cluster\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nansible 2.1.0.0\\r\\n```\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdd an option to give the possibility to the user to return a failure is the\\r\\npacemaker cluster is not in the expected status.\\r\\nExample:\\r\\nBefore making some maintenance on the pacemaker resources, we want to be sure that the cluster is up, if not that mean that something went wrong before and needs to be investigating.\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"pacemaker_cluster\", \n    \"component_raw\": \"pacemaker_cluster\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19856\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"core_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/clustering/pacemaker_cluster.py\", \n    \"summary\": \"Add an option to give the possibility to the user to return a failure is the\\n\\npacemaker cluster is not in the expected status.\\n\\nExample:\\n\\nBefore making some maintenance on the pacemaker resources, we want to be sure that the cluster is up, if not that mean that something went wrong before and needs to be investigating.\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"pacemaker_cluster: Fail ansible if the cluster state is not the expected state\"\n  }, \n  \"19857\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\nCurrently the networks definition is a dict, with the network range as\\r\\nkey. This is problematic if the network information is coming from other\\r\\nsources.\\r\\n\\r\\nThis patch turns the networks definition into a list.\\r\\n\\r\\nThis fixes #19222.\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19857\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"Currently the networks definition is a dict, with the network range as\\n\\nkey. This is problematic if the network information is coming from other\\n\\nsources.\\n\\n\\n\\nThis patch turns the networks definition into a list.\\n\\n\\n\\nThis fixes #19222.\", \n    \"title\": \"vmware_guest: networks definition as a list\"\n  }, \n  \"19858\": {\n    \"ansible_version\": \"ansible 2.0.1.0\", \n    \"body\": \"ISSUE TYPE\\r\\n\\r\\nBug Report\\r\\n\\r\\nCOMPONENT NAME\\r\\n\\r\\n_docker module\\r\\n\\r\\nANSIBLE VERSION\\r\\n\\r\\nansible 2.0.1.0\\r\\nCONFIGURATION\\r\\n\\r\\n[defaults]\\r\\nhost_key_checking = False\\r\\nforks = 10\\r\\nvar_compression_level=9\\r\\nretries=5\\r\\nfact_caching = jsonfile\\r\\nfact_caching_connection = ~/.ansible/tmp\\r\\nOS / ENVIRONMENT\\r\\n\\r\\nOS From: OS X, Ubuntu 14.04\\r\\nOS To: Ubuntu 14.04\\r\\n\\r\\nSUMMARY\\r\\n\\r\\nVolumes do not get dropped when removing the docker container\\r\\n\\r\\nSTEPS TO REPRODUCE\\r\\n\\r\\nCreate the docker container with attached volumes\\r\\nfill the volume\\r\\ndrop the container\\r\\nrepeat several times\\r\\ndocker volume ls -f dangling=true will show you the not-used containers\\r\\nSee Docker manual:\\r\\nNote: Docker will not warn you when removing a container without providing the -v option to delete its volumes. If you remove containers without using the -v option, you may end up with \\u201cdangling\\u201d volumes; volumes that are no longer referenced by a container. You can use docker volume ls -f dangling=true to find dangling volumes, and use docker volume rm <volume name> to remove a volume that\\u2019s no longer needed.\\r\\nI spin up the container with something like this:\\r\\n\\r\\n- name: Spinning up an {{ persistcomponent }}-platform container\\r\\n  docker:\\r\\n    registry: \\\"{{ docker_registry_url }}\\\"\\r\\n    email: \\\"{{ docker_registry_email }}\\\"\\r\\n    username: \\\"{{ docker_registry_user }}\\\"\\r\\n    password: \\\"{{ docker_registry_password }}\\\"\\r\\n    docker_api_version: \\\"{{ docker_api_version }}\\\"\\r\\n    image: \\\"{{ docker_registry_url }}/arena/{{ docker_images[persistcomponent] }}:{{ builds['platform'][persistcomponent] }}\\\"\\r\\n    pull: always\\r\\n    state: reloaded\\r\\n    restart_policy: always\\r\\n    restart_policy_retry: 5\\r\\n    name: \\\"{{ persistcomponent }}-platform\\\"\\r\\n    net: bridge\\r\\n    volumes:\\r\\n      - /srv/gsn/arenasettings.json:/srv/gsn/arenasettings.json:ro\\r\\n    log_driver: fluentd\\r\\n    log_opt:\\r\\n      fluentd-address: 127.0.0.1:24224\\r\\n      fluentd-tag: \\\"docker.{{ '{{' }}.Name{{ '}}' }}\\\"\\r\\n      fluentd-async-connect: \\\"true\\\"\\r\\n    #log_driver: syslog\\r\\n    #log_opt:\\r\\n    #  syslog-address: udp://127.0.0.1:15140\\r\\n    #  syslog-tag: \\\"docker.{{ '{{' }}.Name{{ '}}' }}\\\"\\r\\n    env:\\r\\n      ARENA_COMPONENT: \\\"{{ persistcomponent }}\\\"\\r\\n  tags:\\r\\n    - \\\"{{ persistcomponent }}_platform_spinup\\\"\\r\\n    - platform_spinup\\r\\n    - \\\"{{ persistcomponent }}_platform\\\"\\r\\n  when: builds['platform'][persistcomponent] not in [ 'Keep', 'None']\\r\\n  notify:\\r\\n    - \\\"drop {{ persistcomponent }}-nginx container\\\"\\r\\n    - \\\"restart {{ persistcomponent }}-nginx container\\\"\\r\\nThe container has VOLUME in its Dockerfile which we mount to nginx container (we put static files there, collected with Django's manage.py collectstatic\\r\\n\\r\\nEXPECTED RESULTS\\r\\n\\r\\nnot to have those dangling volumes\\r\\n\\r\\nACTUAL RESULTS\\r\\n\\r\\nwe have dangling volumes when we renew the container\\r\\n\\r\\nClone of the https://github.com/ansible/ansible-modules-core/issues/4057\", \n    \"component_name\": \"_docker\", \n    \"component_raw\": \"_docker module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19858\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/_docker.py\", \n    \"summary\": \"Volumes do not get dropped when removing the docker container\", \n    \"title\": \"Volumes do not get dropped when removing the docker container\"\n  }, \n  \"19859\": {\n    \"ansible_version\": \"ansible  --1.9\\nansible  --2.0\\nansible  --2.1\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nGet login shell  environment when become_method is \\\"su\\\"\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible  --1.9\\r\\nansible  --2.0\\r\\nansible  --2.1\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nThe user can not use login shell  environment when become_method is \\\"su\\\".\\r\\nBecause the code in \\\"lib/utils/__init__.py\\\" is\\r\\n==========\\r\\n    elif method == 'su':\\r\\n        exe = exe or C.DEFAULT_SU_EXE\\r\\n        flags = flags or C.DEFAULT_SU_FLAGS\\r\\n        becomecmd = '%s %s %s -c \\\"%s -c %s\\\"' % (exe, flags, user, shell, pipes.quote('echo %s; %s' % (success_key, cmd)))\\r\\n==========\\r\\nThis situation,ansible run a shell as  su $user -c \\\"xxxx\\\",\\r\\nBut we usually run a shell as su - $user -c \\\"xxxx\\\"\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nWe can change the  code in \\\"lib/utils/__init__.py\\\"  to \\r\\n=========\\r\\n#add one \\\" - \\\"\\r\\nbecomecmd = '%s %s - %s -c \\\"%s -c %s\\\"' % (exe, flags, user, shell, pipes.quote('echo %s; %s' % (success_key, cmd)))\\r\\n=========\\r\\nThen the user can use login shell  environment when become_method is \\\"su\\\"\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nThe user can use login shell  environment when become_method is \\\"su\\\"\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nThe user can use login shell  environment when become_method is \\\"su\\\"\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"get login shell\", \n    \"component_raw\": \"Get login shell\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19859\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_1.9\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The user can not use login shell  environment when become_method is \\\"su\\\".\\n\\nBecause the code in \\\"lib/utils/__init__.py\\\" is\\n\\n==========\\n\\n    elif method == 'su':\\n\\n        exe = exe or C.DEFAULT_SU_EXE\\n\\n        flags = flags or C.DEFAULT_SU_FLAGS\\n\\n        becomecmd = '%s %s %s -c \\\"%s -c %s\\\"' % (exe, flags, user, shell, pipes.quote('echo %s; %s' % (success_key, cmd)))\\n\\n==========\\n\\nThis situation,ansible run a shell as  su $user -c \\\"xxxx\\\",\\n\\nBut we usually run a shell as su - $user -c \\\"xxxx\\\"\", \n    \"title\": \"The user need to use login shell  environment when become_method is \\\"su\\\"\"\n  }, \n  \"19860\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nSpending a long time understanding what is going on, but the fact that it takes about 10 minutes before it fails (duing VM creation) makes it hard to troubleshoot.\\r\\n\\r\\nThe template has exactly one NIC, and my definition also has exactly one NIC, so it should be obvious that there is no real mismatch in number of NICs. But looking at other reports on the net seems to indicate a problem related to identity customizations (related to domain or DNS config).\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19860\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"Spending a long time understanding what is going on, but the fact that it takes about 10 minutes before it fails (duing VM creation) makes it hard to troubleshoot.\\n\\n\\n\\nThe template has exactly one NIC, and my definition also has exactly one NIC, so it should be obvious that there is no real mismatch in number of NICs. But looking at other reports on the net seems to indicate a problem related to identity customizations (related to domain or DNS config).\", \n    \"title\": \"vmware_guest: Clone from template results in fault.NicSettingMismatch.summary\"\n  }, \n  \"19861\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 218bab80de) last updated 2017/01/04 144831 (GMT +200)\", \n    \"body\": \"This continues ansible-modules-core#1558, and\\r\\nansible-modules-core#1669\\r\\n\\r\\nAllow specifying installroot for the yum and dnf modules\\r\\nto install and remove packages in a location other than /.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodules/packaging/os/dnf.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel 218bab80de) last updated 2017/01/04 14:48:31 (GMT +200)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdd --installroot option for YUM and DNF\\r\\n\\r\\nAllow for using YUM and DNF to install packages in a directory other\\r\\nthan /.\\r\\n\\r\\nI'm continuing other people's work, but I use it for LTSP and other root and jail-ed installs.  YUM --installroot was submitted before as #11310, and ansible-core-modules (since included in ansible) as issues # 1558 and # 1669.  I also included it in DNF, and kept the previous change author in the yum module.\\r\\n\\r\\nTests are included.\", \n    \"component_name\": \"s/packaging/os/dnf.py\", \n    \"component_raw\": \"modules/packaging/os/dnf.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19861\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"test\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/yum.py\", \n    \"summary\": \"Add --installroot option for YUM and DNF\\n\\n\\n\\nAllow for using YUM and DNF to install packages in a directory other\\n\\nthan /.\\n\\n\\n\\nI'm continuing other people's work, but I use it for LTSP and other root and jail-ed installs.  YUM --installroot was submitted before as #11310, and ansible-core-modules (since included in ansible) as issues # 1558 and # 1669.  I also included it in DNF, and kept the previous change author in the yum module.\\n\\n\\n\\nTests are included.\", \n    \"title\": \"Add --installroot to YUM and DNF modules, issue #11310\"\n  }, \n  \"19862\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/rpettersen/ansible/projects/zabbix/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"Added _meta to improve the speed when using the zabbix.py dynamic inventory file.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncontrib/inventory/zabbix.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/rpettersen/ansible/projects/zabbix/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdded some instructions on how to workaround spaces in group-names in Zabbix.\\r\\nAdded the _meta keyword to prevent huge delay in running Ansible with this dynamic inventory file.\", \n    \"component_name\": \"contrib/inventory/zabbix.py\", \n    \"component_raw\": \"contrib/inventory/zabbix.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19862\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Added some instructions on how to workaround spaces in group-names in Zabbix.\\n\\nAdded the _meta keyword to prevent huge delay in running Ansible with this dynamic inventory file.\", \n    \"title\": \"Update dynamic inventory zabbix.py\"\n  }, \n  \"19863\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"This is using the latest ansible in pypi and the latest version of python-openstackclient (3.3.0).\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible-playbook running a playbook to build a VM in openstack\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nNothing nonstandard, no env variables\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nUbuntu 16.04\\r\\nI've also run the playbook twice on OSX Sierra and it hasn't happened there but out of the dozen times I've run it on Ubuntu it's only done this three times so I don't know for sure if it's platform specific\\r\\n\\r\\n##### SUMMARY\\r\\nRunning a playbook with os_floating_ip in which I designate a specific IP address available in that tenant always returns OK but ~25% of the time it assigns a newly generated floating IP (even though the specified one is unused). \\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nWe are using Openstack Mitaka. If you use os_floating_ip to assign an IP address to a VM it always returns OK but ~25% of the time (in this case, specifically 3 times out of 13 runs) it generates a new floating IP and assigns that even though the specified one was not taken.\\r\\n```\\r\\n- name: assign IP to newly created VM\\r\\n   os_floating_ip:\\r\\n      auth:\\r\\n         ~snip~\\r\\n      state: present\\r\\n      server: \\\"{{ host.name }}\\\"\\r\\n      floating_ip_address: 10.120.0.203\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nAlways assign the specified IP address to the VM, or if that IP cannot be assigned then do not report OK\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nUnfortunately I do not have output from a -vvvv. \\r\\n\\r\\n```\\r\\nTASK [configure_vm : assign IP to newly created VM] ****\\r\\nok: [localhost]\\r\\n```\\r\\n\\r\\nThen when looking at the openstack configuration, I see that 10.120.0.203 is unassigned, but it allocated a new floating IP of 10.120.0.204 and assigned that IP to the VM.\", \n    \"component_name\": \"ansible-playbook running a playbook to build a vm in openstack\", \n    \"component_raw\": \"ansible-playbook running a playbook to build a VM in openstack\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19863\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"openstack\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Running a playbook with os_floating_ip in which I designate a specific IP address available in that tenant always returns OK but ~25% of the time it assigns a newly generated floating IP (even though the specified one is unused).\", \n    \"title\": \"os_floating_ip returns OK but does not assign designated floating IP\"\n  }, \n  \"19864\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nstats\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\ncan be per run or per host, also aggregate or not\\r\\nset_stats action plugin as reference implementation\\r\\nadded doc stub\", \n    \"component_name\": \"stats\", \n    \"component_raw\": \"stats\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19864\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"needs_revision\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/set_stats.py\", \n    \"summary\": \"can be per run or per host, also aggregate or not\\n\\nset_stats action plugin as reference implementation\\n\\nadded doc stub\", \n    \"title\": \"allow modules to set custom stats\"\n  }, \n  \"19866\": {\n    \"ansible_version\": \"2.2.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.2.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nAdd windows customization support\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19866\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"Add windows customization support\", \n    \"title\": \"vmware_guest: Add windows customization support\"\n  }, \n  \"19867\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\nBug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n`ansible-doc`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\nTested with `devel` branch.\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nRunning on Linux.\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nWhen defining `ANSIBLE_METADATA` in YAML format, the testing fails on `ansible-doc` which is not able to read `dict` from the metadata.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nInsert the following metadata into a module and run the test:\\r\\n\\r\\n```\\r\\nANSIBLE_METADATA = \\\"\\\"\\\"\\r\\nstatus:\\r\\n  - preview\\r\\nsupported_by: community\\r\\nversion: '1.0'\\r\\n\\\"\\\"\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nTest passes.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nTest failing:\\r\\n\\r\\n```\\r\\n$ tox -c test/runner/tox.ini -e py27 -- /tmp/ansible/test/runner/test.py sanity -v --test ansible-doc --coverage --require lib/ansible/modules/network/ldap_attr.py --color yes --requirements --python 2.7\\r\\npy27 installed: ansible==2.3.0,astroid==1.4.9,backports.functools-lru-cache==1.3,configparser==3.5.0,coverage==4.3.1,funcsigs==1.0.2,isort==4.2.5,Jinja2==2.8.1,lazy-object-proxy==1.2.2,MarkupSafe==0.23,mccabe==0.5.3,mock==2.0.0,pbr==1.10.0,pylint==1.6.4,PyYAML==3.12,six==1.10.0,voluptuous==0.9.3,wrapt==1.10.8,yamllint==1.6.0\\r\\npy27 runtests: PYTHONHASHSEED='1455696754'\\r\\npy27 runtests: commands[0] | /tmp/ansible/test/runner/test.py sanity -v --test ansible-doc --coverage --require lib/ansible/modules/network/ldap_attr.py --color yes --requirements --python 2.7\\r\\nRun command: pip install --disable-pip-version-check -r test/runner/requirements/sanity.txt -c test/runner/requirements/constraints.txt coverage\\r\\nRequirement already satisfied: coverage>=4.2 in ./test/runner/.tox/py27/lib/python2.7/site-packages (from -c test/runner/requirements/constraints.txt (line 1))\\r\\nRequirement already satisfied: jinja2 in ./test/runner/.tox/py27/lib/python2.7/site-packages (from -r test/runner/requirements/sanity.txt (line 1))\\r\\nRequirement already satisfied: mock in ./test/runner/.tox/py27/lib/python2.7/site-packages (from -r test/runner/requirements/sanity.txt (line 2))\\r\\nRequirement already satisfied: pylint in ./test/runner/.tox/py27/lib/python2.7/site-packages (from -r test/runner/requirements/sanity.txt (line 3))\\r\\nRequirement already satisfied: voluptuous in ./test/runner/.tox/py27/lib/python2.7/site-packages (from -r test/runner/requirements/sanity.txt (line 4))\\r\\nRequirement already satisfied: yamllint in ./test/runner/.tox/py27/lib/python2.7/site-packages (from -r test/runner/requirements/sanity.txt (line 5))\\r\\nRequirement already satisfied: MarkupSafe in ./test/runner/.tox/py27/lib/python2.7/site-packages (from jinja2->-r test/runner/requirements/sanity.txt (line 1))\\r\\nRequirement already satisfied: funcsigs>=1; python_version < \\\"3.3\\\" in ./test/runner/.tox/py27/lib/python2.7/site-packages (from mock->-r test/runner/requirements/sanity.txt (line 2))\\r\\nRequirement already satisfied: six>=1.9 in ./test/runner/.tox/py27/lib/python2.7/site-packages (from mock->-r test/runner/requirements/sanity.txt (line 2))\\r\\nRequirement already satisfied: pbr>=0.11 in ./test/runner/.tox/py27/lib/python2.7/site-packages (from mock->-r test/runner/requirements/sanity.txt (line 2))\\r\\nRequirement already satisfied: isort>=4.2.5 in ./test/runner/.tox/py27/lib/python2.7/site-packages (from pylint->-r test/runner/requirements/sanity.txt (line 3))\\r\\nRequirement already satisfied: mccabe in ./test/runner/.tox/py27/lib/python2.7/site-packages (from pylint->-r test/runner/requirements/sanity.txt (line 3))\\r\\nRequirement already satisfied: configparser; python_version == \\\"2.7\\\" in ./test/runner/.tox/py27/lib/python2.7/site-packages (from pylint->-r test/runner/requirements/sanity.txt (line 3))\\r\\nRequirement already satisfied: backports.functools-lru-cache; python_version == \\\"2.7\\\" in ./test/runner/.tox/py27/lib/python2.7/site-packages (from pylint->-r test/runner/requirements/sanity.txt (line 3))\\r\\nRequirement already satisfied: astroid<1.5.0,>=1.4.5 in ./test/runner/.tox/py27/lib/python2.7/site-packages (from pylint->-r test/runner/requirements/sanity.txt (line 3))\\r\\nRequirement already satisfied: setuptools>=0.6b1 in ./test/runner/.tox/py27/lib/python2.7/site-packages (from voluptuous->-r test/runner/requirements/sanity.txt (line 4))\\r\\nRequirement already satisfied: pyyaml in ./test/runner/.tox/py27/lib/python2.7/site-packages (from yamllint->-r test/runner/requirements/sanity.txt (line 5))\\r\\nRequirement already satisfied: wrapt in ./test/runner/.tox/py27/lib/python2.7/site-packages (from astroid<1.5.0,>=1.4.5->pylint->-r test/runner/requirements/sanity.txt (line 3))\\r\\nRequirement already satisfied: lazy-object-proxy in ./test/runner/.tox/py27/lib/python2.7/site-packages (from astroid<1.5.0,>=1.4.5->pylint->-r test/runner/requirements/sanity.txt (line 3))\\r\\nSanity check using ansible-doc with Python 2.7\\r\\nRun command: ansible-doc ldap_attr\\r\\nERROR: Output on stderr from ansible-doc is considered an error.\\r\\nERROR: Command \\\"ansible-doc ldap_attr\\\" returned exit status 0.\\r\\n>>> Standard Error\\r\\n [WARNING]: Non-dict metadata detected in /tmp/ansible/lib/ansible/modules/network/ldap_attr.py, skipping\\r\\n\\r\\nERROR: InvocationError: '/tmp/ansible/test/runner/test.py sanity -v --test ansible-doc --coverage --require lib/ansible/modules/network/ldap_attr.py --color yes --requirements --python 2.7'\\r\\n__________________________________________________________________________________________________________________ summary __________________________________________________________________________________________________________________\\r\\nERROR:   py27: commands failed\\r\\n```\", \n    \"component_name\": \"ansible-doc\", \n    \"component_raw\": \"`ansible-doc`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19867\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When defining `ANSIBLE_METADATA` in YAML format, the testing fails on `ansible-doc` which is not able to read `dict` from the metadata.\", \n    \"title\": \"ansible-doc doesn't support ANSIBLE_METADATA in YAML \"\n  }, \n  \"19868\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel 29fda4be1e) last updated 2016/09/16 182639 (GMT +000)\\nlib/ansible/modules/core (detached HEAD 2e1e3562b9) last updated 2016/09/16 182641 (GMT +000)\\nlib/ansible/modules/extras (detached HEAD 9b5c64e240) last updated 2016/09/16 182642 (GMT +000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\nssm_send_command\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.2.0 (devel 29fda4be1e) last updated 2016/09/16 18:26:39 (GMT +000)\\n  lib/ansible/modules/core: (detached HEAD 2e1e3562b9) last updated 2016/09/16 18:26:41 (GMT +000)\\n  lib/ansible/modules/extras: (detached HEAD 9b5c64e240) last updated 2016/09/16 18:26:42 (GMT +000)\\n  config file =\\n  configured module search path = Default w/o overrides\\n\\n```\\n##### SUMMARY\\n\\nThis module allows you to interface with Amazon Simple Systems Manager (SSM) to manage the configuration of your Amazon EC2 instances.  Specifically this module allows you to use the Run Command functionality to run system commands against your hosts. E.g. you can run PowerShell commands against Windows hosts or bash commands against a Linux host. The specific advantage is that you do not need to log into those hosts as the SSM service takes care of the execution. For more information see http://docs.aws.amazon.com/ssm/latest/APIReference/Welcome.html\\n\", \n    \"component_name\": \"ssm_send_command\", \n    \"component_raw\": \"ssm_send_command\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19868\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ssm_send_command.py\", \n    \"summary\": \"This module allows you to interface with Amazon Simple Systems Manager (SSM) to manage the\", \n    \"title\": \"Added cloud/Amazon module for SSM\"\n  }, \n  \"19869\": {\n    \"ansible_version\": \"ansible 2.1.3.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\n``find`` module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.3.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\nFedora 25 -> RHEL 7.3\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\nfind:\\r\\n    paths: \\\"~/mydir\\\"\\r\\n    patterns: somefile\\r\\n```\\r\\n\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nexpected ``find`` to search ``$HOME/mydir``\\r\\n\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n``~`` isn't resolved\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nmsg: ~/mydir was skipped as it does not seem to be a valid directory or it cannot be accessed\\r\\n```\\r\\n\", \n    \"component_name\": \"find\", \n    \"component_raw\": \"``find`` module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19869\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/find.py\", \n    \"summary\": \"\", \n    \"title\": \"find paths doesn't use expanduser\"\n  }, \n  \"19872\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- New Module Pull Request\\r\\n##### COMPONENT NAME\\r\\n\\r\\ndatabase/proxysql/proxysql_backend_servers.py\\r\\ndatabase/proxysql/proxysql_global_variables.py\\r\\ndatabase/proxysql/proxysql_manage_config.py\\r\\ndatabase/proxysql/proxysql_mysql_users.py\\r\\ndatabase/proxysql/proxysql_query_rules.py\\r\\ndatabase/proxysql/proxysql_replication_hostgroups.py\\r\\ndatabase/proxysql/proxysql_scheduler.py\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.1.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n##### SUMMARY\\r\\n\\r\\n```\\r\\nThis PR adds support for proxysql, a popular proxy solution when using MySQL.   More detail about proxysql can be found here: https://github.com/sysown/proxysql.\\r\\n```\\r\\n\\r\\nThis was previously submitted and merged to ansible-modules-extras (https://github.com/ansible/ansible-modules-extras/pull/2917), but I missed it had to be rolled back due to a couple of rogue non-ascii chars causing issues with ansible-doc.\\r\\n\\r\\n@abadger To confirm I've run ansible-doc against each of the modules and it now runs without error \\ud83d\\udc4d \", \n    \"component_name\": \"database/proxysql/proxysql_backend_servers.py\", \n    \"component_raw\": \"database/proxysql/proxysql_backend_servers.py\\ndatabase/proxysql/proxysql_global_variables.py\\ndatabase/proxysql/proxysql_manage_config.py\\ndatabase/proxysql/proxysql_mysql_users.py\\ndatabase/proxysql/proxysql_query_rules.py\\ndatabase/proxysql/proxysql_replication_hostgroups.py\\ndatabase/proxysql/proxysql_scheduler.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19872\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/database/proxysql/proxysql_scheduler.py\", \n    \"summary\": \"```\\n\\nThis PR adds support for proxysql, a popular proxy solution when using MySQL.   More detail about proxysql can be found here: https://github.com/sysown/proxysql.\\n\\n```\\n\\n\\n\\nThis was previously submitted and merged to ansible-modules-extras (https://github.com/ansible/ansible-modules-extras/pull/2917), but I missed it had to be rolled back due to a couple of rogue non-ascii chars causing issues with ansible-doc.\\n\\n\\n\\n@abadger To confirm I've run ansible-doc against each of the modules and it now runs without error\", \n    \"title\": \"Adding support for ProxySQL\"\n  }, \n  \"19873\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_regedit\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nRunning `New-PSDrive` command outputs to stdout which causes invalid Json warning. Ensure no output is produced when running New-PSDrive commanlet by pipeing to `Out-Null` \\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n# before\\r\\n[WARNING]: Module invocation had junk after the JSON data:\\r\\nok: [myhost] => {\\\"changed\\\": false, \\\"data_changed\\\": false, \\\"data_type_changed\\\": false}\\r\\n\\r\\n# after\\r\\nok: [myhost] => {\\\"changed\\\": false, \\\"data_changed\\\": false, \\\"data_type_changed\\\": false}\\r\\n```\\r\\n\", \n    \"component_name\": \"win_regedit\", \n    \"component_raw\": \"win_regedit\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19873\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"shipit\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_regedit.ps1\", \n    \"summary\": \"Running `New-PSDrive` command outputs to stdout which causes invalid Json warning. Ensure no output is produced when running New-PSDrive commanlet by pipeing to `Out-Null` \\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n# before\\n\\n[WARNING]: Module invocation had junk after the JSON data:\\n\\nok: [myhost] => {\\\"changed\\\": false, \\\"data_changed\\\": false, \\\"data_type_changed\\\": false}\\n\\n\\n\\n# after\\n\\nok: [myhost] => {\\\"changed\\\": false, \\\"data_changed\\\": false, \\\"data_type_changed\\\": false}\\n\\n```\", \n    \"title\": \"Stops New-PSDrive commandlet producing output which was causing warnings\"\n  }, \n  \"19874\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncore\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nDebian stretch/sid (testing)\\r\\n\\r\\n##### SUMMARY\\r\\nI run ansible on all my machines for automated setup. Debian stretch will be released in a few weeks, so I do some integration testings. Some of my roles, that rely on ansible_distribution_release fails because it's not defined.\\r\\n\\r\\n##### DETAILS\\r\\n\\r\\nansible_distribution_release is read from /etc/os-release on debian. On jessie it looks like:\\r\\n\\r\\nPRETTY_NAME=\\\"Debian GNU/Linux 8 (jessie)\\\"\\r\\nNAME=\\\"Debian GNU/Linux\\\"\\r\\nVERSION_ID=\\\"8\\\"\\r\\nVERSION=\\\"8 (jessie)\\\"\\r\\n\\r\\nOn stretch (while it's still testing) its:\\r\\nPRETTY_NAME=\\\"Debian GNU/Linux stretch/sid\\\"\\r\\nNAME=\\\"Debian GNU/Linux\\\"\\r\\nID=debian\\r\\n\\r\\nAnsible uses \\\"stretch/sid\\\" as version and leaves ansible_distribution_release undefined:\\r\\n\\r\\n$ ansible localhost -m setup | grep distribution\\r\\n        \\\"ansible_distribution\\\": \\\"Debian\\\", \\r\\n        \\\"ansible_distribution_major_version\\\": \\\"stretch/sid\\\", \\r\\n        \\\"ansible_distribution_release\\\": \\\"NA\\\", \\r\\n        \\\"ansible_distribution_version\\\": \\\"stretch/sid\\\", \\r\\n\\r\\n\\r\\n\\r\\n##### EXPECTED RESULT\\r\\nansible_distribution_release should be \\\"stretch\\\"\\r\\nansible_distribution_major_version should not be \\\"stretch/sid\\\". Optimally it would be \\\"9\\\", but maybe \\\"NA\\\" would also be OK\\r\\nansible_distribution_version should not be \\\"stretch/sid\\\". Optimally it would be \\\"9\\\", but maybe \\\"NA\\\" would also be OK\\r\\n\", \n    \"component_name\": \"core\", \n    \"component_raw\": \"core\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19874\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"c:module_utils/facts\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I run ansible on all my machines for automated setup. Debian stretch will be released in a few weeks, so I do some integration testings. Some of my roles, that rely on ansible_distribution_release fails because it's not defined.\\n\\n\\n\\n##### DETAILS\\n\\n\\n\\nansible_distribution_release is read from /etc/os-release on debian. On jessie it looks like:\\n\\n\\n\\nPRETTY_NAME=\\\"Debian GNU/Linux 8 (jessie)\\\"\\n\\nNAME=\\\"Debian GNU/Linux\\\"\\n\\nVERSION_ID=\\\"8\\\"\\n\\nVERSION=\\\"8 (jessie)\\\"\\n\\n\\n\\nOn stretch (while it's still testing) its:\\n\\nPRETTY_NAME=\\\"Debian GNU/Linux stretch/sid\\\"\\n\\nNAME=\\\"Debian GNU/Linux\\\"\\n\\nID=debian\\n\\n\\n\\nAnsible uses \\\"stretch/sid\\\" as version and leaves ansible_distribution_release undefined:\\n\\n\\n\\n$ ansible localhost -m setup | grep distribution\\n\\n        \\\"ansible_distribution\\\": \\\"Debian\\\", \\n\\n        \\\"ansible_distribution_major_version\\\": \\\"stretch/sid\\\", \\n\\n        \\\"ansible_distribution_release\\\": \\\"NA\\\", \\n\\n        \\\"ansible_distribution_version\\\": \\\"stretch/sid\\\", \\n\\n\\n\\n\\n\\n\\n\\n##### EXPECTED RESULT\\n\\nansible_distribution_release should be \\\"stretch\\\"\\n\\nansible_distribution_major_version should not be \\\"stretch/sid\\\". Optimally it would be \\\"9\\\", but maybe \\\"NA\\\" would also be OK\\n\\nansible_distribution_version should not be \\\"stretch/sid\\\". Optimally it would be \\\"9\\\", but maybe \\\"NA\\\" would also be OK\", \n    \"title\": \"ansible_distribution_release missing on debian testing\"\n  }, \n  \"19877\": {\n    \"ansible_version\": \"ansible-2.1.0.0-1.fc22.noarch\\nansible-2.3.0-100.git201612281416.fed079e.devel.fc22\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n \\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nos_user_role\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible-2.1.0.0-1.fc22.noarch\\r\\nansible-2.3.0-100.git201612281416.fed079e.devel.fc22\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nN/A\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nFedora release 22 (Twenty Two)\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWhen creating a role and make the user parameter looping the task fails with undefined item variable\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n# site.yml\\r\\n- name: configuring user role\\r\\n  hosts: localhost\\r\\n  roles:\\r\\n    - os_user_role\\r\\n\\r\\n# role task\\r\\n- os_user_role:\\r\\n    cloud: \\\"{{ os_cloud }}\\\"\\r\\n    state: \\\"{{ os_user_role_state }}\\\"\\r\\n    user: \\\"{{ item }}\\\"\\r\\n    role: \\\"{{ os_user_role }}\\\"\\r\\n    project: \\\"{{ os_project }}\\\"\\r\\n    with_items:\\r\\n      - user1\\r\\n      - user2\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nExpecting the module create the user role for both users through the loop elements\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nTask fails with:\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [os_user_role : os_user_role] *********************************************************************************************************************************************\\r\\ntask path: /home/rbarreto/Documents/os-templates/roles/os_user_role/tasks/main.yml:4\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"failed\\\": true, \\r\\n    \\\"msg\\\": \\\"the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'item' is undefined\\\\n\\\\nThe error appears to have been in '/home/rbarreto/Documents/os-templates/roles/os_user_role/tasks/main.yml': line 4, column 3, but may\\\\nbe elsewhere in the file depending on the exact syntax problem.\\\\n\\\\nThe offending line appears to be:\\\\n\\\\n\\\\n- os_user_role:\\\\n  ^ here\\\\n\\\"\\r\\n```\\r\\n\", \n    \"component_name\": \"os_user_role\", \n    \"component_raw\": \"os_user_role\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19877\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_user_role.py\", \n    \"summary\": \"When creating a role and make the user parameter looping the task fails with undefined item variable\", \n    \"title\": \"Openstack os_user_role module can't looping over elements\"\n  }, \n  \"19879\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\nBugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nos_user module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThe following task fails if the `OS_PASSWORD` environment variable is used for authentication.\\r\\n\\r\\n```\\r\\n- name: Create user\\r\\n  os_user:\\r\\n    name: \\\"{{ user }}\\\"\\r\\n    password: \\\"{{ password }}\\\"\\r\\n    email: \\\"{{ email }}\\\"\\r\\n    default_project: \\\"{{ project }}\\\"\\r\\n    domain: \\\"default\\\"\\r\\n```\\r\\n\\r\\nThis happens because passing a `password` param to  `shade.openstack_cloud` overrides the value of the `OS_PASSWORD` environment variable.\\r\\n\\r\\n**Before**:\\r\\n```\\r\\nTASK [Create user] ************************************************************\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"extra_data\\\": null, \\\"failed\\\": true, \\\"msg\\\": \\\"Failed to list users (Inner Exception: The request you have made requires authentication. (HTTP 401) (Request-ID: req-38660dc1-b733-459f-9efb-fb13886536ef))\\\"}\\r\\n```\\r\\n\\r\\n**After**:\\r\\n```\\r\\nTASK [Create user] ************************************************************\\r\\nok: [localhost]\\r\\n```\\r\\n\", \n    \"component_name\": \"os_user\", \n    \"component_raw\": \"os_user module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19879\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_user.py\", \n    \"summary\": \"The following task fails if the `OS_PASSWORD`\", \n    \"title\": \"Do not pass the password to shade.openstack_cloud\"\n  }, \n  \"19880\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\ndocker_container\\r\\ndocker_image\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n```\\r\\nANSIBLE_HOST_KEY_CHECKING=False\\r\\nANSIBLE_RETRY_FILES_ENABLED=False\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nubuntu 16.04\\r\\n\\r\\n##### SUMMARY\\r\\nWhen I try to pull an image from aws ecr, the module can't pull the image but I can pull with the docker cli\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```\\r\\n- name: Git clone amazon-ecr-credential-helper\\r\\n  git:\\r\\n    repo: https://github.com/awslabs/amazon-ecr-credential-helper.git\\r\\n    dest: /opt/amazon-ecr-credential-helper\\r\\n\\r\\n- name: Stat amazon-ecr-credential-helper\\r\\n  stat: path=/bin/docker-credential-ecr-login\\r\\n  register: is_present\\r\\n\\r\\n- name: Build amazon-ecr-credential-helper\\r\\n  command: make docker\\r\\n  args:\\r\\n    chdir: /opt/amazon-ecr-credential-helper\\r\\n  when: is_present.stat.exists != true\\r\\n\\r\\n- name: Copy amazon-ecr-credential-helper to /bin\\r\\n  command: mv /opt/amazon-ecr-credential-helper/bin/local/docker-credential-ecr-login /bin/\\r\\n  when: is_present.stat.exists != true\\r\\n\\r\\n- name: Start my_container_from_ecr\\r\\n  docker_container:\\r\\n    name: \\\"my_container_from_ecr\\\"\\r\\n    image: \\\"{{ my_container_from_ecr_image }}\\\"\\r\\n    state: started\\r\\n```\\r\\n\\r\\nThe docker config contain that:\\r\\n```\\r\\n{\\r\\n    \\\"credsStore\\\": \\\"ecr-login\\\"\\r\\n}\\r\\n```\\r\\n\\r\\nWhen I use the `docker pull REGISTRY_ID.dkr.ecr.eu-west-1.amazonaws.com/my_container_from_ecr`, the pull run correctly\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nThe docker module can use the `credsStore` in docker config or can get ecr credentials with boto or another library\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nUsing module file /usr/local/lib/python2.7/dist-packages/ansible/modules/core/cloud/docker/docker_container.py\\r\\n<52.214.65.249> ESTABLISH SSH CONNECTION FOR USER: ubuntu\\r\\n<52.214.65.249> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/root/.ssh/admin.pem\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ubuntu -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r 52.214.65.249 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1483551349.94-237350112602778 `\\\" && echo ansible-tmp-1483551349.94-237350112602778=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1483551349.94-237350112602778 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<52.214.65.249> PUT /tmp/tmp6iLXrs TO /home/ubuntu/.ansible/tmp/ansible-tmp-1483551349.94-237350112602778/docker_container.py\\r\\n<52.214.65.249> SSH: EXEC sftp -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/root/.ssh/admin.pem\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ubuntu -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r '[52.214.65.249]'\\r\\n<52.214.65.249> ESTABLISH SSH CONNECTION FOR USER: ubuntu\\r\\n<52.214.65.249> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/root/.ssh/admin.pem\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ubuntu -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r 52.214.65.249 '/bin/sh -c '\\\"'\\\"'chmod u+x /home/ubuntu/.ansible/tmp/ansible-tmp-1483551349.94-237350112602778/ /home/ubuntu/.ansible/tmp/ansible-tmp-1483551349.94-237350112602778/docker_container.py && sleep 0'\\\"'\\\"''\\r\\n<52.214.65.249> ESTABLISH SSH CONNECTION FOR USER: ubuntu\\r\\n<52.214.65.249> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/root/.ssh/admin.pem\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ubuntu -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r -tt 52.214.65.249 '/bin/sh -c '\\\"'\\\"'sudo -H -S -n -u root /bin/sh -c '\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'echo BECOME-SUCCESS-ktqmxjmfiezzpdctmzdbrfpyztakixvy; /usr/bin/python /home/ubuntu/.ansible/tmp/ansible-tmp-1483551349.94-237350112602778/docker_container.py; rm -rf \\\"/home/ubuntu/.ansible/tmp/ansible-tmp-1483551349.94-237350112602778/\\\" > /dev/null 2>&1'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"' && sleep 0'\\\"'\\\"''\\r\\nfatal: [52.214.65.249]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"api_version\\\": null, \\r\\n            \\\"blkio_weight\\\": null, \\r\\n            \\\"cacert_path\\\": null, \\r\\n            \\\"capabilities\\\": null, \\r\\n            \\\"cert_path\\\": null, \\r\\n            \\\"cleanup\\\": false, \\r\\n            \\\"command\\\": null, \\r\\n            \\\"cpu_period\\\": null, \\r\\n            \\\"cpu_quota\\\": null, \\r\\n            \\\"cpu_shares\\\": null, \\r\\n            \\\"cpuset_cpus\\\": null, \\r\\n            \\\"cpuset_mems\\\": null, \\r\\n            \\\"debug\\\": false, \\r\\n            \\\"detach\\\": true, \\r\\n            \\\"devices\\\": null, \\r\\n            \\\"dns_opts\\\": null, \\r\\n            \\\"dns_search_domains\\\": null, \\r\\n            \\\"dns_servers\\\": null, \\r\\n            \\\"docker_host\\\": null, \\r\\n            \\\"entrypoint\\\": null, \\r\\n            \\\"env\\\": null, \\r\\n            \\\"env_file\\\": null, \\r\\n            \\\"etc_hosts\\\": null, \\r\\n            \\\"exposed_ports\\\": null, \\r\\n            \\\"filter_logger\\\": false, \\r\\n            \\\"force_kill\\\": false, \\r\\n            \\\"groups\\\": null, \\r\\n            \\\"hostname\\\": null, \\r\\n            \\\"ignore_image\\\": false, \\r\\n            \\\"image\\\": \\\"REGISTRY_ID.dkr.ecr.eu-west-1.amazonaws.com/my_container_from_ecr:1\\\", \\r\\n            \\\"interactive\\\": false, \\r\\n            \\\"ipc_mode\\\": null, \\r\\n            \\\"keep_volumes\\\": true, \\r\\n            \\\"kernel_memory\\\": null, \\r\\n            \\\"key_path\\\": null, \\r\\n            \\\"kill_signal\\\": null, \\r\\n            \\\"labels\\\": null, \\r\\n            \\\"links\\\": null, \\r\\n            \\\"log_driver\\\": null, \\r\\n            \\\"log_options\\\": null, \\r\\n            \\\"mac_address\\\": null, \\r\\n            \\\"memory\\\": \\\"0\\\", \\r\\n            \\\"memory_reservation\\\": null, \\r\\n            \\\"memory_swap\\\": null, \\r\\n            \\\"memory_swappiness\\\": null, \\r\\n            \\\"name\\\": \\\"ci\\\", \\r\\n            \\\"network_mode\\\": null, \\r\\n            \\\"networks\\\": null, \\r\\n            \\\"oom_killer\\\": null, \\r\\n            \\\"oom_score_adj\\\": null, \\r\\n            \\\"paused\\\": false, \\r\\n            \\\"pid_mode\\\": null, \\r\\n            \\\"privileged\\\": false, \\r\\n            \\\"published_ports\\\": null, \\r\\n            \\\"pull\\\": false, \\r\\n            \\\"purge_networks\\\": false, \\r\\n            \\\"read_only\\\": false, \\r\\n            \\\"recreate\\\": false, \\r\\n            \\\"restart\\\": false, \\r\\n            \\\"restart_policy\\\": null, \\r\\n            \\\"restart_retries\\\": null, \\r\\n            \\\"security_opts\\\": null, \\r\\n            \\\"shm_size\\\": null, \\r\\n            \\\"ssl_version\\\": null, \\r\\n            \\\"state\\\": \\\"started\\\", \\r\\n            \\\"stop_signal\\\": null, \\r\\n            \\\"stop_timeout\\\": null, \\r\\n            \\\"timeout\\\": null, \\r\\n            \\\"tls\\\": null, \\r\\n            \\\"tls_hostname\\\": null, \\r\\n            \\\"tls_verify\\\": null, \\r\\n            \\\"trust_image_content\\\": false, \\r\\n            \\\"tty\\\": false, \\r\\n            \\\"ulimits\\\": null, \\r\\n            \\\"user\\\": null, \\r\\n            \\\"uts\\\": null, \\r\\n            \\\"volume_driver\\\": null, \\r\\n            \\\"volumes\\\": null, \\r\\n            \\\"volumes_from\\\": null\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"docker_container\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"Error pulling REGISTRY_ID.dkr.ecr.eu-west-1.amazonaws.com/my_container_from_ecr - code: None message: unauthorized: authentication required\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"docker_container\", \n    \"component_raw\": \"docker_container\\ndocker_image\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19880\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"summary\": \"When I try to pull an image from aws ecr, the module can't pull the image but I can pull with the docker cli\", \n    \"title\": \"Error when pulling docker image from aws ecr\"\n  }, \n  \"19881\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\npanos_cert_gen_ssh\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.0.0\\u2028\\r\\nconfig file =\\u2028\\r\\nconfigured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nNew panos module that allows for admin user to generate self-signed certificate on the device. This is mainly used for private VPN connections and global protect integrations.\", \n    \"component_name\": \"panos_cert_gen_ssh\", \n    \"component_raw\": \"panos_cert_gen_ssh\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19881\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_revision\", \n      \"networking\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/panos/panos_cert_gen_ssh.py\", \n    \"summary\": \"New panos module that allows for admin user to generate self-signed certificate on the device. This is mainly used for private VPN connections and global protect integrations.\", \n    \"title\": \"panos module for certificate generation\"\n  }, \n  \"19882\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\npanos_check\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.0.0\\u2028\\r\\nconfig file =\\u2028\\r\\nconfigured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nWhenever FW starts/reboots it goes through a set of checks/commits. Before these are done there is no way to manipulate FW configurations. This module will repeatedly query FW in order to determine if FW is in the ready state.\", \n    \"component_name\": \"panos_check\", \n    \"component_raw\": \"panos_check\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19882\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_revision\", \n      \"networking\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/panos/panos_check.py\", \n    \"summary\": \"Whenever FW starts/reboots it goes through a set of checks/commits. Before these are done there is no way to manipulate FW\", \n    \"title\": \"Panos check module to test FW readiness to accept new configuration(s)\"\n  }, \n  \"19883\": {\n    \"ansible_version\": \"ansible 2.0.2.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\\nansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nini_file\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.0.2.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nNone\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nManaging: Linux 4.4.6-ti-r15 #1 SMP Tue Apr 5 08:05:26 UTC 2016 armv7l GNU/Linux\\r\\nRunning: Linux 4.4.6-ti-r15 #1 SMP Tue Apr 5 08:05:26 UTC 2016 armv7l GNU/Linux\\r\\n\\r\\n##### SUMMARY\\r\\nI've got a config file which had no trailing newline and the ini_file didnt took care of it and created an 'invalid' ini file.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nCreate a config similar to mine:\\r\\n```\\r\\nprintf \\\"[main]\\\\nOPTION=value\\\" | tee /tmp/some_file.ini | hexdump -C\\r\\n00000000  5b 6d 61 69 6e 5d 0a 4f  50 54 49 4f 4e 3d 76 61  |[main].OPTION=va|\\r\\n00000010  6c 75 65                                          |lue|\\r\\n00000013\\r\\n```\\r\\n\\r\\nIssue ansible task:\\r\\n```\\r\\nansible all -i \\\"localhost,\\\" -c local -m ini_file -a \\\"dest=/tmp/some_file.ini section=main option=OPTION2 value=TEST\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n```\\r\\nhexdump -C /tmp/some_file.ini\\r\\n00000000  5b 6d 61 69 6e 5d 0a 4f  50 54 49 4f 4e 3d 76 61  |[main].OPTION=va|\\r\\n00000010  6c 75 65 0a 4f 50 54 49  4f 4e 32 20 3d 20 54 45  |lue.OPTION2 = TE|\\r\\n00000020  53 54 0a                                          |ST.|\\r\\n00000023\\r\\n\\r\\ncat /tmp/some_file.ini\\r\\n[main]\\r\\nOPTION=value\\r\\nOPTION2 = TEST\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nhexdump -C /tmp/some_file.ini\\r\\n00000000  5b 6d 61 69 6e 5d 0a 4f  50 54 49 4f 4e 3d 76 61  |[main].OPTION=va|\\r\\n00000010  6c 75 65 4f 50 54 49 4f  4e 32 20 3d 20 54 45 53  |lueOPTION2 = TES|\\r\\n00000020  54 0a                                             |T.|\\r\\n00000022\\r\\n\\r\\ncat /tmp/some_file.ini\\r\\n[main]\\r\\nOPTION=valueOPTION2 = TEST\\r\\n```\", \n    \"component_name\": \"ini_file\", \n    \"component_raw\": \"ini_file\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19883\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"bug\", \n      \"module\", \n      \"waiting_on_contributor\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/ini_file.py\", \n    \"summary\": \"I've got a config file which had no trailing newline and the ini_file didnt took care of it and created an 'invalid' ini file.\", \n    \"title\": \"module: ini_file does not take care of file ending without a newline\"\n  }, \n  \"19884\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nios_config\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nNow I can't use src param with match. Default behaviour for src is match line. I can't use strict or exact for match param.\\r\\n\\r\\n##### STEPS TO REPRODUCE. \\r\\nNow src are working like match line and only with them. It can be the problem in some cases if we want exact matching as example.\\r\\n\\r\\nExample. I have this playbook:\\r\\n```yaml\\r\\n---\\r\\n- hosts:\\r\\n  - cisco_device\\r\\n  gather_facts: no\\r\\n  connection: local\\r\\n  vars_prompt:\\r\\n    - name: \\\"pass\\\"\\r\\n      prompt: \\\"Your password\\\"\\r\\n  vars:\\r\\n    provider:\\r\\n      host: \\\"{{ inventory_hostname }}\\\"\\r\\n      username: username\\r\\n      password: \\\"{{ pass }}\\\"\\r\\n      transport: cli\\r\\n  tasks:\\r\\n  - name: IOS | Config object-group\\r\\n    ios_config:\\r\\n      src: ../config_templates/object_template.j2\\r\\n      match: exact\\r\\n      replace: block\\r\\n      provider: \\\"{{ provider }}\\\"\\r\\n    register: out\\r\\n  - name: Result\\r\\n    debug:\\r\\n      var: out\\r\\n\\r\\n```\\r\\nMy template for cisco looks like:\\r\\n```HTML+Django\\r\\nobject-group network OG_GLOBAL_LAN_PREFIX\\r\\n {% for item in OG_GLOBAL_LAN_PREFIX %}\\r\\n {{ item }}\\r\\n {% endfor %}\\r\\n```\\r\\nIn it I'm using host vars like this:\\r\\n```yaml\\r\\nOG_GLOBAL_LAN_PREFIX:\\r\\n  - \\\"10.0.0.0 255.0.0.0\\\"\\r\\n  - \\\"172.16.0.0 255.240.0.0\\\"\\r\\n  - \\\"192.168.0.0 255.255.0.0\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nSo I want to use match: exact in this situation. From cisco it should look like:\\r\\n```\\r\\nobject-group network OG_GLOBAL_LAN_PREFIX \\r\\n 10.0.0.0 255.0.0.0\\r\\n 172.16.0.0 255.240.0.0\\r\\n 192.168.0.0 255.255.0.0\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nBut without match: exact it can be a valid in this situation:\\r\\n```\\r\\nobject-group network OG_GLOBAL_LAN_PREFIX \\r\\n 10.0.0.0 255.0.0.0\\r\\n 172.16.0.0 255.240.0.0\\r\\n 192.168.0.0 255.255.0.0\\r\\n X.X.X.X Y.Y.Y.Y\\r\\n```\\r\\nBecause with have match line behaviour.\\r\\n\\r\\nNow in ansible I can't use match exact/strict because they require line param...\", \n    \"component_name\": \"ios_config\", \n    \"component_raw\": \"ios_config\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19884\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/ios/ios_config.py\", \n    \"summary\": \"Now I can't use src param with match. Default behaviour for src is match line. I can't use strict or exact for match param.\", \n    \"title\": \"Module ios_config: interoperability of src and match params\"\n  }, \n  \"19885\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\npanos_dag\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.0.0\\u2028\\r\\nconfig file =\\u2028\\r\\nconfigured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nNew panos module that allows for Dynamic Address Group generation. DAG's are dynamic run-time objects that are used in FW policies. The typical example would be a white-list of IP's that is updated every 5 minutes.\\r\\n\", \n    \"component_name\": \"panos_dag\", \n    \"component_raw\": \"panos_dag\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19885\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_revision\", \n      \"networking\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/panos/panos_dag.py\", \n    \"summary\": \"New panos module that allows for Dynamic Address Group generation. DAG's are dynamic run-time objects that are used in FW policies. The typical example would be a white-list of IP's that is updated every 5 minutes.\", \n    \"title\": \"new module to manipulate DAG table\"\n  }, \n  \"19886\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"Attaching network to VAPP and VM and returning assigned VM ip as fact vm_ip.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nmodules/cloud/vmware/vca_vapp.py \\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nConnecting app network to vApp and VM after vApp creation\\r\\nReturning the IP assigned to the VM as fact 'vm_ip'\\r\\n\\r\\nOnly works if network_mode is set to  'pool' or 'dhcp'.\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\nFixes #19538 \\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\", \n    \"component_name\": \"s/cloud/vmware/vca_vapp.py\", \n    \"component_raw\": \"modules/cloud/vmware/vca_vapp.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19886\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"feature\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vca_vapp.py\", \n    \"summary\": \"Connecting app network to vApp and VM after vApp creation\\n\\nReturning the IP assigned to the VM as fact 'vm_ip'\\n\\n\\n\\nOnly works if network_mode is set to  'pool' or 'dhcp'.\\n\\n\\n\\n\\n\\n\\n\\nFixes #19538 \\n\\n\\n\\n\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"vca_vapp: Connecting app network to vApp and VM after vApp creation\"\n  }, \n  \"19888\": {\n    \"ansible_version\": null, \n    \"body\": \"_From @nicolas-g on November 28, 2014 15:2_\\r\\n\\r\\n##### Issue Type:\\r\\n\\r\\nFeature Idea\\r\\n\\r\\n##### Component Name:\\r\\nec2_group module\\r\\n\\r\\n##### Summary:\\r\\n\\r\\nThis is a very small importance feature but it would be nice when using ec2_group module (http://docs.ansible.com/ec2_group_module.html) to define the ports using a single single `port_range` argument instead of having to define `from_port` and `to_port` .\\r\\n\\r\\nThis way it's going to be similar with the AWS console Port Range definition and you avoid to define the value twice when the rule is about a single port , as for example : \\r\\n##### Now:\\r\\n\\r\\n```\\r\\nrules:\\r\\n        - proto: tcp\\r\\n          from_port: 80\\r\\n          to_port: 80\\r\\n          cidr_ip: 0.0.0.0/0\\r\\n```\\r\\n##### using port_range :\\r\\n\\r\\n```\\r\\nrules:\\r\\n        - proto: tcp\\r\\n          port_range: 80\\r\\n          cidr_ip: 0.0.0.0/0\\r\\n```\\r\\n\\r\\nor defining a port range : \\r\\n##### Now:\\r\\n\\r\\n```\\r\\nrules:\\r\\n        - proto: tcp\\r\\n          from_port: 0\\r\\n          to_port: 65535\\r\\n          cidr_ip: 0.0.0.0/0\\r\\n```\\r\\n##### using port_range :\\r\\n\\r\\n```\\r\\nrules:\\r\\n        - proto: tcp\\r\\n          port_range: 0-65535\\r\\n          cidr_ip: 0.0.0.0/0\\r\\n```\\r\\n\\r\\n\\r\\n_Copied from original issue: ansible/ansible-modules-core#401_\", \n    \"component_name\": \"ec2_group\", \n    \"component_raw\": \":\\nec2_group module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19888\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_group.py\", \n    \"summary\": \":\\n\\n\\n\\nThis is a very small importance feature but it would be nice when using ec2_group module (http://docs.ansible.com/ec2_group_module.html) to define the ports using a single single `port_range` argument instead of having to define `from_port` and `to_port` .\\n\\n\\n\\nThis way it's going to be similar with the AWS console Port Range definition and you avoid to define the value twice when the rule is about a single port , as for example : \\n\\n##### Now:\\n\\n\\n\\n```\\n\\nrules:\\n\\n        - proto: tcp\\n\\n          from_port: 80\\n\\n          to_port: 80\\n\\n          cidr_ip: 0.0.0.0/0\\n\\n```\\n\\n##### using port_range :\\n\\n\\n\\n```\\n\\nrules:\\n\\n        - proto: tcp\\n\\n          port_range: 80\\n\\n          cidr_ip: 0.0.0.0/0\\n\\n```\\n\\n\\n\\nor defining a port range : \\n\\n##### Now:\\n\\n\\n\\n```\\n\\nrules:\\n\\n        - proto: tcp\\n\\n          from_port: 0\\n\\n          to_port: 65535\\n\\n          cidr_ip: 0.0.0.0/0\\n\\n```\\n\\n##### using port_range :\\n\\n\\n\\n```\\n\\nrules:\\n\\n        - proto: tcp\\n\\n          port_range: 0-65535\\n\\n          cidr_ip: 0.0.0.0/0\\n\\n```\\n\\n\\n\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#401_\", \n    \"title\": \"ec2_group: use of a single port_range argument instead of from_port and to_port\"\n  }, \n  \"19889\": {\n    \"ansible_version\": \"ansible 2.1.0 (devel 33f96edcd0) last updated 2016/03/10 145258 (GMT -400)\\nlib/ansible/modules/core (detached HEAD c86a0ef84a) last updated 2016/03/10 145303 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD 33a557cc59) last updated 2016/03/10 145303 (GMT -400)\\nconfig file =\\nconfigured module search path = Default w/o overrides\\nAnsible\", \n    \"body\": \"_From @jbscare on March 10, 2016 20:23_\\n\\n##### Issue Type:\\n- Feature Idea\\n##### Plugin Name:\\n\\nec2_group.py\\n##### Ansible Version:\\n\\n```\\nansible 2.1.0 (devel 33f96edcd0) last updated 2016/03/10 14:52:58 (GMT -400)\\n  lib/ansible/modules/core: (detached HEAD c86a0ef84a) last updated 2016/03/10 14:53:03 (GMT -400)\\n  lib/ansible/modules/extras: (detached HEAD 33a557cc59) last updated 2016/03/10 14:53:03 (GMT -400)\\n  config file = \\n  configured module search path = Default w/o overrides\\n```\\n##### Ansible Configuration:\\n\\nnone\\n##### Environment:\\n\\nN/A\\n##### Summary:\\n\\nec2_group.py doesn't do anything useful with --diff, and it'd be great if it did (with or without --check as well); without it, we have to resort to before-and-after captures of 'aws ec2 describe-security-groups' output, and even that only tells what changed after the change was already made.\\n##### Steps To Reproduce:\\n\\nAdding --diff to a playbook that uses ec2_group.py would show output indicating what was changed (or would be changed, with --check) -- perhaps 'diff' style, perhaps some other format if 'diff' style doesn't really make sense. (I don't have a specific idea in mind, but would be happy to help come up with something and/or comment on something that others come up with.)\\n##### Expected Results:\\n\\nSome sort of output indicating what had change (or would changed).\\n##### Actual Results:\\n\\nNo change in output from when the playbook is run without --diff.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#3221_\", \n    \"component_name\": \"ec2_group.py\", \n    \"component_raw\": \":\\nec2_group.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19889\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"aws\", \n      \"cloud\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_group.py\", \n    \"summary\": \":\\n\\nec2_group.py doesn't do anything useful with --diff, and it'd be great if it did (with or without --check as well); without it, we have to resort to before-and-after captures of 'aws ec2 describe-security-groups' output, and even that only tells what changed after the change was already made.\", \n    \"title\": \"ec2_group.py and --diff\"\n  }, \n  \"19890\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`lxc_container` module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nNo changes from package defaults.\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nUbuntu 16.04.1 LTS\\r\\n\\r\\n##### SUMMARY\\r\\nThe module makes use of the `lxc-clone` command, which is deprecated in favor of `lxc-copy`, and will be removed in some future LXC release \\u2014 in which case, if the module remains unchanged, clones will stop working.\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n`lxc_container.py` should invoke `lxc-copy` when creating clones.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n`lxc_container.py` invokes `lxc-clone` when creating clones.\\r\\n\", \n    \"component_name\": \"lxc_container\", \n    \"component_raw\": \"`lxc_container` module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19890\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/lxc/lxc_container.py\", \n    \"summary\": \"The module makes use of the `lxc-clone` command, which is deprecated in favor of `lxc-copy`, and will be removed in some future LXC release  in which case, if the module remains unchanged, clones will stop working.\", \n    \"title\": \"lxc_container.py still uses lxc-clone for clones (it ought to use lxc-copy)\"\n  }, \n  \"19891\": {\n    \"ansible_version\": \"2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nwait_for utility \\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nAdded protocol support for wait_for, that give the chance to check services such as dns, freeradius etc...\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n\\r\\n\", \n    \"component_name\": \"wait_for utility\", \n    \"component_raw\": \"wait_for utility\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19891\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"needs_rebase\", \n      \"needs_revision\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/wait_for.py\", \n    \"summary\": \"Added protocol support for wait_for, that give the chance to check services such as dns, freeradius etc...\", \n    \"title\": \"Added protocol option to wait_for \"\n  }, \n  \"19893\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /Users/rilindo/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @rilindo on November 8, 2016 1:13_\\n\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndocker_container\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /Users/rilindo/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nUsing the following config:\\r\\n\\r\\n```\\r\\nstardust:ansible_docker_demo rilindo$ export ANSIBLE_CONFIG=$(pwd)/ansible.cfg\\r\\nstardust:ansible_docker_demo rilindo$ export ANSIBLE_HOSTS=$(pwd)/hosts\\r\\nstardust:ansible_docker_demo rilindo$ cat ansible.cfg \\r\\n[defaults]\\r\\nroles_path=~/src/ansible_docker_demo/roles\\r\\nstardust:ansible_docker_demo rilindo$ cat hosts \\r\\n192.168.64.8\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n- Workstation OS X MacSiera\\r\\n- Server: Ubuntu 14.04 with port 2375 open for docker\\r\\n- Python version: 2.7.10\\r\\nList of python modules:\\r\\n\\r\\n```\\r\\naltgraph (0.10.2)\\r\\nansible (2.2.0.0)\\r\\nargparse (1.2.1)\\r\\nawscli (1.7.36)\\r\\nbdist-mpkg (0.5.0)\\r\\nbonjour-py (0.3)\\r\\nboto (2.10.0)\\r\\nbotocore (1.0.1)\\r\\ncached-property (1.3.0)\\r\\ncolorama (0.3.3)\\r\\ndocker-compose (1.9.0rc3)\\r\\ndocker-py (1.10.6)\\r\\ndocker-pycreds (0.2.1)\\r\\ndockerpty (0.4.1)\\r\\ndocopt (0.6.2)\\r\\ndocutils (0.12)\\r\\necdsa (0.13)\\r\\nelasticsearch (1.6.0)\\r\\nenum34 (1.1.6)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThe docker_container does not appear to be configuring and exposing the ports\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nHere is the code I am using:\\r\\n\\r\\n```\\r\\n\\n---\\r\\n- hosts: all\\r\\n  remote_user: ubuntu\\r\\n  vars_files:\\r\\n    - secret.yml\\r\\n  become: yes\\r\\n  become_method: sudo\\r\\n  tasks:\\r\\n  - name: create custom docker container\\r\\n    docker_container:\\r\\n      name: mycustomcontainer\\r\\n      image: rilindo/myapacheweb:v1\\r\\n      state: present\\r\\n      network_mode: bridge\\r\\n      exposed_ports: \\\"80\\\"\\r\\n      published_ports: \\\"80:80\\\"\\r\\n```\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nI expect to see this in docker ps -a\\r\\n\\r\\n```\\r\\nroot@ubuntu:~# docker run -d -p 80:80 rilindo/myapacheweb:v1 --name mycontainer\\r\\n30d6c5ceb274bf4e0b3767eac0c3df3ed9b58c480f0d25378c1e66bf2b106767\\r\\nroot@ubuntu:~# docker ps -a\\r\\nCONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                NAMES\\r\\n30d6c5ceb274        rilindo/myapacheweb:v1   \\\"/bin/sh -c 'apachect\\\"   3 seconds ago       Up 2 seconds        0.0.0.0:80->80/tcp   angry_stonebraker\\r\\nroot@ubuntu:~# \\r\\n```\\r\\n##### ACTUAL RESULTS\\r\\nThis is what it looks like from my workstation\\r\\n\\r\\n```\\r\\nstardust:ansible_docker_demo rilindo$ ansible-playbook create_custom_docker_container.yml \\r\\n\\r\\nPLAY [all] *********************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [192.168.64.8]\\r\\n\\r\\nTASK [create custom docker container] ******************************************\\r\\nchanged: [192.168.64.8]\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\n192.168.64.8               : ok=3    changed=1    unreachable=0    failed=0   \\r\\n```\\r\\n\\r\\nSo far, so good.\\r\\n\\r\\nThis is what I see on the docker host:\\r\\n\\r\\n```\\r\\nCONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS               NAMES\\r\\nff35fdf076de        rilindo/myapacheweb:v1   \\\"/bin/sh -c 'apachect\\\"   57 seconds ago      Created                                 mycustomcontainer\\r\\n```\\r\\n\\r\\nNote that the ports do not appear to be present under the **PORTS** column\\n\\n_Copied from original issue: ansible/ansible-modules-core#5523_\", \n    \"component_name\": \"docker_container\", \n    \"component_raw\": \"docker_container\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19893\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"summary\": \"The docker_container does not appear to be configuring and exposing the ports\", \n    \"title\": \"Ansible docker_container not exposing ports (2.2.0.0)\"\n  }, \n  \"19894\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @yamatt on October 31, 2016 21:15_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\n`docker_container`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.2.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nNone\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nLinux/Fedora 22\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWhen running a task with an `entrypoint` parameter, a docker container is destroyed and recreated each time after the first time it is run.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\nFill in the variables and run this twice:\\r\\n```\\r\\n- name: Create data container\\r\\n  docker_container:\\r\\n    name: \\\"{{ docker_data_name }}\\\"\\r\\n    image: \\\"{{ image }}\\\"\\r\\n    state: present\\r\\n    entrypoint: \\\"/bin/echo Data-only container for {{ name }}\\\"\\r\\n```\\r\\nOn the second run this roduces:\\r\\n```\\r\\nTASK [docker-image : Create data container] ************************************\\r\\nchanged: [hostname]\\r\\n```\\r\\nDestroy that container, comment out the entrypoint, then run this twice\\r\\n```\\r\\n- name: Create data container\\r\\n  docker_container:\\r\\n    name: \\\"{{ docker_data_name }}\\\"\\r\\n    image: \\\"{{ image }}\\\"\\r\\n    state: present\\r\\n    #entrypoint: \\\"/bin/echo Data-only container for {{ name }}\\\"\\r\\n```\\r\\nOn the second run this poduces:\\r\\n```\\r\\nTASK [docker-image : Create data container] ************************************\\r\\nok: [hostname]\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nAnsible reports no change. The created timestamp should be the same as the first time it was run.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nAnsible reports a change, and the created timestamp becomes recent.\\r\\n\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5446_\", \n    \"component_name\": \"docker_container\", \n    \"component_raw\": \"`docker_container`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19894\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"summary\": \"When running a task with an `entrypoint` parameter, a docker container is destroyed and recreated each time after the first time it is run.\", \n    \"title\": \"docker_container module doesn't match existing container when entrypoint is used\"\n  }, \n  \"19895\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/tessa/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_vpc\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/tessa/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nWhen creating a VPC that has subnets embedded in the declaration, it appears that the underlying boto calls don't wait or check to make sure the subnets have been created before proceeding. This means if the calls happen quickly, it can error our with a message about the subnets being missing, only for them to appear in AWS moments later.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nRun a VPC creation with subnets repeatedly, and at less busy times of the day (when the API is more responsive) it'll fail with missing subnet errors.\\r\\n\\r\\n```yaml\\r\\n    - name: \\\"{{ prefix }} VPC\\\"\\r\\n      ec2_vpc:\\r\\n        cidr_block: \\\"{{ vpc_subnet }}\\\"\\r\\n        region: \\\"{{ region }}\\\"\\r\\n        internet_gateway: yes\\r\\n        resource_tags:\\r\\n          Name: \\\"{{ prefix }}-vpc\\\"\\r\\n          Prefix: \\\"{{ prefix }}\\\"\\r\\n        state: \\\"{{ state }}\\\"\\r\\n        subnets:\\r\\n          - { cidr: \\\"{{ dmz_subnet }}\\\", resource_tags: { Name: \\\"{{ prefix }}-dmz\\\" } }\\r\\n          - { cidr: \\\"{{ private_subnet }}\\\", resource_tags: { Name: \\\"{{ prefix }}-private\\\" } }\\r\\n```\\r\\n\\r\\n```bash\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Unable to create subnet 172.30.0.0/17, error: EC2ResponseError: 400 Bad Request\\\\n<?xml version=\\\\\\\"1.0\\\\\\\" encoding=\\\\\\\"UTF-8\\\\\\\"?>\\\\n<Response><Errors><Error><Code>InvalidSubnetID.NotFound</Code><Message>The subnet ID 'subnet-8e50e2b2' does not exist</Message></Error></Errors><RequestID>6a476f37-9be8-4e22-9f59-a3f500201e48</RequestID></Response>\\\"}\\r\\n\\r\\n# aws ec2 describe-subnets --subnet-ids subnet-8e50e2b2\\r\\n{\\r\\n    \\\"Subnets\\\": [\\r\\n        {\\r\\n            \\\"VpcId\\\": \\\"vpc-cf1eaba9\\\", \\r\\n            \\\"Tags\\\": [\\r\\n                {\\r\\n                    \\\"Value\\\": \\\"tessa-dmz\\\", \\r\\n                    \\\"Key\\\": \\\"Name\\\"\\r\\n                }\\r\\n            ], \\r\\n            \\\"CidrBlock\\\": \\\"172.30.0.0/17\\\", \\r\\n            \\\"MapPublicIpOnLaunch\\\": false, \\r\\n            \\\"DefaultForAz\\\": false, \\r\\n            \\\"State\\\": \\\"available\\\", \\r\\n            \\\"AvailabilityZone\\\": \\\"us-east-1b\\\", \\r\\n            \\\"SubnetId\\\": \\\"subnet-8e50e2b2\\\", \\r\\n            \\\"AvailableIpAddressCount\\\": 32763\\r\\n        }\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nsubnets and vpc to be created correctly\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nErrors out perhaps 5% of the time.\\r\\n\\r\\nnote that the AWS API docs seem to indicate a lot of these operations are atomic when in fact there can be significant delays from when the API call returns to when the resource is created. So this may be a larger class of issue where Ansible should always verify a resource has been created (with a timeout) before proceeding to next steps, at least where boto calls are concerned.\", \n    \"component_name\": \"ec2_vpc\", \n    \"component_raw\": \"ec2_vpc\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19895\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n    \"summary\": \"When creating a VPC that has subnets embedded in the declaration, it appears that the underlying boto calls don't wait or check to make sure the subnets have been created before proceeding. This means if the calls happen quickly, it can error our with a message about the subnets being missing, only for them to appear in AWS moments later.\", \n    \"title\": \"ec2_vpc doesn't wait for subnets to be created, errors out intermittently\"\n  }, \n  \"19896\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\npanos_service\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.0.0\\u2028\\r\\nconfig file =\\u2028\\r\\nconfigured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nNew panos module that allows for admin to add arbitrary service definition to the firewall. Service definitions can be used in policies for enforcement.\", \n    \"component_name\": \"panos_service\", \n    \"component_raw\": \"panos_service\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19896\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"networking\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/panos/panos_service.py\", \n    \"summary\": \"New panos module that allows for admin to add arbitrary service definition to the firewall. Service definitions can be used in policies for enforcement.\", \n    \"title\": \"new panos module that adds arbitrary service to the FW\"\n  }, \n  \"19897\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\npanos_mgtconfig\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.0.0\\u2028\\r\\nconfig file =\\u2028\\r\\nconfigured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nNew panos module that allows for rudimentary management interface configuration.\", \n    \"component_name\": \"panos_mgtconfig\", \n    \"component_raw\": \"panos_mgtconfig\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19897\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"networking\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/panos/panos_mgtconfig.py\", \n    \"summary\": \"New panos module that allows for rudimentary management interface\", \n    \"title\": \"Panos mgtconfig\"\n  }, \n  \"19899\": {\n    \"ansible_version\": \"2.2 and devel\\nnote this is probably better fixed only in devel as it isnt perfect.  Theres a chance that users are using key-value with this module and will have to switch to yaml notation.  (This is better than the status quo as theres currently no way to use lists with the value parameter).\", \n    \"body\": \"In modern ansible, parameters default to string type.  This causes\\r\\nissues for polymorphic parameters like this module's value param.  note\\r\\nthat this fix restores ansible-2.0 and previous behaviour but it is not\\r\\nperfect.  If a parameter is specified via key=value or given on the\\r\\ncommandline then it will be a string before it reaches the module code.\\r\\nThere's nothing we can do about that.\\r\\n\\r\\nFixes #19585\\r\\n\\r\\n##### ISSUE TYPE\\r\\n\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodules/system/osx_defaults.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.2 and devel\\r\\n```\\r\\n\\r\\nnote: this is probably better fixed only in devel as it isn't perfect.  There's a chance that users are using key-value with this module and will have to switch to yaml notation.  (This is better than the status quo as there's currently no way to use lists with the value parameter).\", \n    \"component_name\": \"s/system/osx_defaults.py\", \n    \"component_raw\": \"modules/system/osx_defaults.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19899\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/osx_defaults.py\", \n    \"summary\": null, \n    \"title\": \"Fix OSX defaults for lists\"\n  }, \n  \"19900\": {\n    \"ansible_version\": \"For Ansible v2.3.\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\nBugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n`ldap_attr` and `ldap_entry` modules\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\nFor Ansible v2.3.\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThis PR is only changing e-mail address of the original author of these modules as per his request here:\\r\\n\\r\\nhttps://bitbucket.org/psagers/ansible-ldap/pull-requests/2/adding-params-option-and-other-minor/diff#comment-29182565\", \n    \"component_name\": \"ldap_attr and ldap_entry  s\", \n    \"component_raw\": \"`ldap_attr` and `ldap_entry` modules\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19900\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/ldap_attr.py\", \n    \"summary\": \"This PR is only changing e-mail address of the original author of these modules as per his request here:\\n\\n\\n\\nhttps://bitbucket.org/psagers/ansible-ldap/pull-requests/2/adding-params-option-and-other-minor/diff#comment-29182565\", \n    \"title\": \"Changing author's e-mail for ldap_* modules\"\n  }, \n  \"19901\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\npanos_import\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.0.0\\u2028\\r\\nconfig file =\\u2028\\r\\nconfigured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nNew panos module that allows for import of the configuration files or software releases onto firewall.\\r\\n\", \n    \"component_name\": \"panos_import\", \n    \"component_raw\": \"panos_import\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19901\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_revision\", \n      \"networking\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/panos/panos_import.py\", \n    \"summary\": \"New panos module that allows for import of the\", \n    \"title\": \"new panos module to import software or configuration file into firewall\"\n  }, \n  \"19902\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\npanos_loadcfg\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.0.0\\u2028\\r\\nconfig file =\\u2028\\r\\nconfigured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nNew panos module that allows admin to apply and load new configuration into the firewall. The file has to be imported first using panos_import module.\\r\\n\", \n    \"component_name\": \"panos_loadcfg\", \n    \"component_raw\": \"panos_loadcfg\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19902\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"networking\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/panos/panos_loadcfg.py\", \n    \"summary\": \"New panos module that allows admin to apply and load new\", \n    \"title\": \"new panos module to load configuration file\"\n  }, \n  \"19904\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\npanos_pg\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.0.0\\u2028\\r\\nconfig file =\\u2028\\r\\nconfigured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nNew panos module that allows for creation of security profile groups.\\r\\n\", \n    \"component_name\": \"panos_pg\", \n    \"component_raw\": \"panos_pg\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19904\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"networking\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/panos/panos_pg.py\", \n    \"summary\": \"New panos module that allows for creation of security profile groups.\", \n    \"title\": \"new panos module for profile groups\"\n  }, \n  \"19906\": {\n    \"ansible_version\": \"ansible 2.3.0 (plugin_loaders_as_classes 6989c0649b) last updated 2017/01/04 184054 (GMT -400)\\nconfig file = /home/adrian/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n  - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nlib/ansible/plugins\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (plugin_loaders_as_classes 6989c0649b) last updated 2017/01/04 18:40:54 (GMT -400)\\r\\n  config file = /home/adrian/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThis is a work-in-progress...\\r\\n\\r\\nReplacing the multiple instances of PluginLoader with subclasses of PluginLoader. Also moving the init of the loaders closer to where they are used (instead of at module import scope in plugins/__init__.py).\\r\\n\\r\\nNext step is splitting module_loader specific bits into a ModuleLoader subclass (and hopefully, simplifying PluginLoader).\\r\\n\\r\\nThis also removes most of the global (or plugins/__init__.py module scope) plugin caches and replaces them with per loader instance caches. This doesn't include any changes to explicitly share loaders around, but there are a few obvious places where it could be done (TestLoader, FIlterLoader, etc). In rudimentary testing there doesn't seem to be any noticeable perf differences without the shared caches. ModuleLoader will probably benefit more (though, if we can avoid having to load unused modules it may not be needed).\", \n    \"component_name\": \"lib/ansible/plugins\", \n    \"component_raw\": \"lib/ansible/plugins\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19906\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:cli/\", \n      \"c:executor/task_executor\", \n      \"c:executor/task_queue_manager\", \n      \"c:parsing/mod_args\", \n      \"c:playbook/task\", \n      \"c:plugins/action\", \n      \"c:plugins/cache\", \n      \"c:plugins/connection\", \n      \"c:plugins/connection/network_cli\", \n      \"c:plugins/strategy\", \n      \"c:template/safe_eval\", \n      \"feature\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This is a work-in-progress...\\n\\n\\n\\nReplacing the multiple instances of PluginLoader with subclasses of PluginLoader. Also moving the init of the loaders closer to where they are used (instead of at module import scope in plugins/__init__.py).\\n\\n\\n\\nNext step is splitting module_loader specific bits into a ModuleLoader subclass (and hopefully, simplifying PluginLoader).\\n\\n\\n\\nThis also removes most of the global (or plugins/__init__.py module scope) plugin caches and replaces them with per loader instance caches. This doesn't include any changes to explicitly share loaders around, but there are a few obvious places where it could be done (TestLoader, FIlterLoader, etc). In rudimentary testing there doesn't seem to be any noticeable perf differences without the shared caches. ModuleLoader will probably benefit more (though, if we can avoid having to load unused modules it may not be needed).\", \n    \"title\": \"[WIP] Plugin loaders as classes\"\n  }, \n  \"19909\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nConfigureRemotingForAnsible.ps1\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\nInstead of asking the user to type something prior to running the script, why not allow -Verbose on the command line directly.\\r\\nAlso log important events to EventLog, so that it can be traced e.g. when running via VMware's RunOnce mechanism (or any other unattended mechanism).\\r\\n\\r\\nThe documentation is updated as well.\", \n    \"component_name\": \"configureremotingforansible.ps1\", \n    \"component_raw\": \"ConfigureRemotingForAnsible.ps1\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19909\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"feature\", \n      \"needs_revision\", \n      \"windows\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Instead of asking the user to type something prior to running the script, why not allow -Verbose on the command line directly.\\n\\nAlso log important events to EventLog, so that it can be traced e.g. when running via VMware's RunOnce mechanism (or any other unattended mechanism).\\n\\n\\n\\nThe documentation is updated as well.\", \n    \"title\": \"Enable -Verbose and log to EventLog\"\n  }, \n  \"19911\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Feature Pull Request\\r\\n##### COMPONENT NAME\\r\\n\\r\\necs_service\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n##### SUMMARY\\r\\n\\r\\nAdded deployment_configuration as an optional configuration parameter for the ecs_service module, which allows to set minimum_healthy_percent and maximum_percent in both create and update functions. It doesn't do anything beyond using the existing parameters for boto3. It checks for existence of parameters and raises an exception is the arguments are not named correctly\\r\\n\\r\\nthis fixes #2434\\r\\n\\r\\n\\r\\nThis replaces https://github.com/ansible/ansible/pull/19316\", \n    \"component_name\": \"ecs_service\", \n    \"component_raw\": \"ecs_service\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19911\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"c:module_utils/\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"module_util\", \n      \"owner_pr\", \n      \"shipit\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ecs_service.py\", \n    \"summary\": \"Added deployment_\", \n    \"title\": \"ecs_service: added deployment configuration\"\n  }, \n  \"19912\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\nFeature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nhttptester\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nv2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nChanges to the httptester docker image to support new client cert functionality in tests\\r\\n\\r\\nThese changes are to support https://github.com/ansible/ansible/pull/18141\", \n    \"component_name\": \"httptester\", \n    \"component_raw\": \"httptester\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19912\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"docker\", \n      \"feature\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Changes to the httptester docker image to support new client cert functionality in tests\\n\\n\\n\\nThese changes are to support https://github.com/ansible/ansible/pull/18141\", \n    \"title\": \"Changes to the httptester docker image to support new client cert functionality in tests\"\n  }, \n  \"19913\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nmodule  setup \\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nCentOS Linux release 7.1.1503 (Core)\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\ncommand\\uff1a  ansible all -m setup \\r\\nat openstack network node, process for a long time, and finally into the D+ state\\r\\nNetwork nodes have many virtual NICs.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nexec  ansible-playbook below,  first call  module setup, return facts\\u3002\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n---\\r\\n- hosts: xx.xx.xx.xx\\r\\n  tasks:\\r\\n    - name: test\\r\\n      shell: echo aaaa\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nCorrect and quick return\\r\\n\\r\\n\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nAt network node\\r\\nSome of the virtual network card list\\r\\n```bash \\r\\n...........\\r\\n1011: ifb740: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n755: ifb484: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n499: ifb228: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n1268: ifb997: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n1012: ifb741: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n756: ifb485: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n500: ifb229: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n1269: ifb998: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n1013: ifb742: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n757: ifb486: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n501: ifb230: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n1270: ifb999: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n1014: ifb743: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n758: ifb487: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n502: ifb231: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n1015: ifb744: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n759: ifb488: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n503: ifb232: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n1016: ifb745: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n760: ifb489: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n504: ifb233: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n1017: ifb746: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n761: ifb490: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n505: ifb234: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n1018: ifb747: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n762: ifb491: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n506: ifb235: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n1019: ifb748: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n763: ifb492: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n507: ifb236: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n1020: ifb749: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n764: ifb493: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n508: ifb237: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n1021: ifb750: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n765: ifb494: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n509: ifb238: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n1022: ifb751: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n766: ifb495: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n510: ifb239: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n1023: ifb752: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n767: ifb496: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n511: ifb240: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 32\\r\\n[root@controller16 ~]# ip link | grep ifb | wc -l\\r\\n911\\r\\n```\\r\\n\\r\\nNIC too much, take too long\\u3002\\r\\n\\r\\n```bash\\r\\n[root@controller16 ~]# ps -ahfww\\r\\n 49036 pts/1    Ss+    0:00 /bin/sh -c /usr/bin/python /root/.ansible/tmp/ansible-tmp-1483608708.39-143999004080315/setup.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1483608708.39-143999004080315/\\\" > /dev/null 2>&1 && sleep 0\\r\\n 49083 pts/1    S+     0:00  \\\\_ /usr/bin/python /root/.ansible/tmp/ansible-tmp-1483608708.39-143999004080315/setup.py\\r\\n 49213 pts/1    D+     0:00      \\\\_ /usr/bin/python /tmp/ansible_bx9h6K/ansible_module_setup.py\\r\\n```\\r\\nThe process finally into the D+ state,\\r\\n\\r\\n\\r\\nAt ansible node \\r\\n```bash\\r\\n 7901 pts/2    Sl+    2:43  \\\\_ /usr/bin/python /usr/bin/ansible all -m setup\\r\\n 7912 pts/2    S+     0:00      \\\\_ /usr/bin/python /usr/bin/ansible all -m setup\\r\\n 7960 pts/2    S+     0:00          \\\\_ ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r -tt 10.168.14.16 /bin/sh -c '/usr/bin/python /root/.ansible/tmp/ansible-tmp-1483608708.39-143999004080315/setup.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1483608708.39-143999004080315/\\\" > /dev/null 2>&1 && sleep 0'\\r\\n```\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n\\r\\n\", \n    \"component_name\": \"setup\", \n    \"component_raw\": \"module  setup\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19913\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/setup.py\", \n    \"summary\": \"command  ansible all -m setup \\n\\nat openstack network node, process for a long time, and finally into the D+ state\\n\\nNetwork nodes have many virtual NICs.\", \n    \"title\": \"[ ansible 2.2.0 ] [ module setup ] the process is D+ state  at  openstack network node\"\n  }, \n  \"19914\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"eval can have security consequences.  It doesn't look bad here but it\\r\\ndoes introduce unnecessary complexity and would make it harder if we\\r\\never want to use static analysis to detect and prohibit eval.  So we\\r\\nshould get rid of it.\\r\\n\\r\\nNote: this could be even more efficient if we combined the checks into\\r\\na single condition instead of looping but that does change the error\\r\\nmessages a bit.  For instance:\\r\\n-        for arg in ('name', 'linode_id'):\\r\\n-            if not eval(arg):\\r\\n+        if not (name and linode_id):\\r\\n+            module.fail_json(msg='name and linode_id are required for active state')\\r\\n\\r\\n##### ISSUE TYPE\\r\\n\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nlib/ansible/modules/cloud/linode/linode.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\ndevel\\r\\n```\", \n    \"component_name\": \"lib/ansible/ s/cloud/linode/linode.py\", \n    \"component_raw\": \"lib/ansible/modules/cloud/linode/linode.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19914\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/linode/linode.py\", \n    \"summary\": null, \n    \"title\": \"eval() should be avoided when at all possible\"\n  }, \n  \"19921\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel d182b271db) last updated 2017/01/05 142417 (GMT +1000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nrds_param_group\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel d182b271db) last updated 2017/01/05 14:24:17 (GMT +1000)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nSupport postgres-9.6 as an engine choice for rds_param_group\", \n    \"component_name\": \"rds_param_group\", \n    \"component_raw\": \"rds_param_group\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19921\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/rds_param_group.py\", \n    \"summary\": \"Support postgres-9.6 as an engine choice for rds_param_group\", \n    \"title\": \"Add postgres-9.6 to rds_param_group module\"\n  }, \n  \"19922\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel d182b271db) last updated 2017/01/05 142417 (GMT +1000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmailmap\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel d182b271db) last updated 2017/01/05 14:24:17 (GMT +1000)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdd new mailmap entry for @willthames\", \n    \"component_name\": \"mailmap\", \n    \"component_raw\": \"mailmap\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19922\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Add new mailmap entry for @willthames\", \n    \"title\": \"Add new mailmap entry for @willthames\"\n  }, \n  \"19923\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel d182b271db) last updated 2017/01/05 142417 (GMT +1000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n  - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_vpc_route_table_facts\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel d182b271db) last updated 2017/01/05 14:24:17 (GMT +1000)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY \\r\\n\\r\\nCurrently, the `ec2_vpc_route_table_facts` module does not include any information about route table associations even though this information is returned by the `get_all_route_tables` boto call. This information is extremely useful when reasoning about subnet/route table interactions. This PR rectifies that problem by just including a dict for each association in the exact same fashion as how the routes are returned to the user.\\r\\n\\r\\nSome minor PEP8 tweaks are also included.\\r\\n\\r\\nThis is a straightforward rebase (retaining full credit) of ansible/ansible-modules-extra#3103 by @howinator\", \n    \"component_name\": \"ec2_vpc_route_table_facts\", \n    \"component_raw\": \"ec2_vpc_route_table_facts\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19923\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table_facts.py\", \n    \"summary\": \"Currently, the `ec2_vpc_route_table_facts` module does not include any information about route table associations even though this information is returned by the `get_all_route_tables` boto call. This information is extremely useful when reasoning about subnet/route table interactions. This PR rectifies that problem by just including a dict for each association in the exact same fashion as how the routes are returned to the user.\\n\\n\\n\\nSome minor PEP8 tweaks are also included.\\n\\n\\n\\nThis is a straightforward rebase (retaining full credit) of ansible/ansible-modules-extra#3103 by @howinator\", \n    \"title\": \"Add subnet associations info to ec2_vpc_route_table_facts\"\n  }, \n  \"19925\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ntest/integration/targets/yum\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\ndevel\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\ntests for the new yuminstallroot feature\", \n    \"component_name\": \"test/integration/targets/yum\", \n    \"component_raw\": \"test/integration/targets/yum\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19925\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"test\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/yum.py\", \n    \"summary\": \"tests for the new yuminstallroot feature\", \n    \"title\": \"Fix yum install root\"\n  }, \n  \"19926\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvmware_inventory.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n* Fix many points reported by PyCharm as PEP 8 code style\\r\\n* Improve inventory performance by dropping vim.HostSystem & vim.VirtualMachine collect when depth >= 2\\r\\n* Declare some class variables properly\\r\\n* Remove some unused variables\\r\\n* Add documentation in vmware_inventory.ini for VMWARE_USERNAME & VMWARE_PASSWORD env vars\\r\\n\\r\\nThis permit to set the following without huge performance penalty (without this optimisation, 30sec per guest instead of 1sec after optimization, because level 2 fetch for each network all guest & hostsystems + associated methods)\\r\\n```\\r\\nmax_object_level=2\\r\\ngroupby_patterns={{ network[0].name }},{{ network[1].name }},{{ network[2].name }}\\r\\n```\\r\\n\\r\\nThis measurement was done on my internal platform with 8 ESX + 250 guests & 3 resource pools\\r\\n\\r\\n\", \n    \"component_name\": \"vmware_inventory.py\", \n    \"component_raw\": \"vmware_inventory.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19926\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"performance\", \n      \"vmware\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"* Fix many points reported by PyCharm as PEP 8 code style\\n\\n* Improve inventory performance by dropping vim.HostSystem & vim.VirtualMachine collect when depth >= 2\\n\\n* Declare some class variables properly\\n\\n* Remove some unused variables\\n\\n* Add documentation in vmware_inventory.ini for VMWARE_USERNAME & VMWARE_PASSWORD env vars\\n\\n\\n\\nThis permit to set the following without huge performance penalty (without this optimisation, 30sec per guest instead of 1sec after optimization, because level 2 fetch for each network all guest & hostsystems + associated methods)\\n\\n```\\n\\nmax_object_level=2\\n\\ngroupby_patterns={{ network[0].name }},{{ network[1].name }},{{ network[2].name }}\\n\\n```\\n\\n\\n\\nThis measurement was done on my internal platform with 8 ESX + 250 guests & 3 resource pools\", \n    \"title\": \"Various VMware inventory (pyvomi fixes) + ini doc\"\n  }, \n  \"19927\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_template\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nNo setting changed\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nServer: Ubuntu 14.04\\r\\nClient: Windows Server 2012R2\\r\\n\\r\\n##### SUMMARY\\r\\nWe use `win_template` to copy a configuration file for the [TeamCity](https://www.jetbrains.com/teamcity/) build server and its agents. For some reason the status from `win_template` is always `changed` even if the variables used with the template file is not changed. This is a problem because TeamCity detects the file as changed (since it gets copied over to the client) and the build agent moved to Unauthorized - and made unavailable. A bit boring since I want to provision the agents every night. \\r\\n\\r\\n\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nSet the following file in `templates`: `buildAgent.properties`\\r\\n\\r\\n```\\r\\n# {{ ansible_managed }}\\r\\n## TeamCity build agent configuration file\\r\\n\\r\\n######################################\\r\\n#   Required Agent Properties        #\\r\\n######################################\\r\\n\\r\\n## The address of the TeamCity server. The same as is used to open TeamCity web interface in the browser.\\r\\n## The address may contain \\\"http://\\\" or \\\"https://\\\" prefix. If omitted, the http protocol is used.\\r\\n## Example 1:  serverUrl=buildserver.mydomain.com\\r\\n## Example 2:  serverUrl=https://buildserver.mydomain.com:8111\\r\\nserverUrl={{ TeamCityServer }}\\r\\n\\r\\n## The unique name of the agent used to identify this agent on the TeamCity server\\r\\n## Use blank name to let server generate it.\\r\\n## By default, this name would be created from the build agent's host name\\r\\nname={{ ansible_hostname }}\\r\\n\\r\\n## Container directory to create default checkout directories for the build configurations.\\r\\nworkDir=C\\\\:\\\\\\\\tcagent\\\\\\\\work\\r\\n\\r\\n## Container directory for the temporary directories.\\r\\n## Please note that the directory may be cleaned between the builds.\\r\\ntempDir=C\\\\:\\\\\\\\tcagent\\\\\\\\temp\\r\\n\\r\\n## Container directory for agent system files\\r\\nsystemDir=C\\\\:\\\\\\\\tcagent\\\\\\\\system\\r\\n\\r\\n\\r\\n######################################\\r\\n#   Optional Agent Properties        #\\r\\n######################################\\r\\n\\r\\n## The IP address which will be used by TeamCity server to connect to the build agent.\\r\\n## If not specified, it is detected by build agent automatically,\\r\\n## but if the machine has several network interfaces, automatic detection may fail.\\r\\n#ownAddress=<own IP address or server-accessible domain name>\\r\\n\\r\\n## Optional\\r\\n## A port that TeamCity server will use to connect to the agent.\\r\\n## Please make sure that incoming connections for this port\\r\\n## are allowed on the agent computer (e.g. not blocked by a firewall)\\r\\nownPort=9090\\r\\n\\r\\n## A token which is used to identify this agent on the TeamCity server.\\r\\n## It is automatically generated and saved on the first agent connection to the server.\\r\\nauthorizationToken=\\r\\n\\r\\n\\r\\n######################################\\r\\n#   Default Build Properties         #\\r\\n######################################\\r\\n## All properties starting with \\\"system.name\\\" will be passed to the build script as \\\"name\\\"\\r\\n## All properties starting with \\\"env.name\\\" will be set as environment variable \\\"name\\\" for the build process\\r\\n## Note that value should be properly escaped. (use \\\"\\\\\\\\\\\" to represent single backslash (\\\"\\\\\\\"))\\r\\n## More on file structure: http://java.sun.com/j2se/1.5.0/docs/api/java/util/Properties.html#load(java.io.InputStream)\\r\\n\\r\\n# Build Script Properties\\r\\n\\r\\n#system.exampleProperty=example Value\\r\\n\\r\\n# Environment Variables\\r\\n\\r\\n#env.exampleEnvVar=example Env Value\\r\\nenv.agentCapabilities={{ agentCapabilities }}\\r\\n\\r\\n```\\r\\n\\r\\nRole: \\r\\n\\r\\n```\\r\\n- name: Copy buildAgent.properties file to Team City Build Agent\\r\\n  win_template: src=\\\"buildAgent.properties\\\" dest=\\\"C:\\\\\\\\tcagent\\\\\\\\conf\\\\\\\\buildAgent.properties\\\"\\r\\n  notify: Install TCAgent\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nSince none of the variables have changed, I expect the status to be `OK` or `SKIPPING`.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [TeamCityAgent : Copy buildAgent.properties file to Team City Build Agent]\\r\\ntask path: /vagrant/roles/TeamCityAgent/tasks/main.yaml:8\\r\\n<10.0.110.30> ESTABLISH WINRM CONNECTION FOR USER: ansibleadmin on PORT 5986 TO 10.0.110.30\\r\\n<10.0.110.30> EXEC Set-StrictMode -Version Latest\\r\\n(New-Item -Type Directory -Path $env:temp -Name \\\"ansible-tmp-1483608384.64-200642629150845\\\").FullName | Write-Host -Separator '';\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/core/windows/win_stat.ps1\\r\\n<10.0.110.30> PUT \\\"/tmp/tmp0maqQA\\\" TO \\\"C:\\\\Users\\\\ansibleadmin\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1483608384.64-200642629150845\\\\win_stat.ps1\\\"\\r\\n<10.0.110.30> EXEC Set-StrictMode -Version Latest\\r\\nTry\\r\\n{\\r\\n& 'C:\\\\Users\\\\ansibleadmin\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1483608384.64-200642629150845\\\\win_stat.ps1'\\r\\n}\\r\\nCatch\\r\\n{\\r\\n$_obj = @{ failed = $true }\\r\\nIf ($_.Exception.GetType)\\r\\n{\\r\\n$_obj.Add('msg', $_.Exception.Message)\\r\\n}\\r\\nElse\\r\\n{\\r\\n$_obj.Add('msg', $_.ToString())\\r\\n}\\r\\nIf ($_.InvocationInfo.PositionMessage)\\r\\n{\\r\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\r\\n}\\r\\nElseIf ($_.ScriptStackTrace)\\r\\n{\\r\\n$_obj.Add('exception', $_.ScriptStackTrace)\\r\\n}\\r\\nTry\\r\\n{\\r\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\r\\n}\\r\\nCatch\\r\\n{\\r\\n}\\r\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\r\\nExit 1\\r\\n}\\r\\n<10.0.110.30> PUT \\\"/tmp/tmpWJ6Ty0\\\" TO \\\"C:\\\\Users\\\\ansibleadmin\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1483608384.64-200642629150845\\\\source\\\"\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/core/windows/win_copy.ps1\\r\\n<10.0.110.30> PUT \\\"/tmp/tmpS37JYX\\\" TO \\\"C:\\\\Users\\\\ansibleadmin\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1483608384.64-200642629150845\\\\win_copy.ps1\\\"\\r\\n<10.0.110.30> EXEC Set-StrictMode -Version Latest\\r\\nTry\\r\\n{\\r\\n& 'C:\\\\Users\\\\ansibleadmin\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1483608384.64-200642629150845\\\\win_copy.ps1'\\r\\n}\\r\\nCatch\\r\\n{\\r\\n$_obj = @{ failed = $true }\\r\\nIf ($_.Exception.GetType)\\r\\n{\\r\\n$_obj.Add('msg', $_.Exception.Message)\\r\\n}\\r\\nElse\\r\\n{\\r\\n$_obj.Add('msg', $_.ToString())\\r\\n}\\r\\nIf ($_.InvocationInfo.PositionMessage)\\r\\n{\\r\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\r\\n}\\r\\nElseIf ($_.ScriptStackTrace)\\r\\n{\\r\\n$_obj.Add('exception', $_.ScriptStackTrace)\\r\\n}\\r\\nTry\\r\\n{\\r\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\r\\n}\\r\\nCatch\\r\\n{\\r\\n}\\r\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\r\\nExit 1\\r\\n}\\r\\n<10.0.110.30> EXEC Set-StrictMode -Version Latest\\r\\nRemove-Item \\\"C:\\\\Users\\\\ansibleadmin\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1483608384.64-200642629150845\\\" -Force -Recurse;\\r\\nNOTIFIED HANDLER Install TCAgent\\r\\nchanged: [vt-tc-build06.dips.local] => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"dest\\\": \\\"C:\\\\\\\\tcagent\\\\\\\\conf\\\\\\\\buildAgent.properties\\\",\\r\\n            \\\"src\\\": \\\"buildAgent.properties\\\"\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"win_template\\\"\\r\\n    },\\r\\n    \\\"operation\\\": \\\"file_copy\\\",\\r\\n    \\\"original_basename\\\": \\\"buildAgent.properties\\\",\\r\\n    \\\"size\\\": 2653\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"win_template\", \n    \"component_raw\": \"win_template\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19927\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"needs_info\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_template.py\", \n    \"summary\": \"We use `win_template` to copy a configuration file for the [TeamCity](https://www.jetbrains.com/teamcity/) build server and its agents. For some reason the status from `win_template` is always `changed` even if the variables used with the template file is not changed. This is a problem because TeamCity detects the file as changed (since it gets copied over to the client) and the build agent moved to Unauthorized - and made unavailable. A bit boring since I want to provision the agents every night.\", \n    \"title\": \"win_template: Returns 'changed' every time\"\n  }, \n  \"19928\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnxos_vxlan_vtep_vni\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nFixing issue when multiple vni exist.\", \n    \"component_name\": \"nxos_vxlan_vtep_vni\", \n    \"component_raw\": \"nxos_vxlan_vtep_vni\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19928\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\", \n    \"summary\": \"Fixing issue when multiple vni exist.\", \n    \"title\": \"Fixing nxos_vxlan_vtep_vni issue when multiple vni exist\"\n  }, \n  \"19929\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n- If an absolute path is provided, ensure it starts with /vm\\r\\n- Also ensure there are no trailing slashes\\r\\n\\r\\nThis gets rid of a few locations where the same was being done.\\r\\nIt also fixes the cases of multiple trailing slashes, or ending up with\\r\\n/vm/ instead of /vm.\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19929\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"shipit\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"- If an absolute path is provided, ensure it starts with /vm\\n\\n- Also ensure there are no trailing slashes\\n\\n\\n\\nThis gets rid of a few locations where the same was being done.\\n\\nIt also fixes the cases of multiple trailing slashes, or ending up with\\n\\n/vm/ instead of /vm.\", \n    \"title\": \"vmware_guest: Sanitize folder path from the very start\"\n  }, \n  \"19930\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodule_utils/urls.py\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nI am running with Python 3.4\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nlinux\\r\\n\\r\\n##### SUMMARY\\r\\nUsing basic authentication does not work with Python3 because the \\\"%\\\" does not allow bytes. However, \\r\\n\\r\\n```\\r\\ndef basic_auth_header(username, password):\\r\\n    \\\"\\\"\\\"Takes a username and password and returns a byte string suitable for\\r\\n    using as value of an Authorization header to do basic auth.\\r\\n    \\\"\\\"\\\"\\r\\n    return b(\\\"Basic %s\\\") % base64.b64encode(to_bytes(\\\"%s:%s\\\" % (username, password), errors='surrogate_or_strict'))\\r\\n```\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\nUse `open_url` in module like this:\\r\\n```\\r\\n        resp = open_url(url, method=\\\"PUT\\\", validate_certs=False,\\r\\n            url_username=user, url_password=password, force_basic_auth=True,\\r\\n            data=state.encode(\\\"UTF-8\\\"))\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\ncall works.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nError:\\r\\n```\\r\\nFile \\\\\\\"/tmp/ansible_k0x02er_/ansible_modlib.zip/ansible/module_utils/urls.py\\\\\\\", line 827, in open_url\\r\\nFile \\\\\\\"/tmp/ansible_k0x02er_/ansible_modlib.zip/ansible/module_utils/urls.py\\\\\\\", line 911, in basic_auth_header\\r\\n\\r\\nTypeError: unsupported operand type(s) for %: 'bytes'\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"module_utils/urls.py\", \n    \"component_raw\": \"module_utils/urls.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19930\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"python3\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Using basic authentication does not work with Python3 because the \\\"%\\\" does not allow bytes. However, \\n\\n\\n\\n```\\n\\ndef basic_auth_header(username, password):\\n\\n    \\\"\\\"\\\"Takes a username and password and returns a byte string suitable for\\n\\n    using as value of an Authorization header to do basic auth.\\n\\n    \\\"\\\"\\\"\\n\\n    return b(\\\"Basic %s\\\") % base64.b64encode(to_bytes(\\\"%s:%s\\\" % (username, password), errors='surrogate_or_strict'))\\n\\n```\", \n    \"title\": \"Type error with python3 when using basic Authentication with open_url\"\n  }, \n  \"19932\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nThis patch adds support for all other virtual NICs, including:\\r\\n\\r\\n - pcnet32\\r\\n - vmxnet2\\r\\n - e1000e\\r\\n - sriov\\r\\n\\r\\nWithout this change, VMs with one of these NICs will fail with a\\r\\nfault.NicSettingMismatch.summary error as it will only add interfaces,\\r\\nnot edit these.\\r\\n\\r\\nThis fixes #19860\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19932\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"shipit\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"This patch adds support for all other virtual NICs, including:\\n\\n\\n\\n - pcnet32\\n\\n - vmxnet2\\n\\n - e1000e\\n\\n - sriov\\n\\n\\n\\nWithout this change, VMs with one of these NICs will fail with a\\n\\nfault.NicSettingMismatch.summary error as it will only add interfaces,\\n\\nnot edit these.\\n\\n\\n\\nThis fixes #19860\", \n    \"title\": \"vmware_guest: add support for more virtual NICs\"\n  }, \n  \"19935\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\ndigital_ocean.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n- Add hostvars to the dynamic inventory returned by digital_ocean.py\\r\\n\\r\\nThis makes host variables like `do_id` or `do_ip_address` available when using the DigitalOcean dynamic inventory.\", \n    \"component_name\": \"digital_ocean.py\", \n    \"component_raw\": \"digital_ocean.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19935\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"- Add hostvars to the dynamic inventory returned by digital_ocean.py\\n\\n\\n\\nThis makes host variables like `do_id` or `do_ip_address` available when using the DigitalOcean dynamic inventory.\", \n    \"title\": \"Register host variables for the DigitalOcean dynamic inventory\"\n  }, \n  \"19936\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\nSince most of the time is spend creating an object cache while that is\\r\\nnot necessary, and quite time-consuming, this change removes most of\\r\\nthat code and replaces it with an exact match on an absolute path.\\r\\n\\r\\nThis speeds up vmware_guest considerably.\\r\\n\\r\\nThis relates to #19417 and #19830\\r\\nThis fixes #19064\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19936\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"Since most of the time is spend creating an object cache while that is\\n\\nnot necessary, and quite time-consuming, this change removes most of\\n\\nthat code and replaces it with an exact match on an absolute path.\\n\\n\\n\\nThis speeds up vmware_guest considerably.\\n\\n\\n\\nThis relates to #19417 and #19830\\n\\nThis fixes #19064\", \n    \"title\": \"vmware_guest: speed up module by requiring absolut folder path\"\n  }, \n  \"19937\": {\n    \"ansible_version\": \"2.2.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.2.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nRemove slowly code part. VM deployment take 10s instead of 3 minutes.\\r\\nWe can't not anymore find vm by relative path. Now we must set full vm path start by / in folder param.\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19937\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"needs_revision\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"Remove slowly code part. VM deployment take 10s instead of 3 minutes.\\n\\nWe can't not anymore find vm by relative path. Now we must set full vm path start by / in folder param.\", \n    \"title\": \"vmware_guest: Amazing speed up module\"\n  }, \n  \"19938\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 2c17f9becd) last updated 2017/01/03 162751 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nansible/lib/ansible/modules/cloud/vmware/vmware_guest.py\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel 2c17f9becd) last updated 2017/01/03 16:27:51 (GMT +200)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nTest on Windows 2008 R2 and 2012 R2\\r\\nAdd the possibility to sysprep and join AD domain Windows template vmware with this options:\\r\\nwindows_sysprep:\\r\\n      fullName: \\\"windows specific full name\\\"\\r\\n      orgName: \\\"steph\\\"\\r\\n      computerName: \\\"test_vm\\\"\\r\\n      #productId: \\\"12134\\\" # optional\\r\\n      timeZone: 0 # integer https://msdn.microsoft.com/en-us/library/ms912391(v=winembedded.11).aspx\\r\\n      password: \\\"win_pwd\\\" # optional -> change local administrator password not necessary\\r\\n      autoLogon: False\\r\\n      autoLogonCount: 0\\r\\n      joinDomain : \\\"mydomain.net\\\"\\r\\n      domainAdmin: \\\"ad_account\\\"\\r\\n      domainAdminPassword: \\\"win_password\\\"\\r\\n      passwordPlainText: True\\r\\n      guiRunOnce: ['cmd.exe /C echo first > c:\\\\command.txt','cmd.exe /C echo second >> c:\\\\command.txt'] # optional, autoLogon must be set to True and autoLogonCount > 0\\r\\n\\r\\ncustomize flag must be set to True and one network card must be set (vmxnet3)\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"ansible/lib/ansible/ s/cloud/vmware/vmware_guest.py\", \n    \"component_raw\": \"ansible/lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19938\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"Test on Windows 2008 R2 and 2012 R2\\n\\nAdd the possibility to sysprep and join AD domain Windows template vmware with this options:\\n\\nwindows_sysprep:\\n\\n      fullName: \\\"windows specific full name\\\"\\n\\n      orgName: \\\"steph\\\"\\n\\n      computerName: \\\"test_vm\\\"\\n\\n      #productId: \\\"12134\\\" # optional\\n\\n      timeZone: 0 # integer https://msdn.microsoft.com/en-us/library/ms912391(v=winembedded.11).aspx\\n\\n      password: \\\"win_pwd\\\" # optional -> change local administrator password not necessary\\n\\n      autoLogon: False\\n\\n      autoLogonCount: 0\\n\\n      joinDomain : \\\"mydomain.net\\\"\\n\\n      domainAdmin: \\\"ad_account\\\"\\n\\n      domainAdminPassword: \\\"win_password\\\"\\n\\n      passwordPlainText: True\\n\\n      guiRunOnce: ['cmd.exe /C echo first > c:\\\\command.txt','cmd.exe /C echo second >> c:\\\\command.txt'] # optional, autoLogon must be set to True and autoLogonCount > 0\\n\\n\\n\\ncustomize flag must be set to True and one network card must be set (vmxnet3)\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"Add the possibility to sysprep and join AD domain Windows template vmware\"\n  }, \n  \"19939\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nnmcli\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nRHEL 7.2\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nBasically, the nmcli module seems to construct its /usr/bin/nmcli options somewhat out of order. \\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n```\\r\\nI am trying to use the nmcli module in ansible-2.2.0.0-4.el7.noarch from epel on RHEL 7.2, and I ran into some trouble.\\r\\n\\r\\nBasically, the nmcli module seems to construct its /usr/bin/nmcli options somewhat out of order. I debugged the python code and extracted the following command that results from this task:\\r\\n\\r\\n- name: Bonding for ethernet\\r\\n  nmcli:\\r\\n    type: bond\\r\\n    conn_name: bond0\\r\\n    ip4: 192.168.205.8/24\\r\\n    mode: balance-rr\\r\\n    state: present\\r\\n\\r\\n\\u2026and ran said command manually:\\r\\n\\r\\n# /usr/bin/nmcli con add type bond con-name bond0 ifname bond0 ip4 192.168.205.8/24 mode balance-rr\\r\\nError: Unexpected argument 'mode'\\r\\n\\r\\nThis matches the error string I am getting back when I debug the nmcli module result. If I simply reorder the command options a bit:\\r\\n\\r\\n# /usr/bin/nmcli con add type bond con-name bond0 ifname bond0 mode balance-rr ip4 192.168.205.8/24 \\r\\nConnection 'bond0' (4b98e712-efd3-4e43-be9f-4d584ddcb636) successfully added.\\r\\n\\r\\n\\u2026you can see that it works.\\r\\n\\r\\nThe nmcli manpage seems to suggest that one should specify the options in the order COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS IP_OPTIONS. In the above non-working example, \\u201cmode\\u201d falls under TYPE_SPECIFIC_OPTIONS but comes after \\u201cip4\\u201d which is under IP_OPTIONS.\\r\\n\\r\\nSo perhaps create_connection_bond() and friends in nmcli.py should be modified to construct the command line so that the COMMON_OPTIONS appear first, then the TYPE_SPECIFIC_OPTIONS, and finally the IP_OPTIONS. If I make this change:\\r\\n\\r\\n*** /usr/lib/python2.7/site-packages/ansible/modules/extras/network/nmcli.py.orig 2016-10-31 23:43:38.000000000 -0400\\r\\n--- /usr/lib/python2.7/site-packages/ansible/modules/extras/network/nmcli.py     2016-12-13 14:27:26.324150269 -0500\\r\\n***************                 \\r\\n*** 709,726 ****\\r\\n              cmd.append(self.ifname)\\r\\n          elif self.conn_name is not None:\\r\\n              cmd.append(self.conn_name)\\r\\n-         if self.ip4 is not None:\\r\\n-             cmd.append('ip4')\\r\\n-             cmd.append(self.ip4)\\r\\n-         if self.gw4 is not None:\\r\\n-             cmd.append('gw4')\\r\\n-             cmd.append(self.gw4)\\r\\n-         if self.ip6 is not None:\\r\\n-             cmd.append('ip6')\\r\\n-             cmd.append(self.ip6)\\r\\n-         if self.gw6 is not None:\\r\\n-             cmd.append('gw6')\\r\\n-             cmd.append(self.gw6)\\r\\n          if self.autoconnect is not None:\\r\\n              cmd.append('autoconnect')\\r\\n              cmd.append(self.bool_to_string(self.autoconnect))\\r\\n--- 709,714 ----\\r\\n***************\\r\\n*** 742,747 ****\\r\\n--- 730,747 ----\\r\\n          if self.downdelay is not None:\\r\\n              cmd.append('arp-ip-target')\\r\\n              cmd.append(self.arp_ip_target)\\r\\n+         if self.ip4 is not None:\\r\\n+             cmd.append('ip4')\\r\\n+             cmd.append(self.ip4)\\r\\n+         if self.gw4 is not None:\\r\\n+             cmd.append('gw4')\\r\\n+             cmd.append(self.gw4)\\r\\n+         if self.ip6 is not None:\\r\\n+             cmd.append('ip6')\\r\\n+             cmd.append(self.ip6)\\r\\n+         if self.gw6 is not None:\\r\\n+             cmd.append('gw6')\\r\\n+             cmd.append(self.gw6)\\r\\n          return cmd\\r\\n  \\r\\n      def modify_connection_bond(self):\\r\\n\\r\\n\\u2026the resultant command looks like:\\r\\n\\r\\n/usr/bin/nmcli con add type bond con-name bond0 ifname bond0 mode balance-rr ip4 192.168.205.8/24\\r\\n\\r\\n\\u2026and my Ansible task does what it should.\\r\\n\\r\\n```\\r\\n\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nI expected the nmcli task to succeed.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nI got an error.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"nmcli\", \n    \"component_raw\": \"nmcli\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19939\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nmcli.py\", \n    \"summary\": \"Basically, the nmcli module seems to construct its /usr/bin/nmcli options somewhat out of order.\", \n    \"title\": \"nmcli: does not assemble the nmcli command properly\"\n  }, \n  \"19942\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nzypper\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\ndevel\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nAdd option to retry to run zypper if the database is locked. This could happen for\\r\\nbackground updates or other sessions using zypper. Locking is also\\r\\nactive on reads, such that this happens quite often.\\r\\n\\r\\nDefault to old behavior (no retries).\", \n    \"component_name\": \"zypper\", \n    \"component_raw\": \"zypper\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19942\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"owner_pr\", \n      \"shipit\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/zypper.py\", \n    \"summary\": \"Add option to retry to run zypper if the database is locked. This could happen for\\n\\nbackground updates or other sessions using zypper. Locking is also\\n\\nactive on reads, such that this happens quite often.\\n\\n\\n\\nDefault to old behavior (no retries).\", \n    \"title\": \"Add retries option to zypper\"\n  }, \n  \"19943\": {\n    \"ansible_version\": \"2.2.1\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n2.2.1\\r\\n\\r\\n##### SUMMARY\\r\\nAdd missing entry in changelog for v2.2.1\\r\\n\\r\\nThat change was introduced in PR #18617\", \n    \"component_name\": \"ansible\", \n    \"component_raw\": \"ansible\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19943\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"docs\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Add missing entry in changelog for v2.2.1\\n\\n\\n\\nThat change was introduced in PR #18617\", \n    \"title\": \"Add missing entry in changelog for v2.2.1\"\n  }, \n  \"19944\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_asg_facts\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nBoto3's describe_auto_scaling_groups defaults to MaxRecords=50. It can be increased to MaxRecords=100, which is the limit of AWS's API. When searching for ASGs with ec2_asg_facts by name/tag/etc, it will only search through the first 50 ASGs collected into `asgs`.\\r\\n\\r\\nAdded a paginator so that all ASGs are collected into `asgs`.\\r\\n\\r\\nFixes https://github.com/ansible/ansible-modules-extras/issues/3106\", \n    \"component_name\": \"ec2_asg_facts\", \n    \"component_raw\": \"ec2_asg_facts\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19944\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_asg_facts.py\", \n    \"summary\": \"Boto3's describe_auto_scaling_groups defaults to MaxRecords=50. It can be increased to MaxRecords=100, which is the limit of AWS's API. When searching for ASGs with ec2_asg_facts by name/tag/etc, it will only search through the first 50 ASGs collected into `asgs`.\\n\\n\\n\\nAdded a paginator so that all ASGs are collected into `asgs`.\\n\\n\\n\\nFixes https://github.com/ansible/ansible-modules-extras/issues/3106\", \n    \"title\": \"Paginate ec2_asg_facts ASG collection\"\n  }, \n  \"19946\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnxos_facts\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nTesting may have originally be done with nexus with one neighbor. When there are multiple, it returns a list (as typical with nx-api). Same thing for modules. This fixes that. \\r\\n\", \n    \"component_name\": \"nxos_facts\", \n    \"component_raw\": \"nxos_facts\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19946\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nxos/nxos_facts.py\", \n    \"summary\": \"Testing may have originally be done with nexus with one neighbor. When there are multiple, it returns a list (as typical with nx-api). Same thing for modules. This fixes that.\", \n    \"title\": \"fix nxos_facts to support multiple neighbors and modules\"\n  }, \n  \"19947\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvmware_guest.py\\r\\n\\r\\n##### SUMMARY\\r\\nSometimes the wait_for_vm_ip in the guest_vmware module will not return an IP address. Increasing this poll number allows more time for the mdoule to get the new guest's IP from Vsphere.\\r\\n\\r\\n\", \n    \"component_name\": \"vmware_guest.py\", \n    \"component_raw\": \"vmware_guest.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19947\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"needs_revision\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"Sometimes the wait_for_vm_ip in the guest_vmware module will not return an IP address. Increasing this poll number allows more time for the mdoule to get the new guest's IP from Vsphere.\", \n    \"title\": \"Increase wait_for_vm_ip poll time\"\n  }, \n  \"19952\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.3.0 (nxos_vlan acec372714) last updated 2017/01/05 154411 (GMT -500)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n - nxos_vlan\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible --version\\r\\nansible 2.3.0 (nxos_vlan acec372714) last updated 2017/01/05 15:44:11 (GMT -500)\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nnxos_vlan would fail if state=absent and a vn-segment is configured on the existing vlan.  The PR removes the `no vn-segment` command when the vlan exists.  Issuing the command after `no vlan xxx` causes the module to fail.\\r\\n\\r\\n```\\r\\nNo changes from current module output\\r\\n```\\r\\n\", \n    \"component_name\": \"nxos_vlan\", \n    \"component_raw\": \"- nxos_vlan\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19952\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nxos/nxos_vlan.py\", \n    \"summary\": \"nxos_vlan would fail if state=absent and a vn-segment is configured on the existing vlan.  The PR removes the `no vn-segment` command when the vlan exists.  Issuing the command after `no vlan xxx` causes the module to fail.\\n\\n\\n\\n```\\n\\nNo changes from current module output\\n\\n```\", \n    \"title\": \"Removed 'no vn-segment' when state == 'absent'\"\n  }, \n  \"19953\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"rewrite to use the correct .net object, so no Domain/Local User/Group\\r\\ndetection is needed, as it done correclty on the .net side\\r\\nAdd Exception to the Fail-JSON so we get a decent Error Message, old one\\r\\nnot helping anything\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodule/plugin/windows/win_share\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThe Account-SID Translation not working correctly on some usecases\\r\\n\\r\\n - Rewrite to use the correct .net object, so no Domain/Local User/Group detection is needed, as it done correclty on the .net side\\r\\n - Add Exception to the Fail-JSON so we get a decent Error Message, old one not helping anything\", \n    \"component_name\": \"/plugin/windows/win_share\", \n    \"component_raw\": \"module/plugin/windows/win_share\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19953\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"core_review\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_share.ps1\", \n    \"summary\": \"The Account-SID Translation not working correctly on some usecases\\n\\n\\n\\n - Rewrite to use the correct .net object, so no Domain/Local User/Group detection is needed, as it done correclty on the .net side\\n\\n - Add Exception to the Fail-JSON so we get a decent Error Message, old one not helping anything\", \n    \"title\": \"Fix/Optimize Account/SID Translation\"\n  }, \n  \"19954\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodule/plugin/windows/win_share\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdd Support to Set the Caching Mode for the SMB Share\\r\\n\", \n    \"component_name\": \"/plugin/windows/win_share\", \n    \"component_raw\": \"module/plugin/windows/win_share\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19954\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"needs_revision\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_share.ps1\", \n    \"summary\": \"Add Support to Set the Caching Mode for the SMB Share\", \n    \"title\": \"Feature win share caching mode support\"\n  }, \n  \"19956\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/tessa/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nI guess this is in ansible core, or wheverever the jinja templating stuff lives.\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/tessa/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nWhen doing more complex workflows, like trying to set nested fact variables, the way jinja templating is applied is inconsistent. In some cases, it'll be run through jinja, and in others, it clearly isn't.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n set_fact:\\r\\n    versions:\\r\\n      \\\"{{ item.item.key }}\\\":\\r\\n        \\\"{{ item.versions[0] | default(None) }}\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nget a result dict like this:\\r\\n\\r\\n```\\r\\nok: [localhost] => {\\r\\n    \\\"versions\\\": {\\r\\n        \\\"keyname\\\": \\\"some value\\\"\\r\\n    }\\r\\n}\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\ngot a result dict like this:\\r\\n```\\r\\nok: [localhost] => {\\r\\n    \\\"versions\\\": {\\r\\n        \\\"{{ item.item.key }}\\\": \\\"some value\\\"\\r\\n    }\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"i guess this is in ansible core or wheverever the jinja templating stuff lives.\", \n    \"component_raw\": \"I guess this is in ansible core, or wheverever the jinja templating stuff lives.\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19956\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When doing more complex workflows, like trying to set nested fact variables, the way jinja templating is applied is inconsistent. In some cases, it'll be run through jinja, and in others, it clearly isn't.\", \n    \"title\": \"jinja templating applied inconsistently\"\n  }, \n  \"19958\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nmeta\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nmost of the tasks should not be iterated over, others needed to include unreachable hosts\\r\\nfixes #19673\\r\\n\", \n    \"component_name\": \"meta\", \n    \"component_raw\": \"meta\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19958\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:plugins/strategy\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"most of the tasks should not be iterated over, others needed to include unreachable hosts\\n\\nfixes #19673\", \n    \"title\": \"removed bad iteration from execute meta\"\n  }, \n  \"19959\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/tessa/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_robocopy module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/tessa/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nwhen win_robocopy return_code is not 1||2||4 ,$change is not been set. it will throw a exception on the code below:\\r\\n\\r\\n```\\r\\nSet-Attr $result.win_robocopy \\\"changed\\\" $changed\\r\\n```\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```yaml\\r\\n  - win_robocopy:\\r\\n      src: D:\\\\\\\\tmp\\\\\\\\temp\\\\\\\\TMP.ClientAgent\\\\\\\\0.0.0.1\\\\\\\\Software\\\\\\\\Service\\\\\\\\\\r\\n      dest: D:\\\\\\\\tmp\\\\\\\\deploy\\\\\\\\services\\\\\\\\TMP.ClientAgent\\\\\\\\0.0.0.1\\\\\\\\\\r\\n      recurse: true\\r\\n      purge: true\\r\\n```\\r\\n\\r\\nand content in src and dest are the same . win_robocopy.return_code will be 0.\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n```\\r\\nok: [10.0.200.141] => {\\\"changed\\\": false, \\\"msg\\\": \\\"No files copied.\\\"}\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nfatal: [10.0.200.141]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"The variable '$changed' cannot be retrieved because it has not been set.\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"win_robocopy\", \n    \"component_raw\": \"win_robocopy module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19959\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_robocopy.ps1\", \n    \"summary\": \"when win_robocopy return_code is not 1||2||4 ,$change is not been set. it will throw a exception on the code below:\\n\\n\\n\\n```\\n\\nSet-Attr $result.win_robocopy \\\"changed\\\" $changed\\n\\n```\", \n    \"title\": \"win_robocopy throw a exception when return_code is not 1||2||4 \"\n  }, \n  \"19960\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/tessa/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nwin_robocopy module\\r\\nwin_iis_webapplication module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/tessa/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\n#19959 fix win_robocopy throw a exception when return_code is not 1||2||4\\r\\n#15390 fix win_iis_webapplication : Error when state is absent \\r\\n\\r\\n\", \n    \"component_name\": \"win_robocopy\", \n    \"component_raw\": \"win_robocopy module\\nwin_iis_webapplication module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19960\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"needs_revision\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_robocopy.ps1\", \n    \"summary\": \"#19959 fix win_robocopy throw a exception when return_code is not 1||2||4\\n\\n#15390 fix win_iis_webapplication : Error when state is absent\", \n    \"title\": \"windows module bug fix\"\n  }, \n  \"19961\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/admin/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n Include module\\r\\n ignore_errors option\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/admin/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nI have a cleanup playbook that goes through some tasks and cleans up some state on my host, but I want to ignore errors. Since I have many roles to cleanup, I include all of these files and have ignore_errors check in the include task. Is this the right way to handle ignore_errors for all tasks included by the file? If not, what is the best recommended way to handle this.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n    - include: roles/<rolename>/tasks/cleanup.yml\\r\\n      ignore_errors: yes\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nAny error from tasks in the included file should be ignored\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nErrors in the task(s) from included file  are not ignored\\r\\n```\\r\\n\", \n    \"component_name\": \"include\", \n    \"component_raw\": \"Include module\\nignore_errors option\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19961\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/include.py\", \n    \"summary\": \"I have a cleanup playbook that goes through some tasks and cleans up some state on my host, but I want to ignore errors. Since I have many roles to cleanup, I include all of these files and have ignore_errors check in the include task. Is this the right way to handle ignore_errors for all tasks included by the file? If not, what is the best recommended way to handle this.\", \n    \"title\": \"ignore_errors not working in include module\"\n  }, \n  \"19962\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\nBugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nmodule_utils/urls.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nv2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nNewer versions of urllib3 have removed `urllib3.contrib.pyopenssl.ssl_wrap_socket`.\\r\\n\\r\\nThis PR updates `urls.py` to prefer `PyOpenSSLContext` from `urllib3.contrib.pyopenssl` instead, with fallback to `ssl_wrap_socket`.\\r\\n\\r\\nFixes #18528 \", \n    \"component_name\": \"module_utils/urls.py\", \n    \"component_raw\": \"module_utils/urls.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19962\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"c:module_utils/urls\", \n      \"module_util\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Newer versions of urllib3 have removed `urllib3.contrib.pyopenssl.ssl_wrap_socket`.\\n\\n\\n\\nThis PR updates `urls.py` to prefer `PyOpenSSLContext` from `urllib3.contrib.pyopenssl` instead, with fallback to `ssl_wrap_socket`.\\n\\n\\n\\nFixes #18528\", \n    \"title\": \"Prefer PyOpenSSLContext from urllib3\"\n  }, \n  \"19964\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0.0\\nconfig file = /home/karl/workspaces/cms/hhsdevcloud-ansible.git/ansible.cfg\\nconfigured module search path = [/home/karl/.ansible/roles]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nI'm using the `command` module, but the bug itself is in Ansible core.\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /home/karl/workspaces/cms/hhsdevcloud-ansible.git/ansible.cfg\\r\\n  configured module search path = ['/home/karl/.ansible/roles']\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n(Haven't changed the Ansible config in any relevant way.)\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nManagement system is Ubuntu 14.04, and the managed system is the same.\\r\\n\\r\\n##### SUMMARY\\r\\nWhen running the `command` module as an unprivileged user, I receive the following output:\\r\\n\\r\\n```\\r\\nTASK [karlmdavis.jenkins2 : Verify CLI] ****************************************\\r\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: UnicodeEncodeError: 'ascii' codec can't encode character u'\\\\u2018' in position 29: ordinal not in range(128)\\r\\nfatal: [52.90.107.158]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"Unexpected failure during module execution.\\\", \\\"stdout\\\": \\\"\\\"}\\r\\n```\\r\\n\\r\\nIf I re-reun with `-vvv`, I get the following:\\r\\n\\r\\n```\\r\\nTASK [karlmdavis.jenkins2 : Verify CLI] ****************************************                                                                                                              [11/1842]\\r\\ntask path: /home/karl/.ansible/roles/karlmdavis.jenkins2/tasks/cli_config.yml:94\\r\\nUsing module file /home/karl/workspaces/cms/hhsdevcloud-ansible.git/venv/local/lib/python2.7/site-packages/ansible/modules/core/commands/command.py\\r\\n<52.90.107.158> ESTABLISH SSH CONNECTION FOR USER: ubuntu\\r\\n<52.90.107.158> SSH: EXEC ssh -o ForwardAgent=yes -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o Passwo\\r\\nrdAuthentication=no -o User=ubuntu -o ConnectTimeout=10 52.90.107.158 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo /tmp/ansible-tmp-1483664177.87-272363309495442 `\\\" && echo ansible-tmp-1483664177.\\r\\n87-272363309495442=\\\"` echo /tmp/ansible-tmp-1483664177.87-272363309495442 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<52.90.107.158> PUT /tmp/tmpm0NaYz TO /tmp/ansible-tmp-1483664177.87-272363309495442/command.py\\r\\n<52.90.107.158> SSH: EXEC sftp -b - -o ForwardAgent=yes -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o \\r\\nPasswordAuthentication=no -o User=ubuntu -o ConnectTimeout=10 '[52.90.107.158]'\\r\\n<52.90.107.158> ESTABLISH SSH CONNECTION FOR USER: ubuntu\\r\\n<52.90.107.158> SSH: EXEC ssh -o ForwardAgent=yes -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o Passwo\\r\\nrdAuthentication=no -o User=ubuntu -o ConnectTimeout=10 52.90.107.158 '/bin/sh -c '\\\"'\\\"'setfacl -m u:jenkins:rx /tmp/ansible-tmp-1483664177.87-272363309495442/ /tmp/ansible-tmp-1483664177.87-272363309\\r\\n495442/command.py && sleep 0'\\\"'\\\"''\\r\\n<52.90.107.158> ESTABLISH SSH CONNECTION FOR USER: ubuntu\\r\\n<52.90.107.158> SSH: EXEC ssh -o ForwardAgent=yes -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o Passwo\\r\\nrdAuthentication=no -o User=ubuntu -o ConnectTimeout=10 52.90.107.158 '/bin/sh -c '\\\"'\\\"'chmod u+x /tmp/ansible-tmp-1483664177.87-272363309495442/ /tmp/ansible-tmp-1483664177.87-272363309495442/command\\r\\n.py && sleep 0'\\\"'\\\"''\\r\\n<52.90.107.158> ESTABLISH SSH CONNECTION FOR USER: ubuntu\\r\\n<52.90.107.158> SSH: EXEC ssh -o ForwardAgent=yes -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o Passwo\\r\\nrdAuthentication=no -o User=ubuntu -o ConnectTimeout=10 52.90.107.158 '/bin/sh -c '\\\"'\\\"'chown jenkins /tmp/ansible-tmp-1483664177.87-272363309495442/ /tmp/ansible-tmp-1483664177.87-272363309495442/com\\r\\nmand.py && sleep 0'\\\"'\\\"''\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/home/karl/workspaces/cms/hhsdevcloud-ansible.git/venv/local/lib/python2.7/site-packages/ansible/executor/task_executor.py\\\", line 119, in run\\r\\n    res = self._execute()\\r\\n  File \\\"/home/karl/workspaces/cms/hhsdevcloud-ansible.git/venv/local/lib/python2.7/site-packages/ansible/executor/task_executor.py\\\", line 490, in _execute\\r\\n    result = self._handler.run(task_vars=variables)\\r\\n  File \\\"/home/karl/workspaces/cms/hhsdevcloud-ansible.git/venv/local/lib/python2.7/site-packages/ansible/plugins/action/normal.py\\\", line 33, in run\\r\\n    results = merge_hash(results, self._execute_module(tmp=tmp, task_vars=task_vars))\\r\\n  File \\\"/home/karl/workspaces/cms/hhsdevcloud-ansible.git/venv/local/lib/python2.7/site-packages/ansible/plugins/action/__init__.py\\\", line 617, in _execute_module\\r\\n    self._fixup_perms2(remote_files, remote_user)\\r\\n  File \\\"/home/karl/workspaces/cms/hhsdevcloud-ansible.git/venv/local/lib/python2.7/site-packages/ansible/plugins/action/__init__.py\\\", line 394, in _fixup_perms2\\r\\n    ' see https://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user'.format(res['rc'], res['stderr']))\\r\\nUnicodeEncodeError: 'ascii' codec can't encode character u'\\\\u2018' in position 29: ordinal not in range(128)\\r\\n\\r\\nfatal: [52.90.107.158]: FAILED! => {\\r\\n    \\\"failed\\\": true, \\r\\n    \\\"msg\\\": \\\"Unexpected failure during module execution.\\\", \\r\\n    \\\"stdout\\\": \\\"\\\"\\r\\n}\\r\\n```\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nHere's my `command` task:\\r\\n\\r\\n```yaml\\r\\n- name: Verify CLI\\r\\n  shell: \\\"java -jar /opt/jenkins/jenkins-cli.jar -s http://localhost:{{ jenkins_port }}{{ jenkins_context_path | default('') }} who-am-i\\\"\\r\\n  register: cli_whoami\\r\\n  become: true\\r\\n  become_user: jenkins\\r\\n  changed_when: false\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nI'd expect to see the following error output (which I produced by applying the fix mentioned below):\\r\\n\\r\\n```\\r\\nTASK [karlmdavis.jenkins2 : Verify CLI] ****************************************\\r\\nfatal: [52.90.107.158]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"Failed to set permissions on the temporary files Ansible needs to create when becoming an unprivileged user (rc: 1, err: chown: changing ownership of \\u2018/tmp/ansible-tmp-1483666630.43-160731891715309/\\u2019: Operation not permitted\\\\nchown: changing ownership of \\u2018/tmp/ansible-tmp-1483666630.43-160731891715309/command.py\\u2019: Operation not permitted\\\\n). For information on working around this, see https://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user\\\"}\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nSee above. Note that the error message here (without `-vvv`) is completely useless, and will lead folks down a Google deadend.\\r\\n\\r\\n##### FIX/TRIAGE\\r\\nI can get the correct error by editing line `394` of the `venv/local/lib/python2.7/site-packages/ansible/plugins/action/__init__.py` file on my box from:\\r\\n\\r\\n    raise AnsibleError('Failed to set file mode on remote files (rc: {0}, err: {1})'.format(res['rc'], res['stderr']))\\r\\n\\r\\nTo instead be this:\\r\\n\\r\\n    raise AnsibleError('Failed to set file mode on remote files (rc: {0}, err: {1})'.format(res['rc'], res['stderr'].encode('utf-8')))\\r\\n\\r\\nThis problem (not properly encoding `STDOUT`/`STDERR` output) looks like it might be all over the place, though, and should probably be addressed in a comprehensive fashion.\", \n    \"component_name\": \"im using the command   but the bug itself is in ansible core.\", \n    \"component_raw\": \"I'm using the `command` module, but the bug itself is in Ansible core.\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19964\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/commands/command.py\", \n    \"summary\": \"When running the `command` module as an unprivileged user, I receive the following output:\\n\\n\\n\\n```\\n\\nTASK [karlmdavis.jenkins2 : Verify CLI] ****************************************\\n\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: UnicodeEncodeError: 'ascii' codec can't encode character u'\\\\u2018' in position 29: ordinal not in range(128)\\n\\nfatal: [52.90.107.158]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"Unexpected failure during module execution.\\\", \\\"stdout\\\": \\\"\\\"}\\n\\n```\\n\\n\\n\\nIf I re-reun with `-vvv`, I get the following:\\n\\n\\n\\n```\\n\\nTASK [karlmdavis.jenkins2 : Verify CLI] ****************************************                                                                                                              [11/1842]\\n\\ntask path: /home/karl/.ansible/roles/karlmdavis.jenkins2/tasks/cli_config.yml:94\\n\\nUsing module file /home/karl/workspaces/cms/hhsdevcloud-ansible.git/venv/local/lib/python2.7/site-packages/ansible/modules/core/commands/command.py\\n\\n<52.90.107.158> ESTABLISH SSH CONNECTION FOR USER: ubuntu\\n\\n<52.90.107.158> SSH: EXEC ssh -o ForwardAgent=yes -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o Passwo\\n\\nrdAuthentication=no -o User=ubuntu -o ConnectTimeout=10 52.90.107.158 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo /tmp/ansible-tmp-1483664177.87-272363309495442 `\\\" && echo ansible-tmp-1483664177.\\n\\n87-272363309495442=\\\"` echo /tmp/ansible-tmp-1483664177.87-272363309495442 `\\\" ) && sleep 0'\\\"'\\\"''\\n\\n<52.90.107.158> PUT /tmp/tmpm0NaYz TO /tmp/ansible-tmp-1483664177.87-272363309495442/command.py\\n\\n<52.90.107.158> SSH: EXEC sftp -b - -o ForwardAgent=yes -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o \\n\\nPasswordAuthentication=no -o User=ubuntu -o ConnectTimeout=10 '[52.90.107.158]'\\n\\n<52.90.107.158> ESTABLISH SSH CONNECTION FOR USER: ubuntu\\n\\n<52.90.107.158> SSH: EXEC ssh -o ForwardAgent=yes -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o Passwo\\n\\nrdAuthentication=no -o User=ubuntu -o ConnectTimeout=10 52.90.107.158 '/bin/sh -c '\\\"'\\\"'setfacl -m u:jenkins:rx /tmp/ansible-tmp-1483664177.87-272363309495442/ /tmp/ansible-tmp-1483664177.87-272363309\\n\\n495442/command.py && sleep 0'\\\"'\\\"''\\n\\n<52.90.107.158> ESTABLISH SSH CONNECTION FOR USER: ubuntu\\n\\n<52.90.107.158> SSH: EXEC ssh -o ForwardAgent=yes -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o Passwo\\n\\nrdAuthentication=no -o User=ubuntu -o ConnectTimeout=10 52.90.107.158 '/bin/sh -c '\\\"'\\\"'chmod u+x /tmp/ansible-tmp-1483664177.87-272363309495442/ /tmp/ansible-tmp-1483664177.87-272363309495442/command\\n\\n.py && sleep 0'\\\"'\\\"''\\n\\n<52.90.107.158> ESTABLISH SSH CONNECTION FOR USER: ubuntu\\n\\n<52.90.107.158> SSH: EXEC ssh -o ForwardAgent=yes -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o Passwo\\n\\nrdAuthentication=no -o User=ubuntu -o ConnectTimeout=10 52.90.107.158 '/bin/sh -c '\\\"'\\\"'chown jenkins /tmp/ansible-tmp-1483664177.87-272363309495442/ /tmp/ansible-tmp-1483664177.87-272363309495442/com\\n\\nmand.py && sleep 0'\\\"'\\\"''\\n\\nAn exception occurred during task execution. The full traceback is:\\n\\nTraceback (most recent call last):\\n\\n  File \\\"/home/karl/workspaces/cms/hhsdevcloud-ansible.git/venv/local/lib/python2.7/site-packages/ansible/executor/task_executor.py\\\", line 119, in run\\n\\n    res = self._execute()\\n\\n  File \\\"/home/karl/workspaces/cms/hhsdevcloud-ansible.git/venv/local/lib/python2.7/site-packages/ansible/executor/task_executor.py\\\", line 490, in _execute\\n\\n    result = self._handler.run(task_vars=variables)\\n\\n  File \\\"/home/karl/workspaces/cms/hhsdevcloud-ansible.git/venv/local/lib/python2.7/site-packages/ansible/plugins/action/normal.py\\\", line 33, in run\\n\\n    results = merge_hash(results, self._execute_module(tmp=tmp, task_vars=task_vars))\\n\\n  File \\\"/home/karl/workspaces/cms/hhsdevcloud-ansible.git/venv/local/lib/python2.7/site-packages/ansible/plugins/action/__init__.py\\\", line 617, in _execute_module\\n\\n    self._fixup_perms2(remote_files, remote_user)\\n\\n  File \\\"/home/karl/workspaces/cms/hhsdevcloud-ansible.git/venv/local/lib/python2.7/site-packages/ansible/plugins/action/__init__.py\\\", line 394, in _fixup_perms2\\n\\n    ' see https://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user'.format(res['rc'], res['stderr']))\\n\\nUnicodeEncodeError: 'ascii' codec can't encode character u'\\\\u2018' in position 29: ordinal not in range(128)\\n\\n\\n\\nfatal: [52.90.107.158]: FAILED! => {\\n\\n    \\\"failed\\\": true, \\n\\n    \\\"msg\\\": \\\"Unexpected failure during module execution.\\\", \\n\\n    \\\"stdout\\\": \\\"\\\"\\n\\n}\\n\\n```\", \n    \"title\": \"\\\"UnicodeEncodeError: 'ascii' codec can't encode...\\\" error, instead of actual \\\"Failed to set permissions on the temporary files...\\\" error\"\n  }, \n  \"19965\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nwin_ping\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nNone\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nControl machine : Ubuntu\\r\\nTarget machine : Windows\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nI am trying to configure Windows server 2016 as a host machine that is controlled by Ubuntu. I ran `ConfigureRemotingForAnsible.ps1` script mentioned on [intro_windows](http://docs.ansible.com/ansible/intro_windows.html) page. It runs fine and I verified the firewall rules has the appropriate rules listed. However when I try to connect to the machine from Ubuntu using ansible's ping it returns below error.\\r\\n\\r\\n\\r\\nHere is my folder structure on Ubuntu\\r\\n\\r\\n```\\r\\n./home/kunalspathak\\r\\n+-- ansible-inventory\\r\\n+-- host_vars\\r\\n|       +-- test-node-2k16.westus.cloudapp.azure.com\\r\\n```\\r\\n\\r\\nContents of `ansible-inventory`\\r\\n```\\r\\n[kpathak-test]\\r\\ntest-node-2k16.westus.cloudapp.azure.com\\r\\n```\\r\\nContents of `test-node-2k16.westus.cloudapp.azure.com`\\r\\n```\\r\\nserver_id: test-node-2k16\\r\\nserver_secret: SECRET\\r\\nansible_user: USERNAME\\r\\nansible_ssh_pass: PASSWORD\\r\\nansible_port: 5986\\r\\nansible_connection: winrm\\r\\n```\\r\\n\\r\\nAny idea how to diagnose this? I even tried same thing with windows server 2012  and I get same errors.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n\\r\\n```cmd\\r\\n\\r\\nkunalspathak@test-node-2k16-cm:~$ ansible kpathak-test -i ./ansible-inventory -m win_ping -vvvv\\r\\nUsing /etc/ansible/ansible.cfg as config file\\r\\nLoading callback plugin minimal of type stdout, v2.0 from /usr/lib/python2.7/dist-packages/ansible/plugins/callback/__init__.pyc\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/core/windows/win_ping.ps1\\r\\n<104.42.146.21> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<104.42.146.21> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/kunalspathak/.ansible/cp/ansible-ssh-%h-%p-%r 104.42.146.21 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1483641982.97-10335291240828 `\\\" && echo ansible-tmp-1483641982.97-10335291240828=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1483641982.97-10335291240828 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n104.42.146.21 | UNREACHABLE! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"msg\\\": \\\"Failed to connect to the host via ssh: OpenSSH_7.2p2 Ubuntu-4ubuntu2.1, OpenSSL 1.0.2g  1 Mar 2016\\\\r\\\\ndebug1: Reading configuration data /etc/ssh/ssh_config\\\\r\\\\ndebug1: /etc/ssh/ssh_config line 19: Applying options for *\\\\r\\\\ndebug1: auto-mux: Trying existing master\\\\r\\\\ndebug1: Control socket \\\\\\\"/home/kunalspathak/.ansible/cp/ansible-ssh-104.42.146.21-22-kunalspathak\\\\\\\" does not exist\\\\r\\\\ndebug2: resolving \\\\\\\"104.42.146.21\\\\\\\" port 22\\\\r\\\\ndebug2: ssh_connect_direct: needpriv 0\\\\r\\\\ndebug1: Connecting to 104.42.146.21 [104.42.146.21] port 22.\\\\r\\\\ndebug2: fd 3 setting O_NONBLOCK\\\\r\\\\ndebug1: connect to address 104.42.146.21 port 22: Connection timed out\\\\r\\\\nssh: connect to host 104.42.146.21 port 22: Connection timed out\\\\r\\\\n\\\",\\r\\n    \\\"unreachable\\\": true\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"win_ping\", \n    \"component_raw\": \"win_ping\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19965\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_ping.py\", \n    \"summary\": \"I am trying to configure Windows server 2016 as a host machine that is controlled by Ubuntu. I ran `ConfigureRemotingForAnsible.ps1` script mentioned on [intro_windows](http://docs.ansible.com/ansible/intro_windows.html) page. It runs fine and I verified the firewall rules has the appropriate rules listed. However when I try to connect to the machine from Ubuntu using ansible's ping it returns below error.\\n\\n\\n\\n\\n\\nHere is my folder structure on Ubuntu\\n\\n\\n\\n```\\n\\n./home/kunalspathak\\n\\n+-- ansible-inventory\\n\\n+-- host_vars\\n\\n|       +-- test-node-2k16.westus.cloudapp.azure.com\\n\\n```\\n\\n\\n\\nContents of `ansible-inventory`\\n\\n```\\n\\n[kpathak-test]\\n\\ntest-node-2k16.westus.cloudapp.azure.com\\n\\n```\\n\\nContents of `test-node-2k16.westus.cloudapp.azure.com`\\n\\n```\\n\\nserver_id: test-node-2k16\\n\\nserver_secret: SECRET\\n\\nansible_user: USERNAME\\n\\nansible_ssh_pass: PASSWORD\\n\\nansible_port: 5986\\n\\nansible_connection: winrm\\n\\n```\\n\\n\\n\\nAny idea how to diagnose this? I even tried same thing with windows server 2012  and I get same errors.\", \n    \"title\": \"Connect to windows host timing out\"\n  }, \n  \"19966\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n - ~~Bug Report~~\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\npause\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nIf you have a playbook included with a pause-task. And that include has a conditional when: statement.\\r\\nThen the pause-task will be skipped if the taskbook was skipped for the first host in the list.\\r\\n\\r\\nplaybook.yml\\r\\n```yaml\\r\\n- hosts: all\\r\\n  tasks:\\r\\n  - include: taskbook.yml\\r\\n    when: \\\"'foo' in group_names\\\"\\r\\n```\\r\\n\\r\\ntaskbook.yml\\r\\n```yaml\\r\\n- debug:\\r\\n    msg: 'Task 1'\\r\\n\\r\\n- pause:\\r\\n    seconds: 5\\r\\n\\r\\n- debug:\\r\\n    msg: 'Task 3'\\r\\n```\\r\\n\\r\\nIf you have a set of systems now, and the first processed is not in group **foo** the pause-task will not be run.\", \n    \"component_name\": \"pause\", \n    \"component_raw\": \"pause\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19966\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/pause.py\", \n    \"summary\": \"If you have a playbook included with a pause-task. And that include has a conditional when: statement.\\n\\nThen the pause-task will be skipped if the taskbook was skipped for the first host in the list.\\n\\n\\n\\nplaybook.yml\\n\\n```yaml\\n\\n- hosts: all\\n\\n  tasks:\\n\\n  - include: taskbook.yml\\n\\n    when: \\\"'foo' in group_names\\\"\\n\\n```\\n\\n\\n\\ntaskbook.yml\\n\\n```yaml\\n\\n- debug:\\n\\n    msg: 'Task 1'\\n\\n\\n\\n- pause:\\n\\n    seconds: 5\\n\\n\\n\\n- debug:\\n\\n    msg: 'Task 3'\\n\\n```\\n\\n\\n\\nIf you have a set of systems now, and the first processed is not in group **foo** the pause-task will not be run.\", \n    \"title\": \"Pause is skipped if first host in the list is being skipped\"\n  }, \n  \"19967\": {\n    \"ansible_version\": \"ansible 1.9.2\", \n    \"body\": \"<!---\\r\\nWhen I was using the threading module to run the playbook ,i often find abnormal, some errors appear in the log\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n - Feature Idea\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nfrom ansible.playbook import PlayBook\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 1.9.2\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n[defaults]\\r\\ninventory      = /etc/ansible/hosts\\r\\nremote_tmp     = $HOME/.ansible/tmp\\r\\npattern        = *\\r\\nforks          = 10\\r\\npoll_interval  = 15\\r\\nsudo_user      = root\\r\\ntransport      = smart\\r\\nmodule_lang    = C\\r\\ngathering = implicit\\r\\nhost_key_checking = False\\r\\nsudo_exe = sudo\\r\\ntimeout = 3\\r\\nremote_user = ansible\\r\\nlog_path = /var/log/ansible.log\\r\\nmodule_name = shell\\r\\nansible_managed = Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host}\\r\\naction_plugins     = /usr/share/ansible_plugins/action_plugins\\r\\ncallback_plugins   = /usr/share/ansible_plugins/callback_plugins\\r\\nconnection_plugins = /usr/share/ansible_plugins/connection_plugins\\r\\nlookup_plugins     = /usr/share/ansible_plugins/lookup_plugins\\r\\nvars_plugins       = /usr/share/ansible_plugins/vars_plugins\\r\\nfilter_plugins     = /usr/share/ansible_plugins/filter_plugins\\r\\nfact_caching = memory\\r\\n[privilege_escalation]\\r\\n[paramiko_connection]\\r\\n[ssh_connection]\\r\\nssh_args = -o ControlMaster=auto -o ControlPersist=240s -o LogLevel=DEBUG3 \\r\\ncontrol_path = /tmp/ssh_mux_%%h_%%p_%%r \\r\\n[accelerate]\\r\\naccelerate_port = 5099\\r\\naccelerate_timeout = 30\\r\\naccelerate_connect_timeout = 5.0\\r\\naccelerate_daemon_timeout = 30\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nLinux test-ansible-00 2.6.32-573.12.1.el6.x86_64 #1 SMP Tue Dec 15 21:19:08 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nI think playbook is non-thread-safe, resulting in an error in the run\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nRun the playbook instance in multiple threads, some are running correctly, and there are some errors\\u3002\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n24536 2017-01-06 02:06:39,095 [p=26042 u=root | ] callbacks.py[line:161] callbacks ERROR fatal: [10.60.30.81] => host not found: 10.60.30.81\\r\\n24537 2017-01-06 02:06:39,101 [p=26042 u=root | ] callbacks.py[line:161] callbacks ERROR fatal: [10.60.30.64] => host not found: 10.60.30.64\\r\\n24538 2017-01-06 02:06:39,113 [p=26042 u=root | ] callbacks.py[line:161] callbacks ERROR fatal: [10.60.30.43] => host not found: 10.60.30.43\\r\\n24539 2017-01-06 02:06:39,114 [p=26042 u=root | ] callbacks.py[line:161] callbacks ERROR fatal: [10.60.30.87] => host not found: 10.60.30.87\\r\\n24540 2017-01-06 02:06:39,119 [p=26042 u=root | ] callbacks.py[line:163] callbacks INFO changed: [10.60.30.78]\\r\\n24541 2017-01-06 02:06:39,168 [p=26042 u=root | ] callbacks.py[line:163] callbacks INFO changed: [10.60.30.11]\\r\\n24542 2017-01-06 02:06:39,171 [p=26042 u=root | ] callbacks.py[line:163] callbacks INFO changed: [10.60.30.85]\\r\\n24543 2017-01-06 02:06:39,173 [p=26042 u=root | ] callbacks.py[line:163] callbacks INFO changed: [10.60.30.61]\\r\\n24544 2017-01-06 02:06:39,209 [p=26042 u=root | ] callbacks.py[line:163] callbacks INFO TASK: [If Already Install Service We Will Remove It] **************************\\r\\n24545 2017-01-06 02:06:39,313 [root] Database.py[line:529] Database ERROR Traceback (most recent call last):\\r\\n24546   File \\\"/data/server/platform-deploy/library/Database.py\\\", line 512, in _wrapper\\r\\n24547     result=func(*args,**kwargs)\\r\\n24548   File \\\"/data/server/platform-deploy/library/Script.py\\\", line 113, in _wrapper\\r\\n24549     raise Exception(traceback.format_exc())\\r\\n24550 Exception: Traceback (most recent call last):\\r\\n24551   File \\\"/data/server/platform-deploy/library/Script.py\\\", line 79, in _wrapper\\r\\n24552     result=func(*args,**kwargs)\\r\\n24553   File \\\"/data/server/platform-deploy/platform-deploy.py\\\", line 235, in Ansible\\r\\n24554     raise Exception(traceback.format_exc())\\r\\n24555 Exception: Traceback (most recent call last):\\r\\n24556   File \\\"/data/server/platform-deploy/platform-deploy.py\\\", line 215, in Ansible\\r\\n24557     file_path=file_path\\r\\n24558   File \\\"/data/server/platform-deploy/library/Ansibleapi.py\\\", line 99, in deploy\\r\\n24559     results = pb.run()\\r\\n24560   File \\\"/usr/lib/python2.6/site-packages/ansible/playbook/__init__.py\\\", line 348, in run\\r\\n24561     if not self._run_play(play):\\r\\n24562   File \\\"/usr/lib/python2.6/site-packages/ansible/playbook/__init__.py\\\", line 789, in _run_play\\r\\n24563     if not self._run_task(play, task, False):\\r\\n24564   File \\\"/usr/lib/python2.6/site-packages/ansible/playbook/__init__.py\\\", line 497, in _run_task\\r\\n24565     results = self._run_task_internal(task, include_failed=include_failed)\\r\\n24566   File \\\"/usr/lib/python2.6/site-packages/ansible/playbook/__init__.py\\\", line 439, in _run_task_internal\\r\\n24567     results = runner.run()\\r\\n24568   File \\\"/usr/lib/python2.6/site-packages/ansible/runner/__init__.py\\\", line 1485, in run\\r\\n24569     results = self._parallel_exec(hosts)\\r\\n24570   File \\\"/usr/lib/python2.6/site-packages/ansible/runner/__init__.py\\\", line 1406, in _parallel_exec\\r\\n24571     while not result_queue.empty():\\r\\n24572   File \\\"<string>\\\", line 2, in empty\\r\\n24573   File \\\"/usr/lib64/python2.6/multiprocessing/managers.py\\\", line 740, in _callmethod\\r\\n24574     raise convert_to_error(kind, result)\\r\\n24575 RemoteError:\\r\\n24576 ---------------------------------------------------------------------------\\r\\n24577 Traceback (most recent call last):\\r\\n24578   File \\\"/usr/lib64/python2.6/multiprocessing/managers.py\\\", line 216, in serve_client\\r\\n24579     obj, exposed, gettypeid = id_to_obj[ident]\\r\\n24580 KeyError: '7fcfb6c2fa70'\\r\\n24581 ---------------------------------------------------------------------------\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"from ansible.playbook import playbook\", \n    \"component_raw\": \"from ansible.playbook import PlayBook\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19967\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_1.9\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I think playbook is non-thread-safe, resulting in an error in the run\", \n    \"title\": \"Multithreading running  the playbook exception\"\n  }, \n  \"19968\": {\n    \"ansible_version\": \"2.2.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\npostgresql_user\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.2.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nNothing particular\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nCentOS 7 running the code, Amazon RDS as target db\\r\\n\\r\\n##### SUMMARY\\r\\nPython error\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n- name: Ensure the database is present\\r\\n  postgresql_db:\\r\\n    name: db_name\\r\\n    encoding: UTF-8\\r\\n    state: present\\r\\n    login_host: database.example.com\\r\\n    login_user: USER\\r\\n    login_password: 'PASSWORD'\\r\\n  when: database is defined\\r\\n  delegate_to: localhost\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe module working\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/tmp/ansible_iOC0me/ansible_module_postgresql_user.py\\\", line 666, in <module>\\r\\n    main()\\r\\n  File \\\"/tmp/ansible_iOC0me/ansible_module_postgresql_user.py\\\", line 632, in main\\r\\n    changed = grant_privileges(cursor, user, privs) or changed\\r\\n  File \\\"/tmp/ansible_iOC0me/ansible_module_postgresql_user.py\\\", line 460, in grant_privileges\\r\\n    grant_funcs[type_](cursor, user, name, privileges)\\r\\n  File \\\"/tmp/ansible_iOC0me/ansible_module_postgresql_user.py\\\", line 360, in grant_table_privileges\\r\\n    cursor.execute(query)\\r\\n  File \\\"/usr/lib64/python2.7/site-packages/psycopg2/extras.py\\\", line 120, in execute\\r\\n    return super(DictCursor, self).execute(query, vars)\\r\\npsycopg2.ProgrammingError: relation \\\"products\\\" does not exist\\r\\n\\r\\n\\r\\nfatal: [srv01.otelia.biz -> localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"postgresql_user\\\"\\r\\n    }, \\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_iOC0me/ansible_module_postgresql_user.py\\\\\\\", line 666, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_iOC0me/ansible_module_postgresql_user.py\\\\\\\", line 632, in main\\\\n    changed = grant_privileges(cursor, user, privs) or changed\\\\n  File \\\\\\\"/tmp/ansible_iOC0me/ansible_module_postgresql_user.py\\\\\\\", line 460, in grant_privileges\\\\n    grant_funcs[type_](cursor, user, name, privileges)\\\\n  File \\\\\\\"/tmp/ansible_iOC0me/ansible_module_postgresql_user.py\\\\\\\", line 360, in grant_table_privileges\\\\n    cursor.execute(query)\\\\n  File \\\\\\\"/usr/lib64/python2.7/site-packages/psycopg2/extras.py\\\\\\\", line 120, in execute\\\\n    return super(DictCursor, self).execute(query, vars)\\\\npsycopg2.ProgrammingError: relation \\\\\\\"products\\\\\\\" does not exist\\\\n\\\\n\\\", \\r\\n    \\\"module_stdout\\\": \\\"\\\", \\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"postgresql_user\", \n    \"component_raw\": \"postgresql_user\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19968\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/database/postgresql/postgresql_user.py\", \n    \"summary\": \"Python error\", \n    \"title\": \"postgresql_user emits traceback on missing relation\"\n  }, \n  \"19969\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncontrib/inventory/ec2\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nGroup names from tags in EC2 are of hardcoded value tag_`TAGNAME` with optional _`TAGVALUE` if the tag has a value.\\r\\nThis is not the sexiest ever, and this PR does add a bit a flexibility in the naming of the group generated from the EC2 tags.\\r\\nThe idea is, when the a given tag has a value, this value can be used _as-is_ (respecting the normal sanitization process) to be the name of the group. The value will also honor the `expand_csv_tags` option.\\r\\n\\r\\nExample:\\r\\n```\\r\\ntag:service = redis\\r\\n```\\r\\nwill generate the group: `redis`\\r\\n\\r\\nA new configuration option, `groupnames_as_tag_value_only`, allows to specify (in CVS format) the name of the tag(s) that should have this modified behaviour.\\r\\n\\r\\n\", \n    \"component_name\": \"contrib/inventory/ec2\", \n    \"component_raw\": \"contrib/inventory/ec2\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19969\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Group names from tags in EC2 are of hardcoded value tag_`TAGNAME` with optional _`TAGVALUE` if the tag has a value.\\n\\nThis is not the sexiest ever, and this PR does add a bit a flexibility in the naming of the group generated from the EC2 tags.\\n\\nThe idea is, when the a given tag has a value, this value can be used _as-is_ (respecting the normal sanitization process) to be the name of the group. The value will also honor the `expand_csv_tags` option.\\n\\n\\n\\nExample:\\n\\n```\\n\\ntag:service = redis\\n\\n```\\n\\nwill generate the group: `redis`\\n\\n\\n\\nA new\", \n    \"title\": \"Group names from tags can be only value (without tag_TAGNAME_)\"\n  }, \n  \"19970\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.2.0.0\\nconfig file = /role/tests/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nkinesis_stream module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n# ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /role/tests/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nJust like with the `s3_website` module, and potentially other modules that rely on `boto3`, this module fails without providing (any) helpful information when the EC2_URL environment variable is set.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```yaml\\r\\n# Role task\\r\\n- name: Streams should be added\\r\\n  kinesis_stream:\\r\\n    region: \\\"{{ item.region }}\\\"\\r\\n    aws_access_key: \\\"{{ item.access_key | default(omit) }}\\\"\\r\\n    aws_secret_key: \\\"{{ item.secret_key | default(omit) }}\\\"\\r\\n    profile: \\\"{{ item.boto_profile | default(omit) }}\\\"\\r\\n    name: \\\"{{ item.name }}\\\"\\r\\n    retention_period: \\\"{{ item.retention_period | default(omit) }}\\\"\\r\\n    shards: \\\"{{ item.shards }}\\\"\\r\\n    tags: \\\"{{ item.tags | default(omit) }}\\\"\\r\\n    wait: \\\"{{ item.wait | default(omit) }}\\\"\\r\\n    wait_timeout: \\\"{{ item.wait_timeout | default(omit) }}\\\"\\r\\n    state: present\\r\\n  with_items: \\\"{{ kinesis_to_add }}\\\"\\r\\n\\r\\n# Playbook excerpt\\r\\n    - role: kinesis\\r\\n      kinesis_to_add:\\r\\n        - region: 'eu-central-1'\\r\\n          name: 'ansible-role-test'\\r\\n          shards: '1'\\r\\n```\\r\\n```bash\\r\\n# printenv\\r\\nAWS_REGION=eu-central-1\\r\\nEC2_URL=https://ec2.eu-central-1.amazonaws.com\\r\\nAWS_ACCESS_KEY=XXX\\r\\nAWS_SECRET_KEY=YYY\\r\\n```\\r\\n\\r\\nIf the `EC2_URL` variable is unset, then the module works as expected.\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe Kinesis stream would be created as per its definition.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nTASK [kinesis : Streams should be added] ************************************\\r\\nfailed: [localhost] (item={u'region': u'eu-central-1', u'name': u'ansible-role-test', u'shards': u'1'}) => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"item\\\": {\\\"name\\\": \\\"ansible-role-test\\\", \\\"region\\\": \\\"eu-central-1\\\", \\\"shards\\\": \\\"1\\\"}, \\\"msg\\\": \\\"\\\", \\\"result\\\": {}, \\\"success\\\": false}\\r\\n```\\r\\n\", \n    \"component_name\": \"kinesis_stream\", \n    \"component_raw\": \"kinesis_stream module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19970\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/kinesis_stream.py\", \n    \"summary\": \"Just like with the `s3_website` module, and potentially other modules that rely on `boto3`, this module fails without providing (any) helpful information when the EC2_URL environment variable is set.\", \n    \"title\": \"kinesis_stream module fails when EC2_URL env var is set\"\n  }, \n  \"19971\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nrabbitmq_policy\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n##### reproduce\\r\\nAccording to the documentation:\\r\\n```yaml\\r\\n- name: ensure the default vhost contains the HA policy\\r\\n  rabbitmq_policy:\\r\\n    name: HA\\r\\n    pattern: .*\\r\\n    tags:\\r\\n      - ha-mode: all\\r\\n```\\r\\n##### error\\r\\n```bash\\r\\nfatal: [tek]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"argument tags is of type <type 'list'> and we were unable to convert to dict\\\"}\\r\\n```\\r\\n##### solution\\r\\nIt's just a typo in the documentation\\r\\n```yaml\\r\\n# tags must be a dict\\r\\n# https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/messaging/rabbitmq_policy.py#L148\\r\\n- name: ensure the default vhost contains the HA policy\\r\\n  rabbitmq_policy:\\r\\n    name: HA\\r\\n    pattern: .*\\r\\n    tags:\\r\\n      ha-mode: all\\r\\n```\\r\\n\", \n    \"component_name\": \"rabbitmq_policy\", \n    \"component_raw\": \"rabbitmq_policy\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19971\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/messaging/rabbitmq_policy.py\", \n    \"summary\": \"##### reproduce\\n\\nAccording to the documentation:\\n\\n```yaml\\n\\n- name: ensure the default vhost contains the HA policy\\n\\n  rabbitmq_policy:\\n\\n    name: HA\\n\\n    pattern: .*\\n\\n    tags:\\n\\n      - ha-mode: all\\n\\n```\\n\\n##### error\\n\\n```bash\\n\\nfatal: [tek]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"argument tags is of type <type 'list'> and we were unable to convert to dict\\\"}\\n\\n```\\n\\n##### solution\\n\\nIt's just a typo in the documentation\\n\\n```yaml\\n\\n# tags must be a dict\\n\\n# https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/messaging/rabbitmq_policy.py#L148\\n\\n- name: ensure the default vhost contains the HA policy\\n\\n  rabbitmq_policy:\\n\\n    name: HA\\n\\n    pattern: .*\\n\\n    tags:\\n\\n      ha-mode: all\\n\\n```\", \n    \"title\": \"Fix tags documentation into rabbitmq_policy module\"\n  }, \n  \"19972\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /Users/vlfig/projects/ansible-confluent-orchestration/ansible.cfg\\nconfigured module search path = Default w/o overrides\\nReproducible in\\nansible 2.3.0 (devel ad1e066540) last updated 2017/01/06 114713 (GMT +100)\\nconfig file = /Users/vlfig/projects/ansible-confluent-orchestration/ansible.cfg\\nconfigured module search path = Default w/o overrides\\nNot reproducible in 2.1.3.0 (works as expected).\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_eni\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /Users/vlfig/projects/ansible-confluent-orchestration/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\nReproducible in \\r\\n```\\r\\nansible 2.3.0 (devel ad1e066540) last updated 2017/01/06 11:47:13 (GMT +100)\\r\\n  config file = /Users/vlfig/projects/ansible-confluent-orchestration/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n*Not* reproducible in 2.1.3.0 (works as expected).\\r\\n\\r\\n##### CONFIGURATION\\r\\nplain\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nThe ec2_eni module does not create a new ENI and instead updates the description of an existing ENI that matches its other args. This is important for the cases when we don't know the IP address nor want to attach it to an instance and just want to create an ENI.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```yaml\\r\\n- ec2_eni:\\r\\n    description: \\\"my-eni-1\\\"\\r\\n    region: \\\"{{ region }}\\\"\\r\\n    subnet_id: \\\"{{ my_subnet }}\\\"\\r\\n    state: present\\r\\n    security_groups: \\\"{{ my_sg }}\\\"\\r\\n```\\r\\nand then\\r\\n```yaml\\r\\n- ec2_eni:\\r\\n    description: \\\"my-eni-2\\\"\\r\\n    region: \\\"{{ region }}\\\"\\r\\n    subnet_id: \\\"{{ my_subnet }}\\\"\\r\\n    state: present\\r\\n    security_groups: \\\"{{ my_sg }}\\\"\\r\\n```\\r\\n\\r\\n(one could also use `with_items` with the same results)\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nTwo ENIs created with descriptions \\\"my-eni-1\\\" and \\\"my-eni-2\\\".\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nOnly one ENI gets created, with description \\\"my-eni-2\\\". First task creates, second task updates the same ENI.\\r\\n\\r\\nNote `\\\"id\\\": \\\"eni-57cf9d28\\\"` is the same in both invocations.\\r\\n```\\r\\n _____________________________\\r\\n< TASK [test-image : ec2_eni] >\\r\\n -----------------------------\\r\\n        \\\\   ^__^\\r\\n         \\\\  (oo)\\\\_______\\r\\n            (__)\\\\       )\\\\/\\\\\\r\\n                ||----w |\\r\\n                ||     ||\\r\\n\\r\\ntask path: [snip]/roles/test-image/tasks/main.yml:34\\r\\nUsing module file [snip]/lib/python2.7/site-packages/ansible/modules/extras/cloud/amazon/ec2_eni.py\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: vlfig\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/bin/env python && sleep 0'\\r\\nchanged: [localhost] => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"interface\\\": {\\r\\n        \\\"description\\\": \\\"my-eni-1\\\",\\r\\n        \\\"groups\\\": {\\r\\n            \\\"sg-483a9d20\\\": \\\"[snip]\\\"\\r\\n        },\\r\\n        \\\"id\\\": \\\"eni-57cf9d28\\\",\\r\\n        \\\"mac_address\\\": \\\"06:2f:d2:cb:38:f7\\\",\\r\\n        \\\"owner_id\\\": \\\"[snip]\\\",\\r\\n        \\\"private_ip_address\\\": \\\"10.1.12.57\\\",\\r\\n        \\\"private_ip_addresses\\\": [\\r\\n            {\\r\\n                \\\"primary_address\\\": true,\\r\\n                \\\"private_ip_address\\\": \\\"10.1.12.57\\\"\\r\\n            }\\r\\n        ],\\r\\n        \\\"source_dest_check\\\": true,\\r\\n        \\\"status\\\": \\\"pending\\\",\\r\\n        \\\"subnet_id\\\": \\\"subnet-1f3b6364\\\",\\r\\n        \\\"vpc_id\\\": \\\"vpc-[snip]cb\\\"\\r\\n    },\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"attached\\\": null,\\r\\n            \\\"aws_access_key\\\": \\\"[snip]\\\",\\r\\n            \\\"aws_secret_key\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n            \\\"delete_on_termination\\\": null,\\r\\n            \\\"description\\\": \\\"my-eni-1\\\",\\r\\n            \\\"device_index\\\": 0,\\r\\n            \\\"ec2_url\\\": null,\\r\\n            \\\"eni_id\\\": null,\\r\\n            \\\"force_detach\\\": false,\\r\\n            \\\"instance_id\\\": null,\\r\\n            \\\"private_ip_address\\\": null,\\r\\n            \\\"profile\\\": null,\\r\\n            \\\"region\\\": \\\"eu-central-1\\\",\\r\\n            \\\"secondary_private_ip_address_count\\\": null,\\r\\n            \\\"secondary_private_ip_addresses\\\": null,\\r\\n            \\\"security_groups\\\": [\\r\\n                \\\"sg-483a9d20\\\",\\r\\n                \\\"sg-483a9d20\\\"\\r\\n            ],\\r\\n            \\\"security_token\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n            \\\"source_dest_check\\\": null,\\r\\n            \\\"state\\\": \\\"present\\\",\\r\\n            \\\"subnet_id\\\": \\\"subnet-1f3b6364\\\",\\r\\n            \\\"validate_certs\\\": true\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"ec2_eni\\\"\\r\\n    }\\r\\n}\\r\\n _____________________________\\r\\n< TASK [test-image : ec2_eni] >\\r\\n -----------------------------\\r\\n        \\\\   ^__^\\r\\n         \\\\  (oo)\\\\_______\\r\\n            (__)\\\\       )\\\\/\\\\\\r\\n                ||----w |\\r\\n                ||     ||\\r\\n\\r\\ntask path: [snip]/roles/test-image/tasks/main.yml:44\\r\\nUsing module file [snip]/lib/python2.7/site-packages/ansible/modules/extras/cloud/amazon/ec2_eni.py\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: vlfig\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/bin/env python && sleep 0'\\r\\nchanged: [localhost] => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"interface\\\": {\\r\\n        \\\"description\\\": \\\"my-eni-2\\\",\\r\\n        \\\"groups\\\": {\\r\\n            \\\"sg-483a9d20\\\": \\\"[snip]\\\"\\r\\n        },\\r\\n        \\\"id\\\": \\\"eni-57cf9d28\\\",\\r\\n        \\\"mac_address\\\": \\\"06:2f:d2:cb:38:f7\\\",\\r\\n        \\\"owner_id\\\": \\\"[snip]\\\",\\r\\n        \\\"private_ip_address\\\": \\\"10.1.12.57\\\",\\r\\n        \\\"private_ip_addresses\\\": [\\r\\n            {\\r\\n                \\\"primary_address\\\": true,\\r\\n                \\\"private_ip_address\\\": \\\"10.1.12.57\\\"\\r\\n            }\\r\\n        ],\\r\\n        \\\"source_dest_check\\\": true,\\r\\n        \\\"status\\\": \\\"available\\\",\\r\\n        \\\"subnet_id\\\": \\\"subnet-1f3b6364\\\",\\r\\n        \\\"vpc_id\\\": \\\"vpc-[snip]cb\\\"\\r\\n    },\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"attached\\\": null,\\r\\n            \\\"aws_access_key\\\": \\\"[snip]\\\",\\r\\n            \\\"aws_secret_key\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n            \\\"delete_on_termination\\\": null,\\r\\n            \\\"description\\\": \\\"my-eni-2\\\",\\r\\n            \\\"device_index\\\": 0,\\r\\n            \\\"ec2_url\\\": null,\\r\\n            \\\"eni_id\\\": null,\\r\\n            \\\"force_detach\\\": false,\\r\\n            \\\"instance_id\\\": null,\\r\\n            \\\"private_ip_address\\\": null,\\r\\n            \\\"profile\\\": null,\\r\\n            \\\"region\\\": \\\"eu-central-1\\\",\\r\\n            \\\"secondary_private_ip_address_count\\\": null,\\r\\n            \\\"secondary_private_ip_addresses\\\": null,\\r\\n            \\\"security_groups\\\": [\\r\\n                \\\"sg-483a9d20\\\",\\r\\n                \\\"sg-483a9d20\\\"\\r\\n            ],\\r\\n            \\\"security_token\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n            \\\"source_dest_check\\\": null,\\r\\n            \\\"state\\\": \\\"present\\\",\\r\\n            \\\"subnet_id\\\": \\\"subnet-1f3b6364\\\",\\r\\n            \\\"validate_certs\\\": true\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"ec2_eni\\\"\\r\\n    }\\r\\n}\\r\\n[snip]\\r\\nlocalhost                  : ok=12   changed=3    unreachable=0    failed=0\\r\\n```\\r\\n\", \n    \"component_name\": \"ec2_eni\", \n    \"component_raw\": \"ec2_eni\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19972\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_eni.py\", \n    \"summary\": \"The ec2_eni module does not create a new ENI and instead updates the description of an existing ENI that matches its other args. This is important for the cases when we don't know the IP address nor want to attach it to an instance and just want to create an ENI.\", \n    \"title\": \"ec2_eni doesn't honour description for uniqueness\"\n  }, \n  \"19973\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report ? or Feat Request ? : I let you decide\\r\\n\\r\\n##### COMPONENT NAME\\r\\nuri module\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nCentos 7.2\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nuri module changes the case of the headers . I am using an efficient IP appliance to manage IP and DNS stuff with ansible but I cannot autenticate properly :\\r\\n \\r\\nThe appliance uses case sensitive custom headers (I guess it's bad cos the RFC says it should not matter) : [The RFC says](https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2) : \\r\\n\\r\\n> Each header field consists of a name followed by a colon (\\\":\\\") and the field value. Field names are case-insensitive\\r\\n\\r\\n\\\"X-IPM-Username\\\" becomes \\\"X-Ipm-Username\\\"\\r\\n\\\"X-IPM-Password\\\" becomes \\\"X-Ipm-Password\\\"\\r\\n\\r\\nI can check with a \\\"curl\\\" that a working query with the original uppercase IPM with the  headers fails when the \\\"IPM\\\" within the header is capitalized to \\\"Ipm\\\"\\r\\n\\r\\nAnyway if it's case insensitive, could you just not modidy the case ? (dunno if it's ansible  related or underlying python libraries related).\\r\\n\\r\\nI'm gonna use curl command, but I guess this behavior could affect other users and it took me a while to understand the problem.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n        url: >-\\r\\n          {{ eip_restlike_api_url }}/dns_zone_list\\r\\n        headers:\\r\\n          \\\"X-IPM-Username\\\": \\\"{{ eip_login | b64encode }}\\\"\\r\\n          \\\"X-IPM-Password\\\": \\\"{{ eip_pwd | b64encode }}\\\"\\r\\n        status_code: 200\\r\\n        method: GET\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nunmodified headers\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n-vvvv still show unmodified case, with \\r\\n\\r\\n```\\r\\n            \\\"headers\\\": {\\r\\n                \\\"X-IPM-Password\\\": \\\" *****************\\\", \\r\\n                \\\"X-IPM-Username\\\": \\\" *****************\\\"\\r\\n            }, \\r\\n```\\r\\n but wireshark  gives\\r\\n\\r\\n```\\r\\nGET /rest/dns_zone_list HTTP/1.1\\r\\nAccept-Encoding: identity\\r\\nX-Ipm-Password: *****************\\r\\nConnection: close\\r\\nHost: *****************\\r\\nUser-Agent: ansible-httpget\\r\\nX-Ipm-Username: *****************\\r\\nCache-Control: no-cache\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"uri\", \n    \"component_raw\": \"uri module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19973\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/basics/uri.py\", \n    \"summary\": \"uri module changes the case of the headers . I am using an efficient IP appliance to manage IP and DNS stuff with ansible but I cannot autenticate properly :\\n\\n \\n\\nThe appliance uses case sensitive custom headers (I guess it's bad cos the RFC says it should not matter) : [The RFC says](https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2) : \\n\\n\\n\\n> Each header field consists of a name followed by a colon (\\\":\\\") and the field value. Field names are case-insensitive\\n\\n\\n\\n\\\"X-IPM-Username\\\" becomes \\\"X-Ipm-Username\\\"\\n\\n\\\"X-IPM-Password\\\" becomes \\\"X-Ipm-Password\\\"\\n\\n\\n\\nI can check with a \\\"curl\\\" that a working query with the original uppercase IPM with the  headers fails when the \\\"IPM\\\" within the header is capitalized to \\\"Ipm\\\"\\n\\n\\n\\nAnyway if it's case insensitive, could you just not modidy the case ? (dunno if it's ansible  related or underlying python libraries related).\\n\\n\\n\\nI'm gonna use curl command, but I guess this behavior could affect other users and it took me a while to understand the problem.\", \n    \"title\": \"uri changes the case of custom headers name (it captializes them) where curl (for example, or software like postman as well) does not\"\n  }, \n  \"19974\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel f5c1aefca9) last updated 2017/01/05 174830 (GMT -400)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nansible/lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel f5c1aefca9) last updated 2017/01/05 17:48:30 (GMT -400)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\necs_taskdefinition requires passing many integer parameters.  If you pass them as dynamic variables from a yaml   (cpu: \\\"{{ cpu_units }}\\\") they are passed to boto as strings, and rejected at runtime.  Some action may need to be taken to actively cast the integer parameters which are passed to boto\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- name: \\\"Create task definition\\\"\\r\\n  ecs_taskdefinition:\\r\\n    containers:\\r\\n    - name: \\\"{{ service_name }}\\\"\\r\\n      cpu: \\\"{{ cpu_units }}\\\"\\r\\n      essential: true\\r\\n      image: \\\"{{ docker_repo }}/{{ service_name }}:{{ service_version }}\\\"\\r\\n      memory: \\\"{{ memory_amt }}\\\"\\r\\n      mountPoints:\\r\\n      - containerPath: /opt/apache-tomcat/logs\\r\\n        sourceVolume: logs\\r\\n      portMappings:\\r\\n      - containerPort: 8080\\r\\n        hostPort: 0\\r\\n      - containerPort: 8443\\r\\n        hostPort: 0\\r\\n      - containerPort: 11400\\r\\n        hostPort: 0\\r\\n      - containerPort: 11401\\r\\n        hostPort: 0\\r\\n      - containerPort: 11402\\r\\n        hostPort: 0\\r\\n      environment: \\\"{{ ecs_env_vars.vars }}\\\"\\r\\n    volumes:\\r\\n    - name: logs\\r\\n      host:\\r\\n        sourcePath: /logs\\r\\n    family: test-cluster-taskdef\\r\\n    state: present\\r\\n    region: \\\"{{ aws_region }}\\\"\\r\\n  register: task_output\\r\\n\\r\\n\\r\\n\\r\\nCPU and memory will fail with a casting error:\\r\\n\\r\\nParamValidationError(report=report.generate_report())\\\\r\\\\nbotocore.exceptions.ParamValidationError: Parameter validation failed:\\\\r\\\\nInvalid type for parameter containerDefinitions[0].memory, value: 512, type: <type 'str'>, valid types: <type 'int'>, <type 'long'>\\\\r\\\\nInvalid type for parameter containerDefinitions[0].cpu, value: 10, type: <type 'str'>, valid types: <type 'int'>, <type 'long'>\\\\r\\\\n\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\"}\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nThe task should have registered with the dynamically registered cpu/memory amt\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nCasting error, boto kicked out the request\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"ansible/lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py\", \n    \"component_raw\": \"ansible/lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19974\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ecs_taskdefinition.py\", \n    \"summary\": \"ecs_taskdefinition requires passing many integer parameters.  If you pass them as dynamic variables from a yaml   (cpu: \\\"{{ cpu_units }}\\\") they are passed to boto as strings, and rejected at runtime.  Some action may need to be taken to actively cast the integer parameters which are passed to boto\", \n    \"title\": \"ecs_taskdefinition integer parameters do not auto-cast\"\n  }, \n  \"19975\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nMost of my queued changes were already implemented by @aperigault !\\r\\n\\r\\nThis was still open\\r\\n- Typos\\r\\n- Various fixes to dict.get() without quotes\\r\\n- Add defaults to `fullname` and `orgname` (so they are no longer mandatory)\\r\\n- ~~Add default to `joinworkgroup` to WORKGROUP (maybe not a good idea afterall ?)~~\\r\\n- Add missing timezone implementation\\r\\n- Remove the customize flag from the options\\r\\n- Rename 'customizations' to 'customization' (cfr VMware docs and fora)\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19975\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"Most of my queued changes were already implemented by @aperigault !\\n\\n\\n\\nThis was still open\\n\\n- Typos\\n\\n- Various fixes to dict.get() without quotes\\n\\n- Add defaults to `fullname` and `orgname` (so they are no longer mandatory)\\n\\n- ~~Add default to `joinworkgroup` to WORKGROUP (maybe not a good idea afterall ?)~~\\n\\n- Add missing timezone implementation\\n\\n- Remove the customize flag from the options\\n\\n- Rename 'customizations' to 'customization' (cfr VMware docs and fora)\", \n    \"title\": \"vmware_guest: various customizations changes and fixes\"\n  }, \n  \"19978\": {\n    \"ansible_version\": \"ansible 2.0.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodules/cloud/google/gce.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.0.1.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nPython 2.7.10 from virtualenv and using apache-libcloud==1.5.0\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nOS X 10.10.5\\r\\n\\r\\n##### SUMMARY\\r\\nAttempting to duplicate instance creation from example at http://docs.ansible.com/ansible/guide_gce.html.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nPlease note I am able to interact with google cloud using apache-libcloud with same credentials.\\r\\n\\r\\n<---hosts file--->\\r\\nlocalhost ansible_connection=local\\r\\n\\r\\n<---playbook.yml--->\\r\\n\\r\\n```yaml\\r\\n---\\r\\n- name: Create instance(s)\\r\\n  hosts: localhost\\r\\n  connection: local\\r\\n  gather_facts: no\\r\\n\\r\\n  vars:\\r\\n    service_account_email: ...@developer.gserviceaccount.com\\r\\n    credentials_file: /Users...json\\r\\n    project_id: ...238\\r\\n    machine_type: n1-standard-1\\r\\n    image: debian-7\\r\\n\\r\\n  tasks:\\r\\n\\r\\n   - name: Launch instances\\r\\n     gce:\\r\\n         instance_names: dev\\r\\n         machine_type: \\\"{{ machine_type }}\\\"\\r\\n         image: \\\"{{ image }}\\\"\\r\\n         service_account_email: \\\"{{ service_account_email }}\\\"\\r\\n         credentials_file: \\\"{{ credentials_file }}\\\"\\r\\n         project_id: \\\"{{ project_id }}\\\"\\r\\n```\\r\\n\\r\\nCommand is: ansible-playbook -i hosts playbook.yml -vvvv\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nSomething indicating success; undocumented!\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nPLAY [Create instance(s)] ******************************************************\\r\\n\\r\\nTASK [Launch instances] ********************************************************\\r\\ntask path: /Users/me/ansible/me/guide_gce/as_of_010617.yml:16\\r\\nESTABLISH LOCAL CONNECTION FOR USER: me\\r\\nlocalhost EXEC /bin/sh -c '( umask 22 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1483722674.82-53534914954591 `\\\" && echo \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1483722674.82-53534914954591 `\\\" )'\\r\\nlocalhost PUT /var/folders/h1/bg76tk196rz065b81p1d28ch0000gn/T/tmpp7fYZZ TO /Users/me/.ansible/tmp/ansible-tmp-1483722674.82-53534914954591/gce\\r\\nlocalhost EXEC /bin/sh -c 'LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /Users/me/.ansible/tmp/ansible-tmp-1483722674.82-53534914954591/gce; rm -rf \\\"/Users/me/.ansible/tmp/ansible-tmp-1483722674.82-53534914954591/\\\" > /dev/null 2>&1'\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"invocation\\\": {\\\"module_args\\\": <OMITTED>\\r\\n\\\"module_name\\\": \\\"gce\\\"}, \\\"msg\\\": \\\"unsupported parameter for module: credentials_file\\\"}\\r\\n\\r\\nNO MORE HOSTS LEFT *************************************************************\\r\\n\\tto retry, use: --limit @as_of_010617.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=0    changed=0    unreachable=0    failed=1   \\r\\n```\\r\\n\", \n    \"component_name\": \"s/cloud/google/gce.py\", \n    \"component_raw\": \"modules/cloud/google/gce.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19978\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"bug\", \n      \"cloud\", \n      \"gce\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/google/gce.py\", \n    \"summary\": \"Attempting to duplicate instance creation from example at http://docs.ansible.com/ansible/guide_gce.html.\", \n    \"title\": \"gce module fails with \\\"unsupported parameter for module: credentials_file\\\"\"\n  }, \n  \"19979\": {\n    \"ansible_version\": \"ansible 2.3.0 (ans-storage 8628c6d9f8) last updated 2016/12/22 022409 (GMT +000)\\nconfig file = /home/supertom/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\ngc_storage\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (ans-storage 8628c6d9f8) last updated 2016/12/22 02:24:09 (GMT +000)\\r\\n  config file = /home/supertom/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nFixes ansible/ansible#19568\\r\\n\\r\\ncc @ryansb \\r\\n\\r\\n\", \n    \"component_name\": \"gc_storage\", \n    \"component_raw\": \"gc_storage\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19979\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"gce\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/google/gc_storage.py\", \n    \"summary\": \"Fixes ansible/ansible#19568\\n\\n\\n\\ncc @ryansb\", \n    \"title\": \"[GCE] gc_storage: add type parameter to expiration in argument_spec.\"\n  }, \n  \"19980\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 61e2fa1dae) last updated 2017/01/06 121906 (GMT -400)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nSlack module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel 61e2fa1dae) last updated 2017/01/06 12:19:06 (GMT -400)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nRemoves angle brackets from the list of HTML-escaped characters in the Slack module. Verified through manual testing that this addresses https://github.com/ansible/ansible/issues/19579 without reintroducing the bug that HTML escaping was intended to address (`400` errors when sending Slack messages containing quotes or ampersands).\\r\\n\\r\\nThe Slack API documentation specifies that angle brackets should be escaped, but this seems to only apply to when literal angle brackets are desired in the message body rather than angle brackets used as Slack markup. Unfortunately, I don't think there's a good way to allow for both use cases short of relying on the end user to manually escape literal angle brackets.\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\nFixes #19579.\\r\\n\", \n    \"component_name\": \"slack\", \n    \"component_raw\": \"Slack module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19980\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"community_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/notification/slack.py\", \n    \"summary\": \"Removes angle brackets from the list of HTML-escaped characters in the Slack module. Verified through manual testing that this addresses https://github.com/ansible/ansible/issues/19579 without reintroducing the bug that HTML escaping was intended to address (`400` errors when sending Slack messages containing quotes or ampersands).\\n\\n\\n\\nThe Slack API documentation specifies that angle brackets should be escaped, but this seems to only apply to when literal angle brackets are desired in the message body rather than angle brackets used as Slack markup. Unfortunately, I don't think there's a good way to allow for both use cases short of relying on the end user to manually escape literal angle brackets.\\n\\n\\n\\n\\n\\nFixes #19579.\", \n    \"title\": \"Don't escape angle brackets in the Slack module\"\n  }, \n  \"19981\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nConfigureRemotingForAnsible.ps1\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\nMake the script somewhat short, but provide a symlink for people referring to the old script.\", \n    \"component_name\": \"configureremotingforansible.ps1\", \n    \"component_raw\": \"ConfigureRemotingForAnsible.ps1\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19981\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"test\", \n      \"windows\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Make the script somewhat short, but provide a symlink for people referring to the old script.\", \n    \"title\": \"Rename ConfigureRemotingForAnsible.ps1 to Enable-WinRM.ps1\"\n  }, \n  \"19982\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nwin_reboot\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWhen automating things on Windows (due to bug #19966) I discovered that when a system is on course of being rebooted, the `win_reboot` task will fail with a message like **\\\"System is already rebooting.\\\"**. (I will post the verbatim message when I hit this one again !)\\r\\n\\r\\nBut in this unique case, win_reboot could simply wait until the system is rebooted, rather than consider it a failed task.\", \n    \"component_name\": \"win_reboot\", \n    \"component_raw\": \"win_reboot\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19982\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_reboot.py\", \n    \"summary\": \"When automating things on Windows (due to bug #19966) I discovered that when a system is on course of being rebooted, the `win_reboot` task will fail with a message like **\\\"System is already rebooting.\\\"**. (I will post the verbatim message when I hit this one again !)\\n\\n\\n\\nBut in this unique case, win_reboot could simply wait until the system is rebooted, rather than consider it a failed task.\", \n    \"title\": \"win_reboot fails when a reboot is already ongoing\"\n  }, \n  \"19983\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nmodule results\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n\\r\\n\", \n    \"component_name\": \"results\", \n    \"component_raw\": \"module results\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19983\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"c:plugins/action\", \n      \"feature\", \n      \"module_util\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"\", \n    \"title\": \"add better handling of unparsed module output\"\n  }, \n  \"19985\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nunarchive\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nArch Linux\\r\\n\\r\\n##### SUMMARY\\r\\nI'm trying to unarchive a zip file using the unarchive module. It works using a non-redirected URL, but not with a redirected URL.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nIn this playbook the first task will work and the second one won't. The first task's URL is one of the redirect URL's behind the second task's URL.\\r\\n```yaml\\r\\n---\\r\\n- hosts: localhost\\r\\n  gather_facts: false\\r\\n  tasks:\\r\\n    - name: Install Kodi Subscene.com subtitles add-on (success).\\r\\n      unarchive:\\r\\n        src: http://ftp.heanet.ie/mirrors/xbmc/addons/jarvis/service.subtitles.subscene/service.subtitles.subscene-1.7.1.zip\\r\\n        dest: /tmp\\r\\n        remote_src: true\\r\\n\\r\\n    - name: Install Kodi Subscene.com subtitles add-on (fail).\\r\\n      unarchive:\\r\\n        src: http://mirrors.kodi.tv/addons/jarvis/service.subtitles.subscene/service.subtitles.subscene-1.7.1.zip\\r\\n        dest: /tmp\\r\\n        remote_src: true\\r\\n...\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nI would have expected redirecting to work.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nhb@aramaki ~/git/hyperbaton-ansible (git)-[master] % ansible-playbook playbooks/bugreports/unarchive_url_redirect_fail.yml \\r\\n\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [Install Kodi Subscene.com subtitles add-on (success).] *******************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [Install Kodi Subscene.com subtitles add-on (fail).] **********************\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failure downloading http://mirrors.kodi.tv/addons/jarvis/service.subtitles.subscene/service.subtitles.subscene-1.7.1.zip, HTTP Error 403: Forbidden\\\"}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=1\\r\\n```\\r\\n\", \n    \"component_name\": \"unarchive\", \n    \"component_raw\": \"unarchive\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19985\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"waiting_on_contributor\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/unarchive.py\", \n    \"summary\": \"I'm trying to unarchive a zip file using the unarchive module. It works using a non-redirected URL, but not with a redirected URL.\", \n    \"title\": \"Unarchive module URL src does not follow redirect\"\n  }, \n  \"19986\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nwin_reboot\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nShow a message to users when rebooting the system.\\r\\n\\r\\nI verified that the message is also logged in the EventLog !\", \n    \"component_name\": \"win_reboot\", \n    \"component_raw\": \"win_reboot\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19986\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/action\", \n      \"feature\", \n      \"module\", \n      \"needs_revision\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_reboot.py\", \n    \"summary\": \"Show a message to users when rebooting the system.\\n\\n\\n\\nI verified that the message is also logged in the EventLog !\", \n    \"title\": \"win_reboot: display message when scheduling reboot\"\n  }, \n  \"19987\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"It is possible to use the RDS module to assign an option group, but it is not currently possible to create/remove an option group in Ansible (2.2)\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2 module, probably needs its own action, such as `rds_option_group`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nCannot create / remove option groups for AWS RDS.  These are not the same as parameter groups.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\nSomething like this would be nice:\\r\\n```yaml\\r\\n- name: create RDS Native Backup Option Group\\r\\n  rds_option_group:\\r\\n    name: \\\"native-backup\\\"\\r\\n    state: present\\r\\n    options:\\r\\n        SQL_SERVER_BACKUP_RESTORE: my-bucket-name\\r\\n- name: create RDS instance and add it to option group\\r\\n  rds:\\r\\n    ...\\r\\n    - option_group: native-backup  \\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nOption Group is created by ansible task\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nno such option exists\\r\\n\", \n    \"component_name\": \"ec2   probably needs its own action such as rds_option_group\", \n    \"component_raw\": \"ec2 module, probably needs its own action, such as `rds_option_group`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19987\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"cloud\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/rds.py\", \n    \"summary\": \"Cannot create / remove option groups for AWS RDS.  These are not the same as parameter groups.\", \n    \"title\": \"Add the ability to create / delete RDS Option Groups for AWS\"\n  }, \n  \"19988\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nwin_msi\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nI have to investigate this deeper, but it seems that reinstalling an installed package does nothing, and reports a change. While I expected it to be idempotent and return OK.\\r\\n\\r\\nMore details to come, this is a placeholder until I get to it.\", \n    \"component_name\": \"win_msi\", \n    \"component_raw\": \"win_msi\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19988\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_msi.py\", \n    \"summary\": \"I have to investigate this deeper, but it seems that reinstalling an installed package does nothing, and reports a change. While I expected it to be idempotent and return OK.\\n\\n\\n\\nMore details to come, this is a placeholder until I get to it.\", \n    \"title\": \"win_msi: re-installing existing MSI file reports change\"\n  }, \n  \"19989\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nwin_package\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\nTypo's fixed.\", \n    \"component_name\": \"win_package\", \n    \"component_raw\": \"win_package\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19989\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_package.py\", \n    \"summary\": \"Typo's fixed.\", \n    \"title\": \"Small fixes\"\n  }, \n  \"19990\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel bd7466d56c) last updated 2017/01/03 190826 (GMT +000)\\nconfig file =\\nconfigured module search path = [<path-stripped>]\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nios_config\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel bd7466d56c) last updated 2017/01/03 19:08:26 (GMT +000)\\r\\n  config file =\\r\\n  configured module search path = ['<path-stripped>']\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n[defaults]\\r\\nlog_path=logs/test.log\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\nI've used \\\"src\\\" argument of ios_template to copy switch templates to remote switches but this is the first time I'm using the same (ios_template and tried ios_config as well) to copy a Cisco IOS installer file cat3k_caa-universalk9.SPA.03.07.04.E.152-3.E4.bin (file size 320 MB) to remote switches flash but I get below error when I run the playbook. If the file is copied successfully then I can use other commands with ios_command module to upgrade the OS.\\r\\n\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"{path stripped}/ansible/lib/ansible/executor/task_executor.py\\\", line 126, in run\\r\\n    res = self._execute()\\r\\n  File \\\"{path stripped}/ansible/lib/ansible/executor/task_executor.py\\\", line 504, in _execute\\r\\n    result = self._handler.run(task_vars=variables)\\r\\n  File \\\"{path stripped}/ansible/lib/ansible/plugins/action/net_config.py\\\", line 45, in run\\r\\n    self._handle_template()\\r\\n  File \\\"{path stripped}/ansible/lib/ansible/plugins/action/net_config.py\\\", line 118, in _handle_template\\r\\n    self._task.args['src'] = self._templar.template(template_data)\\r\\n  File \\\"{path stripped}/ansible/lib/ansible/template/__init__.py\\\", line 331, in template\\r\\n    result = self.do_template(variable, preserve_trailing_newlines=preserve_trailing_newlines, escape_backslashes=escape_backslashes, fail_on_undefined=fail_on_undefined, overrides=overrides)\\r\\n  File \\\"{path stripped}/ansible/lib/ansible/template/__init__.py\\\", line 486, in do_template\\r\\n    data = _escape_backslashes(data, myenv)\\r\\n  File \\\"{path stripped}/ansible/lib/ansible/template/__init__.py\\\", line 94, in _escape_backslashes\\r\\n    for token in jinja_env.lex(d2):\\r\\n  File \\\"{path stripped}/ansible/lib/jinja2/lexer.py\\\", line 643, in tokeniter\\r\\n    name, filename)\\r\\nTemplateSyntaxError: unexpected char u'\\\\ufffd' at 5231\\r\\n  line 21\\r\\n\\r\\nfatal: [{hostname stripped}]: FAILED! => {\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"msg\\\": \\\"Unexpected failure during module execution.\\\",\\r\\n    \\\"stdout\\\": \\\"\\\"\\r\\n}\\r\\n\\r\\nNote - I think this issue is because ios_config's src option processes all lines of the file which is being copied and this *.bin installer file cannot be processed but I might be wrong.\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n- name: Copy installer\\r\\n  ios_config:\\r\\n    timeout: 60\\r\\n    src: /tmp/cat3k_caa-universalk9.SPA.03.07.04.E.152-3.E4.bin\\r\\n    force: yes\\r\\n    authorize: yes\\r\\n    provider: \\\"{{ cli }}\\\"\\r\\n\\r\\n```\\r\\n\\r\\nNOTE --> I Copied the file cat3k_caa-universalk9.SPA.03.07.04.E.152-3.E4.bin to \\\"{{ role_path }}/files/\\\" directory as well but I still get same error.\\r\\nAlso, I tried without the force:yes argument but I still get same errors.\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nThe role should simply copy the file cat3k_caa-universalk9.SPA.03.07.04.E.152-3.E4.bin to flash: of remote switch. I can confirm that remote switch has enough space to copy this bin file.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\nI get the error that is published above. It is same even when I use -vvvv\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"ios_config\", \n    \"component_raw\": \"ios_config\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19990\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/ios/ios_config.py\", \n    \"summary\": \"I've used \\\"src\\\" argument of ios_template to copy switch templates to remote switches but this is the first time I'm using the same (ios_template and tried ios_config as well) to copy a Cisco IOS installer file cat3k_caa-universalk9.SPA.03.07.04.E.152-3.E4.bin (file size 320 MB) to remote switches flash but I get below error when I run the playbook. If the file is copied successfully then I can use other commands with ios_command module to upgrade the OS.\\n\\n\\n\\nAn exception occurred during task execution. The full traceback is:\\n\\nTraceback (most recent call last):\\n\\n  File \\\"{path stripped}/ansible/lib/ansible/executor/task_executor.py\\\", line 126, in run\\n\\n    res = self._execute()\\n\\n  File \\\"{path stripped}/ansible/lib/ansible/executor/task_executor.py\\\", line 504, in _execute\\n\\n    result = self._handler.run(task_vars=variables)\\n\\n  File \\\"{path stripped}/ansible/lib/ansible/plugins/action/net_config.py\\\", line 45, in run\\n\\n    self._handle_template()\\n\\n  File \\\"{path stripped}/ansible/lib/ansible/plugins/action/net_config.py\\\", line 118, in _handle_template\\n\\n    self._task.args['src'] = self._templar.template(template_data)\\n\\n  File \\\"{path stripped}/ansible/lib/ansible/template/__init__.py\\\", line 331, in template\\n\\n    result = self.do_template(variable, preserve_trailing_newlines=preserve_trailing_newlines, escape_backslashes=escape_backslashes, fail_on_undefined=fail_on_undefined, overrides=overrides)\\n\\n  File \\\"{path stripped}/ansible/lib/ansible/template/__init__.py\\\", line 486, in do_template\\n\\n    data = _escape_backslashes(data, myenv)\\n\\n  File \\\"{path stripped}/ansible/lib/ansible/template/__init__.py\\\", line 94, in _escape_backslashes\\n\\n    for token in jinja_env.lex(d2):\\n\\n  File \\\"{path stripped}/ansible/lib/jinja2/lexer.py\\\", line 643, in tokeniter\\n\\n    name, filename)\\n\\nTemplateSyntaxError: unexpected char u'\\\\ufffd' at 5231\\n\\n  line 21\\n\\n\\n\\nfatal: [{hostname stripped}]: FAILED! => {\\n\\n    \\\"failed\\\": true,\\n\\n    \\\"msg\\\": \\\"Unexpected failure during module execution.\\\",\\n\\n    \\\"stdout\\\": \\\"\\\"\\n\\n}\\n\\n\\n\\nNote - I think this issue is because ios_config's src option processes all lines of the file which is being copied and this *.bin installer file cannot be processed but I might be wrong.\", \n    \"title\": \"ios_config: Error while copying installer \\\"TemplateSyntaxError: unexpected char u'\\\\ufffd' at 5231\\\"\"\n  }, \n  \"19991\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nos_nova_quota\\r\\nos_neutron_quota\\r\\nos_cinder_quota\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nN/A\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nCurrently, there isn't any module to manage quotas in OpenStack\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nSomething like this:\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- os_nova_quota:\\r\\n    cloud: os_cloud\\r\\n    project: myproject\\r\\n    instances: 4\\r\\n    cores: 8\\r\\n    ram: 8192\\r\\n    key_pairs: 10\\r\\n\\r\\n- os_neutron_quota:\\r\\n    cloud: os_cloud\\r\\n    project: myproject\\r\\n    floatingip: 4\\r\\n    network: 2\\r\\n    router: 1\\r\\n    security_group: 10\\r\\n    security_group_rule: 100\\r\\n\\r\\n- os_cinder_quota:\\r\\n    cloud: os_cloud\\r\\n    project: myproject\\r\\n    gigabytes: 1000\\r\\n    snapshots: 10\\r\\n    volumes: 10\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nManage resource quotas on OpenStack\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nThere isn't any module to do like that\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n\\r\\n\", \n    \"component_name\": \"os_nova_quota\", \n    \"component_raw\": \"os_nova_quota\\nos_neutron_quota\\nos_cinder_quota\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19991\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"openstack\", \n      \"waiting_on_contributor\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Currently, there isn't any module to manage quotas in OpenStack\", \n    \"title\": \"OpenStack quota modules\"\n  }, \n  \"19993\": {\n    \"ansible_version\": \"ansible 2.2.0.0 (stable-2.2 4cd32ee1ac) last updated 2016/10/12 212006 (GMT +200)\\nlib/ansible/modules/core (detached HEAD cf0c652a88) last updated 2016/10/12 212305 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD 6979330c1d) last updated 2016/10/12 212305 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n-  Feature Idea\\r\\n- ~~Bug Report~~\\r\\n \\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\ninventory parsing\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0 (stable-2.2 4cd32ee1ac) last updated 2016/10/12 21:20:06 (GMT +200)\\r\\n  lib/ansible/modules/core: (detached HEAD cf0c652a88) last updated 2016/10/12 21:23:05 (GMT +200)\\r\\n  lib/ansible/modules/extras: (detached HEAD 6979330c1d) last updated 2016/10/12 21:23:05 (GMT +200)\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nNo config file found; using defaults\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\nWhen using custom `vars_plugins` each plugin is run for every host defined\\r\\nin the inventory file. It should be run on the host subset only.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\nNo playbook is needed\\r\\n\\r\\nthe `inventory` file is:\\r\\n\\r\\n```\\r\\n[g1]\\r\\nhost1\\r\\nhost2\\r\\nhost3\\r\\n\\r\\n[g2]\\r\\nhost4\\r\\nhost5\\r\\nhost6\\r\\n```\\r\\n\\r\\nA simple supid `vars_plugins/test` (which can simulate one that consume\\r\\ntime) is:\\r\\n\\r\\n```python\\r\\n#!/usr/bin/env python\\r\\n\\r\\ntry:\\r\\n    from __main__ import display\\r\\nexcept ImportError:\\r\\n    from ansible.utils.display import Display\\r\\n    display = Display()\\r\\n\\r\\nimport time\\r\\n    \\r\\nclass VarsModule(object):\\r\\n\\r\\n    def __init__(self, inventory):\\r\\n        self.inventory = inventory\\r\\n                \\r\\n    def get_host_vars(self, host, vault_password=None):\\r\\n        time.sleep(2)\\r\\n        display.display(host, color='cyan')\\r\\n\\r\\n```\\r\\n\\r\\n\\r\\nYou can run:\\r\\n\\r\\n```\\r\\ntime ansible all -i inventory -c local -m ping -v\\r\\n```\\r\\n\\r\\nand\\r\\n\\r\\n```\\r\\ntime ansible g1 -i inventory -c local -m ping -v\\r\\n```\\r\\n\\r\\nand\\r\\n\\r\\n```\\r\\ntime ansible host1 -i inventory -c local -m ping -v\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n- 1st command should be run in 12s\\r\\n- 2nd command should be run in 6s\\r\\n- 3rd command should be run in 2s\\r\\n\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nEach run takes about 13 or 13s to run.\\r\\n\\r\\n\\r\\n\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nNo config file found; using defaults\\r\\nhost4\\r\\nhost5\\r\\nhost6\\r\\nhost1\\r\\nhost2\\r\\nhost3\\r\\nhost1 | SUCCESS => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"ping\\\": \\\"pong\\\"\\r\\n}\\r\\n\\r\\nreal\\t0m12.862s\\r\\nuser\\t0m0.631s\\r\\nsys\\t0m0.210s\\r\\n```\\r\\n\\r\\n\\r\\n##### INVESTIGATIONS\\r\\n\\r\\nIn `lib/ansible/inventory/__init__.py` the `self.parse_inventory(host_list)`\\r\\n(line 97) has no clue about any subset. Thus both `get_group_variables` and\\r\\n`get_host_variables` are run over every single host defined in the inventory.\\r\\n\\r\\nIs there a specific reason for that?\\r\\n\\r\\nWouldn't it be better to pass the subset to the `Inventory.__init__`\\r\\nfunction in order to limit the `get_(host|group)_variables` to only the\\r\\nrequired hosts?\\r\\n\\r\\n\", \n    \"component_name\": \"inventory parsing\", \n    \"component_raw\": \"inventory parsing\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19993\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When using custom `vars_plugins` each plugin is run for every host defined\\n\\nin the inventory file. It should be run on the host subset only.\", \n    \"title\": \"inventory parsing performance issue with vars_plugins\"\n  }, \n  \"19995\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nwin_package\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nMore simple way to get product id's from Windows. Life-saver !\", \n    \"component_name\": \"win_package\", \n    \"component_raw\": \"win_package\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19995\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_package.py\", \n    \"summary\": \"More simple way to get product id's from Windows. Life-saver !\", \n    \"title\": \"[WIP] Add `Get-WMIObject Win32_Product` trick to docs\"\n  }, \n  \"19996\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nwin_package\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nRequiring the user to provide the module with the product id manually is a tedious task, especially when that information is well-stored inside the MSI package itself.\\r\\n\\r\\nSee: http://www.scconfigmgr.com/2014/08/22/how-to-get-msi-file-information-with-powershell/\\r\\n\\r\\nSo why not get the product id directly from the MSI package, and use that to determine if the product is already installed or not ?\", \n    \"component_name\": \"win_package\", \n    \"component_raw\": \"win_package\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19996\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_package.ps1\", \n    \"summary\": \"Requiring the user to provide the module with the product id manually is a tedious task, especially when that information is well-stored inside the MSI package itself.\\n\\n\\n\\nSee: http://www.scconfigmgr.com/2014/08/22/how-to-get-msi-file-information-with-powershell/\\n\\n\\n\\nSo why not get the product id directly from the MSI package, and use that to determine if the product is already installed or not ?\", \n    \"title\": \"win_package: should not require product_id information\"\n  }, \n  \"19997\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nrax_cbs_attachments\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n```\\r\\nThe rax_cbs_attachments had a required declaration for the device path parameter, ie /dev/xvdn.  Rather than expend the effort to idempotently determine an available device node path at runtime, I consulted upstream documentation and found that the device parameter could be determined at the infrastructure level.  Changed true to false, tested once, seems sane.\\r\\n```\\r\\n\\r\\nper\\r\\nhttps://developer.rackspace.com/docs/cloud-servers/v2/api-reference/svr-basic-operations/#post-attach-volume-to-server-servers-server-id-os-volume-attachments\\r\\n, device is \\\"The name of the device, such as /dev/xvdb. Specify null for\\r\\nauto- assignment.\\\"\", \n    \"component_name\": \"rax_cbs_attachments\", \n    \"component_raw\": \"rax_cbs_attachments\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19997\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"needs_revision\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/rackspace/rax_cbs_attachments.py\", \n    \"summary\": \"```\\n\\nThe rax_cbs_attachments had a required declaration for the device path parameter, ie /dev/xvdn.  Rather than expend the effort to idempotently determine an available device node path at runtime, I consulted upstream documentation and found that the device parameter could be determined at the infrastructure level.  Changed true to false, tested once, seems sane.\\n\\n```\\n\\n\\n\\nper\\n\\nhttps://developer.rackspace.com/docs/cloud-servers/v2/api-reference/svr-basic-operations/#post-attach-volume-to-server-servers-server-id-os-volume-attachments\\n\\n, device is \\\"The name of the device, such as /dev/xvdb. Specify null for\\n\\nauto- assignment.\\\"\", \n    \"title\": \"device path is optional for cbs\"\n  }, \n  \"19998\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nwait_for_connection\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWhen you are building new systems (think: vmware clone) it would be nice to be able to just wait until you can run something remotely. Usually what's being done right now is that we use **wait_for** on e.g. tcp/22 and as soon there is a connection we can use it.\\r\\n\\r\\nIn the Windows world it's not that simple. The port may already be listened on, but WinRM is not working yet (it may take up to 20 seconds before it starts working instead of giving HTTP 500). win_reboot understands this quite well and what win_reboot does I want to have as well (without the reboot, that is).\\r\\n\\r\\nEven on Linux your SSH may already be up, but the SSH keys may not have been deployed yet (think of kickstart SSH during installation, not %post). So testing for the connection to be actually working is what is required.\\r\\n\\r\\nIt is important to understand that depending on the systems configuration this could mean testing the ssh connection (on a different port using different credentials) or winrm connection (using kerberos, https, or other auth metods) based on a systems characteristics as configured in ansible.\\r\\n\\r\\nThat's why I'd like to have a wait_for_connection that is just an action plugin and works for both Linux and Windows equally well. I plan to write this the coming days.\\r\\n\\r\\n```yaml\\r\\n- name: Wait for system to become reachable\\r\\n  wait_for_connection:\\r\\n    timeout: 600\\r\\n    sleep: 5\\r\\n```\", \n    \"component_name\": \"wait_for_connection\", \n    \"component_raw\": \"wait_for_connection\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/19998\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When you are building new systems (think: vmware clone) it would be nice to be able to just wait until you can run something remotely. Usually what's being done right now is that we use **wait_for** on e.g. tcp/22 and as soon there is a connection we can use it.\\n\\n\\n\\nIn the Windows world it's not that simple. The port may already be listened on, but WinRM is not working yet (it may take up to 20 seconds before it starts working instead of giving HTTP 500). win_reboot understands this quite well and what win_reboot does I want to have as well (without the reboot, that is).\\n\\n\\n\\nEven on Linux your SSH may already be up, but the SSH keys may not have been deployed yet (think of kickstart SSH during installation, not %post). So testing for the connection to be actually working is what is required.\\n\\n\\n\\nIt is important to understand that depending on the systems\", \n    \"title\": \"wait_for_connection: action plugin to wait until ansible connection is restored\"\n  }, \n  \"19999\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/tessa/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \" win_iis_webapplication : Error when state is absent add null check\\r\\n\\r\\n##### ISSUE TYPE\\r\\n\\r\\n - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_iis_webapplication module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/tessa/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n#15390 fix win_iis_webapplication : Error when state is absent\", \n    \"component_name\": \"win_iis_webapplication\", \n    \"component_raw\": \"win_iis_webapplication module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/19999\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"community_review\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_iis_webapplication.ps1\", \n    \"summary\": \"#15390 fix win_iis_webapplication : Error when state is absent\", \n    \"title\": \"Fixes  win_iis_webapplication : Error when state is absent add null check\"\n  }, \n  \"20001\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel cba66dfedc) last updated 2017/01/07 071512 (GMT +000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_robocopy\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel cba66dfedc) last updated 2017/01/07 07:15:12 (GMT +000)\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nOriginal fix was at ansible/ansible-modules-extras#3515 by @twistyWater\\r\\nThis is a copy of that.\\r\\nit handles any additional return codes per the documentation at http://ss64.com/nt/robocopy-exit.html\\r\\n\\r\\nFixes #19959 - win_robocopy throw a exception when return_code is not 1||2||4\\r\\n\\r\\nBefore:\\r\\n```\\r\\nfatal: [i-0b1e67779f91f8xxx]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_robocopy\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"The variable '$changed' cannot be retrieved because it has not been set.\\\"\\r\\n}\\r\\n```\\r\\n\\r\\nAfter:\\r\\n```\\r\\nok: [i-0b1e67779f91f8xxx] => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_robocopy\\\"\\r\\n    },\\r\\n    \\\"win_robocopy\\\": {\\r\\n        \\\"changed\\\": true,\\r\\n        \\\"dest\\\": \\\"C:\\\\\\\\Windows\\\\\\\\system32\\\\\\\\WBEM\\\\\\\\Framework\\\\\\\\root\\\\\\\\\\\",\\r\\n        \\\"flags\\\": null,\\r\\n        \\\"msg\\\": \\\"Some Extra files or directories were detected. No files were copied.\\\",\\r\\n        \\\"output\\\": [\\r\\n            \\\"\\\",\\r\\n            \\\"-------------------------------------------------------------------------------\\\",\\r\\n            \\\"   ROBOCOPY     ::     Robust File Copy for Windows                              \\\",\\r\\n            \\\"-------------------------------------------------------------------------------\\\",\\r\\n            \\\"\\\",\\r\\n            \\\"  Started : Saturday, January 7, 2017 12:35:22 AM\\\",\\r\\n            \\\"   Source : \\\\\\\\\\\\\\\\10.x.x.x\\\\\\\\Misc\\\\\\\\EnterpriseLibrary\\\\\\\\\\\",\\r\\n            \\\"     Dest : C:\\\\\\\\Windows\\\\\\\\system32\\\\\\\\WBEM\\\\\\\\Framework\\\\\\\\root\\\\\\\\\\\",\\r\\n            \\\"\\\",\\r\\n            \\\"    Files : *.*\\\",\\r\\n            \\\"\\\\t    \\\",\\r\\n            \\\"  Options : *.* /S /E /DCOPY:DA /COPY:DAT /R:1000000 /W:30 \\\",\\r\\n            \\\"\\\",\\r\\n            \\\"------------------------------------------------------------------------------\\\",\\r\\n            \\\"\\\",\\r\\n            \\\"\\\\t                   8\\\\t\\\\\\\\\\\\\\\\10.x.x.x\\\\\\\\Misc\\\\\\\\EnterpriseLibrary\\\\\\\\\\\",\\r\\n            \\\"\\\\t*EXTRA Dir        -1\\\\tC:\\\\\\\\Windows\\\\\\\\system32\\\\\\\\WBEM\\\\\\\\Framework\\\\\\\\root\\\\\\\\Amazon\\\\\\\\\\\",\\r\\n            \\\"\\\",\\r\\n            \\\"------------------------------------------------------------------------------\\\",\\r\\n            \\\"\\\",\\r\\n            \\\"               Total    Copied   Skipped  Mismatch    FAILED    Extras\\\",\\r\\n            \\\"    Dirs :         1         0         0         0         0         1\\\",\\r\\n            \\\"   Files :         8         0         8         0         0         0\\\",\\r\\n            \\\"   Bytes :   253.2 k         0   253.2 k         0         0         0\\\",\\r\\n            \\\"   Times :   0:00:00   0:00:00                       0:00:00   0:00:00\\\",\\r\\n            \\\"   Ended : Saturday, January 7, 2017 12:35:22 AM\\\",\\r\\n            \\\"\\\"\\r\\n        ],\\r\\n        \\\"purge\\\": false,\\r\\n        \\\"recurse\\\": true,\\r\\n        \\\"return_code\\\": 2,\\r\\n        \\\"src\\\": \\\"\\\\\\\\\\\\\\\\10.x.x.x\\\\\\\\Misc\\\\\\\\EnterpriseLibrary\\\"\\r\\n    }\\r\\n}\\r\\n```\", \n    \"component_name\": \"win_robocopy\", \n    \"component_raw\": \"win_robocopy\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20001\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"shipit\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_robocopy.ps1\", \n    \"summary\": \"Original fix was at ansible/ansible-modules-extras#3515 by @twistyWater\\n\\nThis is a copy of that.\\n\\nit handles any additional return codes per the documentation at http://ss64.com/nt/robocopy-exit.html\\n\\n\\n\\nFixes #19959 - win_robocopy throw a exception when return_code is not 1||2||4\\n\\n\\n\\nBefore:\\n\\n```\\n\\nfatal: [i-0b1e67779f91f8xxx]: FAILED! => {\\n\\n    \\\"changed\\\": false,\\n\\n    \\\"failed\\\": true,\\n\\n    \\\"invocation\\\": {\\n\\n        \\\"module_name\\\": \\\"win_robocopy\\\"\\n\\n    },\\n\\n    \\\"msg\\\": \\\"The variable '$changed' cannot be retrieved because it has not been set.\\\"\\n\\n}\\n\\n```\\n\\n\\n\\nAfter:\\n\\n```\\n\\nok: [i-0b1e67779f91f8xxx] => {\\n\\n    \\\"changed\\\": false,\\n\\n    \\\"invocation\\\": {\\n\\n        \\\"module_name\\\": \\\"win_robocopy\\\"\\n\\n    },\\n\\n    \\\"win_robocopy\\\": {\\n\\n        \\\"changed\\\": true,\\n\\n        \\\"dest\\\": \\\"C:\\\\\\\\Windows\\\\\\\\system32\\\\\\\\WBEM\\\\\\\\Framework\\\\\\\\root\\\\\\\\\\\",\\n\\n        \\\"flags\\\": null,\\n\\n        \\\"msg\\\": \\\"Some Extra files or directories were detected. No files were copied.\\\",\\n\\n        \\\"output\\\": [\\n\\n            \\\"\\\",\\n\\n            \\\"-------------------------------------------------------------------------------\\\",\\n\\n            \\\"   ROBOCOPY     ::     Robust File Copy for Windows                              \\\",\\n\\n            \\\"-------------------------------------------------------------------------------\\\",\\n\\n            \\\"\\\",\\n\\n            \\\"  Started : Saturday, January 7, 2017 12:35:22 AM\\\",\\n\\n            \\\"   Source : \\\\\\\\\\\\\\\\10.x.x.x\\\\\\\\Misc\\\\\\\\EnterpriseLibrary\\\\\\\\\\\",\\n\\n            \\\"     Dest : C:\\\\\\\\Windows\\\\\\\\system32\\\\\\\\WBEM\\\\\\\\Framework\\\\\\\\root\\\\\\\\\\\",\\n\\n            \\\"\\\",\\n\\n            \\\"    Files : *.*\\\",\\n\\n            \\\"\\\\t    \\\",\\n\\n            \\\"  Options : *.* /S /E /DCOPY:DA /COPY:DAT /R:1000000 /W:30 \\\",\\n\\n            \\\"\\\",\\n\\n            \\\"------------------------------------------------------------------------------\\\",\\n\\n            \\\"\\\",\\n\\n            \\\"\\\\t                   8\\\\t\\\\\\\\\\\\\\\\10.x.x.x\\\\\\\\Misc\\\\\\\\EnterpriseLibrary\\\\\\\\\\\",\\n\\n            \\\"\\\\t*EXTRA Dir        -1\\\\tC:\\\\\\\\Windows\\\\\\\\system32\\\\\\\\WBEM\\\\\\\\Framework\\\\\\\\root\\\\\\\\Amazon\\\\\\\\\\\",\\n\\n            \\\"\\\",\\n\\n            \\\"------------------------------------------------------------------------------\\\",\\n\\n            \\\"\\\",\\n\\n            \\\"               Total    Copied   Skipped  Mismatch    FAILED    Extras\\\",\\n\\n            \\\"    Dirs :         1         0         0         0         0         1\\\",\\n\\n            \\\"   Files :         8         0         8         0         0         0\\\",\\n\\n            \\\"   Bytes :   253.2 k         0   253.2 k         0         0         0\\\",\\n\\n            \\\"   Times :   0:00:00   0:00:00                       0:00:00   0:00:00\\\",\\n\\n            \\\"   Ended : Saturday, January 7, 2017 12:35:22 AM\\\",\\n\\n            \\\"\\\"\\n\\n        ],\\n\\n        \\\"purge\\\": false,\\n\\n        \\\"recurse\\\": true,\\n\\n        \\\"return_code\\\": 2,\\n\\n        \\\"src\\\": \\\"\\\\\\\\\\\\\\\\10.x.x.x\\\\\\\\Misc\\\\\\\\EnterpriseLibrary\\\"\\n\\n    }\\n\\n}\\n\\n```\", \n    \"title\": \"fixes for handling of different return codes from robocopy in win_robocopy module\"\n  }, \n  \"20003\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nmaven_artifact\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\nAdd gradle-like dynamic version resolution mechanism to MavenDownloader in `packaging/language/maven_artifact.py`\\r\\nFor example,  \\r\\n```\\r\\n# Download JUnit 4.+ from Maven Central\\r\\n- maven_artifact:\\r\\n    group_id: junit\\r\\n    artifact_id: junit\\r\\n    version: 4.+\\r\\n    dest: /tmp/junit-4.jar\\r\\n```\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"maven_artifact\", \n    \"component_raw\": \"maven_artifact\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20003\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/language/maven_artifact.py\", \n    \"summary\": \"Add gradle-like dynamic version resolution mechanism to MavenDownloader in `packaging/language/maven_artifact.py`\\n\\nFor example,  \\n\\n```\\n\\n# Download JUnit 4.+ from Maven Central\\n\\n- maven_artifact:\\n\\n    group_id: junit\\n\\n    artifact_id: junit\\n\\n    version: 4.+\\n\\n    dest: /tmp/junit-4.jar\\n\\n```\", \n    \"title\": \"maven_artifact.py - add support for version ranges (dynamic version like 5.+) in maven artifact resolver\"\n  }, \n  \"20004\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel cba66dfedc) last updated 2017/01/07 142927 (GMT +200)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"also don't prune packaging (it is included later) and v2 (it does not exist)\\r\\n\\r\\nFixes: #19769\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nsdist\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel cba66dfedc) last updated 2017/01/07 14:29:27 (GMT +200)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nI think it would be nice to include the docsite and tests in the release tarballs. This would help distribution packagers to provide a better experience to their users. The doscite contains a lot of valuable information and it would be nice to a) have that information available offline as a (additional) package and b) ship a copy that matches the shipped Ansible release. The tests on the other hand would allow packagers to verify their package more easily, as they can run the whole testsuite against the packaged version of ansible.\\r\\n\\r\\nI did a quick test and each of the folders adds about 0.5MB to the release tarball. While 0.5MB is about 20% of the current tarball (and as such not too small), I think even a 3.7MB big tarball has still reasonable value and the added benefit outweighs the size.\", \n    \"component_name\": \"sdist\", \n    \"component_raw\": \"sdist\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20004\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I think it would be nice to include the docsite and tests in the release tarballs. This would help distribution packagers to provide a better experience to their users. The doscite contains a lot of valuable information and it would be nice to a) have that information available offline as a (additional) package and b) ship a copy that matches the shipped Ansible release. The tests on the other hand would allow packagers to verify their package more easily, as they can run the whole testsuite against the packaged version of ansible.\\n\\n\\n\\nI did a quick test and each of the folders adds about 0.5MB to the release tarball. While 0.5MB is about 20% of the current tarball (and as such not too small), I think even a 3.7MB big tarball has still reasonable value and the added benefit outweighs the size.\", \n    \"title\": \"include all docs and tests in the sdist\"\n  }, \n  \"20005\": {\n    \"ansible_version\": \"\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndocsite\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nGet `make webdocs` clean\\r\\n\\r\\n**dev_guide**\\r\\n* Pull changes from `./developing_modules.rst` into `./dev_guide/developing_modules.rst`\\r\\n* Delete `./developing_modules.rst` so it doesn't get any more updates\\r\\n* Any pages that link into here need to reference the dir, e.g.  `:doc:'./dev_guide/developing_modules`\\r\\n* Likewise, references to the root need to be  `:doc:../modules`\\r\\n* `dev_guide/developing.rst` isn'r referenced anyway, and is a subset of `dev_guide/index.rst`, which is used\\r\\n\\r\\n**Formatting**\\r\\n* Ini blocks that contain `:children` seem to break the parser, so don't format at ini\\r\\n* Use `.. code-block:: python` when the default parser fails\\r\\n* Consistent roadmaps\\r\\n\\r\\n**Misc**\\r\\n* Reference playbooks_filters_ipaddd from playbooks_filters\\r\\n\\r\\n### Work Remaining\\r\\n\\r\\n* WARNING: document isn't included in any toctree:\\r\\n  * dev_guide/repomerge.rst\\r\\n  * playbooks_filters_ipaddr.rst\\r\\n  * roadmap/ROADMAP_*\\r\\n\\r\\n* Check log output on Jenkins where we build the docs - Do none production run\\r\\nMany more errors\\r\\n\\r\\n###  Future work/Out of scope\\r\\n\\r\\n  * This is just to get a clean run from `make web`, there are lots of other places where the formatting could be improved, such as by using `.. code-block:: python`\\r\\n\\r\\n<!-- Reviewable:start -->\\r\\n---\\r\\nThis change is\\u2002[<img src=\\\"https://reviewable.io/review_button.svg\\\" height=\\\"34\\\" align=\\\"absmiddle\\\" alt=\\\"Reviewable\\\"/>](https://reviewable.io/reviews/ansible/ansible/20005)\\r\\n<!-- Reviewable:end -->\\r\\n\", \n    \"component_name\": \"docsite\", \n    \"component_raw\": \"docsite\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20005\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Get `make webdocs` clean\\n\\n\\n\\n**dev_guide**\\n\\n* Pull changes from `./developing_modules.rst` into `./dev_guide/developing_modules.rst`\\n\\n* Delete `./developing_modules.rst` so it doesn't get any more updates\\n\\n* Any pages that link into here need to reference the dir, e.g.  `:doc:'./dev_guide/developing_modules`\\n\\n* Likewise, references to the root need to be  `:doc:../modules`\\n\\n* `dev_guide/developing.rst` isn'r referenced anyway, and is a subset of `dev_guide/index.rst`, which is used\\n\\n\\n\\n**Formatting**\\n\\n* Ini blocks that contain `:children` seem to break the parser, so don't format at ini\\n\\n* Use `.. code-block:: python` when the default parser fails\\n\\n* Consistent roadmaps\\n\\n\\n\\n**Misc**\\n\\n* Reference playbooks_filters_ipaddd from playbooks_filters\\n\\n\\n\\n### Work Remaining\\n\\n\\n\\n* WARNING: document isn't included in any toctree:\\n\\n  * dev_guide/repomerge.rst\\n\\n  * playbooks_filters_ipaddr.rst\\n\\n  * roadmap/ROADMAP_*\\n\\n\\n\\n* Check log output on Jenkins where we build the docs - Do none production run\\n\\nMany more errors\\n\\n\\n\\n###  Future work/Out of scope\\n\\n\\n\\n  * This is just to get a clean run from `make web`, there are lots of other places where the formatting could be improved, such as by using `.. code-block:: python`\\n\\n\\n\\n\\n\\n---\\n\\nThis change is[<img src=\\\"https://reviewable.io/review_button.svg\\\" height=\\\"34\\\" align=\\\"absmiddle\\\" alt=\\\"Reviewable\\\"/>](https://reviewable.io/reviews/ansible/ansible/20005)\", \n    \"title\": \"WIP: clean make webdocs\"\n  }, \n  \"20006\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nwinrm connection plugin\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nRHEL7 with python2-winrm-0.2.1-1.el7.noarch\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nEvery task (every connection) spurs the message:\\r\\n```\\r\\n/usr/lib/python2.7/site-packages/urllib3/connectionpool.py:769: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.html\\r\\n```\\r\\nDespite the fact that `ansible_winrm_server_cert_validation: ignore` was set.\\r\\n\\r\\nThis is a problem in the pywinrm codebase.\", \n    \"component_name\": \"winrm connection plugin\", \n    \"component_raw\": \"winrm connection plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20006\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Every task (every connection) spurs the message:\\n\\n```\\n\\n/usr/lib/python2.7/site-packages/urllib3/connectionpool.py:769: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.html\\n\\n```\\n\\nDespite the fact that `ansible_winrm_server_cert_validation: ignore` was set.\\n\\n\\n\\nThis is a problem in the pywinrm codebase.\", \n    \"title\": \"winrm connection displaying InsecureRequestWarning\"\n  }, \n  \"20007\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/james/active/boss/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nauthorized_key core module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/james/active/boss/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n[defaults]\\r\\nnocows=1\\r\\ninventory=ansible_hosts\\r\\nhost_key_checking=False\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nLocal: Ubuntu with Python 3.5.0+ at `/usr/bin/python3.5`\\r\\nRemote: Ubuntu 16.04.1 with Python 3.5.2 at `/usr/bin/python3.5`\\r\\n\\r\\nPython version is specified with:\\r\\n\\r\\n```\\r\\nansible_python_interpreter=/usr/bin/python3.5\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nGiven that user `james` exists, attempt to install keys from https://github.com/jamescooke.keys using `authorized_key` module.\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n\\r\\nSmallest example playbook I could create `test.yml`:\\r\\n\\r\\n```yaml\\r\\n---\\r\\n- hosts: all\\r\\n  vars:\\r\\n    - ansible_ssh_user: root\\r\\n  tasks:\\r\\n  - authorized_key:\\r\\n      user: james\\r\\n      key: https://github.com/jamescooke.keys\\r\\n```\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nTwo keys would be added to `james` user on remote.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nPython crashes.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n(venv) james@codebox:~/active/boss$ ansible-playbook test.yml -vvvv\\r\\nUsing /home/james/active/boss/ansible.cfg as config file\\r\\nLoading callback plugin default of type stdout, v2.0 from /home/james/active/boss/venv/lib/python3.5/site-packages/ansible/plugins/callback/__init__.py\\r\\n\\r\\nPLAYBOOK: test.yml *************************************************************\\r\\n1 plays in test.yml\\r\\n\\r\\nPLAY [all] *********************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nUsing module file /home/james/active/boss/venv/lib/python3.5/site-packages/ansible/modules/core/system/setup.py\\r\\n<104.131.17.109> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<104.131.17.109> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/home/james/.ansible/cp/ansible-ssh-%h-%p-%r 104.131.17.109 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1483808135.2190897-90788529272429 `\\\" && echo ansible-tmp-1483808135.2190897-90788529272429=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1483808135.2190897-90788529272429 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<104.131.17.109> PUT /tmp/tmpqi9xuich TO /root/.ansible/tmp/ansible-tmp-1483808135.2190897-90788529272429/setup.py\\r\\n<104.131.17.109> SSH: EXEC sftp -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/home/james/.ansible/cp/ansible-ssh-%h-%p-%r '[104.131.17.109]'\\r\\n<104.131.17.109> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<104.131.17.109> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/home/james/.ansible/cp/ansible-ssh-%h-%p-%r 104.131.17.109 '/bin/sh -c '\\\"'\\\"'chmod u+x /root/.ansible/tmp/ansible-tmp-1483808135.2190897-90788529272429/ /root/.ansible/tmp/ansible-tmp-1483808135.2190897-90788529272429/setup.py && sleep 0'\\\"'\\\"''\\r\\n<104.131.17.109> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<104.131.17.109> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/home/james/.ansible/cp/ansible-ssh-%h-%p-%r -tt 104.131.17.109 '/bin/sh -c '\\\"'\\\"'/usr/bin/python3.5 /root/.ansible/tmp/ansible-tmp-1483808135.2190897-90788529272429/setup.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1483808135.2190897-90788529272429/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\nok: [104.131.17.109]\\r\\n\\r\\nTASK [authorized_key] **********************************************************\\r\\ntask path: /home/james/active/boss/test.yml:6\\r\\nUsing module file /home/james/active/boss/venv/lib/python3.5/site-packages/ansible/modules/core/system/authorized_key.py\\r\\n<104.131.17.109> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<104.131.17.109> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/home/james/.ansible/cp/ansible-ssh-%h-%p-%r 104.131.17.109 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1483808139.0550506-81997757222281 `\\\" && echo ansible-tmp-1483808139.0550506-81997757222281=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1483808139.0550506-81997757222281 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<104.131.17.109> PUT /tmp/tmpinuhh2o4 TO /root/.ansible/tmp/ansible-tmp-1483808139.0550506-81997757222281/authorized_key.py\\r\\n<104.131.17.109> SSH: EXEC sftp -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/home/james/.ansible/cp/ansible-ssh-%h-%p-%r '[104.131.17.109]'\\r\\n<104.131.17.109> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<104.131.17.109> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/home/james/.ansible/cp/ansible-ssh-%h-%p-%r 104.131.17.109 '/bin/sh -c '\\\"'\\\"'chmod u+x /root/.ansible/tmp/ansible-tmp-1483808139.0550506-81997757222281/ /root/.ansible/tmp/ansible-tmp-1483808139.0550506-81997757222281/authorized_key.py && sleep 0'\\\"'\\\"''\\r\\n<104.131.17.109> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<104.131.17.109> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/home/james/.ansible/cp/ansible-ssh-%h-%p-%r -tt 104.131.17.109 '/bin/sh -c '\\\"'\\\"'/usr/bin/python3.5 /root/.ansible/tmp/ansible-tmp-1483808139.0550506-81997757222281/authorized_key.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1483808139.0550506-81997757222281/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\nfatal: [104.131.17.109]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"authorized_key\\\"\\r\\n    },\\r\\n    \\\"module_stderr\\\": \\\"OpenSSH_6.9p1 Ubuntu-2ubuntu0.2, OpenSSL 1.0.2d 9 Jul 2015\\\\r\\\\ndebug1: Reading configuration data /home/james/.ssh/config\\\\r\\\\ndebug1: Reading configuration data /etc/ssh/ssh_config\\\\r\\\\ndebug1: /etc/ssh/ssh_config line 19: Applying options for *\\\\r\\\\ndebug1: auto-mux: Trying existing master\\\\r\\\\ndebug2: fd 3 setting O_NONBLOCK\\\\r\\\\ndebug2: mux_client_hello_exchange: master version 4\\\\r\\\\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\\\\r\\\\ndebug3: mux_client_request_session: entering\\\\r\\\\ndebug3: mux_client_request_alive: entering\\\\r\\\\ndebug3: mux_client_request_alive: done pid = 22341\\\\r\\\\ndebug3: mux_client_request_session: session request sent\\\\r\\\\ndebug1: mux_client_request_session: master session id: 2\\\\r\\\\ndebug3: mux_client_read_packet: read header failed: Broken pipe\\\\r\\\\ndebug2: Received exit status from master 0\\\\r\\\\nShared connection to 104.131.17.109 closed.\\\\r\\\\n\\\",\\r\\n    \\\"module_stdout\\\": \\\"Traceback (most recent call last):\\\\r\\\\n  File \\\\\\\"/tmp/ansible_grkuvdsh/ansible_module_authorized_key.py\\\\\\\", line 527, in <module>\\\\r\\\\n    main()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_grkuvdsh/ansible_module_authorized_key.py\\\\\\\", line 523, in main\\\\r\\\\n    results = enforce_state(module, module.params)\\\\r\\\\n  File \\\\\\\"/tmp/ansible_grkuvdsh/ansible_module_authorized_key.py\\\\\\\", line 433, in enforce_state\\\\r\\\\n    key = [s for s in key.splitlines() if s and not s.startswith('#')]\\\\r\\\\n  File \\\\\\\"/tmp/ansible_grkuvdsh/ansible_module_authorized_key.py\\\\\\\", line 433, in <listcomp>\\\\r\\\\n    key = [s for s in key.splitlines() if s and not s.startswith('#')]\\\\r\\\\nTypeError: startswith first arg must be bytes or a tuple of bytes, not str\\\\r\\\\n\\\",\\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n        to retry, use: --limit @/home/james/active/boss/test.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\n104.131.17.109             : ok=1    changed=0    unreachable=0    failed=1\\r\\n```\\r\\nFails with:\\r\\n* current master: https://github.com/ansible/ansible/tree/cba66dfedc4b34c622fb61209dbe355d8bcc8503\\r\\n* 2.2.0.0 from pip: https://pypi.python.org/pypi/ansible/2.2.0.0\", \n    \"component_name\": \"authorized_key core\", \n    \"component_raw\": \"authorized_key core module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20007\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"python3\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/authorized_key.py\", \n    \"summary\": \"\", \n    \"title\": \"authorized_key: Crash when loading from Github by URL using Python 3.5\"\n  }, \n  \"20008\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nVarious\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\ndevel\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nCode blocks in examples should be yaml so that syntax highlighting works correctly.\", \n    \"component_name\": \"various\", \n    \"component_raw\": \"Various\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20008\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"module\", \n      \"needs_revision\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_unzip.py\", \n    \"summary\": \"Code blocks in examples should be yaml so that syntax highlighting works correctly.\", \n    \"title\": \"Fix code-blocks to use correct syntax highlighting\"\n  }, \n  \"20009\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel cba66dfedc) last updated 2017/01/07 230300 (GMT +000)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_ami_copy\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel cba66dfedc) last updated 2017/01/07 23:03:00 (GMT +000)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nec2_ami_copy  currently uses boto and due to the AWS protocol version being defined as an older version the `Encrypted` parameter is not recognized by the AWS API resulting in faliure. This PR re-implements ec2_ami_copy using boto3 resolving the issue of non-functional encrypted volume support.\\r\\n\\r\\nThis problem was discovered while implementing https://github.com/trailofbits/algo/issues/133 , additional details can be found there. \\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\nBefore:\\r\\n```\\r\\nTASK [copy_test : Copy to an encrypted image] **********************************************************************************************\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"UnknownParameter: The parameter Encrypted is not recognized\\\"}\\r\\n        to retry, use: --limit @/home/ubuntu/src/ec2_ami_copy_test/test.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************************************************************************\\r\\nlocalhost                  : ok=2    changed=0    unreachable=0    failed=1   \\r\\n```\\r\\nAfter:\\r\\n```\\r\\nTASK [copy_test : Copy to an encrypted image] **********************************************************************************************\\r\\nchanged: [localhost]\\r\\n\\r\\nPLAY RECAP *********************************************************************************************************************************\\r\\nlocalhost                  : ok=3    changed=1    unreachable=0    failed=0   \\r\\n```\", \n    \"component_name\": \"ec2_ami_copy\", \n    \"component_raw\": \"ec2_ami_copy\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20009\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"needs_revision\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_ami_copy.py\", \n    \"summary\": \"ec2_ami_copy  currently uses boto and due to the AWS protocol version being defined as an older version the `Encrypted` parameter is not recognized by the AWS API resulting in faliure. This PR re-implements ec2_ami_copy using boto3 resolving the issue of non-functional encrypted volume support.\\n\\n\\n\\nThis problem was discovered while implementing https://github.com/trailofbits/algo/issues/133 , additional details can be found there. \\n\\n\\n\\n\\n\\n\\n\\n\\n\\nBefore:\\n\\n```\\n\\nTASK [copy_test : Copy to an encrypted image] **********************************************************************************************\\n\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"UnknownParameter: The parameter Encrypted is not recognized\\\"}\\n\\n        to retry, use: --limit @/home/ubuntu/src/ec2_ami_copy_test/test.retry\\n\\n\\n\\nPLAY RECAP *********************************************************************************************************************************\\n\\nlocalhost                  : ok=2    changed=0    unreachable=0    failed=1   \\n\\n```\\n\\nAfter:\\n\\n```\\n\\nTASK [copy_test : Copy to an encrypted image] **********************************************************************************************\\n\\nchanged: [localhost]\\n\\n\\n\\nPLAY RECAP *********************************************************************************************************************************\\n\\nlocalhost                  : ok=3    changed=1    unreachable=0    failed=0   \\n\\n```\", \n    \"title\": \"Update ec2_ami_copy to boto3, fix encrypted support\"\n  }, \n  \"20010\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\nDocs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n`jenkins_plugin`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nIn reaction to the issue #20000, this PR is just making sure that the user is informed that the plugin dependencies are installed only if no `version` option is defined.\", \n    \"component_name\": \"jenkins_plugin\", \n    \"component_raw\": \"`jenkins_plugin`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20010\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"docs\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/web_infrastructure/jenkins_plugin.py\", \n    \"summary\": \"In reaction to the issue #20000, this PR is just making sure that the user is informed that the plugin dependencies are installed only if no `version` option is defined.\", \n    \"title\": \"Update option desc of yum_repository module\"\n  }, \n  \"20011\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nwait_for_connection\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nThis action plugin allows to check when a system is back online and usable by Ansible.\\r\\n\\r\\nAs an example, when doing a SysPrep and running Enable-WinRM.ps1, it takes between 10 to 20 seconds between the WinRM TCP port to open, and it actually being able to server Ansible requests. This time is variable and depends on the boot process.\\r\\n\\r\\nCurrent implementation is specific for Windows (WinRM) only, this will be fixed shortly.\\r\\n\\r\\nThis fixes #19998\", \n    \"component_name\": \"wait_for_connection\", \n    \"component_raw\": \"wait_for_connection\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20011\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/action\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/wait_for_connection.py\", \n    \"summary\": \"This action plugin allows to check when a system is back online and usable by Ansible.\\n\\n\\n\\nAs an example, when doing a SysPrep and running Enable-WinRM.ps1, it takes between 10 to 20 seconds between the WinRM TCP port to open, and it actually being able to server Ansible requests. This time is variable and depends on the boot process.\\n\\n\\n\\nCurrent implementation is specific for Windows (WinRM) only, this will be fixed shortly.\\n\\n\\n\\nThis fixes #19998\", \n    \"title\": \"[WIP] wait_for_connection: Wait for system to be reachable\"\n  }, \n  \"20012\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n`ansible-galaxy`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\nNone.\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nPython 3.5.2, Ubuntu 16.04.\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nInstalling Ansible with `pip install ansible` on Ubuntu 16.04, then trying to create roles with `ansible-galaxy init --force rolename` fails with an encoding error.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```\\r\\n$ ansible-galaxy init --force example\\r\\nERROR! Could not process data from the API server (https://galaxy.ansible.com/api/): the JSON object must be str, not 'bytes'\\r\\n```\\r\\n\\r\\nThe issue is [here](https://github.com/ansible/ansible/blob/devel/lib/ansible/galaxy/api.py#L122).\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nI expected it to successfully create a role.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\n$ ansible-galaxy init -vvvvv --force example\\r\\nNo config file found; using defaults\\r\\nOpened /home/naftuli/.ansible_galaxy\\r\\nInitial connection to galaxy_server: https://galaxy.ansible.com\\r\\nERROR! Could not process data from the API server (https://galaxy.ansible.com/api/): the JSON object must be str, not 'bytes'\\r\\n```\\r\\n\\r\\nThis is a simple Python 3 issue.\", \n    \"component_name\": \"ansible-galaxy\", \n    \"component_raw\": \"`ansible-galaxy`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20012\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"python3\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Installing Ansible with `pip install ansible` on Ubuntu 16.04, then trying to create roles with `ansible-galaxy init --force rolename` fails with an encoding error.\", \n    \"title\": \"Ansible Galaxy Init Fails in Python 3\"\n  }, \n  \"20016\": {\n    \"ansible_version\": \"ansible 2.3.0 (ini-file-newline fcce5a1be5) last updated 2017/01/08 093117 (GMT -400)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nModule `ini_file`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (ini-file-newline fcce5a1be5) last updated 2017/01/08 09:31:17 (GMT -400)\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nFixes #19883.\\r\\n\\r\\n`readlines` returns a list of strings. The last one may or may not contain a newline, depending on whether the file has an ending newline.\\r\\n\\r\\nThe target ini file contents are created by joining all the lines. When the original file has no ending newline and we've added a line at the end, the lines that will be joined are `[..., \\\"last file line without newline\\\", \\\"option = value\\\", \\\"[]\\\"]`. \\r\\n\\r\\nThe PR modifies the module to add a newline when adding an option at end of a section.\\r\\n\\r\\n\\r\\n```.sh\\r\\n% printf \\\"[main]\\\\nOPTION=value\\\" | tee /tmp/some_file.ini                                                                                                                                                                                                                                                                                                           \\r\\n[main]\\r\\nOPTION=value% ansible all -i \\\"localhost,\\\" -c local -m ini_file -a \\\"dest=/tmp/some_file.ini section=main option=OPTION2 value=TEST\\\"  localhost | SUCCESS => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"dest\\\": \\\"/tmp/some_file.ini\\\",\\r\\n    \\\"gid\\\": 0,\\r\\n    \\\"group\\\": \\\"wheel\\\",\\r\\n    \\\"mode\\\": \\\"0644\\\",\\r\\n    \\\"msg\\\": \\\"option added\\\",\\r\\n    \\\"owner\\\": \\\"bob\\\",\\r\\n    \\\"size\\\": 35,\\r\\n    \\\"state\\\": \\\"file\\\",\\r\\n    \\\"uid\\\": 501\\r\\n}\\r\\n\\r\\nbefore:\\r\\n% cat /tmp/some_file.ini\\r\\n[main]\\r\\nOPTION=valueOPTION2 = TEST\\r\\n%\\r\\n\\r\\nafter:\\r\\n% cat /tmp/some_file.ini\\r\\n[main]\\r\\nOPTION=value\\r\\nOPTION2 = TEST\\r\\n%\\r\\n```\\r\\n\", \n    \"component_name\": \"ini_file\", \n    \"component_raw\": \"Module `ini_file`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20016\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"needs_revision\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/ini_file.py\", \n    \"summary\": \"Fixes #19883.\\n\\n\\n\\n`readlines` returns a list of strings. The last one may or may not contain a newline, depending on whether the file has an ending newline.\\n\\n\\n\\nThe target ini file contents are created by joining all the lines. When the original file has no ending newline and we've added a line at the end, the lines that will be joined are `[..., \\\"last file line without newline\\\", \\\"option = value\\\", \\\"[]\\\"]`. \\n\\n\\n\\nThe PR modifies the module to add a newline when adding an option at end of a section.\\n\\n\\n\\n\\n\\n```.sh\\n\\n% printf \\\"[main]\\\\nOPTION=value\\\" | tee /tmp/some_file.ini                                                                                                                                                                                                                                                                                                           \\n\\n[main]\\n\\nOPTION=value% ansible all -i \\\"localhost,\\\" -c local -m ini_file -a \\\"dest=/tmp/some_file.ini section=main option=OPTION2 value=TEST\\\"  localhost | SUCCESS => {\\n\\n    \\\"changed\\\": true,\\n\\n    \\\"dest\\\": \\\"/tmp/some_file.ini\\\",\\n\\n    \\\"gid\\\": 0,\\n\\n    \\\"group\\\": \\\"wheel\\\",\\n\\n    \\\"mode\\\": \\\"0644\\\",\\n\\n    \\\"msg\\\": \\\"option added\\\",\\n\\n    \\\"owner\\\": \\\"bob\\\",\\n\\n    \\\"size\\\": 35,\\n\\n    \\\"state\\\": \\\"file\\\",\\n\\n    \\\"uid\\\": 501\\n\\n}\\n\\n\\n\\nbefore:\\n\\n% cat /tmp/some_file.ini\\n\\n[main]\\n\\nOPTION=valueOPTION2 = TEST\\n\\n%\\n\\n\\n\\nafter:\\n\\n% cat /tmp/some_file.ini\\n\\n[main]\\n\\nOPTION=value\\n\\nOPTION2 = TEST\\n\\n%\\n\\n```\", \n    \"title\": \"Fixes #19883: Handle INI files without ending newline\"\n  }, \n  \"20017\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nsetup\\r\\n\", \n    \"component_name\": \"setup\", \n    \"component_raw\": \"setup\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20017\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"feature\", \n      \"module_util\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": null, \n    \"title\": \"Add a fact about apparmor, to see if that's loaded or not\"\n  }, \n  \"20018\": {\n    \"ansible_version\": \"2.2.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.2.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n- Add capability to mark an existing VM as template\\r\\n- Add capability to rename an existing VM\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20018\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"feature\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"- Add capability to mark an existing VM as template\\n\\n- Add capability to rename an existing VM\", \n    \"title\": \"vmware_guest: New features\"\n  }, \n  \"20020\": {\n    \"ansible_version\": \"ansible 2.3.0 (winrm-test 68b8851e65) last updated 2017/01/08 115935 (GMT -700)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\nFeature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nConfigureRemotingForAnsible.ps1 \\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 (winrm-test 68b8851e65) last updated 2017/01/08 11:59:35 (GMT -700)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nTest commit to verify winrm config is working on all Windows versions. Do not merge.\", \n    \"component_name\": \"configureremotingforansible.ps1\", \n    \"component_raw\": \"ConfigureRemotingForAnsible.ps1\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20020\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Test commit to verify winrm config is working on all Windows versions. Do not merge.\", \n    \"title\": \"Test winrm config. Do not merge.\"\n  }, \n  \"20021\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/jayen/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\naws credentials\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/jayen/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n```\\r\\n[ssh_connection]\\r\\ncontrol_path = /tmp/control_%%l_%%h_%%p_%%r\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\ndebian jessie-backports i386 managing aws\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nI can't figure out how to override ~/.aws/credentials\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n1. use aws cli to setup credentials for the aws account you normally administer\\r\\n2. setup a playbook to use another account without adding the key/secret to each and every task\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n\\r\\n`AWS_ACCESS_KEY_ID=AKIA... AWS_SECRET_ACCESS_KEY=... ansible-playbook --inventory inventory --ask-vault-pass -vvv ec2.yaml`\\r\\n\\r\\n> roles/puppetmaster/defaults/vault.yaml\\r\\n\\r\\n```\\r\\n$ANSIBLE_VAULT;1.1;AES256\\r\\na bunch of digits\\r\\n```\\r\\n\\r\\n```yaml\\r\\n---\\r\\nec2_access_key: \\\"AKIA...\\\"\\r\\nec2_secret_key: \\\"...\\\"\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\ni expect the environment variables to take precedence over the vault file and ~/.aws/credentials.  i see the boto page explicitly says they won't.\\r\\n\\r\\ni expect the vault file (or something else in the current directory) to take precedence over ~/.aws/credentials .  if there is a way to do this, then https://docs.ansible.com/ansible/guide_aws.html#authentication doesn't help me figure it out.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n~/.aws/credentials is used and environment variable and vault file are ignored.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nUsing /home/jayen/.ansible.cfg as config file\\r\\nVault password: \\r\\n\\r\\nPLAYBOOK: ec2.yaml *************************************************************\\r\\n1 plays in ec2.yaml\\r\\n\\r\\nPLAY [puppetmaster] ************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/core/system/setup.py\\r\\n<localhost> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<localhost> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/tmp/control_%l_%h_%p_%r localhost '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1483919384.0-68099895594225 `\\\" && echo ansible-tmp-1483919384.0-68099895594225=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1483919384.0-68099895594225 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<localhost> PUT /tmp/tmpLaoMGH TO /home/jayen/.ansible/tmp/ansible-tmp-1483919384.0-68099895594225/setup.py\\r\\n<localhost> SSH: EXEC sftp -b - -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/tmp/control_%l_%h_%p_%r '[localhost]'\\r\\n<localhost> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<localhost> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/tmp/control_%l_%h_%p_%r localhost '/bin/sh -c '\\\"'\\\"'chmod u+x /home/jayen/.ansible/tmp/ansible-tmp-1483919384.0-68099895594225/ /home/jayen/.ansible/tmp/ansible-tmp-1483919384.0-68099895594225/setup.py && sleep 0'\\\"'\\\"''\\r\\n<localhost> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<localhost> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/tmp/control_%l_%h_%p_%r -tt localhost '/bin/sh -c '\\\"'\\\"'/usr/bin/python /home/jayen/.ansible/tmp/ansible-tmp-1483919384.0-68099895594225/setup.py; rm -rf \\\"/home/jayen/.ansible/tmp/ansible-tmp-1483919384.0-68099895594225/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\nok: [localhost]\\r\\n\\r\\nTASK [puppetmaster : ec2_key jayen@eeyore] *************************************\\r\\ntask path: /home/jayen/docs/work/b2btravel/insurance_australia/sysadmin/ansible/roles/puppetmaster/tasks/main.yaml:1\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/core/cloud/amazon/ec2_key.py\\r\\n<localhost> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<localhost> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/tmp/control_%l_%h_%p_%r localhost '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1483919386.24-19032198763250 `\\\" && echo ansible-tmp-1483919386.24-19032198763250=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1483919386.24-19032198763250 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<localhost> PUT /tmp/tmpcsZSDV TO /home/jayen/.ansible/tmp/ansible-tmp-1483919386.24-19032198763250/ec2_key.py\\r\\n<localhost> SSH: EXEC sftp -b - -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/tmp/control_%l_%h_%p_%r '[localhost]'\\r\\n<localhost> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<localhost> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/tmp/control_%l_%h_%p_%r localhost '/bin/sh -c '\\\"'\\\"'chmod u+x /home/jayen/.ansible/tmp/ansible-tmp-1483919386.24-19032198763250/ /home/jayen/.ansible/tmp/ansible-tmp-1483919386.24-19032198763250/ec2_key.py && sleep 0'\\\"'\\\"''\\r\\n<localhost> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<localhost> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/tmp/control_%l_%h_%p_%r -tt localhost '/bin/sh -c '\\\"'\\\"'/usr/bin/python /home/jayen/.ansible/tmp/ansible-tmp-1483919386.24-19032198763250/ec2_key.py; rm -rf \\\"/home/jayen/.ansible/tmp/ansible-tmp-1483919386.24-19032198763250/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\nok: [localhost] => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"aws_access_key\\\": null, \\r\\n            \\\"aws_secret_key\\\": null, \\r\\n            \\\"ec2_url\\\": null, \\r\\n            \\\"key_material\\\": \\\"ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAsGfoKYx1GE1L1xkEsfRjMNXGgdaejJrE+pCJr8JQCP/m7sUKxmrtcn/OB9K8YB07zuc1G61mCGa7nLbk1ohVySGOTiaG3cemngZffyvf6U60esCcjW0uKhvzbk7PzUpSXFlO7IfA9ATuVN7DhgqbY4ccQmqdXFPaKD46jC1rYLjdrHSWDAhUrPd8/6l+PSyChskoUernJHxCOU6/Id05UfYFUWQhVfLXhwoeLSse6z3ngZ4O2Fd1zmtj8Cf0G/zLE6jzujbiWcK3TZYpVoR9TmVBvdYBT9DH9b1TjRSNHs2fQyXE7DlSIFY9T869x29ks7oUp5TlAqIx4TKTv8EqnQ== jayen@eeyore\\\", \\r\\n            \\\"name\\\": \\\"jayen@eeyore\\\", \\r\\n            \\\"profile\\\": null, \\r\\n            \\\"region\\\": \\\"ap-southeast-2\\\", \\r\\n            \\\"security_token\\\": null, \\r\\n            \\\"state\\\": \\\"present\\\", \\r\\n            \\\"validate_certs\\\": true, \\r\\n            \\\"wait\\\": false, \\r\\n            \\\"wait_timeout\\\": \\\"300\\\"\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"ec2_key\\\"\\r\\n    }, \\r\\n    \\\"key\\\": {\\r\\n        \\\"fingerprint\\\": \\\"af:ae:e2:aa:ea:e5:8c:f7:40:b5:ef:e8:aa:24:75:e4\\\", \\r\\n        \\\"name\\\": \\\"jayen@eeyore\\\"\\r\\n    }\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=2    changed=0    unreachable=0    failed=0   \\r\\n```\\r\\n\", \n    \"component_name\": \"aws credentials\", \n    \"component_raw\": \"aws credentials\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20021\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"cloud\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I can't figure out how to override ~/.aws/credentials\", \n    \"title\": \"aws credentials documentation\"\n  }, \n  \"20024\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nThe code has changed since then but the problem still applies to master.\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n- lib/ansible/module_utils/urls.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\nThe code has changed since then but the problem still applies to master.\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nCustom ubuntu 16.04 image against custom 16.04 images.\\r\\n\\r\\n##### SUMMARY\\r\\nThere are a whole bunch of reasons that SSL operations can fail. The one that bit me most recently when i dug down was \\\"getrandom() initialization failed.\\\" however the message I got from ansible was: \\\"Failed to validate the SSL certificate for bootstrap.pypa.io:443...\\\".\\r\\n\\r\\nOnce i had the getrandom exception message it was easy enough to tell what the problem was, however I spent a while down the wrong path from the error message. I'd like to propose we include the exception message from OpenSSL in the error message ansible returns.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nBoot a new VM and run ```get_url``` against a https URL before the kernel has had time to generate entropy. \\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nAn appropriate error message showing the reason SSL failed. The existing message (as the most likely problem) is useful, but it would be good to include the actual problem as well.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nFAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failed to validate the SSL certificate for bootstrap.pypa.io:443. Make sure your managed systems have a valid CA certificate installed. You can use validate_certs=False if you do not need to confirm the servers identity but this is unsafe and not recommended. Paths checked for this platform: /etc/ssl/certs, /etc/pki/ca-trust/extracted/pem, /etc/pki/tls/certs, /usr/share/ca-certificates/cacert.org, /etc/ansible\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"lib/ansible/module_utils/urls.py\", \n    \"component_raw\": \"- lib/ansible/module_utils/urls.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20024\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"c:module_utils/urls\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"There are a whole bunch of reasons that SSL operations can fail. The one that bit me most recently when i dug down was \\\"getrandom() initialization failed.\\\" however the message I got from ansible was: \\\"Failed to validate the SSL certificate for bootstrap.pypa.io:443...\\\".\\n\\n\\n\\nOnce i had the getrandom exception message it was easy enough to tell what the problem was, however I spent a while down the wrong path from the error message. I'd like to propose we include the exception message from OpenSSL in the error message ansible returns.\", \n    \"title\": \"Need more information on SSL exception. \"\n  }, \n  \"20027\": {\n    \"ansible_version\": \"v2.2\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n - ~~Bug Report~~\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nwin_copy\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.2\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nMaster: RHEL7\\r\\nNode: Windows 2012\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nIt appears that `win_copy` copies the whole file (in my case files of 3GB) every time, even if the file is already present on the remote target. For Unix we make a checksum and compare the checksum prior to copying.\", \n    \"component_name\": \"win_copy\", \n    \"component_raw\": \"win_copy\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20027\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\", \n      \"module\", \n      \"needs_info\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_copy.ps1\", \n    \"summary\": \"It appears that `win_copy` copies the whole file (in my case files of 3GB) every time, even if the file is already present on the remote target. For Unix we make a checksum and compare the checksum prior to copying.\", \n    \"title\": \"win_copy: Copies whole file every time (inefficient)\"\n  }, \n  \"20028\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nService core module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n--> Linux 4.8.15-200.fc24.x86_64\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nService core module fails to stop custom services beginning with \\\"not\\\" because he means it's not running\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n--> Rename any services on your server in notice\\r\\nthen service notice status => service is running\\r\\nany state=stopped in task will not stop the service due https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/system/service.py#L628\\r\\nHe match not but this is the string of the service not from the service status state\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- name: Stop service\\r\\n  hosts: all\\r\\n  user: root\\r\\n  serial: 1\\r\\n  tasks:\\r\\n  - name: Stop service on {{ ansible_fqdn }}\\r\\n  service: name={{ item }} state=stopped\\r\\n  when: service_status\\r\\n  register: service_stopped\\r\\n  with_items: \\\"{{ service_name }}\\\"\\r\\n  notify: irc_restart\\r\\n  ignore_errors: yes\\r\\n  - debug: var=service_stopped\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nThe playbook need to have 1 state changed : the service from running to stopped\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nThe \\\"notice\\\" service is still running after the plays because ansible see him like not running\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [stop_service : Stop service on taygeta] *************\\r\\nRunning service\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/core/system/service.py\\r\\n<taygeta> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<taygeta> SSH: ansible.cfg set ssh_args: (-o)(ForwardAgent=yes)\\r\\n<taygeta> SSH: ANSIBLE_HOST_KEY_CHECKING/host_key_checking disabled: (-o)(StrictHostKeyChecking=no)\\r\\n<taygeta> SSH: ansible_password/ansible_ssh_pass not set: (-o)(KbdInteractiveAuthentication=no)(-o)(PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey)(-o)(PasswordAuthentication=no)\\r\\n<taygeta> SSH: ANSIBLE_REMOTE_USER/remote_user/ansible_user/user/-u set: (-o)(User=root)\\r\\n<taygeta> SSH: ANSIBLE_TIMEOUT/timeout set: (-o)(ConnectTimeout=10)\\r\\n<taygeta> SSH: PlayContext set ssh_common_args: ()\\r\\n<taygeta> SSH: PlayContext set ssh_extra_args: ()\\r\\n<taygeta> SSH: EXEC ssh -vvv -o ForwardAgent=yes -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 test '/bin/sh -c '\\\"'\\\"'/usr/bin/python && sleep 0'\\\"'\\\"''\\r\\nok: [taygeta] => (item=test_notice) => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"arguments\\\": \\\"\\\", \\r\\n            \\\"enabled\\\": null, \\r\\n            \\\"name\\\": \\\"test_notice\\\", \\r\\n            \\\"pattern\\\": null, \\r\\n            \\\"runlevel\\\": \\\"default\\\", \\r\\n            \\\"sleep\\\": null, \\r\\n            \\\"state\\\": \\\"stopped\\\"\\r\\n        }\\r\\n    }, \\r\\n    \\\"item\\\": \\\"test_notice-\\\", \\r\\n    \\\"name\\\": \\\"test_notice\\\", \\r\\n    \\\"state\\\": \\\"stopped\\\"\\r\\n}\\r\\ntaygeta      : ok=1    changed=0    unreachable=0    failed=0 \\r\\n```\\r\\n##### POSSIBLE PATCH\\r\\n\\r\\nIn https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/system/service.py#L628 Add :\\r\\n```\\r\\n                elif \\\"not run\\\" in cleanout:\\r\\n                    self.running = False\\r\\n                elif not \\\"not run\\\" in cleanout:\\r\\n                    self.running = True\\r\\n                elif \\\"not start\\\" in cleanout:\\r\\n                    self.running = True\\r\\n```\\r\\nor\\r\\n```\\r\\n--- a/lib/ansible/modules/system/service.py\\r\\n+++ b/lib/ansible/modules/system/service.py\\r\\n@@ -625,11 +625,11 @@ class LinuxService(Service):\\r\\n             cleanout = status_stdout.lower().replace(self.name.lower(), '')\\r\\n             if \\\"stop\\\" in cleanout:\\r\\n                 self.running = False\\r\\n-            elif \\\"run\\\" in cleanout and \\\"not\\\" in cleanout:\\r\\n+            elif \\\"run\\\" in cleanout and \\\" not \\\" in cleanout:\\r\\n                 self.running = False\\r\\n-            elif \\\"run\\\" in cleanout and \\\"not\\\" not in cleanout:\\r\\n+            elif \\\"run\\\" in cleanout and \\\" not \\\" not in cleanout:\\r\\n                 self.running = True\\r\\n-            elif \\\"start\\\" in cleanout and \\\"not\\\" not in cleanout:\\r\\n+            elif \\\"start\\\" in cleanout and \\\" not \\\" not in cleanout:\\r\\n                 self.running = True\\r\\n```\\r\\n\", \n    \"component_name\": \"service core\", \n    \"component_raw\": \"Service core module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20028\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/service.py\", \n    \"summary\": \"Service core module fails to stop custom services beginning with \\\"not\\\" because he means it's not running\", \n    \"title\": \"Core service module fail to stop services beginning with \\\"not, like notice service\\\"\"\n  }, \n  \"20029\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel e87d6d8a70) last updated 2017/01/09 133408 (GMT +300)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n- Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\ntox.ini\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 (devel e87d6d8a70) last updated 2017/01/09 13:34:08 (GMT +300)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThere's a typo in `tox.ini` that makes `tox` without `-e` try to run `py26`, `py27`, `py3{5` and `6)` \\\"environments\\\":\\r\\n\\r\\n```\\r\\n$ tox -l\\r\\npy26\\r\\npy27\\r\\npy3{5\\r\\n6)\\r\\n```\\r\\n\\r\\n```\\r\\n$ tox\\r\\n...\\r\\npy3{5 inst-nodeps: /home/mg/src/ansible/.tox/dist/ansible-2.3.0.zip\\r\\npy3{5 installed: ansible==2.3.0,boto3==1.4.3,botocore==1.4.93,cffi==1.9.1,coverage==4.3.1,coveralls==1.1,cryptography==1.7.1,docopt==0.6.2,docutils==0.13.1,enum34==1.1.6,futures==3.0.5,idna==2.2,ipaddress==1.0.17,Jinja2==2.9.3,jmespath==0.9.0,linecache2==1.0.0,MarkupSafe==0.23,mock==1.0.1,nose==1.3.7,paramiko==2.1.1,passlib==1.7.0,pyasn1==0.1.9,pycparser==2.17,pycrypto==2.6.1,python-dateutil==2.6.0,python-memcached==1.58,python-systemd==0.0.9,PyYAML==3.12,redis==2.10.5,requests==2.12.4,s3transfer==0.1.10,six==1.10.0,traceback2==1.4.0,unittest2==1.1.0\\r\\npy3{5 runtests: PYTHONHASHSEED='3146586047'\\r\\npy3{5 runtests: commands[0] | python --version\\r\\nPython 2.7.12\\r\\npy3{5 runtests: commands[1] | make tests\\r\\n...\\r\\n6) inst-nodeps: /home/mg/src/ansible/.tox/dist/ansible-2.3.0.zip\\r\\n6) installed: ansible==2.3.0,boto3==1.4.3,botocore==1.4.93,cffi==1.9.1,coverage==4.3.1,coveralls==1.1,cryptography==1.7.1,docopt==0.6.2,docutils==0.13.1,enum34==1.1.6,futures==3.0.5,idna==2.2,ipaddress==1.0.17,Jinja2==2.9.3,jmespath==0.9.0,linecache2==1.0.0,MarkupSafe==0.23,mock==1.0.1,nose==1.3.7,paramiko==2.1.1,passlib==1.7.0,pyasn1==0.1.9,pycparser==2.17,pycrypto==2.6.1,python-dateutil==2.6.0,python-memcached==1.58,python-systemd==0.0.9,PyYAML==3.12,redis==2.10.5,requests==2.12.4,s3transfer==0.1.10,six==1.10.0,traceback2==1.4.0,unittest2==1.1.0\\r\\n6) runtests: PYTHONHASHSEED='3146586047'\\r\\n6) runtests: commands[0] | python --version\\r\\nPython 2.7.12\\r\\n6) runtests: commands[1] | make tests\\r\\n...\\r\\n____________________________________ summary _____________________________________\\r\\nERROR:   py26: InterpreterNotFound: python2.6\\r\\n  py27: commands succeeded\\r\\n  py3{5: commands succeeded\\r\\nERROR:   6): commands failed\\r\\n```\\r\\n\", \n    \"component_name\": \"tox.ini\", \n    \"component_raw\": \"tox.ini\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20029\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"python3\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"There's a typo in `tox.ini` that makes `tox` without `-e` try to run `py26`, `py27`, `py3{5` and `6)` \\\"\", \n    \"title\": \"Fix envlist in tox.ini\"\n  }, \n  \"20030\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel e87d6d8a70) last updated 2017/01/09 133408 (GMT +300)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n- Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nunit test suite\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 (devel e87d6d8a70) last updated 2017/01/09 13:34:08 (GMT +300)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\ntox -e py36 failed with\\r\\n\\r\\n    ======================================================================\\r\\n    ERROR: test_action_base__execute_module (units.plugins.action.test_action.TestActionBase)\\r\\n    ----------------------------------------------------------------------\\r\\n    Traceback (most recent call last):\\r\\n      File \\\"/home/mg/src/ansible/test/units/plugins/action/test_action.py\\\", line 507, in test_action_base__execute_module\\r\\n        self.assertEqual(action_base._execute_module(), dict(_ansible_parsed=True, rc=0, stdout=\\\"ok\\\", stdout_lines=['ok']))\\r\\n      File \\\"/home/mg/src/ansible/lib/ansible/plugins/action/__init__.py\\\", line 596, in _execute_module\\r\\n        remote_module_path = self._connection._shell.join_path(tmp, remote_module_filename)\\r\\n      File \\\"/home/mg/opt/python36/lib/python3.6/unittest/mock.py\\\", line 939, in __call__\\r\\n        return _mock_self._mock_call(*args, **kwargs)\\r\\n      File \\\"/home/mg/opt/python36/lib/python3.6/unittest/mock.py\\\", line 1005, in _mock_call\\r\\n        ret_val = effect(*args, **kwargs)\\r\\n      File \\\"/home/mg/src/ansible/.tox/py36/lib/python3.6/posixpath.py\\\", line 92, in join\\r\\n        genericpath._check_arg_types('join', a, *p)\\r\\n      File \\\"/home/mg/src/ansible/.tox/py36/lib/python3.6/genericpath.py\\\", line 149, in _check_arg_types\\r\\n        (funcname, s.__class__.__name__)) from None\\r\\n    TypeError: join() argument must be str or bytes, not 'MagicMock'\\r\\n\\r\\nbecause os.path.join() now checks argument types since Python 3.6 (due to pathlib support, I expect).\", \n    \"component_name\": \"unit test suite\", \n    \"component_raw\": \"unit test suite\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20030\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"python3\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"tox -e py36 failed with\\n\\n\\n\\n    ======================================================================\\n\\n    ERROR: test_action_base__execute_module (units.plugins.action.test_action.TestActionBase)\\n\\n    ----------------------------------------------------------------------\\n\\n    Traceback (most recent call last):\\n\\n      File \\\"/home/mg/src/ansible/test/units/plugins/action/test_action.py\\\", line 507, in test_action_base__execute_module\\n\\n        self.assertEqual(action_base._execute_module(), dict(_ansible_parsed=True, rc=0, stdout=\\\"ok\\\", stdout_lines=['ok']))\\n\\n      File \\\"/home/mg/src/ansible/lib/ansible/plugins/action/__init__.py\\\", line 596, in _execute_module\\n\\n        remote_module_path = self._connection._shell.join_path(tmp, remote_module_filename)\\n\\n      File \\\"/home/mg/opt/python36/lib/python3.6/unittest/mock.py\\\", line 939, in __call__\\n\\n        return _mock_self._mock_call(*args, **kwargs)\\n\\n      File \\\"/home/mg/opt/python36/lib/python3.6/unittest/mock.py\\\", line 1005, in _mock_call\\n\\n        ret_val = effect(*args, **kwargs)\\n\\n      File \\\"/home/mg/src/ansible/.tox/py36/lib/python3.6/posixpath.py\\\", line 92, in join\\n\\n        genericpath._check_arg_types('join', a, *p)\\n\\n      File \\\"/home/mg/src/ansible/.tox/py36/lib/python3.6/genericpath.py\\\", line 149, in _check_arg_types\\n\\n        (funcname, s.__class__.__name__)) from None\\n\\n    TypeError: join() argument must be str or bytes, not 'MagicMock'\\n\\n\\n\\nbecause os.path.join() now checks argument types since Python 3.6 (due to pathlib support, I expect).\", \n    \"title\": \"Fix a test failure on Python 3.6\"\n  }, \n  \"20031\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nios_command\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.3.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\nFix unit test case of ios_command.\\r\\n```\\r\\n\", \n    \"component_name\": \"ios_command\", \n    \"component_raw\": \"ios_command\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20031\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"networking\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"```\\n\\nFix unit test case of ios_command.\\n\\n```\", \n    \"title\": \"Fix ios_command unit testcase\"\n  }, \n  \"20032\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_nssm\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nNone\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\n* From: Ubuntu 15.10\\r\\n* To: Windows Server 2016\\r\\n\\r\\n##### SUMMARY\\r\\nUsing the win_nssm module you can supply parameters using the app_parameters field. When a specific parameter order is required this is not possible using the app_parameters as designed.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- name: Create Jenkins windows service\\r\\n     win_nssm:\\r\\n       name: JenkinsSlave\\r\\n       application:  C:\\\\ProgramData\\\\Oracle\\\\Java\\\\javapath\\\\java.exe\\r\\n       app_parameters:\\r\\n         -jar: \\\"{{ jenkins_path }}\\\\\\\\jenkins-swarm.jar\\\"\\r\\n         -fsroot: \\\"{{ jenkins_path }}\\\\\\\\ws\\\"\\r\\n         -master: \\\"{{ jenkins_url}}\\\"\\r\\n         -labels: \\\"\\\\\\\"{{ jenkins_slave_labels }}\\\\\\\"\\\"\\r\\n         -executors: \\\"{{ jenkins_num_executors }}\\\"\\r\\n         -username: \\\"{{ jenkins_username }}\\\"\\r\\n         -password: \\\"{{ jenkins_password }}\\\"         \\r\\n       stdout_file: \\\"{{ jenkins_path }}\\\\\\\\jenkins_slave.log\\\"\\r\\n       stderr_file: \\\"{{ jenkins_path }}\\\\\\\\jenkins_slave.log\\\"\\r\\n     when: jenkins_service_installed | failed\\r\\n     register: jenkins_service_installed\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe parameters are added in the above order in the nssm command.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nThe order of the parameters is added in a random order.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [Create Jenkins windows service] ******************************************\\r\\ntask path: /vagrant/site.yml:52\\r\\nUsing module file /usr/local/lib/python2.7/dist-packages/ansible/modules/windows/win_nssm.ps1\\r\\n<ahc-ada-build-agent1> ESTABLISH WINRM CONNECTION FOR USER: vagrant on PORT 5986 TO ahc-ada-build-agent1\\r\\n<ahc-ada-build-agent1> EXEC Set-StrictMode -Version Latest\\r\\n(New-Item -Type Directory -Path $env:temp -Name \\\"ansible-tmp-1483958401.64-260607888464786\\\").FullName | Write-Host -Separator '';\\r\\n<ahc-ada-build-agent1> PUT \\\"/tmp/tmp3FSCrB\\\" TO \\\"C:\\\\Users\\\\vagrant\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1483958401.64-260607888464786\\\\win_nssm.ps1\\\"\\r\\n<ahc-ada-build-agent1> EXEC Set-StrictMode -Version Latest\\r\\nTry\\r\\n{\\r\\n& 'C:\\\\Users\\\\vagrant\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1483958401.64-260607888464786\\\\win_nssm.ps1'\\r\\n}\\r\\nCatch\\r\\n{\\r\\n$_obj = @{ failed = $true }\\r\\nIf ($_.Exception.GetType)\\r\\n{\\r\\n$_obj.Add('msg', $_.Exception.Message)\\r\\n}\\r\\nElse\\r\\n{\\r\\n$_obj.Add('msg', $_.ToString())\\r\\n}\\r\\nIf ($_.InvocationInfo.PositionMessage)\\r\\n{\\r\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\r\\n}\\r\\nElseIf ($_.ScriptStackTrace)\\r\\n{\\r\\n$_obj.Add('exception', $_.ScriptStackTrace)\\r\\n}\\r\\nTry\\r\\n{\\r\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\r\\n}\\r\\nCatch\\r\\n{\\r\\n}\\r\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\r\\nExit 1\\r\\n}\\r\\nchanged: [ahc-ada-build-agent1] => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"changed_by\\\": \\\"set_stderr\\\",\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_nssm\\\"\\r\\n    },\\r\\n    \\\"nssm_app_parameters\\\": \\\"@{-password=[PASSWORD]; -jar=C:\\\\\\\\jenkins\\\\\\\\jenkins-swarm.jar; -master=https://jenkins.dev.local; -fsroot=C:\\\\\\\\jenkins\\\\\\\\ws; -executors=1; -labels=\\\\\\\"windows adastra\\\\\\\"; -username=[USERNAME]}\\\",\\r\\n    \\\"nssm_app_parameters_keys\\\": [\\r\\n        \\\"-password\\\",\\r\\n        \\\"-fsroot\\\",\\r\\n        \\\"-executors\\\",\\r\\n        \\\"-jar\\\",\\r\\n        \\\"-master\\\",\\r\\n        \\\"-username\\\",\\r\\n        \\\"-labels\\\"\\r\\n    ],\\r\\n    \\\"nssm_app_parameters_parsed\\\": {\\r\\n        \\\"-executors\\\": \\\"1\\\",\\r\\n        \\\"-fsroot\\\": \\\"C:\\\\\\\\jenkins\\\\\\\\ws\\\",\\r\\n        \\\"-jar\\\": \\\"C:\\\\\\\\jenkins\\\\\\\\jenkins-swarm.jar\\\",\\r\\n        \\\"-labels\\\": \\\"\\\\\\\"windows adastra\\\\\\\"\\\",\\r\\n        \\\"-master\\\": \\\"https://jenkins.dev.local\\\",\\r\\n        \\\"-password\\\": \\\"[PASSWORD]\\\",\\r\\n        \\\"-username\\\": \\\"[USERNAME]\\\"\\r\\n    },\\r\\n    \\\"nssm_app_parameters_vals\\\": [\\r\\n        \\\"[PASSWORD]\\\",\\r\\n        \\\"C:\\\\\\\\jenkins\\\\\\\\ws\\\",\\r\\n        \\\"1\\\",\\r\\n        \\\"C:\\\\\\\\jenkins\\\\\\\\jenkins-swarm.jar\\\",\\r\\n        \\\"https://jenkins.dev.local\\\",\\r\\n        \\\"[USERNAME]\\\",\\r\\n        \\\"\\\\\\\"windows adastra\\\\\\\"\\\"\\r\\n    ],\\r\\n    \\\"nssm_single_line_app_parameters\\\": \\\"-password \\\\\\\"[PASSWORD]\\\\\\\"-fsroot \\\\\\\"C:\\\\\\\\jenkins\\\\\\\\ws\\\\\\\"-executors \\\\\\\"1\\\\\\\"-jar \\\\\\\"C:\\\\\\\\jenkins\\\\\\\\jenkins-swarm.jar\\\\\\\"-master \\\\\\\"https://jenkins.dev.local\\\\\\\"-username \\\\\\\"[USERNAME]\\\\\\\"-labels \\\\\\\"\\\\\\\"windows adastra\\\\\\\"\\\\\\\"\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"win_nssm\", \n    \"component_raw\": \"win_nssm\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20032\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_nssm.py\", \n    \"summary\": \"Using the win_nssm module you can supply parameters using the app_parameters field. When a specific parameter order is required this is not possible using the app_parameters as designed.\", \n    \"title\": \"Win_nssm module doesn't honour the order of the app_parameters\"\n  }, \n  \"20033\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nservice\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n```\\r\\nCentOS Linux release 7.3.1611 (Core) \\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nI am logged in server over SSH. When I run service module to restart iptables, the current SSH connections hang and eventually timeout and disconnect. I have to open another terminal to ssh to server again.\\r\\n\\r\\nAlso I have tried with ansible -m shell -a \\\"systemctl restart iptables\\\" and it also brakes connections.\\r\\n\\r\\nRestarting manually iptables on server it doesn't brake SSH connection.\\r\\n\\r\\nI am using \\\"become true\\\" and sudo,\\r\\n\", \n    \"component_name\": \"service\", \n    \"component_raw\": \"service\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20033\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/service.py\", \n    \"summary\": \"I am logged in server over SSH. When I run service module to restart iptables, the current SSH connections hang and eventually timeout and disconnect. I have to open another terminal to ssh to server again.\\n\\n\\n\\nAlso I have tried with ansible -m shell -a \\\"systemctl restart iptables\\\" and it also brakes connections.\\n\\n\\n\\nRestarting manually iptables on server it doesn't brake SSH connection.\\n\\n\\n\\nI am using \\\"become true\\\" and sudo,\", \n    \"title\": \"Iptables restart brakes current SSH connections\"\n  }, \n  \"20034\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\njunos_command\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.3.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\nAdd unit test cases for junos_command module\\r\\n```\\r\\n\", \n    \"component_name\": \"junos_command\", \n    \"component_raw\": \"junos_command\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20034\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"networking\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"```\\n\\nAdd unit test cases for junos_command module\\n\\n```\", \n    \"title\": \"Add unit testcase for junos_command module\"\n  }, \n  \"20037\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/james/active/boss/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"* Fixes #20007\\r\\n* Thanks @georgepsarakis\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nauthorized_key\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/james/active/boss/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nPython 3 reads remote file as `bytes` which need converting.\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\nPrevious crash:\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\nfatal: [104.131.17.109]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"authorized_key\\\"\\r\\n    },\\r\\n    \\\"module_stderr\\\": \\\"OpenSSH_6.9p1 Ubuntu-2ubuntu0.2, OpenSSL 1.0.2d 9 Jul 2015\\\\r\\\\ndebug1: Reading configuration data /home/james/.ssh/config\\\\r\\\\ndebug1: Reading configuration data /etc/ssh/ssh_config\\\\r\\\\ndebug1: /etc/ssh/ssh_config line 19: Applying options for *\\\\r\\\\ndebug1: auto-mux: Trying existing master\\\\r\\\\ndebug2: fd 3 setting O_NONBLOCK\\\\r\\\\ndebug2: mux_client_hello_exchange: master version 4\\\\r\\\\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\\\\r\\\\ndebug3: mux_client_request_session: entering\\\\r\\\\ndebug3: mux_client_request_alive: entering\\\\r\\\\ndebug3: mux_client_request_alive: done pid = 22341\\\\r\\\\ndebug3: mux_client_request_session: session request sent\\\\r\\\\ndebug1: mux_client_request_session: master session id: 2\\\\r\\\\ndebug3: mux_client_read_packet: read header failed: Broken pipe\\\\r\\\\ndebug2: Received exit status from master 0\\\\r\\\\nShared connection to 104.131.17.109 closed.\\\\r\\\\n\\\",\\r\\n    \\\"module_stdout\\\": \\\"Traceback (most recent call last):\\\\r\\\\n  File \\\\\\\"/tmp/ansible_grkuvdsh/ansible_module_authorized_key.py\\\\\\\", line 527, in <module>\\\\r\\\\n    main()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_grkuvdsh/ansible_module_authorized_key.py\\\\\\\", line 523, in main\\\\r\\\\n    results = enforce_state(module, module.params)\\\\r\\\\n  File \\\\\\\"/tmp/ansible_grkuvdsh/ansible_module_authorized_key.py\\\\\\\", line 433, in enforce_state\\\\r\\\\n    key = [s for s in key.splitlines() if s and not s.startswith('#')]\\\\r\\\\n  File \\\\\\\"/tmp/ansible_grkuvdsh/ansible_module_authorized_key.py\\\\\\\", line 433, in <listcomp>\\\\r\\\\n    key = [s for s in key.splitlines() if s and not s.startswith('#')]\\\\r\\\\nTypeError: startswith first arg must be bytes or a tuple of bytes, not str\\\\r\\\\n\\\",\\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n```\\r\\n\\r\\nWith patch passes with\\r\\n```\\r\\nok: [10.0.0.0] => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"exclusive\\\": false,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"exclusive\\\": false,\\r\\n            \\\"key\\\": \\\"https://github.com/jamescooke.keys\\\",\\r\\n            \\\"key_options\\\": null,\\r\\n            \\\"keyfile\\\": \\\"/home/james/.ssh/authorized_keys\\\",\\r\\n            \\\"manage_dir\\\": true,\\r\\n            \\\"path\\\": null,\\r\\n            \\\"state\\\": \\\"present\\\",\\r\\n            \\\"unique\\\": false,\\r\\n            \\\"user\\\": \\\"james\\\",\\r\\n            \\\"validate_certs\\\": true\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"authorized_key\\\"\\r\\n    },\\r\\n    \\\"key\\\": \\\"https://github.com/jamescooke.keys\\\",\\r\\n    \\\"key_options\\\": null,\\r\\n    \\\"keyfile\\\": \\\"/home/james/.ssh/authorized_keys\\\",\\r\\n    \\\"manage_dir\\\": true,\\r\\n    \\\"path\\\": null,\\r\\n    \\\"state\\\": \\\"present\\\",\\r\\n    \\\"unique\\\": false,\\r\\n    \\\"user\\\": \\\"james\\\",\\r\\n    \\\"validate_certs\\\": true\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"authorized_key\", \n    \"component_raw\": \"authorized_key\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20037\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"core_review\", \n      \"module\", \n      \"python3\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/authorized_key.py\", \n    \"summary\": \"Python 3 reads remote file as `bytes` which need converting.\\n\\n\\n\\n\\n\\n\\n\\nPrevious crash:\\n\\n\\n\\n```\\n\\nfatal: [104.131.17.109]: FAILED! => {\\n\\n    \\\"changed\\\": false,\\n\\n    \\\"failed\\\": true,\\n\\n    \\\"invocation\\\": {\\n\\n        \\\"module_name\\\": \\\"authorized_key\\\"\\n\\n    },\\n\\n    \\\"module_stderr\\\": \\\"OpenSSH_6.9p1 Ubuntu-2ubuntu0.2, OpenSSL 1.0.2d 9 Jul 2015\\\\r\\\\ndebug1: Reading\", \n    \"title\": \"Fix authorized_key crash in Python3 with remote key file\"\n  }, \n  \"20038\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel e87d6d8a70) last updated 2017/01/09 094150 (GMT -200)\\nconfig file = /home/renato/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nansible 2.3.0 (devel e87d6d8a70) last updated 2017/01/09 09:41:50 (GMT -200)\\r\\n  config file = /home/renato/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nController: Fedora 25\\r\\nNode: ESXi v6\\r\\n\\r\\n##### SUMMARY\\r\\nReceiving the error bellow when trying to create a vm with customizations:\\r\\n\\r\\nNameError: global name 'dns_suffix' is not defined\\r\\n\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nCreate a task passing the customizations parameter to the playbook\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- name: create the virtual machine\\r\\n  vmware_guest:\\r\\n    name: \\\"{{ inventory_hostname }}\\\"\\r\\n    state: poweredon\\r\\n    annotation: Created with Ansible\\r\\n    datacenter: \\\"{{ vcenter_datacenter}}\\\"\\r\\n    cluster: \\\"{{ vcenter_cluster }}\\\"\\r\\n    folder: /vm\\r\\n    template: \\\"{{ template }}\\\"\\r\\n    networks: \\\"{ '{{ vcenter_network }}': {'network': '{{ vcenter_network_name }}', 'gateway': '{{ vcenter_gateway }}', 'ip': '{{ ansible_host }}'}}\\\"\\r\\n    customizations:\\r\\n      domain: \\\"{{ my_domain }}\\\"\\r\\n      dns_servers: \\\"{{ vcenter_dns_servers }}\\\"\\r\\n    validate_certs: False\\r\\n    hostname: \\\"{{ vcenter_hostname }}\\\"\\r\\n    username: \\\"{{ vcenter_username }}\\\"\\r\\n    password: \\\"{{ vcenter_password }}\\\"\\r\\n    wait_for_ip_address: yes\\r\\n  connection: local\\r\\n```\\r\\n\\r\\nI also tried including the dns_suffix list param but got the same result\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe vm to be createad with the customizations\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nTASK [create the virtual machine] *********************************************************************************************************************************************************************************\\r\\ntask path: /home/renato/ansible/provision/farm.yml:24\\r\\nUsing module file /home/renato/git/ansible/lib/ansible/modules/cloud/vmware/vmware_guest.py\\r\\n<142.40.22.221> ESTABLISH LOCAL CONNECTION FOR USER: renato\\r\\n<142.40.22.221> EXEC /bin/sh -c '/usr/bin/python && sleep 0'\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/tmp/ansible_9sb7II/ansible_module_vmware_guest.py\\\", line 1848, in <module>\\r\\n    main()\\r\\n  File \\\"/tmp/ansible_9sb7II/ansible_module_vmware_guest.py\\\", line 1835, in main\\r\\n    result = pyv.deploy_vm()\\r\\n  File \\\"/tmp/ansible_9sb7II/ansible_module_vmware_guest.py\\\", line 1325, in deploy_vm\\r\\n    self.customize_vm(vm_obj=vm_obj)\\r\\n  File \\\"/tmp/ansible_9sb7II/ansible_module_vmware_guest.py\\\", line 1007, in customize_vm\\r\\n    globalip.dnsSuffixList = self.params['customizations'].get(dns_suffix, self.params['customizations']['domain'])\\r\\nNameError: global name 'dns_suffix' is not defined\\r\\n\\r\\nfatal: [brvix5gnocnm221]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"vmware_guest\\\"\\r\\n    }, \\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_9sb7II/ansible_module_vmware_guest.py\\\\\\\", line 1848, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_9sb7II/ansible_module_vmware_guest.py\\\\\\\", line 1835, in main\\\\n    result = pyv.deploy_vm()\\\\n  File \\\\\\\"/tmp/ansible_9sb7II/ansible_module_vmware_guest.py\\\\\\\", line 1325, in deploy_vm\\\\n    self.customize_vm(vm_obj=vm_obj)\\\\n  File \\\\\\\"/tmp/ansible_9sb7II/ansible_module_vmware_guest.py\\\\\\\", line 1007, in customize_vm\\\\n    globalip.dnsSuffixList = self.params['customizations'].get(dns_suffix, self.params['customizations']['domain'])\\\\nNameError: global name 'dns_suffix' is not defined\\\\n\\\", \\r\\n    \\\"module_stdout\\\": \\\"\\\", \\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\", \\r\\n    \\\"rc\\\": 1\\r\\n}\\r\\n\\tto retry, use: --limit @/home/renato/ansible/provision/farm-vix.retry\\r\\n```\\r\\n\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20038\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"Receiving the error bellow when trying to create a vm with customizations:\\n\\n\\n\\nNameError: global name 'dns_suffix' is not defined\", \n    \"title\": \"vmware_guest error creating vm with customizations\"\n  }, \n  \"20039\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /Users/vlfig/projects/ansible-confluent-orchestration/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"(Fixes #19972)\\r\\n\\r\\nAlso remove redundant eni lookup.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_eni\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /Users/vlfig/projects/ansible-confluent-orchestration/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nWhen no eni_id, private_ip_address nor (instance_id and device_index) are provided this module should not update existing ENI.\\r\\n\\r\\nThis change makes it so that only when parameters that actually univocally identify an ENI are provided the existing ENI (if any) is updated. Otherwise a new one gets created.\", \n    \"component_name\": \"ec2_eni\", \n    \"component_raw\": \"ec2_eni\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20039\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"community_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_eni.py\", \n    \"summary\": \"When no eni_id, private_ip_address nor (instance_id and device_index) are provided this module should not update existing ENI.\\n\\n\\n\\nThis change makes it so that only when parameters that actually univocally identify an ENI are provided the existing ENI (if any) is updated. Otherwise a new one gets created.\", \n    \"title\": \"fix eni lookup logic to update them only when univocally specified\"\n  }, \n  \"20040\": {\n    \"ansible_version\": \"2.0 2.1 2.2 devel\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncs_iso\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.0, 2.1, 2.2, devel\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\\"N/A\\\"\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\\"N/A\\\"\\r\\n\\r\\n##### SUMMARY\\r\\n state=absent does not poll the async job API, results in return successful even if the job fails\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\ncs cli returns an error but cs_iso returns success.\\r\\n\\r\\n```yaml\\r\\ncs --region macloud-admin deleteIso id=436eecf2-0690-43ec-b398-0bd3e3d3b66c\\r\\nPolling result... ^C to abort\\r\\n{\\r\\n \\\"accountid\\\": \\\"dff1f7d8-4e01-11e4-bb66-0050569e64b8\\\",\\r\\n \\\"cmd\\\": \\\"org.apache.cloudstack.api.command.user.iso.DeleteIsoCmd\\\",\\r\\n \\\"created\\\": \\\"2017-01-09T14:39:27+0100\\\",\\r\\n \\\"jobid\\\": \\\"2e21b719-82b2-4e42-a511-dfdc37c19b4a\\\",\\r\\n \\\"jobinstanceid\\\": \\\"436eecf2-0690-43ec-b398-0bd3e3d3b66c\\\",\\r\\n \\\"jobinstancetype\\\": \\\"Iso\\\",\\r\\n \\\"jobprocstatus\\\": 0,\\r\\n \\\"jobresult\\\": {\\r\\n   \\\"errorcode\\\": 530,\\r\\n   \\\"errortext\\\": \\\"Failed to delete ISO\\\"\\r\\n },\\r\\n \\\"jobresultcode\\\": 530,\\r\\n \\\"jobresulttype\\\": \\\"object\\\",\\r\\n \\\"jobstatus\\\": 2,\\r\\n \\\"userid\\\": \\\"dff2677c-4e01-11e4-bb66-0050569e64b8\\\"\\r\\n}\\r\\n```\\r\\n\\r\\nreported by @onitake\", \n    \"component_name\": \"cs_iso\", \n    \"component_raw\": \"cs_iso\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20040\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/cloudstack/cs_iso.py\", \n    \"summary\": \"state=absent does not poll the async job API, results in return successful even if the job fails\", \n    \"title\": \"cs_iso:  state=absent does not poll the async job API\"\n  }, \n  \"20044\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0.0\\nconfig file = /home/lalala/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\\n$ cat /home/lalala/ansible/ansible.cfg\\n[defaults]\\nhost_key_checking = False\\n[ssh_connection]\\nssh_args = -o ForwardAgent=yes\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`docker_container`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /home/lalala/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n$ cat /home/lalala/ansible/ansible.cfg\\r\\n[defaults]\\r\\nhost_key_checking = False\\r\\n\\r\\n[ssh_connection]\\r\\nssh_args = -o ForwardAgent=yes\\r\\n```\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n```\\r\\n$ uname -a \\r\\nLinux best_machine 4.4.0-57-generic #78-Ubuntu SMP Fri Dec 9 23:50:32 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThe `docker_container` module lacks the `-w (workdir)` `docker run` parameter.\\r\\n\\r\\n##### WHAT I'D LIKE\\r\\nI want to run the following docker run command:\\r\\n\\r\\n    docker run --rm -v ~/code/my_project/:/go/src/my_project golang:alpine go build -w /go/src/my_project -o my_project\\r\\n\\r\\nWhich would build my project inside the `golang:alpine` container. ATM, I'll have to run the command directly using Ansible's `command` module, but I guess a `workdir` parameter would fit well in the (already huge) parameters list of the module, like so:\\r\\n```yaml\\r\\n- name: Build project {{ project_name }}\\r\\n  docker_container:\\r\\n    image: golang:alpine\\r\\n    name: \\\"{{ project_name }}\\\"\\r\\n    command: \\\"go build -o {{ project_name }}\\\"\\r\\n    volumes: \\\"{{ project_dir }}:/go/src/{{ project_name }}\\\"\\r\\n    workdir: \\\"/go/src/{{ project_name }}\\\" # This is what I'd like!\\r\\n    cleanup: yes\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"docker_container\", \n    \"component_raw\": \"`docker_container`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20044\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"cloud\", \n      \"docker\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"summary\": \"The `docker_container` module lacks the `-w (workdir)` `docker run` parameter.\\n\\n\\n\\n##### WHAT I'D LIKE\\n\\nI want to run the following docker run command:\\n\\n\\n\\n    docker run --rm -v ~/code/my_project/:/go/src/my_project golang:alpine go build -w /go/src/my_project -o my_project\\n\\n\\n\\nWhich would build my project inside the `golang:alpine` container. ATM, I'll have to run the command directly using Ansible's `command` module, but I guess a `workdir` parameter would fit well in the (already huge) parameters list of the module, like so:\\n\\n```yaml\\n\\n- name: Build project {{ project_name }}\\n\\n  docker_container:\\n\\n    image: golang:alpine\\n\\n    name: \\\"{{ project_name }}\\\"\\n\\n    command: \\\"go build -o {{ project_name }}\\\"\\n\\n    volumes: \\\"{{ project_dir }}:/go/src/{{ project_name }}\\\"\\n\\n    workdir: \\\"/go/src/{{ project_name }}\\\" # This is what I'd like!\\n\\n    cleanup: yes\\n\\n```\", \n    \"title\": \"[docker_container] No -w (workdir) option available\"\n  }, \n  \"20046\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.3.0 (devel c1f5432cc0) last updated 2017/01/09 143642 (GMT +100)\\nconfig file = /Users/nbailey/automation/roles-linux/ambari_server/tests/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nuri module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.3.0 (devel c1f5432cc0) last updated 2017/01/09 14:36:42 (GMT +100)\\r\\n  config file = /Users/nbailey/automation/roles-linux/ambari_server/tests/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n`hash_behaviour=merge` is the only even potentially relevant one.\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nn/a\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nI've hit an issue a couple of times where an API wants JSON formatted data but a Content-Type header set to 'application/x-www-form-urlencoded'.\\r\\n\\r\\nI can't find a convenient way to pass a JSON body to the URI module, but avoid setting the header to `application/json`.\\r\\n\\r\\nIf I set `body_format` to `raw`, I can set the body to a string that contains valid JSON... But if I use a lookup against a Jinja template, the module gets handed a YAML hash instead, and I get an error (\\\"An unknown error occurred: sendall() argument 1 must be string or buffer, not list\\\").\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nI'm trying to interact with the Ambari Server API (https://github.com/apache/ambari/blob/trunk/ambari-server/docs/api/v1/index.md), doing the equivalent of this curl:\\r\\n\\r\\n```\\r\\n$ curl --user admin:admin -H 'X-Requested-By: ambari' -X POST -d '[{\\\"Event\\\": {\\\"specs\\\": [{\\\"names\\\": \\\"<redacted>,<redacted>\\\", \\\"principal_type\\\": \\\"groups\\\", \\\"sync_type\\\": \\\"specific\\\"}]}}]' http://192.168.2.20:8080/api/v1/ldap_sync_events\\r\\n{\\r\\n  \\\"resources\\\" : [\\r\\n    {\\r\\n      \\\"href\\\" : \\\"http://192.168.2.20:8080/api/v1/ldap_sync_events/6\\\",\\r\\n      \\\"Event\\\" : {\\r\\n        \\\"id\\\" : 6\\r\\n      }\\r\\n    }\\r\\n  ]\\r\\n```\\r\\nTask using `body_format: json`:\\r\\n\\r\\n```\\r\\n- name: Synchronise LDAP groups and users.\\r\\n  uri:\\r\\n    url: \\\"{{ ambari_server.endpoint | default(inventory_hostname) }}/api/v1/ldap_sync_events\\\"\\r\\n    headers:\\r\\n      X-Requested-By: \\\"ambari\\\"\\r\\n      Content-Type: \\\"application/x-www-form-urlencoded\\\"\\r\\n    method: POST\\r\\n    user: \\\"{{ ambari_server.admin_user | default('admin') }}\\\"\\r\\n    password: \\\"{{ ambari_server.admin_password | default('admin') }}\\\"\\r\\n    force_basic_auth: True\\r\\n    body_format: raw\\r\\n    body: \\\"{{ lookup('template', 'ldap_sync.json.j2') }}\\\"\\r\\n    status_code: 201\\r\\n    return_content: True\\r\\n  when: ambari_server is defined and ambari_server.ldap is defined\\r\\n```\\r\\n\\r\\nThis passes the JSON blob happily, but the server doesn't like it. \\r\\n\\r\\nResponse: \\\"Status code was not [201]: HTTP Error 500: java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY at line 1 column 2\\r\\n\\r\\nRunning the task with `body_format: raw` to avoid getting `application/json` set gives me an Ansible-side error: \\\"Status code was not [201]: An unknown error occurred: sendall() argument 1 must be string or buffer, not list\\\". \\r\\n\\r\\nI don't understand how Ansible formats parameters before handing them off to modules very well. I think what's happening here is that the module errors on getting a YAML hash rather than a string. The `body_format: json` parameter expects JSON and uses `json.dumps()` on that parameter before passing it on to whatever makes the HTTP request, but the module code that handles things with a `raw` format does not. \\r\\n\\r\\nWhat does work? I don't know if this is a good or widely useful solution, but I just set the uri module to only set a Content-Type header if there wasn't already one:\\r\\n\\r\\n```\\r\\n    # grabbed from https://github.com/ansible/ansible-modules-core/blob/devel/network/basics/uri.py#L398\\r\\n    # commit d749ec91e513c40a50b539a7eaccf29c31dda4d4\\r\\n    if body_format == 'json':\\r\\n        # Encode the body unless its a string, then assume it is pre-formatted JSON\\r\\n        if not isinstance(body, basestring):\\r\\n            body = json.dumps(body)\\r\\n        if 'Content-Type' not in dict_headers:\\r\\n            dict_headers['Content-Type'] = 'application/json'\\r\\n```\\r\\n\\r\\nIs this is a useful default behaviour for the module? If so, I'm happy to put a PR in for it.\\r\\n\\r\\nIf not, is there another way I can achieve the same effect? \", \n    \"component_name\": \"uri\", \n    \"component_raw\": \"uri module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20046\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/basics/uri.py\", \n    \"summary\": \"I've hit an issue a couple of times where an API wants JSON formatted data but a Content-Type header set to 'application/x-www-form-urlencoded'.\\n\\n\\n\\nI can't find a convenient way to pass a JSON body to the URI module, but avoid setting the header to `application/json`.\\n\\n\\n\\nIf I set `body_format` to `raw`, I can set the body to a string that contains valid JSON... But if I use a lookup against a Jinja template, the module gets handed a YAML hash instead, and I get an error (\\\"An unknown error occurred: sendall() argument 1 must be string or buffer, not list\\\").\", \n    \"title\": \"URI module - pass JSON body without setting Content-Type header to 'application/json'\"\n  }, \n  \"20047\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nlib/ansible/modules/cloud/ovirt/ovirt_affinity_groups.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nThis PR adds new module which handle managing of affinity groups in oVirt.\", \n    \"component_name\": \"lib/ansible/ s/cloud/ovirt/ovirt_affinity_groups.py\", \n    \"component_raw\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_groups.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20047\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"cloud\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/ovirt/ovirt_affinity_groups.py\", \n    \"summary\": \"This PR adds new module which handle managing of affinity groups in oVirt.\", \n    \"title\": \"cloud: ovirt: add affinity groups module\"\n  }, \n  \"20052\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nvmware_guest improvements:\\r\\n  * Idempotency fix on annotations permitting to change them on reconfiguration\\r\\n  * Permit to set VMware customvalues attributes on VM\\r\\n  * Gather annotation & customvalues and report it into module facts\\r\\n\\r\\nNew facts:\\r\\n```\\r\\nchanged: [127.0.0.1] => {\\\"changed\\\": true, \\\"failed\\\": false, \\\"instance\\\": {\\\"annotation\\\": \\\"this is a huge vm\\\", \\\"customvalues\\\": {\\\"components\\\": \\\"apache2\\\", \\\"datacenter\\\": \\\"production\\\"}, \\\"hw_guest_full_name\\\": null, \\\"hw_guest_id\\\": null, \\\"hw_interfaces\\\": [], \\\"hw_memtotal_mb\\\": 1024, \\\"hw_name\\\": \\\"test_vm_07\\\", \\\"hw_power_status\\\": \\\"poweredOn\\\", \\\"hw_processor_count\\\": 1, \\\"hw_product_uuid\\\": \\\"43214556-a8f6-82fc-b9d6-e51bd5a4065e\\\", \\\"ipv4\\\": null, \\\"ipv6\\\": null, \\\"module_hw\\\": true}}\\r\\n```\\r\\n\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20052\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"owner_pr\", \n      \"shipit\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"vmware_guest improvements:\\n\\n  * Idempotency fix on annotations permitting to change them on re\", \n    \"title\": \"vmware_guest improvements: annotations & customvalues\"\n  }, \n  \"20053\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.2.0.0\\nconfig file = /git/ansible/\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nzabbix_host\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /git/ansible/environment/ansible.cfg\\r\\n  configured module search path = ['Library']\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nUpdated the `zabbix_host` module that also it also can configure some TLS settings that have been added with Zabbix 3.0 and later when creating or updating an host.\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"zabbix_host\", \n    \"component_raw\": \"zabbix_host\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20053\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/monitoring/zabbix_host.py\", \n    \"summary\": \"Updated the `zabbix_host` module that also it also can configure some TLS settings that have been added with Zabbix 3.0 and later when creating or updating an host.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"Added tls settings for creating or updating hosts via api\"\n  }, \n  \"20055\": {\n    \"ansible_version\": \"ansible 2.3.0 (test_action_templar 07c77a3d62) last updated 2017/01/09 121241 (GMT -400)\\nconfig file = /home/adrian/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n\\r\\n - Bugfix Pull Request\\r\\n - Feature Pull Request\\r\\n - Test Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\ntest/units/\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (test_action_templar 07c77a3d62) last updated 2017/01/09 12:12:41 (GMT -400)\\r\\n  config file = /home/adrian/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nUnit tests for actions and template.Templar related to use of ansible unsafe vars.\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"test/units/\", \n    \"component_raw\": \"test/units/\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20055\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:plugins/action\", \n      \"c:template/templar\", \n      \"needs_revision\", \n      \"test\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Unit tests for actions and template.Templar related to use of ansible unsafe vars.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"unit tests for action and templar for unsafe vars\"\n  }, \n  \"20056\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\nFeature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible windows module: `win_scheduled_task`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nNo special configuration\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nOSX / should be general feature for all platforms\\r\\n\\r\\n##### SUMMARY\\r\\nI would like the ability to create hourly tasks and ideally, have full timing control (i.e. cron style time formatting) support for this windows module.  I recognize that the windows task scheduling tool doesn't provide that ability in a straightforward manner.\\r\\n\\r\\nThe way I did it in the past is to create a daily task and configure it to repeat hourly indefinitely.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nAnsible playbook\\r\\n```\\r\\n- name: Configure windows task\\r\\n  win_scheduled_task:\\r\\n    name: TabUserGroupSynchUp\\r\\n    execute: \\\"{{ tableau_admin_path }}/Scripts/TabUserGroupSynchUp.bat\\\"\\r\\n    frequency: hourly\\r\\n    time: 7:00pm\\r\\n    user: SYSTEM\\r\\n    state: present\\r\\n    path: Tableau\\r\\n```\\r\\n\\r\\nError output\\r\\n```yaml\\r\\nTASK [script-task : Configure windows task] ************************************\\r\\nfatal: [tableau.***********.com]: FAILED! => {\\\"changed\\\": false, \\\"exists\\\": \\\"True\\\", \\\"failed\\\": true, \\\"msg\\\": \\\"frequency must be daily or weekly\\\"}\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nI would like the ability to create hourly windows tasks in Ansible.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nThe functionality currently doesn't exist in Ansible.\\r\\n\", \n    \"component_name\": \"ansible windows   win_scheduled_task\", \n    \"component_raw\": \"ansible windows module: `win_scheduled_task`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20056\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_scheduled_task.ps1\", \n    \"summary\": \"I would like the ability to create hourly tasks and ideally, have full timing control (i.e. cron style time formatting) support for this windows module.  I recognize that the windows task scheduling tool doesn't provide that ability in a straightforward manner.\\n\\n\\n\\nThe way I did it in the past is to create a daily task and configure it to repeat hourly indefinitely.\", \n    \"title\": \"win_scheduled_task ability for hourly task\"\n  }, \n  \"20057\": {\n    \"ansible_version\": \"ansible 2.3.0 last updated 2017/01/09 132832 (GMT -400)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodules/cloud/google/gce_snapshot\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 last updated 2017/01/09 13:28:32 (GMT -400)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdded support for managing snapshots through the Google Cloud Platform. I've tried to match the style of the existing GCE modules. It is a very simple module that will allow you to create and destroy snapshots for an instance's storage volumes\\r\\n\", \n    \"component_name\": \"s/cloud/google/gce_snapshot\", \n    \"component_raw\": \"modules/cloud/google/gce_snapshot\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20057\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"gce\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/google/gce_snapshot.py\", \n    \"summary\": \"Added support for managing snapshots through the Google Cloud Platform. I've tried to match the style of the existing GCE modules. It is a very simple module that will allow you to create and destroy snapshots for an instance's storage volumes\", \n    \"title\": \"Created gce_snapshot module\"\n  }, \n  \"20058\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nconnection plugin\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThis PR follows #14334 from @larsks as it seems like he is not following his PR anymore (so all credits for this work to him) and some people are willing to benefit from this feature.\\r\\nI adapted the patch according to @bcoca comments and did the rebase to have a patch that could be merged.\\r\\n\\r\\nFrom @larsks words:\\r\\n\\r\\nThis commit adds a connection driver built on top of systemd-nspawn.\\r\\nThis is similar to the existing `chroot` driver, except that nspawn\\r\\noffers a variety of additional services. For example, it takes care of\\r\\nautomatically mounting `/proc` and `/sys` inside the chroot environment,\\r\\nwhich will make a variety of tools work correctly that would otherwise\\r\\nfail.\\r\\n\\r\\nYou can take advantage of other system-nspawn features to perform more\\r\\ncomplicated tasks. For example, on my x86_64 system I have a Raspberry\\r\\nPi disk image mounted on `/rpi`. I can't use chroot with this because\\r\\nthe binaries contained in the image are for the wrong architecture.\\r\\nHowever, I can use the systemd-nspawn `--bind` option to automatically\\r\\ninsert the appropriate qemu-arm binary into the container using an\\r\\ninventory file like this:\\r\\n\\r\\n```\\r\\npi ansible_host=/rpi ansible_nspawn_extra_args='--bind /usr/bin/qemu-arm --bind /lib64'\\r\\n```\\r\\n\\r\\nSee http://www.freedesktop.org/software/systemd/man/systemd-nspawn.html\\r\\nfor more information about systemd-nspawn itself.\\r\\n\\r\\nPlease take a look at #14334 for the full history about this.\", \n    \"component_name\": \"connection plugin\", \n    \"component_raw\": \"connection plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20058\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:cli/\", \n      \"c:constants\", \n      \"c:plugins/connection\", \n      \"feature\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This PR follows #14334 from @larsks as it seems like he is not following his PR anymore (so all credits for this work to him) and some people are willing to benefit from this feature.\\n\\nI adapted the patch according to @bcoca comments and did the rebase to have a patch that could be merged.\\n\\n\\n\\nFrom @larsks words:\\n\\n\\n\\nThis commit adds a connection driver built on top of systemd-nspawn.\\n\\nThis is similar to the existing `chroot` driver, except that nspawn\\n\\noffers a variety of additional services. For example, it takes care of\\n\\nautomatically mounting `/proc` and `/sys` inside the chroot\", \n    \"title\": \"Add systemd-nspawn connection driver\"\n  }, \n  \"20059\": {\n    \"ansible_version\": \"ansible 2.3.0 (s3_sync_mime_fix a498861b21) last updated 2017/01/09 191534 (GMT +000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ns3_sync\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (s3_sync_mime_fix a498861b21) last updated 2017/01/09 19:15:34 (GMT +000)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThe s3_sync module does not appropriately set the mime type of the files that it syncs to S3. This change makes a minor update to ensure that the mime type is set.  Before this, a file like index.html would have a contentType of binary/octet-stream per s3api head-object. After it has a contentType of text/html.\\r\\n\", \n    \"component_name\": \"s3_sync\", \n    \"component_raw\": \"s3_sync\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20059\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"community_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/s3_sync.py\", \n    \"summary\": \"The s3_sync module does not appropriately set the mime type of the files that it syncs to S3. This change makes a minor update to ensure that the mime type is set.  Before this, a file like index.html would have a contentType of binary/octet-stream per s3api head-object. After it has a contentType of text/html.\", \n    \"title\": \"fixing mime types in s3_sync module\"\n  }, \n  \"20060\": {\n    \"ansible_version\": \"ansible 2.3.0 (net_template_import 3931d6996c) last updated 2017/01/09 143028 (GMT -400)\\nconfig file = /home/adrian/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n\\r\\n - Bugfix Pull Request\\r\\n -\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nlib/ansible/plugins/action/net_template.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (net_template_import 3931d6996c) last updated 2017/01/09 14:30:28 (GMT -400)\\r\\n  config file = /home/adrian/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nFix an incorrect import in net_template.py\", \n    \"component_name\": \"lib/ansible/plugins/action/net_template.py\", \n    \"component_raw\": \"lib/ansible/plugins/action/net_template.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20060\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:plugins/action\", \n      \"needs_revision\", \n      \"networking\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Fix an incorrect import in net_template.py\", \n    \"title\": \"Fix 'No module named network' net_template error\"\n  }, \n  \"20062\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.1.1.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_vpc_dhcp_options \\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible --version\\r\\nansible 2.1.1.0\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nansible_managed = Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host}\\r\\n\\r\\ndeprecation_warnings = True\\r\\n\\r\\nhash_behaviour=merge\\r\\n\\r\\nforce_color=1\\r\\n\\r\\n# gather facts unless told not to\\r\\ngathering=implicit\\r\\n\\r\\n# default host list for ansible-playbook should be safe\\r\\nhosts=null\\r\\n\\r\\n# Roles path includes configured rolesets from ilmn-ansible\\r\\nroles_path=../../roles/myroles\\r\\n\\r\\n# Inventory Path\\r\\ninventory = ./inventory\\r\\n\\r\\nsystem_warnings = True\\r\\n\\r\\n# disable showing skipped plays by hosts that don't match.  i.e. redhat.yml debian.yml\\r\\ndisplay_skipped_hosts=False\\r\\n\\r\\n# disable ssh authenticity checking so we don't get prompted to accept the key on new provisioning\\r\\nhost_key_checking = False\\r\\n\\r\\nretry_files_save_path=~\\r\\n\\r\\ntimeout=30\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\ncentos7\\r\\n\\r\\n##### SUMMARY\\r\\nI am able to provide multiple tags using vars in other regions but when using the same variables on us-east-1 it fails.  This is what I have in my host var file.  If I only include the Name tag it works fine. I have also wrapped the value of each tag in quotes but same issue.\\r\\n```\\r\\ntags:\\r\\n  Name: dhcp_options\\r\\n  Environment: Prod\\r\\n```\\r\\n##### STEPS TO REPRODUCE\\r\\nCreate an option set in us-east-1 with multiple tags\\r\\n\\r\\n##### EXAMPLE PLAYBOOK\\r\\n```\\r\\n---\\r\\n\\r\\n- name: dhcp setup and association\\r\\n  connection: local\\r\\n  hosts: \\\"{{ hosts }}\\\"\\r\\n  gather_facts: false\\r\\n\\r\\n  tasks:\\r\\n    - name: create the dhcp option set\\r\\n      ec2_vpc_dhcp_options:\\r\\n        profile: \\\"{{ profile }}\\\"\\r\\n        delete_old: true\\r\\n        domain_name: \\\"{{ domain_name }}\\\"\\r\\n        region: \\\"{{ region }}\\\"\\r\\n        dns_servers: \\\"{{ dns_servers }}\\\"\\r\\n        ntp_servers: \\\"{{ ntp_servers }}\\\"\\r\\n        tags: \\\"{{ tags }}\\\"\\r\\n      register: ec2_vpc_dhcp_options\\r\\n    - debug: var=ec2_vpc_dhcp_options\\r\\n\\r\\n    - name: associate the dhcp option set\\r\\n      ec2_vpc_dhcp_options:\\r\\n        region: \\\"{{ region }}\\\"\\r\\n        profile: \\\"{{ profile }}\\\"\\r\\n        dhcp_options_id: \\\"{{ ec2_vpc_dhcp_options.dhcp_options_id }}\\\"\\r\\n        vpc_id: \\\"{{ vpc_id }}\\\"\\r\\n```\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/tmp/ansible_aIuoCA/ansible_module_ec2_vpc_dhcp_options.py\\\", line 385, in <module>\\r\\n    main()\\r\\n  File \\\"/tmp/ansible_aIuoCA/ansible_module_ec2_vpc_dhcp_options.py\\\", line 368, in main\\r\\n    ensure_tags(connection, dhcp_option.id, params['tags'], False, module.check_mode)\\r\\n  File \\\"/tmp/ansible_aIuoCA/ansible_module_ec2_vpc_dhcp_options.py\\\", line 231, in ensure_tags\\r\\n    module.fail_json(msg=get_error_message(e.args[2]))\\r\\nNameError: global name 'module' is not defined\\r\\n\\r\\nfatal: [dhcp-prd-use1]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"invocation\\\": {\\\"module_name\\\": \\\"ec2_vpc_dhcp_options\\\"}, \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_aIuoCA/ansible_module_ec2_vpc_dhcp_options.py\\\\\\\", line 385, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_aIuoCA/ansible_module_ec2_vpc_dhcp_options.py\\\\\\\", line 368, in main\\\\n    ensure_tags(connection, dhcp_option.id, params['tags'], False, module.check_mode)\\\\n  File \\\\\\\"/tmp/ansible_aIuoCA/ansible_module_ec2_vpc_dhcp_options.py\\\\\\\", line 231, in ensure_tags\\\\n    module.fail_json(msg=get_error_message(e.args[2]))\\\\nNameError: global name 'module' is not defined\\\\n\\\", \\\"module_stdout\\\": \\\"\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\", \\\"parsed\\\": false}\\r\\n```\", \n    \"component_name\": \"ec2_vpc_dhcp_options\", \n    \"component_raw\": \"ec2_vpc_dhcp_options\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20062\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_dhcp_options.py\", \n    \"summary\": \"I am able to provide multiple tags using vars in other regions but when using the same variables on us-east-1 it fails.  This is what I have in my host var file.  If I only include the Name tag it works fine. I have also wrapped the value of each tag in quotes but same issue.\\n\\n```\\n\\ntags:\\n\\n  Name: dhcp_options\\n\\n  Environment: Prod\\n\\n```\", \n    \"title\": \"adding multiple tags with ec2_vpc_dhcp_options is failing only in us-east-1 region\"\n  }, \n  \"20063\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 0aad46c85b) last updated 2017/01/09 161121 (GMT -400)\\nconfig file = /home/jadams/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nTemplate\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel 0aad46c85b) last updated 2017/01/09 16:11:21 (GMT -400)\\r\\n  config file = /home/jadams/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nTested on vanilla / no extra configuration\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A but tested from Fedora 25\\r\\n\\r\\n##### SUMMARY\\r\\nWhen Jinja2 dependency is >= 2.9.0, nested templates inside of loops defined in a parent template do not receive the local scope. For example: \\r\\n```\\r\\n{% for item in foo %}\\r\\n    {% include \\\"other_template.j2\\\" %}\\r\\n{% endfor %\\r\\n```\\r\\nIn the above example, other_template.j2 would not have the item variable defined.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n# Example Playbook\\r\\n- hosts: localhost\\r\\n  connection: local\\r\\n  vars:\\r\\n    foo:\\r\\n      - bar\\r\\n      - baz\\r\\n  tasks:\\r\\n    - name: Test Template\\r\\n      template: src=parent.j2 dest=/tmp/template.out\\r\\n```\\r\\n```jinja2\\r\\n# parent.j2\\r\\n{% for item in foo %}\\r\\n    {% include \\\"subtemplate.j2\\\" %}\\r\\n{% endfor %}\\r\\n\\r\\n```\\r\\n\\r\\n```\\r\\n#subtemplate.j2\\r\\n{{ item }}\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nExpected the output of the following file:\\r\\n```\\r\\nbar\\r\\nbaz\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nTASK [Test Template] ************************************************************************************************************************************************************************************************************************\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"AnsibleUndefinedVariable: 'item' is undefined\\\"}\\r\\n```\\r\\n\\r\\nI believe this is because of the Jinja2 Context changes mentioned [here](http://jinja.pocoo.org/docs/2.9/changelog/#version-2-9) in combination with Ansible overriding default Jinja2 functions. I wasn't able to track down the root cause in my limited testing. \", \n    \"component_name\": \"template\", \n    \"component_raw\": \"Template\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20063\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:template/other\", \n      \"c:template/templar\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/template.py\", \n    \"summary\": \"When Jinja2 dependency is >= 2.9.0, nested templates inside of loops defined in a parent template do not receive the local scope. For example: \\n\\n```\\n\\n{% for item in foo %}\\n\\n    {% include \\\"other_template.j2\\\" %}\\n\\n{% endfor %\\n\\n```\\n\\nIn the above example, other_template.j2 would not have the item variable defined.\", \n    \"title\": \"Jinja2 2.9+ breaks included template context\"\n  }, \n  \"20064\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"This module lets you modify part of a JSON file by specifying the path\\r\\nto the node you want to update, without caring about how the JSON file\\r\\nis formatted. This is a more robust solution for updating parts of a\\r\\nJSON document than using the lineinfile module, for example.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\njsonmod\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAs an example, assume you have a file containing this JSON document:\\r\\n\\r\\n    {\\r\\n        \\\"droids\\\": [\\r\\n            {\\r\\n                \\\"name\\\": \\\"C-4PO\\\",\\r\\n                \\\"class\\\": \\\"protocol\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"R2-D2\\\"\\r\\n            }\\r\\n        ]\\r\\n    }\\r\\n\\r\\nAnd I then ran a task that looked like so over this JSON file:\\r\\n\\r\\n    - name: Fix issues with droid information\\r\\n      jsonmod:\\r\\n        data_str: \\\"{{ item.data }}\\\"\\r\\n        json_path: \\\"{{ item.path }}\\\"\\r\\n        path: \\\"/path/to/droids.json\\\"\\r\\n      with_items:\\r\\n        - { data: \\\"C-3PO\\\", path: \\\"droids[0]name\\\" }\\r\\n        - { data: \\\"astromech\\\", path: \\\"droids[1]class\\\" }\\r\\n\\r\\nThat document would now look like this:\\r\\n\\r\\n    {\\r\\n        \\\"droids\\\": [\\r\\n            {\\r\\n                \\\"name\\\": \\\"C-3PO\\\",\\r\\n                \\\"class\\\": \\\"protocol\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"R2-D2\\\",\\r\\n                \\\"class\\\": \\\"astromech\\\"\\r\\n            }\\r\\n        ]\\r\\n    }\\r\\n\\r\\nThe `jsonmod` module can also add actual JSON:\\r\\n\\r\\n    - name: Add info about BB-8\\r\\n      jsonmod:\\r\\n        data_json: {\\\"name\\\": \\\"BB-8\\\", \\\"class\\\": \\\"astromech\\\"}\\r\\n        json_path: \\\"droids[2]\\\"\\r\\n        path: \\\"/path/to/droids.json\\\"\\r\\n\\r\\nThe result would be:\\r\\n\\r\\n    {\\r\\n        \\\"droids\\\": [\\r\\n            {\\r\\n                \\\"name\\\": \\\"C-3PO\\\",\\r\\n                \\\"class\\\": \\\"protocol\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"R2-D2\\\",\\r\\n                \\\"class\\\": \\\"astromech\\\"\\r\\n            },\\r\\n            {\\r\\n                \\\"name\\\": \\\"BB-8\\\",\\r\\n                \\\"class\\\": \\\"astromech\\\"\\r\\n            }\\r\\n        ]\\r\\n    }\\r\\n\\r\\nFinally, it can also remove nodes, like so:\\r\\n\\r\\n    - name: We don't need class data now\\r\\n      jsonmod:\\r\\n        json_path: \\\"droids[{{ item }}]class\\\"\\r\\n        path: \\\"/path/to/droids.json\\\"\\r\\n        remove: yes\\r\\n      with_sequence: start=0 end=2\\r\\n\\r\\nThe result would be:\\r\\n\\r\\n    {\\r\\n        \\\"droids\\\": [\\r\\n            { \\\"name\\\": \\\"C-3PO\\\" },\\r\\n            { \\\"name\\\": \\\"R2-D2\\\" },\\r\\n            { \\\"name\\\": \\\"BB-8\\\" }\\r\\n        ]\\r\\n    }\\r\\n\\r\\nMy rationale for this is quite similar to what the `lineinfile` module is commonly used for. The difference is that JSON is a serialized format and therefore you can't make assumptions about what the file looks like.\", \n    \"component_name\": \"jsonmod\", \n    \"component_raw\": \"jsonmod\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20064\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/jsonmod.py\", \n    \"summary\": \"As an example, assume you have a file containing this JSON document:\\n\\n\\n\\n    {\\n\\n        \\\"droids\\\": [\\n\\n            {\\n\\n                \\\"name\\\": \\\"C-4PO\\\",\\n\\n                \\\"class\\\": \\\"protocol\\\"\\n\\n            },\\n\\n            {\\n\\n                \\\"name\\\": \\\"R2-D2\\\"\\n\\n            }\\n\\n        ]\\n\\n    }\\n\\n\\n\\nAnd I then ran a task that looked like so over this JSON file:\\n\\n\\n\\n    - name: Fix issues with droid information\\n\\n      jsonmod:\\n\\n        data_str: \\\"{{ item.data }}\\\"\\n\\n        json_path: \\\"{{ item.path }}\\\"\\n\\n        path: \\\"/path/to/droids.json\\\"\\n\\n      with_items:\\n\\n        - { data: \\\"C-3PO\\\", path: \\\"droids[0]name\\\" }\\n\\n        - { data: \\\"astromech\\\", path: \\\"droids[1]class\\\" }\\n\\n\\n\\nThat document would now look like this:\\n\\n\\n\\n    {\\n\\n        \\\"droids\\\": [\\n\\n            {\\n\\n                \\\"name\\\": \\\"C-3PO\\\",\\n\\n                \\\"class\\\": \\\"protocol\\\"\\n\\n            },\\n\\n            {\\n\\n                \\\"name\\\": \\\"R2-D2\\\",\\n\\n                \\\"class\\\": \\\"astromech\\\"\\n\\n            }\\n\\n        ]\\n\\n    }\\n\\n\\n\\nThe `jsonmod` module can also add actual JSON:\\n\\n\\n\\n    - name: Add info about BB-8\\n\\n      jsonmod:\\n\\n        data_json: {\\\"name\\\": \\\"BB-8\\\", \\\"class\\\": \\\"astromech\\\"}\\n\\n        json_path: \\\"droids[2]\\\"\\n\\n        path: \\\"/path/to/droids.json\\\"\\n\\n\\n\\nThe result would be:\\n\\n\\n\\n    {\\n\\n        \\\"droids\\\": [\\n\\n            {\\n\\n                \\\"name\\\": \\\"C-3PO\\\",\\n\\n                \\\"class\\\": \\\"protocol\\\"\\n\\n            },\\n\\n            {\\n\\n                \\\"name\\\": \\\"R2-D2\\\",\\n\\n                \\\"class\\\": \\\"astromech\\\"\\n\\n            },\\n\\n            {\\n\\n                \\\"name\\\": \\\"BB-8\\\",\\n\\n                \\\"class\\\": \\\"astromech\\\"\\n\\n            }\\n\\n        ]\\n\\n    }\\n\\n\\n\\nFinally, it can also remove nodes, like so:\\n\\n\\n\\n    - name: We don't need class data now\\n\\n      jsonmod:\\n\\n        json_path: \\\"droids[{{ item }}]class\\\"\\n\\n        path: \\\"/path/to/droids.json\\\"\\n\\n        remove: yes\\n\\n      with_sequence: start=0 end=2\\n\\n\\n\\nThe result would be:\\n\\n\\n\\n    {\\n\\n        \\\"droids\\\": [\\n\\n            { \\\"name\\\": \\\"C-3PO\\\" },\\n\\n            { \\\"name\\\": \\\"R2-D2\\\" },\\n\\n            { \\\"name\\\": \\\"BB-8\\\" }\\n\\n        ]\\n\\n    }\\n\\n\\n\\nMy rationale for this is quite similar to what the `lineinfile` module is commonly used for. The difference is that JSON is a serialized format and therefore you can't make assumptions about what the file looks like.\", \n    \"title\": \"Add jsonmod module\"\n  }, \n  \"20065\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvarious\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\ndevel\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdd a config and inventory variable for remote admin users.  Use it for _fixup_perms() to be able to tell when it should attempt to chown.\\r\\n\\r\\nFixes #18391\\r\\n\\r\\nThis is currently a Work In Progress.  The configuration variable should work.  The inventory var doesn't yet.  Since the action plugin uses the inventory var, this doesn't yet work.\", \n    \"component_name\": \"various\", \n    \"component_raw\": \"various\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20065\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:constants\", \n      \"c:playbook/play\", \n      \"c:playbook/play_context\", \n      \"c:plugins/action\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Add a config and inventory variable for remote admin users.  Use it for _fixup_perms() to be able to tell when it should attempt to chown.\\n\\n\\n\\nFixes #18391\\n\\n\\n\\nThis is currently a Work In Progress.  The\", \n    \"title\": \"[WIP] Add config and inventory variables for remote admin user\"\n  }, \n  \"20068\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwait_for\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n\\r\\n[defaults]\\r\\nhost_key_checking = False\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\nOSX managing Ubuntu 16.04\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWhen calling the `wait_for:` module I would expect setting the host property and path would indicate to test for the validation of the file on the host declaration but I've verified that it actually test for the local file system.   \\r\\n\\r\\nI've tried this two ways. Both of these task are roles in a playbook that run on local host.\\r\\n\\r\\n**Method 1**  _setting the delegate_to property_\\r\\nThrows an error saying the path is not found.\\r\\n```yaml\\r\\n- name: Wait for python to be installed\\r\\n  delegate_to: \\\"{{ ami.instance.public_ip }}\\\"\\r\\n  wait_for:\\r\\n    path: /usr/bin/python\\r\\n    state: present\\r\\n  ignore_errors: true\\r\\n```\\r\\n**Method 2** _setting the host property_\\r\\nLooks for the file on my local host which is executing the playbook.\\r\\n```yaml\\r\\n- name: Wait for python to be installed\\r\\n  wait_for:\\r\\n    host: \\\"{{ ami.instance.public_ip }}\\\"\\r\\n    path: /usr/bin/python\\r\\n    state: present\\r\\n  ignore_errors: true\\r\\n```\\r\\nNeither of these methods seem to work on the remote host.  The goal is to wait until python is installed on the remote host before proceeding.  I've worked around this issue by pausing, but this is obviously not ideal.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nexecute the play book by executing:\\r\\n\\r\\n`ansible-playbook ami.yml -e \\\"source=ami-e13739f6 name=test\\\"`\\r\\n\\r\\nWhere the ami.yml  playbook calls the role:\\r\\n```yaml\\r\\n- name: Launch instance\\r\\n  hosts: localhost\\r\\n  roles:\\r\\n    - {role: \\\"aws-ami\\\", ami_action: \\\"launch\\\"}\\r\\n```\\r\\n\\r\\nBelow is the gist  of the `aws-ami` role.  Please note that python is installed as part of user_data.  I've verified this work by logging into the machine.\\r\\n```yaml\\r\\n#\\r\\n#\\r\\n# some other variable definitions\\r\\n\\r\\n- name: Launch instance\\r\\n  ec2:\\r\\n    keypair: \\\"{{ ami.keypair }}\\\"\\r\\n    group_id: \\\"{{ ami.security_group_id }}\\\"\\r\\n    instance_type: \\\"{{ ami.instance_type }}\\\"\\r\\n    image: \\\"{{ ami.source }}\\\"\\r\\n    instance_tags:\\r\\n      Name: \\\"ami-{{ ami.name }}\\\"\\r\\n    count: 1\\r\\n    wait: true\\r\\n    user_data: |\\r\\n      #!/bin/sh\\r\\n      # add python 2.7 as required by ansible on ubuntu 16.04\\r\\n      apt-get update \\r\\n      apt-get -y install python\\r\\n  register: ami_result_ec2_instance\\r\\n\\r\\n- name: Storing ec2 facts\\r\\n  set_fact:\\r\\n    ami: \\\"{{ ami|combine({'instance': ami_result_ec2_instance.instances|first}) }}\\\"\\r\\n  when: ami_result_ec2_instance.changed\\r\\n\\r\\n- name: Add new instance to host group\\r\\n  add_host: \\r\\n    hostname: \\\"{{ ami.instance.public_ip }}\\\" \\r\\n    groupname: ami_host\\r\\n    ansible_ssh_private_key_file: \\\"{{ ami.local_keypath }}\\\"\\r\\n    ansible_user: ubuntu\\r\\n\\r\\n- name: Wait for SSH to come up\\r\\n  wait_for: \\r\\n    host: \\\"{{ ami.instance.public_ip }}\\\" \\r\\n    port: 22 \\r\\n    delay: 10 \\r\\n    timeout: 320 \\r\\n    state: started\\r\\n```\\r\\nNow here comes the issue. I've tried pausing here using wait_for in ever configuration imaginable and have had to settle on simply just pausing for a minute or so.\\r\\n\\r\\n```yaml\\r\\n- name: Wait for python to be installed\\r\\n  delegate_to: \\\"{{ ami.instance.public_ip }}\\\" # does not work as expected\\r\\n  wait_for:\\r\\n    #host: \\\"{{ ami.instance.public_ip }}\\\"\\r\\n    path: /usr/bin/python\\r\\n    state: present\\r\\n  ignore_errors: true\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nI expected wait_for to wait until the path defined in wait_for was defined.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nUsing module file /Library/Python/2.7/site-packages/ansible/modules/core/system/setup.py\\r\\n<54.167.49.200> ESTABLISH SSH CONNECTION FOR USER: ubuntu\\r\\n<54.167.49.200> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/tmp/ami-tmp-keypair.pem\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ubuntu -o ConnectTimeout=10 -o ControlPath=/Users/lancesanders/.ansible/cp/ansible-ssh-%h-%p-%r 54.167.49.200 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484028247.14-84444498122590 `\\\" && echo ansible-tmp-1484028247.14-84444498122590=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484028247.14-84444498122590 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<54.167.49.200> PUT /var/folders/ff/vcg73lrn5xx0z3wqrw6jbl1h0000gn/T/tmphhc8jI TO /home/ubuntu/.ansible/tmp/ansible-tmp-1484028247.14-84444498122590/setup.py\\r\\n<54.167.49.200> SSH: EXEC sftp -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/tmp/ami-tmp-keypair.pem\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ubuntu -o ConnectTimeout=10 -o ControlPath=/Users/lancesanders/.ansible/cp/ansible-ssh-%h-%p-%r '[54.167.49.200]'\\r\\n<54.167.49.200> ESTABLISH SSH CONNECTION FOR USER: ubuntu\\r\\n<54.167.49.200> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/tmp/ami-tmp-keypair.pem\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ubuntu -o ConnectTimeout=10 -o ControlPath=/Users/lancesanders/.ansible/cp/ansible-ssh-%h-%p-%r 54.167.49.200 '/bin/sh -c '\\\"'\\\"'chmod u+x /home/ubuntu/.ansible/tmp/ansible-tmp-1484028247.14-84444498122590/ /home/ubuntu/.ansible/tmp/ansible-tmp-1484028247.14-84444498122590/setup.py && sleep 0'\\\"'\\\"''\\r\\n<54.167.49.200> ESTABLISH SSH CONNECTION FOR USER: ubuntu\\r\\n<54.167.49.200> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/tmp/ami-tmp-keypair.pem\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ubuntu -o ConnectTimeout=10 -o ControlPath=/Users/lancesanders/.ansible/cp/ansible-ssh-%h-%p-%r -tt 54.167.49.200 '/bin/sh -c '\\\"'\\\"'sudo -H -S -n -u root /bin/sh -c '\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'echo BECOME-SUCCESS-jlawkkvrhsmdpvowhayiwmjxddaiajmq; /usr/bin/python /home/ubuntu/.ansible/tmp/ansible-tmp-1484028247.14-84444498122590/setup.py; rm -rf \\\"/home/ubuntu/.ansible/tmp/ansible-tmp-1484028247.14-84444498122590/\\\" > /dev/null 2>&1'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"' && sleep 0'\\\"'\\\"''\\r\\nfatal: [54.167.49.200]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"setup\\\"\\r\\n    }, \\r\\n    \\\"module_stderr\\\": \\\"OpenSSH_7.3p1, LibreSSL 2.4.1\\\\r\\\\ndebug1: Reading configuration data /Users/lancesanders/.ssh/config\\\\r\\\\ndebug1: Reading configuration data /etc/ssh/ssh_config\\\\r\\\\ndebug1: /etc/ssh/ssh_config line 20: Applying options for *\\\\r\\\\ndebug1: auto-mux: Trying existing master\\\\r\\\\ndebug2: fd 3 setting O_NONBLOCK\\\\r\\\\ndebug2: mux_client_hello_exchange: master version 4\\\\r\\\\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\\\\r\\\\ndebug3: mux_client_request_session: entering\\\\r\\\\ndebug3: mux_client_request_alive: entering\\\\r\\\\ndebug3: mux_client_request_alive: done pid = 34474\\\\r\\\\ndebug3: mux_client_request_session: session request sent\\\\r\\\\ndebug1: mux_client_request_session: master session id: 2\\\\r\\\\ndebug3: mux_client_read_packet: read header failed: Broken pipe\\\\r\\\\ndebug2: Received exit status from master 0\\\\r\\\\nShared connection to 54.167.49.200 closed.\\\\r\\\\n\\\", \\r\\n    \\\"module_stdout\\\": \\\"/bin/sh: 1: /usr/bin/python: not found\\\\r\\\\n\\\", \\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"wait_for\", \n    \"component_raw\": \"wait_for\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20068\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/wait_for.py\", \n    \"summary\": \"When calling the `wait_for:` module I would expect setting the host property and path would indicate to test for the validation of the file on the host declaration but I've verified that it actually test for the local file system.   \\n\\n\\n\\nI've tried this two ways. Both of these task are roles in a playbook that run on local host.\\n\\n\\n\\n**Method 1**  _setting the delegate_to property_\\n\\nThrows an error saying the path is not found.\\n\\n```yaml\\n\\n- name: Wait for python to be installed\\n\\n  delegate_to: \\\"{{ ami.instance.public_ip }}\\\"\\n\\n  wait_for:\\n\\n    path: /usr/bin/python\\n\\n    state: present\\n\\n  ignore_errors: true\\n\\n```\\n\\n**Method 2** _setting the host property_\\n\\nLooks for the file on my local host which is executing the playbook.\\n\\n```yaml\\n\\n- name: Wait for python to be installed\\n\\n  wait_for:\\n\\n    host: \\\"{{ ami.instance.public_ip }}\\\"\\n\\n    path: /usr/bin/python\\n\\n    state: present\\n\\n  ignore_errors: true\\n\\n```\\n\\nNeither of these methods seem to work on the remote host.  The goal is to wait until python is installed on the remote host before proceeding.  I've worked around this issue by pausing, but this is obviously not ideal.\", \n    \"title\": \"hosts added via add_host connect to localhost\"\n  }, \n  \"20069\": {\n    \"ansible_version\": \"devel 2.2\", \n    \"body\": \"\\r\\nFixes #20012\\r\\n\\r\\n##### ISSUE TYPE\\r\\n\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ngalaxy/api.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\ndevel 2.2\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nWe're getting a bytes <=> str traceback on python3.  Have to transform bytes returned from url fetching into text before handing it to json.loads().\", \n    \"component_name\": \"galaxy/api.py\", \n    \"component_raw\": \"galaxy/api.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20069\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"needs_revision\", \n      \"python3\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"We're getting a bytes <=> str traceback on python3.  Have to transform bytes returned from url fetching into text before handing it to json.loads().\", \n    \"title\": \"Convert all results from open_url() into text before deserializing the json.\"\n  }, \n  \"20070\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nansible.cfg not modified\\r\\nansible built and installed from git, ansible-2.3.0-100.git201701091240.c1f5432.devel.el7.centos.noarch.rpm\\r\\nNo new changes were made to vmware_guest module since this build.\\r\\npyvmomi 5.5.0.2014.1.1\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nCentos7 with all updates\\r\\n\\r\\n##### SUMMARY\\r\\nvmware_guest doesn't create a snapshot of a VM\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n1. Use the following .yml (see below)\\r\\n2. Use VMware ESXi 5.0.0 (Build 469512)\\r\\n3. Snapshot is not created, vSphere Client says the following (see screenshot):\\r\\n\\r\\n![vsphere](https://cloud.githubusercontent.com/assets/1813101/21799030/81794e9c-d728-11e6-8fa2-0b64087075e2.png)\\r\\n\\r\\n```yaml\\r\\n---\\r\\n- hosts: localhost\\r\\n  tasks:\\r\\n    - vmware_guest:\\r\\n        validate_certs: False\\r\\n        hostname: 192.168.0.40\\r\\n        username: root\\r\\n        password: password\\r\\n        name: Ubuntu_ffmpeg\\r\\n        snapshot_op:\\r\\n            op_type: create\\r\\n            name: snapshot\\r\\n            description: desc\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nA new snapshot is created.\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nansible-playbook -vvvvv vmware_list_snapshots.yml \\r\\nUsing /etc/ansible/ansible.cfg as config file\\r\\nLoading callback plugin default of type stdout, v2.0 from /usr/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc\\r\\n\\r\\nPLAYBOOK: vmware_list_snapshots.yml ***************************************************\\r\\n1 plays in vmware_list_snapshots.yml\\r\\n\\r\\nPLAY [localhost] **********************************************************************\\r\\n\\r\\nTASK [Gathering Facts] ****************************************************************\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/system/setup.py\\r\\n<localhost> ESTABLISH LOCAL CONNECTION FOR USER: root\\r\\n<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo ~/.ansible/tmp/ansible-tmp-1484036926.71-44277349770109 `\\\" && echo ansible-tmp-1484036926.71-44277349770109=\\\"` echo ~/.ansible/tmp/ansible-tmp-1484036926.71-44277349770109 `\\\" ) && sleep 0'\\r\\n<localhost> PUT /tmp/tmptX_zGu TO /root/.ansible/tmp/ansible-tmp-1484036926.71-44277349770109/setup.py\\r\\n<localhost> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1484036926.71-44277349770109/ /root/.ansible/tmp/ansible-tmp-1484036926.71-44277349770109/setup.py && sleep 0'\\r\\n<localhost> EXEC /bin/sh -c '/usr/bin/python /root/.ansible/tmp/ansible-tmp-1484036926.71-44277349770109/setup.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1484036926.71-44277349770109/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nok: [localhost]\\r\\n\\r\\nTASK [vmware_guest] *******************************************************************\\r\\ntask path: /root/vmware_list_snapshots.yml:4\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/cloud/vmware/vmware_guest.py\\r\\n<localhost> ESTABLISH LOCAL CONNECTION FOR USER: root\\r\\n<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo ~/.ansible/tmp/ansible-tmp-1484036926.98-211708941568595 `\\\" && echo ansible-tmp-1484036926.98-211708941568595=\\\"` echo ~/.ansible/tmp/ansible-tmp-1484036926.98-211708941568595 `\\\" ) && sleep 0'\\r\\n<localhost> PUT /tmp/tmpqs3ny5 TO /root/.ansible/tmp/ansible-tmp-1484036926.98-211708941568595/vmware_guest.py\\r\\n<localhost> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1484036926.98-211708941568595/ /root/.ansible/tmp/ansible-tmp-1484036926.98-211708941568595/vmware_guest.py && sleep 0'\\r\\n<localhost> EXEC /bin/sh -c '/usr/bin/python /root/.ansible/tmp/ansible-tmp-1484036926.98-211708941568595/vmware_guest.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1484036926.98-211708941568595/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nchanged: [localhost] => {\\r\\n    \\\"changed\\\": true, \\r\\n    \\\"failed\\\": false, \\r\\n    \\\"instance\\\": {\\r\\n        \\\"hw_eth0\\\": {\\r\\n            \\\"addresstype\\\": \\\"generated\\\", \\r\\n            \\\"ipaddresses\\\": null, \\r\\n            \\\"label\\\": \\\"Network adapter 1\\\", \\r\\n            \\\"macaddress\\\": \\\"hereIsMyMac\\\", \\r\\n            \\\"macaddress_dash\\\": \\\"hereisMyMacDash\\\", \\r\\n            \\\"summary\\\": \\\"VM Network\\\"\\r\\n        }, \\r\\n        \\\"hw_guest_full_name\\\": null, \\r\\n        \\\"hw_guest_id\\\": null, \\r\\n        \\\"hw_interfaces\\\": [\\r\\n            \\\"eth0\\\"\\r\\n        ], \\r\\n        \\\"hw_memtotal_mb\\\": 4096, \\r\\n        \\\"hw_name\\\": \\\"Ubuntu_ffmpeg\\\", \\r\\n        \\\"hw_power_status\\\": \\\"poweredOff\\\", \\r\\n        \\\"hw_processor_count\\\": 2, \\r\\n        \\\"hw_product_uuid\\\": \\\"564da9da-d92f-aa9c-8f32-004bf41f090c\\\", \\r\\n        \\\"ipv4\\\": null, \\r\\n        \\\"ipv6\\\": null, \\r\\n        \\\"module_hw\\\": true\\r\\n    }, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"annotation\\\": null, \\r\\n            \\\"cluster\\\": null, \\r\\n            \\\"customizations\\\": {}, \\r\\n            \\\"datacenter\\\": null, \\r\\n            \\\"disk\\\": [], \\r\\n            \\\"esxi_hostname\\\": null, \\r\\n            \\\"folder\\\": \\\"/vm\\\", \\r\\n            \\\"force\\\": false, \\r\\n            \\\"guest_id\\\": null, \\r\\n            \\\"hardware\\\": {}, \\r\\n            \\\"hostname\\\": \\\"192.168.0.40\\\", \\r\\n            \\\"is_template\\\": false, \\r\\n            \\\"name\\\": \\\"Ubuntu_ffmpeg\\\", \\r\\n            \\\"name_match\\\": \\\"first\\\", \\r\\n            \\\"networks\\\": {}, \\r\\n            \\\"new_name\\\": null, \\r\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n            \\\"resource_pool\\\": null, \\r\\n            \\\"snapshot_op\\\": {\\r\\n                \\\"description\\\": \\\"dest\\\", \\r\\n                \\\"name\\\": \\\"snap\\\", \\r\\n                \\\"op_type\\\": \\\"create\\\"\\r\\n            }, \\r\\n            \\\"state\\\": \\\"present\\\", \\r\\n            \\\"template_src\\\": null, \\r\\n            \\\"username\\\": \\\"root\\\", \\r\\n            \\\"uuid\\\": null, \\r\\n            \\\"validate_certs\\\": false, \\r\\n            \\\"wait_for_ip_address\\\": true\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"vmware_guest\\\"\\r\\n    }\\r\\n}\\r\\n\\r\\nPLAY RECAP ****************************************************************************\\r\\nlocalhost                  : ok=2    changed=1    unreachable=0    failed=0   \\r\\n```\\r\\n\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20070\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"vmware_guest doesn't create a snapshot of a VM\", \n    \"title\": \"vmware_guest doesn't create a snapshot\"\n  }, \n  \"20071\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n\\r\\n - Bugfix Pull Request\\r\\n \\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\n\\r\\n`contrib/inventory/docker.py`\\r\\n\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\nfix indent and fix one python codestyle E713 in  `lib/ansible/inventory/group.py`  86L and 97L\\u3002\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n--- a/contrib/inventory/docker.py\\r\\n+++ b/contrib/inventory/docker.py\\r\\n@@ -444,7 +444,7 @@ class AnsibleDockerClient(Client):\\r\\n             tls_config = TLSConfig(**kwargs)\\r\\n             return tls_config\\r\\n         except TLSParameterError as exc:\\r\\n-           self.fail(\\\"TLS config error: %s\\\" % exc)\\r\\n+            self.fail(\\\"TLS config error: %s\\\" % exc)\\r\\n\\r\\n\\r\\n--- a/lib/ansible/inventory/group.py\\r\\n+++ b/lib/ansible/inventory/group.py\\r\\n@@ -83,7 +83,7 @@ class Group:\\r\\n             raise Exception(\\\"can't add group to itself\\\")\\r\\n\\r\\n         # don't add if it's already there\\r\\n-        if not group in self.child_groups:\\r\\n+        if group not in self.child_groups:\\r\\n             self.child_groups.append(group)\\r\\n\\r\\n             # update the depth of the child\\r\\n@@ -94,7 +94,7 @@ class Group:\\r\\n\\r\\n             # now add self to child's parent_groups list, but only if there\\r\\n             # isn't already a group with the same name\\r\\n-            if not self.name in [g.name for g in group.parent_groups]:\\r\\n+            if self.name not in [g.name for g in group.parent_groups]:\\r\\n                 group.parent_groups.append(self)\\r\\n\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"contrib/inventory/docker.py\", \n    \"component_raw\": \"`contrib/inventory/docker.py`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20071\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"fix indent and fix one python codestyle E713 in  `lib/ansible/inventory/group.py`  86L and 97L\\n\\n\\n\\n\\n\\n```\\n\\n--- a/contrib/inventory/docker.py\\n\\n+++ b/contrib/inventory/docker.py\\n\\n@@ -444,7 +444,7 @@ class AnsibleDockerClient(Client):\\n\\n             tls_config = TLSConfig(**kwargs)\\n\\n             return tls_config\\n\\n         except TLSParameterError as exc:\\n\\n-           self.fail(\\\"TLS config error: %s\\\" % exc)\\n\\n+            self.fail(\\\"TLS config error: %s\\\" % exc)\\n\\n\\n\\n\\n\\n--- a/lib/ansible/inventory/group.py\\n\\n+++ b/lib/ansible/inventory/group.py\\n\\n@@ -83,7 +83,7 @@ class Group:\\n\\n             raise Exception(\\\"can't add group to itself\\\")\\n\\n\\n\\n         # don't add if it's already there\\n\\n-        if not group in self.child_groups:\\n\\n+        if group not in self.child_groups:\\n\\n             self.child_groups.append(group)\\n\\n\\n\\n             # update the depth of the child\\n\\n@@ -94,7 +94,7 @@ class Group:\\n\\n\\n\\n             # now add self to child's parent_groups list, but only if there\\n\\n             # isn't already a group with the same name\\n\\n-            if not self.name in [g.name for g in group.parent_groups]:\\n\\n+            if self.name not in [g.name for g in group.parent_groups]:\\n\\n                 group.parent_groups.append(self)\\n\\n\\n\\n\\n\\n```\", \n    \"title\": \"fix indent\"\n  }, \n  \"20072\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\napt_key module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nJust a small doc fix since gpg binary file cannot be include through lookup. It raises a not valid utf-8 string error.\", \n    \"component_name\": \"apt_key\", \n    \"component_raw\": \"apt_key module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20072\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"core_review\", \n      \"docs\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/apt_key.py\", \n    \"summary\": \"Just a small doc fix since gpg binary file cannot be include through lookup. It raises a not valid utf-8 string error.\", \n    \"title\": \"apt_key: Add information about lookup file constraint\"\n  }, \n  \"20073\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_path\\r\\n\\r\\n##### SUMMARY\\r\\nAdd win_path module for idempotent management of Windows path env vars\\r\\n\", \n    \"component_name\": \"win_path\", \n    \"component_raw\": \"win_path\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20073\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"test\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_path.py\", \n    \"summary\": \"Add win_path module for idempotent management of Windows path env vars\", \n    \"title\": \"New Module: win_path\"\n  }, \n  \"20075\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n(Actually, more of an enhancement in line with POLA)\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`lxc_inventory` dynamic inventory\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nIt doesn't make sense to create a group named `all` in a dynamic inventory script, and to artificially populate it with all LXC containers configured on a system, because that removes the ability to target hosts that are not part of any group.\\r\\n\\r\\nSo instead of tossing all hosts into the `all` group, and then in addition have groups that actually reflect the `lxc.group` configuration parameter, create a `None` (in JSON: `null`) group that has all hosts for which `lxc.group` is unset, and then have an inventory group each for all containers that do set it.\\r\\n\\r\\nAnsible still does the right thing with respect to the `all` group, in that all containers, whether or not they have `lxc.group` set, implicitly become part of `all`.\", \n    \"component_name\": \"lxc_inventory dynamic inventory\", \n    \"component_raw\": \"`lxc_inventory` dynamic inventory\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20075\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"It doesn't make sense to create a group named `all` in a dynamic inventory script, and to artificially populate it with all LXC containers configured on a system, because that removes the ability to target hosts that are not part of any group.\\n\\n\\n\\nSo instead of tossing all hosts into the `all` group, and then in addition have groups that actually reflect the `lxc.group`\", \n    \"title\": \"lxc_inventory.py: don't artificially populate the \\\"all\\\" group\"\n  }, \n  \"20076\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnxos_evpn_vni\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nFixing nxos_evpn_vni behavior when route_target_both is used.\\r\\n\\r\\nNOTE: This affects 2.2 as well!\", \n    \"component_name\": \"nxos_evpn_vni\", \n    \"component_raw\": \"nxos_evpn_vni\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20076\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"community_review\", \n      \"module\", \n      \"networking\", \n      \"owner_pr\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nxos/nxos_evpn_vni.py\", \n    \"summary\": \"Fixing nxos_evpn_vni behavior when route_target_both is used.\\n\\n\\n\\nNOTE: This affects 2.2 as well!\", \n    \"title\": \"Fixing nxos_evpn_vni behavior when route_target_both is used\"\n  }, \n  \"20077\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 8d29406d74) last updated 2017/01/10 090736 (GMT +000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n - ~~Bug Report~~\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`include_role`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel 8d29406d74) last updated 2017/01/10 09:07:36 (GMT +000)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nDefault configuration used.\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n`include_role` does not support subdirectories in `tasks_from` option.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- hosts: localhost\\r\\n  tasks:\\r\\n    - include_role:\\r\\n        name: \\\"my_role\\\"\\r\\n        tasks_from: \\\"subdir/tasks_file.yml\\\"\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nTasks from `tasks/subdir/tasks_file.yml` of the role `my_role` are executed.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nAnsible fails to find the `tasks_file.yml` inside the role.\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nERROR! Could not find specified file in role: tasks/tasks_file.yml\\r\\n```\\r\\n\", \n    \"component_name\": \"include_role\", \n    \"component_raw\": \"`include_role`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20077\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/include_role.py\", \n    \"summary\": \"`include_role` does not support subdirectories in `tasks_from` option.\", \n    \"title\": \"Add support for subdirectories in `tasks_from` option of include_role\"\n  }, \n  \"20078\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ninclude_role\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\npossible solution for #20077\\r\\n\", \n    \"component_name\": \"include_role\", \n    \"component_raw\": \"include_role\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20078\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:playbook/role_include\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"possible solution for #20077\", \n    \"title\": \"fix include_role files path resolving\"\n  }, \n  \"20079\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nwin_reboot\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nThese changes ensure win_reboot can survive an already scheduled\\r\\nshutdown by pre-empting it.\\r\\n\\r\\nThis fixes #19982\", \n    \"component_name\": \"win_reboot\", \n    \"component_raw\": \"win_reboot\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20079\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:plugins/action\", \n      \"module\", \n      \"needs_revision\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_reboot.py\", \n    \"summary\": \"These changes ensure win_reboot can survive an already scheduled\\n\\nshutdown by pre-empting it.\\n\\n\\n\\nThis fixes #19982\", \n    \"title\": \"win_reboot: survive an already scheduled shutdown\"\n  }, \n  \"20080\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvmware_guestansib\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nAnsible built from devel tarball @ https://github.com/ansible/ansible/archive/devel.tar.gz\\r\\npyshere 0.1.7\\r\\npyvmomi 6.5\\r\\nESX 6.0.0\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nCentOS Linux release 7.3.1611 (Core) patched and up to date\\r\\n\\r\\n##### SUMMARY\\r\\nvmware_guest states poweredon, poweredoff, restarted do not work if the current state is different than the intended state.  Ie., poweredon does not work for a vm that is poweredoff.  Throws this error: \\\"global name 'get_exception' is not defined\\\".  If the module doesn't need to change state (ie running poweredon on a vm that is powered on) you get no error and the status is green unchanged.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nRun this playbook:\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n---\\r\\n- hosts: localhost\\r\\n  gather_facts: False\\r\\n  connection: local\\r\\n\\r\\n  tasks:\\r\\n  - vmware_guest:\\r\\n     hostname: 10.0.0.25\\r\\n     username: sysadmin\\r\\n     password: p@ssword\\r\\n     validate_certs: False\\r\\n     name: testvm\\r\\n     state: restarted\\r\\n```\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nRestart, power on or power off vm guests\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nThrows error:  \\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [vmware_guest] *************************************************************************************************************************************************************************************************************************************************\\r\\ntask path: /opt/playbooks/vmware_poweron.yml:7\\r\\nUsing module file /opt/ansible-devel/lib/ansible/modules/cloud/vmware/vmware_guest.py\\r\\n<localhost> ESTABLISH LOCAL CONNECTION FOR USER: root\\r\\n<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo ~/.ansible/tmp/ansible-tmp-1484045789.62-15924742279620 `\\\" && echo ansible-tmp-1484045789.62-15924742279620=\\\"` echo ~/.ansible/tmp/ansible-tmp-1484045789.62-15924742279620 `\\\" ) && sleep 0'\\r\\n<localhost> PUT /tmp/tmpEnTUQ4 TO /root/.ansible/tmp/ansible-tmp-1484045789.62-15924742279620/vmware_guest.py\\r\\n<localhost> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1484045789.62-15924742279620/ /root/.ansible/tmp/ansible-tmp-1484045789.62-15924742279620/vmware_guest.py && sleep 0'\\r\\n<localhost> EXEC /bin/sh -c '/usr/bin/python /root/.ansible/tmp/ansible-tmp-1484045789.62-15924742279620/vmware_guest.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1484045789.62-15924742279620/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/tmp/ansible_oWcaJm/ansible_module_vmware_guest.py\\\", line 1848, in <module>\\r\\n    main()\\r\\n  File \\\"/tmp/ansible_oWcaJm/ansible_module_vmware_guest.py\\\", line 1814, in main\\r\\n    tmp_result = pyv.set_powerstate(vm, module.params['state'], module.params['force'])\\r\\n  File \\\"/tmp/ansible_oWcaJm/ansible_module_vmware_guest.py\\\", line 762, in set_powerstate\\r\\n    'msg': get_exception()}\\r\\nNameError: global name 'get_exception' is not defined\\r\\n\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"vmware_guest\\\"\\r\\n    },\\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_oWcaJm/ansible_module_vmware_guest.py\\\\\\\", line 1848, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_oWcaJm/ansible_module_vmware_guest.py\\\\\\\", line 1814, in main\\\\n    tmp_result = pyv.set_powerstate(vm, module.params['state'], module.params['force'])\\\\n  File \\\\\\\"/tmp/ansible_oWcaJm/ansible_module_vmware_guest.py\\\\\\\", line 762, in set_powerstate\\\\n    'msg': get_exception()}\\\\nNameError: global name 'get_exception' is not defined\\\\n\\\",\\r\\n    \\\"module_stdout\\\": \\\"\\\",\\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\",\\r\\n    \\\"rc\\\": 0\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"vmware_guestansib\", \n    \"component_raw\": \"vmware_guestansib\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20080\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"vmware_guest states poweredon, poweredoff, restarted do not work if the current state is different than the intended state.  Ie., poweredon does not work for a vm that is poweredoff.  Throws this error: \\\"global name 'get_exception' is not defined\\\".  If the module doesn't need to change state (ie running poweredon on a vm that is powered on) you get no error and the status is green unchanged.\", \n    \"title\": \"vmware_guest state fails with exception\"\n  }, \n  \"20081\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/meaneye/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`git`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/meaneye/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nOnly thing in `~/.ansible.cfg` is `nocows` and `inventory`.\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nSystem running the playbook:\\r\\n\\r\\nDistributor ID:\\tDebian\\r\\nDescription:\\tDebian GNU/Linux testing (stretch)\\r\\nRelease:\\ttesting\\r\\nCodename:\\tstretch\\r\\n\\r\\nLinux bytewiper 4.8.0-2-amd64 #1 SMP Debian 4.8.15-2 (2017-01-04) x86_64 GNU/Linux\\r\\n\\r\\nTarget system:\\r\\n\\r\\nCentOS release 6.8 (Final)\\r\\nLinux way2cu-usa1.com 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux\\r\\ngit version 1.7.1\\r\\n\\r\\n##### SUMMARY\\r\\nCloning online repository fails with message stating submodules couldn't be initialized. Debug message provided indicates that `git` received incorrect parameters.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n- name: Cloning specified Caracal branch\\r\\n  git: repo=https://github.com/Way2CU/Caracal.git\\r\\n        dest={{ site_directory }}\\r\\n        recursive=yes\\r\\n        force=yes\\r\\n        version=\\\"{{ site.caracal_branch }}\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nCloned repository with all the submodules checked out.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nPlaybook stops with critical error shown as following:\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nfatal: [...]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Failed to init/update submodules: Usage: git submodule [--quiet] add [-b branch] [--reference <repository>] [--] <repository> [<path>]\\\\n   or: git submodule [--quiet] status [--cached] [--recursive] [--] [<path>...]\\\\n   or: git submodule [--quiet] init [--] [<path>...]\\\\n   or: git submodule [--quiet] update [--init] [-N|--no-fetch] [--rebase] [--reference <repository>] [--merge] [--recursive] [--] [<path>...]\\\\n   or: git submodule [--quiet] summary [--cached|--files] [--summary-limit <n>] [commit] [--] [<path>...]\\\\n   or: git submodule [--quiet] foreach [--recursive] <command>\\\\n   or: git submodule [--quiet] sync [--] [<path>...]\\\\n\\\"}\\r\\n\\tto retry, use: --limit @/home/meaneye/Development/Workspace/.../deploy/deploy.retry\\r\\n```\\r\\n\\r\\nTo get around issue, logging into server and manually executing `git submodule init` followed by `git submodule update` make Ansible skip this task marking it as passed.\", \n    \"component_name\": \"git\", \n    \"component_raw\": \"`git`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20081\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/source_control/git.py\", \n    \"summary\": \"Cloning online repository fails with message stating submodules couldn't be initialized. Debug message provided indicates that `git` received incorrect parameters.\", \n    \"title\": \"Git submodule support is broken.\"\n  }, \n  \"20083\": {\n    \"ansible_version\": \"\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnet_command\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n##### SUMMARY\\r\\nAlso fixes the last few hardcods hostnames  in junos tests\\r\\n```\\r\\n\\r\\nANSIBLE_ROLES_PATH=targets  ansible-playbook -vvvv -i inventory.network net_command.yml -u vyos --private-key=~/.ssh/jobarker-aworks.pem\\r\\n\\r\\n\\r\\nNo config file found; using defaults\\r\\nLoading callback plugin default of type stdout, v2.0 from /home/johnb/git/ansible-inc/ansible/lib/ansible/plugins/callback/__init__.pyc\\r\\n\\r\\nPLAYBOOK: net_command.yml ************************************************************************************************************************************************************************************************************************\\r\\n1 plays in net_command.yml\\r\\n\\r\\nPLAY [vyos] **************************************************************************************************************************************************************************************************************************************\\r\\n\\r\\nTASK [net_command : Check we can communicate using net_command] **********************************************************************************************************************************************************************************\\r\\ntask path: /home/johnb/git/ansible-inc/ansible/test/integration/targets/net_command/tasks/main.yml:23\\r\\n<ec2-54-161-180-253.compute-1.amazonaws.com> ESTABLISH CONNECTION FOR USER: vyos on PORT 22 TO ec2-54-161-180-253.compute-1.amazonaws.com\\r\\n<ec2-54-161-180-253.compute-1.amazonaws.com> closing connection\\r\\nchanged: [ec2-54-161-180-253.compute-1.amazonaws.com] => {\\r\\n    \\\"changed\\\": true, \\r\\n    \\\"delta\\\": \\\"0:00:04.137801\\\", \\r\\n    \\\"end\\\": \\\"2017-01-10 12:09:55.136896\\\", \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"_raw_params\\\": \\\"show version\\\"\\r\\n        }\\r\\n    }, \\r\\n    \\\"rc\\\": 0, \\r\\n    \\\"start\\\": \\\"2017-01-10 12:09:50.999095\\\", \\r\\n    \\\"stderr\\\": \\\"\\\", \\r\\n    \\\"stdout\\\": \\\"Version:      VyOS 1.1.0\\\\nDescription:  VyOS 1.1.0 (helium)\\\\nCopyright:    2014 VyOS maintainers and contributors\\\\nBuilt by:     maintainers@vyos.net\\\\nBuilt on:     Thu Oct  9 22:27:26 UTC 2014\\\\nBuild ID:     1410092227-af6433f\\\\nSystem type:  x86 64-bit\\\\nBoot via:     image\\\\nHypervisor:   Xen hvm\\\\nHW model:     HVM domU\\\\nHW S/N:       ec23c27e-67d9-ae07-455a-311d27b03a71\\\\nHW UUID:      EC23C27E-67D9-AE07-455A-311D27B03A71\\\\nUptime:       12:09:55 up 3 days, 18:26,  2 users,  load average: 0.00, 0.01, 0.05\\\", \\r\\n    \\\"stdout_lines\\\": [\\r\\n        \\\"Version:      VyOS 1.1.0\\\", \\r\\n        \\\"Description:  VyOS 1.1.0 (helium)\\\", \\r\\n        \\\"Copyright:    2014 VyOS maintainers and contributors\\\", \\r\\n        \\\"Built by:     maintainers@vyos.net\\\", \\r\\n        \\\"Built on:     Thu Oct  9 22:27:26 UTC 2014\\\", \\r\\n        \\\"Build ID:     1410092227-af6433f\\\", \\r\\n        \\\"System type:  x86 64-bit\\\", \\r\\n        \\\"Boot via:     image\\\", \\r\\n        \\\"Hypervisor:   Xen hvm\\\", \\r\\n        \\\"HW model:     HVM domU\\\", \\r\\n        \\\"HW S/N:       ec23c27e-67d9-ae07-455a-311d27b03a71\\\", \\r\\n        \\\"HW UUID:      EC23C27E-67D9-AE07-455A-311D27B03A71\\\", \\r\\n        \\\"Uptime:       12:09:55 up 3 days, 18:26,  2 users,  load average: 0.00, 0.01, 0.05\\\"\\r\\n    ]\\r\\n}\\r\\n\\r\\nTASK [net_command : debug] ***********************************************************************************************************************************************************************************************************************\\r\\ntask path: /home/johnb/git/ansible-inc/ansible/test/integration/targets/net_command/tasks/main.yml:28\\r\\nok: [ec2-54-161-180-253.compute-1.amazonaws.com] => {\\r\\n    \\\"msg\\\": \\\"Version:      VyOS 1.1.0\\\\nDescription:  VyOS 1.1.0 (helium)\\\\nCopyright:    2014 VyOS maintainers and contributors\\\\nBuilt by:     maintainers@vyos.net\\\\nBuilt on:     Thu Oct  9 22:27:26 UTC 2014\\\\nBuild ID:     1410092227-af6433f\\\\nSystem type:  x86 64-bit\\\\nBoot via:     image\\\\nHypervisor:   Xen hvm\\\\nHW model:     HVM domU\\\\nHW S/N:       ec23c27e-67d9-ae07-455a-311d27b03a71\\\\nHW UUID:      EC23C27E-67D9-AE07-455A-311D27B03A71\\\\nUptime:       12:09:55 up 3 days, 18:26,  2 users,  load average: 0.00, 0.01, 0.05\\\"\\r\\n}\\r\\n\\r\\nTASK [net_command : Ensure output is valid] ******************************************************************************************************************************************************************************************************\\r\\ntask path: /home/johnb/git/ansible-inc/ansible/test/integration/targets/net_command/tasks/main.yml:31\\r\\nok: [ec2-54-161-180-253.compute-1.amazonaws.com] => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"that\\\": [\\r\\n                \\\"result.changed == true\\\", \\r\\n                \\\"'VyOS' in result.stdout\\\"\\r\\n            ]\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"assert\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"All assertions passed\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP ***************************************************************************************************************************************************************************************************************************************\\r\\nec2-54-161-180-253.compute-1.amazonaws.com : ok=3    changed=1    unreachable=0    failed=0   \\r\\n\\r\\n\\r\\n```\\n\\n<!-- Reviewable:start -->\\n---\\nThis change is\\u2002[<img src=\\\"https://reviewable.io/review_button.svg\\\" height=\\\"34\\\" align=\\\"absmiddle\\\" alt=\\\"Reviewable\\\"/>](https://reviewable.io/reviews/ansible/ansible/20083)\\n<!-- Reviewable:end -->\\n\", \n    \"component_name\": \"net_command\", \n    \"component_raw\": \"net_command\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20083\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"needs_revision\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Also fixes the last few hardcods hostnames  in junos tests\\n\\n```\\n\\n\\n\\nANSIBLE_ROLES_PATH=targets  ansible-playbook -vvvv -i inventory.network net_command.yml -u vyos --private-key=~/.ssh/jobarker-aworks.pem\\n\\n\\n\\n\\n\\nNo config file found; using defaults\\n\\nLoading callback plugin default of type stdout, v2.0 from /home/johnb/git/ansible-inc/ansible/lib/ansible/plugins/callback/__init__.pyc\\n\\n\\n\\nPLAYBOOK: net_command.yml ************************************************************************************************************************************************************************************************************************\\n\\n1 plays in net_command.yml\\n\\n\\n\\nPLAY [vyos] **************************************************************************************************************************************************************************************************************************************\\n\\n\\n\\nTASK [net_command : Check we can communicate using net_command] **********************************************************************************************************************************************************************************\\n\\ntask path: /home/johnb/git/ansible-inc/ansible/test/integration/targets/net_command/tasks/main.yml:23\\n\\n<ec2-54-161-180-253.compute-1.amazonaws.com> ESTABLISH CONNECTION FOR USER: vyos on PORT 22 TO ec2-54-161-180-253.compute-1.amazonaws.com\\n\\n<ec2-54-161-180-253.compute-1.amazonaws.com> closing connection\\n\\nchanged: [ec2-54-161-180-253.compute-1.amazonaws.com] => {\\n\\n    \\\"changed\\\": true, \\n\\n    \\\"delta\\\": \\\"0:00:04.137801\\\", \\n\\n    \\\"end\\\": \\\"2017-01-10 12:09:55.136896\\\", \\n\\n    \\\"invocation\\\": {\\n\\n        \\\"module_args\\\": {\\n\\n            \\\"_raw_params\\\": \\\"show version\\\"\\n\\n        }\\n\\n    }, \\n\\n    \\\"rc\\\": 0, \\n\\n    \\\"start\\\": \\\"2017-01-10 12:09:50.999095\\\", \\n\\n    \\\"stderr\\\": \\\"\\\", \\n\\n    \\\"stdout\\\": \\\"Version:      VyOS 1.1.0\\\\nDescription:  VyOS 1.1.0 (helium)\\\\nCopyright:    2014 VyOS maintainers and contributors\\\\nBuilt by:     maintainers@vyos.net\\\\nBuilt on:     Thu Oct  9 22:27:26 UTC 2014\\\\nBuild ID:     1410092227-af6433f\\\\nSystem type:  x86 64-bit\\\\nBoot via:     image\\\\nHypervisor:   Xen hvm\\\\nHW model:     HVM domU\\\\nHW S/N:       ec23c27e-67d9-ae07-455a-311d27b03a71\\\\nHW UUID:      EC23C27E-67D9-AE07-455A-311D27B03A71\\\\nUptime:       12:09:55 up 3 days, 18:26,  2 users,  load average: 0.00, 0.01, 0.05\\\", \\n\\n    \\\"stdout_lines\\\": [\\n\\n        \\\"Version:      VyOS 1.1.0\\\", \\n\\n        \\\"Description:  VyOS 1.1.0 (helium)\\\", \\n\\n        \\\"Copyright:    2014 VyOS maintainers and contributors\\\", \\n\\n        \\\"Built by:     maintainers@vyos.net\\\", \\n\\n        \\\"Built on:     Thu Oct  9 22:27:26 UTC 2014\\\", \\n\\n        \\\"Build ID:     1410092227-af6433f\\\", \\n\\n        \\\"System type:  x86 64-bit\\\", \\n\\n        \\\"Boot via:     image\\\", \\n\\n        \\\"Hypervisor:   Xen hvm\\\", \\n\\n        \\\"HW model:     HVM domU\\\", \\n\\n        \\\"HW S/N:       ec23c27e-67d9-ae07-455a-311d27b03a71\\\", \\n\\n        \\\"HW UUID:      EC23C27E-67D9-AE07-455A-311D27B03A71\\\", \\n\\n        \\\"Uptime:       12:09:55 up 3 days, 18:26,  2 users,  load average: 0.00, 0.01, 0.05\\\"\\n\\n    ]\\n\\n}\\n\\n\\n\\nTASK [net_command : debug] ***********************************************************************************************************************************************************************************************************************\\n\\ntask path: /home/johnb/git/ansible-inc/ansible/test/integration/targets/net_command/tasks/main.yml:28\\n\\nok: [ec2-54-161-180-253.compute-1.amazonaws.com] => {\\n\\n    \\\"msg\\\": \\\"Version:      VyOS 1.1.0\\\\nDescription:  VyOS 1.1.0 (helium)\\\\nCopyright:    2014 VyOS maintainers and contributors\\\\nBuilt by:     maintainers@vyos.net\\\\nBuilt on:     Thu Oct  9 22:27:26 UTC 2014\\\\nBuild ID:     1410092227-af6433f\\\\nSystem type:  x86 64-bit\\\\nBoot via:     image\\\\nHypervisor:   Xen hvm\\\\nHW model:     HVM domU\\\\nHW S/N:       ec23c27e-67d9-ae07-455a-311d27b03a71\\\\nHW UUID:      EC23C27E-67D9-AE07-455A-311D27B03A71\\\\nUptime:       12:09:55 up 3 days, 18:26,  2 users,  load average: 0.00, 0.01, 0.05\\\"\\n\\n}\\n\\n\\n\\nTASK [net_command : Ensure output is valid] ******************************************************************************************************************************************************************************************************\\n\\ntask path: /home/johnb/git/ansible-inc/ansible/test/integration/targets/net_command/tasks/main.yml:31\\n\\nok: [ec2-54-161-180-253.compute-1.amazonaws.com] => {\\n\\n    \\\"changed\\\": false, \\n\\n    \\\"invocation\\\": {\\n\\n        \\\"module_args\\\": {\\n\\n            \\\"that\\\": [\\n\\n                \\\"result.changed == true\\\", \\n\\n                \\\"'VyOS' in result.stdout\\\"\\n\\n            ]\\n\\n        }, \\n\\n        \\\"module_name\\\": \\\"assert\\\"\\n\\n    }, \\n\\n    \\\"msg\\\": \\\"All assertions passed\\\"\\n\\n}\\n\\n\\n\\nPLAY RECAP ***************************************************************************************************************************************************************************************************************************************\\n\\nec2-54-161-180-253.compute-1.amazonaws.com : ok=3    changed=1    unreachable=0    failed=0   \\n\\n\\n\\n\\n\\n```\\n\\n\\n---\\nThis change is[<img src=\\\"https://reviewable.io/review_button.svg\\\" height=\\\"34\\\" align=\\\"absmiddle\\\" alt=\\\"Reviewable\\\"/>](https://reviewable.io/reviews/ansible/ansible/20083)\", \n    \"title\": \"Junos aws\"\n  }, \n  \"20084\": {\n    \"ansible_version\": \"ansible 2.2.1.0 (detached HEAD d8c9b8d347) last updated 2017/01/10 134037 (GMT +300)\\nlib/ansible/modules/core (detached HEAD a9d844c089) last updated 2017/01/10 134047 (GMT +300)\\nlib/ansible/modules/extras (detached HEAD 19d20ca1a0) last updated 2017/01/10 134049 (GMT +300)\\nconfig file = /home/mg/src/deployments/provisioning/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`service` module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.1.0 (detached HEAD d8c9b8d347) last updated 2017/01/10 13:40:37 (GMT +300)\\r\\n  lib/ansible/modules/core: (detached HEAD a9d844c089) last updated 2017/01/10 13:40:47 (GMT +300)\\r\\n  lib/ansible/modules/extras: (detached HEAD 19d20ca1a0) last updated 2017/01/10 13:40:49 (GMT +300)\\r\\n  config file = /home/mg/src/deployments/provisioning/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nTarget: Ubuntu 14.04 LTS\\r\\n\\r\\n##### SUMMARY\\r\\nThe `service` module reports `changed` for services that are already running.\\r\\n\\r\\nThis is a regression since 2.2.0 final.\\r\\n\\r\\nThis bug is not present in current `devel` (git bcf9cd1).\\r\\n\\r\\nThis bug affects remote targets running Ubuntu 14.04 LTS but not Ubuntu 16.04 LTS.\\r\\n\\r\\nI haven't actually verified this, but from what I can tell in the code there's a more serious consequence: due to the inverted check `service: state=started` will fail to start services that are not running, and `service: state=stopped` will fail to stop services that are running.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```yaml\\r\\n- hosts: all\\r\\n  gather_facts: no\\r\\n  tasks:\\r\\n    - service: name=postfix state=started\\r\\n```\\r\\n\\r\\n- `ansible-playbook -i example.com, -u root test.yml -C`\\r\\n\\r\\nThe same thing happens if you omit `-C`.\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n```\\r\\nPLAY [all] *********************************************************************\\r\\n\\r\\nTASK [service] *****************************************************************\\r\\nok: [iv-1.pov.lt]\\r\\n\\r\\nTASK [assert] ******************************************************************\\r\\nok: [iv-1.pov.lt] => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"msg\\\": \\\"All assertions passed\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\niv-1.pov.lt                : ok=2    changed=0    unreachable=0    failed=0   \\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nansible-playbook -i iv-1.pov.lt, -u root -CD test.yml\\r\\n\\r\\nPLAY [all] *********************************************************************\\r\\n\\r\\nTASK [service] *****************************************************************\\r\\nchanged: [iv-1.pov.lt]\\r\\n\\r\\nTASK [assert] ******************************************************************\\r\\nfatal: [iv-1.pov.lt]: FAILED! => {\\r\\n    \\\"assertion\\\": \\\"not foo.changed\\\", \\r\\n    \\\"changed\\\": false, \\r\\n    \\\"evaluated_to\\\": false, \\r\\n    \\\"failed\\\": true\\r\\n}\\r\\n\\tto retry, use: --limit @/home/mg/src/bugs/ansible-bug/test.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\niv-1.pov.lt                : ok=1    changed=1    unreachable=0    failed=1   \\r\\n```\\r\\n\", \n    \"component_name\": \"service\", \n    \"component_raw\": \"`service` module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20084\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/service.py\", \n    \"summary\": \"The `service` module reports `changed` for services that are already running.\\n\\n\\n\\nThis is a regression since 2.2.0 final.\\n\\n\\n\\nThis bug is not present in current `devel` (git bcf9cd1).\\n\\n\\n\\nThis bug affects remote targets running Ubuntu 14.04 LTS but not Ubuntu 16.04 LTS.\\n\\n\\n\\nI haven't actually verified this, but from what I can tell in the code there's a more serious consequence: due to the inverted check `service: state=started` will fail to start services that are not running, and `service: state=stopped` will fail to stop services that are running.\", \n    \"title\": \"[regression] service fails to correctly determine whether a service is already running on non-systemd systems in 2.2.1rc3\"\n  }, \n  \"20085\": {\n    \"ansible_version\": \"2.1.1.0\", \n    \"body\": \"Unless i'm missing something i expect that if I were to do something like the following the task would fail? But it does not \\ud83d\\ude1f \\r\\n\\r\\n```yaml\\r\\n  tasks:\\r\\n      docker_container:\\r\\n        name: \\\"exit-test\\\"\\r\\n        image: \\\"ubuntu:latest\\\"\\r\\n        command: \\\"bash -c 'exit 123'\\\"\\r\\n```\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndocker_container\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.1.1.0\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n  tasks:\\r\\n      docker_container:\\r\\n        name: \\\"exit-test\\\"\\r\\n        image: \\\"ubuntu:latest\\\"\\r\\n        command: \\\"bash -c 'exit 123'\\\"\\r\\n```\\r\\n##### EXPECTED RESULTS\\r\\nShould fail the task\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nTask is ok.\", \n    \"component_name\": \"docker_container\", \n    \"component_raw\": \"docker_container\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20085\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"summary\": null, \n    \"title\": \"docker_container task fail on exit code\"\n  }, \n  \"20086\": {\n    \"ansible_version\": \"This is for devel but I test it using\\nansible 2.0.2.0\\nconfig file = /home/mmaslowski/ansible/ansible.cfg\\nconfigured module search path = ./modules/\\nwith uncommitted changes to perform the import  imports required in 2.0.\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\n`sns_topic`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nThis is for `devel`, but I test it using:\\r\\n```\\r\\nansible 2.0.2.0\\r\\n  config file = /home/mmaslowski/ansible/ansible.cfg\\r\\n  configured module search path = ./modules/\\r\\n```\\r\\nwith uncommitted changes to perform the `import *` imports required in 2.0.\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nUnsubscribing from SNS topics (at least via the console for email subscriptions) results in the API returning `\\\"SubscriptionArn\\\": \\\"Deleted\\\"`. With the default `purge_subscriptions`, the `sns_topic` module attempts to unsubscribe these, failing, since these aren't valid ARNs.\\r\\n\\r\\nThis pull request changes it to ignore these, exactly as if they were `PendingConfirmation`.\\r\\n\\r\\nI wasn't able to find any reference to the `Deleted` ARN in the AWS documentation.\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n\", \n    \"component_name\": \"sns_topic\", \n    \"component_raw\": \"`sns_topic`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20086\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"easyfix\", \n      \"module\", \n      \"shipit\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/sns_topic.py\", \n    \"summary\": \"Unsubscribing from SNS topics (at least via the console for email subscriptions) results in the API returning `\\\"SubscriptionArn\\\": \\\"Deleted\\\"`. With the default `purge_subscriptions`, the `sns_topic` module attempts to unsubscribe these, failing, since these aren't valid ARNs.\\n\\n\\n\\nThis pull request changes it to ignore these, exactly as if they were `PendingConfirmation`.\\n\\n\\n\\nI wasn't able to find any reference to the `Deleted` ARN in the AWS documentation.\", \n    \"title\": \"sns_topic: Do not attempt to unsubscribed deleted subscriptions\"\n  }, \n  \"20087\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nThis fixes #20080\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20087\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"This fixes #20080\", \n    \"title\": \"Define get_exception()\"\n  }, \n  \"20088\": {\n    \"ansible_version\": \"root@docker-build-test/mnt/src/ansible/ansible/bin ./ansible --version\\nTraceback (most recent call last)\\nFile ./ansible line 46 in <module>\\nfrom ansible.module_utils._text import to_text\\nImportError No module named _text\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nAnsible main program\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nroot@docker-build-test:/mnt/src/ansible/ansible/bin# ./ansible --version\\r\\nTraceback (most recent call last):\\r\\n  File \\\"./ansible\\\", line 46, in <module>\\r\\n    from ansible.module_utils._text import to_text\\r\\nImportError: No module named _text\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\nBuilding `ansible` from source. There is a system `ansible` installed, v2.0.0.2 installed from Ubuntu 16.04 for aarch64 .\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nUbuntu 16.04 on ARMv8 (aarch64) on 96-core server on Packet.net\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nAfter I installed a bunch of test dependencies, all tests pass; but when I try to run `ansible --version` from the `bin/` directory of the distribution, that fails.\\r\\n\\r\\nA similar bug identified (though not exactly the same) is #18582.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nPull the current distribution from github, this is on origin/devel.\\r\\n\\r\\n```\\r\\n# git status\\r\\nOn branch devel\\r\\nYour branch is up-to-date with 'origin/devel'.\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nI expected `ansible --version` to print the version number.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nroot@docker-build-test:/mnt/src/ansible/ansible/bin# ./ansible -vvvv  --version\\r\\nTraceback (most recent call last):\\r\\n  File \\\"./ansible\\\", line 46, in <module>\\r\\n    from ansible.module_utils._text import to_text\\r\\nImportError: No module named _text\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"ansible main program\", \n    \"component_raw\": \"Ansible main program\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20088\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"After I installed a bunch of test dependencies, all tests pass; but when I try to run `ansible --version` from the `bin/` directory of the distribution, that fails.\\n\\n\\n\\nA similar bug identified (though not exactly the same) is #18582.\", \n    \"title\": \"When built from source, ansible --version errors with \\\"ImportError: No module named _text\\\"\"\n  }, \n  \"20089\": {\n    \"ansible_version\": \"ansible-playbook 2.2.1.0 (stable-2.2 941552d107) last updated 2017/01/10 085557 (GMT -400)\\nlib/ansible/modules/core (detached HEAD a9d844c089) last updated 2017/01/10 091305 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD 19d20ca1a0) last updated 2017/01/10 091305 (GMT -400)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ntemplate plugin\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible-playbook 2.2.1.0 (stable-2.2 941552d107) last updated 2017/01/10 08:55:57 (GMT -400)\\r\\n  lib/ansible/modules/core: (detached HEAD a9d844c089) last updated 2017/01/10 09:13:05 (GMT -400)\\r\\n  lib/ansible/modules/extras: (detached HEAD 19d20ca1a0) last updated 2017/01/10 09:13:05 (GMT -400)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nGentoo linux\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nFirst of all, sorry, this is an incomplete issue report. I haven't yet properly isolated the problem, but I see that you're approaching a v2.2.1 release and I think it's a release blocker. I'll work on completing the issue soon.\\r\\n\\r\\njinjia2 recently released it's v2.9, but upgrading to jinja2 2.9 causes problems in my provisioning that is fixed by reverting to jinja2 2.8.x\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nNon yet, coming soon.\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nNo error\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: KeyError: 'undefined variable: 0'\\r\\nfatal: [sfl-web-django-ci]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"Unexpected failure during module execution.\\\", \\\"stdout\\\": \\\"\\\"}\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"template plugin\", \n    \"component_raw\": \"template plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20089\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"First of all, sorry, this is an incomplete issue report. I haven't yet properly isolated the problem, but I see that you're approaching a v2.2.1 release and I think it's a release blocker. I'll work on completing the issue soon.\\n\\n\\n\\njinjia2 recently released it's v2.9, but upgrading to jinja2 2.9 causes problems in my provisioning that is fixed by reverting to jinja2 2.8.x\", \n    \"title\": \"Templating error with jinja2 v2.9\"\n  }, \n  \"20090\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible-galaxy\\r\\n\\r\\n##### SUMMARY\\r\\nhttps://github.com/Lujeni/ansible/blob/devel/lib/ansible/cli/galaxy.py#L339\\r\\n\\r\\nThe `include` directive is missing documentation.\\r\\n\", \n    \"component_name\": \"ansible-galaxy\", \n    \"component_raw\": \"ansible-galaxy\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20090\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"https://github.com/Lujeni/ansible/blob/devel/lib/ansible/cli/galaxy.py#L339\\n\\n\\n\\nThe `include` directive is missing documentation.\", \n    \"title\": \"Missing documentation about the include directive for requirements files\"\n  }, \n  \"20091\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nos_nova_flavor\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThis PR adds ability to specify metadata (aka extra_specs) for nova flavors using shade API.\\r\\n\", \n    \"component_name\": \"os_nova_flavor\", \n    \"component_raw\": \"os_nova_flavor\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20091\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"feature\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_nova_flavor.py\", \n    \"summary\": \"This PR adds ability to specify metadata (aka extra_specs) for nova flavors using shade API.\", \n    \"title\": \"added ability to modify nova flavor metadata in os_nova_flavor module\"\n  }, \n  \"20092\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /Users/tennis/PycharmProjects/inf-shared/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nprofile_roles\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /Users/tennis/PycharmProjects/inf-shared/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThis is a simple callback plugin to track the total time spent in each role during the run of a playbook. \\r\\n\", \n    \"component_name\": \"profile_roles\", \n    \"component_raw\": \"profile_roles\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20092\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/callback\", \n      \"feature\", \n      \"new_plugin\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This is a simple callback plugin to track the total time spent in each role during the run of a playbook.\", \n    \"title\": \"feat: add role profiler\"\n  }, \n  \"20093\": {\n    \"ansible_version\": \"23\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\ndocs\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2,3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nChanged module docs to reflect new repo/organization\", \n    \"component_name\": \"docs\", \n    \"component_raw\": \"docs\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20093\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Changed module docs to reflect new repo/organization\", \n    \"title\": \"Doc module meta\"\n  }, \n  \"20095\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\ndocxs\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nAlso changed comments into -name in examples where appropriate.\\r\\nAnd removed multiline k=v examples ...\\r\\n\\r\\n\", \n    \"component_name\": \"docxs\", \n    \"component_raw\": \"docxs\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20095\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/commands/command.py\", \n    \"summary\": \"Also changed comments into -name in examples where appropriate.\\n\\nAnd removed multiline k=v examples ...\", \n    \"title\": \"updated docs to suggest quote filter for shells\"\n  }, \n  \"20096\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible-modules-core/system/user.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.1.1.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nUbuntu 16.04\\r\\n\\r\\n##### SUMMARY\\r\\nThe module user is supposed to be based on system commands \\\"useradd, userdel and usermod\\\". It has no account locking function because people discussed that an expire date option would be better. So to disable a bunch of users I can use 'expires' with time in epoch format, but ...\\r\\n\\r\\n.. the problem is, **that you cannot reset the expire date (disable expiry)** as you could with the system commands. Usually, you can use the expiredate option of e.g. adduser and set it to \\\"-1\\\" or nothing (emtpy string):\\r\\n\\r\\nThe man pages for adduser/useradd say: \\\"By default, **the password expiry value set to -1** means never expire.\\\" Furthermore, adduser allows to set an empty string: \\\"If not specified, useradd will use the default expiry date specified by the EXPIRE variable in /etc/default/useradd, **or an empty string (no expiry)** by default.\\\"\\r\\n\\r\\nSince this module uses system commands, I would expect it to offer similiar functionality but it does not:\\r\\n- if you set expires=-1 it does not change anything at all, account stays expired. YOu can't use an empty string either: -> \\\"msg\\\": \\\"argument expires is of type <type 'str'> and we were unable to convert to float\\\"\\r\\n\\r\\nIn terms of shell you can easily unset expire date with: usermod USER -e -1\\r\\n\\r\\nI would suggest that it should be able to use the module \\\"user\\\" as you would use adduser/moduser option --expiredate. Until now, you would have to use the command/shell/raw module. It would make sense to me to enable this for the user module.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nFirst, expire a user:\\r\\n\\r\\n```yaml\\r\\n---\\r\\n- name: test expire\\r\\n  hosts: all\\r\\n  become: yes\\r\\n  vars_files:\\r\\n    - /etc/ansible/secrets.yml\\r\\n  tasks:\\r\\n    - name: Disable user accounts with expires\\r\\n      user: name={{ item.name }} expires=1\\r\\n\\r\\n      with_items:\\r\\n        - { name: 'USER' }\\r\\n```\\r\\nNow, \\\"unexpire\\\" the user with expires=-1  or expires=\\\"\\\" or even expires=\\r\\n\\r\\n```yaml\\r\\n---\\r\\n- name: test expire\\r\\n  hosts: all\\r\\n  become: yes\\r\\n  vars_files:\\r\\n    - /etc/ansible/secrets.yml\\r\\n  tasks:\\r\\n    - name: Disable user accounts with expires\\r\\n      user: name={{ item.name }} expires=-1\\r\\n\\r\\n      with_items:\\r\\n        - { name: 'USER' }\\r\\n```\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nIt should re-enable the user account, unsetting any expire date as it would with usermod/moduser\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nWith \\\"-1\\\" ansible tells you \\\"changed: [HOST] => (item={u'name': u'USER'} but it has changed nothing:\\r\\nYour account has expired; please contact your system administrator\\r\\n\\r\\nIf you use an empty string for expire, it fails:\\r\\nfailed: [HOST] (item={u'name': u'USER'}) => {\\\"failed\\\": true, \\\"item\\\": {\\\"name\\\": \\\"USER\\\"}, \\\"msg\\\": \\\"argument expires is of type <type 'str'> and we were unable to convert to float\\\"\\r\\n\\r\\n\", \n    \"component_name\": \"ansible- s-core/system/user.py\", \n    \"component_raw\": \"ansible-modules-core/system/user.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20096\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/user.py\", \n    \"summary\": \"The module user is supposed to be based on system commands \\\"useradd, userdel and usermod\\\". It has no account locking function because people discussed that an expire date option would be better. So to disable a bunch of users I can use 'expires' with time in epoch format, but ...\\n\\n\\n\\n.. the problem is, **that you cannot reset the expire date (disable expiry)** as you could with the system commands. Usually, you can use the expiredate option of e.g. adduser and set it to \\\"-1\\\" or nothing (emtpy string):\\n\\n\\n\\nThe man pages for adduser/useradd say: \\\"By default, **the password expiry value set to -1** means never expire.\\\" Furthermore, adduser allows to set an empty string: \\\"If not specified, useradd will use the default expiry date specified by the EXPIRE variable in /etc/default/useradd, **or an empty string (no expiry)** by default.\\\"\\n\\n\\n\\nSince this module uses system commands, I would expect it to offer similiar functionality but it does not:\\n\\n- if you set expires=-1 it does not change anything at all, account stays expired. YOu can't use an empty string either: -> \\\"msg\\\": \\\"argument expires is of type <type 'str'> and we were unable to convert to float\\\"\\n\\n\\n\\nIn terms of shell you can easily unset expire date with: usermod USER -e -1\\n\\n\\n\\nI would suggest that it should be able to use the module \\\"user\\\" as you would use adduser/moduser option --expiredate. Until now, you would have to use the command/shell/raw module. It would make sense to me to enable this for the user module.\", \n    \"title\": \"core-module 'user' with option 'expires' - cannot \\\"unexpire\\\" accounts with \\\"-1\\\"\"\n  }, \n  \"20097\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"\\r\\nFixes the bugs introduced by c6fb355\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nlib/ansible/galaxy/api.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\ndevel\\r\\n```\\r\\n\", \n    \"component_name\": \"lib/ansible/galaxy/api.py\", \n    \"component_raw\": \"lib/ansible/galaxy/api.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20097\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": null, \n    \"title\": \"Previous fix to this failed to account for open_url returning a filehandle\"\n  }, \n  \"20098\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible core\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nDefaults.\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A (tested on CentOS 7, Ubuntu 16.04, Fedora 25)\\r\\n\\r\\n##### SUMMARY\\r\\nAnsible 2.2.0.0 with jinja2 < 2.9 will handle a variable with curly braces properly in `self_eval()`. However, jinja >= 2.9 fails with an exception.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nHere's an example playbook:\\r\\n```yaml\\r\\n---\\r\\n\\r\\n- hosts: all\\r\\n  vars:\\r\\n    fruits:\\r\\n      - name: apple\\r\\n        enjoy: yes\\r\\n      - name: orange\\r\\n        enjoy: no\\r\\n      - name: strawberry\\r\\n        enjoy: yes\\r\\n  tasks:\\r\\n\\r\\n    - name: Loop through my fruits\\r\\n      debug:\\r\\n        msg: |\\r\\n          {% set fruit_list = [] %}\\r\\n          {% for fruit_dict in item[1] %}\\r\\n          {{ fruit_dict.name }}\\r\\n          {% endfor %}\\r\\n      with_items:\\r\\n        - \\\"{{ fruits | groupby('enjoy') }}\\\"\\r\\n```\\r\\n\\r\\nStart with jinja2 2.8.1. The playbook should execute successfully. Upgrade to jinja2 2.9 (or higher). The playbook will have an error (see below).\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe playbook should run without errors.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nTASK [Loop through my fruits] **************************************************\\r\\n [WARNING]: Exception in safe_eval() on expr: [_GroupTuple(grouper=False, list=[{u'enjoy': False, u'name': u'orange'}]), _GroupTuple(grouper=True,\\r\\nlist=[{u'enjoy': True, u'name': u'apple'}, {u'enjoy': True, u'name': u'strawberry'}])] (invalid expression ([_GroupTuple(grouper=False, list=[{u'enjoy':\\r\\nFalse, u'name': u'orange'}]), _GroupTuple(grouper=True, list=[{u'enjoy': True, u'name': u'apple'}, {u'enjoy': True, u'name': u'strawberry'}])]))\\r\\n\\r\\nfatal: [localhost]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'unicode object' has no attribute 'name'\\\\n\\\\nThe error appears to have been in '/tmp/ansible/playbook.yml': line 14, column 7, but may\\\\nbe elsewhere in the file depending on the exact syntax problem.\\\\n\\\\nThe offending line appears to be:\\\\n\\\\n\\\\n    - name: Loop through my fruits\\\\n      ^ here\\\\n\\\"}\\r\\n```\\r\\n\\r\\nI still get the same problem if I install ansible from the latest commit in git.\", \n    \"component_name\": \"ansible core\", \n    \"component_raw\": \"ansible core\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20098\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"P2\", \n      \"affects_2.2\", \n      \"bug\", \n      \"c:plugins/filter\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Ansible 2.2.0.0 with jinja2 < 2.9 will handle a variable with curly braces properly in `self_eval()`. However, jinja >= 2.9 fails with an exception.\", \n    \"title\": \"Exception in safe_eval() on expr with jinja2 >= 2.9\"\n  }, \n  \"20100\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nios_config\\r\\nnxos_vlan\\r\\nnxos_vxlan_vtep_vni\\r\\nnxos_evpn_vni\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\n[defaults]\\r\\nforks=1000\\r\\ntransport=ssh\\r\\n[ssh_connection]\\r\\nssh_args = -o ControlMaster=auto -o ControlPersist=3600s  -o ServerAliveInterval=25 -o ServerAliveCountMax=20\\r\\npipelining=true\\r\\n-->\\r\\n[defaults]\\r\\nforks=1000\\r\\ntransport=ssh\\r\\n[ssh_connection]\\r\\nssh_args = -o ControlMaster=auto -o ControlPersist=3600s  -o ServerAliveInterval=25 -o ServerAliveCountMax=20\\r\\npipelining=true\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nRedHat 3.10.0-514.el7.x86_64\\r\\nCisco NX Device\\r\\n-->\\r\\nRedHat 3.10.0-514.el7.x86_64\\r\\nCisco NX Device\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWhen running our playbook, the playbook connects to about 20 hosts then pushes a bunch of configs through multiple modules. It then repeats the tasks with different variables (using a nested variable list).  However throughout the process some hosts will fail out and we would receive an authentication error or the tasks will start to run slow\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nWe expect the results to run without any fails.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nfatal: [10.53.254.22]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"failed to connect to 10.53.254.23:22\\\"}\\r\\nFrom here some more hosts will fail out but most will complete.\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"ios_config\", \n    \"component_raw\": \"ios_config\\nnxos_vlan\\nnxos_vxlan_vtep_vni\\nnxos_evpn_vni\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20100\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/ios/ios_config.py\", \n    \"summary\": \"When running our playbook, the playbook connects to about 20 hosts then pushes a bunch of configs through multiple modules. It then repeats the tasks with different variables (using a nested variable list).  However throughout the process some hosts will fail out and we would receive an authentication error or the tasks will start to run slow\", \n    \"title\": \"Ansible SSH connections drop mid task\"\n  }, \n  \"20101\": {\n    \"ansible_version\": \"ansible 2.3.0 (test-python-3.6 991c256558) last updated 2017/01/10 103047 (GMT -700)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\nFeature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nTests\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 (test-python-3.6 991c256558) last updated 2017/01/10 10:30:47 (GMT -700)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nAdd test support for python 3.6.\", \n    \"component_name\": \"tests\", \n    \"component_raw\": \"Tests\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20101\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"needs_revision\", \n      \"python3\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Add test support for python 3.6.\", \n    \"title\": \"Add test support for python 3.6.\"\n  }, \n  \"20102\": {\n    \"ansible_version\": \"ansible 2.2.1.0 (detached HEAD d8c9b8d347) last updated 2017/01/10 105247 (GMT +200)\\nlib/ansible/modules/core (detached HEAD a9d844c089) last updated 2017/01/10 110104 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD 19d20ca1a0) last updated 2017/01/10 110104 (GMT +200)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nservice module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.1.0 (detached HEAD d8c9b8d347) last updated 2017/01/10 10:52:47 (GMT +200)\\r\\n  lib/ansible/modules/core: (detached HEAD a9d844c089) last updated 2017/01/10 11:01:04 (GMT +200)\\r\\n  lib/ansible/modules/extras: (detached HEAD 19d20ca1a0) last updated 2017/01/10 11:01:04 (GMT +200)\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nRunning from macOS 10.12\\r\\nManaging Solaris 10 10/09 s10s_u8wos_08a SPARC\\r\\n\\r\\n##### SUMMARY\\r\\nService states restarted and reloaded raise an error\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```\\r\\nansible solaris10-host -m service -a \\\"state=restarted name=system-log\\\" -u root\\r\\n\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nService system-log is restarted\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nsolaris10-host | FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"msg\\\": \\\"svcadm: Pattern '-s' doesn't match any instances\\\\n\\\"\\r\\n}\\r\\n```\\r\\n\\r\\nThe changes introduced with https://github.com/ansible/ansible-modules-core/pull/5406 broke compability to Solaris 10.\\r\\nOn Solaris 10 there is no option \\\"-s\\\" for subcommands restart and refresh:\\r\\nOnly the subcommands enable and disable support  option \\\"-s\\\".\\r\\nman page Solaris 10: https://docs.oracle.com/cd/E23823_01/html/816-5166/svcadm-1m.html\\r\\nman page Solaris 11: https://docs.oracle.com/cd/E53394_01/html/E54764/svcadm-1m.html\\r\\n\\r\\nSo for Solaris 10 this option should be omitted for restart and refresh.\\r\\n\\r\\nWe need something like \\r\\n```\\r\\nif distribution_version == 10:\\r\\n  option = \\\"\\\"\\r\\nelse:\\r\\n  option = \\\" -s\\\"\\r\\n[...]\\r\\n elif self.action == 'reload':\\r\\n            subcmd = \\\"refresh\\\" + option\\r\\n elif self.action == 'restart' and status == 'online':\\r\\n            subcmd = \\\"restart\\\" + option\\r\\n```\\r\\nI don't know if the service module can get distribution_version from facts.py...\", \n    \"component_name\": \"service\", \n    \"component_raw\": \"service module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20102\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/service.py\", \n    \"summary\": \"Service states restarted and reloaded raise an error\", \n    \"title\": \"Service restart on Solaris 10 broken\"\n  }, \n  \"20104\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\neos\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\ndevel\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nFixes #19586\\r\\n\\r\\nAs there is no way of checking ahead of time if session support is complete, I extended the supports_sessions method to attempt all needed aspects of sessions and clean up after the test.\\r\\n\\r\\nAs it was cleaner I moved session generated into the method and made it return the session id for use.\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\nbefore:\\r\\nTASK [test EOS configs] ***************************************************\\r\\nfatal: [switch1]: FAILED! => {\\\"changed\\\": false, \\\"commands\\\": [\\\"configure session ansible_1484078362\\\", \\\"show session-config diffs\\\", \\\"end\\\"], \\\"failed\\\": true, \\\"msg\\\": \\\"matched error in response: show session-config diffs\\\\r\\\\n% Invalid input\\\\r\\\\nswitch2(config-s-ansibl)#\\\"}\\r\\n\\r\\nafter:\\r\\nTASK [test EOS configs] ***************************************************\\r\\nchanged: [switch1]\\r\\n [WARNING]: The current version of EOS on the remote device does not support configuration sessions.  The commit\\r\\nargument will be ignored\\r\\n```\\r\\n\", \n    \"component_name\": \"eos\", \n    \"component_raw\": \"eos\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20104\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"needs_revision\", \n      \"networking\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Fixes #19586\\n\\n\\n\\nAs there is no way of checking ahead of time if session support is complete, I extended the supports_sessions method to attempt all needed aspects of sessions and clean up after the test.\\n\\n\\n\\nAs it was cleaner I moved session generated into the method and made it return the session id for use.\\n\\n\\n\\n\\n\\n```\\n\\nbefore:\\n\\nTASK [test EOS configs] ***************************************************\\n\\nfatal: [switch1]: FAILED! => {\\\"changed\\\": false, \\\"commands\\\": [\\\"configure session ansible_1484078362\\\", \\\"show session-config diffs\\\", \\\"end\\\"], \\\"failed\\\": true, \\\"msg\\\": \\\"matched error in response: show session-config diffs\\\\r\\\\n% Invalid input\\\\r\\\\nswitch2(config-s-ansibl)#\\\"}\\n\\n\\n\\nafter:\\n\\nTASK [test EOS configs] ***************************************************\\n\\nchanged: [switch1]\\n\\n [WARNING]: The current version of EOS on the remote device does not support\", \n    \"title\": \"eos_config: extend sessions support validation\"\n  }, \n  \"20105\": {\n    \"ansible_version\": \"ansible 2.3.0 (sm_timezone 8802360117) last updated 2017/01/10 222209 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\n\\r\\n`smartos_timezone`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (sm_timezone 8802360117) last updated 2017/01/10 22:22:09 (GMT +200)\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nThis new module allows for managing the timezone on SmartOS zones/instances. It was a deliberate choice not to expand the existing `timezone` module. That module is very Linux-centric and would require a large overhaul in order to fit the SmartOS code path.\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n  - name: Set timezone\\r\\n    smartos_timezone:\\r\\n      name: Europe/Amsterdam\\r\\n```\\r\\n\\r\\nResults in:\\r\\n```\\r\\nTASK [Set timezone] ************************************************************\\r\\nchanged: [ansible-dev] => {\\\"changed\\\": true, \\\"timezone\\\": \\\"Europe/Amsterdam\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"smartos_timezone\", \n    \"component_raw\": \"`smartos_timezone`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20105\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"new_module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/smartos_timezone.py\", \n    \"summary\": \"This new module allows for managing the timezone on SmartOS zones/instances. It was a deliberate choice not to expand the existing `timezone` module. That module is very Linux-centric and would require a large overhaul in order to fit the SmartOS code path.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n  - name: Set timezone\\n\\n    smartos_timezone:\\n\\n      name: Europe/Amsterdam\\n\\n```\\n\\n\\n\\nResults in:\\n\\n```\\n\\nTASK [Set timezone] ************************************************************\\n\\nchanged: [ansible-dev] => {\\\"changed\\\": true, \\\"timezone\\\": \\\"Europe/Amsterdam\\\"}\\n\\n```\", \n    \"title\": \"Add new module to manage the timezone on SmartOS instances\"\n  }, \n  \"20106\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nAnsible built from git clone: git clone git://github.com/ansible/ansible.git --recursive\\r\\npyshere 0.1.7\\r\\npyvmomi 6.5\\r\\nESX 6.0.0\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nCentOS Linux release 7.3.1611 (Core) patched and up to date\\r\\n\\r\\n##### SUMMARY\\r\\nCan't use the state: modifier to start/stop/restart a vm guest.  \\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nRun the below playbook using poweredon, poweredoff, restarted for the state condition.\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n---\\r\\n- hosts: localhost\\r\\n  gather_facts: False\\r\\n  connection: local\\r\\n\\r\\n  tasks:\\r\\n  - vmware_guest:\\r\\n     hostname: esx.server.local\\r\\n     username: sysadmin\\r\\n     password: p@ssword\\r\\n     validate_certs: False\\r\\n     name: test_vm\\r\\n     state: poweredon\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nRestart, power on or power off vm guests\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nNothing.  Regardless of existing state vs. required state you get a green successful status from Ansible.  So if the vm is off and you run the above playbook with state: poweredon the playbook does nothing, saying nothing needs to be changed and exits with a successful green status.\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nASK [vmware_guest] *************************************************************************************************************************************************************************************************************************************************\\r\\ntask path: /opt/playbooks/vmware_poweron.yml:7\\r\\nUsing module file /opt/ansible-devel/lib/ansible/modules/cloud/vmware/vmware_guest.py\\r\\n<localhost> ESTABLISH LOCAL CONNECTION FOR USER: root\\r\\n<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo ~/.ansible/tmp/ansible-tmp-1484087489.99-132513874338350 `\\\" && echo ansible-tmp-1484087489.99-132513874338350=\\\"` echo ~/.ansible/tmp/ansible-tmp-1484087489.99-132513874338350 `\\\" ) && sleep 0'\\r\\n<localhost> PUT /tmp/tmpbXlyAu TO /root/.ansible/tmp/ansible-tmp-1484087489.99-132513874338350/vmware_guest.py\\r\\n<localhost> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1484087489.99-132513874338350/ /root/.ansible/tmp/ansible-tmp-1484087489.99-132513874338350/vmware_guest.py && sleep 0'\\r\\n<localhost> EXEC /bin/sh -c '/usr/bin/python /root/.ansible/tmp/ansible-tmp-1484087489.99-132513874338350/vmware_guest.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1484087489.99-132513874338350/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nok: [localhost] => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": false,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"annotation\\\": null,\\r\\n            \\\"cluster\\\": null,\\r\\n            \\\"customization\\\": {},\\r\\n            \\\"customvalues\\\": [],\\r\\n            \\\"datacenter\\\": null,\\r\\n            \\\"disk\\\": [],\\r\\n            \\\"esxi_hostname\\\": null,\\r\\n            \\\"folder\\\": \\\"/vm\\\",\\r\\n            \\\"force\\\": false,\\r\\n            \\\"guest_id\\\": null,\\r\\n            \\\"hardware\\\": {},\\r\\n            \\\"hostname\\\": \\\"10.0.0.10\\\",\\r\\n            \\\"is_template\\\": false,\\r\\n            \\\"name\\\": \\\"test_vm\\\",\\r\\n            \\\"name_match\\\": \\\"first\\\",\\r\\n            \\\"networks\\\": {},\\r\\n            \\\"new_name\\\": null,\\r\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n            \\\"resource_pool\\\": null,\\r\\n            \\\"snapshot_op\\\": {},\\r\\n            \\\"state\\\": \\\"poweredon\\\",\\r\\n            \\\"template_src\\\": null,\\r\\n            \\\"username\\\": \\\"sysadmin\\\",\\r\\n            \\\"uuid\\\": null,\\r\\n            \\\"validate_certs\\\": false,\\r\\n            \\\"wait_for_ip_address\\\": true\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"vmware_guest\\\"\\r\\n    }\\r\\n}\\r\\n\\r\\nPLAY RECAP **********************************************************************************************************************************************************************************************************************************************************\\r\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=0\\r\\n```\\r\\n\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20106\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"Can't use the state: modifier to start/stop/restart a vm guest.\", \n    \"title\": \"vmware_guest state: poweredon/poweredoff/restarted doesn't do anything\"\n  }, \n  \"20107\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nBecause both the vCenter API and the vCLI scripts call these entities\\r\\n*fields* I am inclined to also call it like this in our vmware_guest\\r\\ninterface.\\r\\n\\r\\nThe old vSphere client also calls them attributes in the properties\\r\\npane, but in the default VM view they are simply shown as part of the\\r\\nAnnotations. Not sure what the new web gui calls these.\\r\\n\\r\\nMore info in:\\r\\nhttps://github.com/ansible/ansible/pull/20052#issuecomment-271729201\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20107\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"docs\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"Because both the vCenter API and the vCLI scripts call these entities\\n\\n*fields* I am inclined to also call it like this in our vmware_guest\\n\\ninterface.\\n\\n\\n\\nThe old vSphere client also calls them attributes in the properties\\n\\npane, but in the default VM view they are simply shown as part of the\\n\\nAnnotations. Not sure what the new web gui calls these.\\n\\n\\n\\nMore info in:\\n\\nhttps://github.com/ansible/ansible/pull/20052#issuecomment-271729201\", \n    \"title\": \"Rename 'customvalues' into 'fields' in the interface\"\n  }, \n  \"20108\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\nChanges missing from a poor merge probably, but also a few new things.\\r\\n\\r\\n- Reordered the examples from important (often used) to less important\\r\\n  (fewer used)\\r\\n- Remove the new_name: option and replace it with the uuid/name\\r\\n  combination for renaming + added example\\r\\n- Added an example using the VM uuid instead of the VM name\\r\\n- Also check whether the password is non-empty (rogue merge)\\r\\n- Wait for all tasks to finish (to be sure the new facts reflect the\\r\\n  state)\\r\\n- Ensure that on failure we still set the change-bit\\r\\n- Removed a set of functions that are unused (related to transfering\\r\\n  files to guest, or running commands).\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20108\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"Changes missing from a poor merge probably, but also a few new things.\\n\\n\\n\\n- Reordered the examples from important (often used) to less important\\n\\n  (fewer used)\\n\\n- Remove the new_name: option and replace it with the uuid/name\\n\\n  combination for renaming + added example\\n\\n- Added an example using the VM uuid instead of the VM name\\n\\n- Also check whether the password is non-empty (rogue merge)\\n\\n- Wait for all tasks to finish (to be sure the new facts reflect the\\n\\n  state)\\n\\n- Ensure that on failure we still set the change-bit\\n\\n- Removed a set of functions that are unused (related to transfering\\n\\n  files to guest, or running commands).\", \n    \"title\": \"vmware_guest: Various fixes and changes (round 2)\"\n  }, \n  \"20109\": {\n    \"ansible_version\": \"ansible 2.0.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n##### ISSUE TYPE\\r\\n\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n- Bug Report\\r\\n##### COMPONENT NAME\\r\\n\\r\\n<!--- Name of the plugin/module/task -->\\r\\n\\r\\ns3\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n\\r\\n```\\r\\nansible 2.0.1.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n##### CONFIGURATION\\r\\n\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n##### SUMMARY\\r\\n\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\ns3 bucket creation fails when bucket already exists\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n1. create bucket with s3 module\\r\\n2. attempt to create same bucket with s3 module\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n\\r\\n```\\r\\n- name: create s3 buckets\\r\\n  s3:\\r\\n    bucket: $BUCKET_NAME\\r\\n    mode: create\\r\\n  become: false\\r\\n  delegate_to: localhost\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nBucket should create the first time. The second time bucket should remain and not throw an error.\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\nBucket creation failed on 2nd run.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n\\r\\n```\\r\\n20:47:39 An exception occurred during task execution. The full traceback is:\\r\\n20:47:39 Traceback (most recent call last):\\r\\n20:47:39   File \\\"$PATH//ansible-tmp-1476132487.47-226397347317836/s3\\\", line 2846, in <module>\\r\\n20:47:39     main()\\r\\n20:47:39   File \\\"$PATH/ansible-tmp-1476132487.47-226397347317836/s3\\\", line 610, in main\\r\\n20:47:39     module.exit_json(msg=\\\"Bucket created successfully\\\", changed=create_bucket(module, s3, bucket, location))\\r\\n20:47:39   File \\\"$PATH//ansible-tmp-1476132487.47-226397347317836/s3\\\", line 244, in create_bucket\\r\\n20:47:39     bucket = s3.create_bucket(bucket, location=location)\\r\\n20:47:39   File \\\"/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py\\\", line 616, in create_bucket\\r\\n20:47:39     response.status, response.reason, body)\\r\\n20:47:39 boto.exception.S3CreateError: S3CreateError: 409 Conflict\\r\\n20:47:39 <?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\r\\n20:47:39 <Error><Code>BucketAlreadyExists</Code><Message>The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again.</Message><BucketName>blend</BucketName><RequestId>5FB9B826861513DD</RequestId><HostId>$HOSTID</HostId></Error>\\r\\n```\\r\\n\", \n    \"component_name\": \"s3\", \n    \"component_raw\": \"s3\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20109\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"needs_info\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/s3.py\", \n    \"summary\": \"s3 bucket creation fails when bucket already exists\", \n    \"title\": \"s3 module is not idempotent for bucket creation (fails when bucket already exists)\"\n  }, \n  \"20110\": {\n    \"ansible_version\": \"ansible 2.0.0.2\\nAnsible\", \n    \"body\": \"#### Issue Type:\\r\\n- Bug Report\\r\\n##### Component Name:\\r\\n\\r\\nelasticache module\\r\\n##### Ansible Version:\\r\\n\\r\\nansible 2.0.0.2\\r\\n##### Ansible Configuration:\\r\\n\\r\\n`any_errors_fatal = True`\\r\\n##### Environment:\\r\\n\\r\\nredis on aws elasticache\\r\\n##### Summary:\\r\\n\\r\\nErrors on deleting cluster.\\r\\n\\r\\n```\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/Users/james/.ansible/tmp/ansible-tmp-1455652399.45-51638225824520/elasticache\\\", line 2727, in <module>\\r\\n    main()\\r\\n  File \\\"/Users/james/.ansible/tmp/ansible-tmp-1455652399.45-51638225824520/elasticache\\\", line 562, in main\\r\\n    module.exit_json(**facts_result)\\r\\n  File \\\"/Users/james/.ansible/tmp/ansible-tmp-1455652399.45-51638225824520/elasticache\\\", line 2099, in exit_json\\r\\n    kwargs = remove_values(kwargs, self.no_log_values)\\r\\n  File \\\"/Users/james/.ansible/tmp/ansible-tmp-1455652399.45-51638225824520/elasticache\\\", line 982, in remove_values\\r\\n    return dict((k, remove_values(v, no_log_strings)) for k, v in value.items())\\r\\n  File \\\"/Users/james/.ansible/tmp/ansible-tmp-1455652399.45-51638225824520/elasticache\\\", line 982, in <genexpr>\\r\\n    return dict((k, remove_values(v, no_log_strings)) for k, v in value.items())\\r\\n  File \\\"/Users/james/.ansible/tmp/ansible-tmp-1455652399.45-51638225824520/elasticache\\\", line 982, in remove_values\\r\\n    return dict((k, remove_values(v, no_log_strings)) for k, v in value.items())\\r\\n  File \\\"/Users/james/.ansible/tmp/ansible-tmp-1455652399.45-51638225824520/elasticache\\\", line 982, in <genexpr>\\r\\n    return dict((k, remove_values(v, no_log_strings)) for k, v in value.items())\\r\\n  File \\\"/Users/james/.ansible/tmp/ansible-tmp-1455652399.45-51638225824520/elasticache\\\", line 982, in remove_values\\r\\n    return dict((k, remove_values(v, no_log_strings)) for k, v in value.items())\\r\\n  File \\\"/Users/james/.ansible/tmp/ansible-tmp-1455652399.45-51638225824520/elasticache\\\", line 982, in <genexpr>\\r\\n    return dict((k, remove_values(v, no_log_strings)) for k, v in value.items())\\r\\n  File \\\"/Users/james/.ansible/tmp/ansible-tmp-1455652399.45-51638225824520/elasticache\\\", line 980, in remove_values\\r\\n    return [remove_values(elem, no_log_strings) for elem in value]\\r\\n  File \\\"/Users/james/.ansible/tmp/ansible-tmp-1455652399.45-51638225824520/elasticache\\\", line 991, in remove_values\\r\\n    raise TypeError('Value of unknown type: %s, %s' % (type(value), value))\\r\\nTypeError: Value of unknown type: <type 'object'>, <object object at 0x10bf01100>\\r\\n\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"invocation\\\": {\\\"module_name\\\": \\\"elasticache\\\"}, \\\"parsed\\\": false}\\r\\n```\\r\\n##### Steps To Reproduce:\\r\\n\\r\\nCreate cluster with elasticache module. Attempt to delete cluster with `state: absent`. If it helps, the cluster name has a hyphen. e.g. `abc-redis`\\r\\n\\r\\n```\\r\\n- name: launch elasticache instance\\r\\n  elasticache:\\r\\n    cache_engine_version: 2.8.24\\r\\n    cache_port: 6379\\r\\n    cache_security_groups: []\\r\\n    cache_subnet_group: ---\\r\\n    engine: redis\\r\\n    hard_modify: false\\r\\n    name: abc-redis\\r\\n    node_type: cache.t2.micro\\r\\n    num_nodes: 1\\r\\n    region: ----\\r\\n    security_group_ids: ----\\r\\n    state: present\\r\\n    wait: true\\r\\n\\r\\n- name: terminate cluster\\r\\n  elasticache:\\r\\n    name: abc-redis\\r\\n    region: ---\\r\\n    state: absent\\r\\n```\\r\\n##### Expected Results:\\r\\n\\r\\nExpect cluster to be deleted without errors.\\r\\n##### Actual Results:\\r\\n\\r\\nAs far as I can tell the cluster is gone from the AWS console, however there shouldn't be any errors thrown.\\r\\n\", \n    \"component_name\": \"elasticache\", \n    \"component_raw\": \":\\nelasticache module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20110\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"needs_info\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/elasticache.py\", \n    \"summary\": \":\\n\\n\\n\\nErrors on deleting cluster.\\n\\n\\n\\n```\\n\\nAn exception occurred during task execution. The full traceback is:\\n\\nTraceback (most recent call last):\\n\\n  File \\\"/Users/james/.ansible/tmp/ansible-tmp-1455652399.45-51638225824520/elasticache\\\", line 2727, in <module>\\n\\n    main()\\n\\n  File \\\"/Users/james/.ansible/tmp/ansible-tmp-1455652399.45-51638225824520/elasticache\\\", line 562, in main\\n\\n    module.exit_json(**facts_result)\\n\\n  File \\\"/Users/james/.ansible/tmp/ansible-tmp-1455652399.45-51638225824520/elasticache\\\", line 2099, in exit_json\\n\\n    kwargs = remove_values(kwargs, self.no_log_values)\\n\\n  File \\\"/Users/james/.ansible/tmp/ansible-tmp-1455652399.45-51638225824520/elasticache\\\", line 982, in remove_values\\n\\n    return dict((k, remove_values(v, no_log_strings)) for k, v in value.items())\\n\\n  File \\\"/Users/james/.ansible/tmp/ansible-tmp-1455652399.45-51638225824520/elasticache\\\", line 982, in <genexpr>\\n\\n    return dict((k, remove_values(v, no_log_strings)) for k, v in value.items())\\n\\n  File \\\"/Users/james/.ansible/tmp/ansible-tmp-1455652399.45-51638225824520/elasticache\\\", line 982, in remove_values\\n\\n    return dict((k, remove_values(v, no_log_strings)) for k, v in value.items())\\n\\n  File \\\"/Users/james/.ansible/tmp/ansible-tmp-1455652399.45-51638225824520/elasticache\\\", line 982, in <genexpr>\\n\\n    return dict((k, remove_values(v, no_log_strings)) for k, v in value.items())\\n\\n  File \\\"/Users/james/.ansible/tmp/ansible-tmp-1455652399.45-51638225824520/elasticache\\\", line 982, in remove_values\\n\\n    return dict((k, remove_values(v, no_log_strings)) for k, v in value.items())\\n\\n  File \\\"/Users/james/.ansible/tmp/ansible-tmp-1455652399.45-51638225824520/elasticache\\\", line 982, in <genexpr>\\n\\n    return dict((k, remove_values(v, no_log_strings)) for k, v in value.items())\\n\\n  File \\\"/Users/james/.ansible/tmp/ansible-tmp-1455652399.45-51638225824520/elasticache\\\", line 980, in remove_values\\n\\n    return [remove_values(elem, no_log_strings) for elem in value]\\n\\n  File \\\"/Users/james/.ansible/tmp/ansible-tmp-1455652399.45-51638225824520/elasticache\\\", line 991, in remove_values\\n\\n    raise TypeError('Value of unknown type: %s, %s' % (type(value), value))\\n\\nTypeError: Value of unknown type: <type 'object'>, <object object at 0x10bf01100>\\n\\n\\n\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"invocation\\\": {\\\"module_name\\\": \\\"elasticache\\\"}, \\\"parsed\\\": false}\\n\\n```\", \n    \"title\": \"Deleting elasticache cluster on redis throws TypeError #3049\"\n  }, \n  \"20111\": {\n    \"ansible_version\": \"ansible 2.0.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Bug Report\\r\\n##### COMPONENT NAME\\r\\n\\r\\nec2_elb_lb\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.0.1.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n##### CONFIGURATION\\r\\n\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\nN/A\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\n<!---\\r\\nN/A - AWS\\r\\n-->\\r\\n##### SUMMARY\\r\\n\\r\\nELB healthcheck changes are sometimes ignored.\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n<!---\\r\\n-->\\r\\n\\r\\nCreate elb with tcp healthcheck on port 80 with the module. Run the module again, except using a different port. \\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nThe healthcheck should be updated with the new target host:port\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n\\r\\nInvocation of the module\\r\\n\\r\\n```\\r\\n\\\"invocation\\\": {\\r\\n    \\\"module_args\\\": {\\r\\n      \\\"access_logs\\\": null,\\r\\n      \\\"aws_access_key\\\": null,\\r\\n      \\\"aws_secret_key\\\": null,\\r\\n      \\\"connection_draining_timeout\\\": 120,\\r\\n      \\\"cross_az_load_balancing\\\": true,\\r\\n      \\\"ec2_url\\\": null,\\r\\n      \\\"health_check\\\": {\\r\\n        \\\"healthy_threshold\\\": 2,\\r\\n        \\\"interval\\\": 5,\\r\\n        \\\"ping_port\\\": \\\"45784\\\",\\r\\n        \\\"ping_protocol\\\": \\\"tcp\\\",\\r\\n        \\\"response_timeout\\\": 2,\\r\\n        \\\"unhealthy_threshold\\\": 10\\r\\n      },\\r\\n      \\\"idle_timeout\\\": null,\\r\\n      \\\"instance_ids\\\": null,\\r\\n      \\\"listeners\\\": [\\r\\n        {\\r\\n          \\\"instance_port\\\": \\\"45784\\\",\\r\\n          \\\"instance_protocol\\\": \\\"http\\\",\\r\\n          \\\"load_balancer_port\\\": 80,\\r\\n          \\\"protocol\\\": \\\"http\\\"\\r\\n        },\\r\\n        {\\r\\n          \\\"instance_port\\\": \\\"45784\\\",\\r\\n          \\\"instance_protocol\\\": \\\"http\\\",\\r\\n          \\\"load_balancer_port\\\": 443,\\r\\n          \\\"protocol\\\": \\\"https\\\",\\r\\n          \\\"ssl_certificate_id\\\": \\\"cert_id\\\"\\r\\n        },\\r\\n        {\\r\\n          \\\"instance_port\\\": \\\"60047\\\",\\r\\n          \\\"instance_protocol\\\": \\\"tcp\\\",\\r\\n          \\\"load_balancer_port\\\": 8000,\\r\\n          \\\"protocol\\\": \\\"ssl\\\",\\r\\n          \\\"ssl_certificate_id\\\": \\\"cert_id\\\"\\r\\n        }\\r\\n      ],\\r\\n      \\\"name\\\": \\\"elbName\\\",\\r\\n      \\\"profile\\\": null,\\r\\n      \\\"purge_instance_ids\\\": false,\\r\\n      \\\"purge_listeners\\\": true,\\r\\n      \\\"purge_subnets\\\": false,\\r\\n      \\\"purge_zones\\\": false,\\r\\n      \\\"region\\\": \\\"us-east-1\\\",\\r\\n      \\\"scheme\\\": \\\"internal\\\",\\r\\n      \\\"security_group_ids\\\": null,\\r\\n      \\\"security_group_names\\\": [\\r\\n        \\\"sg1\\\",\\r\\n        \\\"sg2\\\"\\r\\n      ],\\r\\n      \\\"security_token\\\": null,\\r\\n      \\\"state\\\": \\\"present\\\",\\r\\n      \\\"stickiness\\\": null,\\r\\n      \\\"subnets\\\": [\\r\\n        \\\"subnet-1234a\\\",\\r\\n        \\\"subnet-1234b\\\",\\r\\n        \\\"subnet-1234c\\\"\\r\\n      ],\\r\\n      \\\"tags\\\": null,\\r\\n      \\\"validate_certs\\\": true,\\r\\n      \\\"wait\\\": false,\\r\\n      \\\"wait_timeout\\\": 60,\\r\\n      \\\"zones\\\": null\\r\\n    },\\r\\n    \\\"module_name\\\": \\\"ec2_elb_lb\\\"\\r\\n  },\\r\\n  \\\"item\\\": {\\r\\n    \\\"service1\\\": {\\r\\n      \\\"host_port\\\": \\\"50765\\\",\\r\\n      \\\"task\\\": {\\r\\n        \\\"name\\\": \\\"taskName\\\"\\r\\n      }\\r\\n    },\\r\\n    \\\"service2\\\": {\\r\\n      \\\"host_port\\\": \\\"60047\\\"\\r\\n    },\\r\\n    \\\"service3\\\": {\\r\\n      \\\"host_port\\\": \\\"45784\\\",\\r\\n      \\\"ssl_certificate_id\\\": \\\"cert_id\\\",\\r\\n      \\\"task\\\": {\\r\\n        \\\"name\\\": \\\"taskName\\\"\\r\\n      }\\r\\n    },\\r\\n    \\\"name\\\": {\\r\\n      \\\"suffix\\\": \\\"lend\\\"\\r\\n    },\\r\\n    \\\"service\\\": {\\r\\n      \\\"name\\\": \\\"serviceName\\\"\\r\\n    }\\r\\n  }\\r\\n```\\r\\n\\r\\noutput from module\\r\\n\\r\\n```\\r\\n\\\"elb\\\": {\\r\\n    \\\"app_cookie_policy\\\": null,\\r\\n    \\\"backends\\\": [\\r\\n\\r\\n    ],\\r\\n    \\\"connection_draining_timeout\\\": 120,\\r\\n    \\\"cross_az_load_balancing\\\": \\\"yes\\\",\\r\\n    \\\"dns_name\\\": \\\"dns_name\\\",\\r\\n    \\\"health_check\\\": {\\r\\n      \\\"healthy_threshold\\\": 2,\\r\\n      \\\"interval\\\": 5,\\r\\n      \\\"target\\\": \\\"TCP:52359\\\",\\r\\n      \\\"timeout\\\": 2,\\r\\n      \\\"unhealthy_threshold\\\": 10\\r\\n    },\\r\\n    \\\"hosted_zone_id\\\": \\\"hostedZoneId\\\",\\r\\n    \\\"hosted_zone_name\\\": null,\\r\\n    \\\"idle_timeout\\\": 60,\\r\\n    \\\"in_service_count\\\": 1,\\r\\n    \\\"instance_health\\\": [\\r\\n      {\\r\\n        \\\"instance_id\\\": \\\"i-250534bf\\\",\\r\\n        \\\"reason_code\\\": \\\"N/A\\\",\\r\\n        \\\"state\\\": \\\"InService\\\"\\r\\n      },\\r\\n      {\\r\\n        \\\"instance_id\\\": \\\"i-8e68ebcb\\\",\\r\\n        \\\"reason_code\\\": \\\"Instance\\\",\\r\\n        \\\"state\\\": \\\"OutOfService\\\"\\r\\n      }\\r\\n    ],\\r\\n    \\\"instances\\\": [\\r\\n      \\\"i-250534bf\\\"\\r\\n    ],\\r\\n    \\\"lb_cookie_policy\\\": null,\\r\\n    \\\"listeners\\\": [\\r\\n      [\\r\\n        8000,\\r\\n        60047,\\r\\n        \\\"SSL\\\",\\r\\n        \\\"TCP\\\",\\r\\n        \\\"cert_id\\\"\\r\\n      ],\\r\\n      [\\r\\n        80,\\r\\n        45784,\\r\\n        \\\"HTTP\\\",\\r\\n        \\\"HTTP\\\"\\r\\n      ],\\r\\n      [\\r\\n        443,\\r\\n        45784,\\r\\n        \\\"HTTPS\\\",\\r\\n        \\\"HTTP\\\",\\r\\n        \\\"cert_id\\\"\\r\\n      ]\\r\\n    ],\\r\\n    \\\"name\\\": \\\"elbName\\\",\\r\\n    \\\"out_of_service_count\\\": 1,\\r\\n    \\\"proxy_policy\\\": null,\\r\\n    \\\"region\\\": \\\"us-east-1\\\",\\r\\n    \\\"scheme\\\": \\\"internal\\\",\\r\\n    \\\"security_group_ids\\\": [\\r\\n      \\\"sg1\\\",\\r\\n      \\\"sg2\\\"\\r\\n    ],\\r\\n    \\\"status\\\": \\\"ok\\\",\\r\\n    \\\"subnets\\\": [\\r\\n      \\\"subnet-1\\\",\\r\\n      \\\"subnet-2\\\",\\r\\n      \\\"subnet-3\\\"\\r\\n    ],\\r\\n    \\\"tags\\\": null,\\r\\n    \\\"unknown_instance_state_count\\\": 0,\\r\\n    \\\"zones\\\": [\\r\\n      \\\"us-east-1a\\\",\\r\\n      \\\"us-east-1b\\\",\\r\\n      \\\"us-east-1c\\\"\\r\\n    ]\\r\\n  }\\r\\n```\\r\\n\\r\\nNote the `ping_port` from the invocation does not match what is in the `target:port` from the healthcheck property of the module output. Seems to be ignored in this run.\\r\\n\", \n    \"component_name\": \"ec2_elb_lb\", \n    \"component_raw\": \"ec2_elb_lb\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20111\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"needs_info\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_elb_lb.py\", \n    \"summary\": \"ELB healthcheck changes are sometimes ignored.\", \n    \"title\": \"ec2_elb_lb is not always idempotent when updating healthchecks\"\n  }, \n  \"20112\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel f04aee9754) last updated 2017/01/11 135328 (GMT +1100)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndocker_exec\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel f04aee9754) last updated 2017/01/11 13:53:28 (GMT +1100)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nAllows running \\\"docker exec\\\" on remote Docker hosts. The new Docker modules such as docker_container support management of remote Docker hosts, and being able to do an exec remotely is useful to me. It appears to be useful to others also, see the comment on the question here: http://stackoverflow.com/questions/32878795/run-command-inside-of-docker-container-using-ansible\\r\\n\\r\\nThe module can be used in a playbook like so:\\r\\n```\\r\\n  - name: Register gitlab runner\\r\\n    docker_exec: \\r\\n      command: <some command>\\r\\n      docker_host: <docker host>\\r\\n      name: <container name>\\r\\n    register: exec_output\\r\\n\\r\\n  - name: Registration output\\r\\n    debug: msg=\\\"{{ exec_output.result }}\\\"\\r\\n```\\r\\n\\r\\nUsing a register and debug was the best way that I could find to see the result of the exec. Also note that it's not possible AFAIK (at least using the docker.py library) to get the return status of the command. As far as I can see, it's thrown away in docker/api/exec_api.py when it calls _get_result_tty(). As a result, we can only assume that the result is \\\"changed=True\\\", and leave it up to the user to determine whether or not the exec worked. Parsing the result and determining success or failure will depend on what the command was, so can't be implemented in the module.\\r\\n\\r\\nThis is my first attempt at an Ansible module, and my first use of Python at all, so any suggestions for improvements are quite welcome.\", \n    \"component_name\": \"docker_exec\", \n    \"component_raw\": \"docker_exec\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20112\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"docker\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_exec.py\", \n    \"summary\": \"Allows running \\\"docker exec\\\" on remote Docker hosts. The new Docker modules such as docker_container support management of remote Docker hosts, and being able to do an exec remotely is useful to me. It appears to be useful to others also, see the comment on the question here: http://stackoverflow.com/questions/32878795/run-command-inside-of-docker-container-using-ansible\\n\\n\\n\\nThe module can be used in a playbook like so:\\n\\n```\\n\\n  - name: Register gitlab runner\\n\\n    docker_exec: \\n\\n      command: <some command>\\n\\n      docker_host: <docker host>\\n\\n      name: <container name>\\n\\n    register: exec_output\\n\\n\\n\\n  - name: Registration output\\n\\n    debug: msg=\\\"{{ exec_output.result }}\\\"\\n\\n```\\n\\n\\n\\nUsing a register and debug was the best way that I could find to see the result of the exec. Also note that it's not possible AFAIK (at least using the docker.py library) to get the return status of the command. As far as I can see, it's thrown away in docker/api/exec_api.py when it calls _get_result_tty(). As a result, we can only assume that the result is \\\"changed=True\\\", and leave it up to the user to determine whether or not the exec worked. Parsing the result and determining success or failure will depend on what the command was, so can't be implemented in the module.\\n\\n\\n\\nThis is my first attempt at an Ansible module, and my first use of Python at all, so any suggestions for improvements are quite welcome.\", \n    \"title\": \"Add docker_exec module\"\n  }, \n  \"20113\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 6ec0369c26) last updated 2017/01/11 133413 (GMT +1000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_vpc_peer\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel 6ec0369c26) last updated 2017/01/11 13:34:13 (GMT +1000)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nDon't try to create tags on a vpc that you've just removed.\\r\\n\\r\\nAvoids:\\r\\n\\r\\n```\\r\\n\\\"msg\\\": \\\"An error occurred (InvalidParameterValue) when calling the CreateTags operation: You must specify one or more tags to create\\\"\\r\\n```\\r\\n\\r\\nAlthough not quite sure why the `create_tags` was being called as `module.params.get('tags')` *should* have returned `None`.\\r\\n\\r\\nI've also done some flake8 tidying, but split the commits into the functional change and the tidy change.\", \n    \"component_name\": \"ec2_vpc_peer\", \n    \"component_raw\": \"ec2_vpc_peer\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20113\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"committer_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_peer.py\", \n    \"summary\": \"Don't try to create tags on a vpc that you've just removed.\\n\\n\\n\\nAvoids:\\n\\n\\n\\n```\\n\\n\\\"msg\\\": \\\"An error occurred (InvalidParameterValue) when calling the CreateTags operation: You must specify one or more tags to create\\\"\\n\\n```\\n\\n\\n\\nAlthough not quite sure why the `create_tags` was being called as `module.params.get('tags')` *should* have returned `None`.\\n\\n\\n\\nI've also done some flake8 tidying, but split the commits into the functional change and the tidy change.\", \n    \"title\": \"ec2_vpc_peer should remove peering connections\"\n  }, \n  \"20114\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 6ec0369c26) last updated 2017/01/11 133413 (GMT +1000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_vpc_route_table\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel 6ec0369c26) last updated 2017/01/11 13:34:13 (GMT +1000)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nIf a route table still has subnets associated with it, it will fail\\r\\nto delete:\\r\\n\\r\\n```\\r\\n\\\"msg\\\": \\\"The routeTable 'rtb-abcd1234' has dependencies and cannot be deleted.\\\"\\r\\n```\\r\\n\\r\\nAvoid this by disassociating subnets before route table deletion\\r\\n\\r\\nAlso performed  some flake8 tidying but separated the commits into  a functional change and a flake8 tidy change\", \n    \"component_name\": \"ec2_vpc_route_table\", \n    \"component_raw\": \"ec2_vpc_route_table\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20114\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"committer_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py\", \n    \"summary\": \"If a route table still has subnets associated with it, it will fail\\n\\nto delete:\\n\\n\\n\\n```\\n\\n\\\"msg\\\": \\\"The routeTable 'rtb-abcd1234' has dependencies and cannot be deleted.\\\"\\n\\n```\\n\\n\\n\\nAvoid this by disassociating subnets before route table deletion\\n\\n\\n\\nAlso performed  some flake8 tidying but separated the commits into  a functional change and a flake8 tidy change\", \n    \"title\": \"Disassociate EC2 VPC subnets from route tables before deletion\"\n  }, \n  \"20115\": {\n    \"ansible_version\": \"ansible 2.3.0 (aci-winrm 8ebe676623) last updated 2017/01/10 194444 (GMT -700)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\nFeature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nansible-test\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 (aci-winrm 8ebe676623) last updated 2017/01/10 19:44:44 (GMT -700)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nSend current winrm config to ansible-core-ci.\\r\\n\\r\\nThis causes the remote instance to use the merged copy of the script from Shippable, instead of the version from the PR, which may be lacking upstream changes.\", \n    \"component_name\": \"ansible-test\", \n    \"component_raw\": \"ansible-test\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20115\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Send current winrm config to ansible-core-ci.\\n\\n\\n\\nThis causes the remote instance to use the merged copy of the script from Shippable, instead of the version from the PR, which may be lacking upstream changes.\", \n    \"title\": \"Send current winrm config to ansible-core-ci.\"\n  }, \n  \"20116\": {\n    \"ansible_version\": \"2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncli\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nspelling\", \n    \"component_name\": \"cli\", \n    \"component_raw\": \"cli\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20116\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"spelling\", \n    \"title\": \"spelling of Extraneous\"\n  }, \n  \"20117\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 6ec0369c26) last updated 2017/01/11 142703 (GMT +1100)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nsynchronize\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel 6ec0369c26) last updated 2017/01/11 14:27:03 (GMT +1100)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nFedora 24 to Ubuntu 16.04 - but not OS specific.\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n- hosts: all\\r\\n  become: yes\\r\\n  tasks:\\r\\n    - synchronize:\\r\\n        src: ~/test/\\r\\n        dest: /test\\r\\n\\r\\n- hosts: all\\r\\n  become: yes\\r\\n  become_user: testuser\\r\\n  tasks:\\r\\n    - synchronize:\\r\\n        src: ~/test/\\r\\n        dest: /home/testuser/test\\r\\n```\\r\\n```\\r\\ndocker run -d --name ansible-sync-test ubuntu:xenial sleep infinity\\r\\ndocker exec -i ansible-sync-test apt-get update\\r\\ndocker exec -i ansible-sync-test apt-get install -y sudo python rsync\\r\\ndocker exec -i ansible-sync-test useradd -m testuser\\r\\nansible-playbook -i \\\"ansible-sync-test,\\\" reproduce.yml -c docker -vvvv\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe first play should synchronize my ~/test directory to /test owned by root and the second should sync it to /home/testuser/test owned by testuser. Both fail today on devel.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nUsing /etc/ansible/ansible.cfg as config file\\r\\nLoading callback plugin default of type stdout, v2.0 from /home/jamie/work/ansible/ansible/lib/ansible/plugins/callback/__init__.pyc\\r\\n\\r\\nPLAYBOOK: reproduce.yml ********************************************************************************************************************************************************\\r\\n2 plays in reproduce.yml\\r\\n\\r\\nPLAY [all] *********************************************************************************************************************************************************************\\r\\n\\r\\nTASK [Gathering Facts] *********************************************************************************************************************************************************\\r\\nUsing module file /home/jamie/work/ansible/ansible/lib/ansible/modules/system/setup.py\\r\\n<ansible-sync-test> ESTABLISH DOCKER CONNECTION FOR USER: root\\r\\n<ansible-sync-test> EXEC ['/usr/bin/docker', 'exec', '-i', u'ansible-sync-test', u'/bin/sh', '-c', u'/bin/sh -c \\\\'( umask 77 && mkdir -p \\\"` echo ~/.ansible/tmp/ansible-tmp-1484108840.86-130865061888096 `\\\" && echo ansible-tmp-1484108840.86-130865061888096=\\\"` echo ~/.ansible/tmp/ansible-tmp-1484108840.86-130865061888096 `\\\" ) && sleep 0\\\\'']\\r\\n<ansible-sync-test> PUT /tmp/tmpHX80Bb TO /root/.ansible/tmp/ansible-tmp-1484108840.86-130865061888096/setup.py\\r\\n<ansible-sync-test> EXEC ['/usr/bin/docker', 'exec', '-i', u'ansible-sync-test', u'/bin/sh', '-c', u\\\"/bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1484108840.86-130865061888096/ /root/.ansible/tmp/ansible-tmp-1484108840.86-130865061888096/setup.py && sleep 0'\\\"]\\r\\n<ansible-sync-test> EXEC ['/usr/bin/docker', 'exec', '-i', u'ansible-sync-test', u'/bin/sh', '-c', u'/bin/sh -c \\\\'sudo -H -S -n -u root /bin/sh -c \\\\'\\\"\\\\'\\\"\\\\'echo BECOME-SUCCESS-cbsuucggbcggibzbnwrgxfwalqexznni; /usr/bin/python /root/.ansible/tmp/ansible-tmp-1484108840.86-130865061888096/setup.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1484108840.86-130865061888096/\\\" > /dev/null 2>&1\\\\'\\\"\\\\'\\\"\\\\' && sleep 0\\\\'']\\r\\nok: [ansible-sync-test]\\r\\n\\r\\nTASK [synchronize] *************************************************************************************************************************************************************\\r\\ntask path: /home/jamie/test/reproduce.yml:4\\r\\nUsing module file /home/jamie/work/ansible/ansible/lib/ansible/modules/files/synchronize.py\\r\\n<ansible-sync-test> ESTABLISH LOCAL CONNECTION FOR USER: jamie\\r\\n<ansible-sync-test> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo ~/.ansible/tmp/ansible-tmp-1484108841.96-56189706790348 `\\\" && echo ansible-tmp-1484108841.96-56189706790348=\\\"` echo ~/.ansible/tmp/ansible-tmp-1484108841.96-56189706790348 `\\\" ) && sleep 0'\\r\\n<ansible-sync-test> PUT /tmp/tmpyDZd9E TO /home/jamie/.ansible/tmp/ansible-tmp-1484108841.96-56189706790348/synchronize.py\\r\\n<ansible-sync-test> EXEC /bin/sh -c 'chmod u+x /home/jamie/.ansible/tmp/ansible-tmp-1484108841.96-56189706790348/ /home/jamie/.ansible/tmp/ansible-tmp-1484108841.96-56189706790348/synchronize.py && sleep 0'\\r\\n<ansible-sync-test> EXEC /bin/sh -c '/home/jamie/.virtualenvs/ansible/bin/python2 /home/jamie/.ansible/tmp/ansible-tmp-1484108841.96-56189706790348/synchronize.py; rm -rf \\\"/home/jamie/.ansible/tmp/ansible-tmp-1484108841.96-56189706790348/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nfatal: [ansible-sync-test]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"cmd\\\": \\\"/usr/bin/rsync --delay-updates -F --compress --archive --rsh 'ssh  -S none -o StrictHostKeyChecking=no' --rsync-path=\\\\\\\"sudo rsync\\\\\\\"  --blocking-io --rsh='/usr/bin/docker exec -i' --out-format='<<CHANGED>>%i %n%L' \\\\\\\"/home/jamie/test/\\\\\\\" \\\\\\\"ansible-sync-test:/test\\\\\\\"\\\", \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"_local_rsync_path\\\": \\\"rsync\\\", \\r\\n            \\\"_substitute_controller\\\": false, \\r\\n            \\\"archive\\\": true, \\r\\n            \\\"checksum\\\": false, \\r\\n            \\\"compress\\\": true, \\r\\n            \\\"copy_links\\\": null, \\r\\n            \\\"delete\\\": false, \\r\\n            \\\"dest\\\": \\\"ansible-sync-test:/test\\\", \\r\\n            \\\"dest_port\\\": null, \\r\\n            \\\"dirs\\\": false, \\r\\n            \\\"existing_only\\\": false, \\r\\n            \\\"group\\\": null, \\r\\n            \\\"links\\\": null, \\r\\n            \\\"mode\\\": \\\"push\\\", \\r\\n            \\\"owner\\\": null, \\r\\n            \\\"partial\\\": false, \\r\\n            \\\"perms\\\": null, \\r\\n            \\\"private_key\\\": null, \\r\\n            \\\"recursive\\\": null, \\r\\n            \\\"rsync_opts\\\": [\\r\\n                \\\"\\\", \\r\\n                \\\"--blocking-io\\\", \\r\\n                \\\"--rsh='/usr/bin/docker exec -i'\\\"\\r\\n            ], \\r\\n            \\\"rsync_path\\\": \\\"\\\\\\\"sudo rsync\\\\\\\"\\\", \\r\\n            \\\"rsync_timeout\\\": 0, \\r\\n            \\\"set_remote_user\\\": true, \\r\\n            \\\"src\\\": \\\"/home/jamie/test/\\\", \\r\\n            \\\"ssh_args\\\": null, \\r\\n            \\\"times\\\": null, \\r\\n            \\\"verify_host\\\": false\\r\\n        }\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"protocol version mismatch -- is your shell clean?\\\\n(see the rsync man page for an explanation)\\\\nrsync error: protocol incompatibility (code 2) at compat.c(178) [sender=3.1.2]\\\\n\\\", \\r\\n    \\\"rc\\\": 2\\r\\n}\\r\\n\\tto retry, use: --limit @/home/jamie/test/reproduce.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************************************************************************************************************\\r\\nansible-sync-test          : ok=1    changed=0    unreachable=0    failed=1   \\r\\n```\\r\\n\\r\\nIf you take just the rsync command that was run there and execute it adding -vvvv you get: \\r\\n````\\r\\n$ /usr/bin/rsync -vvvv --delay-updates -F --compress --archive --rsh 'ssh  -S none -o StrictHostKeyChecking=no' --rsync-path=\\\"sudo rsync\\\"  --blocking-io --rsh='/usr/bin/docker exec -i' --out-format='<<CHANGED>>%i %n%L' /home/jamie/test/ ansible-sync-test:/test\\r\\ncmd=/usr/bin/docker exec -i machine=ansible-sync-test user=<NULL> path=/test\\r\\ncmd[0]=/usr/bin/docker cmd[1]=exec cmd[2]=-i cmd[3]=ansible-sync-test cmd[4]=sudo rsync cmd[5]=--server cmd[6]=-vvvvlogDtprze.iLsfxC cmd[7]=--log-format=%i cmd[8]=--delay-updates cmd[9]=. cmd[10]=/test \\r\\nopening connection using: /usr/bin/docker exec -i ansible-sync-test \\\"sudo rsync\\\" --server -vvvvlogDtprze.iLsfxC \\\"--log-format=%i\\\" --delay-updates . /test  (11 args)\\r\\nmsg checking charset: UTF-8\\r\\n(Client) Protocol versions: remote=543387762, negotiated=31\\r\\nprotocol version mismatch -- is your shell clean?\\r\\n(see the rsync man page for an explanation)\\r\\n[sender] _exit_cleanup(code=2, file=compat.c, line=178): entered\\r\\nrsync error: protocol incompatibility (code 2) at compat.c(178) [sender=3.1.2]\\r\\n[sender] _exit_cleanup(code=2, file=compat.c, line=178): about to call exit(2)\\r\\n````\\r\\n\\r\\nProtocol version mismatch generally means that the command you executed printed something else and so the connection was unable to be established, so using the \\\"opening connection using\\\" string:\\r\\n\\r\\n```\\r\\n$ /usr/bin/docker exec -i ansible-sync-test \\\"sudo rsync\\\" --server -vvvvlogDtprze.iLsfxC \\\"--log-format=%i\\\" --delay-updates . /test \\r\\nrpc error: code = 13 desc = invalid header field value \\\"oci runtime error: exec failed: container_linux.go:247: starting container process caused \\\\\\\"exec: \\\\\\\\\\\\\\\"sudo rsync\\\\\\\\\\\\\\\": executable file not found in $PATH\\\\\\\"\\\\n\\\"\\r\\n```\\r\\n\\r\\nSo rsync appears to be interpretting everything in the rsync-path as a single arg and docker can't parse it within the container. This would seem to be confirmed by `cmd[4]` in the rsync output showing the whole string as 1 argument. If we remove the sudo it works because \\\"rsync\\\" is a valid command. Wait that's weird, how does this work for ssh? \\r\\n\\r\\n```\\r\\n$ ssh 192.168.1.109 \\\"sudo rsync\\\" --version\\r\\nrsync  version 3.0.9  protocol version 30\\r\\n```\\r\\nSo you learn something new every day, ssh or my shell is trimming the quotes before executing the command, where docker doesn't. \\r\\n\\r\\n\\r\\nWhatever the rationale here, using `--rsync-path \\\"sudo rsync\\\"` doesn't work with docker and it seems to be rsync's fault and we're unlikely to get that behaviour changed so we should fix it on the ansible side. \\r\\n\", \n    \"component_name\": \"synchronize\", \n    \"component_raw\": \"synchronize\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20117\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/synchronize.py\", \n    \"summary\": \"\", \n    \"title\": \"Using synchronize, docker connection and become fails\"\n  }, \n  \"20120\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/jayen/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nec2_group task\\r\\nrules_egress option parameter\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/jayen/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n```\\r\\n[ssh_connection]\\r\\ncontrol_path = /tmp/control_%%l_%%h_%%p_%%r\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\ndebian jessie managing EC2\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nDocs say: `If none are supplied, a default all-out rule is assumed.` but I didn't supply `rules_egress` as an option parameter and ansible did not create the default all-out rule.  More info here: https://forums.aws.amazon.com/thread.jspa?threadID=246610\\r\\n\\r\\nSeems to be the opposite of https://github.com/ansible/ansible/issues/19226\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- name: ec2_group default\\r\\n  ec2_group:\\r\\n    name: default\\r\\n    description: for all EC2 systems to contact each other\\r\\n    region: \\\"{{ aws_region }}\\\"\\r\\n    aws_access_key: \\\"{{ ec2_access_key }}\\\"\\r\\n    aws_secret_key: \\\"{{ ec2_secret_key }}\\\"\\r\\n    rules:\\r\\n      - proto: all\\r\\n        # the containing group name may be specified here\\r\\n        group_name: default\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\na default all-out rule is created\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\na default all-out rule was not created\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nAWS_ACCESS_KEY_ID={{ ec2_access_key }} AWS_SECRET_ACCESS_KEY={{ ec2_secret_key }} ansible-playbook --inventory inventory ec2.yaml --vault-password-file=.password\\r\\n```\\r\\n\", \n    \"component_name\": \"ec2_group task\", \n    \"component_raw\": \"ec2_group task\\nrules_egress option parameter\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20120\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"bug\", \n      \"cloud\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Docs say: `If none are supplied, a default all-out rule is assumed.` but I didn't supply `rules_egress` as an option parameter and ansible did not create the default all-out rule.  More info here: https://forums.aws.amazon.com/thread.jspa?threadID=246610\\n\\n\\n\\nSeems to be the opposite of https://github.com/ansible/ansible/issues/19226\", \n    \"title\": \"ec2_group rules_egress\"\n  }, \n  \"20122\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"This PR add support to add OVN external network in\\r\\nexternal providers module.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nlib/ansible/modules/cloud/ovirt/ovirt_external_providers.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nThis PR add support to add OVN external network in external providers module.\", \n    \"component_name\": \"lib/ansible/ s/cloud/ovirt/ovirt_external_providers.py\", \n    \"component_raw\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_providers.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20122\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"owner_pr\", \n      \"shipit\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/ovirt/ovirt_external_providers.py\", \n    \"summary\": \"This PR add support to add OVN external network in external providers module.\", \n    \"title\": \"cloud: ovirt: add support for OVN network\"\n  }, \n  \"20123\": {\n    \"ansible_version\": \"2.2.0\", \n    \"body\": \"\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_regedit \\r\\n\\r\\n\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n2.2.0\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nwindows7 && ubuntu 14.04\\r\\n\\r\\n\\r\\n##### CONFIGURATION\\r\\n```\\r\\n- name: Create Registry Key\\r\\n  win_regedit:\\r\\n    key: HKCU:\\\\Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Policies\\\\System\\r\\n    value: Wallpaper\\r\\n    data: C:\\\\pic1.jpg\\r\\n```\\r\\n\\r\\n\\r\\n##### SUMMARY\\r\\nI want use ansible to change **all** users's wallpaper.\\r\\nI found a way [here](http://www.sevenforums.com/tutorials/62048-desktop-background-specify-prevent-change.html) to change the wallpaper by changing registry.\\r\\nHowever, I can only change the registry of current user by changing the key \\\"HKCU:\\\\Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Policies\\\\System\\\" .\\r\\nBut I want to change the registry of every user on this computer.\\r\\n\\r\\nI only  got one administrator account.  Other users' credentials are not known.\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nI can change every users registry.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nI can only change current user's registry.\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\nAny comments will be appreciated :)\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\", \n    \"component_name\": \"win_regedit\", \n    \"component_raw\": \"win_regedit\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20123\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_regedit.py\", \n    \"summary\": \"I want use ansible to change **all** users's wallpaper.\\n\\nI found a way [here](http://www.sevenforums.com/tutorials/62048-desktop-background-specify-prevent-change.html) to change the wallpaper by changing registry.\\n\\nHowever, I can only change the registry of current user by changing the key \\\"HKCU:\\\\Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Policies\\\\System\\\" .\\n\\nBut I want to change the registry of every user on this computer.\\n\\n\\n\\nI only  got one administrator account.  Other users' credentials are not known.\", \n    \"title\": \"Want to manage registry of all users in windows7\"\n  }, \n  \"20124\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"Add a new delayed parameter which is needed to mark the service with\\r\\nDelayed Start.\\r\\n\\r\\nAlso requested by #16759.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_service\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nSupport for Automatic (Delayed Start) services on Windows.\\r\\n\", \n    \"component_name\": \"win_service\", \n    \"component_raw\": \"win_service\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20124\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"core_review\", \n      \"feature\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_service.ps1\", \n    \"summary\": \"Support for Automatic (Delayed Start) services on Windows.\", \n    \"title\": \"win_service: support for Automatic (Delayed Start)\"\n  }, \n  \"20125\": {\n    \"ansible_version\": \"2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncontrib/vmware_inventory.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThis permits to create instances, affect some custom fields like EC2 tags and then retrieve groups from custom fields like EC2 inventory\\r\\n\\r\\nExample: i have custom field __components__ set to _icinga2,grafana_ on host _vmwaretest01_ and _vmwaretest02_\\r\\ninventory output is:\\r\\n\\r\\n```\\r\\n\\\"vmware_tag_components_icinga2\\\": {\\r\\n    \\\"hosts\\\": [\\r\\n      \\\"vmwaretest01\\\",\\r\\n      \\\"vmwaretest02\\\"\\r\\n    ]\\r\\n},\\r\\n\\\"vmware_tag_components_icinga2\\\": {\\r\\n    \\\"hosts\\\": [\\r\\n      \\\"vmwaretest01\\\",\\r\\n      \\\"vmwaretest02\\\"\\r\\n    ]\\r\\n},\\r\\n```\\r\\n\\r\\nAlso permit to customize skip_keys value to enhance ourselves the inventory performance. Add resourceconfig to default skip_keys as it doesn't have interesting values for grouping in most cases\", \n    \"component_name\": \"contrib/vmware_inventory.py\", \n    \"component_raw\": \"contrib/vmware_inventory.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20125\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"vmware\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This permits to create instances, affect some custom fields like EC2 tags and then retrieve groups from custom fields like EC2 inventory\\n\\n\\n\\nExample: i have custom field __components__ set to _icinga2,grafana_ on host _vmwaretest01_ and _vmwaretest02_\\n\\ninventory output is:\\n\\n\\n\\n```\\n\\n\\\"vmware_tag_components_icinga2\\\": {\\n\\n    \\\"hosts\\\": [\\n\\n      \\\"vmwaretest01\\\",\\n\\n      \\\"vmwaretest02\\\"\\n\\n    ]\\n\\n},\\n\\n\\\"vmware_tag_components_icinga2\\\": {\\n\\n    \\\"hosts\\\": [\\n\\n      \\\"vmwaretest01\\\",\\n\\n      \\\"vmwaretest02\\\"\\n\\n    ]\\n\\n},\\n\\n```\\n\\n\\n\\nAlso permit to customize skip_keys value to enhance ourselves the inventory performance. Add resourceconfig to default skip_keys as it doesn't have interesting values for grouping in most cases\", \n    \"title\": \"vmware_inventory: permit to group by custom field & customize skip_keys\"\n  }, \n  \"20126\": {\n    \"ansible_version\": \"ansible 2.0.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @Yannik on March 29, 2016 13:24_\\n\\n##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nknown_hosts\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.0.1.0\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### OS / ENVIRONMENT\\n\\nUbuntu 14.04.4 LTS\\n##### SUMMARY\\n\\nThe known_hosts module reports keys as changed even though they have not changed.\\nThe reason for this is, that a known_hosts entry may include a comment, but this comment is not shown by `ssh-keygen -F <hostname> -f <known_hosts_file>` and therefore the check whether the key already exists fails. \\n##### STEPS TO REPRODUCE\\n\\ntest.yml:\\n\\n```\\n\\n---\\n- hosts: all \\n  tasks:\\n    - known_hosts:\\n        path: /tmp/known_hosts\\n        name: example.org\\n        key: \\\"example.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLSqkXLnT85znqek/60y+FnuCYzW2egPfZF2hRm8uND1gtTsn4kVM9ZfN7D3mrM8fgEvLWi5NnMbbylQ78AhqDk= COMMENT\\\"\\n```\\n\\nRun as `ansible-playbook -i 'localhost,' -c local test.yml`\\n\\n`/tmp/known_hosts` will contain\\n\\n```\\nexample.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLSqkXLnT85znqek/60y+FnuCYzW2egPfZF2hRm8uND1gtTsn4kVM9ZfN7D3mrM8fgEvLWi5NnMbbylQ78AhqDk= COMMENT\\n```\\n\\nwhich is a correct known_hosts entry according to the section [SSH_KNOWN_HOSTS FILE FORMAT](http://manpages.ubuntu.com/manpages/trusty/en/man8/sshd.8.html#contenttoc7) of the sshd manpages:\\n\\n> Each line in these files contains the following fields: markers\\n>      (optional), hostnames, bits, exponent, modulus, comment.  The fields are\\n>      separated by spaces.\\n\\n`ssh-keygen -F example.org -f /tmp/known_hosts`, which is used by the known_hosts module to check whether a key already exists, returns\\n\\n```\\n# Host example.org found: line 1 type ECDSA\\nexample.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLSqkXLnT85znqek/60y+FnuCYzW2egPfZF2hRm8uND1gtTsn4kVM9ZfN7D3mrM8fgEvLWi5NnMbbylQ78AhqDk=\\n```\\n\\non Ubuntu 14.04.4 LTS. The comment is, as you can see, not included.\\n\\nTherefore the check (see https://github.com/ansible/ansible-modules-extras/blob/devel/system/known_hosts.py#L232) whether the key exists fails and known_hosts always reports the key as changed on subsequent runs of the playbook.\\n##### EXPECTED RESULTS\\n\\nknown_hosts should not report the task as changed.\\n##### ACTUAL RESULTS\\n\\nknown_hosts does report the task as changed.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-extras#1924_\", \n    \"component_name\": \"known_hosts\", \n    \"component_raw\": \"known_hosts\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20126\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"affects_2.1\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/known_hosts.py\", \n    \"summary\": \"The known_hosts module reports keys as changed even though they have not changed.\\nThe reason for this is, that a known_hosts entry may include a comment, but this comment is not shown by `ssh-keygen -F <hostname> -f <known_hosts_file>` and therefore the check whether the key already exists fails.\", \n    \"title\": \"known_hosts module reporting 'changed' incorrectly\"\n  }, \n  \"20129\": {\n    \"ansible_version\": \"2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nbecome\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.2.0.0\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nubuntu 16.04\\r\\n\\r\\n##### SUMMARY\\r\\nBecome is not inherited if there is more than one level of inclusion in role. Here the example tree from the ansible root:\\r\\n\\r\\n```\\r\\n\\u251c\\u2500\\u2500 roles\\r\\n\\u2502\\u00a0\\u00a0 \\u2514\\u2500\\u2500 test-includes\\r\\n\\u2502\\u00a0\\u00a0     \\u2514\\u2500\\u2500 tasks\\r\\n\\u2502\\u00a0\\u00a0         \\u251c\\u2500\\u2500 includes\\r\\n\\u2502\\u00a0\\u00a0         \\u2502\\u00a0\\u00a0 \\u251c\\u2500\\u2500 foo.yml\\r\\n\\u2502\\u00a0\\u00a0         \\u2502\\u00a0\\u00a0 \\u2514\\u2500\\u2500 subincludes\\r\\n\\u2502\\u00a0\\u00a0         \\u2502\\u00a0\\u00a0     \\u2514\\u2500\\u2500 baz.yml\\r\\n\\u2502\\u00a0\\u00a0         \\u2514\\u2500\\u2500 main.yml\\r\\n\\u2514\\u2500\\u2500 test_include.yml\\r\\n```\\r\\n- The `test_include.yml` uses the role `test_includes`, \\r\\n- In the role, `main.yml` includes `includes/foo.yml` with `become: True`\\r\\n- the `foo.yml` includes `subincludes/baz.yml`\\r\\n\\r\\nThe tasks in `includes/foo.yml` have `become: True`\\r\\nThe tasks in `includes/subincludes/baz.yml` have `become: False`\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nBuild the directory as described above. The files have the following content\\r\\n\\r\\n```yaml\\r\\n\\r\\n# test_include.yml\\r\\n- hosts: localhost\\r\\n  roles:\\r\\n    - \\\"test-includes\\\"\\r\\n####################################\\r\\n\\r\\n# roles/test-includes/main.yml\\r\\n- include: includes/foo.yml\\r\\n  become: True\\r\\n\\r\\n####################################\\r\\n\\r\\n# roles/test-includes/includes/foo.yml\\r\\n- shell:\\r\\n    cat /etc/shadow\\r\\n\\r\\n- include: subincludes/baz.yml\\r\\n\\r\\n###############################\\r\\n\\r\\n# roles/sub-includes/baz.yml\\r\\n- shell:\\r\\n    cat /etc/shadow\\r\\n\\r\\n################################\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nseemless run\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nIn subincludes the `/etc/shadow` cannot be read, while it can be read in includes\\r\\n```\\r\\n\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [test-includes : command] *************************************************\\r\\nchanged: [localhost]\\r\\n\\r\\nTASK [test-includes : command] *************************************************\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": true, \\\"cmd\\\": \\\"cat /etc/shadow\\\", \\\"delta\\\": \\\"0:00:00.001779\\\", \\\"end\\\": \\\"2017-\\r\\n01-11 13:20:32.272565\\\", \\\"failed\\\": true, \\\"rc\\\": 1, \\\"start\\\": \\\"2017-01-11 13:20:32.270786\\\", \\\"stderr\\\": \\\"cat: /etc/shadow\\r\\n: Permission denied\\\", \\\"stdout\\\": \\\"\\\", \\\"stdout_lines\\\": [], \\\"warnings\\\": []}                                           \\r\\n        to retry, use: --limit @/home/me/my/ansible-test/test_include.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=2    changed=1    unreachable=0    failed=1   \\r\\n```\\r\\n\", \n    \"component_name\": \"become\", \n    \"component_raw\": \"become\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20129\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Become is not inherited if there is more than one level of inclusion in role. Here the example tree from the ansible root:\\n\\n\\n\\n```\\n\\n roles\\n\\n  test-includes\\n\\n      tasks\\n\\n          includes\\n\\n           foo.yml\\n\\n           subincludes\\n\\n               baz.yml\\n\\n          main.yml\\n\\n test_include.yml\\n\\n```\\n\\n- The `test_include.yml` uses the role `test_includes`, \\n\\n- In the role, `main.yml` includes `includes/foo.yml` with `become: True`\\n\\n- the `foo.yml` includes `subincludes/baz.yml`\\n\\n\\n\\nThe tasks in `includes/foo.yml` have `become: True`\\n\\nThe tasks in `includes/subincludes/baz.yml` have `become: False`\", \n    \"title\": \"become: True is not inherited in role includes below 1 level\"\n  }, \n  \"20130\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nzypper.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\ndevel\\r\\n\\r\\n##### SUMMARY\\r\\nAdd example for usage of ZYPP_LOCK_TIMEOUT\\r\\n\\r\\nRetries to require lock for zypper operation.\", \n    \"component_name\": \"zypper.py\", \n    \"component_raw\": \"zypper.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20130\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"committer_review\", \n      \"docs\", \n      \"module\", \n      \"owner_pr\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/zypper.py\", \n    \"summary\": \"Add example for usage of ZYPP_LOCK_TIMEOUT\\n\\n\\n\\nRetries to require lock for zypper operation.\", \n    \"title\": \"Add option 'env' to zypper module\"\n  }, \n  \"20131\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 8fe09d4ea9) last updated 2017/01/11 082339 (GMT +100)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnet_command\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel 8fe09d4ea9) last updated 2017/01/11 08:23:39 (GMT +100)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n\\r\\n##### SUMMARY\\r\\nJunos devices have a root user that doesn't go straight into the `cli` shell\\r\\n\\r\\nInitially this causes the detection code in `plugins/terminal/junos.py` to gracefully fail as `show version` returns an error.\\r\\n\\r\\n\\r\\n```\\r\\nroot@ec2-54-204-196-139% show version\\r\\nshow: Command not found.\\r\\nroot@ec2-54-204-196-139% cli\\r\\nshow root@ec2-54-204-196-139> show version \\r\\nHostname: ec2-54-204-196-139\\r\\nModel: vsrx\\r\\nJunos: 15.1X49-D60.7\\r\\nJUNOS Software Release [15.1X49-D60.7]\\r\\n```\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nConnect as root\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"net_command\", \n    \"component_raw\": \"net_command\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20131\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/basics/net_command.py\", \n    \"summary\": \"Junos devices have a root user that doesn't go straight into the `cli` shell\\n\\n\\n\\nInitially this causes the detection code in `plugins/terminal/junos.py` to gracefully fail as `show version` returns an error.\\n\\n\\n\\n\\n\\n```\\n\\nroot@ec2-54-204-196-139% show version\\n\\nshow: Command not found.\\n\\nroot@ec2-54-204-196-139% cli\\n\\nshow root@ec2-54-204-196-139> show version \\n\\nHostname: ec2-54-204-196-139\\n\\nModel: vsrx\\n\\nJunos: 15.1X49-D60.7\\n\\nJUNOS Software Release [15.1X49-D60.7]\\n\\n```\", \n    \"title\": \"net_command on junos will fail if connecting as root\"\n  }, \n  \"20133\": {\n    \"ansible_version\": \"ansible 2.3.0 (timezone 2177618e60) last updated 2017/01/11 150710 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \" - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\n\\r\\n`timezone` module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (timezone 2177618e60) last updated 2017/01/11 15:07:10 (GMT +200)\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n- small textual fixes\\r\\n- ensure the [generated docs](http://docs.ansible.com/ansible/timezone_module.html) list either `hwclock` or `name` as required by using a non-generated value for `required_one_of`\\r\\n\", \n    \"component_name\": \"timezone\", \n    \"component_raw\": \"`timezone` module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20133\", \n    \"issue_type\": null, \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"module\", \n      \"needs_revision\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/timezone.py\", \n    \"summary\": \"- small textual fixes\\n\\n- ensure the [generated docs](http://docs.ansible.com/ansible/timezone_module.html) list either `hwclock` or `name` as required by using a non-generated value for `required_one_of`\", \n    \"title\": \"timezone: Tidy up docs and arg parsing\"\n  }, \n  \"20135\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ngroup vars\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nDefault settings \\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nUbuntu 16.04 LTS && 14.04 LTS\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nThe precedence of variables within an inventory has changed between Ansible 2.0.2.0 and 2.2.0.0 in that variables in inventory/group_vars/ no longer override dynamic vars.\\r\\n\\r\\nWe've inherited some Ansible that deploys to various different environments.  It uses a Python script in each directory to load in some common variables, and those variables are overridden per inventory by including the values in `inventory/group_vars`.\\r\\nThis has been working until we upgraded from Ansible 2.0.2.0 to 2.2.0.0\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nA basic version of what we're using is as follows:\\r\\n\\r\\n**Layout**\\r\\n```\\r\\n\\u251c\\u2500\\u2500 inventory\\r\\n\\u2502\\u00a0\\u00a0 \\u251c\\u2500\\u2500 common.yml\\r\\n\\u2502\\u00a0\\u00a0 \\u2514\\u2500\\u2500 test\\r\\n\\u2502\\u00a0\\u00a0     \\u251c\\u2500\\u2500 common_vars.py\\r\\n\\u2502\\u00a0\\u00a0     \\u251c\\u2500\\u2500 group_vars\\r\\n\\u2502\\u00a0\\u00a0     \\u2502\\u00a0\\u00a0 \\u2514\\u2500\\u2500 all\\r\\n\\u2502\\u00a0\\u00a0     \\u2502\\u00a0\\u00a0     \\u2514\\u2500\\u2500 main.yml\\r\\n\\u2502\\u00a0\\u00a0     \\u2514\\u2500\\u2500 hosts\\r\\n\\u2514\\u2500\\u2500 test.yml\\r\\n```\\r\\n   \\r\\n**test.yml**   \\r\\n```\\r\\n---\\r\\n- hosts: berty\\r\\n  connection: local\\r\\n\\r\\n  tasks:\\r\\n\\r\\n    - debug: var=our_variable\\r\\n```\\r\\n   \\r\\n**inventory/common.yml**\\r\\n```\\r\\n---\\r\\nour_variable: \\\"quite common\\\"\\r\\n```   \\r\\n\\r\\n**inventory/test/common_vars.py**\\r\\n```\\r\\n#! /usr/bin/env python\\r\\n\\r\\nimport os\\r\\nimport sys\\r\\nimport json\\r\\n\\r\\nimport yaml\\r\\n\\r\\nall = open(os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '..', 'common.yml')))\\r\\nall = ((yaml.load(all)).copy())\\r\\njson.dump({\\\"all\\\": {\\\"vars\\\": all}}, sys.stdout, indent=4)\\r\\n```   \\r\\n\\r\\n**inventory/test/group_vars/all/main.yml**\\r\\n```\\r\\n---\\r\\nour_variable: \\\"very limited\\\"\\r\\n```   \\r\\n\\r\\n**inventory/test/hosts**\\r\\n```\\r\\n[berty]\\r\\n127.0.0.1\\r\\n```\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n```\\r\\n# ansible-playbook test.yml -i inventory/test/                                                                        \\r\\n\\r\\nPLAY [berty] *******************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [127.0.0.1]\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [127.0.0.1] => {\\r\\n    \\\"our_variable\\\": \\\"very limited\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\n127.0.0.1                  : ok=2    changed=0    unreachable=0    failed=0   \\r\\n```\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nansible-playbook test.yml -i inventory/test/                                                                        \\r\\n\\r\\nPLAY [berty] *******************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [127.0.0.1]\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [127.0.0.1] => {\\r\\n    \\\"our_variable\\\": \\\"quite common\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\n127.0.0.1                  : ok=2    changed=0    unreachable=0    failed=0   \\r\\n```\\r\\n\", \n    \"component_name\": \"ansible 2.2\", \n    \"component_raw\": \"Ansible 2.2\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20135\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The precedence of variables within an inventory has changed between Ansible 2.0.2.0 and 2.2.0.0 in that variables in inventory/group_vars/ no longer override dynamic vars.\\n\\n\\n\\nWe've inherited some Ansible that deploys to various different environments.  It uses a Python script in each directory to load in some common variables, and those variables are overridden per inventory by including the values in `inventory/group_vars`.\\n\\nThis has been working until we upgraded from Ansible 2.0.2.0 to 2.2.0.0\", \n    \"title\": \"In Ansible 2.2, dynamic inventory variables now override inventory group_var variables\"\n  }, \n  \"20137\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndigitalocean\\r\\n\\r\\n##### SUMMARY\\r\\nAdd Floating IP Support to DigitalOcean Module\\r\\n\\r\\n##### DETAILS\\r\\nParroting [a previous request](https://github.com/ansible/ansible-modules-core/issues/3004) (in the old issue platform) to add support for DigitalOcean's Floating IP service to allow for Floating IPs to be generated and/or assigned to servers.  This will empower Ansible to support High Availability setups that use DigitalOcean's services.\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- name: Generate a new Floating IP in the nyc1 datacenter\\r\\n  digital_ocean: >\\r\\n    command=floating_ip\\r\\n    state=present\\r\\n    region_id=nyc1\\r\\n    api_token={{ do_token }}\\r\\n  register: new_floating_ip\\r\\n\\r\\n- name: Assign an existing Floating IP to an existing droplet\\r\\n  digital_ocean: >\\r\\n    command=floating_ip\\r\\n    state=present\\r\\n    name={{ do_droplet.droplet.name }}\\r\\n    floating_ip={{ new_floating_ip.floating_ip.ip }}\\r\\n    api_token={{ do_token }}\\r\\n  register: assigned_floating_ip\\r\\n\\r\\n- name: Assign a new Floating IP to an existing droplet\\r\\n  digital_ocean: >\\r\\n    command=floating_ip\\r\\n    state=present\\r\\n    name={{ do_droplet.droplet.name }}\\r\\n    api_token={{ do_token }}\\r\\n  register: new_floating_ip\\r\\n\\r\\n- name: Assign an existing Floating IP to a new droplet\\r\\n  digital_ocean: >\\r\\n    command=droplet\\r\\n    state=present\\r\\n    name=my-new-server\\r\\n    size_id=1gb\\r\\n    region_id=nyc1\\r\\n    image_id=ubuntu-16-10-x64\\r\\n    floating_ip={{ new_floating_ip.floating_ip.ip }}\\r\\n    api_token={{ do_token }}\\r\\n  register: existing_server\\r\\n\\r\\n- name: Assign a new Floating IP to a new droplet\\r\\n  digital_ocean: >\\r\\n    command=droplet\\r\\n    state=present\\r\\n    name=my-second-server\\r\\n    size_id=1gb\\r\\n    region_id=nyc1\\r\\n    image_id=ubuntu-16-10-x64\\r\\n    floating_ip=new\\r\\n    api_token={{ do_token }}\\r\\n  register: new_server\\r\\n\\r\\n- name: Remove an existing Floating IP\\r\\n  digital_ocean: >\\r\\n    command=floating_ip\\r\\n    state=absent\\r\\n    floating_ip={{ assigned_floating_ip.floating_ip.ip }}\\r\\n    api_token={{ do_token }}\\r\\n```\\r\\n\\r\\nThere may be more/less functionality depending on standards - the scheme above is a best-effort at what this functionality might look like.\", \n    \"component_name\": \"digitalocean\", \n    \"component_raw\": \"digitalocean\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20137\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"digital_ocean\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Add Floating IP Support to DigitalOcean Module\\n\\n\\n\\n##### DETAILS\\n\\nParroting [a previous request](https://github.com/ansible/ansible-modules-core/issues/3004) (in the old issue platform) to add support for DigitalOcean's Floating IP service to allow for Floating IPs to be generated and/or assigned to servers.  This will empower Ansible to support High Availability setups that use DigitalOcean's services.\\n\\n\\n\\n\\n\\n```yaml\\n\\n- name: Generate a new Floating IP in the nyc1 datacenter\\n\\n  digital_ocean: >\\n\\n    command=floating_ip\\n\\n    state=present\\n\\n    region_id=nyc1\\n\\n    api_token={{ do_token }}\\n\\n  register: new_floating_ip\\n\\n\\n\\n- name: Assign an existing Floating IP to an existing droplet\\n\\n  digital_ocean: >\\n\\n    command=floating_ip\\n\\n    state=present\\n\\n    name={{ do_droplet.droplet.name }}\\n\\n    floating_ip={{ new_floating_ip.floating_ip.ip }}\\n\\n    api_token={{ do_token }}\\n\\n  register: assigned_floating_ip\\n\\n\\n\\n- name: Assign a new Floating IP to an existing droplet\\n\\n  digital_ocean: >\\n\\n    command=floating_ip\\n\\n    state=present\\n\\n    name={{ do_droplet.droplet.name }}\\n\\n    api_token={{ do_token }}\\n\\n  register: new_floating_ip\\n\\n\\n\\n- name: Assign an existing Floating IP to a new droplet\\n\\n  digital_ocean: >\\n\\n    command=droplet\\n\\n    state=present\\n\\n    name=my-new-server\\n\\n    size_id=1gb\\n\\n    region_id=nyc1\\n\\n    image_id=ubuntu-16-10-x64\\n\\n    floating_ip={{ new_floating_ip.floating_ip.ip }}\\n\\n    api_token={{ do_token }}\\n\\n  register: existing_server\\n\\n\\n\\n- name: Assign a new Floating IP to a new droplet\\n\\n  digital_ocean: >\\n\\n    command=droplet\\n\\n    state=present\\n\\n    name=my-second-server\\n\\n    size_id=1gb\\n\\n    region_id=nyc1\\n\\n    image_id=ubuntu-16-10-x64\\n\\n    floating_ip=new\\n\\n    api_token={{ do_token }}\\n\\n  register: new_server\\n\\n\\n\\n- name: Remove an existing Floating IP\\n\\n  digital_ocean: >\\n\\n    command=floating_ip\\n\\n    state=absent\\n\\n    floating_ip={{ assigned_floating_ip.floating_ip.ip }}\\n\\n    api_token={{ do_token }}\\n\\n```\\n\\n\\n\\nThere may be more/less functionality depending on standards - the scheme above is a best-effort at what this functionality might look like.\", \n    \"title\": \"Floating IP support for DigitalOcean\"\n  }, \n  \"20139\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /Users/xyz/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nzypper\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /Users/xyz/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A (tested on OSX 10.12 and openSUSE Tumbleweed)\\r\\n\\r\\n##### SUMMARY\\r\\nCalling a zypper task with 'update_cache=yes' in check_mode (ansible-playbook ... --check) results in an error:\\r\\n```\\r\\nfatal: [foobar]: FAILED! => {\\\"changed\\\": false, \\\"cmd\\\": [\\\"/usr/bin/zypper\\\", \\\"--quiet\\\", \\\"--non-interactive\\\", \\\"--xmlout\\\", \\\"refresh\\\", \\\"--dry-run\\\"], \\\"failed\\\": true, \\\"msg\\\": \\\"Zypper run command failed with return code 2.\\\", \\\"rc\\\": 2, \\\"stderr\\\": \\\"Unknown option '--dry-run'\\\\n\\\", \\\"stdout\\\": \\\"<?xml version='1.0'?>\\\\n<stream>\\\\n</stream>\\\\n\\\", \\\"stdout_lines\\\": [\\\"<?xml version='1.0'?>\\\", \\\"<stream>\\\", \\\"</stream>\\\"]}\\r\\n```\\r\\nThis is due to the reason that 'zypper install' has a --dry-run switch, while zypper refresh (which is being called when update_cache is set to yes) does not have this.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nCall the following playbook with the --check option:\\r\\nansible-playbook zypper.yml --check\\r\\n\\r\\n```\\r\\n---\\r\\n# file zypper.yml\\r\\n- hosts: foobar\\r\\n  tasks:\\r\\n    - zypper:\\r\\n        name: dracut\\r\\n        state: latest\\r\\n        update_cache: yes\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nIt would be nice if this would not error out. But it can't work, because either\\r\\n- it does actually refresh the cache, even in check_mode or\\r\\n- it does not refresh the cache and thus might not know about new package or newer versions\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nThe task throws an error\\r\\n```\\r\\nfatal: [foobar]: FAILED! => {\\\"changed\\\": false, \\\"cmd\\\": [\\\"/usr/bin/zypper\\\", \\\"--quiet\\\", \\\"--non-interactive\\\", \\\"--xmlout\\\", \\\"refresh\\\", \\\"--dry-run\\\"], \\\"failed\\\": true, \\\"msg\\\": \\\"Zypper run command failed with return code 2.\\\", \\\"rc\\\": 2, \\\"stderr\\\": \\\"Unknown option '--dry-run'\\\\n\\\", \\\"stdout\\\": \\\"<?xml version='1.0'?>\\\\n<stream>\\\\n</stream>\\\\n\\\", \\\"stdout_lines\\\": [\\\"<?xml version='1.0'?>\\\", \\\"<stream>\\\", \\\"</stream>\\\"]}\\r\\n```\\r\\n\", \n    \"component_name\": \"zypper\", \n    \"component_raw\": \"zypper\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20139\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/zypper.py\", \n    \"summary\": \"Calling a zypper task with 'update_cache=yes' in check_mode (ansible-playbook ... --check) results in an error:\\n\\n```\\n\\nfatal: [foobar]: FAILED! => {\\\"changed\\\": false, \\\"cmd\\\": [\\\"/usr/bin/zypper\\\", \\\"--quiet\\\", \\\"--non-interactive\\\", \\\"--xmlout\\\", \\\"refresh\\\", \\\"--dry-run\\\"], \\\"failed\\\": true, \\\"msg\\\": \\\"Zypper run command failed with return code 2.\\\", \\\"rc\\\": 2, \\\"stderr\\\": \\\"Unknown option '--dry-run'\\\\n\\\", \\\"stdout\\\": \\\"<?xml version='1.0'?>\\\\n<stream>\\\\n</stream>\\\\n\\\", \\\"stdout_lines\\\": [\\\"<?xml version='1.0'?>\\\", \\\"<stream>\\\", \\\"</stream>\\\"]}\\n\\n```\\n\\nThis is due to the reason that 'zypper install' has a --dry-run switch, while zypper refresh (which is being called when update_cache is set to yes) does not have this.\", \n    \"title\": \"zypper module with 'update_cache=yes' fails in check_mode\"\n  }, \n  \"20140\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncloud/amazon\\r\\n\\r\\n##### SUMMARY\\r\\n```\\r\\nSimple typo fix (you forgot a semicolon)\\r\\n```\\r\\n\", \n    \"component_name\": \"cloud/amazon\", \n    \"component_raw\": \"cloud/amazon\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20140\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"community_review\", \n      \"docs\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/rds_subnet_group.py\", \n    \"summary\": \"```\\n\\nSimple typo fix (you forgot a semicolon)\\n\\n```\", \n    \"title\": \"Update rds_subnet_group.py\"\n  }, \n  \"20141\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nwin_psexec\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nThe psexec tool is quite popular among Windows admins for automating tasks between systems. This module makes the tool available so that you can connect to remote servers with elevated privileges.\\r\\n\\r\\nI wasn't sure if we want to have this module. If this is acceptable, I will also add the documentation + examples.\\r\\n\\r\\n```yaml\\r\\n- win_psexec:\\r\\n    command: whoami.exe\\r\\n    hostnames: [ remote_system ]\\r\\n    username: DOMAIN\\\\user\\r\\n    password: password\\r\\n    chdir: C:\\\\Windows\\\\Temp\\\\\\r\\n    priority: high\\r\\n```\", \n    \"component_name\": \"win_psexec\", \n    \"component_raw\": \"win_psexec\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20141\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_psexec.py\", \n    \"summary\": \"The psexec tool is quite popular among Windows admins for automating tasks between systems. This module makes the tool available so that you can connect to remote servers with elevated privileges.\\n\\n\\n\\nI wasn't sure if we want to have this module. If this is acceptable, I will also add the documentation + examples.\\n\\n\\n\\n```yaml\\n\\n- win_psexec:\\n\\n    command: whoami.exe\\n\\n    hostnames: [ remote_system ]\\n\\n    username: DOMAIN\\\\user\\n\\n    password: password\\n\\n    chdir: C:\\\\Windows\\\\Temp\\\\\\n\\n    priority: high\\n\\n```\", \n    \"title\": \"win_psexec: execute cmds on remote systems as any user\"\n  }, \n  \"20142\": {\n    \"ansible_version\": \"douglas@quackmaster[~/repos/ansible/playbooks]$ ansible --version\\nansible 2.2.0.0\\nconfig file = /home/douglas/repos/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nFetch Module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n\\r\\n```\\r\\ndouglas@quackmaster[~/repos/ansible/playbooks]$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /home/douglas/repos/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nDoes not fetch\\r\\n\\r\\nThis used to work \\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n\\r\\nroles/common/templates/em1.j2:\\r\\n\\r\\nDEVICE=em1\\r\\nBOOTPROTO=static\\r\\nIPV6INIT=no\\r\\nMTU=1500\\r\\nIPADDR={{ lookup('dig', '{{ inventory_hostname }}')}}\\r\\nNETMASK=255.255.0.0\\r\\nGATEWAY=10.0.0.52\\r\\nDEFROUTE=yes\\r\\nNM_CONTROLLED=no\\r\\nONBOOT=yes\\r\\nTYPE=Ethernet\\r\\nPEERDNS=no\\r\\n\\r\\n```yaml\\r\\n\\r\\n- name: template em1\\r\\n  tags: ifcfg, em1\\r\\n  template: src=em1.j2 dest=/tmp/ifcfg-em1\\r\\n  delegate_to: descartes\\r\\n  when: em1 is defined\\r\\n\\r\\n- name: copy em1 file\\r\\n  tags: ifcfg, em1\\r\\n  fetch: src=/tmp/ifcfg-em1 dest=/tmp flat=yes\\r\\n  delegate_to: descartes\\r\\n  when: em1 is defined\\r\\n\\r\\n- name: copy em1 script\\r\\n  tags: ifcfg, em1\\r\\n  copy: src=/tmp/ifcfg-em1 dest=/etc/sysconfig/network-scripts mode=0644 owner=root group=root\\r\\n  when: em1 is defined\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n\\r\\nTASK [common : template em1] **************************************************\\r\\n\\r\\nok: [polaris.pbtech -> descartes] => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"diff\\\": {\\r\\n        \\\"after\\\": {\\r\\n            \\\"path\\\": \\\"/tmp/ifcfg-em1\\\"\\r\\n        }, \\r\\n        \\\"before\\\": {\\r\\n            \\\"path\\\": \\\"/tmp/ifcfg-em1\\\"\\r\\n        }\\r\\n    }, \\r\\n    \\\"gid\\\": 0, \\r\\n    \\\"group\\\": \\\"root\\\", \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"backup\\\": null, \\r\\n            \\\"content\\\": null, \\r\\n            \\\"delimiter\\\": null, \\r\\n            \\\"dest\\\": \\\"/tmp/ifcfg-em1\\\", \\r\\n            \\\"diff_peek\\\": null, \\r\\n            \\\"directory_mode\\\": null, \\r\\n            \\\"follow\\\": true, \\r\\n            \\\"force\\\": false, \\r\\n            \\\"group\\\": null, \\r\\n            \\\"mode\\\": null, \\r\\n            \\\"original_basename\\\": \\\"em1.j2\\\", \\r\\n            \\\"owner\\\": null, \\r\\n            \\\"path\\\": \\\"/tmp/ifcfg-em1\\\", \\r\\n            \\\"recurse\\\": false, \\r\\n            \\\"regexp\\\": null, \\r\\n            \\\"remote_src\\\": null, \\r\\n            \\\"selevel\\\": null, \\r\\n            \\\"serole\\\": null, \\r\\n            \\\"setype\\\": null, \\r\\n            \\\"seuser\\\": null, \\r\\n            \\\"src\\\": null, \\r\\n            \\\"state\\\": null, \\r\\n            \\\"unsafe_writes\\\": null, \\r\\n            \\\"validate\\\": null\\r\\n        }\\r\\n    }, \\r\\n    \\\"mode\\\": \\\"0644\\\", \\r\\n    \\\"owner\\\": \\\"root\\\", \\r\\n    \\\"path\\\": \\\"/tmp/ifcfg-em1\\\", \\r\\n    \\\"size\\\": 171, \\r\\n    \\\"state\\\": \\\"file\\\", \\r\\n    \\\"uid\\\": 0\\r\\n}\\r\\n\\r\\n\\r\\nTASK [common : copy em1 file] **************************************************\\r\\ntask path: /home/douglas/repos/ansible/playbooks/roles/common/tasks/mgmtconf.yml:85\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/core/files/stat.py\\r\\n<descartes> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<descartes> SSH: EXEC ssh -o ControlMaster=auto -o ControlPersist=60s -o Port=22 -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=20 -o ControlPath=/home/douglas/.ansible/cp/ansible-ssh-%h-%p-%r descartes '/bin/sh -c '\\\"'\\\"'/usr/bin/python && sleep 0'\\\"'\\\"''\\r\\n<descartes> FETCH /tmp/ifcfg-em1 TO /tmp\\r\\n<descartes> SSH: EXEC scp -o ControlMaster=auto -o ControlPersist=60s -o Port=22 -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=20 -o ControlPath=/home/douglas/.ansible/cp/ansible-ssh-%h-%p-%r /tmp/ifcfg-em1 '[descartes]:/tmp'\\r\\nfatal: [polaris.pbtech]: FAILED! => {\\r\\n    \\\"failed\\\": true, \\r\\n    \\\"msg\\\": \\\"failed to transfer file to /tmp:\\\\n\\\\n/tmp/ifcfg-em1: No such file or directory\\\\n\\\"\\r\\n}\\r\\n        to retry, use: --limit @/home/douglas/repos/ansible/playbooks/common.retry\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"fetch\", \n    \"component_raw\": \"Fetch Module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20142\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"needs_info\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/fetch.py\", \n    \"summary\": \"Does not fetch\\n\\n\\n\\nThis used to work\", \n    \"title\": \"Ansible 2.2 Fetch Module Broken\"\n  }, \n  \"20143\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nzypper\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\ndevel\\r\\n\\r\\n##### SUMMARY\\r\\nFixes #20139\\r\\n\\r\\nRefresh does not support dry-run, so don't run it in check mode.\\r\\nAlso add a test for this case.\\r\\n\", \n    \"component_name\": \"zypper\", \n    \"component_raw\": \"zypper\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20143\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"committer_review\", \n      \"module\", \n      \"owner_pr\", \n      \"test\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/zypper.py\", \n    \"summary\": \"Fixes #20139\\n\\n\\n\\nRefresh does not support dry-run, so don't run it in check mode.\\n\\nAlso add a test for this case.\", \n    \"title\": \"Zypper: Fix update_cache in checkmode\"\n  }, \n  \"20146\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nrabbitmq_user\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThe `rabbitmq_user` module includes the password parameters in log files. This PR adds the `no_log` property to the module's `password` argument.\", \n    \"component_name\": \"rabbitmq_user\", \n    \"component_raw\": \"rabbitmq_user\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20146\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"community_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/messaging/rabbitmq_user.py\", \n    \"summary\": \"The `rabbitmq_user` module includes the password parameters in log files. This PR adds the `no_log` property to the module's `password` argument.\", \n    \"title\": \"rabbitmq_user: Set no_log property on password argument\"\n  }, \n  \"20147\": {\n    \"ansible_version\": \"\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnet_command\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n##### SUMMARY\\r\\nDue to a missing feature in `devel` we will need to specify ansible_network_os in the inventory that `ansible-core-ci` creates as well as specifying user vyos and root for (vyos & Junos respectively)\\r\\n\\r\\nThough note that Junos & root will currently fail until https://github.com/ansible/ansible/issues/20131 is fixed\\n\\n<!-- Reviewable:start -->\\n---\\nThis change is\\u2002[<img src=\\\"https://reviewable.io/review_button.svg\\\" height=\\\"34\\\" align=\\\"absmiddle\\\" alt=\\\"Reviewable\\\"/>](https://reviewable.io/reviews/ansible/ansible/20147)\\n<!-- Reviewable:end -->\\n\", \n    \"component_name\": \"net_command\", \n    \"component_raw\": \"net_command\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20147\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"networking\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Due to a missing feature in `devel` we will need to specify ansible_network_os in the inventory that `ansible-core-ci` creates as well as specifying user vyos and root for (vyos & Junos respectively)\\n\\n\\n\\nThough note that Junos & root will currently fail until https://github.com/ansible/ansible/issues/20131 is fixed\\n\\n\\n---\\nThis change is[<img src=\\\"https://reviewable.io/review_button.svg\\\" height=\\\"34\\\" align=\\\"absmiddle\\\" alt=\\\"Reviewable\\\"/>](https://reviewable.io/reviews/ansible/ansible/20147)\", \n    \"title\": \"WIP: net_command: Initial tests for VyOS\"\n  }, \n  \"20150\": {\n    \"ansible_version\": \"Happens with both 2.2.0 and 2.2.1rc3\\nansible 2.2.0.0\\nconfig file = /Users/xyz/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncopy module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nHappens with both 2.2.0 and 2.2.1rc3\\r\\n\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /Users/xyz/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nNothing relevant: inventory, control_path, retry_files_enabled, ...\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nRunning ansible on OSX 10.12 and openSUSE Tumbleweed\\r\\n\\r\\n##### SUMMARY\\r\\nI generate a base64-encoded string from a file binary_file via\\r\\n`cat binary_file | base64` (or gbase64 in my case)\\r\\nI put this string into a variable and use the copy module with content=\\\"...\\\" to create a file. But the file differs from the original file, there is one additional character in the output.\\r\\n\\r\\nNot sure if this is similar to  #5262...\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nCreate the binary file by e.g.\\r\\n`echo sxZARwIVokeqOMGPygc1S20CaGPiKDRGRzg0oSVGmCF2oXHua+9fVhriUQRd8vkmvpHoBmSsI6Y= | gbase64 -d >binary_file.2`\\r\\nTry this playbook.\\r\\n\\r\\n```yaml\\r\\n- hosts: localhost\\r\\n  vars:\\r\\n    string_in_base64: sxZARwIVokeqOMGPygc1S20CaGPiKDRGRzg0oSVGmCF2oXHua+9fVhriUQRd8vkmvpHoBmSsI6Y=\\r\\n\\r\\n  tasks:\\r\\n    - copy:\\r\\n        content: '{{ string_in_base64 | b64decode }}'\\r\\n        dest: \\\"/some/path/binary_file.ansible\\\"\\r\\n```\\r\\nCompare the results with any checksum:\\r\\n`md5sum binary_file*`\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe created file and the original file should be identical.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nThe file is created and the content is almost right:\\r\\n\\r\\n`cat binary_file; echo \\\"\\\"; cat binary_file.ansible; echo \\\"\\\"`\\r\\n```\\r\\n\\ufffd@G\\ufffdG\\ufffd8\\ufffd\\ufffd5Kmhc\\ufffd(4FG84\\ufffd%F\\ufffd!v\\ufffdq\\ufffdk\\ufffd_V\\ufffdQ]\\ufffd\\ufffd&\\ufffd\\ufffd\\ufffdd\\ufffd#\\ufffd\\r\\n\\ufffd@G\\ufffdG\\ufffd8\\ufffd\\ufffd\\ufffd5Kmhc\\ufffd(4FG84\\ufffd%F\\ufffd!v\\ufffdq\\ufffdk\\ufffd_V\\ufffdQ]\\ufffd\\ufffd&\\ufffd\\ufffd\\ufffdd\\ufffd#\\ufffd\\r\\n```\\r\\nThe second file actually has an additional character (at column 9).\\r\\n\", \n    \"component_name\": \"copy\", \n    \"component_raw\": \"copy module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20150\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/copy.py\", \n    \"summary\": \"I generate a base64-encoded string from a file binary_file via\\n\\n`cat binary_file | base64` (or gbase64 in my case)\\n\\nI put this string into a variable and use the copy module with content=\\\"...\\\" to create a file. But the file differs from the original file, there is one additional character in the output.\\n\\n\\n\\nNot sure if this is similar to  #5262...\", \n    \"title\": \"Copy module with base64-encoded binary file adds extra character\"\n  }, \n  \"20152\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel b122775937) last updated 2017/01/11 215430 (GMT +200)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\ndatadog_downtime - Manages Datadog downtimes\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel b122775937) last updated 2017/01/11 21:54:30 (GMT +200)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nI've added another module for Datadog - Scheduled Downtime.\\r\\nI've based on datadog_monitor, to still have similar structure of DD modules.\\r\\n\\r\\nThis feature will add a possibility to schedule, update and cancel Downtimes.\", \n    \"component_name\": \"datadog_downtime - manages datadog downtimes\", \n    \"component_raw\": \"datadog_downtime - Manages Datadog downtimes\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20152\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/monitoring/datadog_downtime.py\", \n    \"summary\": \"I've added another module for Datadog - Scheduled Downtime.\\n\\nI've based on datadog_monitor, to still have similar structure of DD modules.\\n\\n\\n\\nThis feature will add a possibility to schedule, update and cancel Downtimes.\", \n    \"title\": \"Added Datadog Downtime module\"\n  }, \n  \"20153\": {\n    \"ansible_version\": \"ansible 2.3.0 (jtyr-path_type 86a9b6c569) last updated 2017/01/11 210942 (GMT +100)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\nBugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nAnsibleModule class.\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 (jtyr-path_type 86a9b6c569) last updated 2017/01/11 21:09:42 (GMT +100)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThis patch is checking for empty string passed to a module parameter of type `path`. Python is treating empty string is an invalid path:\\r\\n\\r\\n```\\r\\nIn [1]: open('', 'r')\\r\\n---------------------------------------------------------------------------\\r\\nIOError                                   Traceback (most recent call last)\\r\\n<ipython-input-1-edeadb16a11b> in <module>()\\r\\n----> 1 open('', 'r')\\r\\n\\r\\nIOError: [Errno 2] No such file or directory: ''\\r\\n```\\r\\n\\r\\nThis patch will cause the `_check_type_path()` fail with a message which is then displayed in the `details` as shown below:\\r\\n\\r\\n```\\r\\nfailed: [test-soe] (item={u'user_id': 1000, u'user_comment': u'My user', u'user_password': u'$6$fAknMdY5$VuAzbn3N52r7kSPN2ALSVArJJP/83NeApvsotA/fA5EIuhUB274q.6czfKWPuXbHrP0GVJuiKR8pG1F2Ybe/g3', u'group_name': u'myuser', u'group_id': 1000, u'user_name': u'myuser'}) => {\\r\\n    \\\"details\\\": \\\"Path can not be an empty string.\\\", \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"append\\\": \\\"no\\\", \\r\\n            \\\"comment\\\": \\\"\\\", \\r\\n            \\\"createhome\\\": \\\"yes\\\", \\r\\n            \\\"force\\\": false, \\r\\n            \\\"group\\\": \\\"myuser\\\", \\r\\n            \\\"home\\\": \\\"\\\", \\r\\n            \\\"move_home\\\": \\\"no\\\", \\r\\n            \\\"name\\\": \\\"myuser\\\", \\r\\n            \\\"non_unique\\\": false, \\r\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n            \\\"remove\\\": \\\"no\\\", \\r\\n            \\\"ssh_key_bits\\\": 0, \\r\\n            \\\"ssh_key_comment\\\": \\\"ansible-generated on localhost.localdomain\\\", \\r\\n            \\\"ssh_key_type\\\": \\\"rsa\\\", \\r\\n            \\\"state\\\": \\\"present\\\", \\r\\n            \\\"system\\\": \\\"no\\\", \\r\\n            \\\"uid\\\": \\\"1000\\\", \\r\\n            \\\"update_password\\\": \\\"always\\\"\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"user\\\"\\r\\n    }, \\r\\n    \\\"item\\\": {\\r\\n        \\\"group_id\\\": 1000, \\r\\n        \\\"group_name\\\": \\\"myuser\\\", \\r\\n        \\\"user_comment\\\": \\\"My user\\\", \\r\\n        \\\"user_id\\\": 1000, \\r\\n        \\\"user_name\\\": \\\"myuser\\\", \\r\\n        \\\"user_password\\\": \\\"$6$fAknMdY5$VuAzbn3N52r7kSPN2ALSVArJJP/83NeApvsotA/fA5EIuhUB274q.6czfKWPuXbHrP0GVJuiKR8pG1F2Ybe/g3\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"argument home is of type <type 'str'> and we were unable to convert to path\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"ansible  class.\", \n    \"component_raw\": \"AnsibleModule class.\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20153\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"c:module_utils/basic\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This patch is checking for empty string passed to a module parameter of type `path`. Python is treating empty string is an invalid path:\\n\\n\\n\\n```\\n\\nIn [1]: open('', 'r')\\n\\n---------------------------------------------------------------------------\\n\\nIOError                                   Traceback (most recent call last)\\n\\n<ipython-input-1-edeadb16a11b> in <module>()\\n\\n----> 1 open('', 'r')\\n\\n\\n\\nIOError: [Errno 2] No such file or directory: ''\\n\\n```\\n\\n\\n\\nThis patch will cause the `_check_type_path()` fail with a message which is then displayed in the `details` as shown below:\\n\\n\\n\\n```\\n\\nfailed: [test-soe] (item={u'user_id': 1000, u'user_comment': u'My user', u'user_password': u'$6$fAknMdY5$VuAzbn3N52r7kSPN2ALSVArJJP/83NeApvsotA/fA5EIuhUB274q.6czfKWPuXbHrP0GVJuiKR8pG1F2Ybe/g3', u'group_name': u'myuser', u'group_id': 1000, u'user_name': u'myuser'}) => {\\n\\n    \\\"details\\\": \\\"Path can not be an empty string.\\\", \\n\\n    \\\"failed\\\": true, \\n\\n    \\\"invocation\\\": {\\n\\n        \\\"module_args\\\": {\\n\\n            \\\"append\\\": \\\"no\\\", \\n\\n            \\\"comment\\\": \\\"\\\", \\n\\n            \\\"createhome\\\": \\\"yes\\\", \\n\\n            \\\"force\\\": false, \\n\\n            \\\"group\\\": \\\"myuser\\\", \\n\\n            \\\"home\\\": \\\"\\\", \\n\\n            \\\"move_home\\\": \\\"no\\\", \\n\\n            \\\"name\\\": \\\"myuser\\\", \\n\\n            \\\"non_unique\\\": false, \\n\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\n\\n            \\\"remove\\\": \\\"no\\\", \\n\\n            \\\"ssh_key_bits\\\": 0, \\n\\n            \\\"ssh_key_comment\\\": \\\"ansible-generated on localhost.localdomain\\\", \\n\\n            \\\"ssh_key_type\\\": \\\"rsa\\\", \\n\\n            \\\"state\\\": \\\"present\\\", \\n\\n            \\\"system\\\": \\\"no\\\", \\n\\n            \\\"uid\\\": \\\"1000\\\", \\n\\n            \\\"update_password\\\": \\\"always\\\"\\n\\n        }, \\n\\n        \\\"module_name\\\": \\\"user\\\"\\n\\n    }, \\n\\n    \\\"item\\\": {\\n\\n        \\\"group_id\\\": 1000, \\n\\n        \\\"group_name\\\": \\\"myuser\\\", \\n\\n        \\\"user_comment\\\": \\\"My user\\\", \\n\\n        \\\"user_id\\\": 1000, \\n\\n        \\\"user_name\\\": \\\"myuser\\\", \\n\\n        \\\"user_password\\\": \\\"$6$fAknMdY5$VuAzbn3N52r7kSPN2ALSVArJJP/83NeApvsotA/fA5EIuhUB274q.6czfKWPuXbHrP0GVJuiKR8pG1F2Ybe/g3\\\"\\n\\n    }, \\n\\n    \\\"msg\\\": \\\"argument home is of type <type 'str'> and we were unable to convert to path\\\"\\n\\n}\\n\\n```\", \n    \"title\": \"Empty string is not valid path\"\n  }, \n  \"20154\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\npanos_lic\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.0.0\\u2028\\r\\nconfig file =\\u2028\\r\\nconfigured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nNew panos module that allows Firewall license activation using auth code received from support\\r\\n\", \n    \"component_name\": \"panos_lic\", \n    \"component_raw\": \"panos_lic\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20154\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"networking\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/panos/panos_lic.py\", \n    \"summary\": \"New panos module that allows Firewall license activation using auth code received from support\", \n    \"title\": \"panos module to activate FW licenisng using authentication code\"\n  }, \n  \"20155\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"Because we add the names of all filters to the callable whitelist used\\r\\nby safe_eval, adding a filter named type makes it so code calling \\\"type()\\\"\\r\\ngets eval'd.  We can't think of a way to exploit this but it's\\r\\nsufficiently sketchy that we're renaming it in case someone smarter than\\r\\nus can think of a problem.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nlib/ansible/plugins/filter/core.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\ndevel\\r\\n```\", \n    \"component_name\": \"lib/ansible/plugins/filter/core.py\", \n    \"component_raw\": \"lib/ansible/plugins/filter/core.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20155\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/filter\", \n      \"docs\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": null, \n    \"title\": \"Rename the type filter to type_debug\"\n  }, \n  \"20156\": {\n    \"ansible_version\": \"ansible 2.3.0 (test_safe_eval_devel2 c771056d7b) last updated 2017/01/11 165243 (GMT -400)\\nconfig file = /home/adrian/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"include test cases for 'type'\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n\\r\\n - Bugfix Pull Request\\r\\n - Tests Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\ntest/units/template/test_safe_eval\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (test_safe_eval_devel2 c771056d7b) last updated 2017/01/11 16:52:43 (GMT -400)\\r\\n  config file = /home/adrian/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\ntest cases for template.safe_eval, related to https://github.com/ansible/ansible/pull/20155\\r\\n\", \n    \"component_name\": \"test/units/template/test_safe_eval\", \n    \"component_raw\": \"test/units/template/test_safe_eval\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20156\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"needs_revision\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"test cases for template.safe_eval, related to https://github.com/ansible/ansible/pull/20155\", \n    \"title\": \"more tests for safe_eval\"\n  }, \n  \"20157\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nVulnerability:  https://bugzilla.redhat.com/show_bug.cgi?id=1404378\\r\\n\\r\\nBasically this report says there is a know vulnerability but according to your latest release: https://github.com/ansible/ansible/releases/tag/v2.2.1.0-0.3.rc3  It says not to use it.  \\r\\n\\r\\nWe'd like to patch this sooner than later but not sure if there's a viable fix out yet.  Please advise\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"vulnerability  https//bugzilla.redhat.com/show_bug.cgi?id=1404378\", \n    \"component_raw\": \"Vulnerability:  https://bugzilla.redhat.com/show_bug.cgi?id=1404378\\nBasically this report says there is a know vulnerability but according to your latest release: https://github.com/ansible/ansible/releases/tag/v2.2.1.0-0.3.rc3  It says not to use it.\\nWe'd like to patch this sooner than later but not sure if there's a viable fix out yet.  Please advise\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20157\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"\", \n    \"title\": \"Vulnerability needs to be addressed but Latest RC instructs not to use \"\n  }, \n  \"20158\": {\n    \"ansible_version\": \"ansible 2.2.1.0\\nconfig file = /ansible/ansible_config\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\nwin_robocopy\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file = /ansible/ansible_config\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nFixes #3539 \\\"win_robocopy does not return changed properly\\\":\\r\\nRemove the win_robocopy object from $result. This brings the code in line with the documentation, and correctly sets the changed attribute.\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnnn\\\" in your commit\\r\\nmessage and your description; but you should still explain what the change does.\\r\\n-->\\r\\n\\r\\n<!--- Paste verbatim command output below, e.g. before and after your change -->\\r\\nBEFORE:\\r\\n```\\r\\nok: [x.x.x.x] => (item=path/to/file.ext) => {\\r\\n    \\\"changed\\\": false,\\r\\n    ...\\r\\n    \\\"win_robocopy\\\": {\\r\\n        \\\"changed\\\": true\\r\\n    },\\r\\n    ...\\r\\n```\\r\\n\\r\\nAFTER:\\r\\n```\\r\\nchanged: [x.x.x.x] => (item=path/to/file.ext) => {\\r\\n    \\\"changed\\\": true,\\r\\n    ...\\r\\n```\\r\\n\\r\\nI can't copy and paste from my ansible machine so I've manually typed a shortened output. It should still be enough to get the point though.\\r\\n\\r\\nAlso worth noting that this doesn't fix #3498, that will still need to be merged.\", \n    \"component_name\": \"win_robocopy\", \n    \"component_raw\": \"win_robocopy\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20158\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"needs_rebase\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_robocopy.ps1\", \n    \"summary\": \"Fixes #3539 \\\"win_robocopy does not return changed properly\\\":\\n\\nRemove the win_robocopy object from $result. This brings the code in line with the documentation, and correctly sets the changed attribute.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nBEFORE:\\n\\n```\\n\\nok: [x.x.x.x] => (item=path/to/file.ext) => {\\n\\n    \\\"changed\\\": false,\\n\\n    ...\\n\\n    \\\"win_robocopy\\\": {\\n\\n        \\\"changed\\\": true\\n\\n    },\\n\\n    ...\\n\\n```\\n\\n\\n\\nAFTER:\\n\\n```\\n\\nchanged: [x.x.x.x] => (item=path/to/file.ext) => {\\n\\n    \\\"changed\\\": true,\\n\\n    ...\\n\\n```\\n\\n\\n\\nI can't copy and paste from my ansible machine so I've manually typed a shortened output. It should still be enough to get the point though.\\n\\n\\n\\nAlso worth noting that this doesn't fix #3498, that will still need to be merged.\", \n    \"title\": \"Fixes #3539 \\\"win_robocopy does not return changed properly\\\"\"\n  }, \n  \"20159\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\ncore templating\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\navoid dealing with callables when doing type guessing.\\r\\n\", \n    \"component_name\": \"core templating\", \n    \"component_raw\": \"core templating\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20159\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:template/safe_eval\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"avoid dealing with callables when doing type guessing.\", \n    \"title\": \"[WIP] no calls plz\"\n  }, \n  \"20160\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nA few\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nI noticed, compared to the standard (Unix) Ansible modules, that some of the Windows modules have (needlessly) long or different option names, and I wonder if this was a deliberate decision.\\r\\n\\r\\n**win_reboot**\\r\\n- `connect_timeout_sec` instead of `connect_timeout`\\r\\n- `pre_reboot_delay_sec` instead of `reboot_delay`\\r\\n- `reboot_timeout_sec` instead of `reboot_timeout`\\r\\n- `shutdown_timeout_sec` instead of `shutdown_timeout`\\r\\n\\r\\n**win_updates**\\r\\n- `category_names` instead of just `categories`\\r\\n\\r\\n**win_package**\\r\\n- `user_name` instead of `username`\\r\\n- `user_password` instead of `password`\\r\\n- `product_id` instead of `id` or `uuid`\\r\\n\\r\\n**win_get_url**\\r\\n- `skip_certificate_validation` instead of `validate_certs` (reverse boolean)\", \n    \"component_name\": \"a few\", \n    \"component_raw\": \"A few\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20160\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I noticed, compared to the standard (Unix) Ansible modules, that some of the Windows modules have (needlessly) long or different option names, and I wonder if this was a deliberate decision.\\n\\n\\n\\n**win_reboot**\\n\\n- `connect_timeout_sec` instead of `connect_timeout`\\n\\n- `pre_reboot_delay_sec` instead of `reboot_delay`\\n\\n- `reboot_timeout_sec` instead of `reboot_timeout`\\n\\n- `shutdown_timeout_sec` instead of `shutdown_timeout`\\n\\n\\n\\n**win_updates**\\n\\n- `category_names` instead of just `categories`\\n\\n\\n\\n**win_package**\\n\\n- `user_name` instead of `username`\\n\\n- `user_password` instead of `password`\\n\\n- `product_id` instead of `id` or `uuid`\\n\\n\\n\\n**win_get_url**\\n\\n- `skip_certificate_validation` instead of `validate_certs` (reverse boolean)\", \n    \"title\": \"List of options that don't feel conforming\"\n  }, \n  \"20161\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\npanos_nat_policy\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.0.0\\u2028\\r\\nconfig file =\\u2028\\r\\nconfigured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nCreate a policy nat rule. Keep in mind that we can either end up configuring source NAT, destination NAT, or both. Instead of splitting it into two we will make a fair attempt to determine which one the user wants.\\r\\n\", \n    \"component_name\": \"panos_nat_policy\", \n    \"component_raw\": \"panos_nat_policy\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20161\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"module\", \n      \"networking\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/panos/panos_nat_policy.py\", \n    \"summary\": \"Create a policy nat rule. Keep in mind that we can either end up configuring source NAT, destination NAT, or both. Instead of splitting it into two we will make a fair attempt to determine which one the user wants.\", \n    \"title\": \"new panos module that allows for NAT policy creation\"\n  }, \n  \"20162\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\naction plugins\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n fixes #20128\\r\\n\\r\\n\", \n    \"component_name\": \"action plugins\", \n    \"component_raw\": \"action plugins\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20162\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:plugins/action\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"fixes #20128\", \n    \"title\": \"Fix remote src tmp\"\n  }, \n  \"20163\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\ncontrib/inventory/ec2.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nFix the following exception that was occurring when running `python ec2.py --refresh-cache` with `include_rds_clusters = True` in ec2.ini:\\r\\n\\r\\n  TypeError: datetime.datetime(20167 1, 10, 21, 46, 24, 862000) is not JSON serializable\\r\\n\\r\\nI believe I only saw this exception after I actually created an RDS cluster in my AWS account.\\r\\n\\r\\nSee this post for details on the fix:\\r\\nhttp://stackoverflow.com/questions/11875770/how-to-overcome-datetime-datetime-not-json-serializable-in-python\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\nBEFORE:\\r\\n\\r\\n$ python ec2.py --refresh-cache\\r\\n...\\r\\nTypeError: datetime.datetime(20167 1, 10, 21, 46, 24, 862000) is not JSON serializable\\r\\n\\r\\nAFTER:\\r\\n$ python ec2.py --refresh-cache\\r\\n<no exception, just expected AWS inventory output>\\r\\n```\\r\\n\", \n    \"component_name\": \"contrib/inventory/ec2.py\", \n    \"component_raw\": \"contrib/inventory/ec2.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20163\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Fix the following exception that was occurring when running `python ec2.py --refresh-cache` with `include_rds_clusters = True` in ec2.ini:\\n\\n\\n\\n  TypeError: datetime.datetime(20167 1, 10, 21, 46, 24, 862000) is not JSON serializable\\n\\n\\n\\nI believe I only saw this exception after I actually created an RDS cluster in my AWS account.\\n\\n\\n\\nSee this post for details on the fix:\\n\\nhttp://stackoverflow.com/questions/11875770/how-to-overcome-datetime-datetime-not-json-serializable-in-python\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\nBEFORE:\\n\\n\\n\\n$ python ec2.py --refresh-cache\\n\\n...\\n\\nTypeError: datetime.datetime(20167 1, 10, 21, 46, 24, 862000) is not JSON serializable\\n\\n\\n\\nAFTER:\\n\\n$ python ec2.py --refresh-cache\\n\\n<no exception, just expected AWS inventory output>\\n\\n```\", \n    \"title\": \"contrib/inventory/ec2.py correctly serialize data\"\n  }, \n  \"20164\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nwin_shortcut\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nThis modules manages Windows shortcuts and all its properties.\\r\\nIt is idempotent and supports check-mode.\\r\\n\\r\\nThis relates to #19694\", \n    \"component_name\": \"win_shortcut\", \n    \"component_raw\": \"win_shortcut\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20164\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_shortcut.py\", \n    \"summary\": \"This modules manages Windows shortcuts and all its properties.\\n\\nIt is idempotent and supports check-mode.\\n\\n\\n\\nThis relates to #19694\", \n    \"title\": \"win_shortcut: Create, manage, remove Windows shortcuts\"\n  }, \n  \"20165\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 6ec0369c26) last updated 2017/01/11 133413 (GMT +1000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_vpc_nacl\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel 6ec0369c26) last updated 2017/01/11 13:34:13 (GMT +1000)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n* Allow network ACLs to be manipulated by ID\\r\\n* Fix tag handling so that it doesn't assume that there are always tags\\r\\n* Move tag manipulation to common code suitable for more resources\\r\\n* Clean up some flake8 issues\", \n    \"component_name\": \"ec2_vpc_nacl\", \n    \"component_raw\": \"ec2_vpc_nacl\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20165\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"cloud\", \n      \"committer_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nacl.py\", \n    \"summary\": \"* Allow network ACLs to be manipulated by ID\\n\\n* Fix tag handling so that it doesn't assume that there are always tags\\n\\n* Move tag manipulation to common code suitable for more resources\\n\\n* Clean up some flake8 issues\", \n    \"title\": \"Improve non-tagged network ACL support and fix tagging\"\n  }, \n  \"20166\": {\n    \"ansible_version\": null, \n    \"body\": \" - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwinrm.py \\r\\n\\r\\n##### SUMMARY\\r\\nRaw winrm exec discards the exit code from external processes- this change preserves the exit code if present.\\r\\n\", \n    \"component_name\": \"winrm.py\", \n    \"component_raw\": \"winrm.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20166\", \n    \"issue_type\": null, \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:plugins/connection\", \n      \"c:plugins/connection/winrm\", \n      \"c:plugins/shell\", \n      \"needs_revision\", \n      \"windows\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Raw winrm exec discards the exit code from external processes- this change preserves the exit code if present.\", \n    \"title\": \"Preserve exit code in winrm exec\"\n  }, \n  \"20167\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel e35a757ee7) last updated 2017/01/12 164233 (GMT +1000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_vpc_nat_gateway\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel e35a757ee7) last updated 2017/01/12 16:42:33 (GMT +1000)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nCheck if EIP exists before deleting it\\r\\n\\r\\nAfter deleting the NAT gateway, the EIP sometimes seems to\\r\\ncease to exist afterwards. Check if it exists before deleting it.\\r\\n\\r\\nOtherwise you get:\\r\\n```\\r\\nFailed to release EIP eipalloc-abdc1234: An error occurred (InvalidAllocationID.NotFound) \\\\\\r\\nwhen calling the ReleaseAddress operation: The allocation ID 'eipalloc-abcd1234' does not \\\\\\r\\nexist\\\", \\\"success\\\": false}\\r\\n```\\r\\n\\r\\nAlso fix some flake8 issues in a separate commit\", \n    \"component_name\": \"ec2_vpc_nat_gateway\", \n    \"component_raw\": \"ec2_vpc_nat_gateway\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20167\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"community_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_nat_gateway.py\", \n    \"summary\": \"Check if EIP exists before deleting it\\n\\n\\n\\nAfter deleting the NAT gateway, the EIP sometimes seems to\\n\\ncease to exist afterwards. Check if it exists before deleting it.\\n\\n\\n\\nOtherwise you get:\\n\\n```\\n\\nFailed to release EIP eipalloc-abdc1234: An error occurred (InvalidAllocationID.NotFound) \\\\\\n\\nwhen calling the ReleaseAddress operation: The allocation ID 'eipalloc-abcd1234' does not \\\\\\n\\nexist\\\", \\\"success\\\": false}\\n\\n```\\n\\n\\n\\nAlso fix some flake8 issues in a separate commit\", \n    \"title\": \"Fix EIP release in ec2_vpc_nat_gateway\"\n  }, \n  \"20168\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nansible-galaxy\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nansible-galaxy should prompt for a vault-password if requirements.yml is encrypted. My requirements.yml contains private github repo's with o-auth tokens in the https URL's. I rather commit requuirements.yml as an ansible-vault file.  \\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nansible-galaxy install -r requirements.yml\\r\\nVault-password:\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\ndecrypted on the fly\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"ansible-galaxy\", \n    \"component_raw\": \"ansible-galaxy\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20168\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"ansible-galaxy should prompt for a vault-password if requirements.yml is encrypted. My requirements.yml contains private github repo's with o-auth tokens in the https URL's. I rather commit requuirements.yml as an ansible-vault file.\", \n    \"title\": \"Allow ansible-galaxy to use a vaulted requirements.yml\"\n  }, \n  \"20169\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/kyle/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nRole dependencies\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/kyle/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n````\\r\\n[defaults]\\r\\ninventory = ~/.ansible/hosts\\r\\nansible_managed = Managed by ansible. All changes will be overwritten\\r\\nssh_args = -o ControlMaster=auto -o ControlPersist=60s StrictHostKeyChecking=no\\r\\nask_vault_pass = yes\\r\\nretry_files_enabled = False\\r\\n````\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nDebian Stretch and Debian Sid managing Debian Stretch\\r\\n\\r\\n##### SUMMARY\\r\\nI have roles: `example_1`, `example_2`, `dependency_1` and `dependency_2`. `dependency_1` is set to be duplicated (`allow_duplicates: yes`) and `dependency_2` also depends on `dependency_1`.\\r\\n\\r\\nWhen a playbook host has the roles `example_1` and `example_2` the following is executed:\\r\\n\\r\\n1. `dependency_1` (for `dependency_2`)\\r\\n2. `dependency_2` (for `example_1`)\\r\\n3. `dependency_1` (for `example_1`)\\r\\n4. `example_1`\\r\\n5. `dependency_1` (for `dependency_2`)\\r\\n6. `dependency_1` (for `example_2`)\\r\\n7. `example_2`\\r\\n\\r\\nStep 5 is redundant and shouldn't run, as `dependency_2` is only run once and its dependencies should only be run once.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n./site.yml\\r\\n---\\r\\n- hosts: example.com\\r\\n  remote_user: user\\r\\n  roles:\\r\\n      - example_1\\r\\n      - example_2\\r\\n````\\r\\n````yaml\\r\\n./roles/example_{1,2}/meta/main.yml\\r\\n---\\r\\ndependencies:\\r\\n    - role: dependency_2\\r\\n    - role: dependency_1\\r\\n````\\r\\n````yaml\\r\\n./roles/dependency_1/meta/main.yml\\r\\n---\\r\\nallow_duplicates: yes\\r\\n````\\r\\n````yaml\\r\\n./roles/dependency_2/meta/main.yml\\r\\n---\\r\\ndependencies:\\r\\n    - role: dependency_1\\r\\n````\\r\\n\\r\\n````yaml\\r\\n./roles/{example_1,example_2,dependency_1,dependency_2}/tasks/main.yml\\r\\n---\\r\\n- name: display role\\r\\n  debug:\\r\\n    msg: this is role {{ role_path }}\\r\\n````\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n````\\r\\n$ ansible-playbook site.yml\\r\\n\\r\\nPLAY [example.com] ***************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [example.com]\\r\\n\\r\\nTASK [dependency_1 : display role] *********************************************\\r\\nok: [example.com] => {\\r\\n    \\\"msg\\\": \\\"this is role /home/user/ansible/roles/dependency_1\\\"\\r\\n}\\r\\n\\r\\nTASK [dependency_2 : display role] *********************************************\\r\\nok: [example.com] => {\\r\\n    \\\"msg\\\": \\\"this is role /home/user/ansible/roles/dependency_2\\\"\\r\\n}\\r\\n\\r\\nTASK [dependency_1 : display role] *********************************************\\r\\nok: [example.com] => {\\r\\n    \\\"msg\\\": \\\"this is role /home/user/ansible/roles/dependency_1\\\"\\r\\n}\\r\\n\\r\\nTASK [example_1 : display role] ************************************************\\r\\nok: [example.com] => {\\r\\n    \\\"msg\\\": \\\"this is role /home/user/ansible/roles/example_1\\\"\\r\\n}\\r\\n\\r\\nTASK [dependency_1 : display role] *********************************************\\r\\nok: [example.com] => {\\r\\n    \\\"msg\\\": \\\"this is role /home/user/ansible/roles/dependency_1\\\"\\r\\n}\\r\\n\\r\\nTASK [example_2 : display role] ************************************************\\r\\nok: [example.com] => {\\r\\n    \\\"msg\\\": \\\"this is role /home/kyle/user/ansible/roles/example_2\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nexample.com      : ok=8    changed=0    unreachable=0    failed=0\\r\\n````\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n````\\r\\n$ ansible-playbook site.yml\\r\\n\\r\\nPLAY [example.com] ***************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [example.com]\\r\\n\\r\\nTASK [dependency_1 : display role] *********************************************\\r\\nok: [example.com] => {\\r\\n    \\\"msg\\\": \\\"this is role /home/user/ansible/roles/dependency_1\\\"\\r\\n}\\r\\n\\r\\nTASK [dependency_2 : display role] *********************************************\\r\\nok: [example.com] => {\\r\\n    \\\"msg\\\": \\\"this is role /home/user/ansible/roles/dependency_2\\\"\\r\\n}\\r\\n\\r\\nTASK [dependency_1 : display role] *********************************************\\r\\nok: [example.com] => {\\r\\n    \\\"msg\\\": \\\"this is role /home/user/ansible/roles/dependency_1\\\"\\r\\n}\\r\\n\\r\\nTASK [example_1 : display role] ************************************************\\r\\nok: [example.com] => {\\r\\n    \\\"msg\\\": \\\"this is role /home/user/ansible/roles/example_1\\\"\\r\\n}\\r\\n\\r\\nTASK [dependency_1 : display role] *********************************************\\r\\nok: [example.com] => {\\r\\n    \\\"msg\\\": \\\"this is role /home/user/ansible/roles/dependency_1\\\"\\r\\n}\\r\\n\\r\\nTASK [dependency_1 : display role] *********************************************\\r\\nok: [example.com] => {\\r\\n    \\\"msg\\\": \\\"this is role /home/user/ansible/roles/dependency_1\\\"\\r\\n}\\r\\n\\r\\nTASK [example_2 : display role] ************************************************\\r\\nok: [example.com] => {\\r\\n    \\\"msg\\\": \\\"this is role /home/kyle/user/ansible/roles/example_2\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nexample.com      : ok=8    changed=0    unreachable=0    failed=0\\r\\n````\\r\\n\", \n    \"component_name\": \"role dependencies\", \n    \"component_raw\": \"Role dependencies\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20169\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I have roles: `example_1`, `example_2`, `dependency_1` and `dependency_2`. `dependency_1` is set to be duplicated (`allow_duplicates: yes`) and `dependency_2` also depends on `dependency_1`.\\n\\n\\n\\nWhen a playbook host has the roles `example_1` and `example_2` the following is executed:\\n\\n\\n\\n1. `dependency_1` (for `dependency_2`)\\n\\n2. `dependency_2` (for `example_1`)\\n\\n3. `dependency_1` (for `example_1`)\\n\\n4. `example_1`\\n\\n5. `dependency_1` (for `dependency_2`)\\n\\n6. `dependency_1` (for `example_2`)\\n\\n7. `example_2`\\n\\n\\n\\nStep 5 is redundant and shouldn't run, as `dependency_2` is only run once and its dependencies should only be run once.\", \n    \"title\": \"Role dependency is run multiple times\"\n  }, \n  \"20171\": {\n    \"ansible_version\": \"ansible 2.3.0 (network-aws 1045e3a5a9) last updated 2017/01/11 194239 (GMT +100)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\njunos_config\\r\\neos_config\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (network-aws 1045e3a5a9) last updated 2017/01/11 19:42:39 (GMT +100)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nEnsure their is no ansible.cfg present\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\n##### SUMMARY\\r\\nIt appears that if `self.fail_json` is called by a network module that the task will hang.\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nEnsure you have no `ansible.cfg` present, e.g. you are using the defaults\\r\\n\\r\\n````\\r\\ncd ansible/test/integration\\r\\nANSIBLE_ROLES_PATH=targets ansible-playbook -vvvv -i inventory.network junos.yaml  -u ansible --private-key=~/.ssh/yourkey.pem\\r\\n```\\r\\n\\r\\nIgnore the error regarding `\\\"update is merge but the following are missing: src`. That will be fixed by a follow up PR.\\r\\n\\r\\nThe issue is that Ansible stops any further output after the `self.fail_json`\\r\\n\\r\\nThe playbook that hangs is `test/integration/targets/junos_config/tests/netconf/src_basic.yaml:4`\\r\\n\\r\\n```yaml\\r\\n- name: setup\\r\\n  junos_config:\\r\\n    lines:\\r\\n      - set system host-name {{ inventory_hostname_short }}\\r\\n      - delete interfaces lo0\\r\\n    provider: \\\"{{ netconf }}\\\"\\r\\n```\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"junos_config\", \n    \"component_raw\": \"junos_config\\neos_config\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20171\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/junos/junos_config.py\", \n    \"summary\": \"It appears that if `self.fail_json` is called by a network module that the task will hang.\", \n    \"title\": \"Network modules: eos_config, ios_config,  nxos_config (and possibly others)\"\n  }, \n  \"20172\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible-modules-core/system/user.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.1.1.0\\r\\n```\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nUbuntu 16.04.1\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\nThe module \\\"user\\\" is not really behaving idempotent. If I want to expire user accounts _that do not exist_  (anymore), they actually will be created by the module. The accounts will be locked and expired, but they are also created before which is not expected nor intended. I cannot use state=absent because this would remove user data.\\r\\nIf you have 3 user on 10 server and ONE special user only on ONE servers, and you want to disable them all on all servers, the problem is, that the special user gets created on the other 9 servers. That's not what you want to achieve.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nTry to expire a user that is non-existent and should therefore be skipped:\\r\\n\\r\\n```yaml\\r\\n---\\r\\n- name: Test user module\\r\\n  hosts: all\\r\\n  become: yes\\r\\n  vars_files:\\r\\n    - /etc/ansible/secrets.yml\\r\\n  tasks:\\r\\n    - name: Try to expire non-existent user account\\r\\n      user: name={{ item.name }} expires=1\\r\\n\\r\\n      with_items:\\r\\n        - { name: 'user1' }\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nIf the user does not exist, I expect it to do nothing in this context.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nThe user account is added to the system, locked and expired - but it creates the account beforehand. This creates an unneccessarily lot of users on servers on which never existed there before.\", \n    \"component_name\": \"ansible- s-core/system/user.py\", \n    \"component_raw\": \"ansible-modules-core/system/user.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20172\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/user.py\", \n    \"summary\": \"The module \\\"user\\\" is not really behaving idempotent. If I want to expire user accounts _that do not exist_  (anymore), they actually will be created by the module. The accounts will be locked and expired, but they are also created before which is not expected nor intended. I cannot use state=absent because this would remove user data.\\n\\nIf you have 3 user on 10 server and ONE special user only on ONE servers, and you want to disable them all on all servers, the problem is, that the special user gets created on the other 9 servers. That's not what you want to achieve.\", \n    \"title\": \"Module 'user' adds accounts to system when using 'expires=' if the user does not exist\"\n  }, \n  \"20173\": {\n    \"ansible_version\": \"git devel\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ntest integration yum\\r\\ntest integration dnf\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\ngit devel\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nFix YUM and DNF integration tests:\\r\\n- one small yum fix, which had a syntax error in the test\\r\\n- version checks for both yum and dnf had >= and <= without a cast to int, which caused the version check to provide incorrect results.  That meant yum checks ran on dnf machines, and dnf checks ran on yum machines.\", \n    \"component_name\": \"test integration yum\", \n    \"component_raw\": \"test integration yum\\ntest integration dnf\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20173\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"needs_rebase\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Fix YUM and DNF integration tests:\\n\\n- one small yum fix, which had a syntax error in the test\\n\\n- version checks for both yum and dnf had >= and <= without a cast to int, which caused the version check to provide incorrect results.  That meant yum checks ran on dnf machines, and dnf checks ran on yum machines.\", \n    \"title\": \"Cast major version\"\n  }, \n  \"20174\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodule: ec2_eip\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nCentOS 7\\r\\n\\r\\n##### SUMMARY\\r\\nOn reuse_existing_ip_allowed: True \\r\\n\\r\\nSame free EIP associating with all hosts in the group/play, all relevant tasks has status \\\"changed\\\" with no errors, but IP became associated only with the first host, rest of the hosts goes without EIP silently.\\r\\n\\r\\nOn  reuse_existing_ip_allowed: false\\r\\nEverything works as expected\\r\\n\\r\\n```yaml\\r\\n- name: Associate elastic IP\\r\\n  local_action:\\r\\n    module: ec2_eip\\r\\n    profile: \\\"{{ profile }}\\\"\\r\\n    region: \\\"{{ region }}\\\"\\r\\n    in_vpc: True\\r\\n    release_on_disassociation: True\\r\\n    reuse_existing_ip_allowed: True\\r\\n    device_id: \\\"{{ hostvars[inventory_hostname]['instance_id'] }}\\\"\\r\\n    state: present\\r\\n  register: eip_debug\\r\\n\\r\\n- debug: var=eip_debug\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nElastic IP addresses became associated with all hosts in play scope, existing free EIPs associated first (reused), than new allocated.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nOne existing free EIP associated with all hosts in play scope, no new IPs allocated, task has status changed (not failed), all hosts except random one has no EIP at all.\\r\\n\\r\\n```\\r\\nTASK [add-eip : Associate elastic IP] ******************************************\\r\\nchanged: [ANSIBLE-02 -> localhost]\\r\\nchanged: [ANSIBLE-01 -> localhost]\\r\\n\\r\\nTASK [add-eip : debug] *********************************************************\\r\\nok: [ANSIBLE-01] => {\\r\\n    \\\"eip_debug\\\": {\\r\\n        \\\"allocation_id\\\": \\\"eipalloc-87146abd\\\", \\r\\n        \\\"changed\\\": true, \\r\\n        \\\"public_ip\\\": \\\"52.8.209.170\\\"\\r\\n    }\\r\\n}\\r\\nok: [ANSIBLE-02] => {\\r\\n    \\\"eip_debug\\\": {\\r\\n        \\\"allocation_id\\\": \\\"eipalloc-87146abd\\\", \\r\\n        \\\"changed\\\": true, \\r\\n        \\\"public_ip\\\": \\\"52.8.209.170\\\"\\r\\n    }\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"ec2_eip\", \n    \"component_raw\": \"module: ec2_eip\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20174\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_eip.py\", \n    \"summary\": \"On reuse_existing_ip_allowed: True \\n\\n\\n\\nSame free EIP associating with all hosts in the group/play, all relevant tasks has status \\\"changed\\\" with no errors, but IP became associated only with the first host, rest of the hosts goes without EIP silently.\\n\\n\\n\\nOn  reuse_existing_ip_allowed: false\\n\\nEverything works as expected\\n\\n\\n\\n```yaml\\n\\n- name: Associate elastic IP\\n\\n  local_action:\\n\\n    module: ec2_eip\\n\\n    profile: \\\"{{ profile }}\\\"\\n\\n    region: \\\"{{ region }}\\\"\\n\\n    in_vpc: True\\n\\n    release_on_disassociation: True\\n\\n    reuse_existing_ip_allowed: True\\n\\n    device_id: \\\"{{ hostvars[inventory_hostname]['instance_id'] }}\\\"\\n\\n    state: present\\n\\n  register: eip_debug\\n\\n\\n\\n- debug: var=eip_debug\\n\\n```\", \n    \"title\": \"EC2_EIP module: on reuse_existing_ip_allowed: True trying to associate the same IP for all hosts in group\"\n  }, \n  \"20175\": {\n    \"ansible_version\": \"ansible 2.3.0 (feature/2.3/cloudscale_server e9acf74eb9) last updated 2017/01/12 133743 (GMT +200)\\nconfig file = /home/gaudenz/.ansible.cfg\\nconfigured module search path = [u/home/gaudenz/.ansible/plugins/library]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncloudscale_server\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (feature/2.3/cloudscale_server e9acf74eb9) last updated 2017/01/12 13:37:43 (GMT +200)\\r\\n  config file = /home/gaudenz/.ansible.cfg\\r\\n  configured module search path = [u'/home/gaudenz/.ansible/plugins/library']\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThis is a cloud module to create, start, stop and delete servers on the cloudscale.ch IaaS platform through their API.\\r\\n\", \n    \"component_name\": \"cloudscale_server\", \n    \"component_raw\": \"cloudscale_server\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20175\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\", \n      \"test\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/cloudscale/cloudscale_server.py\", \n    \"summary\": \"This is a cloud module to create, start, stop and delete servers on the cloudscale.ch IaaS platform through their API.\", \n    \"title\": \"Feature/2.3/cloudscale server\"\n  }, \n  \"20176\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nsysctl module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nrunning from windows subsystem for linux (win10):\\r\\n# lsb_release -a\\r\\nNo LSB modules are available.\\r\\nDistributor ID: Ubuntu\\r\\nDescription:    Ubuntu 14.04.5 LTS\\r\\nRelease:        14.04\\r\\nCodename:       trusty\\r\\n\\r\\nmanaging CentOS7:\\r\\n# cat /etc/redhat-release\\r\\nCentOS Linux release 7.3.1611 (Core)\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nTrying to apply kernel parameters to centos7 host (as described in http://docs.ansible.com/ansible/sysctl_module.html). And nothing happens, /etc/sysctl.conf remains the same (tried to change file name with sysctl_file -> new file had only \\\"=\\\" inside). \\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n---\\r\\n- hosts: '{{ target }}'\\r\\n  gather_facts: yes\\r\\n  tasks:\\r\\n\\r\\n  - name: Set kernel parameters\\r\\n    sysctl: name= {{ item.pname }} value= {{ item.value }} state=present sysctl_file=/usr/lib/sysctl.d/60-sysctl.conf sysctl_set=yes reload=yes\\r\\n    with_items:\\r\\n      - { pname: 'fs.aio-max-nr', value: '22222222' }\\r\\n      - { pname: 'fs.file-max', value: '11111111' }\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nkernel parameters permanently changed and reloaded\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nplaybook worked, parameters remains the same\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nUsing /etc/ansible/ansible.cfg as config file\\r\\n\\r\\nPLAYBOOK: 01-init-dev-centos7.yml **********************************************\\r\\n1 plays in 01-init-dev-centos7.yml\\r\\n\\r\\nPLAY [[u'pprb01']] *************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/core/system/setup.py\\r\\n<pprb01> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<pprb01> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r pprb01 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484230471.91-255180108104212 `\\\" && echo ansible-tmp-1484230471.91-255180108104212=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484230471.91-255180108104212 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<pprb01> PUT /tmp/tmpJEt4PA TO /root/.ansible/tmp/ansible-tmp-1484230471.91-255180108104212/setup.py\\r\\n<pprb01> SSH: EXEC sftp -b - -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r '[pprb01]'\\r\\n<pprb01> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<pprb01> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r pprb01 '/bin/sh -c '\\\"'\\\"'chmod u+x /root/.ansible/tmp/ansible-tmp-1484230471.91-255180108104212/ /root/.ansible/tmp/ansible-tmp-1484230471.91-255180108104212/setup.py && sleep 0'\\\"'\\\"''\\r\\n<pprb01> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<pprb01> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r -tt pprb01 '/bin/sh -c '\\\"'\\\"'/usr/bin/python /root/.ansible/tmp/ansible-tmp-1484230471.91-255180108104212/setup.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1484230471.91-255180108104212/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\nok: [pprb01]\\r\\n\\r\\nTASK [Set kernel parameters] ***************************************************\\r\\ntask path: /mnt/c/Users/igoncharov/ansible/pprb/01-init-dev-centos7.yml:6\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/core/system/sysctl.py\\r\\n<pprb01> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<pprb01> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r pprb01 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484230472.58-135407387098666 `\\\" && echo ansible-tmp-1484230472.58-135407387098666=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484230472.58-135407387098666 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<pprb01> PUT /tmp/tmppOi_12 TO /root/.ansible/tmp/ansible-tmp-1484230472.58-135407387098666/sysctl.py\\r\\n<pprb01> SSH: EXEC sftp -b - -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r '[pprb01]'\\r\\n<pprb01> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<pprb01> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r pprb01 '/bin/sh -c '\\\"'\\\"'chmod u+x /root/.ansible/tmp/ansible-tmp-1484230472.58-135407387098666/ /root/.ansible/tmp/ansible-tmp-1484230472.58-135407387098666/sysctl.py && sleep 0'\\\"'\\\"''\\r\\n<pprb01> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<pprb01> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r -tt pprb01 '/bin/sh -c '\\\"'\\\"'/usr/bin/python /root/.ansible/tmp/ansible-tmp-1484230472.58-135407387098666/sysctl.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1484230472.58-135407387098666/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\nchanged: [pprb01] => (item={u'pname': u'fs.aio-max-nr', u'value': u'22222222'}) => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"ignoreerrors\\\": false,\\r\\n            \\\"name\\\": \\\"\\\",\\r\\n            \\\"reload\\\": true,\\r\\n            \\\"state\\\": \\\"present\\\",\\r\\n            \\\"sysctl_file\\\": \\\"/usr/lib/sysctl.d/60-sysctl.conf\\\",\\r\\n            \\\"sysctl_set\\\": true,\\r\\n            \\\"value\\\": \\\"\\\"\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"sysctl\\\"\\r\\n    },\\r\\n    \\\"item\\\": {\\r\\n        \\\"pname\\\": \\\"fs.aio-max-nr\\\",\\r\\n        \\\"value\\\": \\\"22222222\\\"\\r\\n    }\\r\\n}\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/core/system/sysctl.py\\r\\n<pprb01> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<pprb01> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r pprb01 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484230472.99-88814108002804 `\\\" && echo ansible-tmp-1484230472.99-88814108002804=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484230472.99-88814108002804 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<pprb01> PUT /tmp/tmpZ30QNo TO /root/.ansible/tmp/ansible-tmp-1484230472.99-88814108002804/sysctl.py\\r\\n<pprb01> SSH: EXEC sftp -b - -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r '[pprb01]'\\r\\n<pprb01> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<pprb01> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r pprb01 '/bin/sh -c '\\\"'\\\"'chmod u+x /root/.ansible/tmp/ansible-tmp-1484230472.99-88814108002804/ /root/.ansible/tmp/ansible-tmp-1484230472.99-88814108002804/sysctl.py && sleep 0'\\\"'\\\"''\\r\\n<pprb01> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<pprb01> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r -tt pprb01 '/bin/sh -c '\\\"'\\\"'/usr/bin/python /root/.ansible/tmp/ansible-tmp-1484230472.99-88814108002804/sysctl.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1484230472.99-88814108002804/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\nchanged: [pprb01] => (item={u'pname': u'fs.file-max', u'value': u'11111111'}) => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"ignoreerrors\\\": false,\\r\\n            \\\"name\\\": \\\"\\\",\\r\\n            \\\"reload\\\": true,\\r\\n            \\\"state\\\": \\\"present\\\",\\r\\n            \\\"sysctl_file\\\": \\\"/usr/lib/sysctl.d/60-sysctl.conf\\\",\\r\\n            \\\"sysctl_set\\\": true,\\r\\n            \\\"value\\\": \\\"\\\"\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"sysctl\\\"\\r\\n    },\\r\\n    \\\"item\\\": {\\r\\n        \\\"pname\\\": \\\"fs.file-max\\\",\\r\\n        \\\"value\\\": \\\"11111111\\\"\\r\\n    }\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\npprb01                     : ok=2    changed=1    unreachable=0    failed=0\\r\\n```\\r\\n\", \n    \"component_name\": \"sysctl\", \n    \"component_raw\": \"sysctl module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20176\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/sysctl.py\", \n    \"summary\": \"Trying to apply kernel parameters to centos7 host (as described in http://docs.ansible.com/ansible/sysctl_module.html). And nothing happens, /etc/sysctl.conf remains the same (tried to change file name with sysctl_file -> new file had only \\\"=\\\" inside).\", \n    \"title\": \"sysctl module does not apply kernel parameters for CentOS7\"\n  }, \n  \"20177\": {\n    \"ansible_version\": \"ansible 2.0.0.2\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nservice\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.0.0.2\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nAdd the option for getting the status of a service via the service module, without changing the service state.\\r\\nThis option return a boolean for the current status of the service:\\r\\nIn the example bellow, if the httpd service is down, then the service will try to start it, and the operator won't be aware that httpd was down. It's sometimes very useful to be aware of the state of a service before doing anything.\\r\\n\\r\\n```\\r\\nBefore:\\r\\nok: [localhost] => {\\\"changed\\\": false, \\\"invocation\\\": {\\\"module_args\\\": {\\\"arguments\\\": \\\"\\\", \\\"enabled\\\": null, \\\"name\\\": \\\"httpd\\\", \\\"pattern\\\": null, \\\"runlevel\\\": \\\"default\\\", \\\"sleep\\\": null, \\\"state\\\": \\\"started\\\"}, \\\"module_name\\\": \\\"service\\\"}, \\\"name\\\": \\\"httpd\\\", \\\"state\\\": \\\"started\\\"}\\r\\n\\r\\nAfter:\\r\\nok: [localhost] => {\\\"changed\\\": false, \\\"invocation\\\": {\\\"module_args\\\": {\\\"arguments\\\": \\\"\\\", \\\"enabled\\\": null, \\\"name\\\": \\\"httpd\\\", \\\"pattern\\\": null, \\\"runlevel\\\": \\\"default\\\", \\\"sleep\\\": null, \\\"state\\\": \\\"status\\\"}, \\\"module_name\\\": \\\"service\\\"}, \\\"state\\\": true}\\r\\n```\\r\\n\", \n    \"component_name\": \"service\", \n    \"component_raw\": \"service\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20177\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"core_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/service.py\", \n    \"summary\": \"Add the option for getting the status of a service via the service module, without changing the service state.\\n\\nThis option return a boolean for the current status of the service:\\n\\nIn the example bellow, if the httpd service is down, then the service will try to start it, and the operator won't be aware that httpd was down. It's sometimes very useful to be aware of the state of a service before doing anything.\\n\\n\\n\\n```\\n\\nBefore:\\n\\nok: [localhost] => {\\\"changed\\\": false, \\\"invocation\\\": {\\\"module_args\\\": {\\\"arguments\\\": \\\"\\\", \\\"enabled\\\": null, \\\"name\\\": \\\"httpd\\\", \\\"pattern\\\": null, \\\"runlevel\\\": \\\"default\\\", \\\"sleep\\\": null, \\\"state\\\": \\\"started\\\"}, \\\"module_name\\\": \\\"service\\\"}, \\\"name\\\": \\\"httpd\\\", \\\"state\\\": \\\"started\\\"}\\n\\n\\n\\nAfter:\\n\\nok: [localhost] => {\\\"changed\\\": false, \\\"invocation\\\": {\\\"module_args\\\": {\\\"arguments\\\": \\\"\\\", \\\"enabled\\\": null, \\\"name\\\": \\\"httpd\\\", \\\"pattern\\\": null, \\\"runlevel\\\": \\\"default\\\", \\\"sleep\\\": null, \\\"state\\\": \\\"status\\\"}, \\\"module_name\\\": \\\"service\\\"}, \\\"state\\\": true}\\n\\n```\", \n    \"title\": \"Service status\"\n  }, \n  \"20178\": {\n    \"ansible_version\": \"ansible 1.9.1\\nconfigured module search path = /usr/share/ansible\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nec2.py dynamic inventory script\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 1.9.1\\r\\n  configured module search path = /usr/share/ansible\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nlibrary = /usr/share/ansible\\r\\n\\r\\n[ssh_connection]\\r\\nControlMaster = no\\r\\nscp_if_ssh = True\\r\\nssh_args = -o ControlMaster=no -o ControlPersist=60s\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nec2.py dynamic inventory script returns hostnames filtered by lower() function\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nJust run ec2.py in properly configured environment.\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\nansible -i ec2.py --list-hosts all\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nI expect list of untouched/real hostnames: no lowered nor uppered:\\r\\nPRE5SG-WAF-LBA1\\r\\nPRE5SG-RDS-RD02\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nHostnames are lowered\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\npre5sg-waf-lba1\\r\\npre5sg-rds-rd02\\r\\n```\\r\\n\", \n    \"component_name\": \"ec2.py dynamic inventory script\", \n    \"component_raw\": \"ec2.py dynamic inventory script\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20178\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_1.9\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"ec2.py dynamic inventory script returns hostnames filtered by lower() function\", \n    \"title\": \"ec2.py returns lower() of instance hostname\"\n  }, \n  \"20179\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [../library/]\", \n    \"body\": \"\\r\\n##### ISSUE TYPE\\r\\n\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nYum\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nansible 2.1.1.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = ['../library/']\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nDocumentation lists handler function for 'yum-clean-metdata' but the handler in the example shows 'yum-clean-all' \\r\\n\\r\\nLooks like a typo as the play would fail as it cant find the handler by name? \\r\\n\\r\\nhttps://docs.ansible.com/ansible/yum_repository_module.html\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\", \n    \"component_name\": \"yum\", \n    \"component_raw\": \"Yum\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20179\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"docs_report\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/yum.py\", \n    \"summary\": \"Documentation lists handler function for 'yum-clean-metdata' but the handler in the example shows 'yum-clean-all' \\n\\n\\n\\nLooks like a typo as the play would fail as it cant find the handler by name? \\n\\n\\n\\nhttps://docs.ansible.com/ansible/yum_repository_module.html\", \n    \"title\": \"Yum-Repository Module Documentation Error (Seemingly)\"\n  }, \n  \"20180\": {\n    \"ansible_version\": \"git\", \n    \"body\": \"Cast to int before checking the OS version.\\r\\nThis prevents the DNF tests from running on\\r\\nFedora < 23\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n- test/integration/yum\\r\\n- test/integration/dnf\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\ngit\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThe YUM and DNF tests check for OS versions and version numbers.  The tests attempt to run the correct choice of YUM or DNF on different versions of RedHat, CentOS, ScientificLinux and Fedora.  These checks have a version number check for Fedora, with the DNF split happening at version 23.\\r\\n\\r\\nThe version check isn't cast to int, so it's always true for Fedora, regardless of the version.  This causes the DNF checks to run on Fedora <= 22.\\r\\n\\r\\nThis PR just casts to int so <= and >= works as expected.\", \n    \"component_name\": \"test/integration/yum\", \n    \"component_raw\": \"- test/integration/yum\\n- test/integration/dnf\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20180\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The YUM and DNF tests check for OS versions and version numbers.  The tests attempt to run the correct choice of YUM or DNF on different versions of RedHat, CentOS, ScientificLinux and Fedora.  These checks have a version number check for Fedora, with the DNF split happening at version 23.\\n\\n\\n\\nThe version check isn't cast to int, so it's always true for Fedora, regardless of the version.  This causes the DNF checks to run on Fedora <= 22.\\n\\n\\n\\nThis PR just casts to int so <= and >= works as expected.\", \n    \"title\": \"Installroot OS version check fix\"\n  }, \n  \"20181\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodule: service\\r\\n\\r\\n##### SUMMARY\\r\\nAnsible 2.3 is getting support for managing packages with the [xbps][xbps] package manager -- https://github.com/ansible/ansible/blob/f078946ed3bf5baa353d298158b325ce9ab9f313/lib/ansible/modules/packaging/os/xbps.py . This is a wonderful development.\\r\\n\\r\\nHowever, along with xbps support should come support for the [runit][runit] service manager. The only distribution that uses xbps to manage packages is [Void Linux][void] and it uses runit for service management. At the very least, it would be nice to have `start`, `stop`, and `restart` available. The possible commands are listed at -- http://smarden.org/runit/sv.8.html\\r\\n\\r\\n[xbps]: https://github.com/voidlinux/xbps\\r\\n[runit]: http://smarden.org/runit\\r\\n[void]: http://voidlinux.eu/\", \n    \"component_name\": \"service\", \n    \"component_raw\": \"module: service\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20181\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/service.py\", \n    \"summary\": \"Ansible 2.3 is getting support for managing packages with the [xbps][xbps] package manager -- https://github.com/ansible/ansible/blob/f078946ed3bf5baa353d298158b325ce9ab9f313/lib/ansible/modules/packaging/os/xbps.py . This is a wonderful development.\\n\\n\\n\\nHowever, along with xbps support should come support for the [runit][runit] service manager. The only distribution that uses xbps to manage packages is [Void Linux][void] and it uses runit for service management. At the very least, it would be nice to have `start`, `stop`, and `restart` available. The possible commands are listed at -- http://smarden.org/runit/sv.8.html\\n\\n\\n\\n[xbps]: https://github.com/voidlinux/xbps\\n\\n[runit]: http://smarden.org/runit\\n\\n[void]: http://voidlinux.eu/\", \n    \"title\": \"Support the `runit` service manager\"\n  }, \n  \"20182\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.3.0 (devel cba66dfedc)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\njunos_config\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible --version\\r\\nansible 2.3.0 (devel cba66dfedc)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n* Add additional check to update argument which will ensure config\\r\\n  statement is present.\\r\\n```\\r\\n\", \n    \"component_name\": \"junos_config\", \n    \"component_raw\": \"junos_config\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20182\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"c:module_utils/basic\", \n      \"core_review\", \n      \"module\", \n      \"networking\", \n      \"owner_pr\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/junos/junos_config.py\", \n    \"summary\": \"```\\n\\n* Add additional check to update argument which will ensure config\\n\\n  statement is present.\\n\\n```\", \n    \"title\": \"Fix update check issue in junos_config \"\n  }, \n  \"20183\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n\\r\\n- Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nunarchive module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\nansible 2.2.0.0\\r\\n\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n```yml\\r\\n- unarchive:\\r\\n    src: \\\"package.zip\\\"\\r\\n    dest: /opt/app\\r\\n    extra_opts: \\\"-q\\\"\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nRunning from Fedora 24, on Centos 7\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nExpected result is to get less verbose output from unzip. The actual result is a error message, caused by the fact that unarchive module prepends all extra opts to the end of the command, while \\\"-q\\\" should be before file name. Error looks like this:\\r\\n\\r\\n```\\r\\nfatal: [192_168_0_7]: FAILED! => {\\\"changed\\\": false, \\\"dest\\\": \\\"/opt/app\\\", \\\"extract_results\\\": {\\\"cmd\\\": [\\\"/bin/unzip\\\", \\\"-o\\\", \\\"/home/centos/.ansible/tmp/ansible-tmp-1484238077.65-84670087365809/source\\\", \\\"-q\\\", \\\"-d\\\", \\\"/opt/app\\\"], \\\"err\\\": \\\"caution: filename not matched:  -q\\\\n\\\", \\\"out\\\": \\\"Archive:  /home/centos/.ansible/tmp/ansible-tmp-1484238077.65-84670087365809/source\\\\n\\\", \\\"rc\\\": 11}, \\\"failed\\\": true, \\\"gid\\\": 1003, \\\"group\\\": \\\"centos\\\", \\\"handler\\\": \\\"ZipArchive\\\", \\\"mode\\\": \\\"0755\\\", \\\"msg\\\": \\\"failed to unpack /home/centos/.ansible/tmp/ansible-tmp-1484238077.65-84670087365809/source to /opt/app\\\", \\\"owner\\\": \\\"centos\\\", \\\"size\\\": 4096, \\\"src\\\": \\\"/home/centos/.ansible/tmp/ansible-tmp-1484238077.65-84670087365809/source\\\", \\\"state\\\": \\\"directory\\\", \\\"uid\\\": 1003}\\r\\n```\\r\\n\\r\\nThis:\\r\\n\\r\\n```\\r\\n[\\\"/bin/unzip\\\", \\\"-o\\\", \\\"/home/centos/.ansible/tmp/ansible-tmp-1484238077.65-84670087365809/source\\\", \\\"-q\\\", \\\"-d\\\", \\\"/opt/app\\\"]\\r\\n```\\r\\n\\r\\nShould rather be:\\r\\n\\r\\n```\\r\\n[\\\"/bin/unzip\\\", \\\"-oq\\\", \\\"/home/centos/.ansible/tmp/ansible-tmp-1484238077.65-84670087365809/source\\\",  \\\"-d\\\", \\\"/opt/app\\\"]\\r\\n```\\r\\n\\r\\nThen command would work.\\r\\n\", \n    \"component_name\": \"unarchive\", \n    \"component_raw\": \"unarchive module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20183\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/unarchive.py\", \n    \"summary\": \"Expected result is to get less verbose output from unzip. The actual result is a error message, caused by the fact that unarchive module prepends all extra opts to the end of the command, while \\\"-q\\\" should be before file name. Error looks like this:\\n\\n\\n\\n```\\n\\nfatal: [192_168_0_7]: FAILED! => {\\\"changed\\\": false, \\\"dest\\\": \\\"/opt/app\\\", \\\"extract_results\\\": {\\\"cmd\\\": [\\\"/bin/unzip\\\", \\\"-o\\\", \\\"/home/centos/.ansible/tmp/ansible-tmp-1484238077.65-84670087365809/source\\\", \\\"-q\\\", \\\"-d\\\", \\\"/opt/app\\\"], \\\"err\\\": \\\"caution: filename not matched:  -q\\\\n\\\", \\\"out\\\": \\\"Archive:  /home/centos/.ansible/tmp/ansible-tmp-1484238077.65-84670087365809/source\\\\n\\\", \\\"rc\\\": 11}, \\\"failed\\\": true, \\\"gid\\\": 1003, \\\"group\\\": \\\"centos\\\", \\\"handler\\\": \\\"ZipArchive\\\", \\\"mode\\\": \\\"0755\\\", \\\"msg\\\": \\\"failed to unpack /home/centos/.ansible/tmp/ansible-tmp-1484238077.65-84670087365809/source to /opt/app\\\", \\\"owner\\\": \\\"centos\\\", \\\"size\\\": 4096, \\\"src\\\": \\\"/home/centos/.ansible/tmp/ansible-tmp-1484238077.65-84670087365809/source\\\", \\\"state\\\": \\\"directory\\\", \\\"uid\\\": 1003}\\n\\n```\\n\\n\\n\\nThis:\\n\\n\\n\\n```\\n\\n[\\\"/bin/unzip\\\", \\\"-o\\\", \\\"/home/centos/.ansible/tmp/ansible-tmp-1484238077.65-84670087365809/source\\\", \\\"-q\\\", \\\"-d\\\", \\\"/opt/app\\\"]\\n\\n```\\n\\n\\n\\nShould rather be:\\n\\n\\n\\n```\\n\\n[\\\"/bin/unzip\\\", \\\"-oq\\\", \\\"/home/centos/.ansible/tmp/ansible-tmp-1484238077.65-84670087365809/source\\\",  \\\"-d\\\", \\\"/opt/app\\\"]\\n\\n```\\n\\n\\n\\nThen command would work.\", \n    \"title\": \"Unable to provide -q option as extra_opts of unarchive module\"\n  }, \n  \"20184\": {\n    \"ansible_version\": \"ansible 2.2.1.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible-vault\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.1.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n`ansible-vault edit some_symlink_file` \\r\\nremoves the symlink and write the file **->** you end up with updated vault file in place of the symlink, and old not-updated vault file\\r\\nThis happen in the background, so you have no idea (unless you list symlinks) that the configuration mismatch has just been born!\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nModify the source! \\r\\nor sys.exit(1) without any modification\\r\\n\\r\\n\\r\\n##### REPRODUCE RESULTS\\r\\n```\\r\\nBefore:\\r\\n-rw-rw-r-- 1 x x 2.6K Nov 17 00:59 stg_default_vault\\r\\nlrwxrwxrwx 1 x x   17 Nov 17 00:59 staging_vault -> stg_default_vault\\r\\n\\r\\nEdit:\\r\\nansible-vault edit staging_vault\\r\\n\\r\\nAfter:\\r\\n-rw-rw-r-- 1 x x 2.6K Nov 17 00:59 stg_default_vault\\r\\n-rw-rw-r-- 1 x x 2.6K Jan 12 17:29 staging_vault\\r\\n```\\r\\n\", \n    \"component_name\": \"ansible-vault\", \n    \"component_raw\": \"ansible-vault\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20184\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"c:cli/\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"`ansible-vault edit some_symlink_file` \\n\\nremoves the symlink and write the file **->** you end up with updated vault file in place of the symlink, and old not-updated vault file\\n\\nThis happen in the background, so you have no idea (unless you list symlinks) that the\", \n    \"title\": \"ansible-vault overrides the symlink!\"\n  }, \n  \"20186\": {\n    \"ansible_version\": \"ansible 2.2.1.0 (detached HEAD fe33c937c4) last updated 2016/12/15 120342 (GMT +100)\\nlib/ansible/modules/core (detached HEAD 48a3ce1223) last updated 2016/12/15 120411 (GMT +100)\\nlib/ansible/modules/extras (detached HEAD 4e720b48ae) last updated 2016/12/15 120418 (GMT +100)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n##### COMPONENT NAME\\r\\njunos_configure\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.1.0 (detached HEAD fe33c937c4) last updated 2016/12/15 12:03:42 (GMT +100)\\r\\n  lib/ansible/modules/core: (detached HEAD 48a3ce1223) last updated 2016/12/15 12:04:11 (GMT +100)\\r\\n  lib/ansible/modules/extras: (detached HEAD 4e720b48ae) last updated 2016/12/15 12:04:18 (GMT +100)\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n2.2 regression. Fails on `vsrx01.eng` and AWS. Can't test on `devel` as junos hasn't been refactored yet.\\r\\n\\r\\n\\r\\nansible/test/integration/targets/junos_config/tests/netconf/src_basic.yaml\\r\\n```yaml\\r\\n---\\r\\n- debug: msg=\\\"START netconf/src_basic.yaml\\\"\\r\\n\\r\\n- name: setup\\r\\n  junos_config:\\r\\n    lines:\\r\\n      - set system host-name {{ inventory_hostname_short }}\\r\\n      - delete interfaces lo0\\r\\n    provider: \\\"{{ netconf }}\\\"\\r\\n\\r\\n- name: configure device with config\\r\\n  junos_config:\\r\\n    src: basic/config.j2\\r\\n    provider: \\\"{{ netconf }}\\\"\\r\\n  register: result\\r\\n\\r\\n- assert:\\r\\n    that:\\r\\n      - \\\"result.changed == true\\\"\\r\\n# https://github.com/ansible/ansible-modules-core/issues/4807\\r\\n      - \\\"result.updates is not defined\\\"\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_BOpQw7/ansible_module_junos_config.py\\\\\\\", line 343, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_BOpQw7/ansible_module_junos_config.py\\\\\\\", line 334, in main\\\\n    run(module, result)\\\\n  File \\\\\\\"/tmp/ansible_BOpQw7/ansible_module_junos_config.py\\\\\\\", line 292, in run\\\\n    return load_config(module, result)\\\\n  File \\\\\\\"/tmp/ansible_BOpQw7/ansible_module_junos_config.py\\\\\\\", line 245, in load_config\\\\n    config_format = module.params['src_format'] or guess_format(candidate)\\\\n  File \\\\\\\"/tmp/ansible_BOpQw7/ansible_module_junos_config.py\\\\\\\", line 176, in guess_format\\\\n    json.loads(config)\\\\n  File \\\\\\\"/usr/lib/python2.7/json/__init__.py\\\\\\\", line 339, in loads\\\\n    return _default_decoder.decode(s)\\\\n  File \\\\\\\"/usr/lib/python2.7/json/decoder.py\\\\\\\", line 364, in decode\\\\n    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\\\\nTypeError: expected string or buffer\\\\n\\\", \\r\\n    \\\"module_stdout\\\": \\\"\\\", \\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"junos_configure\", \n    \"component_raw\": \"junos_configure\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20186\", \n    \"issue_type\": \"\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"networking\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"\", \n    \"title\": \"2.2 regresson: junos_configure: self.raw_decode(s, idx=_w(s, 0).end())\\\\nTypeError: expected string or buffer\\\\n\\\", \"\n  }, \n  \"20187\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\nBugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nplugins/connection/ssh.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nv2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nCurrently, `ANSIBLE_SSH_RETRIES` only affects `exec_command`, and does not retry `put_file` or `fetch_file`.\\r\\n\\r\\nThis PR moves the retry logic into a `_ssh_retry` decorator, and applies it to `exec_command`, `put_file`, and `fetch_file`.\\r\\n\\r\\ncc @jamiehannaford\", \n    \"component_name\": \"plugins/connection/ssh.py\", \n    \"component_raw\": \"plugins/connection/ssh.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20187\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:plugins/connection\", \n      \"c:plugins/connection/ssh\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Currently, `ANSIBLE_SSH_RETRIES` only affects `exec_command`, and does not retry `put_file` or `fetch_file`.\\n\\n\\n\\nThis PR moves the retry logic into a `_ssh_retry` decorator, and applies it to `exec_command`, `put_file`, and `fetch_file`.\\n\\n\\n\\ncc @jamiehannaford\", \n    \"title\": \"[WIP] Extend SSH Retry to put_file and fetch_file\"\n  }, \n  \"20189\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file = /home/ubuntu/_temp_jef_auto_deployment/ansible.cfg\\nconfigured module search path = [library]\", \n    \"body\": \"Add additional-params to support the installing of xpack plugin for elasticsearch.\\r\\n\\r\\nhttps://www.elastic.co/guide/en/x-pack/current/installing-xpack.html\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nelasticsearch_plugin.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = /home/ubuntu/_temp_jef_auto_deployment/ansible.cfg\\r\\n  configured module search path = ['library']\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nElasticsearch 5 requires a batch parameter to install the x-pack plugin without user input [link](https://www.elastic.co/guide/en/x-pack/current/installing-xpack.html). Additionally there is a new environment variable parameter that could also be configured with the elasticsearch 5 plugin installer. This general change allow the user to set any additional parameters to the plugin command enabling general use of the plugin installer.\\r\\n\\r\\n\", \n    \"component_name\": \"elasticsearch_plugin.py\", \n    \"component_raw\": \"elasticsearch_plugin.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20189\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"community_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/database/misc/elasticsearch_plugin.py\", \n    \"summary\": \"Elasticsearch 5 requires a batch parameter to install the x-pack plugin without user input [link](https://www.elastic.co/guide/en/x-pack/current/installing-xpack.html). Additionally there is a new\", \n    \"title\": \"Addition parameter for elasticserach_plugin module\"\n  }, \n  \"20190\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"Fixed an issue where script would fail with Redis clusters where attempting to get the address off it's primary endpoint.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2 dynamic inventory script\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nIt appears the the Redis clusters don't have a Primary Endpoint address, so the script currently fails because it's trying to find a key of 'Address' off an object of None (the key of 'PrimaryEndpoint' in the parent dictionary).\\r\\n\\r\\n\\r\\n\\r\\nBefore\\r\\n```\\r\\n[wholroyd@wholroyd-fedora Ansible]$ ./hosts --refresh-cache --boto-profile stage\\r\\nTraceback (most recent call last):\\r\\n  File \\\"./hosts\\\", line 1510, in <module>\\r\\n    Ec2Inventory()\\r\\n  File \\\"./hosts\\\", line 186, in __init__\\r\\n    self.do_api_calls_update_cache()\\r\\n  File \\\"./hosts\\\", line 492, in do_api_calls_update_cache\\r\\n    self.get_elasticache_replication_groups_by_region(region)\\r\\n  File \\\"./hosts\\\", line 722, in get_elasticache_replication_groups_by_region\\r\\n    self.add_elasticache_replication_group(replication_group, region)\\r\\n  File \\\"./hosts\\\", line 1198, in add_elasticache_replication_group\\r\\n    dest = replication_group['NodeGroups'][0]['PrimaryEndpoint']['Address']\\r\\nTypeError: 'NoneType' object has no attribute '__getitem__'\\r\\n\\r\\n```\\r\\n\\r\\nAfter\\r\\n```\\r\\nNot posting the output of my entire us-east-1 inventory, but it does work\\r\\n```\", \n    \"component_name\": \"ec2 dynamic inventory script\", \n    \"component_raw\": \"ec2 dynamic inventory script\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20190\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"It appears the the Redis clusters don't have a Primary Endpoint address, so the script currently fails because it's trying to find a key of 'Address' off an object of None (the key of 'PrimaryEndpoint' in the parent dictionary).\\n\\n\\n\\n\\n\\n\\n\\nBefore\\n\\n```\\n\\n[wholroyd@wholroyd-fedora Ansible]$ ./hosts --refresh-cache --boto-profile stage\\n\\nTraceback (most recent call last):\\n\\n  File \\\"./hosts\\\", line 1510, in <module>\\n\\n    Ec2Inventory()\\n\\n  File \\\"./hosts\\\", line 186, in __init__\\n\\n    self.do_api_calls_update_cache()\\n\\n  File \\\"./hosts\\\", line 492, in do_api_calls_update_cache\\n\\n    self.get_elasticache_replication_groups_by_region(region)\\n\\n  File \\\"./hosts\\\", line 722, in get_elasticache_replication_groups_by_region\\n\\n    self.add_elasticache_replication_group(replication_group, region)\\n\\n  File \\\"./hosts\\\", line 1198, in add_elasticache_replication_group\\n\\n    dest = replication_group['NodeGroups'][0]['PrimaryEndpoint']['Address']\\n\\nTypeError: 'NoneType' object has no attribute '__getitem__'\\n\\n\\n\\n```\\n\\n\\n\\nAfter\\n\\n```\\n\\nNot posting the output of my entire us-east-1 inventory, but it does work\\n\\n```\", \n    \"title\": \"Fixed failure with Redis clusters not having primary endpoint address\"\n  }, \n  \"20191\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\nFeature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nos_subnet module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThe `use_default_subnetpool` option was [recently added](https://review.openstack.org/#/c/416319) to the shade library. This pull request implements and documents this option in the os_subnet module.\\r\\n\\r\\nThis feature is required to add IPv6 subnets if the OpenStack installation has either BGP or prefix delegation enabled.\\r\\n\\r\\n##### DEPENDS ON\\r\\n\\r\\n[shade](https://pypi.python.org/pypi/shade)>1.14.1 or including [9e818c0af](https://github.com/openstack-infra/shade/commit/9e818c0afdb280a374cb2418cf4a277c3867e218)\", \n    \"component_name\": \"os_subnet\", \n    \"component_raw\": \"os_subnet module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20191\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"feature\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_subnet.py\", \n    \"summary\": \"The `use_default_subnetpool` option was [recently added](https://review.openstack.org/#/c/416319) to the shade library. This pull request implements and documents this option in the os_subnet module.\\n\\n\\n\\nThis feature is required to add IPv6 subnets if the OpenStack installation has either BGP or prefix delegation enabled.\\n\\n\\n\\n##### DEPENDS ON\\n\\n\\n\\n[shade](https://pypi.python.org/pypi/shade)>1.14.1 or including [9e818c0af](https://github.com/openstack-infra/shade/commit/9e818c0afdb280a374cb2418cf4a277c3867e218)\", \n    \"title\": \"os_subnet: add support for using the default subnetpool\"\n  }, \n  \"20192\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nmodules\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\ndisallow any internal `_ansible_*` vars and also warn when those or any on the restricted list are attempted\\r\\n\", \n    \"component_name\": \"s\", \n    \"component_raw\": \"modules\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20192\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:constants\", \n      \"c:plugins/action\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"disallow any internal `_ansible_*` vars and also warn when those or any on the restricted list are attempted\", \n    \"title\": \"better cleaning of module return, also warn\"\n  }, \n  \"20195\": {\n    \"ansible_version\": \"tested with\\nansible 2.0.2.0\\nconfig file = /Users/mconlon/git/hyperwave_relay_canada/ansible.cfg\\nconfigured module search path = custom_modules\\nand\\nansible 2.3.0 (devel 02b548dba2) last updated 2017/01/12 122115 (GMT -500)\\nconfig file = /Users/mconlon/git/hyperwave_relay_canada/ansible.cfg\\nconfigured module search path = [ucustom_modules]\\n(I wiped away my boto installation and reinstalled to get the latest version...also reinstalled boto from scratch when testing devel branch of ansible inside virtualenv.)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_tag module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\ntested with\\r\\n```\\r\\nansible 2.0.2.0\\r\\n  config file = /Users/mconlon/git/hyperwave_relay_canada/ansible.cfg\\r\\n  configured module search path = custom_modules\\r\\n```\\r\\nand\\r\\n```\\r\\nansible 2.3.0 (devel 02b548dba2) last updated 2017/01/12 12:21:15 (GMT -500)\\r\\n  config file = /Users/mconlon/git/hyperwave_relay_canada/ansible.cfg\\r\\n  configured module search path = [u'custom_modules']\\r\\n```\\r\\n\\r\\n(I wiped away my boto installation and reinstalled to get the latest version...also reinstalled boto from scratch when testing devel branch of ansible inside virtualenv.)\\r\\n\\r\\n##### CONFIGURATION\\r\\nmy ansible.cfg:\\r\\n```\\r\\n[defaults]\\r\\nroles_path = roles\\r\\nlookup_plugins = lookup_plugins\\r\\nfilter_plugins = filter_plugins\\r\\nhash_behaviour = merge\\r\\nlibrary = custom_modules\\r\\nforks = 50\\r\\n\\r\\n[ssh_connection]\\r\\nscp_if_ssh = True\\r\\npipelining = True\\r\\n# an attempt to fix ssh unreachable errors when machines are actually reachable\\r\\nretries = 5\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nRunning from Mac OS X 10.12.2, managing Ubuntu 14.04\\r\\n\\r\\n##### SUMMARY\\r\\nThe ec2_tag module isn't compatible with ca-central-1 region of AWS\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nexample tasks which fail (region has been set in the inventory to \\\"ca-central-1\\\"):\\r\\n```yaml\\r\\n- name: set role tag\\r\\n  ec2_tag:\\r\\n    region: \\\"{{ region }}\\\"\\r\\n    resource: \\\"{{ ec2_id }}\\\"\\r\\n    tags:\\r\\n      role: \\\"{{ ec2_role }}\\\"\\r\\n```\\r\\nand\\r\\n```yaml\\r\\n- name: check aws Name tag\\r\\n  ec2_tag:\\r\\n    region: \\\"{{ region }}\\\"\\r\\n    resource: \\\"{{ ansible_ec2_instance_id }}\\\"\\r\\n    state: list\\r\\n  register: ec2_tags\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe tag should be set on an instance in Canada, or I should be able to get a list of tags on an instance in Canada.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nThe module fails because it doesn't recognize ca-central-1\\r\\n\\r\\noutput:\\r\\n```\\r\\nTASK [bastion : set role tag] ***************************************************************************************************************************************************************\\r\\ntask path: /Users/mconlon/git/hyperwave_relay_canada/roles/bastion/tasks/main.yml:39\\r\\nUsing module file /Users/mconlon/ansible_devel/src/ansible/lib/ansible/modules/cloud/amazon/ec2_tag.py\\r\\n<10.3.1.144> ESTABLISH SSH CONNECTION FOR USER: ubuntu\\r\\n<10.3.1.144> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o Port=4242 -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ubuntu -o ConnectTimeout=10 -o 'ProxyCommand=ssh -W %h:%p bastion-01.edge.aworks.ca' -o ControlPath=/Users/mconlon/.ansible/cp/ansible-ssh-%h-%p-%r 10.3.1.144 '/bin/sh -c '\\\"'\\\"'/usr/bin/python && sleep 0'\\\"'\\\"''\\r\\nfatal: [10.3.1.144]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"aws_access_key\\\": null,\\r\\n            \\\"aws_secret_key\\\": null,\\r\\n            \\\"ec2_url\\\": null,\\r\\n            \\\"profile\\\": null,\\r\\n            \\\"region\\\": \\\"ca-central-1\\\",\\r\\n            \\\"resource\\\": \\\"i-0e8fb7c78637b5004\\\",\\r\\n            \\\"security_token\\\": null,\\r\\n            \\\"state\\\": \\\"present\\\",\\r\\n            \\\"tags\\\": {\\r\\n                \\\"role\\\": \\\"bastion\\\"\\r\\n            },\\r\\n            \\\"validate_certs\\\": true\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"ec2_tag\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"Region ca-central-1 does not seem to be available for aws module boto.ec2. If the region definitely exists, you may need to upgrade boto or extend with endpoints_path\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"ec2_tag\", \n    \"component_raw\": \"ec2_tag module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20195\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_tag.py\", \n    \"summary\": \"The ec2_tag module isn't compatible with ca-central-1 region of AWS\", \n    \"title\": \"ec2_tag module doesn't support new aws region ca-central-1\"\n  }, \n  \"20196\": {\n    \"ansible_version\": \"ansible 2.1.0.0\\nconfig file = /Users/benjamin/xxxxxxx/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @bmalynovytch on June 2, 2016 15:43_\\n\\n##### ISSUE TYPE\\n\\nBug Report (regression)\\n##### COMPONENT NAME\\n\\nmysql_db (import)\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.1.0.0\\n  config file = /Users/benjamin/xxxxxxx/ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### CONFIGURATION\\n\\n```\\n[defaults]\\nhost_key_checking = False\\nforks=500\\npipelining=True\\nretry_files_enabled = False\\n\\ngathering = smart\\nfact_caching = jsonfile\\nfact_caching_connection = ./.tmp/ansible\\nfact_caching_timeout = 3600\\n\\n[ssh_connection]\\ncontrol_path = /tmp/ansible-ssh-%%h-%%p-%%r\\nssh_args = -o ControlMaster=auto -o ControlPersist=30m\\n```\\n##### OS / ENVIRONMENT\\n\\nDeployment OS: Mac OS X 10.11.5, python v2.7.11 with pyenv/virtualenv\\nDestination OS: ubuntu jessie/sid\\n##### SUMMARY\\n\\nUsing `mysql_db` to import Gzipped or Bzipped SQL dumps used to work like a charm with `ansible 2.0.2.0`\\nNow, compressed imports fail with a `broken pipe` error, either if `.gz` or .`bz2`\\nStrangely, this does not happen on a small (compressed) file (1.8k gzip compressed, 6k uncompressed)\\nMaybe related to https://blog.nelhage.com/2010/02/a-very-subtle-bug/\\n##### STEPS TO REPRODUCE\\n\\nTry to import a compressed (large enough) SQL dump with mysql_db.\\nFailure happen with a 3.5MB gzip compressed / 20MB uncompressed dump.\\n\\n```\\n- name: Restore database\\n  mysql_db:\\n  args:\\n    name: my_db\\n    state: import\\n    target: /path_to_backups/backup-pre-release.sql.bz2\\n    login_host: \\\"{{ db.host\\u00a0}}\\\"\\n    login_port: \\\"{{ db.port\\u00a0}}\\\"\\n    login_user: \\\"{{ db.user }}\\\"\\n    login_password: \\\"{{ db.passwd }}\\\"\\n```\\n##### EXPECTED RESULTS\\n\\nImport should just work.\\n##### ACTUAL RESULTS\\n\\n```\\nfatal: [xxxxxx]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\n\\\"msg\\\": \\n\\\"bzip2: I/O or other error, bailing out.  Possible reason follows.\\n bzip2: Broken pipe\\n       Input file = /opt/xxxxxx/backup-pre-release.sql.bz2, output file = (stdout)\\n\\\"}\\n```\\n\\n<!-- edited by alikins for formatting -->\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#3835_\", \n    \"component_name\": \"mysql_db (import)\", \n    \"component_raw\": \"mysql_db (import)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20196\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Using `mysql_db` to import Gzipped or Bzipped SQL dumps used to work like a charm with `ansible 2.0.2.0`\\nNow, compressed imports fail with a `broken pipe` error, either if `.gz` or .`bz2`\\nStrangely, this does not happen on a small (compressed) file (1.8k gzip compressed, 6k uncompressed)\\nMaybe related to https://blog.nelhage.com/2010/02/a-very-subtle-bug/\", \n    \"title\": \"[Bug / Regression] mysql_db import fail to decompress dumps\"\n  }, \n  \"20197\": {\n    \"ansible_version\": \"ansible 2.2.1.0 (jinja-stable-2.2 1cc85f027d) last updated 2017/01/12 132708 (GMT -700)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\nBugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nIntegration Tests\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.1.0 (jinja-stable-2.2 1cc85f027d) last updated 2017/01/12 13:27:08 (GMT -700)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nTest with jinja2 < 2.9.\", \n    \"component_name\": \"integration tests\", \n    \"component_raw\": \"Integration Tests\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20197\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Test with jinja2 < 2.9.\", \n    \"title\": \"Test with jinja2 < 2.9.\"\n  }, \n  \"20198\": {\n    \"ansible_version\": null, \n    \"body\": \"Hi,\\r\\n\\r\\nI found some bugs in ipaddr documentation. It forced me the hard way to find out about.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nipaddr documentation\\r\\n\\r\\n##### SUMMARY\\r\\nI found some bugs in ipaddr documentation.\\r\\n\", \n    \"component_name\": \"ipaddr documentation\", \n    \"component_raw\": \"ipaddr documentation\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20198\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"docs\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"I found some bugs in ipaddr documentation.\", \n    \"title\": \"Documentation fix\"\n  }, \n  \"20199\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @apolatynski on December 4, 2016 15:42_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nhtpasswd\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nDefault\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nArchLinux\\r\\n\\r\\n##### SUMMARY\\r\\nhtpasswd module fails with message: `invalid version number '1.7.0.post20161124160753`\\r\\nLooks like it's related to `python2-passlib` package (installed from archlinux repository).\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nUsing a role with a task like below\\r\\n\\r\\n```\\r\\nhtpasswd:\\r\\n  path=/etc/app/auth/htpasswd\\r\\n  name=someuser\\r\\n  crypt_scheme=bcrypt\\r\\n  password={{ password }}\\r\\n  owner=root\\r\\n  mode=0640\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nUser entry added to htpasswd file.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nTask failure.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nfatal: [host]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"backup\\\": null,\\r\\n            \\\"content\\\": null,\\r\\n            \\\"create\\\": true,\\r\\n            \\\"crypt_scheme\\\": \\\"bcrypt\\\",\\r\\n            \\\"delimiter\\\": null,\\r\\n            \\\"directory_mode\\\": null,\\r\\n            \\\"follow\\\": false,\\r\\n            \\\"force\\\": null,\\r\\n            \\\"group\\\": null,\\r\\n            \\\"mode\\\": \\\"0640\\\",\\r\\n            \\\"name\\\": \\\"someuser\\\",\\r\\n            \\\"owner\\\": \\\"root\\\",\\r\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\",\\r\\n            \\\"path\\\": \\\"/etc/app/auth/htpasswd\\\",\\r\\n            \\\"regexp\\\": null,\\r\\n            \\\"remote_src\\\": null,\\r\\n            \\\"selevel\\\": null,\\r\\n            \\\"serole\\\": null,\\r\\n            \\\"setype\\\": null,\\r\\n            \\\"seuser\\\": null,\\r\\n            \\\"src\\\": null,\\r\\n            \\\"state\\\": \\\"present\\\",\\r\\n            \\\"unsafe_writes\\\": null\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"htpasswd\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"invalid version number '1.7.0.post20161124160753'\\\"\\r\\n}\\r\\n```\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5816_\", \n    \"component_name\": \"htpasswd\", \n    \"component_raw\": \"htpasswd\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20199\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/web_infrastructure/htpasswd.py\", \n    \"summary\": \"htpasswd module fails with message: `invalid version number '1.7.0.post20161124160753`\\n\\nLooks like it's related to `python2-passlib` package (installed from archlinux repository).\", \n    \"title\": \"Failure while using htpasswd module\"\n  }, \n  \"20200\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = [module library]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\npubnub_blocks\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = ['module', 'library']\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThis module allow to manage [PubNub BLOCKS](https://www.pubnub.com/products/blocks/) during automated integration process. Module allow to create and / or delete blocks along with their event handlers.  \\r\\nAfter block creation and event handlers configuration it is possible to run or stop block. Module usage for different purposes covered in it's header and in this [README](https://github.com/pubnub/pubnub-blocks-ansible/blob/master/README.md#module-usage).\\r\\nBasic usage to create block and start it:\\r\\n```\\r\\n- name: Create block with event handlers\\r\\n  register: module_cache\\r\\n  pubnub_blocks:\\r\\n    email: '{{ email }}'\\r\\n    pwd: '{{ password }}'\\r\\n    application: '{{ app_name }}'\\r\\n    keyset: '{{ keyset_name }}'\\r\\n    block: 'Test Block 1'\\r\\n    event_handlers:\\r\\n      -\\r\\n        src: 'sources/eh1.js'\\r\\n        name: 'Event Handler 1'\\r\\n        channels: 'eh-channel-1'\\r\\n        event: 'js-before-publish'\\r\\n      -\\r\\n        src: 'sources/eh2.js'\\r\\n        name: 'Event Handler 2'\\r\\n        channels: 'eh-channel-2'\\r\\n        event: 'js-before-publish'\\r\\n- name: Start block\\r\\n  pubnub_blocks:\\r\\n    cache: '{{ module_cache | default({}) }}'\\r\\n    application: '{{ app_name }}'\\r\\n    keyset: '{{ keyset_name }}'\\r\\n    block: 'Test Block 1'\\r\\n    state: start\\r\\n```\\r\\nModule doesn't have specific output, because all _changed_ state depends on whether any block property / state has been changed.\", \n    \"component_name\": \"pubnub_blocks\", \n    \"component_raw\": \"pubnub_blocks\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20200\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/pubnub/pubnub_blocks.py\", \n    \"summary\": \"This module allow to manage [PubNub BLOCKS](https://www.pubnub.com/products/blocks/) during automated integration process. Module allow to create and / or delete blocks along with their event handlers.  \\n\\nAfter block creation and event handlers\", \n    \"title\": \"Add PubNub BLOCKS management module\"\n  }, \n  \"20201\": {\n    \"ansible_version\": \"ansible 2.3.0 (laurent/gce_pd_delete_on_termination d934dfc684) last updated 2017/01/12 150245 (GMT -700)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ngce_pd\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (laurent/gce_pd_delete_on_termination d934dfc684) last updated 2017/01/12 15:02:45 (GMT -700)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdd delete_on_termination option to gce_pd, which will delete the disk\\r\\nwhen the attached instance is terminated.\\r\\n\\r\\nOption is similar to ec2_vol delete_on_termination\", \n    \"component_name\": \"gce_pd\", \n    \"component_raw\": \"gce_pd\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20201\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"feature\", \n      \"gce\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/google/gce_pd.py\", \n    \"summary\": \"Add delete_on_termination option to gce_pd, which will delete the disk\\n\\nwhen the attached instance is terminated.\\n\\n\\n\\nOption is similar to ec2_vol delete_on_termination\", \n    \"title\": \"gce_pd: add delete_on_termination option\"\n  }, \n  \"20202\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\\n(also confirmed problem exists with latest git)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nhtpasswd module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n(also confirmed problem exists with latest git)\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nPreviously, we used StrictVersion which failed to parse some passlib\\r\\nversion strings. For example, Debian currently ship passlib with a\\r\\n__version__ of '1.7.0.post20161128115349'\\r\\n\\r\\nStrictVersion throws an exception when parsing this version string.\\r\\n\\r\\nChange to using LooseVersion which successfully parses version strings\\r\\nsuch as this.\\r\\n\\r\\nFixes #20199\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n\\r\\nBefore - fails like so:\\r\\n\\r\\n```\\r\\nFAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"invalid version number '1.7.0.post20161128115349'\\\"}\\r\\n```\\r\\n\\r\\nAfter - no errors\\r\\n\", \n    \"component_name\": \"htpasswd\", \n    \"component_raw\": \"htpasswd module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20202\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"community_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/web_infrastructure/htpasswd.py\", \n    \"summary\": \"Previously, we used StrictVersion which failed to parse some passlib\\n\\nversion strings. For example, Debian currently ship passlib with a\\n\\n__version__ of '1.7.0.post20161128115349'\\n\\n\\n\\nStrictVersion throws an exception when parsing this version string.\\n\\n\\n\\nChange to using LooseVersion which successfully parses version strings\\n\\nsuch as this.\\n\\n\\n\\nFixes #20199\\n\\n\\n\\n\\n\\n\\n\\nBefore - fails like so:\\n\\n\\n\\n```\\n\\nFAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"invalid version number '1.7.0.post20161128115349'\\\"}\\n\\n```\\n\\n\\n\\nAfter - no errors\", \n    \"title\": \"htpasswd: fix passlib module version comparison\"\n  }, \n  \"20203\": {\n    \"ansible_version\": \"Tested with\\nansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnmcli\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nTested with:\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\n1)\\r\\n\\r\\nFix dns configuration documentation that caused this https://github.com/ansible/ansible-modules-extras/issues/1910\\r\\n\\r\\nInstead of dns4: [\\\"1.1.1.1\\\", \\\"2.2.2.2\\\"] it should be \\\"1.1.1.1, 2.2.2.2\\\" or \\\"1.1.1.1 2.2.2.2\\\".\\r\\nThe latter is the way that is in the nmcli documentation so we'll use it here as well.\\r\\n\\r\\nSame applies to dns6.\\r\\n\\r\\n2)\\r\\n\\r\\nFix the documentation stating that the parameter type is only required for creating connections. This also caused the dns example to fail.\\r\\n\\r\\nRelated to https://github.com/ansible/ansible-modules-extras/issues/1843\\r\\n\\r\\n3)\\r\\n\\r\\nFix broken indentation in multiple sections of the example playbook that caused it not to parse.\\r\\n\\r\\n\\r\\n\\r\\n##### Errors with original\\r\\n\\r\\n`type=ethernet` missing when trying to modify a connection (e.g. set dns)\\r\\n```\\r\\nTASK [nmcli] *******************************************************************\\r\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: IndexError: list index out of range\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"cmd\\\": \\\"\\\", \\\"failed\\\": true, \\\"msg\\\": \\\"list index out of range\\\", \\\"rc\\\": 257}\\r\\n        to retry, use: --limit @/root/test1.retry\\r\\n```\\r\\n\\r\\ninvalid dns4 parameter format:\\r\\n```\\r\\nERROR! this task 'nmcli' has extra params, which is only allowed in the following modules: command, win_command, shell, win_shell, script, include, include_vars, add_host, group_by, set_fact, raw, meta\\r\\n\\r\\n```\\r\\n\\r\\nand\\r\\n\\r\\n```\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Error: failed to modify ipv4.dns: invalid IPv4 address '['8.8.8.8''.\\\\n\\\", \\\"name\\\": \\\"eth0\\\", \\\"rc\\\": 2}\\r\\n```\\r\\n\\r\\nBroken indentation:\\r\\n\\r\\n```\\r\\nERROR! Syntax Error while loading YAML.\\r\\n\\r\\nThe error appears to have been in '/root/nmcli-add.yml': line 45, column 2, but may\\r\\nbe elsewhere in the file depending on the exact syntax problem.\\r\\n\\r\\nThe offending line appears to be:\\r\\n - name: try nmcli add bond - conn_name only & ip4 gw4 mode\\r\\n ^ here\\r\\n```\", \n    \"component_name\": \"nmcli\", \n    \"component_raw\": \"nmcli\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20203\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"docs\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nmcli.py\", \n    \"summary\": \"1)\\n\\n\\n\\nFix dns\", \n    \"title\": \"Correct nmcli dns example and documentation. Fix example indent\"\n  }, \n  \"20206\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"Simple change to avoid resource param override when using conn_type == 'both'\\r\\nin line 116 of lib/ansible/module_utils/ec2.py\\r\\ndef _boto3_conn(conn_type=None, resource=None, region=None, endpoint=None, **params)\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nlib/ansible/module_utils/ec2.py \\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nsimply swap the order of execution so that resource is last when conn_type='both'\\r\\nthis change avoids the function param variable from being overwritten by the boto3 resource result.\\r\\n\\r\\nissue before change:\\r\\n```\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Connection Error - Unknown service: 'ec2()'. Valid service names are: acm, apigateway, application-autoscaling, autoscaling, budgets, cloudformation, cloudfront, cloudhsm, cloudsearch, cloudsearchdomain, cloudtrail, cloudwatch, codecommit, codedeploy, codepipeline, cognito-identity, cognito-idp, cognito-sync, config, datapipeline, devicefarm, directconnect, discovery, dms, ds, dynamodb, dynamodbstreams, ec2, ecr, ecs, efs, elasticache, elasticbeanstalk, elastictranscoder, elb, elbv2, emr, es, events, firehose, gamelift, glacier, iam, importexport, inspector, iot, iot-data, kinesis, kinesisanalytics, kms, lambda, logs, machinelearning, marketplacecommerceanalytics, meteringmarketplace, opsworks, rds, redshift, route53, route53domains, s3, sdb, servicecatalog, ses, sms, snowball, sns, sqs, ssm, storagegateway, sts, support, swf, waf, workspaces\\\"}\\r\\n```\", \n    \"component_name\": \"lib/ansible/module_utils/ec2.py\", \n    \"component_raw\": \"lib/ansible/module_utils/ec2.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20206\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"cloud\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"simply swap the order of execution so that resource is last when conn_type='both'\\n\\nthis change avoids the function param variable from being overwritten by the boto3 resource result.\\n\\n\\n\\nissue before change:\\n\\n```\\n\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Connection Error - Unknown service: 'ec2()'. Valid service names are: acm, apigateway, application-autoscaling, autoscaling, budgets, cloudformation, cloudfront, cloudhsm, cloudsearch, cloudsearchdomain, cloudtrail, cloudwatch, codecommit, codedeploy, codepipeline, cognito-identity, cognito-idp, cognito-sync, config, datapipeline, devicefarm, directconnect, discovery, dms, ds, dynamodb, dynamodbstreams, ec2, ecr, ecs, efs, elasticache, elasticbeanstalk, elastictranscoder, elb, elbv2, emr, es, events, firehose, gamelift, glacier, iam, importexport, inspector, iot, iot-data, kinesis, kinesisanalytics, kms, lambda, logs, machinelearning, marketplacecommerceanalytics, meteringmarketplace, opsworks, rds, redshift, route53, route53domains, s3, sdb, servicecatalog, ses, sms, snowball, sns, sqs, ssm, storagegateway, sts, support, swf, waf, workspaces\\\"}\\n\\n```\", \n    \"title\": \"resource overriden when conn_type='both'\"\n  }, \n  \"20207\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\njenkins_script\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAllows module to work if 'Cross Site Request Forgery' is enabled in Jenkins.\", \n    \"component_name\": \"jenkins_script\", \n    \"component_raw\": \"jenkins_script\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20207\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"core_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/web_infrastructure/jenkins_script.py\", \n    \"summary\": \"Allows module to work if 'Cross Site Request Forgery' is enabled in Jenkins.\", \n    \"title\": \"Add crumb support to jenkins_script module\"\n  }, \n  \"20208\": {\n    \"ansible_version\": \"ansible 2.3.0 (network-ci 0028198645) last updated 2017/01/12 172934 (GMT -700)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\nFeature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nTests\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 (network-ci 0028198645) last updated 2017/01/12 17:29:34 (GMT -700)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nEnable first network tests on Shippable.\", \n    \"component_name\": \"tests\", \n    \"component_raw\": \"Tests\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20208\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"needs_revision\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Enable first network tests on Shippable.\", \n    \"title\": \"Enable first network tests on Shippable.\"\n  }, \n  \"20209\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"The docker module has been deprecated, so the example should be\\r\\nupdated to use the newer docker_container module.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndocker\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThe docker module has been deprecated, so the example should be updated\\r\\nto use the newer docker_container module.\\r\\n\", \n    \"component_name\": \"docker\", \n    \"component_raw\": \"docker\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20209\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The docker module has been deprecated, so the example should be updated\\n\\nto use the newer docker_container module.\", \n    \"title\": \"Update docker example on Inventory page\"\n  }, \n  \"20213\": {\n    \"ansible_version\": \"ansible 2.2.0 (devel f39ad1f13a) last updated 2016/05/01 140136 (GMT +1000)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [/usr/share/ansible]\", \n    \"body\": \"##### ISSUE TYPE\\n- New Module Pull Request\\n##### COMPONENT NAME\\n\\nec2_vpc_igw_facts\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0 (devel f39ad1f13a) last updated 2016/05/01 14:01:36 (GMT +1000)\\n  config file = /etc/ansible/ansible.cfg\\n  configured module search path = ['/usr/share/ansible']\\n\\n```\\n##### SUMMARY\\n\\nThis module returns internet gateway facts for an AWS account.\\n\\n```\\nTASK [print output] ************************************************************\\nok: [localhost] => {\\n    \\\"msg\\\": {\\n        \\\"changed\\\": false, \\n        \\\"internet_gateways\\\": [\\n            {\\n                \\\"attachments\\\": [\\n                    {\\n                        \\\"state\\\": \\\"available\\\", \\n                        \\\"vpc_id\\\": \\\"vpc-02642b23\\\"\\n                    }\\n                ], \\n                \\\"internet_gateway_id\\\": \\\"igw-12e3645d\\\", \\n                \\\"tags\\\": [\\n                    {\\n                        \\\"key\\\": \\\"Name\\\", \\n                        \\\"value\\\": \\\"igw-test\\\"\\n                    }\\n                ]\\n            }\\n        ]\\n    }\\n}\\n```\\n\", \n    \"component_name\": \"ec2_vpc_igw_facts\", \n    \"component_raw\": \"ec2_vpc_igw_facts\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20213\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_vpc_igw_facts.py\", \n    \"summary\": \"This module returns internet gateway facts for an AWS account.\\n\\n```\\nTASK [print output] ************************************************************\\nok: [localhost] => {\\n    \\\"msg\\\": {\\n        \\\"changed\\\": false, \\n        \\\"internet_gateways\\\": [\\n            {\\n                \\\"attachments\\\": [\\n                    {\\n                        \\\"state\\\": \\\"available\\\", \\n                        \\\"vpc_id\\\": \\\"vpc-02642b23\\\"\\n                    }\\n                ], \\n                \\\"internet_gateway_id\\\": \\\"igw-12e3645d\\\", \\n                \\\"tags\\\": [\\n                    {\\n                        \\\"key\\\": \\\"Name\\\", \\n                        \\\"value\\\": \\\"igw-test\\\"\\n                    }\\n                ]\\n            }\\n        ]\\n    }\\n}\\n```\", \n    \"title\": \"New AWS module for ec2 internet gateway facts\"\n  }, \n  \"20215\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nlib/ansible/modules/system/known_host.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\ndevel\\r\\n```\\r\\n\", \n    \"component_name\": \"lib/ansible/ s/system/known_host.py\", \n    \"component_raw\": \"lib/ansible/modules/system/known_host.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20215\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"community_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/known_hosts.py\", \n    \"summary\": null, \n    \"title\": \"Removal wildcard import and unnecessary exception retrieval\"\n  }, \n  \"20220\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.3.0 (devel cba66dfedc)\", \n    \"body\": \"\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nbasic\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible --version\\r\\nansible 2.3.0 (devel cba66dfedc)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\nAdd logical 'or' condition support in 'required_if'\\r\\nfor requirements.\\r\\n* If requirements is a list all parameters within it should\\r\\n  be present.\\r\\n* If requirements is a tuple atleast one parameter should\\r\\n  be present\\r\\n```\\r\\n\", \n    \"component_name\": \"basic\", \n    \"component_raw\": \"basic\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20220\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"c:module_utils/basic\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"```\\n\\nAdd logical 'or' condition support in 'required_if'\\n\\nfor requirements.\\n\\n* If requirements is a list all parameters within it should\\n\\n  be present.\\n\\n* If requirements is a tuple atleast one parameter should\\n\\n  be present\\n\\n```\", \n    \"title\": \"module_utils/basic.py: Support logical or condition in required_if\"\n  }, \n  \"20221\": {\n    \"ansible_version\": \"\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvyos_*\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n##### SUMMARY\\r\\nThe previous detection mechanism wasn't working on 1.0.5\\r\\n\\r\\nVyOS 1.0.5\\r\\n```\\r\\ncat /proc/version\\r\\nLinux version 3.3.8-1-amd64-vyatta (dmbaturin@squeeze64devel) (gcc version 4.4.5 (Debian 4.4.5-8) ) #1 SMP Wed Oct 30 22:54:40 CET 2013\\r\\n```\\r\\nNotice no `vyos` in the output\\r\\n\\r\\n\\r\\nThe following is consistent on 1.0.5 and 1.1.0, and feels like a cleaner check\\r\\n```\\r\\ncat /etc/issue\\r\\nWelcome to VyOS - \\\\n \\\\l\\r\\n```\\r\\n\\r\\n<!-- Reviewable:start -->\\r\\n---\\r\\nThis change is\\u2002[<img src=\\\"https://reviewable.io/review_button.svg\\\" height=\\\"34\\\" align=\\\"absmiddle\\\" alt=\\\"Reviewable\\\"/>](https://reviewable.io/reviews/ansible/ansible/20221)\\r\\n<!-- Reviewable:end -->\\r\\n\", \n    \"component_name\": \"vyos_\", \n    \"component_raw\": \"vyos_*\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20221\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:plugins/terminal\", \n      \"needs_revision\", \n      \"networking\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The previous detection mechanism wasn't working on 1.0.5\\n\\n\\n\\nVyOS 1.0.5\\n\\n```\\n\\ncat /proc/version\\n\\nLinux version 3.3.8-1-amd64-vyatta (dmbaturin@squeeze64devel) (gcc version 4.4.5 (Debian 4.4.5-8) ) #1 SMP Wed Oct 30 22:54:40 CET 2013\\n\\n```\\n\\nNotice no `vyos` in the output\\n\\n\\n\\n\\n\\nThe following is consistent on 1.0.5 and 1.1.0, and feels like a cleaner check\\n\\n```\\n\\ncat /etc/issue\\n\\nWelcome to VyOS - \\\\n \\\\l\\n\\n```\\n\\n\\n\\n\\n\\n---\\n\\nThis change is[<img src=\\\"https://reviewable.io/review_button.svg\\\" height=\\\"34\\\" align=\\\"absmiddle\\\" alt=\\\"Reviewable\\\"/>](https://reviewable.io/reviews/ansible/ansible/20221)\", \n    \"title\": \"Detect VyOS based on /etc/issue (support 1.0.5)\"\n  }, \n  \"20222\": {\n    \"ansible_version\": \"ansible 2.3.0 (timezone c2b2ea7279) last updated 2017/01/13 131058 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n`timezone` module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (timezone c2b2ea7279) last updated 2017/01/13 13:10:58 (GMT +200)\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nAs discussed [here](https://github.com/ansible/community/issues/148#issuecomment-271920069) and in `#ansible-meeting`, here is an attempt to extend the existing timezone module with support for non-Linux platforms. I was initially hesitant towards extending this module as it provides a much larger framework than what is needed on most non-Linux systems. Therefore I created a separate `smartos_timezone` module (https://github.com/ansible/ansible/pull/20105), however that would open the floodgates for `openbsd_timezone`, `systemdujour_timezone`...\\r\\n\\r\\nThis PR implements a `OpenBSDTimezone` class, however it could be renamed to `Generic` when it becomes clear the approach in that class works on generic Unices. However due to lack of testing/access to other systems I simply named it after OpenBSD. It should be trivial to extend when needed.\", \n    \"component_name\": \"timezone\", \n    \"component_raw\": \"`timezone` module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20222\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"committer_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/timezone.py\", \n    \"summary\": \"As discussed [here](https://github.com/ansible/community/issues/148#issuecomment-271920069) and in `#ansible-meeting`, here is an attempt to extend the existing timezone module with support for non-Linux platforms. I was initially hesitant towards extending this module as it provides a much larger framework than what is needed on most non-Linux systems. Therefore I created a separate `smartos_timezone` module (https://github.com/ansible/ansible/pull/20105), however that would open the floodgates for `openbsd_timezone`, `systemdujour_timezone`...\\n\\n\\n\\nThis PR implements a `OpenBSDTimezone` class, however it could be renamed to `Generic` when it becomes clear the approach in that class works on generic Unices. However due to lack of testing/access to other systems I simply named it after OpenBSD. It should be trivial to extend when needed.\", \n    \"title\": \"Add support for OpenBSD and SmartOS to timezone module\"\n  }, \n  \"20223\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nsynchronize\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\ndevel\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nYou can't use synchronize module over docker connection. Added a note to the documentation about it.\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\nsynchronize uses rsync to function. rsync needs to connect to the remote host via ssh or a direct filesystem copy. This remote host is being accessed via docker instead so it cannot work.\\r\\n```\\r\\n\", \n    \"component_name\": \"synchronize\", \n    \"component_raw\": \"synchronize\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20223\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"core_review\", \n      \"docs\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/synchronize.py\", \n    \"summary\": \"You can't use synchronize module over docker connection. Added a note to the documentation about it.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\nsynchronize uses rsync to function. rsync needs to connect to the remote host via ssh or a direct filesystem copy. This remote host is being accessed via docker instead so it cannot work.\\n\\n```\", \n    \"title\": \"Cannot use synchronize with docker, add a note to documentation\"\n  }, \n  \"20224\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.1.0\\n$ rpm -qa ansible\\nansible-2.2.1.0-0.4.rc4.el6.noarch\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncore\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.1.0\\r\\n$ rpm -qa ansible\\r\\nansible-2.2.1.0-0.4.rc4.el6.noarch\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nDefault config (all options commented out)\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nRHEL6, but really N/A\\r\\n\\r\\n##### SUMMARY\\r\\nIn a role in the tasks/main.yml, a block is run with a rescue: at the end. The rescue is triggered. Afterwards and include to a .yml file is done.\\r\\nThis include is omitted! In 2.2.0.0 it is not (as expected) and in 2.2.1.0RC4 it is. Same issue also in RC3.\\r\\n!This issue prevents from recovering from CVE-2016-9587!\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nSee above\\r\\n\\r\\n```yaml\\r\\n---\\r\\n- block:\\r\\n  - name: Block test\\r\\n    debug: msg=\\\"Normal block\\\"\\r\\n    failed_when: True\\r\\n  rescue:\\r\\n    - name: Rescue test\\r\\n      debug: msg=\\\"Rescued\\\"\\r\\n\\r\\n- include: test.yml\\r\\n...\\r\\n---\\r\\n- name: \\\"Include test\\\"\\r\\n  debug: msg=\\\"Included task\\\"\\r\\n...\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n```\\r\\nPLAY [all] *********************************************************************\\r\\nTASK [test : Block test] *******************************************************\\r\\nfatal: [hostxxxx]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"failed_when_result\\\": true, \\r\\n    \\\"msg\\\": \\\"Normal block\\\"\\r\\n}\\r\\nTASK [test : Rescue test] ******************************************************\\r\\nok: [hostxxxx] => {\\r\\n    \\\"msg\\\": \\\"Rescued\\\"\\r\\n}\\r\\nTASK [test : Include test] *****************************************************\\r\\nok: [hostxxxx] => {\\r\\n    \\\"msg\\\": \\\"Included task\\\"\\r\\n}\\r\\nPLAY RECAP *********************************************************************\\r\\nhostxxxx                   : ok=2    changed=0    unreachable=0    failed=0\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nPLAY [all] *********************************************************************\\r\\nTASK [test : Block test] *******************************************************\\r\\nfatal: [hostxxxx]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"failed_when_result\\\": true, \\r\\n    \\\"msg\\\": \\\"Normal block\\\"\\r\\n}\\r\\nTASK [test : Rescue test] ******************************************************\\r\\nok: [hostxxxx] => {\\r\\n    \\\"msg\\\": \\\"Rescued\\\"\\r\\n}\\r\\nPLAY RECAP *********************************************************************\\r\\nhostxxxx                   : ok=1    changed=0    unreachable=0    failed=1 \\r\\n```\\r\\n\", \n    \"component_name\": \"core\", \n    \"component_raw\": \"core\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20224\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"In a role in the tasks/main.yml, a block is run with a rescue: at the end. The rescue is triggered. Afterwards and include to a .yml file is done.\\n\\nThis include is omitted! In 2.2.0.0 it is not (as expected) and in 2.2.1.0RC4 it is. Same issue also in RC3.\\n\\n!This issue prevents from recovering from CVE-2016-9587!\", \n    \"title\": \"Include skipped after rescue in 2.2.1 RC3 & RC4\"\n  }, \n  \"20225\": {\n    \"ansible_version\": \"ansible 2.2.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\n\\r\\nThe `setup` module.\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\nDefault configuration.\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\nUbuntu 16.04, `/proc` mounted with `hidepid=2`, user account used by Ansible cannot read `/proc` entries other than their own.\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\nThe `setup` module fails when it cannot read `/proc` to find out what service manager is installed on the system.  The error appears to be introduced after https://github.com/ansible/ansible/commit/cfbb58adaeb3a7814667dbdc18272bffff5f8ef8 was cherry-picked to `stable-2.2` branch. The `devel` branch seems to be unaffected.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\nMake sure that your `/proc` is mounted with at least `hidepid=1` and the user used by Ansible cannot read `/proc` entries not owned by it. Make sure that Ansible does not use `sudo` by default.\\r\\n\\r\\nExecute command `ansible <hostname> -m setup`\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nThe `setup` module returns host facts.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nfatal: [hostname]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"Shared connection to fileshare.deb8.gumed.edu.pl closed.\\\\r\\\\n\\\", \\\"module_stdout\\\": \\\"Traceback (most recent call last):\\\\r\\\\n  File \\\\\\\"/tmp/ansible_70AFmc/ansible_module_setup.py\\\\\\\", line 134, in <module>\\\\r\\\\n    main()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_70AFmc/ansible_module_setup.py\\\\\\\", line 126, in main\\\\r\\\\n    data = get_all_facts(module)\\\\r\\\\n  File \\\\\\\"/tmp/ansible_70AFmc/ansible_modlib.zip/ansible/module_utils/facts.py\\\\\\\", line 3518, in get_all_facts\\\\r\\\\n  File \\\\\\\"/tmp/ansible_70AFmc/ansible_modlib.zip/ansible/module_utils/facts.py\\\\\\\", line 3457, in ansible_facts\\\\r\\\\n  File \\\\\\\"/tmp/ansible_70AFmc/ansible_modlib.zip/ansible/module_utils/facts.py\\\\\\\", line 168, in __init__\\\\r\\\\n  File \\\\\\\"/tmp/ansible_70AFmc/ansible_modlib.zip/ansible/module_utils/facts.py\\\\\\\", line 339, in get_service_mgr_facts\\\\r\\\\nAttributeError: 'NoneType' object has no attribute 'endswith'\\\\r\\\\n\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"the setup  .\", \n    \"component_raw\": \"The `setup` module.\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20225\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/setup.py\", \n    \"summary\": \"The `setup` module fails when it cannot read `/proc` to find out what service manager is installed on the system.  The error appears to be introduced after https://github.com/ansible/ansible/commit/cfbb58adaeb3a7814667dbdc18272bffff5f8ef8 was cherry-picked to `stable-2.2` branch. The `devel` branch seems to be unaffected.\", \n    \"title\": \"On Ansible stable-2.2 setup module fails with /proc mounted with hidepid=2\"\n  }, \n  \"20226\": {\n    \"ansible_version\": \"ansible 2.1.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ntask\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.3.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nCurrent `until/retries/delay` implementation does only allow constant delay in second which not quite a smart way for retrying. \\r\\n\\r\\nWe should be able to increase the delay between retries at each new retry, something like https://en.wikipedia.org/wiki/Exponential_backoff \", \n    \"component_name\": \"task\", \n    \"component_raw\": \"task\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20226\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"c:playbook/task\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Current `until/retries/delay` implementation does only allow constant delay in second which not quite a smart way for retrying. \\n\\n\\n\\nWe should be able to increase the delay between retries at each new retry, something like https://en.wikipedia.org/wiki/Exponential_backoff\", \n    \"title\": \"retries/until loops do not support exponential backoff or similar slowdowns\"\n  }, \n  \"20227\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnxos_portchannel\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nCreating port-channel on NX9k. On a first run module reports problem. Re-running the same playbook reports that state is OK.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- name: Remove Port-Channels before configuring\\r\\n  nxos_interface:\\r\\n    interface: Port-Channel1001\\r\\n    state: absent\\r\\n    provider: \\\"{{ con_details }}\\\"\\r\\n\\r\\n- name: Default physical interfaces\\r\\n  nxos_interface:\\r\\n    interface: Ethernet1/1 \\r\\n    provider: \\\"{{ con_details }}\\\"\\r\\n    state: default\\r\\n\\r\\n- name: Create Port-Channels interfaces and add members\\r\\n  nxos_portchannel:\\r\\n    group: 1001\\r\\n    members: [ 'Ethernet1/1' ]\\r\\n    mode: active\\r\\n    state: present\\r\\n    force: True\\r\\n    provider: \\\"{{ con_details }}\\\"\\r\\n```\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nPort-channel created and physical interfaces added into it.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nFirst run:\\r\\n```\\r\\nTASK [vpc-portchannels : Create Port-Channels interfaces and add members] ******\\r\\ntask path: /Users/ansible_playbooks/config_based/roles/vpc-portchannels/tasks/main.yml:17\\r\\nUsing module file /Library/Python/2.7/site-packages/ansible/modules/core/network/nxos/nxos_portchannel.py\\r\\n<10.56.140.14> ESTABLISH LOCAL CONNECTION FOR USER: xxx\\r\\n<10.56.140.14> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484314420.95-18641140723550 `\\\" && echo ansible-tmp-1484314420.95-18641140723550=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484314420.95-18641140723550 `\\\" ) && sleep 0'\\r\\n<10.56.140.14> PUT /var/folders/pz/zc91xtc54w99yt0h33t6gq9m0000gp/T/tmpbDMGR1 TO /Users/.ansible/tmp/ansible-tmp-1484314420.95-18641140723550/nxos_portchannel.py\\r\\n<10.56.140.14> EXEC /bin/sh -c 'chmod u+x /Users/.ansible/tmp/ansible-tmp-1484314420.95-18641140723550/ /Users/.ansible/tmp/ansible-tmp-1484314420.95-18641140723550/nxos_portchannel.py && sleep 0'\\r\\n<10.56.140.14> EXEC /bin/sh -c '/usr/bin/python /Users/.ansible/tmp/ansible-tmp-1484314420.95-18641140723550/nxos_portchannel.py; rm -rf \\\"/Users/.ansible/tmp/ansible-tmp-1484314420.95-18641140723550/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/var/folders/pz/zc91xtc54w99yt0h33t6gq9m0000gp/T/ansible_5SaUA5/ansible_module_nxos_portchannel.py\\\", line 738, in <module>\\r\\n    main()\\r\\n  File \\\"/var/folders/pz/zc91xtc54w99yt0h33t6gq9m0000gp/T/ansible_5SaUA5/ansible_module_nxos_portchannel.py\\\", line 720, in main\\r\\n    output = execute_config_command(cmds, module)\\r\\n  File \\\"/var/folders/pz/zc91xtc54w99yt0h33t6gq9m0000gp/T/ansible_5SaUA5/ansible_module_nxos_portchannel.py\\\", line 339, in execute_config_command\\r\\n    return output\\r\\nUnboundLocalError: local variable 'output' referenced before assignment\\r\\n\\r\\nfatal: [10.56.140.14]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"nxos_portchannel\\\"\\r\\n    }, \\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/var/folders/pz/zc91xtc54w99yt0h33t6gq9m0000gp/T/ansible_5SaUA5/ansible_module_nxos_portchannel.py\\\\\\\", line 738, in <module>\\\\n    main()\\\\n  File \\\\\\\"/var/folders/pz/zc91xtc54w99yt0h33t6gq9m0000gp/T/ansible_5SaUA5/ansible_module_nxos_portchannel.py\\\\\\\", line 720, in main\\\\n    output = execute_config_command(cmds, module)\\\\n  File \\\\\\\"/var/folders/pz/zc91xtc54w99yt0h33t6gq9m0000gp/T/ansible_5SaUA5/ansible_module_nxos_portchannel.py\\\\\\\", line 339, in execute_config_command\\\\n    return output\\\\nUnboundLocalError: local variable 'output' referenced before assignment\\\\n\\\", \\r\\n    \\\"module_stdout\\\": \\\"\\\", \\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n```\\r\\n\\r\\nSecond run without first two tasks:\\r\\n```\\r\\nUsing module file /Library/Python/2.7/site-packages/ansible/modules/core/network/nxos/nxos_portchannel.py\\r\\n<10.56.140.14> ESTABLISH LOCAL CONNECTION FOR USER:\\r\\n<10.56.140.14> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484314505.88-8934287404876 `\\\" && echo ansible-tmp-1484314505.88-8934287404876=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484314505.88-8934287404876 `\\\" ) && sleep 0'\\r\\n<10.56.140.14> PUT /var/folders/pz/zc91xtc54w99yt0h33t6gq9m0000gp/T/tmpKBTRry TO /Users/.ansible/tmp/ansible-tmp-1484314505.88-8934287404876/nxos_portchannel.py\\r\\n<10.56.140.14> EXEC /bin/sh -c 'chmod u+x /Users/.ansible/tmp/ansible-tmp-1484314505.88-8934287404876/ /Users/.ansible/tmp/ansible-tmp-1484314505.88-8934287404876/nxos_portchannel.py && sleep 0'\\r\\n<10.56.140.14> EXEC /bin/sh -c '/usr/bin/python /Users/.ansible/tmp/ansible-tmp-1484314505.88-8934287404876/nxos_portchannel.py; rm -rf \\\"/Users/.ansible/tmp/ansible-tmp-1484314505.88-8934287404876/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nok: [10.56.140.14] => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"end_state\\\": {\\r\\n        \\\"group\\\": \\\"1001\\\", \\r\\n        \\\"members\\\": [\\r\\n            \\\"Ethernet1/1\\\"\\r\\n        ], \\r\\n        \\\"members_detail\\\": {\\r\\n            \\\"Ethernet1/1\\\": {\\r\\n                \\\"mode\\\": \\\"active\\\", \\r\\n                \\\"status\\\": \\\"s\\\"\\r\\n            }\\r\\n        }, \\r\\n        \\\"min_links\\\": \\\"1\\\", \\r\\n        \\\"mode\\\": \\\"active\\\"\\r\\n    }, \\r\\n    \\\"existing\\\": {\\r\\n        \\\"group\\\": \\\"1001\\\", \\r\\n        \\\"members\\\": [\\r\\n            \\\"Ethernet1/1\\\"\\r\\n        ], \\r\\n        \\\"members_detail\\\": {\\r\\n            \\\"Ethernet1/1\\\": {\\r\\n                \\\"mode\\\": \\\"active\\\", \\r\\n                \\\"status\\\": \\\"s\\\"\\r\\n            }\\r\\n        }, \\r\\n        \\\"min_links\\\": \\\"1\\\", \\r\\n        \\\"mode\\\": \\\"active\\\"\\r\\n    }, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"auth_pass\\\": null, \\r\\n            \\\"authorize\\\": false, \\r\\n            \\\"config\\\": null, \\r\\n            \\\"force\\\": \\\"true\\\", \\r\\n            \\\"group\\\": \\\"1001\\\", \\r\\n            \\\"host\\\": \\\"10.56.140.14\\\", \\r\\n            \\\"include_defaults\\\": \\\"False\\\", \\r\\n            \\\"members\\\": [\\r\\n                \\\"Ethernet1/1\\\"\\r\\n            ], \\r\\n            \\\"min_links\\\": null, \\r\\n            \\\"mode\\\": \\\"active\\\", \\r\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n            \\\"port\\\": null, \\r\\n            \\\"provider\\\": {\\r\\n                \\\"host\\\": \\\"10.56.140.14\\\", \\r\\n                \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n                \\\"transport\\\": \\\"cli\\\", \\r\\n                \\\"username\\\": \\\"admin\\\"\\r\\n            }, \\r\\n            \\\"save\\\": false, \\r\\n            \\\"ssh_keyfile\\\": null, \\r\\n            \\\"state\\\": \\\"present\\\", \\r\\n            \\\"timeout\\\": 10, \\r\\n            \\\"transport\\\": \\\"cli\\\", \\r\\n            \\\"use_ssl\\\": false, \\r\\n            \\\"username\\\": \\\"admin\\\", \\r\\n            \\\"validate_certs\\\": true\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"nxos_portchannel\\\"\\r\\n    }, \\r\\n    \\\"proposed\\\": {\\r\\n        \\\"group\\\": \\\"1001\\\", \\r\\n        \\\"members\\\": [\\r\\n            \\\"Ethernet1/1\\\"\\r\\n        ], \\r\\n        \\\"mode\\\": \\\"active\\\"\\r\\n    }, \\r\\n    \\\"updates\\\": []\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\n10.56.140.14               : ok=1    changed=0    unreachable=0    failed=0   \\r\\n```\", \n    \"component_name\": \"nxos_portchannel\", \n    \"component_raw\": \"nxos_portchannel\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20227\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nxos/nxos_portchannel.py\", \n    \"summary\": \"Creating port-channel on NX9k. On a first run module reports problem. Re-running the same playbook reports that state is OK.\", \n    \"title\": \"nxos_portchannel Creation fails during first run\"\n  }, \n  \"20228\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nsystemd module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nDebian Jessie\\r\\n\\r\\n##### SUMMARY\\r\\nWhen setting enabled=yes or enabled=no, the systemd module, in order to check if an update is required, also check the status of legacy initscripts unit:\\r\\n\\r\\n```\\r\\n            initscript = '/etc/init.d/' + unit\\r\\n            if os.path.exists(initscript) and os.access(initscript, os.X_OK) and \\\\\\r\\n               (not out.startswith('disabled') or bool(glob.glob('/etc/rc?.d/S??' + unit))):\\r\\n                enabled = True\\r\\n```\\r\\n\\r\\nThis prevent any user unit having the same name than an enabled system unit to be enabled (it will be considered as enabled even if it is not, and ansible will do nothing and report the task as unchanged).\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n1. Install and enable nginx, system-wide (after this there will be /etc/rc2.d/S02nginx  /etc/rc3.d/S02nginx  /etc/rc4.d/S02nginx  /etc/rc5.d/S02nginx files present in the system, at least under Debian)\\r\\n\\r\\n2. Create a nginx user unit (in /etc/systemd/user/nginx.service): \\r\\n\\r\\n```\\r\\n[Unit]\\r\\nDescription=A high performance web server and a reverse proxy server\\r\\nAfter=network.target\\r\\n\\r\\n[Service]\\r\\nType=simple\\r\\nExecStartPre=/bin/sh -c \\\"exec /usr/sbin/nginx -c $$HOME/conf/nginx/nginx.conf -t -q\\\"\\r\\nExecStart=/bin/sh -c \\\"exec /usr/sbin/nginx -c $$HOME/conf/nginx/nginx.conf\\\"\\r\\nExecReload=/bin/sh -c \\\"exec /usr/sbin/nginx -c $$HOME/conf/nginx/nginx.conf -s reload\\\"\\r\\n\\r\\n[Install]\\r\\nWantedBy=default.target\\r\\n```\\r\\n\\r\\n3. Check that the user unit is not enabled : `systemctl --user is-enabled nginx` should return `disabled`\\r\\n\\r\\n4. Try to enable the user unit using ansible : `ansible 'localhost' -u $USER -m systemd -a \\\"user=yes enabled=yes name=nginx\\\"`\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nExpected result is to have ansible report a change, and `systemctl --user is-enabled nginx` to return `enabled`\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nansible report unchaned, and the user unit is still disabled (`systemctl --user is-enabled nginx` still returns `disabled`)\", \n    \"component_name\": \"systemd\", \n    \"component_raw\": \"systemd module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20228\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/systemd.py\", \n    \"summary\": \"When setting enabled=yes or enabled=no, the systemd module, in order to check if an update is required, also check the status of legacy initscripts unit:\\n\\n\\n\\n```\\n\\n            initscript = '/etc/init.d/' + unit\\n\\n            if os.path.exists(initscript) and os.access(initscript, os.X_OK) and \\\\\\n\\n               (not out.startswith('disabled') or bool(glob.glob('/etc/rc?.d/S??' + unit))):\\n\\n                enabled = True\\n\\n```\\n\\n\\n\\nThis prevent any user unit having the same name than an enabled system unit to be enabled (it will be considered as enabled even if it is not, and ansible will do nothing and report the task as unchanged).\", \n    \"title\": \"systemd module: should not check initscript status when user=yes\"\n  }, \n  \"20229\": {\n    \"ansible_version\": \"ansible 2.3.0 (user_13305 122799c95c) last updated 2017/01/13 154526 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\n\\r\\n`user` module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (user_13305 122799c95c) last updated 2017/01/13 15:45:26 (GMT +200)\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThis is a possible way to address #13305. We could list all the required tools per platform, however that list is likely to get outdated again, just like `requirements` did.\", \n    \"component_name\": \"user\", \n    \"component_raw\": \"`user` module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20229\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"core_review\", \n      \"docs\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/user.py\", \n    \"summary\": \"This is a possible way to address #13305. We could list all the required tools per platform, however that list is likely to get outdated again, just like `requirements` did.\", \n    \"title\": \"Remove outdated 'user' requirements and add a note trying to reflect reality.\"\n  }, \n  \"20230\": {\n    \"ansible_version\": \"ansible 2.3.0 (api-gateway-module 807194a8c0) last updated 2017/01/13 144730 (GMT +100)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [u/home/mikedd/dev/ansible/ansible-add-modules/library]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nlib/ansible/modules/cloud/amazon/api_gateway.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (api-gateway-module 807194a8c0) last updated 2017/01/13 14:47:30 (GMT +100)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = [u'/home/mikedd/dev/ansible/ansible-add-modules/library']\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nThis is a very early stage module designed to allow deployment of complete APIs to AWS API Gateway from swagger YAML/JSON files.  This is beneficial over deploying APIs from e.g. serverless since it allows different parts of the API to be served from different sources, e.g. standard servers / other API providers / proxy etc.  \\r\\n\\r\\nI'm releasing it now since I want to get feedback of the approach and in particular advice about how to put test cases related to this into Ansible.  How does the continuous integration test against AWS???\\r\\n\\r\\nSome design decisions:\\r\\nUse boto3  - because that's needed to support relevant new features and is already required e.g. by the lambda module. \\r\\n\\r\\nUpdate of API, not creation - I think I will make a lower level separate module which will be able to create APIs.  However normally when we are putting a definition up we need to know what URL it's  referenced at and so we need an already existing API definition\\r\\n\\r\\nAPI Name comes from YAML file - not defined in Ansilble - API name is just a lablel - not user visible and can be duplicated, so we just work as AWS does. \\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n$ ansible localhost -m api_gateway  -a 'api_id=1eid24h00c api_file=api-with-auth-and-reauth.yml region=us-east-1 stage=new'\\r\\nlocalhost | FAILED! => {\\r\\n    \\\"failed\\\": true, \\r\\n    \\\"msg\\\": \\\"ERROR! The module api_gateway was not found in configured module paths. Additionally, core modules are missing. If this is a checkout, run 'git submodule update --init --recursive' to correct this problem.\\\"\\r\\n}\\r\\n\\r\\nansible localhost -m api_gateway  -a 'api_id=1eid24h00c api_file=api-with-auth-and-reauth.yml region=us-east-1 stage=new'\\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n\\r\\nlocalhost | SUCCESS => {\\r\\n    \\\"changed\\\": true, \\r\\n    \\\"created_date\\\": \\\"2017-01-13T15:08:13+00:00\\\", \\r\\n    \\\"description\\\": \\\"Automatic deployment.\\\", \\r\\n    \\\"id\\\": \\\"j48lbc\\\", \\r\\n    \\\"response_metadata\\\": {\\r\\n        \\\"http_headers\\\": {\\r\\n            \\\"connection\\\": \\\"keep-alive\\\", \\r\\n            \\\"content-length\\\": \\\"79\\\", \\r\\n            \\\"content-type\\\": \\\"application/json\\\", \\r\\n            \\\"date\\\": \\\"Fri, 13 Jan 2017 15:08:13 GMT\\\", \\r\\n            \\\"x-amzn-requestid\\\": \\\"19b96b38-d9a2-11e6-aa94-5d03794d7f35\\\"\\r\\n        }, \\r\\n        \\\"http_status_code\\\": 201, \\r\\n        \\\"request_id\\\": \\\"19b96b38-d9a2-11e6-aa94-5d03794d7f35\\\", \\r\\n        \\\"retry_attempts\\\": 0\\r\\n    }\\r\\n}\\r\\n\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"lib/ansible/ s/cloud/amazon/api_gateway.py\", \n    \"component_raw\": \"lib/ansible/modules/cloud/amazon/api_gateway.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20230\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/api_gateway.py\", \n    \"summary\": \"This is a very early stage module designed to allow deployment of complete APIs to AWS API Gateway from swagger YAML/JSON files.  This is beneficial over deploying APIs from e.g. serverless since it allows different parts of the API to be served from different sources, e.g. standard servers / other API providers / proxy etc.  \\n\\n\\n\\nI'm releasing it now since I want to get feedback of the approach and in particular advice about how to put test cases related to this into Ansible.  How does the continuous integration test against AWS???\\n\\n\\n\\nSome design decisions:\\n\\nUse boto3  - because that's needed to support relevant new features and is already required e.g. by the lambda module. \\n\\n\\n\\nUpdate of API, not creation - I think I will make a lower level separate module which will be able to create APIs.  However normally when we are putting a definition up we need to know what URL it's  referenced at and so we need an already existing API definition\\n\\n\\n\\nAPI Name comes from YAML file - not defined in Ansilble - API name is just a lablel - not user visible and can be duplicated, so we just work as AWS does. \\n\\n\\n\\n\\n\\n```\\n\\n$ ansible localhost -m api_gateway  -a 'api_id=1eid24h00c api_file=api-with-auth-and-reauth.yml region=us-east-1 stage=new'\\n\\nlocalhost | FAILED! => {\\n\\n    \\\"failed\\\": true, \\n\\n    \\\"msg\\\": \\\"ERROR! The module api_gateway was not found in configured module paths. Additionally, core modules are missing. If this is a checkout, run 'git submodule update --init --recursive' to correct this problem.\\\"\\n\\n}\\n\\n\\n\\nansible localhost -m api_gateway  -a 'api_id=1eid24h00c api_file=api-with-auth-and-reauth.yml region=us-east-1 stage=new'\\n\\n [WARNING]: provided hosts list is empty, only localhost is available\\n\\n\\n\\nlocalhost | SUCCESS => {\\n\\n    \\\"changed\\\": true, \\n\\n    \\\"created_date\\\": \\\"2017-01-13T15:08:13+00:00\\\", \\n\\n    \\\"description\\\": \\\"Automatic deployment.\\\", \\n\\n    \\\"id\\\": \\\"j48lbc\\\", \\n\\n    \\\"response_metadata\\\": {\\n\\n        \\\"http_headers\\\": {\\n\\n            \\\"connection\\\": \\\"keep-alive\\\", \\n\\n            \\\"content-length\\\": \\\"79\\\", \\n\\n            \\\"content-type\\\": \\\"application/json\\\", \\n\\n            \\\"date\\\": \\\"Fri, 13 Jan 2017 15:08:13 GMT\\\", \\n\\n            \\\"x-amzn-requestid\\\": \\\"19b96b38-d9a2-11e6-aa94-5d03794d7f35\\\"\\n\\n        }, \\n\\n        \\\"http_status_code\\\": 201, \\n\\n        \\\"request_id\\\": \\\"19b96b38-d9a2-11e6-aa94-5d03794d7f35\\\", \\n\\n        \\\"retry_attempts\\\": 0\\n\\n    }\\n\\n}\\n\\n\\n\\n\\n\\n```\", \n    \"title\": \"[WIP] Api gateway module\"\n  }, \n  \"20231\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Feature Idea\\r\\n``` - Bug Report```\\r\\n\\r\\n##### COMPONENT NAME\\r\\ninclude\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n`roles_path` set to both my local directory and left as default.\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nFedora 25\\r\\n\\r\\n##### SUMMARY\\r\\nFiles present in a parent role's `tasks` directory are not found by child tasks' `include` statements.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nUnzip [ansible-test.zip](https://github.com/ansible/ansible/files/704683/ansible-test.zip) and execute `ansible-playbook test.yml`. Note that\\r\\n\\r\\n```yaml\\r\\n- include: roles/parent/tasks/parent-task.yml\\r\\n```\\r\\n\\r\\nworks, but\\r\\n\\r\\n```yaml\\r\\n- include: parent-task.yml\\r\\n```\\r\\n\\r\\nfails.\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n`parent-task.yml` should be found as if it were part of the child task that inherits from it. This would follow the [standard (single) role behaviour](https://docs.ansible.com/ansible/playbooks_roles.html#id8) where \\\"Any copy, script, template or include tasks (in the role) can reference files in roles/x/{files,templates,tasks}/ (dir depends on task) without having to path them relatively or absolutely\\\".\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\n$ ANSIBLE_NOCOWS=1 ansible-playbook test.yml -vvvv\\r\\nUsing /etc/ansible/ansible.cfg as config file\\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n\\r\\nstatically included: /home/pjanes/ansible-test/roles/parent/tasks/parent-task.yml\\r\\n[DEPRECATION WARNING]: Included file '/home/pjanes/ansible-test/parent-task.yml'\\r\\n not found, however since this include is not explicitly marked as 'static: \\r\\nyes', we will try and include it dynamically later. In the future, this will be \\r\\nan error unless 'static: no' is used on the include task. If you do not want \\r\\nmissing includes to be considered dynamic, use 'static: yes' on the include or \\r\\nset the global ansible.cfg options to make all inclues static for tasks and/or \\r\\nhandlers.\\r\\nThis feature will be removed in a future release. Deprecation warnings\\r\\n can be disabled by setting deprecation_warnings=False in ansible.cfg.\\r\\nLoading callback plugin default of type stdout, v2.0 from /usr/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc\\r\\nLoading callback plugin timestamp of type ek3, v2.0 from /usr/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc\\r\\n\\r\\nPLAYBOOK: test.yml *************************************************************\\r\\n1 plays in test.yml\\r\\n\\r\\nPLAY [localhost] ***************************************************************\\r\\nFriday 13 January 2017  10:38:41 -0500 (0:00:00.001)       0:00:00.001 ******** \\r\\n=============================================================================== \\r\\n\\r\\nTASK [child : debug] ***********************************************************\\r\\ntask path: /home/pjanes/ansible-test/roles/parent/tasks/parent-task.yml:2\\r\\nFriday 13 January 2017  10:38:41 -0500 (0:00:00.030)       0:00:00.032 ******** \\r\\nok: [localhost] => {\\r\\n    \\\"msg\\\": \\\"task from parent\\\"\\r\\n}\\r\\n\\r\\nTASK [child : include] *********************************************************\\r\\ntask path: /home/pjanes/ansible-test/roles/child/tasks/main.yml:3\\r\\nFriday 13 January 2017  10:38:41 -0500 (0:00:00.010)       0:00:00.042 ******** \\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"failed\\\": true, \\r\\n    \\\"reason\\\": \\\"the file_name '/home/pjanes/ansible-test/parent-task.yml' does not exist, or is not readable\\\"\\r\\n}\\r\\n\\tto retry, use: --limit @/home/pjanes/.ansible-retry/test.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=1   \\r\\n\\r\\nFriday 13 January 2017  10:38:41 -0500 (0:00:00.009)       0:00:00.051 ******** \\r\\n===============================================================================\\r\\n```\\r\\n\\r\\nAdding `static: yes` to avoid the warning:\\r\\n```\\r\\n$ ANSIBLE_NOCOWS=1 ansible-playbook test.yml -vvvv\\r\\nUsing /etc/ansible/ansible.cfg as config file\\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n\\r\\nstatically included: /home/pjanes/ansible-test/roles/parent/tasks/parent-task.yml\\r\\nERROR! the file_name '/home/pjanes/ansible-test/parent-task.yml' does not exist, or is not readable\\r\\n```\", \n    \"component_name\": \"include\", \n    \"component_raw\": \"include\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20231\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/include.py\", \n    \"summary\": \"Files present in a parent role's `tasks` directory are not found by child tasks' `include` statements.\", \n    \"title\": \"Include all dependency roles in include search path for role\"\n  }, \n  \"20233\": {\n    \"ansible_version\": \"ansible 2.3.0 (network-aws 1045e3a5a9) last updated 2017/01/11 194239 (GMT +100)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnet_command\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (network-aws 1045e3a5a9) last updated 2017/01/11 19:42:39 (GMT +100)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\n##### SUMMARY\\r\\nIt appears that `net_command` will only return data in `.stderr` if `.rc` is non zero\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n`net_command: kfhdsfjkhdsfkjds'` .stderr returned\\r\\n`net_command: python -c 'import os; os.write(2, \\\"error\\\\n\\\")` .stdout returned\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"net_command\", \n    \"component_raw\": \"net_command\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20233\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/basics/net_command.py\", \n    \"summary\": \"It appears that `net_command` will only return data in `.stderr` if `.rc` is non zero\", \n    \"title\": \"net_command: only returns .stderr if rc=1\"\n  }, \n  \"20234\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\nBugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nuri\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nv2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nPreviously, if `body_format: json` was specified, `Content-Type: application/json` was forcefully set.  If a user has set `Content-Type` via `headers` already, do not override, as they may need a custom `Content-Type`\\r\\n\\r\\nFixes #20046 \", \n    \"component_name\": \"uri\", \n    \"component_raw\": \"uri\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20234\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"needs_revision\", \n      \"networking\", \n      \"test\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/basics/uri.py\", \n    \"summary\": \"Previously, if `body_format: json` was specified, `Content-Type: application/json` was forcefully set.  If a user has set `Content-Type` via `headers` already, do not override, as they may need a custom `Content-Type`\\n\\n\\n\\nFixes #20046\", \n    \"title\": \"Only add Content-Type if not specified in headers. Fixes #20046\"\n  }, \n  \"20235\": {\n    \"ansible_version\": \"ansible 2.2.1.0 (ci-2.2 0c26b731f8) last updated 2017/01/13 092500 (GMT -700)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\nBugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nCI\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.1.0 (ci-2.2 0c26b731f8) last updated 2017/01/13 09:25:00 (GMT -700)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nCorrect freebsd startup test for CI.\", \n    \"component_name\": \"ci\", \n    \"component_raw\": \"CI\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20235\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Correct freebsd startup test for CI.\", \n    \"title\": \"Correct freebsd startup test for CI.\"\n  }, \n  \"20236\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\nNew Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nuri\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nv2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAs of 2.1 we \\\"deprecated\\\" the `HEADER_` arguments in favor of `headers`.  This PR adds warnings to the module, so that we can proceed with deprecating `HEADER_*` in the future.\", \n    \"component_name\": \"uri\", \n    \"component_raw\": \"uri\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20236\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"networking\", \n      \"new_plugin\", \n      \"test\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/basics/uri.py\", \n    \"summary\": \"As of 2.1 we \\\"deprecated\\\" the `HEADER_` arguments in favor of `headers`.  This PR adds warnings to the module, so that we can proceed with deprecating `HEADER_*` in the future.\", \n    \"title\": \"Warn when using the deprecated HEADER_ arguments\"\n  }, \n  \"20243\": {\n    \"ansible_version\": \"ansible 2.1.4.0\\nconfig file = /some/private/dir/rt/ansible/ansible.cfg\\nconfigured module search path = [/some/private/dir/admcommon/ansible/library/]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nAsync functionality of playbook steps\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.1.4.0\\r\\n  config file = /some/private/dir/rt/ansible/ansible.cfg\\r\\n  configured module search path = ['/some/private/dir/admcommon/ansible/library/']\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n```\\r\\n[defaults]\\r\\nforks = 100\\r\\nnocows = 1\\r\\nvars_plugins = /some/private/dir/admcommon/ansible/var_plugins\\r\\nfilter_plugins = /some/private/dir/admcommon/ansible/filter_plugins\\r\\nlookup_plugins = /some/private/dir/ansible/lookup_plugins/\\r\\ncallback_plugins = /some/private/dir/admcommon/ansible/callback_plugins/\\r\\nroles_path = /some/private/dir/admcommon/ansible/roles\\r\\nlibrary = /some/private/dir/admcommon/ansible/library/\\r\\nretry_files_save_path = /some/private/dir/retry/\\r\\ninventory = /some/private/dir/admcommon/ansible/dynamic_inventory.py\\r\\ntimeout = 60\\r\\ngather_timeout = 60\\r\\npipelining = True\\r\\n\\r\\n[ssh_connection]\\r\\nssh_args = -o ConnectTimeout=20 -o ConnectionAttempts=2 -o ForwardAgent=yes -o ServerAliveInterval=10 -o ServerAliveCountMax=300 -o StrictHostKeyChecking=no -F /some/private/dir/rt/ansible/ssh.config  <--- provides persistent conneciton and some ssh-agent settings\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nUbuntu 14.04.5 64 bit on both ends.\\r\\n\\r\\n##### SUMMARY\\r\\nAdding the `async` option to a step causes the step to fail with the error: `fatal: [push000.dave1012]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"No job id was returned by the async task\\\"`.\\r\\n\\r\\nIf I remove `async` and `poll` from the step it executes just fine.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n- Run a playbook that contains an `async` step, for example:\\r\\n\\r\\n```yaml\\r\\n- hosts: some_group\\r\\n  gather_facts: false\\r\\n  tasks:\\r\\n    - name: Some step\\r\\n      become: True\\r\\n      become_user: interana\\r\\n      shell: cd somewhere && ./some_shell_script.sh > some_file.log 2>&1\\r\\n      async: 600\\r\\n      poll: 30\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe step is executed.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nThe step fails. It seems the failure is on the remote and no stack trace is generated by -vvvv. Let me know if I can provide better debug output.\\r\\n\\r\\n```\\r\\nTASK [Some step] *****************************************************\\r\\ntask path: /some/private/dir/playbook.yml:12\\r\\n<10.0.0.221> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<10.0.0.221> SSH: EXEC ssh -C -vvv -o ConnectTimeout=20 -o ConnectionAttempts=2 -o ForwardAgent=yes -o ServerAliveInterval=10 -o ServerAliveCountMax=300 -o StrictHostKeyChecking=no -F /some/private/dir/rt/ansible/ssh.config -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=60 10.0.0.221 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo /tmp/ansible-tmp-1484339327.7-150640658413149 `\\\" && echo ansible-tmp-1484339327.7-150640658413149=\\\"` echo /tmp/ansible-tmp-1484339327.7-150640658413149 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<10.0.0.221> PUT /tmp/tmp5PNppB TO /tmp/ansible-tmp-1484339327.7-150640658413149/command\\r\\n<10.0.0.221> SSH: EXEC sftp -b - -C -vvv -o ConnectTimeout=20 -o ConnectionAttempts=2 -o ForwardAgent=yes -o ServerAliveInterval=10 -o ServerAliveCountMax=300 -o StrictHostKeyChecking=no -F /some/private/dir/rt/ansible/ssh.config -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=60 '[10.0.0.221]'\\r\\n<10.0.0.221> PUT /tmp/tmplDjVre TO /tmp/ansible-tmp-1484339327.7-150640658413149/async_wrapper\\r\\n<10.0.0.221> SSH: EXEC sftp -b - -C -vvv -o ConnectTimeout=20 -o ConnectionAttempts=2 -o ForwardAgent=yes -o ServerAliveInterval=10 -o ServerAliveCountMax=300 -o StrictHostKeyChecking=no -F /some/private/dir/rt/ansible/ssh.config -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=60 '[10.0.0.221]'\\r\\n<10.0.0.221> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<10.0.0.221> SSH: EXEC ssh -C -vvv -o ConnectTimeout=20 -o ConnectionAttempts=2 -o ForwardAgent=yes -o ServerAliveInterval=10 -o ServerAliveCountMax=300 -o StrictHostKeyChecking=no -F /some/private/dir/rt/ansible/ssh.config -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=60 10.0.0.221 '/bin/sh -c '\\\"'\\\"'setfacl -m u:<username removed>:rx /tmp/ansible-tmp-1484339327.7-150640658413149/ /tmp/ansible-tmp-1484339327.7-150640658413149/command /tmp/ansible-tmp-1484339327.7-150640658413149/async_wrapper && sleep 0'\\\"'\\\"''\\r\\n<10.0.0.221> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<10.0.0.221> SSH: EXEC ssh -C -vvv -o ConnectTimeout=20 -o ConnectionAttempts=2 -o ForwardAgent=yes -o ServerAliveInterval=10 -o ServerAliveCountMax=300 -o StrictHostKeyChecking=no -F /some/private/dir/rt/ansible/ssh.config -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=60 -tt 10.0.0.221 '/bin/sh -c '\\\"'\\\"'sudo -H -S -n -u <username removed> /bin/sh -c '\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'echo BECOME-SUCCESS-vhkhthwqpskdowlsuktwjdrtrlvwdbzh; LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 /tmp/ansible-tmp-1484339327.7-150640658413149/async_wrapper 761308827431 600 /tmp/ansible-tmp-1484339327.7-150640658413149/command'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"'\\\"' && sleep 0'\\\"'\\\"''\\r\\n<10.0.0.221> ESTABLISH SSH CONNECTION FOR USER: None\\r\\n<10.0.0.221> SSH: EXEC ssh -C -vvv -o ConnectTimeout=20 -o ConnectionAttempts=2 -o ForwardAgent=yes -o ServerAliveInterval=10 -o ServerAliveCountMax=300 -o StrictHostKeyChecking=no -F /some/private/dir/rt/ansible/ssh.config -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=60 10.0.0.221 '/bin/sh -c '\\\"'\\\"'rm -f -r /tmp/ansible-tmp-1484339327.7-150640658413149/ > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\nfatal: [my_host]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"No job id was returned by the async task\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"async functionality of playbook steps\", \n    \"component_raw\": \"Async functionality of playbook steps\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20243\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Adding the `async` option to a step causes the step to fail with the error: `fatal: [push000.dave1012]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"No job id was returned by the async task\\\"`.\\n\\n\\n\\nIf I remove `async` and `poll` from the step it executes just fine.\", \n    \"title\": \"Async tasks broken in 2.1.4.0-0.2.rc2\"\n  }, \n  \"20244\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nhashi_vault lookup plugin\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdded the ability to supply username/password credentials in a lookup, and have HashiCorp Vault authenticate against its ldap backend.\\r\\n\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n  tasks:\\r\\n    - debug:\\r\\n        msg: \\\"{{ lookup('hashi_vault', 'secret=secret/test:k token=0425f12f-ad10-811f-ec9604a6596c5e25 url=http://vault:8200')}}\\\"\\r\\n\\r\\n    # ldap authentication\\r\\n    - debug:\\r\\n        msg: \\\"{{ lookup('hashi_vault', 'auth_method=ldap secret=secret/test:k username={{ username }} password={{ password }} url=http://vault:8200')}}\\\"\\r\\n```\", \n    \"component_name\": \"hashi_vault lookup plugin\", \n    \"component_raw\": \"hashi_vault lookup plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20244\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/lookup\", \n      \"feature\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Added the ability to supply username/password credentials in a lookup, and have HashiCorp Vault authenticate against its ldap backend.\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n  tasks:\\n\\n    - debug:\\n\\n        msg: \\\"{{ lookup('hashi_vault', 'secret=secret/test:k token=0425f12f-ad10-811f-ec9604a6596c5e25 url=http://vault:8200')}}\\\"\\n\\n\\n\\n    # ldap authentication\\n\\n    - debug:\\n\\n        msg: \\\"{{ lookup('hashi_vault', 'auth_method=ldap secret=secret/test:k username={{ username }} password={{ password }} url=http://vault:8200')}}\\\"\\n\\n```\", \n    \"title\": \"added ldap auth capability to hashi_vault plugin\"\n  }, \n  \"20246\": {\n    \"ansible_version\": \"$  ansible --version\\nansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"\\r\\n##### ISSUE TYPE\\r\\n\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\novirt_vms\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n$  ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n[ssh_connection]\\r\\nssh_args = -C -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nRHEL 7.3, managing RHEL 7.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nIf you have a RHV/ovirt installation with the Default/Default datacenter and cluster, with the default ovirtmgmt network, and create a second datacenter/cluster, also with the default ovirtmgmt network, you cannot create VMs in the second cluster. This is because the ovirt_vms module does a lookup by name for the network, and returns the first result, so if you have network names that conflict across clusters your VM will try to attach to a network not in the correct cluster.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\nAssuming a RHV installation where you have already created the Default/Default and Custom/Custom datacenters/clusters, with hosts/storage domains/etc configured.\\r\\n```yaml\\r\\n---\\r\\n\\r\\n- hosts: engine\\r\\n  remote_user: root\\r\\n  tasks:\\r\\n    - name: authenticate to engine\\r\\n      ovirt_auth:\\r\\n        username: '{{ engine_username }}'\\r\\n        password: '{{ admin_password }}'\\r\\n        url: https://{{ engine_fqdn }}/ovirt-engine/api\\r\\n        insecure: true\\r\\n\\r\\n    - name: create vm\\r\\n      ovirt_vms:\\r\\n        name: test\\r\\n        cluster: Custom\\r\\n        memory: 2GiB\\r\\n        memory_guaranteed: 2GiB\\r\\n        cpu_cores: 2\\r\\n        nics:\\r\\n          - name: eth0\\r\\n            profile_name: ovirtmgmt\\r\\n            interface: virtio\\r\\n        state: stopped\\r\\n        wait: true\\r\\n        auth: '{{ ovirt_auth }}'\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nA VM named test should come up in the Custom cluster with a nic with the ovirtmgmt profile\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nUsing /home/fabian/code/redhat/rhci/ansible-ovirt/ansible.cfg as config file\\r\\nLoading callback plugin default of type stdout, v2.0 from /home/fabian/Envs/ansible/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc\\r\\n\\r\\nPLAYBOOK: play.yml *************************************************************\\r\\n1 plays in play.yml\\r\\n\\r\\nPLAY [engine] ******************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nUsing module file /home/fabian/Envs/ansible/lib/python2.7/site-packages/ansible/modules/core/system/setup.py\\r\\n<x1.example.org> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<x1.example.org> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/usr/share/vagrant/keys/vagrant\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/home/fabian/.ansible/cp/ansible-ssh-%h-%p-%r x1.example.org '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484341736.91-132945011824945 `\\\" && echo ansible-tmp-1484341736.91-132945011824945=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484341736.91-132945011824945 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<x1.example.org> PUT /tmp/fabian/tmpmm9OHX TO /root/.ansible/tmp/ansible-tmp-1484341736.91-132945011824945/setup.py\\r\\n<x1.example.org> SSH: EXEC sftp -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/usr/share/vagrant/keys/vagrant\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/home/fabian/.ansible/cp/ansible-ssh-%h-%p-%r '[x1.example.org]'\\r\\n<x1.example.org> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<x1.example.org> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/usr/share/vagrant/keys/vagrant\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/home/fabian/.ansible/cp/ansible-ssh-%h-%p-%r x1.example.org '/bin/sh -c '\\\"'\\\"'chmod u+x /root/.ansible/tmp/ansible-tmp-1484341736.91-132945011824945/ /root/.ansible/tmp/ansible-tmp-1484341736.91-132945011824945/setup.py && sleep 0'\\\"'\\\"''\\r\\n<x1.example.org> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<x1.example.org> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/usr/share/vagrant/keys/vagrant\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/home/fabian/.ansible/cp/ansible-ssh-%h-%p-%r -tt x1.example.org '/bin/sh -c '\\\"'\\\"'/usr/bin/python /root/.ansible/tmp/ansible-tmp-1484341736.91-132945011824945/setup.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1484341736.91-132945011824945/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\nok: [x1.example.org]\\r\\n\\r\\nTASK [authenticate to engine] **************************************************\\r\\ntask path: /home/fabian/code/redhat/rhci/ansible-ovirt/play.yml:8\\r\\nUsing module file /home/fabian/Envs/ansible/lib/python2.7/site-packages/ansible/modules/extras/cloud/ovirt/ovirt_auth.py\\r\\n<x1.example.org> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<x1.example.org> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/usr/share/vagrant/keys/vagrant\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/home/fabian/.ansible/cp/ansible-ssh-%h-%p-%r x1.example.org '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484341737.55-63513034438551 `\\\" && echo ansible-tmp-1484341737.55-63513034438551=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484341737.55-63513034438551 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<x1.example.org> PUT /tmp/fabian/tmpAvv1m4 TO /root/.ansible/tmp/ansible-tmp-1484341737.55-63513034438551/ovirt_auth.py\\r\\n<x1.example.org> SSH: EXEC sftp -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/usr/share/vagrant/keys/vagrant\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/home/fabian/.ansible/cp/ansible-ssh-%h-%p-%r '[x1.example.org]'\\r\\n<x1.example.org> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<x1.example.org> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/usr/share/vagrant/keys/vagrant\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/home/fabian/.ansible/cp/ansible-ssh-%h-%p-%r x1.example.org '/bin/sh -c '\\\"'\\\"'chmod u+x /root/.ansible/tmp/ansible-tmp-1484341737.55-63513034438551/ /root/.ansible/tmp/ansible-tmp-1484341737.55-63513034438551/ovirt_auth.py && sleep 0'\\\"'\\\"''\\r\\n<x1.example.org> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<x1.example.org> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/usr/share/vagrant/keys/vagrant\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/home/fabian/.ansible/cp/ansible-ssh-%h-%p-%r -tt x1.example.org '/bin/sh -c '\\\"'\\\"'/usr/bin/python /root/.ansible/tmp/ansible-tmp-1484341737.55-63513034438551/ovirt_auth.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1484341737.55-63513034438551/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\nok: [x1.example.org] => {\\r\\n    \\\"ansible_facts\\\": {\\r\\n        \\\"ovirt_auth\\\": {\\r\\n            \\\"ca_file\\\": null, \\r\\n            \\\"compress\\\": true, \\r\\n            \\\"insecure\\\": true, \\r\\n            \\\"kerberos\\\": false, \\r\\n            \\\"timeout\\\": 0, \\r\\n            \\\"token\\\": \\\"U-sPRqQgLSq0sPs6fpVx8nWocTq2ySe4dmPvtcfVbyH5Lxndq45J4qm61xu63sfUBQwxHA6EwBhdWAJJz8mJ8g\\\", \\r\\n            \\\"url\\\": \\\"https://x1.example.org/ovirt-engine/api\\\"\\r\\n        }\\r\\n    }, \\r\\n    \\\"changed\\\": false, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"ca_file\\\": null, \\r\\n            \\\"compress\\\": true, \\r\\n            \\\"insecure\\\": true, \\r\\n            \\\"kerberos\\\": false, \\r\\n            \\\"ovirt_auth\\\": null, \\r\\n            \\\"password\\\": \\\"VALUE_SPECIFIED_IN_NO_LOG_PARAMETER\\\", \\r\\n            \\\"state\\\": \\\"present\\\", \\r\\n            \\\"timeout\\\": 0, \\r\\n            \\\"url\\\": \\\"https://x1.example.org/ovirt-engine/api\\\", \\r\\n            \\\"username\\\": \\\"admin@internal\\\"\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"ovirt_auth\\\"\\r\\n    }\\r\\n}\\r\\n\\r\\nTASK [create vm] ***************************************************************\\r\\ntask path: /home/fabian/code/redhat/rhci/ansible-ovirt/play.yml:15\\r\\nUsing module file /home/fabian/Envs/ansible/lib/python2.7/site-packages/ansible/modules/extras/cloud/ovirt/ovirt_vms.py\\r\\n<x1.example.org> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<x1.example.org> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/usr/share/vagrant/keys/vagrant\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/home/fabian/.ansible/cp/ansible-ssh-%h-%p-%r x1.example.org '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484341738.25-102817380964459 `\\\" && echo ansible-tmp-1484341738.25-102817380964459=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484341738.25-102817380964459 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<x1.example.org> PUT /tmp/fabian/tmpzfNZ1r TO /root/.ansible/tmp/ansible-tmp-1484341738.25-102817380964459/ovirt_vms.py\\r\\n<x1.example.org> SSH: EXEC sftp -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/usr/share/vagrant/keys/vagrant\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/home/fabian/.ansible/cp/ansible-ssh-%h-%p-%r '[x1.example.org]'\\r\\n<x1.example.org> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<x1.example.org> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/usr/share/vagrant/keys/vagrant\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/home/fabian/.ansible/cp/ansible-ssh-%h-%p-%r x1.example.org '/bin/sh -c '\\\"'\\\"'chmod u+x /root/.ansible/tmp/ansible-tmp-1484341738.25-102817380964459/ /root/.ansible/tmp/ansible-tmp-1484341738.25-102817380964459/ovirt_vms.py && sleep 0'\\\"'\\\"''\\r\\n<x1.example.org> ESTABLISH SSH CONNECTION FOR USER: root\\r\\n<x1.example.org> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/usr/share/vagrant/keys/vagrant\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -o ControlPath=/home/fabian/.ansible/cp/ansible-ssh-%h-%p-%r -tt x1.example.org '/bin/sh -c '\\\"'\\\"'/usr/bin/python /root/.ansible/tmp/ansible-tmp-1484341738.25-102817380964459/ovirt_vms.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1484341738.25-102817380964459/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\nok: [x1.example.org] => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"id\\\": \\\"d3bf2a12-4667-41e7-8a4a-a08b0d06675c\\\", \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"boot_devices\\\": null, \\r\\n            \\\"cd_iso\\\": null, \\r\\n            \\\"clone\\\": false, \\r\\n            \\\"clone_permissions\\\": false, \\r\\n            \\\"cloud_init\\\": null, \\r\\n            \\\"cluster\\\": \\\"Custom\\\", \\r\\n            \\\"cpu_cores\\\": 2, \\r\\n            \\\"cpu_shares\\\": null, \\r\\n            \\\"cpu_sockets\\\": null, \\r\\n            \\\"delete_protected\\\": null, \\r\\n            \\\"disks\\\": [], \\r\\n            \\\"force\\\": false, \\r\\n            \\\"high_availability\\\": null, \\r\\n            \\\"host\\\": null, \\r\\n            \\\"id\\\": null, \\r\\n            \\\"memory\\\": \\\"2GiB\\\", \\r\\n            \\\"memory_guaranteed\\\": \\\"2GiB\\\", \\r\\n            \\\"name\\\": \\\"test\\\", \\r\\n            \\\"nics\\\": [\\r\\n                {\\r\\n                    \\\"interface\\\": \\\"virtio\\\", \\r\\n                    \\\"name\\\": \\\"eth0\\\", \\r\\n                    \\\"profile_name\\\": \\\"ovirtmgmt\\\"\\r\\n                }\\r\\n            ], \\r\\n            \\\"operating_system\\\": null, \\r\\n            \\\"poll_interval\\\": 3, \\r\\n            \\\"state\\\": \\\"stopped\\\", \\r\\n            \\\"stateless\\\": null, \\r\\n            \\\"sysprep\\\": null, \\r\\n            \\\"template\\\": null, \\r\\n            \\\"timeout\\\": 180, \\r\\n            \\\"type\\\": null, \\r\\n            \\\"wait\\\": true\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"ovirt_vms\\\"\\r\\n    }, \\r\\n    \\\"vm\\\": {\\r\\n        \\\"affinity_labels\\\": [], \\r\\n        \\\"applications\\\": [], \\r\\n        \\\"bios\\\": {\\r\\n            \\\"boot_menu\\\": {\\r\\n                \\\"enabled\\\": false\\r\\n            }\\r\\n        }, \\r\\n        \\\"cdroms\\\": [], \\r\\n        \\\"cluster\\\": {\\r\\n            \\\"href\\\": \\\"/ovirt-engine/api/clusters/b2156b97-cf49-416a-8c75-83f069087552\\\", \\r\\n            \\\"id\\\": \\\"b2156b97-cf49-416a-8c75-83f069087552\\\"\\r\\n        }, \\r\\n        \\\"cpu\\\": {\\r\\n            \\\"architecture\\\": \\\"x86_64\\\", \\r\\n            \\\"topology\\\": {\\r\\n                \\\"cores\\\": 2, \\r\\n                \\\"sockets\\\": 1, \\r\\n                \\\"threads\\\": 1\\r\\n            }\\r\\n        }, \\r\\n        \\\"cpu_profile\\\": {\\r\\n            \\\"href\\\": \\\"/ovirt-engine/api/cpuprofiles/a84f7c54-079c-489a-9988-1e2b1fc89be8\\\", \\r\\n            \\\"id\\\": \\\"a84f7c54-079c-489a-9988-1e2b1fc89be8\\\"\\r\\n        }, \\r\\n        \\\"cpu_shares\\\": 0, \\r\\n        \\\"creation_time\\\": \\\"2017-01-13 21:07:56.962000+00:00\\\", \\r\\n        \\\"delete_protected\\\": false, \\r\\n        \\\"disk_attachments\\\": [], \\r\\n        \\\"display\\\": {\\r\\n            \\\"allow_override\\\": false, \\r\\n            \\\"copy_paste_enabled\\\": true, \\r\\n            \\\"disconnect_action\\\": \\\"LOCK_SCREEN\\\", \\r\\n            \\\"file_transfer_enabled\\\": true, \\r\\n            \\\"monitors\\\": 1, \\r\\n            \\\"single_qxl_pci\\\": false, \\r\\n            \\\"smartcard_enabled\\\": false, \\r\\n            \\\"type\\\": \\\"spice\\\"\\r\\n        }, \\r\\n        \\\"graphics_consoles\\\": [], \\r\\n        \\\"high_availability\\\": {\\r\\n            \\\"enabled\\\": false, \\r\\n            \\\"priority\\\": 0\\r\\n        }, \\r\\n        \\\"host_devices\\\": [], \\r\\n        \\\"href\\\": \\\"/ovirt-engine/api/vms/d3bf2a12-4667-41e7-8a4a-a08b0d06675c\\\", \\r\\n        \\\"id\\\": \\\"d3bf2a12-4667-41e7-8a4a-a08b0d06675c\\\", \\r\\n        \\\"io\\\": {\\r\\n            \\\"threads\\\": 0\\r\\n        }, \\r\\n        \\\"katello_errata\\\": [], \\r\\n        \\\"large_icon\\\": {\\r\\n            \\\"href\\\": \\\"/ovirt-engine/api/icons/488feec3-1b70-4489-b72b-04f5db6afe9c\\\", \\r\\n            \\\"id\\\": \\\"488feec3-1b70-4489-b72b-04f5db6afe9c\\\"\\r\\n        }, \\r\\n        \\\"memory\\\": 2147483648, \\r\\n        \\\"memory_policy\\\": {\\r\\n            \\\"ballooning\\\": true, \\r\\n            \\\"guaranteed\\\": 2147483648\\r\\n        }, \\r\\n        \\\"migration\\\": {\\r\\n            \\\"auto_converge\\\": \\\"inherit\\\", \\r\\n            \\\"compressed\\\": \\\"inherit\\\"\\r\\n        }, \\r\\n        \\\"migration_downtime\\\": -1, \\r\\n        \\\"name\\\": \\\"test\\\", \\r\\n        \\\"next_run_configuration_exists\\\": false, \\r\\n        \\\"nics\\\": [], \\r\\n        \\\"numa_nodes\\\": [], \\r\\n        \\\"numa_tune_mode\\\": \\\"interleave\\\", \\r\\n        \\\"origin\\\": \\\"ovirt\\\", \\r\\n        \\\"os\\\": {\\r\\n            \\\"boot\\\": {\\r\\n                \\\"devices\\\": [\\r\\n                    \\\"hd\\\"\\r\\n                ]\\r\\n            }, \\r\\n            \\\"type\\\": \\\"other\\\"\\r\\n        }, \\r\\n        \\\"permissions\\\": [], \\r\\n        \\\"placement_policy\\\": {\\r\\n            \\\"affinity\\\": \\\"migratable\\\"\\r\\n        }, \\r\\n        \\\"reported_devices\\\": [], \\r\\n        \\\"sessions\\\": [], \\r\\n        \\\"small_icon\\\": {\\r\\n            \\\"href\\\": \\\"/ovirt-engine/api/icons/9b9b954d-5a8c-4e61-8b8a-3544b0ad8770\\\", \\r\\n            \\\"id\\\": \\\"9b9b954d-5a8c-4e61-8b8a-3544b0ad8770\\\"\\r\\n        }, \\r\\n        \\\"snapshots\\\": [], \\r\\n        \\\"sso\\\": {\\r\\n            \\\"methods\\\": [\\r\\n                {\\r\\n                    \\\"id\\\": \\\"guest_agent\\\"\\r\\n                }\\r\\n            ]\\r\\n        }, \\r\\n        \\\"start_paused\\\": false, \\r\\n        \\\"stateless\\\": false, \\r\\n        \\\"statistics\\\": [], \\r\\n        \\\"status\\\": \\\"down\\\", \\r\\n        \\\"stop_time\\\": \\\"2017-01-13 21:07:56.969000+00:00\\\", \\r\\n        \\\"tags\\\": [], \\r\\n        \\\"template\\\": {\\r\\n            \\\"href\\\": \\\"/ovirt-engine/api/templates/00000000-0000-0000-0000-000000000000\\\", \\r\\n            \\\"id\\\": \\\"00000000-0000-0000-0000-000000000000\\\"\\r\\n        }, \\r\\n        \\\"time_zone\\\": {\\r\\n            \\\"name\\\": \\\"Etc/GMT\\\"\\r\\n        }, \\r\\n        \\\"type\\\": \\\"desktop\\\", \\r\\n        \\\"usb\\\": {\\r\\n            \\\"enabled\\\": false\\r\\n        }, \\r\\n        \\\"watchdogs\\\": []\\r\\n    }\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nx1.example.org             : ok=3    changed=0    unreachable=0    failed=0   \\r\\n\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"ovirt_vms\", \n    \"component_raw\": \"ovirt_vms\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20246\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/ovirt/ovirt_vms.py\", \n    \"summary\": \"If you have a RHV/ovirt installation with the Default/Default datacenter and cluster, with the default ovirtmgmt network, and create a second datacenter/cluster, also with the default ovirtmgmt network, you cannot create VMs in the second cluster. This is because the ovirt_vms module does a lookup by name for the network, and returns the first result, so if you have network names that conflict across clusters your VM will try to attach to a network not in the correct cluster.\", \n    \"title\": \"Using the same profile name in multiple clusters will cause creating VMs that use that network name to fail\"\n  }, \n  \"20247\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nsystemd\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nfixes #18687 as 'disabled' can be at the end of the output\\r\\nfixes #20228 by not falling back to init scripts when it is a user service\\r\\n\", \n    \"component_name\": \"systemd\", \n    \"component_raw\": \"systemd\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20247\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/systemd.py\", \n    \"summary\": \"fixes #18687 as 'disabled' can be at the end of the output\\n\\nfixes #20228 by not falling back to init scripts when it is a user service\", \n    \"title\": \"fix service status setting\"\n  }, \n  \"20251\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nos_security_group_rule\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\nWhen creating a security group rule it is possible to provide an IP without a CIDR slash for remote_ip_prefix. When doing this the IP is evaluated as a /32. This will then allow the successful creation of a rule on first run (changed) and throw an error on second run.\\r\\n\\r\\nThe docs for remote_ip_prefix state 'Source IP address(es) in CIDR notation (exclusive with remote_group)'. so there are two ways to fix this bug:\\r\\n\\r\\n1. Fail immediately if the IP provided is not in CIDR notation.\\r\\n2. Ensure the task does not fail when state is ok\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n#!/usr/bin/env ansible-playbook\\r\\n---\\r\\n\\r\\n# This playbook assumes an openstack rc file has been sourced\\r\\n\\r\\n- name: Demonstrate bug in os_security_group_rule\\r\\n  hosts: localhost\\r\\n  vars:\\r\\n    remote_cidr_one: 1.2.3.4/32\\r\\n    remote_cidr_two: 5.6.7.8\\r\\n    security_group_name: bug-test-sg\\r\\n\\r\\n  tasks:\\r\\n    - name: Connect to OpenStack Cloud\\r\\n      os_auth:\\r\\n\\r\\n    - name: \\\"Create the {{ security_group_name }} security group\\\"\\r\\n      os_security_group:\\r\\n        state: present\\r\\n        name: \\\"{{ security_group_name }}\\\"\\r\\n        description: Network access for the example instance.\\r\\n\\r\\n    - name: Create a security group rule using remote_cidr_one\\r\\n      os_security_group_rule:\\r\\n        state: present\\r\\n        security_group: \\\"{{ security_group_name }}\\\"\\r\\n        protocol: tcp\\r\\n        port_range_min: 22\\r\\n        port_range_max: 22\\r\\n        remote_ip_prefix: \\\"{{ remote_cidr_one }}\\\"\\r\\n\\r\\n    - name: Create a security group rule using remote_cidr_two\\r\\n      os_security_group_rule:\\r\\n        state: present\\r\\n        security_group: \\\"{{ security_group_name }}\\\"\\r\\n        protocol: tcp\\r\\n        port_range_min: 22\\r\\n        port_range_max: 22\\r\\n        remote_ip_prefix: \\\"{{ remote_cidr_two }}\\\"\\r\\n```\\r\\n```yaml\\r\\n$ ansible-playbook sg-bug.yaml\\r\\n\\r\\nPLAY [Demonstrate bug in os_security_group_rule] *******************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nSaturday 14 January 2017  12:55:48 +1300 (0:00:00.015)       0:00:00.015 ****** \\r\\nok: [localhost]\\r\\n\\r\\nTASK [Connect to OpenStack Cloud] **********************************************\\r\\nSaturday 14 January 2017  12:55:50 +1300 (0:00:01.730)       0:00:01.745 ****** \\r\\nok: [localhost]\\r\\n\\r\\nTASK [Create the bug-test-sg security group] ***********************************\\r\\nSaturday 14 January 2017  12:55:51 +1300 (0:00:00.967)       0:00:02.712 ****** \\r\\nchanged: [localhost]\\r\\n\\r\\nTASK [Create a security group rule using remote_cidr_one] **********************\\r\\nSaturday 14 January 2017  12:55:52 +1300 (0:00:01.889)       0:00:04.601 ****** \\r\\nchanged: [localhost]\\r\\n\\r\\nTASK [Create a security group rule using remote_cidr_two] **********************\\r\\nSaturday 14 January 2017  12:55:54 +1300 (0:00:01.871)       0:00:06.473 ****** \\r\\nchanged: [localhost]\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=5    changed=3    unreachable=0    failed=0   \\r\\n\\r\\nSaturday 14 January 2017  12:55:56 +1300 (0:00:01.606)       0:00:08.079 ****** \\r\\n=============================================================================== \\r\\nCreate the bug-test-sg security group ----------------------------------- 1.89s\\r\\nCreate a security group rule using remote_cidr_one ---------------------- 1.87s\\r\\nsetup ------------------------------------------------------------------- 1.73s\\r\\nCreate a security group rule using remote_cidr_two ---------------------- 1.61s\\r\\nConnect to OpenStack Cloud ---------------------------------------------- 0.97s\\r\\n```\\r\\n```yaml\\r\\n$ ansible-playbook sg-bug.yaml\\r\\n\\r\\nPLAY [Demonstrate bug in os_security_group_rule] *******************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nSaturday 14 January 2017  12:55:59 +1300 (0:00:00.014)       0:00:00.014 ****** \\r\\nok: [localhost]\\r\\n\\r\\nTASK [Connect to OpenStack Cloud] **********************************************\\r\\nSaturday 14 January 2017  12:56:01 +1300 (0:00:01.737)       0:00:01.752 ****** \\r\\nok: [localhost]\\r\\n\\r\\nTASK [Create the bug-test-sg security group] ***********************************\\r\\nSaturday 14 January 2017  12:56:02 +1300 (0:00:01.017)       0:00:02.769 ****** \\r\\nok: [localhost]\\r\\n\\r\\nTASK [Create a security group rule using remote_cidr_one] **********************\\r\\nSaturday 14 January 2017  12:56:03 +1300 (0:00:01.329)       0:00:04.099 ****** \\r\\nok: [localhost]\\r\\n\\r\\nTASK [Create a security group rule using remote_cidr_two] **********************\\r\\nSaturday 14 January 2017  12:56:04 +1300 (0:00:01.436)       0:00:05.536 ****** \\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Error creating security group rule: Security group rule already exists. Rule id is 17c50b75-4a65-4558-9557-eb97cc48bfa4.\\\\nNeutron server returns request_ids: ['req-9a55eb64-edba-40c1-b8de-49759545599c']\\\"}\\r\\n\\tto retry, use: --limit @/home/don/src/catalystcloud-ansible/example-playbooks/kubernetes-with-kubeadm/sg-bug.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=4    changed=0    unreachable=0    failed=1   \\r\\n\\r\\nSaturday 14 January 2017  12:56:07 +1300 (0:00:02.116)       0:00:07.652 ****** \\r\\n=============================================================================== \\r\\nCreate a security group rule using remote_cidr_two ---------------------- 2.12s\\r\\nsetup ------------------------------------------------------------------- 1.74s\\r\\nCreate a security group rule using remote_cidr_one ---------------------- 1.44s\\r\\nCreate the bug-test-sg security group ----------------------------------- 1.33s\\r\\nConnect to OpenStack Cloud ---------------------------------------------- 1.02s\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nTask \\\"Create a security group rule using remote_cidr_two\\\" succeeds with ok: [localhost]\\r\\n\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nTask \\\"Create a security group rule using remote_cidr_two\\\" fails with:\\r\\n\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Error creating security group rule: Security group rule already exists. Rule id is 17c50b75-4a65-4558-9557-eb97cc48bfa4.\\\\nNeutron server returns request_ids: ['req-9a55eb64-edba-40c1-b8de-49759545599c']\\\"}\\r\\n\\tto retry, use: --limit @/home/don/src/catalystcloud-ansible/example-playbooks/kubernetes-with-kubeadm/sg-bug.retry\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"os_security_group_rule\", \n    \"component_raw\": \"os_security_group_rule\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20251\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"module\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_security_group_rule.py\", \n    \"summary\": \"When creating a security group rule it is possible to provide an IP without a CIDR slash for remote_ip_prefix. When doing this the IP is evaluated as a /32. This will then allow the successful creation of a rule on first run (changed) and throw an error on second run.\\n\\n\\n\\nThe docs for remote_ip_prefix state 'Source IP address(es) in CIDR notation (exclusive with remote_group)'. so there are two ways to fix this bug:\\n\\n\\n\\n1. Fail immediately if the IP provided is not in CIDR notation.\\n\\n2. Ensure the task does not fail when state is ok\", \n    \"title\": \"os_security_group_rule is not idempotent for a /32  if /32 is omitted\"\n  }, \n  \"20252\": {\n    \"ansible_version\": \"both 2.2.0 and devel\\n$ ansible --version\\nansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\\n$ ansible --version\\nansible 2.3.0 (devel b598575213) last updated 2017/01/14 004053 (GMT +900)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nYAML inventory\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nboth 2.2.0 and devel\\r\\n\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.3.0 (devel b598575213) last updated 2017/01/14 00:40:53 (GMT +900)\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nAll of the hosts in an inventory file are included in the 'all' group when it is written in INI.\\r\\nHowever when an inventory file is written in YAML, the 'all' group has no hosts.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n* launch `ansible localhost -i test-hosts.yml -m debug -a var=groups.all`\\r\\n\\r\\nThe test-hosts.yml is the smallest inventory file in YAML.\\r\\n\\r\\n```yaml\\r\\ngroup1:\\r\\n  hosts:\\r\\n    host1:\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n```\\r\\n$ ansible localhost -i test-hosts.yml -m debug -a var=groups.all -vvvv\\r\\nNo config file found; using defaults\\r\\nLoading callback plugin minimal of type stdout, v2.0 from /home/vagrant/ansible/lib/ansible/plugins/callback/__init__.pyc\\r\\nlocalhost | SUCCESS => {\\r\\n    \\\"groups.all\\\": [\\r\\n        \\\"host1\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nThe groups.all is empty with a YAML inventory file.\\r\\n\\r\\n```\\r\\n$ ansible localhost -i test-hosts.yml -m debug -a var=groups.all -vvvv\\r\\nNo config file found; using defaults\\r\\nLoading callback plugin minimal of type stdout, v2.0 from /home/vagrant/ansible/lib/ansible/plugins/callback/__init__.pyc\\r\\nlocalhost | SUCCESS => {\\r\\n    \\\"groups.all\\\": []\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"yaml inventory\", \n    \"component_raw\": \"YAML inventory\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20252\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"bug\", \n      \"c:inventory/yaml\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"All of the hosts in an inventory file are included in the 'all' group when it is written in INI.\\n\\nHowever when an inventory file is written in YAML, the 'all' group has no hosts.\", \n    \"title\": \"'all' group has no hosts with a YAML inventory file\"\n  }, \n  \"20253\": {\n    \"ansible_version\": \"v2.2.1.0-0.5.rc5\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible_domain fact\\r\\nto_nice_yaml filter\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nv2.2.1.0-0.5.rc5\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nmacOS\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n- name: debug\\r\\n  debug: var=ansible_domain|to_nice_yaml\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nansible_domain fact to be rendered as YAML\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nError from to_nice_yaml filter about not being able to represent an object\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [debug] *******************************************************************\\r\\nAn exception occurred during task execution. To see the full traceback, use -vvv. The error was: RepresenterError: cannot represent an object: vars.local\\r\\nfatal: [vars]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"Unexpected failure during module execution.\\\", \\\"stdout\\\": \\\"\\\"}\\r\\n```\\r\\n\\r\\nThis is a simple demonstration of the issue. In reality, we template a YAML file by passing in a dictionary defined in our defaults/main.yml and passing it through the to_nice_yml filter. This had been working previously, but is now tripped up by the ansible_domain fact which it appears to view as an object. Attempts to cast it using the jinja2 string filter were ineffective.\\r\\n\\r\\nThis behavior has changed since 2.2.0.0, where it works as expected. We're anticipating the security updates present in RC5 and testing as a result.\", \n    \"component_name\": \"ansible_domain fact\", \n    \"component_raw\": \"ansible_domain fact\\nto_nice_yaml filter\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20253\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"c:parsing/yaml/\", \n      \"c:vars/variable_manager\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"\", \n    \"title\": \"ansible_domain fact can't be parsed using to_nice_yaml filter (seen as object)\"\n  }, \n  \"20258\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nredhat_subscription\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n'''\\r\\nansible 2.2.0.0\\r\\n'''\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nredhat_subscription provides option to re-register using \\\"force_register\\\" however this option is not effective when using activationkey option.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nsystems being registered with activationkey also would need \\\"--force\\\" option\\r\\n\\r\\n'''\\r\\n  - name: signup with satellite services\\r\\n    redhat_subscription:\\r\\n      force_register: True\\r\\n      activationkey: \\\"{{satellite_subscription_key}}\\\"\\r\\n      org_id: \\\"{{satellite_org}}\\\"\\r\\n''''\\r\\n##### EXPECTED RESULTS\\r\\nsuccessful subscription with --force option\\r\\n##### ACTUAL RESULTS\\r\\n fails to subscribe an already subscribed system with activationkey option.\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nfatal: [xxxxxxx]: FAILED! => {\\\"changed\\\": false, \\\"cmd\\\": \\\"subscription-manager register --activationkey RHEL6-wkstn-64bit --org XXXX_TQSG\\\", \\\"failed\\\": true, \\\"msg\\\": \\\"\\\", \\\"rc\\\": 1, \\\"stderr\\\": \\\"\\\", \\\"stdout\\\": \\\"WARNING\\\\n\\\\nThis system has already been registered with Red Hat using RHN Classic.\\\\n\\\\nYour system is being registered again using Red Hat Subscription Management. Red Hat recommends that customers only register once.\\\\n\\\\nTo learn how to unregister from either service please consult this Knowledge Base Article: https://access.redhat.com/kb/docs/DOC-45563\\\\nThis system is already registered. Use --force to override\\\\n\\\", \\\"stdout_lines\\\": [\\\"WARNING\\\", \\\"\\\", \\\"This system has already been registered with Red Hat using RHN Classic.\\\", \\\"\\\", \\\"Your system is being registered again using Red Hat Subscription Management. Red Hat recommends that customers only register once.\\\", \\\"\\\", \\\"To learn how to unregister from either service please consult this Knowledge Base Article: https://access.redhat.com/kb/docs/DOC-45563\\\", \\\"This system is already registered. Use --force to override\\\"]}\\r\\n```\\r\\n\", \n    \"component_name\": \"redhat_subscription\", \n    \"component_raw\": \"redhat_subscription\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20258\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/redhat_subscription.py\", \n    \"summary\": \"redhat_subscription provides option to re-register using \\\"force_register\\\" however this option is not effective when using activationkey option.\", \n    \"title\": \"redhat_subscription: force_register option does not work for registration using activationkey\"\n  }, \n  \"20260\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel f3130898bb) last updated 2017/01/14 012557 (GMT +000)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnxos_vxlan_vtep_vni\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel f3130898bb) last updated 2017/01/14 01:25:57 (GMT +000)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nn/a\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nRHEL 7,   NXOS: version 7.0(3)I4(1)\\r\\n\\r\\n##### SUMMARY\\r\\nModule has no effect when `state=absent`\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n  - name: Remove vni from nve\\r\\n    nxos_vxlan_vtep_vni:\\r\\n      interface: nve1\\r\\n      vni: \\\"{{ item }}\\\"\\r\\n      provider: \\\"{{ cli }}\\\"\\r\\n      state: absent\\r\\n      transport: nxapi\\r\\n    when: DEPLOY\\r\\n    with_items:\\r\\n      - \\\"{{ purge_vnis }}\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nSuccess and vni removed from endpoint\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nAt times, the play runs without issue, but does not remove the vni.  At other times, it raises an error.\\r\\n\\r\\n```\\r\\ninterface nve1\\r\\n  no shutdown\\r\\n  source-interface loopback0\\r\\n  host-reachability protocol bgp\\r\\n! Truncated\\r\\n  member vni 9999\\r\\n    suppress-arp\\r\\n    mcast-group 239.239.239.203\\r\\n```\\r\\n\\r\\n```\\r\\nok: [s-srv1leaf2-2] => {\\r\\n    \\\"purge_vnis\\\": [\\r\\n        9999\\r\\n    ]\\r\\n}\\r\\n    An exception occurred during task execution. The full traceback is:\\r\\n    Traceback (most recent call last):\\r\\n      File \\\"/tmp/ansible_yZvBEZ/ansible_module_nxos_vxlan_vtep_vni.py\\\", line 589, in <module>\\r\\n        main()\\r\\n      File \\\"/tmp/ansible_yZvBEZ/ansible_module_nxos_vxlan_vtep_vni.py\\\", line 533, in main\\r\\n        existing, interface_exist = invoke('get_existing', module, args)\\r\\n      File \\\"/tmp/ansible_yZvBEZ/ansible_module_nxos_vxlan_vtep_vni.py\\\", line 316, in invoke\\r\\n        return func(*args, **kwargs)\\r\\n      File \\\"/tmp/ansible_yZvBEZ/ansible_module_nxos_vxlan_vtep_vni.py\\\", line 377, in get_existing\\r\\n        temp_config = netcfg.get_section(parents)\\r\\n      File \\\"/tmp/ansible_yZvBEZ/ansible_module_nxos_vxlan_vtep_vni.py\\\", line 192, in get_section\\r\\n        section = self.get_section_objects(path)\\r\\n      File \\\"/tmp/ansible_yZvBEZ/ansible_module_nxos_vxlan_vtep_vni.py\\\", line 203, in get_section_objects\\r\\n        return self.expand_section(obj)\\r\\n      File \\\"/tmp/ansible_yZvBEZ/ansible_module_nxos_vxlan_vtep_vni.py\\\", line 175, in expand_section\\r\\n        if child in S:\\r\\n      File \\\"/tmp/ansible_yZvBEZ/ansible_modlib.zip/ansible/module_utils/netcfg.py\\\", line 47, in __eq__\\r\\n    AttributeError: 'str' object has no attribute 'line'\\r\\n\\r\\n    failed: [s-srv1leaf2-2] (item=9999) => {\\r\\n        \\\"failed\\\": true,\\r\\n        \\\"invocation\\\": {\\r\\n            \\\"module_name\\\": \\\"nxos_vxlan_vtep_vni\\\"\\r\\n        },\\r\\n        \\\"item\\\": 9999,\\r\\n```\", \n    \"component_name\": \"nxos_vxlan_vtep_vni\", \n    \"component_raw\": \"nxos_vxlan_vtep_vni\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20260\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\", \n    \"summary\": \"Module has no effect when `state=absent`\", \n    \"title\": \"nxos_vxlan_vtep_vni Cannot remove vni\"\n  }, \n  \"20261\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nbigip_virtual_server.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThis patch adds the ability for users to specify a fallback persistence\\r\\nprofile for their virtual servers and a list of policies for the VS.\\r\\n\", \n    \"component_name\": \"bigip_virtual_server.py\", \n    \"component_raw\": \"bigip_virtual_server.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20261\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"feature\", \n      \"module\", \n      \"networking\", \n      \"owner_pr\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/f5/bigip_virtual_server.py\", \n    \"summary\": \"This patch adds the ability for users to specify a fallback persistence\\n\\nprofile for their virtual servers and a list of policies for the VS.\", \n    \"title\": \"Adds fallback_persistence_profile and all_policies to BIG-IP virtual servers\"\n  }, \n  \"20262\": {\n    \"ansible_version\": \"ansible 2.3.0 (nxos_vxlan_vtep_vni 3395a12256) last updated 2017/01/14 162943 (GMT -500)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnxos_vxlan_vtep_vni\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (nxos_vxlan_vtep_vni 3395a12256) last updated 2017/01/14 16:29:43 (GMT -500)\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n- Corrected type mismatch in `expand_section`\\r\\n- Check for empty `parents` in `get_object`\\r\\n- Corrected `_indent` property in `add`\\r\\n- Corrected `_parents` property in `add` since `netcfg.ConfigLine.parents` has no setter method\\r\\nFixes Issue #20260 \\r\\n\\r\\n\\r\\n```\\r\\n    \\\"updates\\\": [\\r\\n        \\\"interface nve1\\\",\\r\\n        \\\"no member vni XXXX\\\"\\r\\n    ]\\r\\n```\\r\\n\", \n    \"component_name\": \"nxos_vxlan_vtep_vni\", \n    \"component_raw\": \"nxos_vxlan_vtep_vni\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20262\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"community_review\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\", \n    \"summary\": \"- Corrected type mismatch in `expand_section`\\n\\n- Check for empty `parents` in `get_object`\\n\\n- Corrected `_indent` property in `add`\\n\\n- Corrected `_parents` property in `add` since `netcfg.ConfigLine.parents` has no setter method\\n\\nFixes Issue #20260 \\n\\n\\n\\n\\n\\n```\\n\\n    \\\"updates\\\": [\\n\\n        \\\"interface nve1\\\",\\n\\n        \\\"no member vni XXXX\\\"\\n\\n    ]\\n\\n```\", \n    \"title\": \"modified:   lib/ansible/modules/network/nxos/nxos_vxlan_vtep_vni.py\"\n  }, \n  \"20263\": {\n    \"ansible_version\": \"bash-4.1$ ansible --version\\nansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\\n-bash-4.1$\", \n    \"body\": \"\\r\\nsysctl module error \\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\n\\\"/tmp/ansible_MuXmOF/ansible_module_sysctl.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n-bash-4.1$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n-bash-4.1$\\r\\n```\\r\\n\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!--\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nRHEL 6.7\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nThe simple play of setting a sysctl parameter is not working\\r\\n\\r\\n```\\r\\n  - name: Restrict core dumps  via sysctl\\r\\n    sysctl:\\r\\n      name: fs.suid_dumpable\\r\\n      value: 0\\r\\n      state: present\\r\\n      ignoreerrors: yes\\r\\n```\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```\\r\\n\\r\\n  - name: Restrict core dumps  via sysctl\\r\\n    sysctl:\\r\\n      name: fs.suid_dumpable\\r\\n      value: 0\\r\\n      state: present\\r\\n      ignoreerrors: yes\\r\\n\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"/tmp/ansible_muxmof/ansible_module\", \n    \"component_raw\": \"\\\"/tmp/ansible_MuXmOF/ansible_module_sysctl.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20263\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"needs_info\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/sysctl.py\", \n    \"summary\": \"The simple play of setting a sysctl parameter is not working\\n\\n\\n\\n```\\n\\n  - name: Restrict core dumps  via sysctl\\n\\n    sysctl:\\n\\n      name: fs.suid_dumpable\\n\\n      value: 0\\n\\n      state: present\\n\\n      ignoreerrors: yes\\n\\n```\", \n    \"title\": \"sysctl module error\"\n  }, \n  \"20264\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible-vault\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nnone, standard config via pip installed ansible\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n`ansible-vault edit vault.yml` will create a new vault at the location of a symlinked file instead of editing the target file.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n* `ansible-vault create test.yml`\\r\\n* `ln -s test.yml link.yml`\\r\\n* `ansible-vault edit link.yml`\\r\\n* Make a change and save it\\r\\n* `ls -al`\\r\\n\\r\\n```\\r\\n-rw-------  1 ubuntu ubuntu  355 Jan 14 23:01 link.yml\\r\\n-rw-------  1 ubuntu ubuntu  355 Jan 14 23:01 test.yml\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nWhen running `ansible-vault edit link.yml` the contents of test.yml get updated.  This is the expected behavior of modifying symlinked files.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nA new vault `link.yml` is created, it's contents are now different from the original vault `test.yml`\\r\\n\", \n    \"component_name\": \"ansible-vault\", \n    \"component_raw\": \"ansible-vault\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20264\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"c:parsing/vault/\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"`ansible-vault edit vault.yml` will create a new vault at the location of a symlinked file instead of editing the target file.\", \n    \"title\": \"ansible-vault edit - doesn't follow symlinks\"\n  }, \n  \"20265\": {\n    \"ansible_version\": \"(edit devel/2.3.0-ish )\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\njunos_command\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n(edit: devel/2.3.0-ish )\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n  tasks:\\r\\n   - name: test\\r\\n     junos_command:\\r\\n          host: \\\"{{ inventory_hostname }}\\\"\\r\\n          username: \\\"xxx\\\"\\r\\n          password: \\\"xxx\\\"\\r\\n          format: 'xml'\\r\\n          commands:\\r\\n            - \\\"show version\\\"\\r\\n     register: response\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n```\\r\\n$ ansible-playbook junos_command_show_version.yml -i inventory.network -v\\r\\nNo config file found; using defaults\\r\\n\\r\\nPLAY [test] ********************************************************************\\r\\n\\r\\nTASK [test] ********************************************************************\\r\\nok: [junos_mx] => {\\\"changed\\\": false, \\\"stdout\\\": [\\\"<software-information>\\\\n<host-name/>\\\\n<product-model>olive</product-model>\\\\n<product-name>olive</product-name>\\\\n<package-information>\\\\n<name>junos</name>\\\\n<comment>JUNOS Base OS boot [12.1R1.9]</comment>\\\\n</package-information>\\\\n<package-information>\\\\n<name>jbase</name>\\\\n<comment>JUNOS Base OS Software Suite [12.1R1.9]</comment>\\\\n</package-information>\\\\n<package-information>\\\\n<name>jkernel</name>\\\\n<comment>JUNOS Kernel Software Suite [12.1R1.9]</comment>\\\\n</package-information>\\\\n<package-information>\\\\n<name>jcrypto</name>\\\\n<comment>JUNOS Crypto Software Suite [12.1R1.9]</comment>\\\\n</package-information>\\\\n<package-information>\\\\n<name>jpfe-common</name>\\\\n<comment>JUNOS Packet Forwarding Engine Support (M/T Common) [12.1R1.9]</comment>\\\\n</package-information>\\r\\n<-----snip---->\\r\\nPLAY RECAP *********************************************************************\\r\\njunos_mx                   : ok=1    changed=0    unreachable=0    failed=0   \\r\\n```\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n$ ansible-playbook junos_command_show_version.yml -i inventory.network -v\\r\\nNo config file found; using defaults\\r\\n\\r\\nPLAY [test] ********************************************************************\\r\\n\\r\\nTASK [test] ********************************************************************\\r\\nok: [junos_mx] => {\\\"changed\\\": false, \\\"stdout\\\": [{\\\"software-information\\\": {\\\"host-name\\\": \\\"\\\", \\\"package-information\\\": [{\\\"comment\\\": \\\"JUNOS Base OS boot [12.1R1.9]\\\", \\\"name\\\": \\\"junos\\\"}, {\\\"comment\\\": \\\"JUNOS Base OS Software Suite [12.1R1.9]\\\", \\\"name\\\": \\\"jbase\\\"}, {\\\"comment\\\": \\\"JUNOS Kernel Software Suite [12.1R1.9]\\\", \\\"name\\\": \\\"jkernel\\\"}, {\\\"comment\\\": \\\"JUNOS Crypto Software Suite [12.1R1.9]\\\", \\\"name\\\": \\\"jcrypto\\\"}, {\\\"comment\\\": \\\"JUNOS Packet Forwarding Engine Support (M/T Common) [12.1R1.9]\\\", \\\"name\\\": \\\"jpfe-common\\\"}, {\\\"comment\\\": \\\"JUNOS Packet Forwarding Engine Support (M20/M40) [12.1R1.9]\\\", \\\"name\\\": \\\"jpfe\\\"}, {\\\"comment\\\": \\\"JUNOS Online Documentation [12.1R1.9]\\\", \\\"name\\\": \\\"jdocs\\\"}, {\\\"comment\\\": \\\"JUNOS Voice Services Container package [12.1R1.9]\\\", \\\"name\\\": \\\"jservices-voice\\\"}, {\\\"comment\\\": \\\"JUNOS Border Gateway Function package [12.1R1.9]\\\", \\\"name\\\": \\\"jservices-bgf\\\"}, {\\\"comment\\\": \\\"JUNOS Services AACL Container package [12.1R1.9]\\\", \\r\\n<----snip--->\\r\\nPLAY RECAP *********************************************************************\\r\\njunos_mx                   : ok=1    changed=0    unreachable=0    failed=0  \\r\\n```\\r\\n\", \n    \"component_name\": \"junos_command\", \n    \"component_raw\": \"junos_command\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20265\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/junos/junos_command.py\", \n    \"summary\": \"\", \n    \"title\": \"If junos_command format is 'xml' output should be in xml format and not json \"\n  }, \n  \"20266\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.3.0 (devel cba66dfedc)\", \n    \"body\": \"\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\njunos_command\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.3.0 (devel cba66dfedc)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\nResponse received from device is of type lxml.etree._Element.\\r\\nIf output format in playbook is 'xml' response should be\\r\\nconverted to xml (string). For 'json' output format response\\r\\nshould be converted in json format.\\r\\n```\\r\\n\", \n    \"component_name\": \"junos_command\", \n    \"component_raw\": \"junos_command\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20266\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"```\\n\\nResponse received from device is of type lxml.etree._Element.\\n\\nIf output format in playbook is 'xml' response should be\\n\\nconverted to xml (string). For 'json' output format response\\n\\nshould be converted in json format.\\n\\n```\", \n    \"title\": \"Fix #20265 junos_command output for xml format\"\n  }, \n  \"20267\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nwinrm\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nWhen installing Ansible on CentOS 7 or RHEL7, you get:\\r\\n\\r\\n    winrm is not installed\\r\\n\\r\\nHowever, when you install python-winrm, you still get:\\r\\n\\r\\n    winrm is not installed\\r\\n\\r\\nThe requests python module is needed, however it is not a dependency of\\r\\nthe python-winrm package. The python-winrm package does require\\r\\npython-requests_ntlm, which does not seem to pull python-requests.\\r\\n\\r\\nSo for the time being (until Red Hat fixes their package) give a more\\r\\ninformative error message. Not sure if pip does dependencies correctly either.\", \n    \"component_name\": \"winrm\", \n    \"component_raw\": \"winrm\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20267\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/connection\", \n      \"c:plugins/connection/winrm\", \n      \"docs\", \n      \"needs_revision\", \n      \"windows\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When installing Ansible on CentOS 7 or RHEL7, you get:\\n\\n\\n\\n    winrm is not installed\\n\\n\\n\\nHowever, when you install python-winrm, you still get:\\n\\n\\n\\n    winrm is not installed\\n\\n\\n\\nThe requests python module is needed, however it is not a dependency of\\n\\nthe python-winrm package. The python-winrm package does require\\n\\npython-requests_ntlm, which does not seem to pull python-requests.\\n\\n\\n\\nSo for the time being (until Red Hat fixes their package) give a more\\n\\ninformative error message. Not sure if pip does dependencies correctly either.\", \n    \"title\": \"winrm: Improve import error message\"\n  }, \n  \"20269\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.2.1.0 (stable-2.2 0c153146e3) last updated 2017/01/15 142101 (GMT +200)\\nlib/ansible/modules/core (detached HEAD b387c9c1e2) last updated 2017/01/15 142134 (GMT +200)\\nlib/ansible/modules/extras (detached HEAD e9bf9fd844) last updated 2017/01/15 142152 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nnxos_feature\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible --version\\r\\nansible 2.2.1.0 (stable-2.2 0c153146e3) last updated 2017/01/15 14:21:01 (GMT +200)\\r\\n  lib/ansible/modules/core: (detached HEAD b387c9c1e2) last updated 2017/01/15 14:21:34 (GMT +200)\\r\\n  lib/ansible/modules/extras: (detached HEAD e9bf9fd844) last updated 2017/01/15 14:21:52 (GMT +200)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nrunning on OSX\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nTrying to enable feature but module fails.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\ncon_details:\\r\\n  username: \\\"{{ nxos_username }}\\\"\\r\\n  password: \\\"{{ nxos_password }}\\\"\\r\\n  host: \\\"{{ inventory_hostname }}\\\"\\r\\n  transport: cli\\r\\n\\r\\n- name: Enable Tacacs\\r\\n  nxos_feature:\\r\\n    feature: tacacs\\r\\n    state: enabled\\r\\n    provider: \\\"{{ con_details }}\\\"\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/var/folders/pz/zc91xtc54w99yt0h33t6gq9m0000gp/T/ansible_rtyOeQ/ansible_module_nxos_feature.py\\\", line 481, in <module>\\r\\n    main()\\r\\n  File \\\"/var/folders/pz/zc91xtc54w99yt0h33t6gq9m0000gp/T/ansible_rtyOeQ/ansible_module_nxos_feature.py\\\", line 443, in main\\r\\n    available_features = get_available_features(feature, module)\\r\\n  File \\\"/var/folders/pz/zc91xtc54w99yt0h33t6gq9m0000gp/T/ansible_rtyOeQ/ansible_module_nxos_feature.py\\\", line 340, in get_available_features\\r\\n    split_body = body[0].splitlines()\\r\\nAttributeError: 'dict' object has no attribute 'splitlines'\\r\\n\\r\\nfatal: [10.56.140.14]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"nxos_feature\\\"\\r\\n    }, \\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/var/folders/pz/zc91xtc54w99yt0h33t6gq9m0000gp/T/ansible_rtyOeQ/ansible_module_nxos_feature.py\\\\\\\", line 481, in <module>\\\\n    main()\\\\n  File \\\\\\\"/var/folders/pz/zc91xtc54w99yt0h33t6gq9m0000gp/T/ansible_rtyOeQ/ansible_module_nxos_feature.py\\\\\\\", line 443, in main\\\\n    available_features = get_available_features(feature, module)\\\\n  File \\\\\\\"/var/folders/pz/zc91xtc54w99yt0h33t6gq9m0000gp/T/ansible_rtyOeQ/ansible_module_nxos_feature.py\\\\\\\", line 340, in get_available_features\\\\n    split_body = body[0].splitlines()\\\\nAttributeError: 'dict' object has no attribute 'splitlines'\\\\n\\\", \\r\\n    \\\"module_stdout\\\": \\\"\\\", \\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"nxos_feature\", \n    \"component_raw\": \"nxos_feature\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20269\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nxos/nxos_feature.py\", \n    \"summary\": \"Trying to enable feature but module fails.\", \n    \"title\": \"nxos_feature fails enabling or disabling\"\n  }, \n  \"20270\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnxos_feature\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nSolves #20269. Affects 2.2 as well.\\r\\n\", \n    \"component_name\": \"nxos_feature\", \n    \"component_raw\": \"nxos_feature\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20270\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"community_review\", \n      \"module\", \n      \"networking\", \n      \"owner_pr\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/nxos/nxos_feature.py\", \n    \"summary\": \"Solves #20269. Affects 2.2 as well.\", \n    \"title\": \"Fixing nxos_feature\"\n  }, \n  \"20278\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n`services`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nUbuntu 16.04\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\n```\\r\\n  service:\\r\\n    name: postgresql\\r\\n    state: started\\r\\n```\\r\\n\\r\\npasses as green (`ok`) even though my postgres service is NOT running. On the machine\\r\\n\\r\\n```\\r\\n# service postgresql status\\r\\n\\u25cf postgresql.service - PostgreSQL RDBMS\\r\\n   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; \\r\\n   Active: active (exited) since Sun 2017-01-15 22:55:56 UTC; 2h 10m\\r\\n  Process: 913 ExecStart=/bin/true (code=exited, status=0/SUCCESS)\\r\\n Main PID: 913 (code=exited, status=0/SUCCESS)\\r\\n```\\r\\n\\r\\nThe service has quit because (from logs): `FATAL:  could not open relation mapping file \\\"global/pg_filenode.map\\\": No such file or directory` -- some configuration problem, what exactly it is isn't important for this issue.\\r\\n\\r\\n* Why does ansible think the service is `started` when clearly it's `exited`?\\r\\n* Or is this a terminology problem, and `started` means \\\"anything systemd reports as OK, even if it's actually `not started`\\\"? If that is the case, what's the right solution to codify that I want the service to be running?\", \n    \"component_name\": \"services\", \n    \"component_raw\": \"`services`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20278\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/service.py\", \n    \"summary\": \"```\\n\\n  service:\\n\\n    name: postgresql\\n\\n    state: started\\n\\n```\\n\\n\\n\\npasses as green (`ok`) even though my postgres service is NOT running. On the machine\\n\\n\\n\\n```\\n\\n# service postgresql status\\n\\n postgresql.service - PostgreSQL RDBMS\\n\\n   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; \\n\\n   Active: active (exited) since Sun 2017-01-15 22:55:56 UTC; 2h 10m\\n\\n  Process: 913 ExecStart=/bin/true (code=exited, status=0/SUCCESS)\\n\\n Main PID: 913 (code=exited, status=0/SUCCESS)\\n\\n```\\n\\n\\n\\nThe service has quit because (from logs): `FATAL:  could not open relation mapping file \\\"global/pg_filenode.map\\\": No such file or directory` -- some\", \n    \"title\": \"service module understands exited postgresql process as started\"\n  }, \n  \"20279\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nwin_regedit\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nCurrently it is unclear how to set the default value for a key. This is\\r\\ne.g. used when specifying the default action for a file association.\\r\\n\\r\\nBy allowing it to be undefined, it comes more naturally. But also if it\\r\\nis provided as an empty string, it makes sense to mean that it is the\\r\\n\\\"(default)\\\" value.\", \n    \"component_name\": \"win_regedit\", \n    \"component_raw\": \"win_regedit\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20279\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"needs_revision\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_regedit.ps1\", \n    \"summary\": \"Currently it is unclear how to set the default value for a key. This is\\n\\ne.g. used when specifying the default action for a file association.\\n\\n\\n\\nBy allowing it to be undefined, it comes more naturally. But also if it\\n\\nis provided as an empty string, it makes sense to mean that it is the\\n\\n\\\"(default)\\\" value.\", \n    \"title\": \"win_regedit: Use \\\"(default)\\\" as the default value name\"\n  }, \n  \"20280\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel c5d3aac822) last updated 2017/01/16 113857 (GMT +1000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2 inventory\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel c5d3aac822) last updated 2017/01/16 11:38:57 (GMT +1000)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n* Ensure `AWS_PROFILE` environment variable overrides config file\\r\\n* Remove unnecessary `lambda` function\\r\\n* Fix cache file path construction to be more pythonic (and windows-ready)\\r\\n\", \n    \"component_name\": \"ec2 inventory\", \n    \"component_raw\": \"ec2 inventory\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20280\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"* Ensure `AWS_PROFILE`\", \n    \"title\": \"Improve boto profile handling for EC2 inventory\"\n  }, \n  \"20281\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nwin_copy\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nThis patch fixes an idempotency issue with win_copy. Without this patch\\r\\nfiles would always be considered changed (unless the copy operation failed).\\r\\n\\r\\nIt also fixes the resulting output cfr. what was documented.\", \n    \"component_name\": \"win_copy\", \n    \"component_raw\": \"win_copy\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20281\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"needs_revision\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_copy.ps1\", \n    \"summary\": \"This patch fixes an idempotency issue with win_copy. Without this patch\\n\\nfiles would always be considered changed (unless the copy operation failed).\\n\\n\\n\\nIt also fixes the resulting output cfr. what was documented.\", \n    \"title\": \"win_copy: Fix for idempotency\"\n  }, \n  \"20282\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nwindows modules\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nThis PR is based on #20164 functionality to specify the parameter type\\r\\n(e.g. as done for python modules).\\r\\n\\r\\nIn this case only -type \\\"path\\\" has a specific meaning, as it will expand\\r\\nenvironment variables for paths. Which is typically done on Windows.\\r\\n\\r\\nSo you can do:\\r\\n\\r\\n    - win_copy:\\r\\n        src: files/some.doc\\r\\n        dest: '%UserProfile%\\\\My Documents'\\r\\n\\r\\n    - win_shortcut:\\r\\n        src: 'https://ansible.com/'\\r\\n        dest: '%Public%/Desktop/Ansible website.lnk'\", \n    \"component_name\": \"windows  s\", \n    \"component_raw\": \"windows modules\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20282\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"feature\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_uri.ps1\", \n    \"summary\": \"This PR is based on #20164 functionality to specify the parameter type\\n\\n(e.g. as done for python modules).\\n\\n\\n\\nIn this case only -type \\\"path\\\" has a specific meaning, as it will expand\", \n    \"title\": \"Windows modules: Add -type \\\"path\\\" to path parameters\"\n  }, \n  \"20283\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nwin_regedit\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nWindows 10\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWhen I run the following task:\\r\\n```yaml\\r\\n  - name: Enable VideoLan Client for ISO images\\r\\n    win_regedit:\\r\\n      key: 'HKCR:\\\\Windows.IsoFile\\\\shell\\\\Open\\\\command'\\r\\n      value: '(default)'\\r\\n      data: '\\\"%ProgramFiles%\\\\VideoLAN\\\\VLC\\\\vlc.exe\\\" --started-from-file \\\"%1\\\"'\\r\\n      datatype: 'expandstring'\\r\\n```\\r\\n\\r\\nIt reports a change the first time:\\r\\n```\\r\\nTASK [Enable VideoLan Client for ISO images] ***********************************************************\\r\\nchanged: [computer61] => (item={u'type': u'expandstring', u'data': u'\\\"%ProgramFiles%\\\\\\\\VideoLAN\\\\\\\\VLC\\\\\\\\vlc.exe\\\" --started-from-file \\\"%1\\\"', u'value': u'(default)', u'key': u'HKCR:\\\\\\\\Windows.IsoFile\\\\\\\\shell\\\\\\\\Open\\\\\\\\command'}) => {\\\"changed\\\": true, \\\"data_changed\\\": false, \\\"data_type_changed\\\": false, \\\"item\\\": {\\\"data\\\": \\\"\\\\\\\"%ProgramFiles%\\\\\\\\VideoLAN\\\\\\\\VLC\\\\\\\\vlc.exe\\\\\\\" --started-from-file \\\\\\\"%1\\\\\\\"\\\", \\\"key\\\": \\\"HKCR:\\\\\\\\Windows.IsoFile\\\\\\\\shell\\\\\\\\Open\\\\\\\\command\\\", \\\"type\\\": \\\"expandstring\\\", \\\"value\\\": \\\"(default)\\\"}}\\r\\n```\\r\\n\\r\\nAnd an error every subsequent run:\\r\\n```\\r\\nTASK [Enable VideoLan Client for ISO images] ***********************************************************\\r\\nfailed: [computer61] (item={u'type': u'expandstring', u'data': u'\\\"%ProgramFiles%\\\\\\\\VideoLAN\\\\\\\\VLC\\\\\\\\vlc.exe\\\" --started-from-file \\\"%1\\\"', u'value': u'(default)', u'key': u'HKCR:\\\\\\\\Windows.IsoFile\\\\\\\\shell\\\\\\\\Open\\\\\\\\command'}) => {\\\"changed\\\": false, \\\"data_changed\\\": false, \\\"data_type_changed\\\": false, \\\"failed\\\": true, \\\"item\\\": {\\\"data\\\": \\\"\\\\\\\"%ProgramFiles%\\\\\\\\VideoLAN\\\\\\\\VLC\\\\\\\\vlc.exe\\\\\\\" --started-from-file \\\\\\\"%1\\\\\\\"\\\", \\\"key\\\": \\\"HKCR:\\\\\\\\Windows.IsoFile\\\\\\\\shell\\\\\\\\Open\\\\\\\\command\\\", \\\"type\\\": \\\"expandstring\\\", \\\"value\\\": \\\"(default)\\\"}, \\\"msg\\\": \\\"Property (default) does not exist at path HKEY_CLASSES_ROOT\\\\\\\\Windows.IsoFile\\\\\\\\shell\\\\\\\\Open\\\\\\\\command.\\\"}\\r\\n```\", \n    \"component_name\": \"win_regedit\", \n    \"component_raw\": \"win_regedit\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20283\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_regedit.py\", \n    \"summary\": \"When I run the following task:\\n\\n```yaml\\n\\n  - name: Enable VideoLan Client for ISO images\\n\\n    win_regedit:\\n\\n      key: 'HKCR:\\\\Windows.IsoFile\\\\shell\\\\Open\\\\command'\\n\\n      value: '(default)'\\n\\n      data: '\\\"%ProgramFiles%\\\\VideoLAN\\\\VLC\\\\vlc.exe\\\" --started-from-file \\\"%1\\\"'\\n\\n      datatype: 'expandstring'\\n\\n```\\n\\n\\n\\nIt reports a change the first time:\\n\\n```\\n\\nTASK [Enable VideoLan Client for ISO images] ***********************************************************\\n\\nchanged: [computer61] => (item={u'type': u'expandstring', u'data': u'\\\"%ProgramFiles%\\\\\\\\VideoLAN\\\\\\\\VLC\\\\\\\\vlc.exe\\\" --started-from-file \\\"%1\\\"', u'value': u'(default)', u'key': u'HKCR:\\\\\\\\Windows.IsoFile\\\\\\\\shell\\\\\\\\Open\\\\\\\\command'}) => {\\\"changed\\\": true, \\\"data_changed\\\": false, \\\"data_type_changed\\\": false, \\\"item\\\": {\\\"data\\\": \\\"\\\\\\\"%ProgramFiles%\\\\\\\\VideoLAN\\\\\\\\VLC\\\\\\\\vlc.exe\\\\\\\" --started-from-file \\\\\\\"%1\\\\\\\"\\\", \\\"key\\\": \\\"HKCR:\\\\\\\\Windows.IsoFile\\\\\\\\shell\\\\\\\\Open\\\\\\\\command\\\", \\\"type\\\": \\\"expandstring\\\", \\\"value\\\": \\\"(default)\\\"}}\\n\\n```\\n\\n\\n\\nAnd an error every subsequent run:\\n\\n```\\n\\nTASK [Enable VideoLan Client for ISO images] ***********************************************************\\n\\nfailed: [computer61] (item={u'type': u'expandstring', u'data': u'\\\"%ProgramFiles%\\\\\\\\VideoLAN\\\\\\\\VLC\\\\\\\\vlc.exe\\\" --started-from-file \\\"%1\\\"', u'value': u'(default)', u'key': u'HKCR:\\\\\\\\Windows.IsoFile\\\\\\\\shell\\\\\\\\Open\\\\\\\\command'}) => {\\\"changed\\\": false, \\\"data_changed\\\": false, \\\"data_type_changed\\\": false, \\\"failed\\\": true, \\\"item\\\": {\\\"data\\\": \\\"\\\\\\\"%ProgramFiles%\\\\\\\\VideoLAN\\\\\\\\VLC\\\\\\\\vlc.exe\\\\\\\" --started-from-file \\\\\\\"%1\\\\\\\"\\\", \\\"key\\\": \\\"HKCR:\\\\\\\\Windows.IsoFile\\\\\\\\shell\\\\\\\\Open\\\\\\\\command\\\", \\\"type\\\": \\\"expandstring\\\", \\\"value\\\": \\\"(default)\\\"}, \\\"msg\\\": \\\"Property (default) does not exist at path HKEY_CLASSES_ROOT\\\\\\\\Windows.IsoFile\\\\\\\\shell\\\\\\\\Open\\\\\\\\command.\\\"}\\n\\n```\", \n    \"title\": \"win_regedit: Idempotency issue\"\n  }, \n  \"20285\": {\n    \"ansible_version\": \"ansible 2.2.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nAnsible core\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nArch Linux, with the following packages:\\r\\n\\r\\n```\\r\\n% pacman -Qi ansible\\r\\nName            : ansible\\r\\nVersion         : 2.2.1.0rc5-3\\r\\nDescription     : Radically simple IT automation platform\\r\\nArchitecture    : any\\r\\nURL             : http://www.ansible.com\\r\\nLicenses        : GPL3\\r\\nGroups          : None\\r\\nProvides        : python2-ansible\\r\\nDepends On      : python2  python2-yaml  python2-paramiko  python2-jinja  python2-crypto\\r\\nOptional Deps   : python2-passlib: crypt values for vars_prompt\\r\\n                  python2-netaddr: for the ipaddr filter\\r\\n                  python2-systemd: log to journal\\r\\nRequired By     : None\\r\\nOptional For    : None\\r\\nConflicts With  : None\\r\\nReplaces        : None\\r\\nInstalled Size  : 31.22 MiB\\r\\nPackager        : Sven-Hendrik Haase <sh@lutzhaase.com>\\r\\nBuild Date      : Mon 16 Jan 2017 02:02:23 AM GMT\\r\\nInstall Date    : Mon 16 Jan 2017 07:24:44 AM GMT\\r\\nInstall Reason  : Explicitly installed\\r\\nInstall Script  : No\\r\\nValidated By    : Signature\\r\\n\\r\\n% pacman -Qi python2-jinja\\r\\nName            : python2-jinja\\r\\nVersion         : 2.9.4-1\\r\\nDescription     : A simple pythonic template language written in Python\\r\\nArchitecture    : any\\r\\nURL             : http://jinja.pocoo.org/\\r\\nLicenses        : BSD\\r\\nGroups          : None\\r\\nProvides        : None\\r\\nDepends On      : python2-setuptools  python2-markupsafe\\r\\nOptional Deps   : None\\r\\nRequired By     : ansible\\r\\nOptional For    : None\\r\\nConflicts With  : None\\r\\nReplaces        : None\\r\\nInstalled Size  : 2032.00 KiB\\r\\nPackager        : Evangelos Foutras <evangelos@foutrelis.com>\\r\\nBuild Date      : Wed 11 Jan 2017 03:28:14 AM GMT\\r\\nInstall Date    : Mon 16 Jan 2017 07:29:17 AM GMT\\r\\nInstall Reason  : Installed as a dependency for another package\\r\\nInstall Script  : No\\r\\nValidated By    : Signature\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThis seems to have something to do with #20197. I didn't find the exact code (the stack implicates our dependency on cryptography, but cryptography has no dependency on jinja at all), but we require jinja>2.9, but Arch Linux ships Jinja 2.9.4. This means that builds from the official Arch Linux repositories (and, I assume, other distributions that try to quickly update from upstream).\\r\\n\\r\\nFor now I can install this in a virtualenv I guess, but that seems nasty compared to this just working.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n1. Run `ansible-playbook` on any playbook on Arch Linux.\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nAnsible works.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nroot@ansible-personal % ansible-playbook -i localhost, -v setup.yml -vvv\\r\\nUsing /etc/ansible/ansible.cfg as config file\\r\\nSet default localhost to localhost\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/pacman.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/network.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/ssh.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/zsh.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/users.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/aur.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/sudo.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/ntp.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/fonts.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/xorg.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/blacklist-pc-speaker.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/desktop.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/basic-tools.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/cron.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/systemd.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/email.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/media.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/chinese.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/sysctl.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/shared.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/pkgfile.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/vostro-tools.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/lin-dev.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/udev.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/printing.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/sound.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/skype.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/power.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/remove.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/debugging.yml\\r\\nskipping vars_file 'vars/{{ config_file }}.yml' due to an undefined variable\\r\\nstatically included: /root/git/ansible-personal/tasks/locale.yml\\r\\nLoading callback plugin default of type stdout, v2.0 from /usr/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc\\r\\nERROR! Unexpected Exception: The 'jinja2<2.9' distribution was not found and is required by ansible\\r\\nthe full traceback was:\\r\\n\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/usr/sbin/ansible-playbook\\\", line 103, in <module>\\r\\n    exit_code = cli.run()\\r\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/cli/playbook.py\\\", line 159, in run\\r\\n    results = pbex.run()\\r\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/executor/playbook_executor.py\\\", line 89, in run\\r\\n    self._tqm.load_callbacks()\\r\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/executor/task_queue_manager.py\\\", line 177, in load_callbacks\\r\\n    for callback_plugin in callback_loader.all(class_only=True):\\r\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/plugins/__init__.py\\\", line 394, in all\\r\\n    self._module_cache[path] = self._load_module_source(name, path)\\r\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/plugins/__init__.py\\\", line 324, in _load_module_source\\r\\n    module = imp.load_source(name, path, module_file)\\r\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/plugins/callback/foreman.py\\\", line 30, in <module>\\r\\n    import requests\\r\\n  File \\\"/usr/lib/python2.7/site-packages/requests/__init__.py\\\", line 52, in <module>\\r\\n    from .packages.urllib3.contrib import pyopenssl\\r\\n  File \\\"/usr/lib/python2.7/site-packages/urllib3/contrib/pyopenssl.py\\\", line 47, in <module>\\r\\n    import OpenSSL.SSL\\r\\n  File \\\"/usr/lib/python2.7/site-packages/OpenSSL/__init__.py\\\", line 8, in <module>\\r\\n    from OpenSSL import rand, crypto, SSL\\r\\n  File \\\"/usr/lib/python2.7/site-packages/OpenSSL/crypto.py\\\", line 13, in <module>\\r\\n    from cryptography.hazmat.primitives.asymmetric import dsa, rsa\\r\\n  File \\\"/usr/lib/python2.7/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py\\\", line 14, in <module>\\r\\n    from cryptography.hazmat.backends.interfaces import RSABackend\\r\\n  File \\\"/usr/lib/python2.7/site-packages/cryptography/hazmat/backends/__init__.py\\\", line 7, in <module>\\r\\n    import pkg_resources\\r\\n  File \\\"/usr/lib/python2.7/site-packages/pkg_resources/__init__.py\\\", line 3019, in <module>\\r\\n    @_call_aside\\r\\n  File \\\"/usr/lib/python2.7/site-packages/pkg_resources/__init__.py\\\", line 3003, in _call_aside\\r\\n    f(*args, **kwargs)\\r\\n  File \\\"/usr/lib/python2.7/site-packages/pkg_resources/__init__.py\\\", line 3032, in _initialize_master_working_set\\r\\n    working_set = WorkingSet._build_master()\\r\\n  File \\\"/usr/lib/python2.7/site-packages/pkg_resources/__init__.py\\\", line 657, in _build_master\\r\\n    return cls._build_from_requirements(__requires__)\\r\\n  File \\\"/usr/lib/python2.7/site-packages/pkg_resources/__init__.py\\\", line 670, in _build_from_requirements\\r\\n    dists = ws.resolve(reqs, Environment())\\r\\n  File \\\"/usr/lib/python2.7/site-packages/pkg_resources/__init__.py\\\", line 849, in resolve\\r\\n    raise DistributionNotFound(req, requirers)\\r\\nDistributionNotFound: The 'jinja2<2.9' distribution was not found and is required by ansible\\r\\n```\\r\\n\", \n    \"component_name\": \"ansible core\", \n    \"component_raw\": \"Ansible core\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20285\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This seems to have something to do with #20197. I didn't find the exact code (the stack implicates our dependency on cryptography, but cryptography has no dependency on jinja at all), but we require jinja>2.9, but Arch Linux ships Jinja 2.9.4. This means that builds from the official Arch Linux repositories (and, I assume, other distributions that try to quickly update from upstream).\\n\\n\\n\\nFor now I can install this in a virtualenv I guess, but that seems nasty compared to this just working.\", \n    \"title\": \"Jinja >2.9 requirement breaks package dependencies on Arch Linux\"\n  }, \n  \"20286\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_group\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nThe current handling of security groups in other accounts is broken in two ways:\\r\\n1. it requires knowing the group-id, not just the group-name\\r\\n2. it doesn't handle multiples groups with the same name but in different accounts\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nInstead of this:\\r\\n```\\r\\n  rules:\\r\\n    - proto: tcp\\r\\n      from_port: 9999\\r\\n      to_port: 9999\\r\\n      group_id: \\\"{{ acct1 }}/sg-11111111/group-foo\\\"\\r\\n    - proto: tcp\\r\\n      from_port: 9999\\r\\n      to_port: 9999\\r\\n      group_id: \\\"{{ acct2 }}/sg-22222222/group-foo\\\"\\r\\n```\\r\\nwe need to be able specify rules like this:\\r\\n```\\r\\n  rules:\\r\\n    - proto: tcp\\r\\n      from_port: 9999\\r\\n      to_port: 9999\\r\\n      group_name: \\\"{{ acct1 }}/group-foo\\\"\\r\\n    - proto: tcp\\r\\n      from_port: 9999\\r\\n      to_port: 9999\\r\\n      group_name: \\\"{{ acct2 }}/group-foo\\\"\\r\\n```\\r\\n\\r\\nFirst of all, requiring the group-id here is very painful when this is used to create security-groups in multple regions, because while the group name can be kept the same, the group-id's are different (since they are assigned by Amazon). We really want to be able to specify just the group name.\\r\\n\\r\\nSecond, the code currently stores entries in the `groups` dictionary based on name, which obviously fails in the above case where there are multiple groups in different accounts but with the same name. Instead, the entries need to be stored under keys like `<acct>/<group-name>` or similar.\\r\\n\\r\\nThis is re-post of issue ansible/ansible-modules-core#3529\", \n    \"component_name\": \"ec2_group\", \n    \"component_raw\": \"ec2_group\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20286\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_group.py\", \n    \"summary\": \"The current handling of security groups in other accounts is broken in two ways:\\n\\n1. it requires knowing the group-id, not just the group-name\\n\\n2. it doesn't handle multiples groups with the same name but in different accounts\", \n    \"title\": \"ec2_group failings when using groups in other accounts\"\n  }, \n  \"20287\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nInclude\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\ndefault\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nN/A\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\nIf you skip an include task, it seems that every task in that file gets evaluated, although they will be skipped anyway.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n\\r\\nmain.yml\\r\\n```yaml\\r\\n- name: \\\"Include a file (This task will be skipped)\\\"\\r\\n  include: additional_task.yml\\r\\n  when: false_variable\\r\\n```\\r\\n\\r\\nadditional_task.yml\\r\\n```yaml\\r\\n- name: \\\"Retrieve something\\\"\\r\\n  shell: ls -1 /etc/sysconfig/network-scripts/ifcfg-*\\r\\n  register: network_scripts\\r\\n\\r\\n- name: \\\"Do something\\\"\\r\\n  file: path={{ item }}\\r\\n        state=absent\\r\\n  with_items: \\\"{{ network_scripts.stdout_lines }}\\\"\\r\\n  when: item == condition\\r\\n```\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nI would expted that the task in additional_task.yml were not included and dont even show up\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nTASK [Retrieve something] *************************\\r\\n[0;36m skipping: [hostname][0m\\r\\n\\r\\nTASK [Do something] *******************************\\r\\n[0;31mfatal: [hostname]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"'dict object' has no attribute 'stdout_lines'\\\"}[0m\\r\\n\\tto retry, use: --limit @/var/lib/awx/projects/xxx/taskname.retry\\r\\n```\\r\\n\\r\\n##### WORKAROUND\\r\\nIf I set a default to the variable it works again, but it seems pretty unnecassary to try to evaluate every item if the task is skipped anyway.\\r\\n\\r\\n```yaml\\r\\n- name: \\\"Retrieve something\\\"\\r\\n  shell: ls -1 /etc/sysconfig/network-scripts/ifcfg-*\\r\\n  register: network_scripts\\r\\n\\r\\n- name: \\\"Do something\\\"\\r\\n  file: path={{ item }}\\r\\n        state=absent\\r\\n  with_items: \\\"{{ network_scripts.stdout_lines | default (' ') }}\\\"\\r\\n  when: item == condition\\r\\n```\\r\\n\", \n    \"component_name\": \"include\", \n    \"component_raw\": \"Include\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20287\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/include.py\", \n    \"summary\": \"If you skip an include task, it seems that every task in that file gets evaluated, although they will be skipped anyway.\", \n    \"title\": \"Skipped includes get evaluated\"\n  }, \n  \"20288\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\napache2_module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nDebian 8\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\nAnsible fails to disable a module with apache2_module if module .load file name does not match the output of `apache2ctl -M`.\\r\\n\\r\\nFor example. Current naming of mod_php for php7.0 and php7.1 have the .load files that are named php7.0.load and php7.1.load. \\r\\n\\r\\nApache2_module uses `apache2ctl -M` to determine if the module is already enabled. `apace2ctl -M` will display the module name as \\\"php7_module\\\" for both php7.0 and php7.1. \\r\\n\\r\\nThis causes situations, for example with disabling php7.1 module, where ansible does not register the module as enabled and thus will not disable it. It will only report the task result as unchanged. \\r\\n\\r\\nCurrently in the source, there is a fix for Ubuntu Xenial (Will work with any php7.0 though) that will use the module prefix \\\"php7\\\" if the module to be enabled/disabled is named \\\"php7.0\\\", but this of course does not work for php7.1. \\r\\n\\r\\n```\\r\\n    \\\"\\\"\\\"\\r\\n    Work around for Ubuntu Xenial listing php7_module as php7.0\\r\\n    \\\"\\\"\\\"\\r\\n    if name == \\\"php7.0\\\":\\r\\n        name = \\\"php7\\\"\\r\\n```\\r\\n\\r\\nTo make a more permanent fix. apache2_module should use `a2query -m` instead of `apache2ctl -M` to determine if a module is already enabled. \\r\\n\\r\\n`apache2ctl -M` output (while mod_php 7.1 is enabled): \\r\\n```\\r\\n$ apache2ctl -M\\r\\n...\\r\\nphp7_module\\r\\n```\\r\\n\\r\\n`a2query -m` output (while mod_php 7.1 is enabled): \\r\\n```\\r\\n$ a2query -m php7.1\\r\\nphp7.1 (enabled by site administrator)\\r\\n```\\r\\n\\r\\nBy using `a2query -m` the module name used is the same when checking if the module is enabled and while actually disabling the module with `a2dismod`\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n    - name: Disable mod_php 7.1\\r\\n      apache2_module: name=php7.1 state=absent\\r\\n```\\r\\n##### EXPECTED RESULTS\\r\\n```\\r\\nTASK [Disable mod_php 7.1] ********************************************\\r\\nchanged: [testnode] => (item=php7.1)\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nTASK [Disable mod_php 7.1] ********************************************\\r\\nok: [testnode] => (item=php7.1)\\r\\n```\", \n    \"component_name\": \"apache2_module\", \n    \"component_raw\": \"apache2_module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20288\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"waiting_on_contributor\"\n    ], \n    \"module_match\": \"lib/ansible/modules/web_infrastructure/apache2_module.py\", \n    \"summary\": \"Ansible fails to disable a module with apache2_module if module .load file name does not match the output of `apache2ctl -M`.\\n\\n\\n\\nFor example. Current naming of mod_php for php7.0 and php7.1 have the .load files that are named php7.0.load and php7.1.load. \\n\\n\\n\\nApache2_module uses `apache2ctl -M` to determine if the module is already enabled. `apace2ctl -M` will display the module name as \\\"php7_module\\\" for both php7.0 and php7.1. \\n\\n\\n\\nThis causes situations, for example with disabling php7.1 module, where ansible does not register the module as enabled and thus will not disable it. It will only report the task result as unchanged. \\n\\n\\n\\nCurrently in the source, there is a fix for Ubuntu Xenial (Will work with any php7.0 though) that will use the module prefix \\\"php7\\\" if the module to be enabled/disabled is named \\\"php7.0\\\", but this of course does not work for php7.1. \\n\\n\\n\\n```\\n\\n    \\\"\\\"\\\"\\n\\n    Work around for Ubuntu Xenial listing php7_module as php7.0\\n\\n    \\\"\\\"\\\"\\n\\n    if name == \\\"php7.0\\\":\\n\\n        name = \\\"php7\\\"\\n\\n```\\n\\n\\n\\nTo make a more permanent fix. apache2_module should use `a2query -m` instead of `apache2ctl -M` to determine if a module is already enabled. \\n\\n\\n\\n`apache2ctl -M` output (while mod_php 7.1 is enabled): \\n\\n```\\n\\n$ apache2ctl -M\\n\\n...\\n\\nphp7_module\\n\\n```\\n\\n\\n\\n`a2query -m` output (while mod_php 7.1 is enabled): \\n\\n```\\n\\n$ a2query -m php7.1\\n\\nphp7.1 (enabled by site administrator)\\n\\n```\\n\\n\\n\\nBy using `a2query -m` the module name used is the same when checking if the module is enabled and while actually disabling the module with `a2dismod`\", \n    \"title\": \"apache2_module fails to disable module if module name does not match 'apache2ctl -M' output\"\n  }, \n  \"20290\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\n\\r\\nAffected: `template` lookup plugin.\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\nDefault configuration\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\nDebian Jessie.\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\nWhen the `template` lookup plugin is used to pass data using the `to_yaml` and `from_yaml` filters, Ansible cannot represent the data correctly. This issue does not affect the data passed via `to_json` and `from_json` filters.\\r\\n\\r\\nThe issue was introduced after fixes related to the CVE-2016-9587 and is present in `stable-2.1`, `stable-2.2` and `devel` branches, presumably in `stable-2.3` as well.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\nThe example role can be found [in this repository](https://github.com/drybjed/ansible-test-template-lookup).\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nData is passed correctly via YAML filters.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nfatal: [localhost]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"An unhandled exception occurred while running the lookup plugin 'template'. Error was a <class 'yaml.representer.RepresenterError'>, original message: cannot represent an object: /root\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"affected template lookup plugin.\", \n    \"component_raw\": \"Affected: `template` lookup plugin.\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20290\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When the `template` lookup plugin is used to pass data using the `to_yaml` and `from_yaml` filters, Ansible cannot represent the data correctly. This issue does not affect the data passed via `to_json` and `from_json` filters.\\n\\n\\n\\nThe issue was introduced after fixes related to the CVE-2016-9587 and is present in `stable-2.1`, `stable-2.2` and `devel` branches, presumably in `stable-2.3` as well.\", \n    \"title\": \"Template lookup plugin cannot pass data via 'to_yaml'/'from_yaml' filters\"\n  }, \n  \"20291\": {\n    \"ansible_version\": \"2.2.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.2.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nI think it could be good to add an option to create folder if it does not exist.\\r\\nFor example: create_folder: True ?\\r\\n\\r\\n@nerzhul @dagwieers @jctanner \\r\\n\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20291\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"I think it could be good to add an option to create folder if it does not exist.\\n\\nFor example: create_folder: True ?\\n\\n\\n\\n@nerzhul @dagwieers @jctanner\", \n    \"title\": \"vmware_guest: Create folder\"\n  }, \n  \"20294\": {\n    \"ansible_version\": \"ansible 2.3.0 (network-aws 1045e3a5a9) last updated 2017/01/11 194239 (GMT +100)\", \n    \"body\": \"\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnet_command\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (network-aws 1045e3a5a9) last updated 2017/01/11 19:42:39 (GMT +100)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nCalling `net_command` without any arguments causes a backtrace, rather than a graceful error message that `no command given`.\\r\\n\\r\\n```python\\r\\n      argument_spec = dict(\\r\\n          _raw_params=dict()\\r\\n      )   \\r\\n  \\r\\n      module = LocalAnsibleModule(argument_spec=argument_spec,\\r\\n                                  supports_check_mode=False)\\r\\n  \\r\\n      if str(module.params['_raw_params']).strip() == '': \\r\\n          module.fail_json(rc=256, msg='no command given')\\r\\n```\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n- name: net_command - Missing command\\r\\n  net_command:\\r\\n  connection: network_cli\\r\\n  register: result\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nGraceful failure (no backtrace) and\\r\\n`\\\"msg\\\": \\\"no command give\\\", `\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```python\\r\\nTASK [net_command : net_command - Missing command] ***********************************************************************************************************************************************************************************************\\r\\ntask path: /home/johnb/git/ansible-inc/ansible/test/integration/targets/net_command/tasks/vyos.yml:108\\r\\n<ec2-54-161-180-253.compute-1.amazonaws.com> closing connection\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/home/johnb/git/ansible-inc/ansible/lib/ansible/executor/task_executor.py\\\", line 126, in run\\r\\n    res = self._execute()\\r\\n  File \\\"/home/johnb/git/ansible-inc/ansible/lib/ansible/executor/task_executor.py\\\", line 504, in _execute\\r\\n    result = self._handler.run(task_vars=variables)\\r\\n  File \\\"/home/johnb/git/ansible-inc/ansible/lib/ansible/plugins/action/network.py\\\", line 43, in run\\r\\n    module.main()\\r\\n  File \\\"/home/johnb/git/ansible-inc/ansible/lib/ansible/modules/network/basics/net_command.py\\\", line 115, in main\\r\\n    rc, out, err = module.exec_command(module.params['_raw_params'])\\r\\n  File \\\"/home/johnb/git/ansible-inc/ansible/lib/ansible/module_utils/local.py\\\", line 59, in exec_command\\r\\n    rc, out, err = self.connection.exec_command(args)\\r\\n  File \\\"/home/johnb/git/ansible-inc/ansible/lib/ansible/plugins/connection/network_cli.py\\\", line 219, in exec_command\\r\\n    obj = json.loads(cmd)\\r\\n  File \\\"/usr/lib/python2.7/json/__init__.py\\\", line 339, in loads\\r\\n    return _default_decoder.decode(s)\\r\\n  File \\\"/usr/lib/python2.7/json/decoder.py\\\", line 364, in decode\\r\\n    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\\r\\nTypeError: expected string or buffer\\r\\n\\r\\nfatal: [ec2-54-161-180-253.compute-1.amazonaws.com]: FAILED! => {\\r\\n    \\\"failed\\\": true, \\r\\n    \\\"msg\\\": \\\"Unexpected failure during module execution.\\\", \\r\\n    \\\"stdout\\\": \\\"\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"net_command\", \n    \"component_raw\": \"net_command\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20294\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/basics/net_command.py\", \n    \"summary\": \"Calling `net_command` without any arguments causes a backtrace, rather than a graceful error message that `no command given`.\\n\\n\\n\\n```python\\n\\n      argument_spec = dict(\\n\\n          _raw_params=dict()\\n\\n      )   \\n\\n  \\n\\n      module = LocalAnsibleModule(argument_spec=argument_spec,\\n\\n                                  supports_check_mode=False)\\n\\n  \\n\\n      if str(module.params['_raw_params']).strip() == '': \\n\\n          module.fail_json(rc=256, msg='no command given')\\n\\n```\", \n    \"title\": \"net_command: Not correctly detecting empty/undefined _raw_params\"\n  }, \n  \"20295\": {\n    \"ansible_version\": null, \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_file\\r\\n\\r\\n##### SUMMARY\\r\\nThe examples on http://docs.ansible.com/ansible/win_file_module.html#examples show the paths garbled. Probably due to the backslashes.\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nCorrectly rendered examples.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n![ansible_win_file](https://cloud.githubusercontent.com/assets/1435346/21981772/555bb9ba-dbe9-11e6-8f30-be3dcdf160e7.png)\\r\\n\", \n    \"component_name\": \"win_file\", \n    \"component_raw\": \"win_file\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20295\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs_report\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_file.ps1\", \n    \"summary\": \"The examples on http://docs.ansible.com/ansible/win_file_module.html#examples show the paths garbled. Probably due to the backslashes.\", \n    \"title\": \"Documentation of win_file examples render starnge\"\n  }, \n  \"20296\": {\n    \"ansible_version\": \"ansible 2.3.0 (network-aws 1045e3a5a9) last updated 2017/01/11 194239 (GMT +100)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnet_command\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (network-aws 1045e3a5a9) last updated 2017/01/11 19:42:39 (GMT +100)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThis is most likely a documentation issue.\\r\\n\\r\\nhttp://docs.ansible.com/ansible/net_command_module.html#return-values states that\\r\\n`stdout_lines` (in fact every value) is *always* returned.\\r\\n\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n- net_command: show foobar\\r\\n  register: result\\r\\n\\r\\n- debug:\\r\\n  msg: \\\"{{ result }}\\\"\\r\\n\\r\\n# Notice that `result.stdout_lines` isn't defined, though `result.stdout` is.\\r\\n\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nModule docs and returns to match up\", \n    \"component_name\": \"net_command\", \n    \"component_raw\": \"net_command\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20296\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/basics/net_command.py\", \n    \"summary\": \"This is most likely a documentation issue.\\n\\n\\n\\nhttp://docs.ansible.com/ansible/net_command_module.html#return-values states that\\n\\n`stdout_lines` (in fact every value) is *always* returned.\", \n    \"title\": \"net_command: stdout_lines isn't always returned (docs say it should be)\"\n  }, \n  \"20297\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /path/to/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_service\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.1.1.0\\r\\n  config file = /path/to/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nRed Hat Enterprise Linux Server release 7.1 (Maipo)\\r\\nTarget Host Windows Server 2008 R2\\r\\n\\r\\n##### SUMMARY\\r\\nWhen using win_service module to disable service which is not installed, ansible fails with fatal error \\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```yaml\\r\\n  - name: Stop and disable w32time service\\r\\n    win_service:\\r\\n      name: w32time\\r\\n      state: stopped\\r\\n      start_mode: disabled\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nwin_service module should skip the task if service is not installed. May be with optional parameter\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nTASK [Stop and disable w32time service] ****************************************\\r\\nfatal: [win2k8r2]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Service 'w32time' not installed\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"win_service\", \n    \"component_raw\": \"win_service\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20297\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_service.ps1\", \n    \"summary\": \"When using win_service module to disable service which is not installed, ansible fails with fatal error\", \n    \"title\": \"win_service module fails when service is not installed\"\n  }, \n  \"20301\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nwindows modules\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nEspecially when using Windows paths they easily get confused as escaped\\r\\nsequences or unicode characters. So by default use raw strings\\r\\n\\r\\nThis fixes #20295\\r\\n\\r\\nPS If needed we can do this for all modules so that this is consistent throughout all modules (and mistakes are reduced to a minimum).\", \n    \"component_name\": \"windows  s\", \n    \"component_raw\": \"windows modules\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20301\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"module\", \n      \"needs_revision\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_webpicmd.py\", \n    \"summary\": \"Especially when using Windows paths they easily get confused as escaped\\n\\nsequences or unicode characters. So by default use raw strings\\n\\n\\n\\nThis fixes #20295\\n\\n\\n\\nPS If needed we can do this for all modules so that this is consistent throughout all modules (and mistakes are reduced to a minimum).\", \n    \"title\": \"Windows: Fix documentation strings to be raw strings\"\n  }, \n  \"20303\": {\n    \"ansible_version\": \"2.2.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.2.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nidentification.domainAdminPassword need a vim.vm.customization.Password() object.\\r\\nTested now and i can add my server in domain.\", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20303\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"identification.domainAdminPassword need a vim.vm.customization.Password() object.\\n\\nTested now and i can add my server in domain.\", \n    \"title\": \"vmware_guest: Fix windows joindomain customization\"\n  }, \n  \"20304\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nYAML inventory\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nWe should be able to define all vars in yaml inventory, just like we can do it in ini ones, such as:\\r\\n```\\r\\n[all:vars]\\r\\nfoo=bar\\r\\n```\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nGiven the following hosts.yml\\r\\n```yaml\\r\\nall:\\r\\n  vars:\\r\\n    foo: bar\\r\\n\\r\\ntest:\\r\\n  hosts:\\r\\n    localhost:\\r\\n```\\r\\n\\r\\nand the following command:\\r\\n\\r\\n```\\r\\nansible -i hosts.yml all -m debug -a var=foo\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n```\\r\\nlocalhost | SUCCESS => {\\r\\n    \\\"foo\\\": \\\"bar\\\"\\r\\n}\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nlocalhost | SUCCESS => {\\r\\n    \\\"foo\\\": \\\"VARIABLE IS NOT DEFINED!\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"yaml inventory\", \n    \"component_raw\": \"YAML inventory\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20304\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"We should be able to define all vars in yaml inventory, just like we can do it in ini ones, such as:\\n\\n```\\n\\n[all:vars]\\n\\nfoo=bar\\n\\n```\", \n    \"title\": \"Could not define \\\"all\\\" variables with a YAML inventory file \"\n  }, \n  \"20305\": {\n    \"ansible_version\": \"n/a\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\n`amazon/GUIDELINES.md`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nn/a\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nThe guidelines were out of date with respect to how to use `boto3`.\", \n    \"component_name\": \"amazon/guidelines.md\", \n    \"component_raw\": \"`amazon/GUIDELINES.md`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20305\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"The guidelines were out of date with respect to how to use `boto3`.\", \n    \"title\": \"amazon: added boto3_conn to GUIDELINES.md\"\n  }, \n  \"20307\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncomposer\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nThe composer module is not able to use \\\"working-dir\\\" with directories that contain a space.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n`mkdir /tmp/test\\\\ directory`\\r\\n\\r\\n```\\r\\n# Create a simple composer.json with contents:\\r\\n{\\r\\n    \\\"require\\\": {\\r\\n        \\\"rfd/imagemagick\\\": \\\"*\\\"\\r\\n    }\\r\\n}\\r\\n```\\r\\n```\\r\\nansible localhost -m composer -a \\\"working-dir=\\\\\\\"/tmp/test directory\\\\\\\"\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nComposer is able descend into the requested directory.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nComposer complains that the directory doesn't exist, but the error message lists the wrong directory.\\r\\n`[RuntimeException] Invalid working directory specified, /tmp/test does not exist.`\\r\\n\\r\\n```\\r\\n$ ansible localhost -m composer -a \\\"working-dir=\\\\\\\"/tmp/test directory\\\\\\\"\\\" -vvv\\r\\nNo config file found; using defaults\\r\\n [WARNING]: Host file not found: /etc/ansible/hosts\\r\\n\\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n\\r\\nUsing module file /Library/Python/2.7/site-packages/ansible/modules/extras/packaging/language/composer.py\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: tylerlawson\\r\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484583081.77-153904708810732 `\\\" && echo ansible-tmp-1484583081.77-153904708810732=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484583081.77-153904708810732 `\\\" ) && sleep 0'\\r\\n<127.0.0.1> PUT /var/folders/wj/lx9yl6t56nvdwgmq90c642f00000gn/T/tmpmIQHYO TO /Users/tylerlawson/.ansible/tmp/ansible-tmp-1484583081.77-153904708810732/composer.py\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /Users/tylerlawson/.ansible/tmp/ansible-tmp-1484583081.77-153904708810732/ /Users/tylerlawson/.ansible/tmp/ansible-tmp-1484583081.77-153904708810732/composer.py && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python /Users/tylerlawson/.ansible/tmp/ansible-tmp-1484583081.77-153904708810732/composer.py; rm -rf \\\"/Users/tylerlawson/.ansible/tmp/ansible-tmp-1484583081.77-153904708810732/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nlocalhost | FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"arguments\\\": \\\"\\\", \\r\\n            \\\"command\\\": \\\"install\\\", \\r\\n            \\\"ignore_platform_reqs\\\": false, \\r\\n            \\\"no_dev\\\": true, \\r\\n            \\\"no_plugins\\\": false, \\r\\n            \\\"no_scripts\\\": false, \\r\\n            \\\"optimize_autoloader\\\": true, \\r\\n            \\\"prefer_dist\\\": false, \\r\\n            \\\"prefer_source\\\": false, \\r\\n            \\\"working-dir\\\": \\\"/tmp/test directory\\\", \\r\\n            \\\"working_dir\\\": \\\"/tmp/test directory\\\"\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"composer\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"[RuntimeException] Invalid working directory specified, /tmp/test does not exist.\\\", \\r\\n    \\\"stdout\\\": \\\"\\\\n                                                                  \\\\n  [RuntimeException]                                              \\\\n  Invalid working directory specified, /tmp/test does not exist.  \\\\n                                                                  \\\\n\\\\n\\\", \\r\\n    \\\"stdout_lines\\\": [\\r\\n        \\\"\\\", \\r\\n        \\\"                                                                  \\\", \\r\\n        \\\"  [RuntimeException]                                              \\\", \\r\\n        \\\"  Invalid working directory specified, /tmp/test does not exist.  \\\", \\r\\n        \\\"                                                                  \\\", \\r\\n        \\\"\\\"\\r\\n    ]\\r\\n}\\r\\n```\\r\\n\\r\\n\\r\\nI tried reporting this to the extras repo according to http://docs.ansible.com/ansible/community.html#i-d-like-to-report-a-bug but I guess it's not up-to-date with recent changes in process.\", \n    \"component_name\": \"composer\", \n    \"component_raw\": \"composer\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20307\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/language/composer.py\", \n    \"summary\": \"The composer module is not able to use \\\"working-dir\\\" with directories that contain a space.\", \n    \"title\": \"composer: Unable to use \\\"working-dir\\\" with spaces\"\n  }, \n  \"20308\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_regedit\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nhash_behaviour = merge\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nForward slashes in the key name are treated like path delimiters, like backslashes.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nI want to prevent some ciphers from being used by the schannel security provider.  To accomplish I can create registry keys for each cipher I want to prevent.  For each key a value name Enabled having DWORD 0 is set.  A restart is necessary.  Notice some of the key names have forward slashes.  Win_regedit interprets these as subkey delimiters.  The result is that win_regedit splits the key name at the forward slash creating two keys.  For example win_regedit would create from DES 56/56 a key named DES 56 and a subkey named 56.  In the 56 key I would find the Enabled value.  I've tried using a backslash to escape the forward slash but that doesn't seem to work.\\r\\n```\\r\\ndefaults.yml\\r\\n---\\r\\nwin_schannel_reg_key:                   HKLM:\\\\SYSTEM\\\\CurrentControlSet\\\\Control\\\\SecurityProviders\\\\SCHANNEL\\r\\nwin_schannel_insecure_ciphers:\\r\\n  -                                     DES 56/56\\r\\n  -                                     'NULL'\\r\\n  -                                     RC2 128/128\\r\\n  -                                     RC2 40/128\\r\\n  -                                     RC2 56/128\\r\\n  -                                     RC4 40/128\\r\\n  -                                     RC4 56/128\\r\\n  -                                     RC4 64/128\\r\\n  -                                     RC4 128/128\\r\\ntasks.yml\\r\\n---\\r\\n- name: Disable insecure hashes\\r\\n  win_regedit:\\r\\n    key:                                \\\"{{ win_schannel_reg_key }}\\\\\\\\Hashes\\\\\\\\{{ item }}\\\"\\r\\n    value:                              Enabled\\r\\n    datatype:                           dword\\r\\n    data:                               0\\r\\n    state:                              present\\r\\n  with_items:                           \\\"{{ win_schannel_insecure_hashes }}\\\"\\r\\n  when:                                 win_schannel_insecure_hashes != []\\r\\n  notify:\\r\\n    -                                   Restart computer\\r\\n```\\r\\n##### EXPECTED RESULTS\\r\\nI don' t mind escaping, but there isn't any guidance on how to escape in this case.  Obviously I want the key names to look like I've listed them, complete with forward slashes, rather than splitting they keyname in half on the forward slash.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\n$_obj = @{ failed = $true }\\r\\nIf ($_.Exception.GetType)\\r\\n{\\r\\n$_obj.Add('msg', $_.Exception.Message)\\r\\n}\\r\\nElse\\r\\n{\\r\\n$_obj.Add('msg', $_.ToString())\\r\\n}\\r\\nIf ($_.InvocationInfo.PositionMessage)\\r\\n{\\r\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\r\\n}\\r\\nElseIf ($_.ScriptStackTrace)\\r\\n{\\r\\n$_obj.Add('exception', $_.ScriptStackTrace)\\r\\n}\\r\\nTry\\r\\n{\\r\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\r\\n}\\r\\nCatch\\r\\n{\\r\\n}\\r\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\r\\nExit 1\\r\\n}\\r\\nFinally { Remove-Item \\\"C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586567.42-154063785910402\\\" -Force -Recurse -ErrorAction SilentlyContinue }\\r\\n [WARNING]: Module invocation had junk after the JSON data:\\r\\n\\r\\nchanged: [opmtstsqlv01.nt.local] => (item=DES 56/56) => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"data_changed\\\": false,\\r\\n    \\\"data_type_changed\\\": false,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_regedit\\\"\\r\\n    },\\r\\n    \\\"item\\\": \\\"DES 56/56\\\"\\r\\n}\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/extras/windows/win_regedit.ps1\\r\\n<opmtstsqlv01.nt.local> EXEC Set-StrictMode -Version Latest\\r\\n(New-Item -Type Directory -Path $env:temp -Name \\\"ansible-tmp-1484586569.12-45374587170007\\\").FullName | Write-Host -Separator '';\\r\\n<opmtstsqlv01.nt.local> PUT \\\"/tmp/tmpRemVbr\\\" TO \\\"C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586569.12-45374587170007\\\\win_regedit.ps1\\\"\\r\\n<opmtstsqlv01.nt.local> EXEC Set-StrictMode -Version Latest\\r\\nTry\\r\\n{\\r\\n& 'C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586569.12-45374587170007\\\\win_regedit.ps1'\\r\\n}\\r\\nCatch\\r\\n{\\r\\n$_obj = @{ failed = $true }\\r\\nIf ($_.Exception.GetType)\\r\\n{\\r\\n$_obj.Add('msg', $_.Exception.Message)\\r\\n}\\r\\nElse\\r\\n{\\r\\n$_obj.Add('msg', $_.ToString())\\r\\n}\\r\\nIf ($_.InvocationInfo.PositionMessage)\\r\\n{\\r\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\r\\n}\\r\\nElseIf ($_.ScriptStackTrace)\\r\\n{\\r\\n$_obj.Add('exception', $_.ScriptStackTrace)\\r\\n}\\r\\nTry\\r\\n{\\r\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\r\\n}\\r\\nCatch\\r\\n{\\r\\n}\\r\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\r\\nExit 1\\r\\n}\\r\\nFinally { Remove-Item \\\"C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586569.12-45374587170007\\\" -Force -Recurse -ErrorAction SilentlyContinue }\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/extras/windows/win_regedit.ps1\\r\\n<opmtstsqlv01.nt.local> EXEC Set-StrictMode -Version Latest\\r\\n(New-Item -Type Directory -Path $env:temp -Name \\\"ansible-tmp-1484586570.91-200741371320682\\\").FullName | Write-Host -Separator '';\\r\\nchanged: [opmtstsqlv01.nt.local] => (item=NULL) => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"data_changed\\\": false,\\r\\n    \\\"data_type_changed\\\": false,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_regedit\\\"\\r\\n    },\\r\\n    \\\"item\\\": \\\"NULL\\\"\\r\\n}\\r\\n<opmtstsqlv01.nt.local> PUT \\\"/tmp/tmpMlkKer\\\" TO \\\"C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586570.91-200741371320682\\\\win_regedit.ps1\\\"\\r\\n<opmtstsqlv01.nt.local> EXEC Set-StrictMode -Version Latest\\r\\nTry\\r\\n{\\r\\n& 'C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586570.91-200741371320682\\\\win_regedit.ps1'\\r\\n}\\r\\nCatch\\r\\n{\\r\\n$_obj = @{ failed = $true }\\r\\nIf ($_.Exception.GetType)\\r\\n{\\r\\n$_obj.Add('msg', $_.Exception.Message)\\r\\n}\\r\\nElse\\r\\n{\\r\\n$_obj.Add('msg', $_.ToString())\\r\\n}\\r\\nIf ($_.InvocationInfo.PositionMessage)\\r\\n{\\r\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\r\\n}\\r\\nElseIf ($_.ScriptStackTrace)\\r\\n{\\r\\n$_obj.Add('exception', $_.ScriptStackTrace)\\r\\n}\\r\\nTry\\r\\n{\\r\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\r\\n}\\r\\nCatch\\r\\n{\\r\\n}\\r\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\r\\nExit 1\\r\\n}\\r\\nFinally { Remove-Item \\\"C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586570.91-200741371320682\\\" -Force -Recurse -ErrorAction SilentlyContinue }\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/extras/windows/win_regedit.ps1\\r\\n<opmtstsqlv01.nt.local> EXEC Set-StrictMode -Version Latest\\r\\n(New-Item -Type Directory -Path $env:temp -Name \\\"ansible-tmp-1484586572.68-109636706895757\\\").FullName | Write-Host -Separator '';\\r\\nchanged: [opmtstsqlv01.nt.local] => (item=RC2 128/128) => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"data_changed\\\": false,\\r\\n    \\\"data_type_changed\\\": false,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_regedit\\\"\\r\\n    },\\r\\n    \\\"item\\\": \\\"RC2 128/128\\\"\\r\\n}\\r\\n<opmtstsqlv01.nt.local> PUT \\\"/tmp/tmp0PRtW3\\\" TO \\\"C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586572.68-109636706895757\\\\win_regedit.ps1\\\"\\r\\n<opmtstsqlv01.nt.local> EXEC Set-StrictMode -Version Latest\\r\\nTry\\r\\n{\\r\\n& 'C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586572.68-109636706895757\\\\win_regedit.ps1'\\r\\n}\\r\\nCatch\\r\\n{\\r\\n$_obj = @{ failed = $true }\\r\\nIf ($_.Exception.GetType)\\r\\n{\\r\\n$_obj.Add('msg', $_.Exception.Message)\\r\\n}\\r\\nElse\\r\\n{\\r\\n$_obj.Add('msg', $_.ToString())\\r\\n}\\r\\nIf ($_.InvocationInfo.PositionMessage)\\r\\n{\\r\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\r\\n}\\r\\nElseIf ($_.ScriptStackTrace)\\r\\n{\\r\\n$_obj.Add('exception', $_.ScriptStackTrace)\\r\\n}\\r\\nTry\\r\\n{\\r\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\r\\n}\\r\\nCatch\\r\\n{\\r\\n}\\r\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\r\\nExit 1\\r\\n}\\r\\nFinally { Remove-Item \\\"C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586572.68-109636706895757\\\" -Force -Recurse -ErrorAction SilentlyContinue }\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/extras/windows/win_regedit.ps1\\r\\n<opmtstsqlv01.nt.local> EXEC Set-StrictMode -Version Latest\\r\\n(New-Item -Type Directory -Path $env:temp -Name \\\"ansible-tmp-1484586574.42-37926772039906\\\").FullName | Write-Host -Separator '';\\r\\nchanged: [opmtstsqlv01.nt.local] => (item=RC2 40/128) => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"data_changed\\\": false,\\r\\n    \\\"data_type_changed\\\": false,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_regedit\\\"\\r\\n    },\\r\\n    \\\"item\\\": \\\"RC2 40/128\\\"\\r\\n}\\r\\n<opmtstsqlv01.nt.local> PUT \\\"/tmp/tmp7SSFCX\\\" TO \\\"C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586574.42-37926772039906\\\\win_regedit.ps1\\\"\\r\\n<opmtstsqlv01.nt.local> EXEC Set-StrictMode -Version Latest\\r\\nTry\\r\\n{\\r\\n& 'C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586574.42-37926772039906\\\\win_regedit.ps1'\\r\\n}\\r\\nCatch\\r\\n{\\r\\n$_obj = @{ failed = $true }\\r\\nIf ($_.Exception.GetType)\\r\\n{\\r\\n$_obj.Add('msg', $_.Exception.Message)\\r\\n}\\r\\nElse\\r\\n{\\r\\n$_obj.Add('msg', $_.ToString())\\r\\n}\\r\\nIf ($_.InvocationInfo.PositionMessage)\\r\\n{\\r\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\r\\n}\\r\\nElseIf ($_.ScriptStackTrace)\\r\\n{\\r\\n$_obj.Add('exception', $_.ScriptStackTrace)\\r\\n}\\r\\nTry\\r\\n{\\r\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\r\\n}\\r\\nCatch\\r\\n{\\r\\n}\\r\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\r\\nExit 1\\r\\n}\\r\\nFinally { Remove-Item \\\"C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586574.42-37926772039906\\\" -Force -Recurse -ErrorAction SilentlyContinue }\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/extras/windows/win_regedit.ps1\\r\\n<opmtstsqlv01.nt.local> EXEC Set-StrictMode -Version Latest\\r\\n(New-Item -Type Directory -Path $env:temp -Name \\\"ansible-tmp-1484586576.15-245395827760634\\\").FullName | Write-Host -Separator '';\\r\\nchanged: [opmtstsqlv01.nt.local] => (item=RC2 56/128) => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"data_changed\\\": false,\\r\\n    \\\"data_type_changed\\\": false,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_regedit\\\"\\r\\n    },\\r\\n    \\\"item\\\": \\\"RC2 56/128\\\"\\r\\n}\\r\\n<opmtstsqlv01.nt.local> PUT \\\"/tmp/tmpnwuoIb\\\" TO \\\"C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586576.15-245395827760634\\\\win_regedit.ps1\\\"\\r\\n<opmtstsqlv01.nt.local> EXEC Set-StrictMode -Version Latest\\r\\nTry\\r\\n{\\r\\n& 'C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586576.15-245395827760634\\\\win_regedit.ps1'\\r\\n}\\r\\nCatch\\r\\n{\\r\\n$_obj = @{ failed = $true }\\r\\nIf ($_.Exception.GetType)\\r\\n{\\r\\n$_obj.Add('msg', $_.Exception.Message)\\r\\n}\\r\\nElse\\r\\n{\\r\\n$_obj.Add('msg', $_.ToString())\\r\\n}\\r\\nIf ($_.InvocationInfo.PositionMessage)\\r\\n{\\r\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\r\\n}\\r\\nElseIf ($_.ScriptStackTrace)\\r\\n{\\r\\n$_obj.Add('exception', $_.ScriptStackTrace)\\r\\n}\\r\\nTry\\r\\n{\\r\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\r\\n}\\r\\nCatch\\r\\n{\\r\\n}\\r\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\r\\nExit 1\\r\\n}\\r\\nFinally { Remove-Item \\\"C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586576.15-245395827760634\\\" -Force -Recurse -ErrorAction SilentlyContinue }\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/extras/windows/win_regedit.ps1\\r\\n<opmtstsqlv01.nt.local> EXEC Set-StrictMode -Version Latest\\r\\n(New-Item -Type Directory -Path $env:temp -Name \\\"ansible-tmp-1484586578.24-69155527160992\\\").FullName | Write-Host -Separator '';\\r\\nchanged: [opmtstsqlv01.nt.local] => (item=RC4 40/128) => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"data_changed\\\": false,\\r\\n    \\\"data_type_changed\\\": false,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_regedit\\\"\\r\\n    },\\r\\n    \\\"item\\\": \\\"RC4 40/128\\\"\\r\\n}\\r\\n<opmtstsqlv01.nt.local> PUT \\\"/tmp/tmp8lNMoB\\\" TO \\\"C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586578.24-69155527160992\\\\win_regedit.ps1\\\"\\r\\n<opmtstsqlv01.nt.local> EXEC Set-StrictMode -Version Latest\\r\\nTry\\r\\n{\\r\\n& 'C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586578.24-69155527160992\\\\win_regedit.ps1'\\r\\n}\\r\\nCatch\\r\\n{\\r\\n$_obj = @{ failed = $true }\\r\\nIf ($_.Exception.GetType)\\r\\n{\\r\\n$_obj.Add('msg', $_.Exception.Message)\\r\\n}\\r\\nElse\\r\\n{\\r\\n$_obj.Add('msg', $_.ToString())\\r\\n}\\r\\nIf ($_.InvocationInfo.PositionMessage)\\r\\n{\\r\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\r\\n}\\r\\nElseIf ($_.ScriptStackTrace)\\r\\n{\\r\\n$_obj.Add('exception', $_.ScriptStackTrace)\\r\\n}\\r\\nTry\\r\\n{\\r\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\r\\n}\\r\\nCatch\\r\\n{\\r\\n}\\r\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\r\\nExit 1\\r\\n}\\r\\nFinally { Remove-Item \\\"C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586578.24-69155527160992\\\" -Force -Recurse -ErrorAction SilentlyContinue }\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/extras/windows/win_regedit.ps1\\r\\n<opmtstsqlv01.nt.local> EXEC Set-StrictMode -Version Latest\\r\\n(New-Item -Type Directory -Path $env:temp -Name \\\"ansible-tmp-1484586580.07-92214770343705\\\").FullName | Write-Host -Separator '';\\r\\nchanged: [opmtstsqlv01.nt.local] => (item=RC4 56/128) => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"data_changed\\\": false,\\r\\n    \\\"data_type_changed\\\": false,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_regedit\\\"\\r\\n    },\\r\\n    \\\"item\\\": \\\"RC4 56/128\\\"\\r\\n}\\r\\n<opmtstsqlv01.nt.local> PUT \\\"/tmp/tmplHDDdc\\\" TO \\\"C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586580.07-92214770343705\\\\win_regedit.ps1\\\"\\r\\n<opmtstsqlv01.nt.local> EXEC Set-StrictMode -Version Latest\\r\\nTry\\r\\n{\\r\\n& 'C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586580.07-92214770343705\\\\win_regedit.ps1'\\r\\n}\\r\\nCatch\\r\\n{\\r\\n$_obj = @{ failed = $true }\\r\\nIf ($_.Exception.GetType)\\r\\n{\\r\\n$_obj.Add('msg', $_.Exception.Message)\\r\\n}\\r\\nElse\\r\\n{\\r\\n$_obj.Add('msg', $_.ToString())\\r\\n}\\r\\nIf ($_.InvocationInfo.PositionMessage)\\r\\n{\\r\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\r\\n}\\r\\nElseIf ($_.ScriptStackTrace)\\r\\n{\\r\\n$_obj.Add('exception', $_.ScriptStackTrace)\\r\\n}\\r\\nTry\\r\\n{\\r\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\r\\n}\\r\\nCatch\\r\\n{\\r\\n}\\r\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\r\\nExit 1\\r\\n}\\r\\nFinally { Remove-Item \\\"C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586580.07-92214770343705\\\" -Force -Recurse -ErrorAction SilentlyContinue }\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/extras/windows/win_regedit.ps1\\r\\n<opmtstsqlv01.nt.local> EXEC Set-StrictMode -Version Latest\\r\\n(New-Item -Type Directory -Path $env:temp -Name \\\"ansible-tmp-1484586581.85-166868674037816\\\").FullName | Write-Host -Separator '';\\r\\nchanged: [opmtstsqlv01.nt.local] => (item=RC4 64/128) => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"data_changed\\\": false,\\r\\n    \\\"data_type_changed\\\": false,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_regedit\\\"\\r\\n    },\\r\\n    \\\"item\\\": \\\"RC4 64/128\\\"\\r\\n}\\r\\n<opmtstsqlv01.nt.local> PUT \\\"/tmp/tmpvDJscB\\\" TO \\\"C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586581.85-166868674037816\\\\win_regedit.ps1\\\"\\r\\n<opmtstsqlv01.nt.local> EXEC Set-StrictMode -Version Latest\\r\\nTry\\r\\n{\\r\\n& 'C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586581.85-166868674037816\\\\win_regedit.ps1'\\r\\n}\\r\\nCatch\\r\\n{\\r\\n$_obj = @{ failed = $true }\\r\\nIf ($_.Exception.GetType)\\r\\n{\\r\\n$_obj.Add('msg', $_.Exception.Message)\\r\\n}\\r\\nElse\\r\\n{\\r\\n$_obj.Add('msg', $_.ToString())\\r\\n}\\r\\nIf ($_.InvocationInfo.PositionMessage)\\r\\n{\\r\\n$_obj.Add('exception', $_.InvocationInfo.PositionMessage)\\r\\n}\\r\\nElseIf ($_.ScriptStackTrace)\\r\\n{\\r\\n$_obj.Add('exception', $_.ScriptStackTrace)\\r\\n}\\r\\nTry\\r\\n{\\r\\n$_obj.Add('error_record', ($_ | ConvertTo-Json | ConvertFrom-Json))\\r\\n}\\r\\nCatch\\r\\n{\\r\\n}\\r\\nEcho $_obj | ConvertTo-Json -Compress -Depth 99\\r\\nExit 1\\r\\n}\\r\\nFinally { Remove-Item \\\"C:\\\\Users\\\\nisprod\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484586581.85-166868674037816\\\" -Force -Recurse -ErrorAction SilentlyContinue }\\r\\nchanged: [opmtstsqlv01.nt.local] => (item=RC4 128/128) => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"data_changed\\\": false,\\r\\n    \\\"data_type_changed\\\": false,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_regedit\\\"\\r\\n    },\\r\\n    \\\"item\\\": \\\"RC4 128/128\\\"\\r\\n}\\r\\nNOTIFIED HANDLER Restart computer\\r\\n```\\r\\n\", \n    \"component_name\": \"win_regedit\", \n    \"component_raw\": \"win_regedit\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20308\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_regedit.py\", \n    \"summary\": \"Forward slashes in the key name are treated like path delimiters, like backslashes.\", \n    \"title\": \"win_regedit delimits key names on both back slashes and forward slashes.\"\n  }, \n  \"20311\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nsynchronize \\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nUsing default ansible.cfg\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nI am using Vagrant/VirtualBox on Arch Linux (host) to provision a CentOS VM (guest).\\r\\n\\r\\n##### SUMMARY\\r\\nssh arguments are processed improperly by the synchronization module.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nI am having two distinct problems:\\r\\n\\r\\n1. Synchronize doesn't process conditional logic in the `ansible_user` variable before passing it into the SSH Options for rsync.  For instance, I have: \\r\\n```ansible_ssh_user: \\\"{{ 'ec2-user' if 'security_group_meteor' in group_names  else 'vagrant' }}\\\"```\\r\\n\\r\\nwhich generates the command:\\r\\n\\r\\n```\\r\\n/usr/bin/rsync --delay-updates -F --compress --archive -e 'ssh -i /home/derekbro/.vagrant.d/insecure_private_key -S none -o StrictHostKeyChecking=no -o Port=22' --rsync-path=\\\"sudo rsync\\\" --out-format='<<CHANGED>>%i %n%L' \\\"/home/derekbro/TuxLab/tuxlab-infra/app/\\\" \\\"{{ 'ec2-user' if 'security_group_meteor' in group_names  else 'vagrant' }}@10.100.1.2:/var/tuxlab/\\\"\\r\\n```\\r\\n\\r\\n(notice the jinja is included literally)\\r\\n\\r\\n2. Using the `verify_host: no` option correctly adds the ssh flag `-o StrictHostKeyChecking=no`, but doesn't add `UserKnownHostFile=/dev/null`, which is needed to truly ignore the host key checking.  This is particularly problematic in my usecase because each time I run the Vagrantfile (which I use for CI), the host (which has a defined IP) has a different Host Key.\\r\\n\\r\\n\\r\\n\", \n    \"component_name\": \"synchronize\", \n    \"component_raw\": \"synchronize\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20311\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/synchronize.py\", \n    \"summary\": \"ssh arguments are processed improperly by the synchronization module.\", \n    \"title\": \"Synchronize module SSH Options Issues\"\n  }, \n  \"20312\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nconditionals\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nv2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThis change introduces a warning when a conditional such as `when` contains jinja2 templating, such as:\\r\\n\\r\\n`when: \\\"{{ foo is defined }}\\\"`\\r\\n\\r\\nThis could be a useful warning as this is one of the more common mistakes users make, which can lead to very inconsistent behavior, due to the `\\\"{{ foo is defined }}\\\"` being templated before the `when` statement is actually evaluated.\\r\\n\\r\\nThis would cause a warning of:\\r\\n\\r\\n```\\r\\n[WARNING]: when statements should not include jinja2 templating delimiters such as {{ }} or {% %}. Found: {{ foo is defined }}\\r\\n```\\r\\n\\r\\nThere may be a better way of testing this, I just couldn't immediately find it.  I was looking for a more robust way than a simple regex to test if a string was a template, but I settled on this as the least performance impacting.\\r\\n\\r\\nI'm also trying to think of scenarios where a user might actually want to do this, and maybe it is valid, I'm just not thinking of a good use case.  Such a scenario would be when they want the template in the `when` statement, evaluated early, before the `when` statement is actually executed.\\r\\n\\r\\nIn any case, if this is not something we are interested in, I suppose we can close this.\", \n    \"component_name\": \"conditionals\", \n    \"component_raw\": \"conditionals\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20312\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:playbook/conditional\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This change introduces a warning when a conditional such as `when` contains jinja2 templating, such as:\\n\\n\\n\\n`when: \\\"{{ foo is defined }}\\\"`\\n\\n\\n\\nThis could be a useful warning as this is one of the more common mistakes users make, which can lead to very inconsistent behavior, due to the `\\\"{{ foo is defined }}\\\"` being templated before the `when` statement is actually evaluated.\\n\\n\\n\\nThis would cause a warning of:\\n\\n\\n\\n```\\n\\n[WARNING]: when statements should not include jinja2 templating delimiters such as {{ }} or {% %}. Found: {{ foo is defined }}\\n\\n```\\n\\n\\n\\nThere may be a better way of testing this, I just couldn't immediately find it.  I was looking for a more robust way than a simple regex to test if a string was a template, but I settled on this as the least performance impacting.\\n\\n\\n\\nI'm also trying to think of scenarios where a user might actually want to do this, and maybe it is valid, I'm just not thinking of a good use case.  Such a scenario would be when they want the template in the `when` statement, evaluated early, before the `when` statement is actually executed.\\n\\n\\n\\nIn any case, if this is not something we are interested in, I suppose we can close this.\", \n    \"title\": \"Warn when jinja2 delimiters are found in a when statement\"\n  }, \n  \"20314\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"This patch adds a new Ansible module which allows a user to create\\r\\nan endpoint to a service with Keystone.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nos_keystone_service_endpoint\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAt the moment, there is no way to configure specific endpoints for Keystone services.  This module allows a user to make all of those changes which can make configuring new OpenStack deployments easier!  This pretty much compliments the `os_keystone_service` module.\", \n    \"component_name\": \"os_keystone_service_endpoint\", \n    \"component_raw\": \"os_keystone_service_endpoint\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20314\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"new_module\", \n      \"new_plugin\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_keystone_service_endpoint.py\", \n    \"summary\": \"At the moment, there is no way to configure specific endpoints for Keystone services.  This module allows a user to make all of those changes which can make configuring new OpenStack deployments easier!  This pretty much compliments the `os_keystone_service` module.\", \n    \"title\": \"Add os_keystone_service_endpoint\"\n  }, \n  \"20315\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 06e30485ea) last updated 2017/01/16 200334 (GMT +000)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [u/usr/share/custom_modules]\\nThis has existed in this module in previous 2.x releases as well.  I confirmed that this is an issue in the latest devel branch as of this writing.\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n##### COMPONENT NAME\\r\\nwin_msi module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel 06e30485ea) last updated 2017/01/16 20:03:34 (GMT +000)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = [u'/usr/share/custom_modules']\\r\\n\\r\\nThis has existed in this module in previous 2.x releases as well.  I confirmed that this is an issue in the latest devel branch as of this writing.\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\npipelining=True\\r\\nhost_key_checking = False\\r\\ntimeout = 30\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nControl Server: CentOS Linux release 7.0.1406 (Core)\\r\\nManaging Centos/RedHat 5.x, 6.x, 7.x and Windows 2008 & 2012\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nwin_msi shows changed result even msi file is missing from path attribute. This leads the user to believe an msi was installed when in fact it wasn't even found, and leads to subsequent tasks to continue when the msi install is a pre-requisite.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nCall a non-existent msi file as follows\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n---\\r\\n- name: Install bogus win_msi\\r\\n  win_msi:\\r\\n    path: 'd:\\\\build\\\\bogus_installer.msi\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nI expected the win_msi module to display a proper error message and not that something was changed when it fact it wasn't.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nserver1.mycompany.com | SUCCESS => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_msi\\\"\\r\\n    },\\r\\n    \\\"log\\\": \\\"\\\"\\r\\n}\\r\\n\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"win_msi\", \n    \"component_raw\": \"win_msi module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20315\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"waiting_on_contributor\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_msi.py\", \n    \"summary\": \"win_msi shows changed result even msi file is missing from path attribute. This leads the user to believe an msi was installed when in fact it wasn't even found, and leads to subsequent tasks to continue when the msi install is a pre-requisite.\", \n    \"title\": \"win_msi shows changed result even when msi is not found\"\n  }, \n  \"20316\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\nThis was initially reported in the (now obsolete) extras repo.\\r\\nhttps://github.com/ansible/ansible-modules-extras/pull/3292\\r\\n \\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nproxmox_kvm\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nUbuntu Mate 16.10\\r\\n\\r\\n```\\r\\nsudo -H pip install proxmoxer requests\\r\\nRequirement already satisfied (use --upgrade to upgrade): proxmoxer in /usr/local/lib/python2.7/dist-packages\\r\\nRequirement already satisfied (use --upgrade to upgrade): requests in /usr/lib/python2.7/dist-packages\\r\\n\\r\\n```\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nI just attempted to use this module without success. I copied it to my /library directory. I do have proxmoxer and requests installed on the Ansible controller PC.\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- hosts: proxmox\\r\\n  vars:\\r\\n\\r\\n  tasks:\\r\\n  - name: test proxmox connection\\r\\n    proxmox_kvm:\\r\\n      api_user    : root@pam\\r\\n      api_password: password\\r\\n      api_host    : proxmox1\\r\\n      name        : example\\r\\n      node        : proxmox1\\r\\n      vmid        : 102\\r\\n      state       : current\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nI should have seen a status result for the specified VM\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nI got the following error message.\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [test proxmox connection] *************************************************\\r\\ntask path: /home/administrator/example/test-proxmox.yaml:8\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/executor/task_executor.py\\\", line 119, in run\\r\\n    res = self._execute()\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/executor/task_executor.py\\\", line 490, in _execute\\r\\n    result = self._handler.run(task_vars=variables)\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/plugins/action/normal.py\\\", line 33, in run\\r\\n    results = merge_hash(results, self._execute_module(tmp=tmp, task_vars=task_vars))\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/plugins/action/__init__.py\\\", line 565, in _execute_module\\r\\n    (module_style, shebang, module_data, module_path) = self._configure_module(module_name=module_name, module_args=module_args, task_vars=task_vars)\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/plugins/action/__init__.py\\\", line 153, in _configure_module\\r\\n    task_vars=task_vars, module_compression=self._play_context.module_compression)\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/executor/module_common.py\\\", line 772, in modify_module\\r\\n    (module_data, module_style, shebang) = _find_snippet_imports(module_name, module_data, module_path, module_args, task_vars, module_compression)\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/executor/module_common.py\\\", line 640, in _find_snippet_imports\\r\\n    recursive_finder(module_name, module_data, py_module_names, py_module_cache, zf)\\r\\n  File \\\"/usr/local/lib/python2.7/dist-packages/ansible/executor/module_common.py\\\", line 441, in recursive_finder\\r\\n    tree = ast.parse(data)\\r\\n  File \\\"/usr/lib/python2.7/ast.py\\\", line 37, in parse\\r\\n    return compile(source, filename, mode, PyCF_ONLY_AST)\\r\\nTypeError: compile() expected string without null bytes\\r\\n\\r\\nfatal: [proxmox1.example.com]: FAILED! => {\\r\\n    \\\"failed\\\": true, \\r\\n    \\\"msg\\\": \\\"Unexpected failure during module execution.\\\", \\r\\n    \\\"stdout\\\": \\\"\\\"\\r\\n}\\r\\n        to retry, use: --limit @/home/administrator/example/test-proxmox.retry\\r\\n\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"proxmox_kvm\", \n    \"component_raw\": \"proxmox_kvm\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20316\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/misc/proxmox_kvm.py\", \n    \"summary\": \"I just attempted to use this module without success. I copied it to my /library directory. I do have proxmoxer and requests installed on the Ansible controller PC.\", \n    \"title\": \"proxmox_kvm module causing exception\"\n  }, \n  \"20319\": {\n    \"ansible_version\": \"ansible 2.1.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nwin_package\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.1.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nAnsible Host: CentOS Linux release 7.2.1511 (Core)\\r\\nManaging: Windows Server 2012 R2 Standard\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nI'd like to be able to have win_package remove a software item by using the product ID and without supplying an MSI/path like I can do with MSIEXEC /X.\\r\\n\\r\\nAn example of when this is useful:\\r\\nInstalling Java places two product IDs in the registry. One is for Java the other is for the Java Auto Updater component. It's not appropriate to point win_package to the MSI as this would remove Java as well. \\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- name: 'Remove Java Auto Updater'\\r\\n  win_package:\\r\\n    state: 'absent'\\r\\n    product_id: '{4A03706F-666A-4037-7777-5F2748764D10}'\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nAnsible would run MSIEXEC /X {4A03706F-666A-4037-7777-5F2748764D10}\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [role_name : Remove Java Updater] *******************************\\r\\n/var/lib/awx/venv/ansible/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.py:734: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.html\\r\\n  InsecureRequestWarning)\\r\\nfatal: [IP ADDRESS]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Missing required argument: path\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"win_package\", \n    \"component_raw\": \"win_package\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20319\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"feature\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_package.ps1\", \n    \"summary\": \"I'd like to be able to have win_package remove a software item by using the product ID and without supplying an MSI/path like I can do with MSIEXEC /X.\\n\\n\\n\\nAn example of when this is useful:\\n\\nInstalling Java places two product IDs in the registry. One is for Java the other is for the Java Auto Updater component. It's not appropriate to point win_package to the MSI as this would remove Java as well.\", \n    \"title\": \"Remove package using product ID, omitting path from win_package\"\n  }, \n  \"20320\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nCallbackBase\\r\\n\\r\\n\\r\\n##### SUMMARY\\r\\nSome modules incorrectly return `warnings` as a single string, instead of a list of a single string. Coerce to a list before iterating.\\r\\n\", \n    \"component_name\": \"callbackbase\", \n    \"component_raw\": \"CallbackBase\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20320\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:plugins/callback\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Some modules incorrectly return `warnings` as a single string, instead of a list of a single string. Coerce to a list before iterating.\", \n    \"title\": \"Ensure module warnings are a list\"\n  }, \n  \"20321\": {\n    \"ansible_version\": \"ansible 2.2.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nansible-module-extras/cloud/dimensiondata/dimensiondata_vlan.py\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0\\n```\\n##### SUMMARY\\n\\nThis is Ansible module support for apache-libcloud functions.\\nSpecifically, this code supports Ansible invocations of DimensionData's \\nVLAN functionality.\\n\\nThis is to support a new capability within ansible, so there is no \\\"BEFORE\\\".\\nNote that this routine has an \\\"action verb\\\" which allows multiple different\\nactions to be performed on a vlan.  Below shows the ansible call to\\ncreate a vlan, along with its output.\\n\\n```\\n    - name: create vlan named \\\"{{vlan_name}}\\\"\\n       dimensiondata_vlan:\\n         region: \\\"{{dimension_data_region}}\\\"\\n         location: \\\"{{dimension_data_location}}\\\"\\n         network_domain: \\\"{{dimension_data_network_domain}}\\\"\\n         name: \\\"{{vlan_name}}\\\"\\n         description: A test VLAN Network.\\n         private_ipv4_base_address: \\\"{{base_ip}}\\\"\\n         private_ipv4_prefix_size: \\\"{{prefix_size|int}}\\\"\\n         action: create\\n         wait: true\\n         wait_time: 300\\n\\n    TASK [create vlan named \\\"demo-vlan\\\"] *******************************************\\n    changed: [127.0.0.1] => {\\\"changed\\\": true, \\\"msg\\\": \\\"Successfully created VLAN.\\\", \\\"vlan\\\": {\\\"description\\\": \\\"A test VLAN Network.\\\", \\\"id\\\": \\\"9755b966-b07a-418a-a892-de5416ee992f\\\", \\\"location\\\": \\\"NA12\\\", \\\"name\\\": \\\"demo-vlan\\\", \\\"private_ipv4_range_address\\\": \\\"192.168.24.0\\\", \\\"private_ipv4_range_size\\\": 24, \\\"status\\\": \\\"NORMAL\\\"}}\\n\\n```\\n###### REQUIRES\\n\\nhttps://github.com/ansible/ansible/pull/17604\\nhttps://github.com/apache/libcloud/pull/858\\n\", \n    \"component_name\": \"ansible- -extras/cloud/dimensiondata/dimensiondata_vlan.py\", \n    \"component_raw\": \"ansible-module-extras/cloud/dimensiondata/dimensiondata_vlan.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20321\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/dimensiondata/dimensiondata_vlan.py\", \n    \"summary\": \"This is Ansible module support for apache-libcloud functions.\\nSpecifically, this code supports Ansible invocations of DimensionData's \\nVLAN functionality.\\n\\nThis is to support a new capability within ansible, so there is no \\\"BEFORE\\\".\\nNote that this routine has an \\\"action verb\\\" which allows multiple different\\nactions to be performed on a vlan.  Below shows the ansible call to\\ncreate a vlan, along with its output.\\n\\n```\\n    - name: create vlan named \\\"{{vlan_name}}\\\"\\n       dimensiondata_vlan:\\n         region: \\\"{{dimension_data_region}}\\\"\\n         location: \\\"{{dimension_data_location}}\\\"\\n         network_domain: \\\"{{dimension_data_network_domain}}\\\"\\n         name: \\\"{{vlan_name}}\\\"\\n         description: A test VLAN Network.\\n         private_ipv4_base_address: \\\"{{base_ip}}\\\"\\n         private_ipv4_prefix_size: \\\"{{prefix_size|int}}\\\"\\n         action: create\\n         wait: true\\n         wait_time: 300\\n\\n    TASK [create vlan named \\\"demo-vlan\\\"] *******************************************\\n    changed: [127.0.0.1] => {\\\"changed\\\": true, \\\"msg\\\": \\\"Successfully created VLAN.\\\", \\\"vlan\\\": {\\\"description\\\": \\\"A test VLAN Network.\\\", \\\"id\\\": \\\"9755b966-b07a-418a-a892-de5416ee992f\\\", \\\"location\\\": \\\"NA12\\\", \\\"name\\\": \\\"demo-vlan\\\", \\\"private_ipv4_range_address\\\": \\\"192.168.24.0\\\", \\\"private_ipv4_range_size\\\": 24, \\\"status\\\": \\\"NORMAL\\\"}}\\n\\n```\\n###### REQUIRES\\n\\nhttps://github.com/ansible/ansible/pull/17604\\nhttps://github.com/apache/libcloud/pull/858\", \n    \"title\": \"New dimensiondata vlan\"\n  }, \n  \"20325\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nModule [`rpm_key`](https://github.com/ansible/ansible-modules-core/blob/d749ec91e513c40a50b539a7eaccf29c31dda4d4/packaging/os/rpm_key.py)\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n`-`\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n`-`\\r\\n\\r\\n##### SUMMARY\\r\\nIt should be possible to verify the long key fingerprint of a key imported by `rpm_key`.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n- There should be an argument `fingerpint`:\\r\\n```yaml\\r\\n- rpm_key:\\r\\n    state: present\\r\\n    key: http://apt.sw.be/RPM-GPG-KEY.dag.txt\\r\\n    fingerprint: 0123 4567 89AB CDEF 0123  4567 89AB CDEF 0123 4567\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n- A downloaded key or a key imported from a file should be verified against this fingerprint *before* it will be imported to rpm database\", \n    \"component_name\": \"[rpm_key](https//github.com/ansible/ansible- s-core/blob/d749ec91e513c40a50b539a7eaccf29c31dda4d4/packaging/os/rpm_key.py)\", \n    \"component_raw\": \"Module [`rpm_key`](https://github.com/ansible/ansible-modules-core/blob/d749ec91e513c40a50b539a7eaccf29c31dda4d4/packaging/os/rpm_key.py)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20325\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/rpm_key.py\", \n    \"summary\": \"It should be possible to verify the long key fingerprint of a key imported by `rpm_key`.\", \n    \"title\": \"rpm_key should verify fingerprint\"\n  }, \n  \"20326\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nModule [`rpm_key`](https://github.com/ansible/ansible-modules-core/blob/d749ec91e513c40a50b539a7eaccf29c31dda4d4/packaging/os/rpm_key.py)\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nSet the python interpreter to python3 in inventory:\\r\\n```ini\\r\\n[xxx:vars]\\r\\nansible_python_interpreter=/usr/bin/python3\\r\\n```\\r\\n\\r\\n```yml\\r\\n- name: trust rpmfusion key\\r\\n  rpm_key:\\r\\n    state: present\\r\\n    key: https://rpmfusion.org/keys?action=AttachFile&do=view&target=RPM-GPG-KEY-rpmfusion-free-fedora-{{ansible_distribution_major_version|int}}\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nFedora:25 with Python3 only installed.\\r\\n\\r\\n##### SUMMARY\\r\\nAnsible crashes on key import with error message pasted below.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n- Make sure the client uses python3\\r\\n- Import a key using `rpm_key` as described above\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n- The key should be imported and it should just work\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n- Ansible crashes with this traceback:\\r\\n\\r\\n```py\\r\\n\\r\\nfatal: [xxx]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"Shared connection to xxx closed.\\r\\n\\\", \\\"module_stdout\\\": \\\"Traceback (most recent call last):\\r\\n  File \\\"/tmp/ansible_sdddnvb2/ansible_module_rpm_key.py\\\", line 209, in <module>\\r\\n    main()\\r\\n  File \\\"/tmp/ansible_sdddnvb2/ansible_module_rpm_key.py\\\", line 201, in main\\r\\n    RpmKey(module)\\r\\n  File \\\"/tmp/ansible_sdddnvb2/ansible_module_rpm_key.py\\\", line 85, in __init__\\r\\n    keyfile = self.fetch_key(key)\\r\\n  File \\\"/tmp/ansible_sdddnvb2/ansible_module_rpm_key.py\\\", line 122, in fetch_key\\r\\n    if not is_pubkey(key):\\r\\n  File \\\"/tmp/ansible_sdddnvb2/ansible_module_rpm_key.py\\\", line 70, in is_pubkey\\r\\n    return re.match(pgp_regex, string, re.DOTALL)\\r\\n  File \\\"/usr/lib64/python3.5/re.py\\\", line 163, in match\\r\\n    return _compile(pattern, flags).match(string)\\r\\nTypeError: cannot use a string pattern on a bytes-like object\\r\\n\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\"}\\r\\n```\", \n    \"component_name\": \"[rpm_key](https//github.com/ansible/ansible- s-core/blob/d749ec91e513c40a50b539a7eaccf29c31dda4d4/packaging/os/rpm_key.py)\", \n    \"component_raw\": \"Module [`rpm_key`](https://github.com/ansible/ansible-modules-core/blob/d749ec91e513c40a50b539a7eaccf29c31dda4d4/packaging/os/rpm_key.py)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20326\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"python3\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/rpm_key.py\", \n    \"summary\": \"Ansible crashes on key import with error message pasted below.\", \n    \"title\": \"rpm_key crashes on Python3\"\n  }, \n  \"20328\": {\n    \"ansible_version\": \"ansible 2.3.0 (at-tweaks c48c453bb9) last updated 2017/01/16 163828 (GMT -700)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\nFeature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nansible-test\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 (at-tweaks c48c453bb9) last updated 2017/01/16 16:38:28 (GMT -700)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\n- Eliminate warning/retry on old instance check.\\r\\n- Increase instance start timeout for windows.\\r\\n\", \n    \"component_name\": \"ansible-test\", \n    \"component_raw\": \"ansible-test\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20328\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"- Eliminate warning/retry on old instance check.\\n\\n- Increase instance start timeout for windows.\", \n    \"title\": \"Improve ansible-test error handling and timeouts.\"\n  }, \n  \"20330\": {\n    \"ansible_version\": \"ansible 2.3.0 (test-docs 78638d1442) last updated 2017/01/16 173115 (GMT -700)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\nDocs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nIntegration Test Docs\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 (test-docs 78638d1442) last updated 2017/01/16 17:31:15 (GMT -700)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nUse ansible-test in integration test README.\", \n    \"component_name\": \"integration test docs\", \n    \"component_raw\": \"Integration Test Docs\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20330\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Use ansible-test in integration test README.\", \n    \"title\": \"Use ansible-test in integration test README.\"\n  }, \n  \"20331\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /Users/simon/sandbox/medstack/deployment/ansible/ansible.cfg\\nconfigured module search path = [./library]\\nCONFIGURATION\", \n    \"body\": \"\\r\\n##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nAnsible configuration\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /Users/simon/sandbox/medstack/deployment/ansible/ansible.cfg\\r\\n  configured module search path = ['./library']\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nAfter debugging a library path search problem, I found that there is no way to explicitly print out the library search path at runtime.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nSee e.g. http://stackoverflow.com/questions/37235848/ansible-not-looking-for-modules-in-library-alongside-playbook which provides instructions on how to debug a search path problem. I used that technique to discover that the search path was not what I expected.\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nI would expect that using the `-vvv` flag would print out the library search path, or that there would be a command-line flag to print the library search path.\\r\\n\\r\\ni.e. the merged results from all places where ANSIBLE_LIBRARY / library is set.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nThere appears to be no way to print out the library search path currently.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"ansible\", \n    \"component_raw\": \"Ansible\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20331\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"cloud\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"After debugging a library path search problem, I found that there is no way to explicitly print out the library search path at runtime.\", \n    \"title\": \"Ability to print out / output the library search path\"\n  }, \n  \"20332\": {\n    \"ansible_version\": \"ansible 2.2.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nLocal connection plugin?\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n```\\r\\n[ssh_connection]\\r\\n# http://docs.ansible.com/intro_configuration.html#pipelining\\r\\npipelining=True\\r\\n# http://docs.ansible.com/intro_configuration.html#ssh-args\\r\\nssh_args = -o ControlMaster=auto -o ControlPersist=30m\\r\\nforks = 50\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\n`16.04.1 LTS (Xenial Xerus)`\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nWhen `cloud-init` runs `ansible-playbook -i hosts -c local /tmp/ansible/playbooks/env_production.yml --limit=bastion`, I get the following error:\\r\\n```\\r\\nPLAY [all] *********************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nfatal: [bastion]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"failed to transfer file to ~/.ansible/tmp/ansible-tmp-1484618416.23-141753847363017/setup.py: [Errno 2] No such file or directory: '~/.ansible/tmp/ansible-tmp-1484618416.23-141753847363017/setup.py'\\\"}\\r\\n        to retry, use: --limit @/tmp/ansible/playbooks/env_production.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nbastion : ok=0    changed=0    unreachable=0    failed=1\\r\\n```\\r\\n\\r\\nThis doesn't happen Ansible 2.2.0. No other changes have been done.\\r\\nThis doesn't happen if I run the script manually from a shell.\\r\\n\\r\\nThe only way I have to reproduce the error is to terminate and spawn a new EC2 instance.\\r\\nI'm trying to find another way to reproduce it.\", \n    \"component_name\": \"local connection plugin?\", \n    \"component_raw\": \"Local connection plugin?\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20332\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When `cloud-init` runs `ansible-playbook -i hosts -c local /tmp/ansible/playbooks/env_production.yml --limit=bastion`, I get the following error:\\n\\n```\\n\\nPLAY [all] *********************************************************************\\n\\n\\n\\nTASK [setup] *******************************************************************\\n\\nfatal: [bastion]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"failed to transfer file to ~/.ansible/tmp/ansible-tmp-1484618416.23-141753847363017/setup.py: [Errno 2] No such file or directory: '~/.ansible/tmp/ansible-tmp-1484618416.23-141753847363017/setup.py'\\\"}\\n\\n        to retry, use: --limit @/tmp/ansible/playbooks/env_production.retry\\n\\n\\n\\nPLAY RECAP *********************************************************************\\n\\nbastion : ok=0    changed=0    unreachable=0    failed=1\\n\\n```\\n\\n\\n\\nThis doesn't happen Ansible 2.2.0. No other changes have been done.\\n\\nThis doesn't happen if I run the script manually from a shell.\\n\\n\\n\\nThe only way I have to reproduce the error is to terminate and spawn a new EC2 instance.\\n\\nI'm trying to find another way to reproduce it.\", \n    \"title\": \"file transfer failure after upgrade from 2.2.0 to 2.2.1\"\n  }, \n  \"20333\": {\n    \"ansible_version\": \"ansible 2.3.0 (dnf fb5fa7dc3d) last updated 2017/01/17 000057 (GMT -500)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndnf\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (dnf fb5fa7dc3d) last updated 2017/01/17 00:00:57 (GMT -500)\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdd support for `autoremove` in dnf module\\r\\nFixes #18815\", \n    \"component_name\": \"dnf\", \n    \"component_raw\": \"dnf\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20333\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"core_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/dnf.py\", \n    \"summary\": \"Add support for `autoremove` in dnf module\\n\\nFixes #18815\", \n    \"title\": \"dnf: Add support for autoremove\"\n  }, \n  \"20334\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel b8dd4dd52b) last updated 2017/01/17 163008 (GMT +1000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_vpc\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel b8dd4dd52b) last updated 2017/01/17 16:30:08 (GMT +1000)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nIt makes little sense to require resource tags if you have\\r\\nthe VPC ID of a VPC that you wish to delete.\\r\\n\", \n    \"component_name\": \"ec2_vpc\", \n    \"component_raw\": \"ec2_vpc\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20334\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"committer_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_vpc.py\", \n    \"summary\": \"It makes little sense to require resource tags if you have\\n\\nthe VPC ID of a VPC that you wish to delete.\", \n    \"title\": \"ec2_vpc: resource_tags aren't required if vpc id given\"\n  }, \n  \"20337\": {\n    \"ansible_version\": \"ansible 2.2.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n- Bugfix Pull Request\\r\\n \\r\\n##### COMPONENT NAME\\r\\nlib/ansible/module_utils/ec2.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nThis fix p3 compatibility to avoid using unicode() in ec2 base module with p3.\\r\\nFor example fixed route3 error 'NameError' with using python3 on remote\\r\\nhosts by default (ubuntu 16+ or so)\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"lib/ansible/module_utils/ec2.py\", \n    \"component_raw\": \"lib/ansible/module_utils/ec2.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20337\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"cloud\", \n      \"python3\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This fix p3 compatibility to avoid using unicode() in ec2 base module with p3.\\n\\nFor example fixed route3 error 'NameError' with using python3 on remote\\n\\nhosts by default (ubuntu 16+ or so)\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"Small fix python3 compatibility in ec2.py\"\n  }, \n  \"20338\": {\n    \"ansible_version\": \"ansible 2.2.0\\nconfig file = /home/baptiste/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodule_utils/azure_rm_common.py \\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.0\\r\\n  config file = /home/baptiste/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nLinked to PR #18695 :\\r\\nFixes issue #17934 at the azure_rm module level. \\r\\n\\r\\nWhen giving permissions at the resource group level and not at the subscription level, the azure rm module fails on authorization failed. \\r\\n\\r\\nBEFORE : \\r\\n```\\r\\n        \\\"module_name\\\": \\\"azure_rm_deployment\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"One-time registration of Microsoft.Network failed - Azure Error: AuthorizationFailed\\\\nMessage: The client '<client_id>' with object id '<client_id>' does not have authorization to perform action 'Microsoft.Network/register/action' over scope '/subscriptions/<subscription_id>'.\\\"\\r\\n}\\r\\n       [...]\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=3    changed=1    unreachable=0    failed=1   \\r\\n\\r\\n```\\r\\nAFTER : \\r\\n```\\r\\n[...]\\r\\n        \\\"module_name\\\": \\\"azure_rm_deployment\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"deployment succeeded\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP ******************************************************************************\\r\\nlocalhost                  : ok=4    changed=2    unreachable=0    failed=0  \\r\\n```\\r\\n\", \n    \"component_name\": \"module_utils/azure_rm_common.py\", \n    \"component_raw\": \"module_utils/azure_rm_common.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20338\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"azure\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"cloud\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Linked to PR #18695 :\\n\\nFixes issue #17934 at the azure_rm module level. \\n\\n\\n\\nWhen giving permissions at the resource group level and not at the subscription level, the azure rm module fails on authorization failed. \\n\\n\\n\\nBEFORE : \\n\\n```\\n\\n        \\\"module_name\\\": \\\"azure_rm_deployment\\\"\\n\\n    }, \\n\\n    \\\"msg\\\": \\\"One-time registration of Microsoft.Network failed - Azure Error: AuthorizationFailed\\\\nMessage: The client '<client_id>' with object id '<client_id>' does not have authorization to perform action 'Microsoft.Network/register/action' over scope '/subscriptions/<subscription_id>'.\\\"\\n\\n}\\n\\n       [...]\\n\\n\\n\\nPLAY RECAP *********************************************************************\\n\\nlocalhost                  : ok=3    changed=1    unreachable=0    failed=1   \\n\\n\\n\\n```\\n\\nAFTER : \\n\\n```\\n\\n[...]\\n\\n        \\\"module_name\\\": \\\"azure_rm_deployment\\\"\\n\\n    }, \\n\\n    \\\"msg\\\": \\\"deployment succeeded\\\"\\n\\n}\\n\\n\\n\\nPLAY RECAP ******************************************************************************\\n\\nlocalhost                  : ok=4    changed=2    unreachable=0    failed=0  \\n\\n```\", \n    \"title\": \"UPD Azure_rm_common with non-blocking pull request from azure_rm.py\"\n  }, \n  \"20339\": {\n    \"ansible_version\": \"2.3.0 0.0.devel\", \n    \"body\": \"Updated create default value to True to match documentation (and common sense).\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n - modules/files/ini_file\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.3.0 0.0.devel\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThe Ansible [documentation](http://docs.ansible.com/ansible/ini_file_module.html) for ini_file says a new parameter called `create` was added in 2.2 and the default is `yes`:\\r\\n\\r\\n```\\r\\n  create:\\r\\n     required: false\\r\\n     choices: [ \\\"yes\\\", \\\"no\\\" ]\\r\\n     default: \\\"yes\\\"\\r\\n     description:\\r\\n       - If set to 'no', the module will fail if the file does not already exist.\\r\\n         By default it will create the file if it is missing.\\r\\n     version_added: \\\"2.2\\\"\\r\\n```\\r\\n\\r\\nHowever the function declaration defaults the `create` variable to `False` which means existing calls to `ini_file` no longer function as per the documentation, nor as expected.\\r\\n\", \n    \"component_name\": \"s/files/ini_file\", \n    \"component_raw\": \"- modules/files/ini_file\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20339\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"community_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/ini_file.py\", \n    \"summary\": \"The Ansible [documentation](http://docs.ansible.com/ansible/ini_file_module.html) for ini_file says a new parameter called `create` was added in 2.2 and the default is `yes`:\\n\\n\\n\\n```\\n\\n  create:\\n\\n     required: false\\n\\n     choices: [ \\\"yes\\\", \\\"no\\\" ]\\n\\n     default: \\\"yes\\\"\\n\\n     description:\\n\\n       - If set to 'no', the module will fail if the file does not already exist.\\n\\n         By default it will create the file if it is missing.\\n\\n     version_added: \\\"2.2\\\"\\n\\n```\\n\\n\\n\\nHowever the function declaration defaults the `create` variable to `False` which means existing calls to `ini_file` no longer function as per the documentation, nor as expected.\", \n    \"title\": \"ini_file 'create' parameter default value should be True\"\n  }, \n  \"20340\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nModule sns_topic\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nNone\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nUbuntu 16.04 LTS\\r\\n\\r\\n##### SUMMARY\\r\\nThe sns_topic module always reports changed state, even if the purge actually sets the topic subscriptions to the same value ... I don't care if something happened (like purge algorithm always delete and add), the changed state should report if something changed.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```yaml\\r\\n    - name: Create DevOps Team notification topic\\r\\n      sns_topic:\\r\\n        name: '{{ aws_environment }}-devops-team'\\r\\n        display_name: '{{ aws_environment }}'\\r\\n        delivery_policy:\\r\\n          http:\\r\\n            defaultHealthyRetryPolicy:\\r\\n              backoffFunction: linear\\r\\n              maxDelayTarget: 20\\r\\n              minDelayTarget: 20\\r\\n              numMaxDelayRetries: 0\\r\\n              numMinDelayRetries: 0\\r\\n              numNoDelayRetries: 0\\r\\n              numRetries: 3\\r\\n            defaultThrottlePolicy:\\r\\n              maxReceivesPerSecond: 1\\r\\n            disableSubscriptionOverrides: no\\r\\n        subscriptions: '{{ aws_devops_team_endpoints }}'\\r\\n        region: '{{ aws_region }}'\\r\\n        state: present\\r\\n```\\r\\n\\r\\nHack:\\r\\n\\r\\n```yaml\\r\\n      changed_when: >  # FIXME hack to fix the changed state\\r\\n        not _self|failed and _self.sns_topic.subscriptions_added != _self_sns.sns_topic.subscriptions_existing\\r\\n      register: _self\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nReport changed at first run or if aws_devops_team_endpoints is updated then report unchanged.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nAlways report changed.\", \n    \"component_name\": \"sns_topic\", \n    \"component_raw\": \"Module sns_topic\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20340\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/sns_topic.py\", \n    \"summary\": \"The sns_topic module always reports changed state, even if the purge actually sets the topic subscriptions to the same value ... I don't care if something happened (like purge algorithm always delete and add), the changed state should report if something changed.\", \n    \"title\": \"Module sns_topic always report changed\"\n  }, \n  \"20341\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\nFix #20288 Fix ansible/ansible-modules-core#5779 Fix ansible/ansible-modules-core#5559\\r\\n\\r\\n##### COMPONENT NAME\\r\\napache2_module\\r\\n\\r\\n##### SUMMARY\\r\\nAdd a workaround for the handling of shib2 and php modules.\\r\\n\\r\\nThe shib2 module identifies itself in apache2 as mod_shib and not as expected with shib2_module. I adjusted the name for the check.\\r\\n\\r\\nphp modules are only identified in apache2 with their major version number. If e.g. php7.1 is used, the module can not be enabled/disabled, because the module identifies as php7_module. This is fixed by using only the major version to check if a php module is enabled or disabled.\\r\\n\\r\\nI'm not really happy with this patch and open for any other suggestions.\", \n    \"component_name\": \"apache2_module\", \n    \"component_raw\": \"apache2_module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20341\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"community_review\", \n      \"module\", \n      \"owner_pr\"\n    ], \n    \"module_match\": \"lib/ansible/modules/web_infrastructure/apache2_module.py\", \n    \"summary\": \"Add a workaround for the handling of shib2 and php modules.\\n\\n\\n\\nThe shib2 module identifies itself in apache2 as mod_shib and not as expected with shib2_module. I adjusted the name for the check.\\n\\n\\n\\nphp modules are only identified in apache2 with their major version number. If e.g. php7.1 is used, the module can not be enabled/disabled, because the module identifies as php7_module. This is fixed by using only the major version to check if a php module is enabled or disabled.\\n\\n\\n\\nI'm not really happy with this patch and open for any other suggestions.\", \n    \"title\": \"[WIP] Add workaround for shib2 and php modules\"\n  }, \n  \"20342\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nwin_iis_webapppool\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nN/A\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nUbuntu 16.04\\r\\n##### SUMMARY\\r\\nSetting attributes where the corresponding IIS AppPool property is not an object with the property `Value`\\r\\ncauses an exception. I.e setting the attribute `managedRuntimeVersion:v4.0` will work, setting the attribute `startMode:AlwaysRunning` will fail.\\r\\n[line 82](https://github.com/ansible/ansible-modules-extras/blob/devel/windows/win_iis_webapppool.ps1#L82):\\r\\n```powershell\\r\\nif(-not $currentParameter -or ($currentParameter.Value -as [String]) -ne $newParameter.Value) {\\r\\n    Set-ItemProperty (\\\"IIS:\\\\AppPools\\\\\\\" + $name) $newParameter.Key $newParameter.Value\\r\\n    $result.changed = $TRUE\\r\\n}\\r\\n```\\r\\n`$currentParameter` can be a string and will fail when accessing `Value`.\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nUse an attribute which is of type string for example `startMode`\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n  win_iis_webapppool:\\r\\n    name: name\\r\\n    state: started\\r\\n    attributes: startMode:AlwaysRunning\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n`startMode` is set to `AlwaysRunning`. The execution succeeds. \\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nfatal: []: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_iis_webapppool\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"The property 'Value' cannot be found on this object. Verify that the property exists.\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"win_iis_webapppool\", \n    \"component_raw\": \"win_iis_webapppool\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20342\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_iis_webapppool.py\", \n    \"summary\": \"Setting attributes where the corresponding IIS AppPool property is not an object with the property `Value`\\n\\ncauses an exception. I.e setting the attribute `managedRuntimeVersion:v4.0` will work, setting the attribute `startMode:AlwaysRunning` will fail.\\n\\n[line 82](https://github.com/ansible/ansible-modules-extras/blob/devel/windows/win_iis_webapppool.ps1#L82):\\n\\n```powershell\\n\\nif(-not $currentParameter -or ($currentParameter.Value -as [String]) -ne $newParameter.Value) {\\n\\n    Set-ItemProperty (\\\"IIS:\\\\AppPools\\\\\\\" + $name) $newParameter.Key $newParameter.Value\\n\\n    $result.changed = $TRUE\\n\\n}\\n\\n```\\n\\n`$currentParameter` can be a string and will fail when accessing `Value`.\", \n    \"title\": \"win_iis_webapppool Exception: \\\"The property 'Value' cannot be found on this object\\\"\"\n  }, \n  \"20343\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nwin_regedit\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nWindows 10\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nAt the moment the module does not support creating Registry entries of type REG_NONE. These are used for ProgID entries when creating file associations.\\r\\n\\r\\nI tried adding a type \\\"none\\\" with data \\\"hex:00\\\" however Powershell does not support it with the current logic. I guess the data parameter itself is not really needed, if REG_NONE is used we simply have to write `hex(0)`.\", \n    \"component_name\": \"win_regedit\", \n    \"component_raw\": \"win_regedit\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20343\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_regedit.py\", \n    \"summary\": \"At the moment the module does not support creating Registry entries of type REG_NONE. These are used for ProgID entries when creating file associations.\\n\\n\\n\\nI tried adding a type \\\"none\\\" with data \\\"hex:00\\\" however Powershell does not support it with the current logic. I guess the data parameter itself is not really needed, if REG_NONE is used we simply have to write `hex(0)`.\", \n    \"title\": \"win_regedit: Unable to create entries of type REG_NONE\"\n  }, \n  \"20344\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel c5d3aac822) last updated 2017/01/16 113857 (GMT +1000)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"\\r\\n##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_vpc\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel c5d3aac822) last updated 2017/01/16 11:38:57 (GMT +1000)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThe deprecation of ec2_vpc module has been discussed for\\r\\n2 years and is causing duplication of effort as changes\\r\\nare implemented for ec2_vpc rather than for the newer\\r\\nalternatives\\r\\n\\r\\nAs mentioned in ansible/ansible-modules-core#995\", \n    \"component_name\": \"ec2_vpc\", \n    \"component_raw\": \"ec2_vpc\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20344\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"docs\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/_ec2_vpc.py\", \n    \"summary\": \"The deprecation of ec2_vpc module has been discussed for\\n\\n2 years and is causing duplication of effort as changes\\n\\nare implemented for ec2_vpc rather than for the newer\\n\\nalternatives\\n\\n\\n\\nAs mentioned in ansible/ansible-modules-core#995\", \n    \"title\": \"Deprecate ec2_vpc module\"\n  }, \n  \"20345\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\napt_repository_module\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.1.0\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nUbuntu 14.04\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nI tried to add ppa on ubuntu 14.04 server but getting \\\"invalid repository\\\" error. But when I try to add it from the server cli, it works fine.\\r\\n\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- name: Add PHP repo\\r\\n  apt_repository:\\r\\n    repo: 'ppa:ondrej/php'\\r\\n```\\r\\nError output\\r\\n\\r\\n```\\r\\nfatal: [ip]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Invalid repository string: ppa:ondrej/php\\\"}\\r\\n````\\r\\n\", \n    \"component_name\": \"apt_repository_module\", \n    \"component_raw\": \"apt_repository_module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20345\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/apt_repository.py\", \n    \"summary\": \"I tried to add ppa on ubuntu 14.04 server but getting \\\"invalid repository\\\" error. But when I try to add it from the server cli, it works fine.\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n```yaml\\n\\n- name: Add PHP repo\\n\\n  apt_repository:\\n\\n    repo: 'ppa:ondrej/php'\\n\\n```\\n\\nError output\\n\\n\\n\\n```\\n\\nfatal: [ip]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Invalid repository string: ppa:ondrej/php\\\"}\\n\\n````\", \n    \"title\": \"Trying to install PPA, throws \\\"Invalid repository string: ppa:ondrej/php\\\"\"\n  }, \n  \"20346\": {\n    \"ansible_version\": \"ansible 2.2.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nAnsible core\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nANSIBLE_GATHERING=smart\\r\\nANSIBLE_HASH_BEHAVIOUR=merge\\r\\nANSIBLE_REMOTE_TEMP=/tmp\\r\\nANSIBLE_RETRY_FILES_ENABLED=no\\r\\nANSIBLE_SSH_PIPELINING=yes\\r\\nANSIBLE_TRANSPORT=local\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nCentOS 7, with ansible running in local mode.\\r\\n\\r\\n##### SUMMARY\\r\\nUnder Ansible 2.1, a block that had a failed task, but that was rescued, did not cause Ansible to report any failures. In other words, at the end of the play, I would see \\\"failed=0\\\".\\r\\n\\r\\nWith Ansible 2.2.1, even though a failed task is rescued, Ansible reports \\\"failed=1\\\" at the end.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nCreate a block..rescue sequence, containing a task that fails, and run the playbook. Ansible will report failed tasks at the end.\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- hosts: localhost\\r\\n  gather_facts: no\\r\\n  tasks:\\r\\n  - block:\\r\\n    - fail: msg=\\\"This failure will be rescued\\\"\\r\\n    rescue:\\r\\n    - debug: msg=NOOP\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe summary line at the end should have shown failed=0\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nThe summary line shows failed=1\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=1\\r\\n```\\r\\n\", \n    \"component_name\": \"ansible core\", \n    \"component_raw\": \"Ansible core\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20346\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Under Ansible 2.1, a block that had a failed task, but that was rescued, did not cause Ansible to report any failures. In other words, at the end of the play, I would see \\\"failed=0\\\".\\n\\n\\n\\nWith Ansible 2.2.1, even though a failed task is rescued, Ansible reports \\\"failed=1\\\" at the end.\", \n    \"title\": \"Report failed tasks that were rescued separately from other failures\"\n  }, \n  \"20347\": {\n    \"ansible_version\": \"ansible 2.1.0.0\", \n    \"body\": \"_From @AgDude on July 18, 2016 13:26_\\n\\n##### ISSUE TYPE\\n- Bug Report\\n##### COMPONENT NAME\\n\\nec2 module\\n##### ANSIBLE VERSION\\n\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\n\\n```\\nansible 2.1.0.0\\n```\\n##### OS / ENVIRONMENT\\n\\nubuntu 14.04\\n##### SUMMARY\\n\\nLaunching an EBS backed ec2 instance with a non-default root volume does not work as shown in the documentation example. Instead it launches an instance with a standard 8GB root volume, and an additional volume per the definition.\\n\\nThe following is the task which was used to launch the instance (some keys removed for brevity):\\n\\n```\\n    - name: Launch ec2 instance\\n      ec2:\\n        instance_type: \\\"t2.small\\\"\\n        volumes:\\n          - device_name: /dev/xvda\\n            volume_type: gp2\\n            volume_size: 15\\n      register: ec2\\n```\\n\\nThis is the example from http://docs.ansible.com/ansible/ec2_module.html, which shows a non-standard root volume:\\n\\n```\\n# Single instance with ssd gp2 root volume\\n- ec2:\\n    key_name: mykey\\n    group: webserver\\n    instance_type: c3.medium\\n    image: ami-123456\\n    wait: yes\\n    wait_timeout: 500\\n    volumes:\\n      - device_name: /dev/xvda\\n        volume_type: gp2\\n        volume_size: 8\\n    vpc_subnet_id: subnet-29e63245\\n    assign_public_ip: yes\\n    exact_count: 1\\n```\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#4204_\", \n    \"component_name\": \"ec2\", \n    \"component_raw\": \"ec2 module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20347\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"affects_2.2\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2.py\", \n    \"summary\": \"Launching an EBS backed ec2 instance with a non-default root volume does not work as shown in the documentation example. Instead it launches an instance with a standard 8GB root volume, and an additional volume per the definition.\\n\\nThe following is the task which was used to launch the instance (some keys removed for brevity):\\n\\n```\\n    - name: Launch ec2 instance\\n      ec2:\\n        instance_type: \\\"t2.small\\\"\\n        volumes:\\n          - device_name: /dev/xvda\\n            volume_type: gp2\\n            volume_size: 15\\n      register: ec2\\n```\\n\\nThis is the example from http://docs.ansible.com/ansible/ec2_module.html, which shows a non-standard root volume:\\n\\n```\\n# Single instance with ssd gp2 root volume\\n- ec2:\\n    key_name: mykey\\n    group: webserver\\n    instance_type: c3.medium\\n    image: ami-123456\\n    wait: yes\\n    wait_timeout: 500\\n    volumes:\\n      - device_name: /dev/xvda\\n        volume_type: gp2\\n        volume_size: 8\\n    vpc_subnet_id: subnet-29e63245\\n    assign_public_ip: yes\\n    exact_count: 1\\n```\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#4204_\", \n    \"title\": \"ec2 module does not create root volume as documented\"\n  }, \n  \"20348\": {\n    \"ansible_version\": null, \n    \"body\": \"the 'EXPORT ANSIBLE_NOCOWS=1' rendering is broken due to a double colon in the paragraph above\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nWebsite FAQ\\r\\n\\r\\n##### SUMMARY\\r\\nFix minor rendering glitch in the FAQ (cowsay environment variable)\", \n    \"component_name\": \"website faq\", \n    \"component_raw\": \"Website FAQ\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20348\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Fix minor rendering glitch in the FAQ (cowsay\", \n    \"title\": \"Fix double colon which fixes block rendering\"\n  }, \n  \"20349\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nknown_hosts\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\nansible 2.3.0\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThis makes `known_hosts` return a diff when invoked with `--check --diff`.\", \n    \"component_name\": \"known_hosts\", \n    \"component_raw\": \"known_hosts\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20349\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"needs_revision\", \n      \"test\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/known_hosts.py\", \n    \"summary\": \"This makes `known_hosts` return a diff when invoked with `--check --diff`.\", \n    \"title\": \"known_hosts: support --diff\"\n  }, \n  \"20350\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nldap-attr ( New in version 2.3. )\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\n\\r\\n##### SUMMARY\\r\\nlook like 2 Exemples are wrong: \\r\\nhttp://docs.ansible.com/ansible/ldap_attr_module.html#id4\\r\\nWe are in the module ldap_attr the last 2 exemples are about  ldap_entry (with attribut only exist in  ldap_attr )\\r\\n- name: Get rid of an unneeded attribute\\r\\n  ldap_entry:\\r\\n\\r\\n- name: Get rid of an unneeded attribute\\r\\n  ldap_entry:\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\", \n    \"component_name\": \"ldap-attr ( new in version 2.3. )\", \n    \"component_raw\": \"ldap-attr ( New in version 2.3. )\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20350\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs_report\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/at.py\", \n    \"summary\": \"look like 2 Exemples are wrong: \\n\\nhttp://docs.ansible.com/ansible/ldap_attr_module.html#id4\\n\\nWe are in the module ldap_attr the last 2 exemples are about  ldap_entry (with attribut only exist in  ldap_attr )\\n\\n- name: Get rid of an unneeded attribute\\n\\n  ldap_entry:\\n\\n\\n\\n- name: Get rid of an unneeded attribute\\n\\n  ldap_entry:\", \n    \"title\": \"Documentation Error in http://docs.ansible.com/ansible/ldap_attr_module.html#ldap-attr\"\n  }, \n  \"20351\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"Fixing the documentation issue #20350 \\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nldap-attr ( New in version 2.3. )\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nFixes #20350 \\r\\nReplace module name from ldap_entry to ldap_attr on exemples\", \n    \"component_name\": \"ldap-attr ( new in version 2.3. )\", \n    \"component_raw\": \"ldap-attr ( New in version 2.3. )\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20351\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"docs\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/ldap_attr.py\", \n    \"summary\": \"Fixes #20350 \\n\\nReplace module name from ldap_entry to ldap_attr on exemples\", \n    \"title\": \"Update documentation about ldap_attr \"\n  }, \n  \"20352\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nwin_unzip\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nSince the module was using $params.creates, the Expand-Environment was not effective.\\r\\nBy using $creates correctly it works.\\r\\n\\r\\nAlso fix an incorrect Exit-Json call.\", \n    \"component_name\": \"win_unzip\", \n    \"component_raw\": \"win_unzip\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20352\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"community_review\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_unzip.ps1\", \n    \"summary\": \"Since the module was using $params.creates, the Expand-\", \n    \"title\": \"win_unzip: Fix for working `creates:` when using environment\"\n  }, \n  \"20353\": {\n    \"ansible_version\": \"\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\ndocs templating\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n\", \n    \"component_name\": \"docs templating\", \n    \"component_raw\": \"docs templating\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20353\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"\", \n    \"title\": \"Doc fixes\"\n  }, \n  \"20354\": {\n    \"ansible_version\": \"2.1.1.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n##### COMPONENT NAME\\r\\nModule name is yum_secure\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.1.1.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n Ansible supports sudo at the framework level, but it assumes unrestricted sudo permissions.\\r\\n We have to operate environments where sudo is restricted to certain commands only, hence Ansible at the framework level doesn\\u2019t help us.\\r\\n We have introduced sudo capabilities directly into a new yum module, in order to support restricted sudo and manage to deploy our solution.\\r\\n\\r\\nWhat do you think of the solution, is there any other alternatives?\\r\\n\\r\\nWe are working with Ansible version 2.1 so we would need this functionality on this specific version.\\r\\n\\r\\n\", \n    \"component_name\": \"name is yum_secure\", \n    \"component_raw\": \"Module name is yum_secure\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20354\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/yum_secure.py\", \n    \"summary\": \"Ansible supports sudo at the framework level, but it assumes unrestricted sudo permissions.\\n\\n We have to operate\", \n    \"title\": \"Commit the yum_secure module\"\n  }, \n  \"20359\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\n- get_url (module_utils/web.py)\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n```\\r\\n[defaults]\\r\\nretry_files_enabled = False\\r\\ndisplay_skipped_hosts = False\\r\\nhash_behaviour = \\\"merge\\\"\\r\\ninventory = ./hosts\\r\\nansible_managed = This file is managed by Ansible.\\r\\n  template: {file}\\r\\nvault_password_file = ~/.vault_password\\r\\nroles_path = ./roles/\\r\\n[ssh_connection]\\r\\ncontrol_path=%(directory)s/%%h-%%p-%%r\\r\\n```\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nController machine: `Darwin Kernel Version 15.6.0`\\r\\nControlled machine: `3.16.0-4-amd64 #1 SMP Debian 3.16.39-1 (2016-12-30) x86_64 GNU/Linux`\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWhen using module get_url to download from a HTTP URL, it does *not* use the OS environment variable `http_proxy`.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- name: \\\"Download something through os.environ['http_proxy']\\\"\\r\\n  get_url:\\r\\n    url: \\\"http://wtfismyip.com/json\\\"\\r\\n    dest: \\\"/tmp/myip1.json\\\"\\r\\n  become: yes\\r\\n\\r\\n- name: \\\"Download something through explicitly set ansible environment\\\"\\r\\n  get_url:\\r\\n    url: \\\"http://wtfismyip.com/json\\\"\\r\\n    dest: \\\"/tmp/myip2.json\\\"\\r\\n  become: yes\\r\\n  environment:\\r\\n    http_proxy: http://same.proxy.like.in.etc.environments:8080\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nBoth tasks should have produced the same file, containing the content of the URL `url`.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nOnly the second approach worked, when explicitly setting the environment through Ansible.\\r\\nNot a single request was made to the proxy on the first approach.\\r\\n\\r\\nBy using the shell commands `env` and `echo $http_proxy` I can verify that Ansible is running with the full environment, including `http_proxy`.\\r\\n\\r\\n\\r\\n#### Comments\\r\\nhttps://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/urls.py#L675\\r\\n`https_proxy` is actually being respected by the module_util `urls.py` which is imported into `get_url`, but only http**s** (secure), and not http (plain). Maybe this is a useful pointer\\r\\n\\r\\nThank you for any ideas or pull requests!\", \n    \"component_name\": \"get_url (module_utils/web.py)\", \n    \"component_raw\": \"- get_url (module_utils/web.py)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20359\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"networking\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When using module get_url to download from a HTTP URL, it does *not* use the OS environment variable `http_proxy`.\", \n    \"title\": \"get_url does not respect os.environ http_proxy\"\n  }, \n  \"20360\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /Users/dkimsey/ansible/ansible.cfg\\nconfigured module search path = [library/]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ngroup_by\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /Users/dkimsey/ansible/ansible.cfg\\r\\n  configured module search path = ['library/']\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nnot applicable\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nOS X\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nWhen I attempt to use a dynamically created group as a host selector, it does not work if the dynamically created group was referenced before it was created.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nSee complete [playbook test case][1], excerpt follows.\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n# ansible-playbook -i localhost, test-play.yml\\r\\n\\r\\n- name: Gather facts and partition hosts\\r\\n  hosts: '!__partitioned'\\r\\n  become: false\\r\\n  connection: local\\r\\n  tasks:\\r\\n    - group_by:\\r\\n        key: __partitioned\\r\\n\\r\\n- hosts: '!__partitioned'\\r\\n  become: false\\r\\n  connection: local\\r\\n  tasks:\\r\\n    - fail: msg='I should not run, !__partitioned filter used'\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nThe playbook should not fail.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n...\\r\\nPLAY [!__partitioned] **********************************************************\\r\\n\\r\\nTASK [fail] ********************************************************************\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"I should not run, !__partitioned filter used\\\"}\\r\\n```\\r\\n\\r\\n[1]: https://gist.github.com/dekimsey/015e3131625e00878b8bf6cee3aa6f02\", \n    \"component_name\": \"group_by\", \n    \"component_raw\": \"group_by\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20360\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/inventory/group_by.py\", \n    \"summary\": \"When I attempt to use a dynamically created group as a host selector, it does not work if the dynamically created group was referenced before it was created.\", \n    \"title\": \"cannot filter host_lists with group_by generated groups\"\n  }, \n  \"20368\": {\n    \"ansible_version\": \"2.2.1.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nlib/ansible/module_utils/known_hosts.py \\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.2.1.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nDebian 8.7\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nssh-keyscan is done on port 22 only and ansible fails right away. This is related to commit https://github.com/ansible/ansible/commit/6025e97d13c5b4a38502ead64bd547ec61fc608f\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n/usr/local/bin/ansible-pull -l kosta --accept-host-key -d /var/lib/ansible/setup -U ssh://git@private-repo.com:8888/devops/ansible-pub.git\\r\\n\\r\\nNotice: Any private repo that is not on port 22\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\nplaybook is irrelevant in this case\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nAnsible should run\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nAnsible fails to run\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nlocalhost | FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"msg\\\": \\\"failed to get the hostkey for private-repo.com\\\"\\r\\n}\\r\\n\\r\\n```\\r\\n\\r\\nCurrent Workarounds:\\r\\n1) A work around is to manually do: ssh-keyscan -p <PORT_NO> private-repo.com and add it to known_hosts before running ansible-pull or git commands\\r\\n2) Do a git clone manually and use the --force option in ansible-pull\\r\\n\\r\\nSuggestion Fix:\\r\\nhttps://github.com/ansible/ansible/pull/18734/commits/fc10f66912dd61760001253aca8bf8ce3ea41575\", \n    \"component_name\": \"lib/ansible/module_utils/known_hosts.py\", \n    \"component_raw\": \"lib/ansible/module_utils/known_hosts.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20368\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"c:module_utils/\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"ssh-keyscan is done on port 22 only and ansible fails right away. This is related to commit https://github.com/ansible/ansible/commit/6025e97d13c5b4a38502ead64bd547ec61fc608f\", \n    \"title\": \"ssh-keyscan fails in \"\n  }, \n  \"20369\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nwin_user\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nWindows 10\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWhen using the below playbook (without password !) I get this error:\\r\\n```\\r\\nException calling \\\"SetInfo\\\" with \\\"0\\\" argument(s): \\\"The password does not meet the password policy requirements. Check the minimum password length, password complexity and password history requirements.\\\"\\r\\n```\\r\\n\\r\\n```yaml\\r\\n- win_user:\\r\\n    name: sqlsvc\\r\\n    groups:\\r\\n    - Administrators\\r\\n    groups_action: add\\r\\n    password_never_expires: yes\\r\\n    state: present\\r\\n```\\r\\n\\r\\nObviously I didn't provide a password, but it shouldn't bail out with this specific error.\", \n    \"component_name\": \"win_user\", \n    \"component_raw\": \"win_user\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20369\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_user.py\", \n    \"summary\": \"When using the below playbook (without password !) I get this error:\\n\\n```\\n\\nException calling \\\"SetInfo\\\" with \\\"0\\\" argument(s): \\\"The password does not meet the password policy requirements. Check the minimum password length, password complexity and password history requirements.\\\"\\n\\n```\\n\\n\\n\\n```yaml\\n\\n- win_user:\\n\\n    name: sqlsvc\\n\\n    groups:\\n\\n    - Administrators\\n\\n    groups_action: add\\n\\n    password_never_expires: yes\\n\\n    state: present\\n\\n```\\n\\n\\n\\nObviously I didn't provide a password, but it shouldn't bail out with this specific error.\", \n    \"title\": \"win_user: Fails with Exception calling \\\"SetInfo\\\" with \\\"0\\\" argument(s)\"\n  }, \n  \"20370\": {\n    \"ansible_version\": \"ansible 2.2.1.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nrds\\r\\nansible/lib/ansible/modules/cloud/amazon/rds.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.1.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nMac OS 10.12.2\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWith apply_immeditely set to 'yes':\\r\\nIf I try and use the module to modify an instance from multi_zone: no to multi_zone: yes, it works.\\r\\nBUT, if I try and use the module to modify an instance from multi_zone: yes to multi_zone: no, it says \\\"changed\\\" but no action is triggered. Again, apply_immediately is set to 'yes'.\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nCreate an RDS instance with multi_zone set to `no`.\\r\\nWrite an ansible play to modify said instance multi_zone to `yes`.\\r\\neg:\\r\\n```\\r\\n- name: modify db instance\\r\\n      rds:\\r\\n        command: modify\\r\\n        region: us-west-2\\r\\n        instance_name: test-db\\r\\n        multi_zone: yes\\r\\n        apply_immediately: yes\\r\\n        wait: yes\\r\\n```\\r\\nRun play and confirm that mutli_az has been changed from `no` to `yes`. \\ud83d\\udc4d \\r\\nNow change play to modify instance from multi_zone `yes` to multi_zone `no`\\r\\neg\\r\\n```\\r\\n- name: modify db instance\\r\\n      rds:\\r\\n        command: modify\\r\\n        region: us-west-2\\r\\n        instance_name: test-db\\r\\n        multi_zone: no\\r\\n        apply_immediately: yes\\r\\n        wait: yes\\r\\n```\\r\\nRun the play and confirm that play does not throw and error of any kind, but appears to work.\\r\\nCheck the RDS instance and you will see that no modification has been triggered, and multi_az remains set to `yes`. \\ud83d\\udc4e \\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- name: modify db instance\\r\\n      rds:\\r\\n        command: modify\\r\\n        region: us-west-2\\r\\n        instance_name: test-db\\r\\n        multi_zone: no\\r\\n        apply_immediately: yes\\r\\n        wait: yes\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nExpected: changed multi_zone: `yes` to multi_zone: `no`\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nActual: nothing changed.\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nMicahs-MBP:RDS mkramer$ AWS_PROFILE=qa ansible-playbook -i inventory/ec2.py rds_main.yml -e \\\"vars=programs\\\" -vvvv\\r\\nNo config file found; using defaults\\r\\n [WARNING]: Host file not found: inventory/ec2.py\\r\\n\\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n\\r\\nLoading callback plugin default of type stdout, v2.0 from /Library/Python/2.7/site-packages/ansible/plugins/callback/__init__.pyc\\r\\n\\r\\nPLAYBOOK: rds_main.yml *********************************************************\\r\\n1 plays in rds_main.yml\\r\\n\\r\\nPLAY [RDS Database] ************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nUsing module file /Library/Python/2.7/site-packages/ansible/modules/core/system/setup.py\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: mkramer\\r\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo ~/.ansible/tmp/ansible-tmp-1484695047.43-249961633635893 `\\\" && echo ansible-tmp-1484695047.43-249961633635893=\\\"` echo ~/.ansible/tmp/ansible-tmp-1484695047.43-249961633635893 `\\\" ) && sleep 0'\\r\\n<127.0.0.1> PUT /var/folders/0w/h513fdx52h77f2gyfmhhczrh0000gn/T/tmpd364EL TO /Users/mkramer/.ansible/tmp/ansible-tmp-1484695047.43-249961633635893/setup.py\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /Users/mkramer/.ansible/tmp/ansible-tmp-1484695047.43-249961633635893/ /Users/mkramer/.ansible/tmp/ansible-tmp-1484695047.43-249961633635893/setup.py && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python /Users/mkramer/.ansible/tmp/ansible-tmp-1484695047.43-249961633635893/setup.py; rm -rf \\\"/Users/mkramer/.ansible/tmp/ansible-tmp-1484695047.43-249961633635893/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nok: [localhost]\\r\\n\\r\\nTASK [modify db instance] ******************************************************\\r\\ntask path: /Users/mkramer/github/infrastructure/ansible/RDS/rds_main.yml:71\\r\\nUsing module file /Library/Python/2.7/site-packages/ansible/modules/core/cloud/amazon/rds.py\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: mkramer\\r\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo ~/.ansible/tmp/ansible-tmp-1484695048.0-128080980636571 `\\\" && echo ansible-tmp-1484695048.0-128080980636571=\\\"` echo ~/.ansible/tmp/ansible-tmp-1484695048.0-128080980636571 `\\\" ) && sleep 0'\\r\\n<127.0.0.1> PUT /var/folders/0w/h513fdx52h77f2gyfmhhczrh0000gn/T/tmpWCn0PP TO /Users/mkramer/.ansible/tmp/ansible-tmp-1484695048.0-128080980636571/rds.py\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /Users/mkramer/.ansible/tmp/ansible-tmp-1484695048.0-128080980636571/ /Users/mkramer/.ansible/tmp/ansible-tmp-1484695048.0-128080980636571/rds.py && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python /Users/mkramer/.ansible/tmp/ansible-tmp-1484695048.0-128080980636571/rds.py; rm -rf \\\"/Users/mkramer/.ansible/tmp/ansible-tmp-1484695048.0-128080980636571/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nchanged: [localhost] => {\\r\\n    \\\"changed\\\": true, \\r\\n    \\\"instance\\\": {\\r\\n        \\\"availability_zone\\\": \\\"us-west-2c\\\", \\r\\n        \\\"backup_retention\\\": 7, \\r\\n        \\\"create_time\\\": 1484609755.023, \\r\\n        \\\"endpoint\\\": \\\"programs-qa-blu.cbwgj0moesb4.us-west-2.rds.amazonaws.com\\\", \\r\\n        \\\"id\\\": \\\"programs-qa-blu\\\", \\r\\n        \\\"instance_type\\\": \\\"db.t2.micro\\\", \\r\\n        \\\"iops\\\": null, \\r\\n        \\\"maintenance_window\\\": \\\"fri:08:20-fri:08:50\\\", \\r\\n        \\\"multi_zone\\\": true, \\r\\n        \\\"port\\\": 5432, \\r\\n        \\\"replication_source\\\": null, \\r\\n        \\\"status\\\": \\\"available\\\", \\r\\n        \\\"username\\\": \\\"programsUser\\\", \\r\\n        \\\"vpc_security_groups\\\": \\\"sg-2620c15f\\\"\\r\\n    }, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"apply_immediately\\\": true, \\r\\n            \\\"aws_access_key\\\": null, \\r\\n            \\\"aws_secret_key\\\": null, \\r\\n            \\\"backup_retention\\\": null, \\r\\n            \\\"backup_window\\\": null, \\r\\n            \\\"character_set_name\\\": null, \\r\\n            \\\"command\\\": \\\"modify\\\", \\r\\n            \\\"db_engine\\\": null, \\r\\n            \\\"db_name\\\": null, \\r\\n            \\\"ec2_url\\\": null, \\r\\n            \\\"engine_version\\\": null, \\r\\n            \\\"force_failover\\\": false, \\r\\n            \\\"instance_name\\\": \\\"programs-qa-blu\\\", \\r\\n            \\\"instance_type\\\": null, \\r\\n            \\\"iops\\\": null, \\r\\n            \\\"license_model\\\": null, \\r\\n            \\\"maint_window\\\": null, \\r\\n            \\\"multi_zone\\\": false, \\r\\n            \\\"new_instance_name\\\": null, \\r\\n            \\\"option_group\\\": null, \\r\\n            \\\"parameter_group\\\": null, \\r\\n            \\\"password\\\": null, \\r\\n            \\\"port\\\": null, \\r\\n            \\\"profile\\\": null, \\r\\n            \\\"publicly_accessible\\\": null, \\r\\n            \\\"region\\\": \\\"us-west-2\\\", \\r\\n            \\\"security_groups\\\": null, \\r\\n            \\\"security_token\\\": null, \\r\\n            \\\"size\\\": null, \\r\\n            \\\"snapshot\\\": null, \\r\\n            \\\"source_instance\\\": null, \\r\\n            \\\"subnet\\\": null, \\r\\n            \\\"tags\\\": null, \\r\\n            \\\"upgrade\\\": false, \\r\\n            \\\"username\\\": null, \\r\\n            \\\"validate_certs\\\": true, \\r\\n            \\\"vpc_security_groups\\\": null, \\r\\n            \\\"wait\\\": true, \\r\\n            \\\"wait_timeout\\\": 300, \\r\\n            \\\"zone\\\": null\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"rds\\\"\\r\\n    }\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=2    changed=1    unreachable=0    failed=0   \\r\\n\\r\\nMicahs-MBP:RDS mkramer$ \\r\\n```\\r\\n\", \n    \"component_name\": \"rds\", \n    \"component_raw\": \"rds\\nansible/lib/ansible/modules/cloud/amazon/rds.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20370\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/rds.py\", \n    \"summary\": \"With apply_immeditely set to 'yes':\\n\\nIf I try and use the module to modify an instance from multi_zone: no to multi_zone: yes, it works.\\n\\nBUT, if I try and use the module to modify an instance from multi_zone: yes to multi_zone: no, it says \\\"changed\\\" but no action is triggered. Again, apply_immediately is set to 'yes'.\", \n    \"title\": \"RDS module fails to modify instance multi_az from 'yes' to 'no'\"\n  }, \n  \"20379\": {\n    \"ansible_version\": \"ansible 2.2.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nfilter - json_query\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\npip install, stock otherwise\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nDebian Jessie\\r\\n\\r\\n##### SUMMARY\\r\\nAnsible 2.2.1 started throwing the below error when trying to use the json_query filter. The task below worked in 2.2.0 and started failing with 2.2.1\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nThe +app_var_git_branch+ is a set_fact in the playbook.\\r\\n\\r\\n```yaml\\r\\n  - name: \\\"Delete Application Version for current branch if more than 3 exist.\\\"\\r\\n    elasticbeanstalk_version:\\r\\n      region: \\\"{{ region }}\\\"\\r\\n      app_name: \\\"{{ application_name }}\\\"\\r\\n      version_label: \\\"{{ item }}\\\"\\r\\n      delete_source: \\\"{{ application_version_delete_source }}\\\"\\r\\n      state: \\\"absent\\\"\\r\\n    when: elasticbeanstalk_versions.ApplicationVersions is defined\\r\\n    with_items: >-\\r\\n      {{ elasticbeanstalk_versions | json_query('ApplicationVersions[].VersionLabel[] | [?starts_with(@, '+app_var_git_branch+')] | [2:]') }}\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n```\\r\\nTASK [Delete Application Version for current branch if more than 3 exist.] *****\\r\\nchanged: [localhost] => (item=multi-deployment-400-743)\\r\\n```\\r\\n\\r\\nShould either delete some application versions if it finds more than 3 of a given item that starts with app_var_git_branch, skip the task altogether or the task should receive no item and continue after 1 loop.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nTask fails. This is running in a CI/CD environment in a python:2 docker container (which is based on debian jessie), I tried explicitly installing 2.2.0 instead of 2.2.1 and 2.2.0 still worked. I also checked on the dependencies that were installed and it appeared that JMESPath is using the same versions with both versions of Ansible. It also appears that it only fails when the JMESPath has something to evaluate, if the app_var_git_branch doesn't have anything to compare it completes without the error.\\r\\n```\\r\\nTASK [Delete Application Version for current branch if more than 3 exist.] *****\\r\\ntask path: /builds/cloud-platform/gitlab_ci_elasticbeanstalk/.ci/deploy.yml:101\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/ansible/executor/task_executor.py\\\", line 90, in run\\r\\n    items = self._get_loop_items()\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/ansible/executor/task_executor.py\\\", line 193, in _get_loop_items\\r\\n    loop_terms = listify_lookup_plugin_terms(terms=self._task.loop_args, templar=templar, loader=self._loader, fail_on_undefined=True, convert_bare=False)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/ansible/utils/listify.py\\\", line 34, in listify_lookup_plugin_terms\\r\\n    terms = templar.template(terms.strip(), convert_bare=convert_bare, fail_on_undefined=fail_on_undefined)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/ansible/template/__init__.py\\\", line 383, in template\\r\\n    disable_lookups=disable_lookups,\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/ansible/template/__init__.py\\\", line 583, in do_template\\r\\n    res = j2_concat(rf)\\r\\n  File \\\"<template>\\\", line 10, in root\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/ansible/plugins/filter/json_query.py\\\", line 40, in json_query\\r\\n    return jmespath.search(expr, data)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/jmespath/__init__.py\\\", line 12, in search\\r\\n    return parser.Parser().parse(expression).search(data, options=options)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/jmespath/parser.py\\\", line 524, in search\\r\\n    result = interpreter.visit(self.parsed, value)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/jmespath/visitor.py\\\", line 66, in visit\\r\\n    return method(node, *args, **kwargs)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/jmespath/visitor.py\\\", line 227, in visit_pipe\\r\\n    result = self.visit(node, result)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/jmespath/visitor.py\\\", line 66, in visit\\r\\n    return method(node, *args, **kwargs)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/jmespath/visitor.py\\\", line 227, in visit_pipe\\r\\n    result = self.visit(node, result)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/jmespath/visitor.py\\\", line 66, in visit\\r\\n    return method(node, *args, **kwargs)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/jmespath/visitor.py\\\", line 138, in visit_filter_projection\\r\\n    if self._is_true(self.visit(comparator_node, element)):\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/jmespath/visitor.py\\\", line 66, in visit\\r\\n    return method(node, *args, **kwargs)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/jmespath/visitor.py\\\", line 129, in visit_function_expression\\r\\n    return self._functions.call_function(node['value'], resolved_args)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/jmespath/functions.py\\\", line 89, in call_function\\r\\n    self._validate_arguments(resolved_args, signature, function_name)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/jmespath/functions.py\\\", line 100, in _validate_arguments\\r\\n    return self._type_check(args, signature, function_name)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/jmespath/functions.py\\\", line 107, in _type_check\\r\\n    function_name)\\r\\n  File \\\"/usr/local/lib/python2.7/site-packages/jmespath/functions.py\\\", line 122, in _type_check_single\\r\\n    self._convert_to_jmespath_type(actual_typename), types)\\r\\nJMESPathTypeError: In function starts_with(), invalid type for value: new-modules-561, expected one of: ['string'], received: \\\"unknown\\\"\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"failed\\\": true, \\r\\n    \\\"msg\\\": \\\"Unexpected failure during module execution.\\\", \\r\\n    \\\"stdout\\\": \\\"\\\"\\r\\n}\\r\\n```\\r\\nAnsible 2.2.1\\r\\n```\\r\\nSuccessfully installed MarkupSafe-0.23 PyYAML-3.12 ansible-2.2.1.0 boto-2.45.0 boto3-1.4.4 botocore-1.5.1 cffi-1.9.1 cryptography-1.7.1 docutils-0.13.1 enum34-1.1.6 futures-3.0.5 idna-2.2 ipaddress-1.0.18 jinja2-2.8.1 jmespath-0.9.0 paramiko-2.1.1 pyasn1-0.1.9 pycparser-2.17 pycrypto-2.6.1 python-dateutil-2.6.0 s3transfer-0.1.10 six-1.10.0\\r\\n```\\r\\nAnsible 2.2.0\\r\\n```\\r\\nSuccessfully installed MarkupSafe-0.23 PyYAML-3.12 ansible-2.2.0.0 boto-2.45.0 boto3-1.4.4 botocore-1.5.1 cffi-1.9.1 cryptography-1.7.1 docutils-0.13.1 enum34-1.1.6 futures-3.0.5 idna-2.2 ipaddress-1.0.18 jinja2-2.9.4 jmespath-0.9.0 paramiko-2.1.1 pyasn1-0.1.9 pycparser-2.17 pycrypto-2.6.1 python-dateutil-2.6.0 s3transfer-0.1.10 six-1.10.0\\r\\n```\\r\\n\\r\\nCould this be related to #20098?\", \n    \"component_name\": \"filter - json_query\", \n    \"component_raw\": \"filter - json_query\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20379\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"c:plugins/filter\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Ansible 2.2.1 started throwing the below error when trying to use the json_query filter. The task below worked in 2.2.0 and started failing with 2.2.1\", \n    \"title\": \"json_query filter failing with type error\"\n  }, \n  \"20381\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible core\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n```\\r\\n[foo@ansible ansible]$ cat hosts\\r\\n[test]\\r\\nclient.example.com\\r\\n[foo@ansible ansible]$ cat group_vars/all \\r\\n---\\r\\nansible_user: 'dom\\\\user'\\r\\n[foo@ansible ansible]$ pwd\\r\\n/home/foo/ansible\\r\\n[foo@ansible ansible]$ ANSIBLE_KEEP_REMOTE_FILES=1 ansible -vvvv -i hosts test -m command -a \\\"/usr/bin/id -g {{ ansible_ssh_user }}\\\"\\r\\n\\r\\n```\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n```\\r\\n[foo@ansible ansible]$ uname -a\\r\\nLinux ansible.example.com 3.10.0-514.2.2.el7.x86_64 #1 SMP Wed Nov 16 13:15:13 EST 2016 x86_64 x86_64 x86_64 GNU/Linux\\r\\n\\r\\n```\\r\\nRed Hat Enterprise Linux 7.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\nWhen running a playbook with `ansible_user` set to something like `dom\\\\user` the use of `{{ansible_user}}` in any task is failing.\\r\\n\\r\\nIf `ansible_user` is defined like the following example `ansible_user: 'dom\\\\user'` the `ssh` connectivity is working but running `id -g {{ansible_user}}` will fail due to the escaping of the `\\\\`\\r\\n\\r\\n```\\r\\n[foo@ansible ansible]$ ANSIBLE_KEEP_REMOTE_FILES=1 ansible -vvvv -i hosts test -m command -a \\\"/usr/bin/id -g {{ ansible_ssh_user }}\\\"\\r\\nUsing /home/foo/ansible/ansible.cfg as config file\\r\\nLoading callback plugin minimal of type stdout, v2.0 from /usr/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/core/commands/command.py\\r\\n<client.example.com> ESTABLISH SSH CONNECTION FOR USER: dom\\\\user\\r\\n<client.example.com> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/home/foo/ansible/.ssh/ansible_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User=dom\\\\user' -o ConnectTimeout=10 -o ControlPath=/home/foo/.ansible/cp/ansible-ssh-%h-%p-%r client.example.com '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484727796.64-66600825524502 `\\\" && echo ansible-tmp-1484727796.64-66600825524502=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484727796.64-66600825524502 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<client.example.com> PUT /tmp/tmp4Eo9IT TO /home/domuser/.ansible/tmp/ansible-tmp-1484727796.64-66600825524502/command.py\\r\\n<client.example.com> SSH: EXEC sftp -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/home/foo/ansible/.ssh/ansible_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User=dom\\\\user' -o ConnectTimeout=10 -o ControlPath=/home/foo/.ansible/cp/ansible-ssh-%h-%p-%r '[client.example.com]'\\r\\n<client.example.com> ESTABLISH SSH CONNECTION FOR USER: dom\\\\user\\r\\n<client.example.com> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/home/foo/ansible/.ssh/ansible_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User=dom\\\\user' -o ConnectTimeout=10 -o ControlPath=/home/foo/.ansible/cp/ansible-ssh-%h-%p-%r client.example.com '/bin/sh -c '\\\"'\\\"'chmod u+x /home/domuser/.ansible/tmp/ansible-tmp-1484727796.64-66600825524502/ /home/domuser/.ansible/tmp/ansible-tmp-1484727796.64-66600825524502/command.py && sleep 0'\\\"'\\\"''\\r\\n<client.example.com> ESTABLISH SSH CONNECTION FOR USER: dom\\\\user\\r\\n<client.example.com> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/home/foo/ansible/.ssh/ansible_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User=dom\\\\user' -o ConnectTimeout=10 -o ControlPath=/home/foo/.ansible/cp/ansible-ssh-%h-%p-%r -tt client.example.com '/bin/sh -c '\\\"'\\\"'/usr/bin/python /home/domuser/.ansible/tmp/ansible-tmp-1484727796.64-66600825524502/command.py && sleep 0'\\\"'\\\"''\\r\\nclient.example.com | FAILED | rc=1 >>\\r\\n/usr/bin/id: domuser: no such user\\r\\n```\\r\\n\\r\\nOn the client we have:\\r\\n\\r\\n```\\r\\n[root@client ansible-tmp-1484727796.64-66600825524502]# grep -i dom command.py \\r\\n    ANSIBALLZ_PARAMS = '{\\\"ANSIBLE_MODULE_ARGS\\\": {\\\"_ansible_version\\\": \\\"2.2.0.0\\\", \\\"_ansible_selinux_special_fs\\\": [\\\"fuse\\\", \\\"nfs\\\", \\\"vboxsf\\\", \\\"ramfs\\\"], \\\"_ansible_no_log\\\": false, \\\"_ansible_module_name\\\": \\\"command\\\", \\\"_raw_params\\\": \\\"/usr/bin/id -g dom\\\\\\\\\\\\\\\\user\\\", \\\"_ansible_verbosity\\\": 4, \\\"_ansible_syslog_facility\\\": \\\"LOG_USER\\\", \\\"_ansible_diff\\\": false, \\\"_ansible_debug\\\": false, \\\"_ansible_check_mode\\\": false}}'\\r\\n\\r\\n```\\r\\n\\r\\nNote the `/usr/bin/id -g dom\\\\\\\\\\\\\\\\user`\\r\\n\\r\\nNo matter how I set the variable it either fails to login via `ssh` or then when running `id -g`. The only way it's working is, when the variable in the task is escaped:\\r\\n\\r\\n```\\r\\n[foo@ansible ansible]$ ANSIBLE_KEEP_REMOTE_FILES=1 ansible -vvvv -i hosts test -m command -a \\\"/usr/bin/id -g \\\\\\\"{{ ansible_ssh_user }}\\\\\\\"\\\"\\r\\nUsing /home/foo/ansible/ansible.cfg as config file\\r\\nLoading callback plugin minimal of type stdout, v2.0 from /usr/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/core/commands/command.py\\r\\n<client.example.com> ESTABLISH SSH CONNECTION FOR USER: dom\\\\user\\r\\n<client.example.com> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/home/foo/ansible/.ssh/ansible_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User=dom\\\\user' -o ConnectTimeout=10 -o ControlPath=/home/foo/.ansible/cp/ansible-ssh-%h-%p-%r client.example.com '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484728799.45-96838385015641 `\\\" && echo ansible-tmp-1484728799.45-96838385015641=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484728799.45-96838385015641 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<client.example.com> PUT /tmp/tmpTG3ulC TO /home/domuser/.ansible/tmp/ansible-tmp-1484728799.45-96838385015641/command.py\\r\\n<client.example.com> SSH: EXEC sftp -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/home/foo/ansible/.ssh/ansible_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User=dom\\\\user' -o ConnectTimeout=10 -o ControlPath=/home/foo/.ansible/cp/ansible-ssh-%h-%p-%r '[client.example.com]'\\r\\n<client.example.com> ESTABLISH SSH CONNECTION FOR USER: dom\\\\user\\r\\n<client.example.com> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/home/foo/ansible/.ssh/ansible_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User=dom\\\\user' -o ConnectTimeout=10 -o ControlPath=/home/foo/.ansible/cp/ansible-ssh-%h-%p-%r client.example.com '/bin/sh -c '\\\"'\\\"'chmod u+x /home/domuser/.ansible/tmp/ansible-tmp-1484728799.45-96838385015641/ /home/domuser/.ansible/tmp/ansible-tmp-1484728799.45-96838385015641/command.py && sleep 0'\\\"'\\\"''\\r\\n<client.example.com> ESTABLISH SSH CONNECTION FOR USER: dom\\\\user\\r\\n<client.example.com> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/home/foo/ansible/.ssh/ansible_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User=dom\\\\user' -o ConnectTimeout=10 -o ControlPath=/home/foo/.ansible/cp/ansible-ssh-%h-%p-%r -tt client.example.com '/bin/sh -c '\\\"'\\\"'/usr/bin/python /home/domuser/.ansible/tmp/ansible-tmp-1484728799.45-96838385015641/command.py && sleep 0'\\\"'\\\"''\\r\\nclient.example.com | SUCCESS | rc=0 >>\\r\\n1000\\r\\n```\\r\\n\\r\\nThe `command.py` in this case looks like the below example:\\r\\n\\r\\n```\\r\\n[root@client ansible-tmp-1484728799.45-96838385015641]# grep -i dom command.py \\r\\n    ANSIBALLZ_PARAMS = '{\\\"ANSIBLE_MODULE_ARGS\\\": {\\\"_ansible_version\\\": \\\"2.2.0.0\\\", \\\"_ansible_selinux_special_fs\\\": [\\\"fuse\\\", \\\"nfs\\\", \\\"vboxsf\\\", \\\"ramfs\\\"], \\\"_ansible_no_log\\\": false, \\\"_ansible_module_name\\\": \\\"command\\\", \\\"_raw_params\\\": \\\"/usr/bin/id -g \\\\\\\\\\\"dom\\\\\\\\\\\\\\\\user\\\\\\\\\\\"\\\", \\\"_ansible_verbosity\\\": 4, \\\"_ansible_syslog_facility\\\": \\\"LOG_USER\\\", \\\"_ansible_diff\\\": false, \\\"_ansible_debug\\\": false, \\\"_ansible_check_mode\\\": false}}'\\r\\n```\\r\\n\\r\\nCertainly, fixing this in the playbook is one option. But this option is not always possible, if somebody gets a playbook provided by a vendor or similar. It would therefore be nice, if `ansible_user` and be set in format `dom\\\\user` and then work via `ssh` and also when used in a `task` as variable.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\nSetup account `dom\\\\user` on client.example.com or even better connect the system to Windows or similar that does require to login via `dom\\\\user`. We are also aware that `@` is a valid delimiter but in certain cases it can not be used/configured.\\r\\n\\r\\nCreate `hosts` and `group_vars/all` as below and run the below command:\\r\\n\\r\\n```\\r\\n[foo@ansible ansible]$ cat hosts\\r\\n[test]\\r\\nclient.example.com\\r\\n[foo@ansible ansible]$ cat group_vars/all \\r\\n---\\r\\nansible_user: 'dom\\\\user'\\r\\n[foo@ansible ansible]$ pwd\\r\\n/home/foo/ansible\\r\\n[foo@ansible ansible]$ ANSIBLE_KEEP_REMOTE_FILES=1 ansible -vvvv -i hosts test -m command -a \\\"/usr/bin/id -g {{ ansible_ssh_user }}\\\"\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n`/usr/bin/id -g {{ ansible_ssh_user }}` should return the UID of the `ansible_user`\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n[foo@ansible ansible]$ ANSIBLE_KEEP_REMOTE_FILES=1 ansible -vvvv -i hosts test -m command -a \\\"/usr/bin/id -g {{ ansible_ssh_user }}\\\"\\r\\nUsing /home/foo/ansible/ansible.cfg as config file\\r\\nLoading callback plugin minimal of type stdout, v2.0 from /usr/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/core/commands/command.py\\r\\n<client.example.com> ESTABLISH SSH CONNECTION FOR USER: dom\\\\user\\r\\n<client.example.com> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/home/foo/ansible/.ssh/ansible_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User=dom\\\\user' -o ConnectTimeout=10 -o ControlPath=/home/foo/.ansible/cp/ansible-ssh-%h-%p-%r client.example.com '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484727796.64-66600825524502 `\\\" && echo ansible-tmp-1484727796.64-66600825524502=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484727796.64-66600825524502 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<client.example.com> PUT /tmp/tmp4Eo9IT TO /home/domuser/.ansible/tmp/ansible-tmp-1484727796.64-66600825524502/command.py\\r\\n<client.example.com> SSH: EXEC sftp -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/home/foo/ansible/.ssh/ansible_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User=dom\\\\user' -o ConnectTimeout=10 -o ControlPath=/home/foo/.ansible/cp/ansible-ssh-%h-%p-%r '[client.example.com]'\\r\\n<client.example.com> ESTABLISH SSH CONNECTION FOR USER: dom\\\\user\\r\\n<client.example.com> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/home/foo/ansible/.ssh/ansible_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User=dom\\\\user' -o ConnectTimeout=10 -o ControlPath=/home/foo/.ansible/cp/ansible-ssh-%h-%p-%r client.example.com '/bin/sh -c '\\\"'\\\"'chmod u+x /home/domuser/.ansible/tmp/ansible-tmp-1484727796.64-66600825524502/ /home/domuser/.ansible/tmp/ansible-tmp-1484727796.64-66600825524502/command.py && sleep 0'\\\"'\\\"''\\r\\n<client.example.com> ESTABLISH SSH CONNECTION FOR USER: dom\\\\user\\r\\n<client.example.com> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/home/foo/ansible/.ssh/ansible_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User=dom\\\\user' -o ConnectTimeout=10 -o ControlPath=/home/foo/.ansible/cp/ansible-ssh-%h-%p-%r -tt client.example.com '/bin/sh -c '\\\"'\\\"'/usr/bin/python /home/domuser/.ansible/tmp/ansible-tmp-1484727796.64-66600825524502/command.py && sleep 0'\\\"'\\\"''\\r\\nclient.example.com | FAILED | rc=1 >>\\r\\n/usr/bin/id: domuser: no such user\\r\\n```\", \n    \"component_name\": \"ansible core\", \n    \"component_raw\": \"ansible core\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20381\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"c:plugins/connection/ssh\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When running a playbook with `ansible_user` set to something like `dom\\\\user` the use of `{{ansible_user}}` in any task is failing.\\n\\n\\n\\nIf `ansible_user` is defined like the following example `ansible_user: 'dom\\\\user'` the `ssh` connectivity is working but running `id -g {{ansible_user}}` will fail due to the escaping of the `\\\\`\\n\\n\\n\\n```\\n\\n[foo@ansible ansible]$ ANSIBLE_KEEP_REMOTE_FILES=1 ansible -vvvv -i hosts test -m command -a \\\"/usr/bin/id -g {{ ansible_ssh_user }}\\\"\\n\\nUsing /home/foo/ansible/ansible.cfg as config file\\n\\nLoading callback plugin minimal of type stdout, v2.0 from /usr/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc\\n\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/core/commands/command.py\\n\\n<client.example.com> ESTABLISH SSH CONNECTION FOR USER: dom\\\\user\\n\\n<client.example.com> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/home/foo/ansible/.ssh/ansible_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User=dom\\\\user' -o ConnectTimeout=10 -o ControlPath=/home/foo/.ansible/cp/ansible-ssh-%h-%p-%r client.example.com '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484727796.64-66600825524502 `\\\" && echo ansible-tmp-1484727796.64-66600825524502=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484727796.64-66600825524502 `\\\" ) && sleep 0'\\\"'\\\"''\\n\\n<client.example.com> PUT /tmp/tmp4Eo9IT TO /home/domuser/.ansible/tmp/ansible-tmp-1484727796.64-66600825524502/command.py\\n\\n<client.example.com> SSH: EXEC sftp -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/home/foo/ansible/.ssh/ansible_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User=dom\\\\user' -o ConnectTimeout=10 -o ControlPath=/home/foo/.ansible/cp/ansible-ssh-%h-%p-%r '[client.example.com]'\\n\\n<client.example.com> ESTABLISH SSH CONNECTION FOR USER: dom\\\\user\\n\\n<client.example.com> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/home/foo/ansible/.ssh/ansible_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User=dom\\\\user' -o ConnectTimeout=10 -o ControlPath=/home/foo/.ansible/cp/ansible-ssh-%h-%p-%r client.example.com '/bin/sh -c '\\\"'\\\"'chmod u+x /home/domuser/.ansible/tmp/ansible-tmp-1484727796.64-66600825524502/ /home/domuser/.ansible/tmp/ansible-tmp-1484727796.64-66600825524502/command.py && sleep 0'\\\"'\\\"''\\n\\n<client.example.com> ESTABLISH SSH CONNECTION FOR USER: dom\\\\user\\n\\n<client.example.com> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/home/foo/ansible/.ssh/ansible_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User=dom\\\\user' -o ConnectTimeout=10 -o ControlPath=/home/foo/.ansible/cp/ansible-ssh-%h-%p-%r -tt client.example.com '/bin/sh -c '\\\"'\\\"'/usr/bin/python /home/domuser/.ansible/tmp/ansible-tmp-1484727796.64-66600825524502/command.py && sleep 0'\\\"'\\\"''\\n\\nclient.example.com | FAILED | rc=1 >>\\n\\n/usr/bin/id: domuser: no such user\\n\\n```\\n\\n\\n\\nOn the client we have:\\n\\n\\n\\n```\\n\\n[root@client ansible-tmp-1484727796.64-66600825524502]# grep -i dom command.py \\n\\n    ANSIBALLZ_PARAMS = '{\\\"ANSIBLE_MODULE_ARGS\\\": {\\\"_ansible_version\\\": \\\"2.2.0.0\\\", \\\"_ansible_selinux_special_fs\\\": [\\\"fuse\\\", \\\"nfs\\\", \\\"vboxsf\\\", \\\"ramfs\\\"], \\\"_ansible_no_log\\\": false, \\\"_ansible_module_name\\\": \\\"command\\\", \\\"_raw_params\\\": \\\"/usr/bin/id -g dom\\\\\\\\\\\\\\\\user\\\", \\\"_ansible_verbosity\\\": 4, \\\"_ansible_syslog_facility\\\": \\\"LOG_USER\\\", \\\"_ansible_diff\\\": false, \\\"_ansible_debug\\\": false, \\\"_ansible_check_mode\\\": false}}'\\n\\n\\n\\n```\\n\\n\\n\\nNote the `/usr/bin/id -g dom\\\\\\\\\\\\\\\\user`\\n\\n\\n\\nNo matter how I set the variable it either fails to login via `ssh` or then when running `id -g`. The only way it's working is, when the variable in the task is escaped:\\n\\n\\n\\n```\\n\\n[foo@ansible ansible]$ ANSIBLE_KEEP_REMOTE_FILES=1 ansible -vvvv -i hosts test -m command -a \\\"/usr/bin/id -g \\\\\\\"{{ ansible_ssh_user }}\\\\\\\"\\\"\\n\\nUsing /home/foo/ansible/ansible.cfg as config file\\n\\nLoading callback plugin minimal of type stdout, v2.0 from /usr/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc\\n\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/core/commands/command.py\\n\\n<client.example.com> ESTABLISH SSH CONNECTION FOR USER: dom\\\\user\\n\\n<client.example.com> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/home/foo/ansible/.ssh/ansible_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User=dom\\\\user' -o ConnectTimeout=10 -o ControlPath=/home/foo/.ansible/cp/ansible-ssh-%h-%p-%r client.example.com '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484728799.45-96838385015641 `\\\" && echo ansible-tmp-1484728799.45-96838385015641=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484728799.45-96838385015641 `\\\" ) && sleep 0'\\\"'\\\"''\\n\\n<client.example.com> PUT /tmp/tmpTG3ulC TO /home/domuser/.ansible/tmp/ansible-tmp-1484728799.45-96838385015641/command.py\\n\\n<client.example.com> SSH: EXEC sftp -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/home/foo/ansible/.ssh/ansible_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User=dom\\\\user' -o ConnectTimeout=10 -o ControlPath=/home/foo/.ansible/cp/ansible-ssh-%h-%p-%r '[client.example.com]'\\n\\n<client.example.com> ESTABLISH SSH CONNECTION FOR USER: dom\\\\user\\n\\n<client.example.com> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/home/foo/ansible/.ssh/ansible_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User=dom\\\\user' -o ConnectTimeout=10 -o ControlPath=/home/foo/.ansible/cp/ansible-ssh-%h-%p-%r client.example.com '/bin/sh -c '\\\"'\\\"'chmod u+x /home/domuser/.ansible/tmp/ansible-tmp-1484728799.45-96838385015641/ /home/domuser/.ansible/tmp/ansible-tmp-1484728799.45-96838385015641/command.py && sleep 0'\\\"'\\\"''\\n\\n<client.example.com> ESTABLISH SSH CONNECTION FOR USER: dom\\\\user\\n\\n<client.example.com> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile=\\\"/home/foo/ansible/.ssh/ansible_rsa\\\"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User=dom\\\\user' -o ConnectTimeout=10 -o ControlPath=/home/foo/.ansible/cp/ansible-ssh-%h-%p-%r -tt client.example.com '/bin/sh -c '\\\"'\\\"'/usr/bin/python /home/domuser/.ansible/tmp/ansible-tmp-1484728799.45-96838385015641/command.py && sleep 0'\\\"'\\\"''\\n\\nclient.example.com | SUCCESS | rc=0 >>\\n\\n1000\\n\\n```\\n\\n\\n\\nThe `command.py` in this case looks like the below example:\\n\\n\\n\\n```\\n\\n[root@client ansible-tmp-1484728799.45-96838385015641]# grep -i dom command.py \\n\\n    ANSIBALLZ_PARAMS = '{\\\"ANSIBLE_MODULE_ARGS\\\": {\\\"_ansible_version\\\": \\\"2.2.0.0\\\", \\\"_ansible_selinux_special_fs\\\": [\\\"fuse\\\", \\\"nfs\\\", \\\"vboxsf\\\", \\\"ramfs\\\"], \\\"_ansible_no_log\\\": false, \\\"_ansible_module_name\\\": \\\"command\\\", \\\"_raw_params\\\": \\\"/usr/bin/id -g \\\\\\\\\\\"dom\\\\\\\\\\\\\\\\user\\\\\\\\\\\"\\\", \\\"_ansible_verbosity\\\": 4, \\\"_ansible_syslog_facility\\\": \\\"LOG_USER\\\", \\\"_ansible_diff\\\": false, \\\"_ansible_debug\\\": false, \\\"_ansible_check_mode\\\": false}}'\\n\\n```\\n\\n\\n\\nCertainly, fixing this in the playbook is one option. But this option is not always possible, if somebody gets a playbook provided by a vendor or similar. It would therefore be nice, if `ansible_user` and be set in format `dom\\\\user` and then work via `ssh` and also when used in a `task` as variable.\", \n    \"title\": \"ansible_user with backslash does work when used in task\"\n  }, \n  \"20383\": {\n    \"ansible_version\": \"ansible 2.2.1.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nDynamic inventory (ec2.py)\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.1.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nUsing ec2.py to gather dynamic inventory from Ansible\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nPreviously variables were resolved in such a matter:\\r\\n\\r\\n```\\r\\ngroup_vars/tag_group_somegroup -> myvar: default\\r\\ngroup_vars/tag_Name_someserver -> myvar: override\\r\\n```\\r\\n\\r\\nResulting in: `myvar: override`\\r\\n\\r\\nHowever this behaviour has somehow changed in 2.2.1.\\r\\nIt now results in  `myvar: default`\\r\\n\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\ntest.yml:\\r\\n\\r\\n```\\r\\n---\\r\\n- hosts: tag_type_ansible\\r\\n  tasks:\\r\\n    - debug:\\r\\n        var: myvar\\r\\n```\\r\\n\\r\\ngroup_vars/tag_group_ansible:\\r\\n\\r\\n```\\r\\nmyvar: incorrect\\r\\n```\\r\\n\\r\\ngroup_vars/tag_Name_ansible(rest of fqdn here with underscores):\\r\\n```\\r\\nmyvar: correct\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nExpected:\\r\\n```\\r\\nTASK [debug] *******************************************************************\\r\\nok: [*.*.*.*] => {\\r\\n    \\\"myvar\\\": \\\"correct\\\"\\r\\n}\\r\\n```\\r\\n\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nhyperized@:~/testcase$ ansible-playbook -i inventory/ec2.py test.yml\\r\\n\\r\\nPLAY [tag_type_ansible] ********************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [*.*.*.*]\\r\\n\\r\\nTASK [debug] *******************************************************************\\r\\nok: [*.*.*.*] => {\\r\\n    \\\"myvar\\\": \\\"incorrect\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\n*.*.*.*                : ok=2    changed=0    unreachable=0    failed=0\\r\\n```\", \n    \"component_name\": \"dynamic inventory (ec2.py)\", \n    \"component_raw\": \"Dynamic inventory (ec2.py)\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20383\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Previously variables were resolved in such a matter:\\n\\n\\n\\n```\\n\\ngroup_vars/tag_group_somegroup -> myvar: default\\n\\ngroup_vars/tag_Name_someserver -> myvar: override\\n\\n```\\n\\n\\n\\nResulting in: `myvar: override`\\n\\n\\n\\nHowever this behaviour has somehow changed in 2.2.1.\\n\\nIt now results in  `myvar: default`\", \n    \"title\": \"Dynamic inventory host precedence changed\"\n  }, \n  \"20387\": {\n    \"ansible_version\": \"ansible 2.0.0.2\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible Loops module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nansible 2.0.0.2\\r\\n\\r\\n##### CONFIGURATION\\r\\nNo changes were made in ansible.cfg\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nUbuntu 5.4.0-6ubuntu1~16.04.4\\r\\n\\r\\n##### SUMMARY\\r\\nWhen I try to use dict object inside include task - with_dict tells \\\"ERROR! with_dict expects a dict\\\"\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nIn my task/main.yml I'm including another file for specific task:\\r\\n\\r\\n```\\r\\n- name: Calling env.yml for different users\\r\\n  include: env.yml user={{item}}\\r\\n  with_items: \\\"{{ users }}\\\"\\r\\n```\\r\\nIn env.yml code is:\\r\\n```\\r\\n- name: Add env\\r\\n  lineinfile: dest=\\\"/home/{{ user }}/{{ docker_compose_base_dir }}/dev.env\\\" line=\\\"{{ item.key }}{{ \\\":\\\" }} {{ item.value }}\\\"\\r\\n  with_dict: \\r\\n    - \\\"{{ nginx }}\\\"\\r\\n  become: yes\\r\\n  become_user: \\\"{{ user }}\\\"\\r\\n```\\r\\ndictionary is:\\r\\n```\\r\\nnginx:\\r\\n  FE_PORT: 11115\\r\\n  FE_SOCKET: 11116\\r\\n  BE_PORT: 1337\\r\\n  BE_NGINX_PORT: 11117\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nAdd lines:\\r\\n  FE_PORT: 11115\\r\\n  FE_SOCKET: 11116\\r\\n  BE_PORT: 1337\\r\\n  BE_NGINX_PORT: 11117\\r\\nto dev.env file\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nwhen I try to use with_items it says:\\r\\n\\r\\n> TASK [users : Add env] ***********************************************************\\r\\n> fatal: [localhost]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"ERROR! 'dict object' has no attribute 'key'\\\"\\r\\n\\r\\nchange it to with_dict:\\r\\n\\r\\n> TASK [users : Add env] ********************\\r\\n> fatal: [localhost]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"ERROR! with_dict expects a dict\\\"}\\r\\n\\r\\nAnyway code:\\r\\n```\\r\\n- name: debug\\r\\n  debug: msg=\\\"{{ nginx }}\\\"\\r\\n  tags: [user,devfiles]\\r\\n```\\r\\nshows:\\r\\n\\r\\n> TASK [users : debug] ***********************************************************\\r\\n> ok: [localhost] => {\\r\\n>     \\\"msg\\\": {\\r\\n>         \\\"BE_NGINX_PORT\\\": 11117, \\r\\n>         \\\"BE_PORT\\\": 1337, \\r\\n>         \\\"FE_PORT\\\": 11115, \\r\\n>         \\\"FE_SOCKET\\\": 11116\\r\\n>     }\\r\\n> }\\r\\n\", \n    \"component_name\": \"ansible loops\", \n    \"component_raw\": \"ansible Loops module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20387\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When I try to use dict object inside include task - with_dict tells \\\"ERROR! with_dict expects a dict\\\"\", \n    \"title\": \"with_dict cannot recognize dict object\"\n  }, \n  \"20391\": {\n    \"ansible_version\": \"ansible 2.3.0 (aws-ios 64432c8f7c) last updated 2017/01/17 111357 (GMT +100)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nios_command\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (aws-ios 64432c8f7c) last updated 2017/01/17 11:13:57 (GMT +100)\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nEven on tasks that don't specify any `provider:` arguments we get the following warnign\\r\\n`[WARNING]: network provider arguments are no longer supported.  Please use connection: network_cli for the task`\\r\\n\\r\\nEven on simple tasks like:\\r\\n```yaml\\r\\n- name: Ensure we have loopback 888 for testing\\r\\n  ios_config:\\r\\n    src: config.j2\\r\\n```\\r\\n\\r\\nAdding in some debug shows that this is being triggered because `timeout` is set (via a default) and the following code is detecting that\\r\\n\\r\\n```python\\r\\n\\r\\n\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n      for key in NET_TRANSPORT_ARGS:\\r\\n          if module.params[key]:\\r\\n              warnings.append(\\r\\n                  'network provider arguments are no longer supported.  Please '\\r\\n                  'use connection: network_cli for the task'\\r\\n              )   \\r\\n+             warnings.append(key) # Added in so I can see which key is failing\\r\\n              break\\r\\n\\r\\n```\\r\\n`NET_TRANSPORT_ARGS` is defined in `module_utils/network.py`\\r\\n`transport:` is the only option with a default (that isn't `False`)\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```yaml\\r\\n- name: Ensure we have loopback 888 for testing\\r\\n  ios_config:\\r\\n    src: config.j2\\r\\n```\\r\\n\", \n    \"component_name\": \"ios_command\", \n    \"component_raw\": \"ios_command\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20391\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/ios/ios_command.py\", \n    \"summary\": \"Even on tasks that don't specify any `provider:` arguments we get the following warnign\\n\\n`[WARNING]: network provider arguments are no longer supported.  Please use connection: network_cli for the task`\\n\\n\\n\\nEven on simple tasks like:\\n\\n```yaml\\n\\n- name: Ensure we have loopback 888 for testing\\n\\n  ios_config:\\n\\n    src: config.j2\\n\\n```\\n\\n\\n\\nAdding in some debug shows that this is being triggered because `timeout` is set (via a default) and the following code is detecting that\\n\\n\\n\\n```python\", \n    \"title\": \"[WARNING]: network provider arguments are no longer supported.  Please use connection: network_cli for the task\"\n  }, \n  \"20392\": {\n    \"ansible_version\": \"ansible 2.2.1.0\", \n    \"body\": \"\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwhen conditional\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.1.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nWhen testing for variables we have a lot of tasks that simply check for \\r\\n```\\r\\nwhen: variable\\r\\n```\\r\\nwhere variable is a string. \\r\\n\\r\\nSee for example: https://github.com/ANXS/postgresql/blob/master/tasks/install.yml#L21\\r\\n\\r\\nThis role worked for us until now but after upgrading to `2.2.1.0` we get errors (see below)\\r\\nIt looks like the conditional does not use *truthy* checks for strings anymore?\\r\\nAm I completely wrong here? Or did this behaviour change?\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```yaml\\r\\n---\\r\\n- hosts: all\\r\\n  remote_user: \\\"{{ deploy_user }}\\\"\\r\\n\\r\\n  vars:\\r\\n    test: \\\"deb http://apt.postgresql\\\"\\r\\n\\r\\n  tasks:\\r\\n    - debug: var=test\\r\\n      when: test\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n```\\r\\nok: [testserver1] => {\\r\\n    \\\"test\\\": \\\"deb http://apt.postgresql\\\"\\r\\n}\\r\\n _\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nfatal: [testserver1]: FAILED! => {\\r\\n    \\\"failed\\\": true, \\r\\n    \\\"msg\\\": \\\"The conditional check 'test' failed. The error was: expected token 'end of statement block', got 'http'\\\\n  line 1\\\\n\\\\nThe error appears to have been in '/home/roman/development/deployment/ansible/test.yml': line 10, column 7, but may\\\\nbe elsewhere in the file depending on the exact syntax problem.\\\\n\\\\nThe offending line appears to be:\\\\n\\\\n  tasks:\\\\n    - debug: var=test\\\\n      ^ here\\\\n\\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"when conditional\", \n    \"component_raw\": \"when conditional\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20392\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"P2\", \n      \"affects_2.2\", \n      \"bug\", \n      \"c:playbook/conditional\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When testing for variables we have a lot of tasks that simply check for \\n\\n```\\n\\nwhen: variable\\n\\n```\\n\\nwhere variable is a string. \\n\\n\\n\\nSee for example: https://github.com/ANXS/postgresql/blob/master/tasks/install.yml#L21\\n\\n\\n\\nThis role worked for us until now but after upgrading to `2.2.1.0` we get errors (see below)\\n\\nIt looks like the conditional does not use *truthy* checks for strings anymore?\\n\\nAm I completely wrong here? Or did this behaviour change?\", \n    \"title\": \"when conditional does not allow for \\\"truthy\\\" checks with strings\"\n  }, \n  \"20395\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 7f17718b82) last updated 2017/01/05 135442 (GMT -400)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nRDS\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel 7f17718b82) last updated 2017/01/05 13:54:42 (GMT -400)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nMAC 10.12.2\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nNeed to be able to update tags on current running RDS instances. Tried using modify command to simply have a play identify RDS instance via name to update it's tagging\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n---\\r\\n```\\r\\n- name: RDS Tagger\\r\\n  hosts: 127.0.0.1\\r\\n  gather_facts: no\\r\\n  connection: local\\r\\n  vars_files:\\r\\n    - ./RDS_Profiles/instances.yml ### where vars for instance name and tagging structure are defined.\\r\\n  tasks:\\r\\n  - name: RDS modify tag\\r\\n    with_items: \\\"{{ list }}\\\"\\r\\n    when: (\\\"{{ item.cmd }}\\\" == \\\"modify\\\" )\\r\\n    rds:\\r\\n      command: modify\\r\\n      instance_name: \\\"{{ item.name }}\\\"\\r\\n      tags:\\r\\n        dept: \\\"{{ item.dept }}\\\"\\r\\n        app_name: \\\"{{ item.app_name }}\\\"\\r\\n        project_name: \\\"{{ item.project_name }}\\\"\\r\\n        owner_email: \\\"{{ item.owner_email }}\\\"\\r\\n```\\r\\n##### vars file\\r\\n```\\r\\n      - { cmd: \\\"modify\\\",\\r\\n          where: \\\"us-east-1\\\",\\r\\n          profile: \\\"dev\\\",\\r\\n          name: \\\"somedb\\\",\\r\\n          dept: \\\"test\\\",\\r\\n          app_name: \\\"test\\\",\\r\\n          project_name: \\\"test\\\",\\r\\n          owner_email: \\\"test@test.com\\\"\\r\\n        }\\r\\n```\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- name: RDS Tagger\\r\\n  hosts: 127.0.0.1\\r\\n  gather_facts: no\\r\\n  connection: local\\r\\n  vars_files:\\r\\n    - ./RDS_Profiles/instances.yml ### where vars for instance name and tagging structure are defined.\\r\\n  tasks:\\r\\n  - name: RDS modify tag\\r\\n    when: (\\\"{{ item.cmd }}\\\" == \\\"modify\\\" )\\r\\n    with_items: \\\"{{ list }}\\\"\\r\\n    rds:\\r\\n      command: modify\\r\\n      instance_name: \\\"{{ item.name }}\\\"\\r\\n      tags:\\r\\n        dept: \\\"{{ item.dept }}\\\"\\r\\n        app_name: \\\"{{ item.app_name }}\\\"\\r\\n        project_name: \\\"{{ item.project_name }}\\\"\\r\\n        owner_email: \\\"{{ item.owner_email }}\\\"\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n\\r\\nA feature could allow modify command to allow me to modify the tagging structure on the running RDS instance. Currently tagging is only applicable to create, replicate, and/or restore.\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\\"msg\\\": \\\"Parameter tags is not valid for modify command\\\"\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\\"msg\\\": \\\"Parameter tags is not valid for modify command\\\"\\r\\n```\\r\\n\", \n    \"component_name\": \"rds\", \n    \"component_raw\": \"RDS\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20395\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/rds.py\", \n    \"summary\": \"Need to be able to update tags on current running RDS instances. Tried using modify command to simply have a play identify RDS instance via name to update it's tagging\", \n    \"title\": \"Updating tagging only for RDS module\"\n  }, \n  \"20398\": {\n    \"ansible_version\": \"ansible 2.2.1.0\\nconfig file = /path/to/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\ncore\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file = /path/to/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n- pyenv on Debian 9\\r\\n- Python 2.7.13\\r\\n\\r\\n##### SUMMARY\\r\\nAnsible tries to decode the content of the vault key as UTF-8:\\r\\n```\\r\\nERROR! Unexpected Exception: 'utf8' codec can't decode byte 0xe6 in position 1: invalid continuation byte\\r\\n```\\r\\n\\r\\nThe first few bytes of the vault key are:\\r\\n```\\r\\n39 e6 cb\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThis worked without issues in 2.2.0.0 (same OS, same Python)\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n```\\r\\nERROR! Unexpected Exception: 'utf8' codec can't decode byte 0xe6 in position 1: invalid continuation byte\\r\\nthe full traceback was:\\r\\n\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/home/user/.pyenv/versions/ansible/bin/ansible-playbook\\\", line 103, in <module>\\r\\n    exit_code = cli.run()\\r\\n  File \\\"/home/user/.pyenv/versions/2.7.13/envs/ansible/lib/python2.7/site-packages/ansible/cli/playbook.py\\\", line 110, in run\\r\\n    vault_pass = CLI.read_vault_password_file(self.options.vault_password_file, loader=loader)\\r\\n  File \\\"/home/user/.pyenv/versions/2.7.13/envs/ansible/lib/python2.7/site-packages/ansible/cli/__init__.py\\\", line 589, in read_vault_password_file\\r\\n    return to_text(vault_pass, errors='surrogate_or_strict')\\r\\n  File \\\"/home/user/.pyenv/versions/2.7.13/envs/ansible/lib/python2.7/site-packages/ansible/module_utils/_text.py\\\", line 177, in to_text\\r\\n    return obj.decode(encoding, errors)\\r\\n  File \\\"/home/user/.pyenv/versions/2.7.13/envs/ansible/lib/python2.7/encodings/utf_8.py\\\", line 16, in decode\\r\\n    return codecs.utf_8_decode(input, errors, True)\\r\\nUnicodeDecodeError: 'utf8' codec can't decode byte 0xe6 in position 1: invalid continuation byte\\r\\n```\\r\\n\", \n    \"component_name\": \"core\", \n    \"component_raw\": \"core\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20398\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"c:parsing/vault/\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Ansible tries to decode the content of the vault key as UTF-8:\\n\\n```\\n\\nERROR! Unexpected Exception: 'utf8' codec can't decode byte 0xe6 in position 1: invalid continuation byte\\n\\n```\\n\\n\\n\\nThe first few bytes of the vault key are:\\n\\n```\\n\\n39 e6 cb\\n\\n```\", \n    \"title\": \"2.2.1.0 fails while decoding vault key to UTF-8\"\n  }, \n  \"20400\": {\n    \"ansible_version\": \"[~]>ansible --version\\nansible 2.2.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`shell` module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n[~]>ansible --version\\r\\nansible 2.2.1.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n```\\r\\n[defaults]\\r\\ninventory = ./inventory.sh\\r\\ncallback_whitelist = profile_tasks\\r\\ngathering = smart\\r\\ngather_subset = !facter,!network,!virtual,!ohai,!hardware\\r\\n\\r\\n[ssh_connection]\\r\\nssh_args = -o ControlMaster=auto -o ControlPersist=600s\\r\\npipelining = True\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nUbuntu 15.10\\r\\n\\r\\n##### SUMMARY\\r\\nAccessing registered variables created from `shell` module raises  `template error while templating string: unexpected '.'.`.\\r\\nThe shell command I am running is this (this is not jinja).\\r\\n```\\r\\n$ docker inspect --format '{{ .State.Running }}' foo-test-6819\\r\\ntrue\\r\\n```\\r\\nUsing `command` module instead of `shell` is a my workaround.\\r\\nNote: Error is not present on `2.2.0.0`.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nexecution of a simple `status.yml` playbook with a role\\r\\n`ansible-playbook -i inventory.sh status.yml -c local -e name=test -e port=6819 -v` \\r\\n```yaml\\r\\n---\\r\\n# Play to run actions\\r\\n- name: Actions \\\"{{ name }}\\\"\\r\\n  hosts: \\\"{{ name }}\\\"\\r\\n  serial: 1\\r\\n  max_fail_percentage: 0\\r\\n\\r\\n  roles:\\r\\n    - { role: node-action, action: status }\\r\\n```\\r\\nRole `node-action`\\r\\n```yaml\\r\\n  - name: inspect container\\r\\n    shell: \\\"docker -H {{ docker_url }} inspect --format '{{ '{{ .State.Running }}' }}' foo-{{ name }}-{{ port }}'\\\"\\r\\n    register: inspect_output\\r\\n    changed_when: false\\r\\n\\r\\n  - name: container status\\r\\n    debug:\\r\\n      msg: \\\"foo-{{ name }}-{{ port }} State.Running: {{ inspect_output.stdout }}\\\"\\r\\n    when: \\r\\n      - inspect_output.stdout == 'false' or inspect_output.stdout == 'true'\\r\\n```\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nNo Error on `container status` task.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nError on `container status` task.\\r\\n```\\r\\nTASK [node-action : container status] ******************************************\\r\\nWednesday 18 January 2017  15:07:46 +0200 (0:00:00.135)       0:00:00.471 ***** \\r\\nfatal: [test_localpc_1]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"The conditional check 'inspect_output.stdout == 'false' or inspect_output.stdout == 'true'' failed. The error was: {u'cmd': u\\\\\\\"docker -H unix:///var/run/docker.sock inspect --format '{{ .State.Running }}' foo-test-6819\\\\\\\", u'end': u'2017-01-18 15:07:46.555975', u'stdout': u'true', u'changed': False, u'start': u'2017-01-18 15:07:46.544866', u'delta': u'0:00:00.011109', u'stderr': u'', u'rc': 0, 'stdout_lines': [u'true'], u'warnings': []}: template error while templating string: unexpected '.'. String: docker -H unix:///var/run/docker.sock inspect --format '{{ .State.Running }}' localpc-test-6819\\\\n\\\\nThe error appears to have been in '/home/localpc/Documents/roles/node-action/tasks/docker-action.yml': line 8, column 5, but may\\\\nbe elsewhere in the file depending on the exact syntax problem.\\\\n\\\\nThe offending line appears to be:\\\\n\\\\n\\\\n  - name: container status\\\\n    ^ here\\\\n\\\"}\\r\\n```\\r\\nWorkaround is to abandon `shell` module and use `command` when possible.\", \n    \"component_name\": \"shell\", \n    \"component_raw\": \"`shell` module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20400\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"P2\", \n      \"affects_2.2\", \n      \"bug\", \n      \"c:template/other\", \n      \"c:template/templar\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/commands/shell.py\", \n    \"summary\": \"Accessing registered variables created from `shell` module raises  `template error while templating string: unexpected '.'.`.\\n\\nThe shell command I am running is this (this is not jinja).\\n\\n```\\n\\n$ docker inspect --format '{{ .State.Running }}' foo-test-6819\\n\\ntrue\\n\\n```\\n\\nUsing `command` module instead of `shell` is a my workaround.\\n\\nNote: Error is not present on `2.2.0.0`.\", \n    \"title\": \"Accessing registered variables created from shell module raises `template error while templating string: unexpected '.'.`\"\n  }, \n  \"20406\": {\n    \"ansible_version\": null, \n    \"body\": \"##### ISSUE TYPE\\r\\nFeature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nModule: vsphere_guest - vm_hardware\\r\\n\\r\\n##### SUMMARY\\r\\nIt would be useful to be able to specify the amount of cpu sockets and cpu cores when using vsphere_guest to manage a vSphere virtual machine. Currently, the only option is to specify the amount of cpus (num_cpus) but this is equivalent to specifying the cpu sockets only and does not have an affect on cpu cores.\\r\\n\\r\\n(Copy from previous request https://github.com/ansible/ansible-modules-core/issues/1434 )\\r\\n\\r\\n\\r\\n\", \n    \"component_name\": \"vsphere_guest - vm_hardware\", \n    \"component_raw\": \"Module: vsphere_guest - vm_hardware\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20406\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"vmware\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"It would be useful to be able to specify the amount of cpu sockets and cpu cores when using vsphere_guest to manage a vSphere virtual machine. Currently, the only option is to specify the amount of cpus (num_cpus) but this is equivalent to specifying the cpu sockets only and does not have an affect on cpu cores.\\n\\n\\n\\n(Copy from previous request https://github.com/ansible/ansible-modules-core/issues/1434 )\", \n    \"title\": \"vsphere_guest - vm_hardware: cpu sockets and cpu cores\"\n  }, \n  \"20408\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 06e30485ea) last updated 2017/01/16 200334 (GMT +000)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [u/usr/share/custom_modules]\\nThis has existed in this module in previous 2.x releases as well.  I confirmed that this is an issue in the latest devel branch as of this writing.\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nwin_package\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel 06e30485ea) last updated 2017/01/16 20:03:34 (GMT +000)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = [u'/usr/share/custom_modules']\\r\\n\\r\\nThis has existed in this module in previous 2.x releases as well.  I confirmed that this is an issue in the latest devel branch as of this writing.\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\npipelining=True\\r\\nhost_key_checking = False\\r\\ntimeout = 30\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\nControl Server: CentOS Linux release 7.0.1406 (Core)\\r\\nWindows 2008 & 2012\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nThe win_package module does not expose its ability to handle non-zero return code from an installer.  Some installers do return non-zero codes even when successful.  \\r\\n\\r\\nhttps://msdn.microsoft.com/en-us/library/windows/desktop/aa376931(v=vs.85).aspx\\r\\n\\r\\nSpecific return codes as examples of non-zero but successful installations:\\r\\n\\r\\n- 1641 (ERROR_SUCCESS_REBOOT_INITIATED)\\r\\n- 3010 (ERROR_SUCCESS_REBOOT_REQUIRED)\\r\\n\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nExecute an installer that returns a non-zero but successful exit code (such as exit code 3010 indicating reboot is required)\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- name: Install Package\\r\\n  win_package:\\r\\n    path:  d:\\\\build\\\\SomeInstallerNeedsReboot.exe\\r\\n    product_id: 'SomeInstallerNeedsReboot'\\r\\n```\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nI expect to have a way to tell the win_package module that an exit code of 3010 is expected if successful. I also expect that I can give the win_package module a list of valid return codes to match against.  \\r\\n\\r\\nThe win_package module already has this code embedded in it.  I will be submitting a PR to return the exit code in the results as well as an update to the documentation that shows how to utilizes this module parameter.\\r\\n\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nThis task fails even though it was successfully installed.  It failed because it returned a non-zero exit code and the win_package module does not expose a method to specify successful error codes.\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nfatal: [server1.mycompany.com]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_package\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"The return code 3010 was not expected. Configuration is likely not correct\\\",\\r\\n    \\\"name\\\": \\\"d:\\\\\\\\build\\\\\\\\SomeInstallerNeedsReboot.exe\\\"\\r\\n}\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"win_package\", \n    \"component_raw\": \"win_package\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20408\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_package.ps1\", \n    \"summary\": \"The win_package module does not expose its ability to handle non-zero return code from an installer.  Some installers do return non-zero codes even when successful.  \\n\\n\\n\\nhttps://msdn.microsoft.com/en-us/library/windows/desktop/aa376931(v=vs.85).aspx\\n\\n\\n\\nSpecific return codes as examples of non-zero but successful installations:\\n\\n\\n\\n- 1641 (ERROR_SUCCESS_REBOOT_INITIATED)\\n\\n- 3010 (ERROR_SUCCESS_REBOOT_REQUIRED)\", \n    \"title\": \"win_package doesn't allow non-zero (but successful) exit codes from installers to be specified\"\n  }, \n  \"20412\": {\n    \"ansible_version\": \"/glide/bin/ansible --version\\nansible 2.2.0.0\\nconfig file = /home/users/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nmodules/junos/junos_config\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n/glide/bin/ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /home/users/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nno changes.\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nI was using the junos_template module in 2.1 with pretty good results, but 2.2 merged junos_template into junos_config.  Good idea, but I don't think it's working right.  The first line is there to instantiate the ACL in case it doesn't already exist, in order to prevent any errors when executing the second line which blows away the existing ACL in order to replace it.  This worked using junos_template, but when I use junos_config it seems that the second 'delete' statement is not executing and I get this output:\\r\\n\\r\\n```\\r\\n[cns04.sea3:/glide/cns/ansible/playbook/deploy]$ ansible-playbook junos_config_test.yml --check --diff -i inventory --limit test\\r\\n\\r\\nPLAY [Test junos_config module] ************************************************\\r\\n\\r\\nTASK [junos_config ACL test] ***************************************************\\r\\n\\r\\n[edit firewall family inet]\\r\\n      filter ISP-INBOUND { ... }\\r\\n+     filter ANSIBLE-TEST {\\r\\n+         term ANSIBLE {\\r\\n+             then accept;\\r\\n+         }\\r\\n+         term TEST-TERM-1 {\\r\\n+             from {\\r\\n+                 protocol udp;\\r\\n+             }\\r\\n+             then {\\r\\n+                 log;\\r\\n+                 discard;\\r\\n+             }\\r\\n+         }\\r\\n+     }\\r\\n\\r\\nchanged: [router_name]\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nrouter_name : ok=1    changed=1    unreachable=0    failed=0   \\r\\n```\\r\\nI shouldn't see that ANSIBLE term in the diff if those lines execute in the proper order.   I should only see TEST-TERM-1.  Any ideas?\\r\\n\\r\\nBasically it seems its not honoring the ordering the same case applies when using src: template.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n---\\r\\n- name: Test junos_config module\\r\\n  gather_facts: no\\r\\n  connection: local\\r\\n\\r\\n  vars:\\r\\n    cli:\\r\\n      host: \\\"{{ inventory_hostname }}\\\"\\r\\n\\r\\n  tasks:\\r\\n    - name: junos_config ACL test\\r\\n      junos_config:\\r\\n        provider: \\\"{{ cli }}\\\"\\r\\n        backup: yes\\r\\n        lines:\\r\\n          - set firewall family inet filter ANSIBLE-TEST term ANSIBLE then accept\\r\\n          - delete firewall family inet filter ANSIBLE-TEST\\r\\n          - set firewall family inet filter ANSIBLE-TEST term TEST-TERM-1 from protocol udp\\r\\n          - set firewall family inet filter ANSIBLE-TEST term TEST-TERM-1 then log\\r\\n          - set firewall family inet filter ANSIBLE-TEST term TEST-TERM-1 then discard\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nthe ordering of the lines or config to be honored.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"s/junos/junos_config\", \n    \"component_raw\": \"modules/junos/junos_config\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20412\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/junos/junos_config.py\", \n    \"summary\": \"I was using the junos_template module in 2.1 with pretty good results, but 2.2 merged junos_template into junos_config.  Good idea, but I don't think it's working right.  The first line is there to instantiate the ACL in case it doesn't already exist, in order to prevent any errors when executing the second line which blows away the existing ACL in order to replace it.  This worked using junos_template, but when I use junos_config it seems that the second 'delete' statement is not executing and I get this output:\\n\\n\\n\\n```\\n\\n[cns04.sea3:/glide/cns/ansible/playbook/deploy]$ ansible-playbook junos_config_test.yml --check --diff -i inventory --limit test\\n\\n\\n\\nPLAY [Test junos_config module] ************************************************\\n\\n\\n\\nTASK [junos_config ACL test] ***************************************************\\n\\n\\n\\n[edit firewall family inet]\\n\\n      filter ISP-INBOUND { ... }\\n\\n+     filter ANSIBLE-TEST {\\n\\n+         term ANSIBLE {\\n\\n+             then accept;\\n\\n+         }\\n\\n+         term TEST-TERM-1 {\\n\\n+             from {\\n\\n+                 protocol udp;\\n\\n+             }\\n\\n+             then {\\n\\n+                 log;\\n\\n+                 discard;\\n\\n+             }\\n\\n+         }\\n\\n+     }\\n\\n\\n\\nchanged: [router_name]\\n\\n\\n\\nPLAY RECAP *********************************************************************\\n\\nrouter_name : ok=1    changed=1    unreachable=0    failed=0   \\n\\n```\\n\\nI shouldn't see that ANSIBLE term in the diff if those lines execute in the proper order.   I should only see TEST-TERM-1.  Any ideas?\\n\\n\\n\\nBasically it seems its not honoring the ordering the same case applies when using src: template.\", \n    \"title\": \"Issue with junos_config module with order of statements\"\n  }, \n  \"20413\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/xxxxxxxx/ansible/ansible.cfg\\nconfigured module search path = [./library]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nlineinfile\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/xxxxxxxx/ansible/ansible.cfg\\r\\n  configured module search path = ['./library']\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nUbuntu 14.04.5 LTS\\r\\n\\r\\n##### SUMMARY\\r\\n`lineinfile` is not idempotent for multi-line strings.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nThe following task works as expected:\\r\\n```yaml\\r\\n---\\r\\n- name: Disable IP-Filter\\r\\n  lineinfile:\\r\\n    dest: /etc/ipf/ipf.conf\\r\\n    insertafter: '^set intercept_loopback false;'\\r\\n    line: >-\\r\\n      pass in quick all\\r\\n      pass out quick all\\r\\n    backup: yes\\r\\n```\\r\\nIt inserts one line:\\r\\n\\r\\n    set intercept_loopback false;\\r\\n    pass in quick all pass out quick all\\r\\n\\r\\nWhen executed a second time nothing is done.\\r\\n\\r\\nBut the following task does not stop adding lines:\\r\\n\\r\\n```yaml\\r\\n---\\r\\n- name: Disable IP-Filter\\r\\n  lineinfile:\\r\\n    dest: /etc/ipf/ipf.conf\\r\\n    insertafter: '^set intercept_loopback false;'\\r\\n    line: |-\\r\\n      pass in quick all\\r\\n      pass out quick all\\r\\n    backup: yes\\r\\n```\\r\\n\\r\\nLook ahead for more than one line does not seem to work.\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nI expect two new lines:\\r\\n```\\r\\nset intercept_loopback false;\\r\\npass in quick all\\r\\npass out quick all\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nBut I get two lines for each run. The file after the third run:\\r\\n```\\r\\nset intercept_loopback false;\\r\\npass in quick all\\r\\npass out quick all\\r\\npass in quick all\\r\\npass out quick all\\r\\npass in quick all\\r\\npass out quick all\\r\\n```\\r\\n\", \n    \"component_name\": \"lineinfile\", \n    \"component_raw\": \"lineinfile\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20413\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/lineinfile.py\", \n    \"summary\": \"`lineinfile` is not idempotent for multi-line strings.\", \n    \"title\": \"lineinfile not idempotent for multiple lines\"\n  }, \n  \"20428\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nwin_user\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nI wanted to replace the following task:\\r\\n\\r\\n```yaml\\r\\n- win_command: net localgroup Administrators sqlsvc /add\\r\\n  register: net_localgroup\\r\\n  changed_when: net_localgroup.rc == 0 and 'The command completed successfully.' in net_localgroup.stdout\\r\\n  failed_when: net_localgroup.rc != 0 and 'The specified account name is already a member of the group.' not in net_localgroup.stderr\\r\\n```\\r\\n\\r\\nwith a win_user task:\\r\\n```yaml\\r\\n- win_user:\\r\\n    name: sqlsvc\\r\\n    groups: \\r\\n    - Administrators\\r\\n    groups_action: add\\r\\n    password: '{{ some_password }}'\\r\\n    password_never_expires: yes\\r\\n    state: present\\r\\n```\\r\\nThis works for a computer in AD domain and will add the domain-user to the local group Administrators (in AD). However, win_user fails to do the same, instead it creates a local user in local group Administrators.\\r\\n\\r\\nIf you provide the user with AD domain (e.g. DOMAIN\\\\sqlsvc) it fails with the error that the user does not exist. `Exception calling \\\"SetInfo\\\" with \\\"0\\\" argument(s): \\\"The specified username is invalid.\\\"`\\r\\n\\r\\nPS There is also another issue with the fact that the `password:` parameters seems to be mandatory. Which is reported in #20369 \", \n    \"component_name\": \"win_user\", \n    \"component_raw\": \"win_user\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20428\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_user.py\", \n    \"summary\": \"I wanted to replace the following task:\\n\\n\\n\\n```yaml\\n\\n- win_command: net localgroup Administrators sqlsvc /add\\n\\n  register: net_localgroup\\n\\n  changed_when: net_localgroup.rc == 0 and 'The command completed successfully.' in net_localgroup.stdout\\n\\n  failed_when: net_localgroup.rc != 0 and 'The specified account name is already a member of the group.' not in net_localgroup.stderr\\n\\n```\\n\\n\\n\\nwith a win_user task:\\n\\n```yaml\\n\\n- win_user:\\n\\n    name: sqlsvc\\n\\n    groups: \\n\\n    - Administrators\\n\\n    groups_action: add\\n\\n    password: '{{ some_password }}'\\n\\n    password_never_expires: yes\\n\\n    state: present\\n\\n```\\n\\nThis works for a computer in AD domain and will add the domain-user to the local group Administrators (in AD). However, win_user fails to do the same, instead it creates a local user in local group Administrators.\\n\\n\\n\\nIf you provide the user with AD domain (e.g. DOMAIN\\\\sqlsvc) it fails with the error that the user does not exist. `Exception calling \\\"SetInfo\\\" with \\\"0\\\" argument(s): \\\"The specified username is invalid.\\\"`\\n\\n\\n\\nPS There is also another issue with the fact that the `password:` parameters seems to be mandatory. Which is reported in #20369\", \n    \"title\": \"win_user: Does not allow modification of domain users\"\n  }, \n  \"20432\": {\n    \"ansible_version\": \"All of them that support dynamic inventory.\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\nFeature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nInventory\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\nAll of them that support dynamic inventory.\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nIt doesn't appear the you can pass command line arguments to dynamic inventory, but instead must kluge together `ENV` variables or various other passing techniques (ie, write out a ini file) to side-step the inability of a dynamic inventory script to get passed a custom set of arguments; this seems sorta weird/not ideal (especially if you are using the dynamic inventory script in other programs).\\r\\n\\r\\nFor example a script we have can do the following:\\r\\n\\r\\n`./render_env -e envs/dev json` this will output a json format of the envs topology and settings.\\r\\n\\r\\nThe same program can output yaml, or puppet renderings and it logically makes sense that this program should be able to be ran like:\\r\\n\\r\\n`./render_env -e envs/dev ansible` and then the same program will then be able to be used with the ansible dynamic inventory routines, but we can't do that currently because we can't pass in `-e envs/dev ansible` or any other arguments, which is sorta a PITA.\\r\\n\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nTry to pass a set of additional arguments to a dynamic inventory script, it won't work.\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nN/A\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nN/A\\r\\n\", \n    \"component_name\": \"inventory\", \n    \"component_raw\": \"Inventory\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20432\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"It doesn't appear the you can pass command line arguments to dynamic inventory, but instead must kluge together `ENV` variables or various other passing techniques (ie, write out a ini file) to side-step the inability of a dynamic inventory script to get passed a custom set of arguments; this seems sorta weird/not ideal (especially if you are using the dynamic inventory script in other programs).\\n\\n\\n\\nFor example a script we have can do the following:\\n\\n\\n\\n`./render_env -e envs/dev json` this will output a json format of the envs topology and settings.\\n\\n\\n\\nThe same program can output yaml, or puppet renderings and it logically makes sense that this program should be able to be ran like:\\n\\n\\n\\n`./render_env -e envs/dev ansible` and then the same program will then be able to be used with the ansible dynamic inventory routines, but we can't do that currently because we can't pass in `-e envs/dev ansible` or any other arguments, which is sorta a PITA.\", \n    \"title\": \"Make it possible to pass *command line* arguments to dynamic inventory scripts\"\n  }, \n  \"20433\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 06e30485ea) last updated 2017/01/16 200334 (GMT +000)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [u/usr/share/custom_modules]\\nThis has existed in this module in previous 2.x releases as well.  I confirmed that this is an issue in the latest devel branch as of this writing.\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nwin_feature\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel 06e30485ea) last updated 2017/01/16 20:03:34 (GMT +000)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = [u'/usr/share/custom_modules']\\r\\n\\r\\nThis has existed in this module in previous 2.x releases as well.  I confirmed that this is an issue in the latest devel branch as of this writing.\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\npipelining=True\\r\\nhost_key_checking = False\\r\\ntimeout = 30\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nusing source parameter with win_feature on Win2k8 gets error \\\"A parameter cannot be found that matches parameter name 'Source'.\\\"\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nUse the **source** param for the win_feature when targeting Windows Server 2008.  The source parameter is added the the InstallParams hash and passed along to Add-WindowsFeature.  This Cmdlet does not have a source parameter.  This works on Windows 2012 because the Install-WindowsFeature is used and does have the source parameter.\\r\\n\\r\\nBelow is a sample playbook targeting both Win2k8 and Win2k12 to show how the bug manifests itself.\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- name: Test win_feature source param\\r\\n  hosts: winserver2008.mycompany.com:winserver2012.mycompany.com\\r\\n  gather_facts: false\\r\\n\\r\\n  tasks:\\r\\n    - name: Install Telnet Client\\r\\n      win_feature:\\r\\n        name: Telnet-Client\\r\\n        state: present\\r\\n        restart: false\\r\\n        source: C:\\\\windows\\\\winsxs\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nI expect that the Telnet-Client would be added to both remote targets.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nThe Telnet-Client was successfully installed to the Win2k12 server, but failed on the Win2k8 Server because the source parameter could not be matched.\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nfatal: [winserver2008.mycompany.com]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_feature\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"A parameter cannot be found that matches parameter name 'Source'.\\\"\\r\\n}\\r\\n\\r\\nchanged: [winserver2012.mycompany.com] => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"exitcode\\\": \\\"Success\\\",\\r\\n    \\\"feature_result\\\": [\\r\\n        {\\r\\n            \\\"display_name\\\": \\\"Telnet Client\\\",\\r\\n            \\\"id\\\": 44,\\r\\n            \\\"message\\\": [],\\r\\n            \\\"restart_needed\\\": false,\\r\\n            \\\"skip_reason\\\": \\\"NotSkipped\\\",\\r\\n            \\\"success\\\": true\\r\\n        }\\r\\n    ],\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_feature\\\"\\r\\n    },\\r\\n    \\\"restart_needed\\\": false,\\r\\n    \\\"success\\\": true\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"win_feature\", \n    \"component_raw\": \"win_feature\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20433\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_feature.ps1\", \n    \"summary\": \"using source parameter with win_feature on Win2k8 gets error \\\"A parameter cannot be found that matches parameter name 'Source'.\\\"\", \n    \"title\": \"win_feature - source parameter on Win2k8 gets error \\\"A parameter cannot be found that matches parameter name 'Source'.\\\"\"\n  }, \n  \"20438\": {\n    \"ansible_version\": \"ansible 2.1.2.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nretries-until, YUM module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nansible 2.1.2.0\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nCentOS 6.8\\r\\n\\r\\n##### SUMMARY\\r\\nI tries to add retries-until to some YUM module tasks which fails sometimes mainly due to networking to the repos URL. I added retries and until rc returns 0. But it seems YUM module output does not contain rc code.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n- name: install packages from EPEL Testing\\r\\n  yum: name={{ item }} state=present enablerepo=epel-testing\\r\\n  with_items:\\r\\n    - autogen\\r\\n  register: result\\r\\n  retries: 10\\r\\n  until: result.rc == 0\\r\\n  delay: 5\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nExpect it retries if rc is 1.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nfatal: [epsilon-1-0.local]: FAILED! => {\\\"failed\\\": true, \\\"msg\\\": \\\"The conditional check 'result.rc == 0' failed. The error was: error while evaluating conditional (result.rc == 0): 'dict                                            object' has no attribute 'rc'\\\"}\\r\\n\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"retries-until yum\", \n    \"component_raw\": \"retries-until, YUM module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20438\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/yum.py\", \n    \"summary\": \"I tries to add retries-until to some YUM module tasks which fails sometimes mainly due to networking to the repos URL. I added retries and until rc returns 0. But it seems YUM module output does not contain rc code.\", \n    \"title\": \"retries-until fails on yum module task\"\n  }, \n  \"20443\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"\\r\\n - Bug Report\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nios_facts\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nCentOS Linux 7 managing Cisco IOS-XE devices\\r\\n\\r\\n##### SUMMARY\\r\\nThe module ios_facts does not work on Cisco IOS-XE devices. The command \\\"show memory statistics | include Processor\\\" crashes. There is no \\u201cstatistics\\u201d option behind \\u201cshow memory\\u201d:\\r\\n\\r\\nsh memory ?\\r\\n debug     Memory debugging commands\\r\\n detailed  Detailed memory information\\r\\n switch    Switch  number\\r\\n |         Output modifiers\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nComment out the following two following lines in ios_facts.py:\\r\\n   200         add_command(self.runner, 'show memory statistics | include Processor')\\r\\n   206         data = self.runner.get_command('show memory statistics | include Processor')\\r\\n\\r\\n\\r\\nExample Playbook:\\r\\n```yaml\\r\\n---\\r\\n- hosts: c_ios\\r\\n  connection: local\\r\\n  vars:\\r\\n  tasks:\\r\\n    - name: \\\"network device facts on ios devices: hardware\\\"\\r\\n      ios_facts:\\r\\n        gather_subset: hardware\\r\\n        provider: \\\"{{ cli }}\\\"\\r\\n      register: iosfacts_hardware\\r\\n\\r\\n```\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n```\\r\\n[ansible@localhost V1]$ ansible-playbook iosfacts_wo_config_c_ios.yml -i hosts.ini --ask-vault-pass -v\\r\\nUsing /etc/ansible/ansible.cfg as config file\\r\\nVault password:\\r\\n\\r\\nPLAY [c_ios] *******************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [10.82.1.1]\\r\\n\\r\\nTASK [network device facts on ios devices: hardware] ***************************\\r\\nok: [10.82.1.1] => {\\\"ansible_facts\\\": {\\\"ansible_net_filesystems\\\": [\\\"bootflash:\\\"], \\\"ansible_net_gather_subset\\\": [\\\"hardware\\\", \\\"default\\\"], \\\"ansible_net_hostname\\\": \\\"sy-eng-ch-grn-s-001\\\", \\\"ansible_net_image\\\": \\\"bootflash:cat4500e-universalk9.SPA.03.08.02.E.152-4.E2.bin\\\", \\\"ansible_net_model\\\": null, \\\"ansible_net_serialnum\\\": \\\"JAE171508YH\\\", \\\"ansible_net_version\\\": null}, \\\"changed\\\": false}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\n10.82.1.1                  : ok=2    changed=0    unreachable=0    failed=0\\r\\n\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\n[[ansible@localhost V1]$ ansible-playbook iosfacts_wo_config_c_ios.yml -i hosts.ini --ask-vault-pass -vvv\\r\\nUsing /etc/ansible/ansible.cfg as config file\\r\\nVault password:\\r\\n\\r\\nPLAYBOOK: iosfacts_wo_config_c_ios.yml *****************************************\\r\\n1 plays in iosfacts_wo_config_c_ios.yml\\r\\n\\r\\nPLAY [c_ios] *******************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/core/system/setup.py\\r\\n<10.82.1.1> ESTABLISH LOCAL CONNECTION FOR USER: ansible\\r\\n<10.82.1.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484815415.2-154319293295953 `\\\" && echo ansible-tmp-1484815415.2-154319293295953=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484815415.2-154319293295953 `\\\" ) && sleep 0'\\r\\n<10.82.1.1> PUT /tmp/tmpNjPI97 TO /home/ansible/.ansible/tmp/ansible-tmp-1484815415.2-154319293295953/setup.py\\r\\n<10.82.1.1> EXEC /bin/sh -c 'chmod u+x /home/ansible/.ansible/tmp/ansible-tmp-1484815415.2-154319293295953/ /home/ansible/.ansible/tmp/ansible-tmp-1484815415.2-154319293295953/setup.py && sleep 0'\\r\\n<10.82.1.1> EXEC /bin/sh -c '/usr/bin/python /home/ansible/.ansible/tmp/ansible-tmp-1484815415.2-154319293295953/setup.py; rm -rf \\\"/home/ansible/.ansible/tmp/ansible-tmp-1484815415.2-154319293295953/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nok: [10.82.1.1]\\r\\n\\r\\nTASK [network device facts on ios devices: hardware] ***************************\\r\\ntask path: /home/ansible/AnsibleProjects/BNAS_Course/EasyWins/V1/iosfacts_wo_config_c_ios.yml:6\\r\\nUsing module file /usr/lib/python2.7/site-packages/ansible/modules/core/network/ios/ios_facts.py\\r\\n<10.82.1.1> ESTABLISH LOCAL CONNECTION FOR USER: ansible\\r\\n<10.82.1.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484815415.66-184587982314609 `\\\" && echo ansible-tmp-1484815415.66-184587982314609=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484815415.66-184587982314609 `\\\" ) && sleep 0'\\r\\n<10.82.1.1> PUT /tmp/tmpzBnhjn TO /home/ansible/.ansible/tmp/ansible-tmp-1484815415.66-184587982314609/ios_facts.py\\r\\n<10.82.1.1> EXEC /bin/sh -c 'chmod u+x /home/ansible/.ansible/tmp/ansible-tmp-1484815415.66-184587982314609/ /home/ansible/.ansible/tmp/ansible-tmp-1484815415.66-184587982314609/ios_facts.py && sleep 0'\\r\\n<10.82.1.1> EXEC /bin/sh -c '/usr/bin/python /home/ansible/.ansible/tmp/ansible-tmp-1484815415.66-184587982314609/ios_facts.py; rm -rf \\\"/home/ansible/.ansible/tmp/ansible-tmp-1484815415.66-184587982314609/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/tmp/ansible_vPS19f/ansible_module_ios_facts.py\\\", line 461, in <module>\\r\\n    main()\\r\\n  File \\\"/tmp/ansible_vPS19f/ansible_module_ios_facts.py\\\", line 443, in main\\r\\n    runner.run()\\r\\n  File \\\"/tmp/ansible_vPS19f/ansible_modlib.zip/ansible/module_utils/netcli.py\\\", line 170, in run\\r\\n  File \\\"/tmp/ansible_vPS19f/ansible_modlib.zip/ansible/module_utils/netcli.py\\\", line 98, in run_commands\\r\\n  File \\\"/tmp/ansible_vPS19f/ansible_modlib.zip/ansible/module_utils/shell.py\\\", line 253, in run_commands\\r\\n  File \\\"/tmp/ansible_vPS19f/ansible_modlib.zip/ansible/module_utils/shell.py\\\", line 250, in execute\\r\\nansible.module_utils.network.NetworkError: matched error in response: show memory statistics | include Processor\\r\\n                                ^\\r\\n% Invalid input detected at '^' marker.\\r\\n\\r\\nsy-eng-ch-grn-s-001#\\r\\n\\r\\nfatal: [10.82.1.1]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"ios_facts\\\"\\r\\n    },\\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_vPS19f/ansible_module_ios_facts.py\\\\\\\", line 461, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_vPS19f/ansible_module_ios_facts.py\\\\\\\", line 443, in main\\\\n    runner.run()\\\\n  File \\\\\\\"/tmp/ansible_vPS19f/ansible_modlib.zip/ansible/module_utils/netcli.py\\\\\\\", line 170, in run\\\\n  File \\\\\\\"/tmp/ansible_vPS19f/ansible_modlib.zip/ansible/module_utils/netcli.py\\\\\\\", line 98, in run_commands\\\\n  File \\\\\\\"/tmp/ansible_vPS19f/ansible_modlib.zip/ansible/module_utils/shell.py\\\\\\\", line 253, in run_commands\\\\n  File \\\\\\\"/tmp/ansible_vPS19f/ansible_modlib.zip/ansible/module_utils/shell.py\\\\\\\", line 250, in execute\\\\nansible.module_utils.network.NetworkError: matched error in response: show memory statistics | include Processor\\\\r\\\\n                                ^\\\\r\\\\n% Invalid input detected at '^' marker.\\\\r\\\\n\\\\r\\\\nsy-eng-ch-grn-s-001#\\\\n\\\",\\r\\n    \\\"module_stdout\\\": \\\"\\\",\\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n        to retry, use: --limit @/home/ansible/AnsibleProjects/BNAS_Course/EasyWins/V1/iosfacts_wo_config_c_ios.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\n10.82.1.1                  : ok=1    changed=0    unreachable=0    failed=1\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"ios_facts\", \n    \"component_raw\": \"ios_facts\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20443\", \n    \"issue_type\": null, \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/ios/ios_facts.py\", \n    \"summary\": \"The module ios_facts does not work on Cisco IOS-XE devices. The command \\\"show memory statistics | include Processor\\\" crashes. There is no statistics option behind show memory:\\n\\n\\n\\nsh memory ?\\n\\n debug     Memory debugging commands\\n\\n detailed  Detailed memory information\\n\\n switch    Switch  number\\n\\n |         Output modifiers\", \n    \"title\": \"ios_facts: gather hardware facts fails on IOS-XE\"\n  }, \n  \"20444\": {\n    \"ansible_version\": \"ansible 2.2.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [/usr/local/lib/python2.7/dist-packages/ara/plugins/modules]\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nazure_rm_virtualmachine\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = ['/usr/local/lib/python2.7/dist-packages/ara/plugins/modules']\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\nNAME=\\\"Ubuntu\\\"\\r\\nVERSION=\\\"16.04.1 LTS (Xenial Xerus)\\\"\\r\\nID=ubuntu\\r\\nID_LIKE=debian\\r\\nPRETTY_NAME=\\\"Ubuntu 16.04.1 LTS\\\"\\r\\nVERSION_ID=\\\"16.04\\\"\\r\\nHOME_URL=\\\"http://www.ubuntu.com/\\\"\\r\\nSUPPORT_URL=\\\"http://help.ubuntu.com/\\\"\\r\\nbug_URL=\\\"http://bugs.launchpad.net/ubuntu/\\\"\\r\\nVERSION_CODENAME=xenial\\r\\nUBUNTU_CODENAME=xenial\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\nCan't stop VM, getting module error\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n---\\r\\n- name: Power Off\\r\\n  azure_rm_virtualmachine:\\r\\n    resource_group: \\\"Test\\\"\\r\\n    profile: \\\"default\\\"\\r\\n    name: \\\"VM-TEST\\\"\\r\\n    started: no\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nVM is stop\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nansible@ANSIBLE:/data/projects/ansible$ ansible-playbook -i localhost.ini azure_deployment_production_stop_vms.yml -vvvv\\r\\nUsing /etc/ansible/ansible.cfg as config file\\r\\nLoading callback plugin default of type stdout, v2.0 from /usr/lib/python2.7/dist-packages/ansible/plugins/callback/__init__.pyc\\r\\nLoading callback plugin ara of type notification, v2.0 from /usr/lib/python2.7/dist-packages/ansible/plugins/callback/__init__.pyc\\r\\n\\r\\nPLAYBOOK: azure_deployment_production_stop_vms.yml *****************************\\r\\n1 plays in azure_deployment_production_stop_vms.yml\\r\\n\\r\\nPLAY [Stop Azure VMs] **********************************************************\\r\\n\\r\\nTASK [azure_deployment_production_stop_vms : Power Off] ************************\\r\\ntask path: /data/projects/ansible/roles/azure_deployment_production_stop_vms/tasks/main.yml:3\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/core/cloud/azure/azure_rm_virtualmachine.py\\r\\n<localhost> ESTABLISH LOCAL CONNECTION FOR USER: ansible\\r\\n<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo ~/.ansible/tmp/ansible-tmp-1484820500.19-18506860007200 `\\\" && echo ansible-tmp-1484820500.19-18506860007200=\\\"` echo ~/.ansible/tmp/ansible-tmp-1484820500.19-18506860007200 `\\\" ) && sleep 0'\\r\\n<localhost> PUT /tmp/tmp1Np2a5 TO /home/ansible/.ansible/tmp/ansible-tmp-1484820500.19-18506860007200/azure_rm_virtualmachine.py\\r\\n<localhost> EXEC /bin/sh -c 'chmod u+x /home/ansible/.ansible/tmp/ansible-tmp-1484820500.19-18506860007200/ /home/ansible/.ansible/tmp/ansible-tmp-1484820500.19-18506860007200/azure_rm_virtualmachine.py && sleep 0'\\r\\n<localhost> EXEC /bin/sh -c '/usr/bin/python /home/ansible/.ansible/tmp/ansible-tmp-1484820500.19-18506860007200/azure_rm_virtualmachine.py; rm -rf \\\"/home/ansible/.ansible/tmp/ansible-tmp-1484820500.19-18506860007200/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/tmp/ansible_gQA69C/ansible_module_azure_rm_virtualmachine.py\\\", line 1305, in <module>\\r\\n    main()\\r\\n  File \\\"/tmp/ansible_gQA69C/ansible_module_azure_rm_virtualmachine.py\\\", line 1302, in main\\r\\n    AzureRMVirtualMachine()\\r\\n  File \\\"/tmp/ansible_gQA69C/ansible_module_azure_rm_virtualmachine.py\\\", line 548, in __init__\\r\\n    supports_check_mode=True)\\r\\n  File \\\"/tmp/ansible_gQA69C/ansible_modlib.zip/ansible/module_utils/azure_rm_common.py\\\", line 184, in __init__\\r\\n  File \\\"/tmp/ansible_gQA69C/ansible_module_azure_rm_virtualmachine.py\\\", line 791, in exec_module\\r\\n    vm_id=vm_dict['properties']['vmId'],\\r\\nKeyError: 'vmId'\\r\\n\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"azure_rm_virtualmachine\\\"\\r\\n    }, \\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_gQA69C/ansible_module_azure_rm_virtualmachine.py\\\\\\\", line 1305, in <module>\\\\n    main()\\\\n  File \\\\\\\"/tmp/ansible_gQA69C/ansible_module_azure_rm_virtualmachine.py\\\\\\\", line 1302, in main\\\\n    AzureRMVirtualMachine()\\\\n  File \\\\\\\"/tmp/ansible_gQA69C/ansible_module_azure_rm_virtualmachine.py\\\\\\\", line 548, in __init__\\\\n    supports_check_mode=True)\\\\n  File \\\\\\\"/tmp/ansible_gQA69C/ansible_modlib.zip/ansible/module_utils/azure_rm_common.py\\\\\\\", line 184, in __init__\\\\n  File \\\\\\\"/tmp/ansible_gQA69C/ansible_module_azure_rm_virtualmachine.py\\\\\\\", line 791, in exec_module\\\\n    vm_id=vm_dict['properties']['vmId'],\\\\nKeyError: 'vmId'\\\\n\\\", \\r\\n    \\\"module_stdout\\\": \\\"\\\", \\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n\\tto retry, use: --limit @/data/projects/ansible/azure_deployment_production_stop_vms.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=0    changed=0    unreachable=0    failed=1   \\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"azure_rm_virtualmachine\", \n    \"component_raw\": \"azure_rm_virtualmachine\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20444\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"azure\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py\", \n    \"summary\": \"Can't stop VM, getting module error\", \n    \"title\": \"Can't stop VM using azure_rm_virtualmachine\"\n  }, \n  \"20448\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/nutstore/etp-ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`roles` in a play\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n #ansible 2.2.0.0\\r\\n  config file = /home/nutstore/etp-ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n```yaml\\r\\n[defaults]\\r\\nhostfile=hosts\\r\\nask_sudo_pass=True\\r\\nhost_key_checking=False\\r\\n\\r\\n[privilege_escalation]\\r\\nbecome=True\\r\\nbecome_method=sudo\\r\\nbecome_user=root\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nCentOS release 6.8 (Final)\\r\\n\\r\\n##### SUMMARY\\r\\nName of a role can prevent it from running in 2.2.0\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nStructure of Ansible dir like this\\r\\n```\\r\\netp-ansible/\\r\\n\\u251c\\u2500\\u2500 ansible.cfg\\r\\n\\u251c\\u2500\\u2500 group_vars\\r\\n\\u2502\\u00a0\\u00a0 \\u2514\\u2500\\u2500 target.yml\\r\\n\\u251c\\u2500\\u2500 hosts\\r\\n\\u251c\\u2500\\u2500 roles\\r\\n \\u00a0\\u00a0 \\u251c\\u2500\\u2500 fail2ban\\r\\n \\u00a0\\u00a0  \\u00a0\\u00a0 \\u251c\\u2500\\u2500 files\\r\\n \\u00a0\\u00a0  \\u00a0\\u00a0 \\u2502\\u00a0\\u00a0 \\u2514\\u2500\\u2500 jail.local\\r\\n \\u00a0\\u00a0  \\u00a0\\u00a0 \\u251c\\u2500\\u2500 tasks\\r\\n \\u00a0\\u00a0  \\u00a0\\u00a0 \\u2502\\u00a0\\u00a0 \\u2514\\u2500\\u2500 main.yml\\r\\n \\u00a0\\u00a0  \\u00a0\\u00a0 \\u2514\\u2500\\u2500 tests\\r\\n \\u00a0\\u00a0  \\u00a0\\u00a0     \\u2514\\u2500\\u2500 main.yml\\r\\n```\\r\\n\\r\\nContent of `roles/fail2ban/tasks/main.yml `\\r\\n```yaml\\r\\n---\\r\\n- name: Install package `fail2ban`\\r\\n  package:\\r\\n    name: fail2ban\\r\\n    state: present\\r\\n\\r\\n- name: Ensure fail2ban path exists\\r\\n  file:\\r\\n    dest: /etc/fail2ban\\r\\n    state: directory\\r\\n    owner: root\\r\\n    group: root\\r\\n\\r\\n- name: Copy jail.local\\r\\n  copy:\\r\\n    src: jail.local\\r\\n    dest: /etc/fail2ban/jail.local\\r\\n    owner: root\\r\\n    group: root\\r\\n    mode: 0644\\r\\n\\r\\n- name: Restart service fail2ban\\r\\n  service: name=fail2ban state=restarted\\r\\n```\\r\\n\\r\\nContent of `roles/fail2ban/tests/main.yml ` is quite straight forward\\r\\n```yaml\\r\\n---\\r\\n- name: Test suit\\r\\n  hosts: localhost\\r\\n  roles:\\r\\n    - role: ../../fail2ban\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nTasks listed in `tasks/main.yml` should be executed.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nAfter I run `ansible-playbook roles/fail2ban/tests/main.yml`, nothing happens:\\r\\n```shell\\r\\nPLAY [Test suit] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=0\\r\\n```   \\r\\n\\r\\nAnd `--list-tasks` gives me this\\r\\n```\\r\\nplaybook: roles/fail2ban/tests/main.yml\\r\\n\\r\\n  play #1 (localhost): Test suit\\tTAGS: []\\r\\n    tasks:\\r\\n```\\r\\n\\r\\nHowever, if I mv `fail2ban\\\\` to `failban\\\\` and change `- role: ../../fail2ban` into `- role: ../../failban`, everything seems fine\\r\\n```shell\\r\\n$ ansible-playbook roles/failban/tests/main.yml --list-tasks\\r\\nplaybook: roles/failban/tests/main.yml\\r\\n\\r\\n  play #1 (localhost): Test suit\\tTAGS: []\\r\\n    tasks:\\r\\n      ../../failban : Install package `fail2ban`\\tTAGS: []\\r\\n      ../../failban : Ensure fail2ban path exists\\tTAGS: []\\r\\n      ../../failban : Copy jail.local\\tTAGS: []\\r\\n      ../../failban : Restart service fail2ban\\tTAGS: []\\r\\n```\", \n    \"component_name\": \"roles in a play\", \n    \"component_raw\": \"`roles` in a play\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20448\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Name of a role can prevent it from running in 2.2.0\", \n    \"title\": \"Name of a role may prevent it from being executed in 2.2.0\"\n  }, \n  \"20453\": {\n    \"ansible_version\": \"ansible 2.2.1.0\\nconfig file = /data/project-ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncommand\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file = /data/project-ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n```\\r\\n[ssh_connection]\\r\\npipelining=True\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nDocker container, Ubuntu 14.04 LTS, image - ubuntu:14.04\\r\\n\\r\\n##### SUMMARY\\r\\nChdir returns error: `[Errno 2] No such file or directory` even though the directory exists.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nOn your docker host, create a directory where you can put this YAML playbook\\r\\n```yaml\\r\\n# chdir_test.yaml playbook\\r\\n- hosts: all\\r\\n  tasks:\\r\\n    - file: path=/tmp/libmemcached state=directory mode=0755\\r\\n\\r\\n    - name: Download libmemcached\\r\\n      command: \\\"wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz\\\"\\r\\n      args:\\r\\n        chdir: /tmp/libmemcached\\r\\n```\\r\\n\\r\\nOn your docker host create a container:\\r\\n```\\r\\ndocker run -d --name web` -v /data/project-ansible/:/data/project-ansible ubuntu:14.04 tail -f /dev/null\\r\\n```\\r\\nvolume specified needs to point to the directory where you've created the YAML file\\r\\n\\r\\nEnter the container:\\r\\n`docker exec -it web /bin/bash`\\r\\n\\r\\nInstall Ansible:\\r\\n```\\r\\napt-get update\\r\\napt-get install python-pip python-dev\\r\\npip install ansible markupsafe\\r\\n```\\r\\n\\r\\nRun from inside the container:\\r\\n\\r\\n```\\r\\ncd /data/project-ansible/\\r\\nansible-playbook -c local -i localhost, chdir_test.yaml\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nWget to download the libmemcached into the `/tmp/libmemcached` dir\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nError, here is the verbose output\\r\\n```\\r\\nTASK [php : file] **************************************************************\\r\\ntask path: /data/project-ansible/roles/php/tasks/php5-memcached-igbinary.yml:14\\r\\nUsing module file /usr/local/lib/python2.7/dist-packages/ansible/modules/core/files/file.py\\r\\n<localhost> ESTABLISH LOCAL CONNECTION FOR USER: root\\r\\n<localhost> EXEC /bin/sh -c '/usr/bin/python && sleep 0'\\r\\nok: [localhost] => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"diff\\\": {\\r\\n        \\\"after\\\": {\\r\\n            \\\"path\\\": \\\"/tmp/libmemcached\\\"\\r\\n        }, \\r\\n        \\\"before\\\": {\\r\\n            \\\"path\\\": \\\"/tmp/libmemcached\\\"\\r\\n        }\\r\\n    }, \\r\\n    \\\"gid\\\": 0, \\r\\n    \\\"group\\\": \\\"root\\\", \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"backup\\\": null, \\r\\n            \\\"content\\\": null, \\r\\n            \\\"delimiter\\\": null, \\r\\n            \\\"diff_peek\\\": null, \\r\\n            \\\"directory_mode\\\": null, \\r\\n            \\\"follow\\\": false, \\r\\n            \\\"force\\\": false, \\r\\n            \\\"group\\\": null, \\r\\n            \\\"mode\\\": \\\"0755\\\", \\r\\n            \\\"original_basename\\\": null, \\r\\n            \\\"owner\\\": null, \\r\\n            \\\"path\\\": \\\"/tmp/libmemcached\\\", \\r\\n            \\\"recurse\\\": false, \\r\\n            \\\"regexp\\\": null, \\r\\n            \\\"remote_src\\\": null, \\r\\n            \\\"selevel\\\": null, \\r\\n            \\\"serole\\\": null, \\r\\n            \\\"setype\\\": null, \\r\\n            \\\"seuser\\\": null, \\r\\n            \\\"src\\\": null, \\r\\n            \\\"state\\\": \\\"directory\\\", \\r\\n            \\\"unsafe_writes\\\": null, \\r\\n            \\\"validate\\\": null\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"file\\\"\\r\\n    }, \\r\\n    \\\"mode\\\": \\\"0755\\\", \\r\\n    \\\"owner\\\": \\\"root\\\", \\r\\n    \\\"path\\\": \\\"/tmp/libmemcached\\\", \\r\\n    \\\"size\\\": 4096, \\r\\n    \\\"state\\\": \\\"directory\\\", \\r\\n    \\\"uid\\\": 0\\r\\n}\\r\\n\\r\\nTASK [php : Download libmemcached] *********************************************\\r\\ntask path: /data/project-ansible/roles/php/tasks/php5-memcached-igbinary.yml:16\\r\\nUsing module file /usr/local/lib/python2.7/dist-packages/ansible/modules/core/commands/command.py\\r\\n<localhost> ESTABLISH LOCAL CONNECTION FOR USER: root\\r\\n<localhost> EXEC /bin/sh -c '/usr/bin/python && sleep 0'\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"cmd\\\": \\\"wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz\\\", \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"_raw_params\\\": \\\"wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz\\\", \\r\\n            \\\"_uses_shell\\\": false, \\r\\n            \\\"chdir\\\": \\\"/tmp/libmemcached\\\", \\r\\n            \\\"creates\\\": null, \\r\\n            \\\"executable\\\": null, \\r\\n            \\\"removes\\\": null, \\r\\n            \\\"warn\\\": true\\r\\n        }, \\r\\n        \\\"module_name\\\": \\\"command\\\"\\r\\n    }, \\r\\n    \\\"msg\\\": \\\"[Errno 2] No such file or directory\\\", \\r\\n    \\\"rc\\\": 2\\r\\n}\\r\\n\\tto retry, use: --limit @/data/project-ansible/site.retry\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"command\", \n    \"component_raw\": \"command\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20453\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/commands/command.py\", \n    \"summary\": \"Chdir returns error: `[Errno 2] No such file or directory` even though the directory exists.\", \n    \"title\": \"[Bug] Chdir giving [Errno 2] No such file or directory, Ansible local run on docker container\"\n  }, \n  \"20456\": {\n    \"ansible_version\": \"ansible 2.2.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\nec2_group\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nec2_group allows us to create security groups, to remove security groups and to add new rules to security groups. What it doesn't allow us to do is to remove rules, so we can't easily revoke rules that have been set.\\r\\n\\r\\nThis feature is available in AWS and boto3 ([relevant documentation](https://boto3.readthedocs.io/en/latest/reference/services/ec2.html#EC2.SecurityGroup.revoke_ingress)).\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nLet's say you have a playbook that launches a new EC2 instance. That role also adds a new rule to an existing ELB, so that the new EC2 instance can access it. If you now have a `cleanup` playbook that destroys that EC2 instance, you ideally want to remove the rule you just added to the ELB. A simple revoke would be ideal, but that feature is not available.\\r\\n\\r\\nWe could have two new options to the module, `revoke_rules` and `revoke_rules_egress`, to take care of this.\", \n    \"component_name\": \"ec2_group\", \n    \"component_raw\": \"ec2_group\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20456\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"cloud\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_group.py\", \n    \"summary\": \"ec2_group allows us to create security groups, to remove security groups and to add new rules to security groups. What it doesn't allow us to do is to remove rules, so we can't easily revoke rules that have been set.\\n\\n\\n\\nThis feature is available in AWS and boto3 ([relevant documentation](https://boto3.readthedocs.io/en/latest/reference/services/ec2.html#EC2.SecurityGroup.revoke_ingress)).\", \n    \"title\": \" ec2_group should allow for security group revocations\"\n  }, \n  \"20458\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"_From @bchivari on November 25, 2016 16:58_\\n\\n<!--- Verify first that your issue/request is not already reported in GitHub -->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the plugin/module/task -->\\r\\ndocker_service\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nOut of box\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nCentOS 7\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nPertaining to a private docker registry (https, v1) that has been successfully authenticated to with docker_login in a previous step:\\r\\n\\r\\nFor docker_service ```pull: yes``` only works as expected when (older) image already exists on the system. ```pull: no``` pulls the image as expected when it does not exist on the system.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n\\r\\nWhen a docker image DOES NOT exist on the local system.\\r\\n\\r\\nWhen logged in (successfully) to a private docker registry with:\\r\\n```\\r\\n- docker_login:\\r\\n    registry_url: \\\"{{ docker_registry }}\\\"\\r\\n    username: \\\"{{ docker_registry_username }}\\\"\\r\\n    password: \\\"{{ docker_registry_password }}\\\"\\r\\n    reauthorize: yes\\r\\n```\\r\\n\\r\\nIf the next step is:\\r\\n```\\r\\n- docker_service:\\r\\n    project_src: \\\"{{ project_root }}/{{ project_name }}\\\"\\r\\n    state: present\\r\\n```\\r\\nThis pulls the image as expected and all works well. However if ```pull: yes``` is added to the docker_service block:\\r\\n```\\r\\n- name: Init docker_service from compose file\\r\\n  docker_service:\\r\\n    project_src: \\\"{{ project_root }}/{{ project_name }}\\\"\\r\\n    pull: yes\\r\\n    state: present\\r\\n```\\r\\nThis fails with error:\\r\\n```\\r\\nfatal: [xxxxxxxxxx]: FAILED! => {\\r\\n    \\\"changed\\\": false, \\r\\n    \\\"failed\\\": true, \\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"docker_service\\\"\\r\\n    }, \\r\\n    \\\"module_stderr\\\": \\\"OpenSSH_6.6.1, OpenSSL 1.0.1e-fips 11 Feb 2013\\\\r\\\\ndebug1: Reading configuration data /etc/ssh/ssh_config\\\\r\\\\ndebug1: /etc/ssh/ssh_config line 56: Applying options for *\\\\r\\\\ndebug1: auto-mux: Trying existing master\\\\r\\\\ndebug2: fd 3 setting O_NONBLOCK\\\\r\\\\ndebug2: mux_client_hello_exchange: master version 4\\\\r\\\\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\\\\r\\\\ndebug3: mux_client_request_session: entering\\\\r\\\\ndebug3: mux_client_request_alive: entering\\\\r\\\\ndebug3: mux_client_request_alive: done pid = 43568\\\\r\\\\ndebug3: mux_client_request_session: session request sent\\\\r\\\\ndebug1: mux_client_request_session: master session id: 2\\\\r\\\\ndebug3: mux_client_read_packet: read header failed: Broken pipe\\\\r\\\\ndebug2: Received exit status from master 0\\\\r\\\\nShared connection to xxxxxxxxx closed.\\\\r\\\\n\\\", \\r\\n    \\\"module_stdout\\\": \\\"Traceback (most recent call last):\\\\r\\\\n  File \\\\\\\"/tmp/ansible_knNT7z/ansible_module_docker_service.py\\\\\\\", line 929, in <module>\\\\r\\\\n    main()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_knNT7z/ansible_module_docker_service.py\\\\\\\", line 924, in main\\\\r\\\\n    result = ContainerManager(client).exec_module()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_knNT7z/ansible_module_docker_service.py\\\\\\\", line 575, in exec_module\\\\r\\\\n    result = self.cmd_up()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_knNT7z/ansible_module_docker_service.py\\\\\\\", line 627, in cmd_up\\\\r\\\\n    result.update(self.cmd_pull())\\\\r\\\\n  File \\\\\\\"/tmp/ansible_knNT7z/ansible_module_docker_service.py\\\\\\\", line 739, in cmd_pull\\\\r\\\\n    image = service.image()\\\\r\\\\n  File \\\\\\\"/usr/lib/python2.7/site-packages/compose/service.py\\\\\\\", line 320, in image\\\\r\\\\n    raise NoSuchImageError(\\\\\\\"Image '{}' not found\\\\\\\".format(self.image_name))\\\\r\\\\ncompose.service.NoSuchImageError: Image '192.168.1.123:1234/docker-group/someimage:latest' not found\\\\r\\\\n\\\", \\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\"\\r\\n}\\r\\n```\\r\\n\\r\\nFurther to this, if the image DOES already exist on the local system, ```pull: yes``` works as expected and pulls the update for the image.\\r\\n```\\r\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#5737_\", \n    \"component_name\": \"docker_service\", \n    \"component_raw\": \"docker_service\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20458\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_service.py\", \n    \"summary\": \"Pertaining to a private docker registry (https, v1) that has been successfully authenticated to with docker_login in a previous step:\\n\\n\\n\\nFor docker_service ```pull: yes``` only works as expected when (older) image already exists on the system. ```pull: no``` pulls the image as expected when it does not exist on the system.\", \n    \"title\": \"docker_service: Odd \\\"pull: yes\\\" behavior with private docker registry\"\n  }, \n  \"20464\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /root/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"The existing examples in the \\\"Gotchas\\\" section were rather simple. Expanded upon those to add some additional clarity around how the quoting in YAML works.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nYAMLSyntax\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /root/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nAdds additional examples to the documentation\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"yamlsyntax\", \n    \"component_raw\": \"YAMLSyntax\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20464\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"```\\n\\n\\n\\n```\", \n    \"title\": \"Add some additional value quoting examples\"\n  }, \n  \"20470\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nplugins/dig\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\ndefault\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n`dig` module currently looks unable to me to process lists.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\nlist_to_process: {{ lookup('dig', groups['random-group-name']) }}\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nResult should be list of IP addresses.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nAttributeError: {{ lookup('dig', groups['random-group-name']) }}: 'list' object has no attribute 'startswith'\\r\\n```\\r\\n\\r\\nI'd like to update related module to determine if first argument is list or a string and process the data accordingly.\\r\\n\\r\\nShould such work be done or the idea looks ugly / incompatible / etc and would be rejected anyways?\\r\\n\\r\\nProbably there's another way? Let's say, to send `lookup()` to `map( ... ) | list`. Is it even possible?\", \n    \"component_name\": \"plugins/dig\", \n    \"component_raw\": \"plugins/dig\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20470\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"c:plugins/lookup\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"`dig` module currently looks unable to me to process lists.\", \n    \"title\": \"lookup('dig', arg1) should be able to process lists\"\n  }, \n  \"20473\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel e98c0a3009) last updated 2017/01/04 104106 (GMT -700)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nec2_asg\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel e98c0a3009) last updated 2017/01/04 10:41:06 (GMT -700)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\nIf there is no Instances running in the auto-scaling group, running ec2_asg fails: \\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n- Have an ec2 Auto Scaling group running with at least one machine.\\r\\n- Change the number of instances to 0\\r\\n- When all the instances in our asg are terminated, re-run the ec2_asg task\\r\\n\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n- ec2_asg:\\r\\n    name: \\\"server autoscaling group\\\"\\r\\n    launch_config_name: \\\"server-launch-config\\\"\\r\\n    health_check_period: 60\\r\\n    health_check_type: EC2\\r\\n    desired_capacity: 0\\r\\n    min_size: 0\\r\\n    max_size: 1\\r\\n    region: \\\"{{aws_region}}\\\"\\r\\n    replace_all_instances: yes\\r\\n    vpc_zone_identifier: \\\"{{autoscaling_subnet_ids}}\\\"\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nec2_asg runs and update (or not) the asg config\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [ec2 : ec2_asg] ***************************************************************************************************************************************************************************************\\r\\ntask path: /../servers.yml\\r\\nAn exception occurred during task execution. The full traceback is:\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/var/folders/y2/l4g6_6zn03s1mh34lkz1czjm0000gn/T/ansible_lJMEl4/ansible_module_ec2_asg.py\\\", line 928, in <module>\\r\\n    main()\\r\\n  File \\\"/var/folders/y2/l4g6_6zn03s1mh34lkz1czjm0000gn/T/ansible_lJMEl4/ansible_module_ec2_asg.py\\\", line 922, in main\\r\\n    replace_changed, asg_properties=replace(connection, module)\\r\\n  File \\\"/var/folders/y2/l4g6_6zn03s1mh34lkz1czjm0000gn/T/ansible_lJMEl4/ansible_module_ec2_asg.py\\\", line 646, in replace\\r\\n    instances = props['instances']\\r\\nKeyError: 'instances'\\r\\n\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"ec2_asg\\\"\\r\\n    },\\r\\n    \\\"module_stderr\\\": \\\"Traceback (most recent call last):\\\\n  File \\\\\\\"/var/folders/y2/l4g6_6zn03s1mh34lkz1czjm0000gn/T/ansible_lJMEl4/ansible_module_ec2_asg.py\\\\\\\", line 928, in <module>\\\\n    main()\\\\n  File \\\\\\\"/var/folders/y2/l4g6_6zn03s1mh34lkz1czjm0000gn/T/ansible_lJMEl4/ansible_module_ec2_asg.py\\\\\\\", line 922, in main\\\\n    replace_changed, asg_properties=replace(connection, module)\\\\n  File \\\\\\\"/var/folders/y2/l4g6_6zn03s1mh34lkz1czjm0000gn/T/ansible_lJMEl4/ansible_module_ec2_asg.py\\\\\\\", line 646, in replace\\\\n    instances = props['instances']\\\\nKeyError: 'instances'\\\\n\\\",\\r\\n    \\\"module_stdout\\\": \\\"\\\",\\r\\n    \\\"msg\\\": \\\"MODULE FAILURE\\\",\\r\\n    \\\"rc\\\": 1\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"ec2_asg\", \n    \"component_raw\": \"ec2_asg\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20473\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_asg.py\", \n    \"summary\": \"If there is no Instances running in the auto-scaling group, running ec2_asg fails:\", \n    \"title\": \"ec2_asg fails to run when there is no instance in the Auto Scaling group\"\n  }, \n  \"20479\": {\n    \"ansible_version\": \"n/a\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nlambda module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nn/a\\r\\n\\r\\n##### CONFIGURATION\\r\\nn/a\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nn/a\\r\\n\\r\\n##### SUMMARY\\r\\nThe module should support setting environment variables for Lambda functions.\\r\\nI think there's no arguing about the fact that this feature needs to be supported.\\r\\nHere's an example of the implementation: https://github.com/pjodouin/ansible-lambda/blob/master/modules/lambda.py\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n# Create Lambda functions\\r\\ntasks:\\r\\n- name: looped creation\\r\\n  lambda:\\r\\n    name: '{{ item.name }}'\\r\\n    state: present\\r\\n    zip_file: '{{ item.zip_file }}'\\r\\n    runtime: 'python2.7'\\r\\n    role: 'arn:aws:iam::987654321012:role/lambda_basic_execution'\\r\\n    env_vars: \\\"{{ item.env_vars | default(omit) }}\\\"\\r\\n    handler: 'hello_python.my_handler'\\r\\n    vpc_subnet_ids:\\r\\n    - subnet-123abcde\\r\\n    - subnet-edcba321\\r\\n    vpc_security_group_ids:\\r\\n    - sg-123abcde\\r\\n    - sg-edcba321\\r\\n  with_items:\\r\\n    - { name: HelloWorld, zip_file: 'hello-code.zip' }\\r\\n    - { name: ByeBye, zip_file: 'bye-code.zip' }\\r\\n    - name: NotSoFast\\r\\n       zip_file: 'nsf-code.zip'\\r\\n       env_vars:\\r\\n         key1: value\\r\\n         key2: value      \\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe env vars are set in an idempotent fashion.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nThe support for this in the current module is not present.\", \n    \"component_name\": \"lambda\", \n    \"component_raw\": \"lambda module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20479\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"aws\", \n      \"cloud\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/lambda.py\", \n    \"summary\": \"The module should support setting environment variables for Lambda functions.\\n\\nI think there's no arguing about the fact that this feature needs to be supported.\\n\\nHere's an example of the implementation: https://github.com/pjodouin/ansible-lambda/blob/master/modules/lambda.py\", \n    \"title\": \"Lambda module: add support for env vars\"\n  }, \n  \"20480\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /Users/shabble/work/mhn-automation/ansible.cfg\\nconfigured module search path = Default w/o overrides\\nand\\nansible 2.3.0 (devel 9d26d8b605) last updated 2017/01/19 203438 (GMT +100)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\n`docker_service`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /Users/shabble/work/mhn-automation/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\nand\\r\\n\\r\\n```\\r\\nansible 2.3.0 (devel 9d26d8b605) last updated 2017/01/19 20:34:38 (GMT +100)\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n\\r\\n\\r\\n##### CONFIGURATION\\r\\nNothing interesting\\r\\n```\\r\\n[defaults]\\r\\nhostfile=hosts\\r\\nroles_path=roles/\\r\\ncommand_warnings=True\\r\\nnocows=1\\r\\n```\\r\\n\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nRunner: OSX 10.11.6, python 2.7.12 (via macports)\\r\\nTarget: Debian 8\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWhen using the `docker_service` module, certain runtime or configuration errors are masked and not available in any of the ansible return values or logs.\\r\\nThe cause seems to be `docker-compose` logging (some) error messages directly to stdout or stderr, even when called as a library by `docker_service`.\\r\\n \\r\\nThis might be related to ansible/ansible-modules-core#5117 and #19371 \\r\\n\\r\\nIt is not fully resolved by PR ansible/ansible-modules-core#5165 since that only considers stdout.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\nMinimal testcase below should cause a failure due to the 2 containers both trying to forward the same port, resulting in an error to stderr which isn't returned by ansible.\\r\\n\\r\\n```yaml\\r\\n---\\r\\n- hosts: all\\r\\n  tasks:\\r\\n    - docker_service:\\r\\n        project_name: foo\\r\\n        debug: yes\\r\\n        definition:\\r\\n          version: '2'\\r\\n          services:\\r\\n            testcontainer:\\r\\n              image: busybox\\r\\n              ports:\\r\\n                - \\\"8001:8000\\\"\\r\\n              command: 'sleep 100'\\r\\n            testcontainer2:\\r\\n              image: busybox\\r\\n              ports:\\r\\n                - \\\"8001:8000\\\"\\r\\n              command: 'sleep 100'\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nA useful error message similar to that produced when running `docker-compose up` explicitly.\\r\\n\\r\\nFor comparison, running the same testcase using just a docker-compose.yml produces the output:\\r\\n```\\r\\nCreating network \\\"ansbug_default\\\" with the default driver\\r\\nCreating ansbug_testcontainer_1\\r\\nCreating ansbug_testcontainer2_1\\r\\n\\r\\nERROR: for testcontainer  Cannot start service testcontainer: driver failed programming external connectivity on endpoint ansbug_testcontainer_1 (5ff302538b9881883b36afc21da5c9246dc304f1620c0bee98cca8093bbc0d01): Bind for 0.0.0.0:8001 failed: port is already allocated\\r\\nERROR: Encountered errors while bringing up the project.\\r\\n```\\r\\n`docker-compose up 2>/dev/null` produces no output, indicating the messages are being sent to stderr.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n*Run with ansible 2.2.0*:\\r\\n\\r\\n```\\r\\n$ ansible-playbook -i hosts.dtest dc-errmsg-demo.yml -vvv                             \\r\\nUsing /Users/shabble/work/mhn-automation/ansible.cfg as config file\\r\\n\\r\\nPLAYBOOK: dc-errmsg-demo.yml ***************************************************\\r\\n1 plays in dc-errmsg-demo.yml\\r\\n\\r\\nPLAY [all] *********************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nUsing module file /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ansible/modules/core/system/setup.py\\r\\n<ansibledocker.mhn> ESTABLISH SSH CONNECTION FOR USER: shabble\\r\\n<ansibledocker.mhn> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=shabble -o ConnectTimeout=10 -o ControlPath=/Users/shabble/.ansible/cp/ansible-ssh-%h-%p-%r ansibledocker.mhn '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484858631.24-77548129045125 `\\\" && echo ansible-tmp-1484858631.24-77548129045125=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484858631.24-77548129045125 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<ansibledocker.mhn> PUT /var/folders/lr/ph2sd0md7_5_51wtxztmcmm80000gn/T/tmp66feBd TO /home/shabble/.ansible/tmp/ansible-tmp-1484858631.24-77548129045125/setup.py\\r\\n<ansibledocker.mhn> SSH: EXEC sftp -b - -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=shabble -o ConnectTimeout=10 -o ControlPath=/Users/shabble/.ansible/cp/ansible-ssh-%h-%p-%r '[ansibledocker.mhn]'\\r\\n<ansibledocker.mhn> ESTABLISH SSH CONNECTION FOR USER: shabble\\r\\n<ansibledocker.mhn> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=shabble -o ConnectTimeout=10 -o ControlPath=/Users/shabble/.ansible/cp/ansible-ssh-%h-%p-%r ansibledocker.mhn '/bin/sh -c '\\\"'\\\"'chmod u+x /home/shabble/.ansible/tmp/ansible-tmp-1484858631.24-77548129045125/ /home/shabble/.ansible/tmp/ansible-tmp-1484858631.24-77548129045125/setup.py && sleep 0'\\\"'\\\"''\\r\\n<ansibledocker.mhn> ESTABLISH SSH CONNECTION FOR USER: shabble\\r\\n<ansibledocker.mhn> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=shabble -o ConnectTimeout=10 -o ControlPath=/Users/shabble/.ansible/cp/ansible-ssh-%h-%p-%r -tt ansibledocker.mhn '/bin/sh -c '\\\"'\\\"'/usr/bin/python /home/shabble/.ansible/tmp/ansible-tmp-1484858631.24-77548129045125/setup.py; rm -rf \\\"/home/shabble/.ansible/tmp/ansible-tmp-1484858631.24-77548129045125/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\nok: [ansibledocker.mhn]\\r\\n\\r\\nTASK [docker_service] **********************************************************\\r\\ntask path: /Users/shabble/work/mhn-automation/dc-errmsg-demo.yml:4\\r\\nUsing module file /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ansible/modules/core/cloud/docker/docker_service.py\\r\\n<ansibledocker.mhn> ESTABLISH SSH CONNECTION FOR USER: shabble\\r\\n<ansibledocker.mhn> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=shabble -o ConnectTimeout=10 -o ControlPath=/Users/shabble/.ansible/cp/ansible-ssh-%h-%p-%r ansibledocker.mhn '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484858633.54-69159756081069 `\\\" && echo ansible-tmp-1484858633.54-69159756081069=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484858633.54-69159756081069 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<ansibledocker.mhn> PUT /var/folders/lr/ph2sd0md7_5_51wtxztmcmm80000gn/T/tmprlIO_I TO /home/shabble/.ansible/tmp/ansible-tmp-1484858633.54-69159756081069/docker_service.py\\r\\n<ansibledocker.mhn> SSH: EXEC sftp -b - -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=shabble -o ConnectTimeout=10 -o ControlPath=/Users/shabble/.ansible/cp/ansible-ssh-%h-%p-%r '[ansibledocker.mhn]'\\r\\n<ansibledocker.mhn> ESTABLISH SSH CONNECTION FOR USER: shabble\\r\\n<ansibledocker.mhn> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=shabble -o ConnectTimeout=10 -o ControlPath=/Users/shabble/.ansible/cp/ansible-ssh-%h-%p-%r ansibledocker.mhn '/bin/sh -c '\\\"'\\\"'chmod u+x /home/shabble/.ansible/tmp/ansible-tmp-1484858633.54-69159756081069/ /home/shabble/.ansible/tmp/ansible-tmp-1484858633.54-69159756081069/docker_service.py && sleep 0'\\\"'\\\"''\\r\\n<ansibledocker.mhn> ESTABLISH SSH CONNECTION FOR USER: shabble\\r\\n<ansibledocker.mhn> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=shabble -o ConnectTimeout=10 -o ControlPath=/Users/shabble/.ansible/cp/ansible-ssh-%h-%p-%r -tt ansibledocker.mhn '/bin/sh -c '\\\"'\\\"'/usr/bin/python /home/shabble/.ansible/tmp/ansible-tmp-1484858633.54-69159756081069/docker_service.py; rm -rf \\\"/home/shabble/.ansible/tmp/ansible-tmp-1484858633.54-69159756081069/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\nfatal: [ansibledocker.mhn]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"api_version\\\": null,\\r\\n            \\\"build\\\": false,\\r\\n            \\\"cacert_path\\\": null,\\r\\n            \\\"cert_path\\\": null,\\r\\n            \\\"debug\\\": true,\\r\\n            \\\"definition\\\": {\\r\\n                \\\"services\\\": {\\r\\n                    \\\"testcontainer\\\": {\\r\\n                        \\\"command\\\": \\\"sleep 100\\\",\\r\\n                        \\\"image\\\": \\\"busybox\\\",\\r\\n                        \\\"ports\\\": [\\r\\n                            \\\"8001:8000\\\"\\r\\n                        ]\\r\\n                    },\\r\\n                    \\\"testcontainer2\\\": {\\r\\n                        \\\"command\\\": \\\"sleep 100\\\",\\r\\n                        \\\"image\\\": \\\"busybox\\\",\\r\\n                        \\\"ports\\\": [\\r\\n                            \\\"8001:8000\\\"\\r\\n                        ]\\r\\n                    }\\r\\n                },\\r\\n                \\\"version\\\": \\\"2\\\"\\r\\n            },\\r\\n            \\\"dependencies\\\": true,\\r\\n            \\\"docker_host\\\": null,\\r\\n            \\\"files\\\": null,\\r\\n            \\\"filter_logger\\\": false,\\r\\n            \\\"hostname_check\\\": false,\\r\\n            \\\"key_path\\\": null,\\r\\n            \\\"nocache\\\": false,\\r\\n            \\\"project_name\\\": \\\"foo\\\",\\r\\n            \\\"project_src\\\": null,\\r\\n            \\\"pull\\\": false,\\r\\n            \\\"recreate\\\": \\\"smart\\\",\\r\\n            \\\"remove_images\\\": null,\\r\\n            \\\"remove_orphans\\\": false,\\r\\n            \\\"remove_volumes\\\": false,\\r\\n            \\\"restarted\\\": false,\\r\\n            \\\"scale\\\": null,\\r\\n            \\\"services\\\": null,\\r\\n            \\\"ssl_version\\\": null,\\r\\n            \\\"state\\\": \\\"present\\\",\\r\\n            \\\"stopped\\\": false,\\r\\n            \\\"timeout\\\": 10,\\r\\n            \\\"tls\\\": null,\\r\\n            \\\"tls_hostname\\\": null,\\r\\n            \\\"tls_verify\\\": null\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"docker_service\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"Error starting project - \\\"\\r\\n}\\r\\n\\tto retry, use: --limit @/Users/shabble/work/mhn-automation/dc-errmsg-demo.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nansibledocker.mhn          : ok=1    changed=0    unreachable=0    failed=1\\r\\n```\\r\\n\\r\\nRelevant part here is: ` \\\"msg\\\": \\\"Error starting project - \\\"`\\r\\n\\r\\n*Run with current git HEAD*:\\r\\n\\r\\n```\\r\\n[... equivalent setup spam snipped...]\\r\\nfatal: [ansibledocker.mhn]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"api_version\\\": null,\\r\\n            \\\"build\\\": false,\\r\\n            \\\"cacert_path\\\": null,\\r\\n            \\\"cert_path\\\": null,\\r\\n            \\\"debug\\\": true,\\r\\n            \\\"definition\\\": {\\r\\n                \\\"services\\\": {\\r\\n                    \\\"testcontainer\\\": {\\r\\n                        \\\"command\\\": \\\"sleep 100\\\",\\r\\n                        \\\"image\\\": \\\"busybox\\\",\\r\\n                        \\\"ports\\\": [\\r\\n                            \\\"8001:8000\\\"\\r\\n                        ]\\r\\n                    },\\r\\n                    \\\"testcontainer2\\\": {\\r\\n                        \\\"command\\\": \\\"sleep 100\\\",\\r\\n                        \\\"image\\\": \\\"busybox\\\",\\r\\n                        \\\"ports\\\": [\\r\\n                            \\\"8001:8000\\\"\\r\\n                        ]\\r\\n                    }\\r\\n                },\\r\\n                \\\"version\\\": \\\"2\\\"\\r\\n            },\\r\\n            \\\"dependencies\\\": true,\\r\\n            \\\"docker_host\\\": null,\\r\\n            \\\"files\\\": null,\\r\\n            \\\"filter_logger\\\": false,\\r\\n            \\\"hostname_check\\\": false,\\r\\n            \\\"key_path\\\": null,\\r\\n            \\\"nocache\\\": false,\\r\\n            \\\"project_name\\\": \\\"foo\\\",\\r\\n            \\\"project_src\\\": null,\\r\\n            \\\"pull\\\": false,\\r\\n            \\\"recreate\\\": \\\"smart\\\",\\r\\n            \\\"remove_images\\\": null,\\r\\n            \\\"remove_orphans\\\": false,\\r\\n            \\\"remove_volumes\\\": false,\\r\\n            \\\"restarted\\\": false,\\r\\n            \\\"scale\\\": null,\\r\\n            \\\"services\\\": null,\\r\\n            \\\"ssl_version\\\": null,\\r\\n            \\\"state\\\": \\\"present\\\",\\r\\n            \\\"stopped\\\": false,\\r\\n            \\\"timeout\\\": 10,\\r\\n            \\\"tls\\\": null,\\r\\n            \\\"tls_hostname\\\": null,\\r\\n            \\\"tls_verify\\\": null\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"docker_service\\\"\\r\\n    },\\r\\n    \\\"module_stderr\\\": \\\"\\\",\\r\\n    \\\"module_stdout\\\": \\\"\\\",\\r\\n    \\\"msg\\\": \\\"Error starting project \\\"\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"docker_service\", \n    \"component_raw\": \"`docker_service`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20480\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_service.py\", \n    \"summary\": \"When using the `docker_service` module, certain runtime or configuration errors are masked and not available in any of the ansible return values or logs.\\n\\nThe cause seems to be `docker-compose` logging (some) error messages directly to stdout or stderr, even when called as a library by `docker_service`.\\n\\n \\n\\nThis might be related to ansible/ansible-modules-core#5117 and #19371 \\n\\n\\n\\nIt is not fully resolved by PR ansible/ansible-modules-core#5165 since that only considers stdout.\", \n    \"title\": \"docker_service may not provide useful errors when tasks fail\"\n  }, \n  \"20481\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/rsimmons/work/clearcorrect/provisioning/ansible_env/devinfra/build/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ngce_net\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/rsimmons/work/clearcorrect/provisioning/ansible_env/devinfra/build/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n```\\r\\n[defaults]\\r\\nhost_key_checking = False\\r\\n\\r\\n[ssh_connection]\\r\\nssh_args = -F ./ssh.config -o ControlMaster=auto -o ControlPersist=30m -o StrictHostKeyChecking=no -o CheckHostIP=no\\r\\ncontrol_path = ~/.ssh/ansible-%%r@%%h:%%p\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nWhen updating a firewall rule in GCE using gce_net, rules without a src_range cause an error.\\r\\n\\r\\nI believe the problem exists for other attributes of type list.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nUpdate an existing GCE firewall rule that has an empty list for src_range (beause it uses src_tags). You won't see the error on rule creation, only on update.\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe rule would either be updated or unchanged.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\n\\\"msg\\\": \\\"Unexpected response: ('NoneType' object is not iterable). Detail: Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_4iGjcK/ansible_module_gce_net.py\\\\\\\", line 364, in main\\\\n    if sorted(fw.source_ranges) != sorted(src_range):\\\\nTypeError: 'NoneType' object is not iterable\\\\n\\\"\\r\\n}\\r\\n```\", \n    \"component_name\": \"gce_net\", \n    \"component_raw\": \"gce_net\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20481\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [], \n    \"module_match\": \"lib/ansible/modules/cloud/google/gce_net.py\", \n    \"summary\": \"When updating a firewall rule in GCE using gce_net, rules without a src_range cause an error.\\n\\n\\n\\nI believe the problem exists for other attributes of type list.\", \n    \"title\": \"gce_net error on firewall rule update: NoneType object is not iterable\"\n  }, \n  \"20488\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nansible command\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nThis is filed based on a request from @abadger in #20331.\\r\\n\\r\\n`ansible --version` prints out the library search path, but this is not documented.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\nLook at command documentation with `ansible -h`\\r\\n\\r\\nGoogle `ansible library search path` to look for online documentation.\\r\\n\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n`ansible -h` only would say:\\r\\n\\r\\n     --version             show program's version number, config file location, \\r\\n                           configured module search path (library search path), and exit\\r\\n\\r\\nGoogle `ansible library search path` would reveal online documentation on `docs.ansible.com`, potentially in this article: http://docs.ansible.com/ansible/intro_configuration.html\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n`ansible -h` currently only says:\\r\\n\\r\\n     --version             show program's version number and exit\\r\\n\", \n    \"component_name\": \"ansible command\", \n    \"component_raw\": \"ansible command\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20488\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This is filed based on a request from @abadger in #20331.\\n\\n\\n\\n`ansible --version` prints out the library search path, but this is not documented.\", \n    \"title\": \"Update documentation that --version displays library search path\"\n  }, \n  \"20491\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nModule s3_bucket\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nNone\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nUbuntu 16.04 LTS\\r\\n\\r\\n##### SUMMARY\\r\\nSetting s3_bucket versioning option to true do not enable versioning.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n---\\r\\n\\r\\n- set_fact:\\r\\n    aws_storage_versioning: yes\\r\\n\\r\\n- name: Create the storage bucket\\r\\n  s3_bucket:\\r\\n    name: my-awesome-bucket\\r\\n    region: '{{ aws_region }}'\\r\\n    tags:\\r\\n      environment: '{{ aws_environment }}'\\r\\n      tier: storage\\r\\n    versioning: '{{ aws_storage_versioning|bool }}'\\r\\n    state: present\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nGo to AWS console and see versioning enabled.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nGo to AWS console and see versioning IS NOT enabled.\\r\\n\", \n    \"component_name\": \"s3_bucket\", \n    \"component_raw\": \"Module s3_bucket\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20491\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"aws\", \n      \"bug\", \n      \"cloud\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/s3_bucket.py\", \n    \"summary\": \"Setting s3_bucket versioning option to true do not enable versioning.\", \n    \"title\": \"Module s3_bucket do not enable versioning\"\n  }, \n  \"20492\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 216e2c8813) last updated 2017/01/20 092229 (GMT +000)\\nansible 2.2.0.0 (detached HEAD cdec853e37) last updated 2017/01/20 092531 (GMT +000)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\n`docker_container`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel 216e2c8813) last updated 2017/01/20 09:22:29 (GMT +000)\\r\\nansible 2.2.0.0 (detached HEAD cdec853e37) last updated 2017/01/20 09:25:31 (GMT +000)\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nNothing changed\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nLinux machine1 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u1 (2016-09-03) x86_64 GNU/Linux\\r\\n\\r\\npip list:\\r\\n```\\r\\npip list\\r\\nDEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.\\r\\nbackports.ssl-match-hostname (3.5.0.1)\\r\\ncached-property (1.3.0)\\r\\nchardet (2.3.0)\\r\\ncolorama (0.3.7)\\r\\ndefusedxml (0.4.1)\\r\\ndocker (2.0.2)\\r\\ndocker-compose (1.10.0)\\r\\ndocker-py (1.10.6)\\r\\ndocker-pycreds (0.2.1)\\r\\ndockerpty (0.4.1)\\r\\ndocopt (0.6.2)\\r\\ndocutils (0.12)\\r\\nenum34 (1.1.6)\\r\\nfunctools32 (3.2.3.post2)\\r\\niotop (0.6)\\r\\nipaddress (1.0.18)\\r\\njsonschema (2.5.1)\\r\\nPillow (2.6.1)\\r\\npip (9.0.1)\\r\\nPygments (2.0.1)\\r\\npython-apt (0.9.3.12)\\r\\npython-debian (0.1.27)\\r\\npython-debianbts (1.11)\\r\\nPyYAML (3.12)\\r\\nreportbug (6.6.3)\\r\\nrequests (2.11.1)\\r\\nroman (2.0.0)\\r\\nsetuptools (5.5.1)\\r\\nsix (1.10.0)\\r\\nSOAPpy (0.12.22)\\r\\ntexttable (0.8.7)\\r\\nwebsocket-client (0.40.0)\\r\\nwstools (0.4.3)\\r\\n```\\r\\n\\r\\npython --version\\r\\n`Python 2.7.9`\\r\\n\\r\\ndocker info\\r\\n```\\r\\nContainers: 0\\r\\n Running: 0\\r\\n Paused: 0\\r\\n Stopped: 0\\r\\nImages: 0\\r\\nServer Version: 1.12.3\\r\\nStorage Driver: aufs\\r\\n Root Dir: /var/lib/docker/aufs\\r\\n Backing Filesystem: extfs\\r\\n Dirs: 0\\r\\n Dirperm1 Supported: true\\r\\nLogging Driver: json-file\\r\\nCgroup Driver: cgroupfs\\r\\nPlugins:\\r\\n Volume: local\\r\\n Network: bridge null overlay host\\r\\nSwarm: inactive\\r\\nRuntimes: runc\\r\\nDefault Runtime: runc\\r\\nSecurity Options:\\r\\nKernel Version: 3.16.0-4-amd64\\r\\nOperating System: Debian GNU/Linux 8 (jessie)\\r\\nOSType: linux\\r\\nArchitecture: x86_64\\r\\nCPUs: 2\\r\\nTotal Memory: 1.963 GiB\\r\\nName: machine1\\r\\nID: PD6F:VQDI:VAK4:O3YU:PWDT:HFAG:T3Z4:FNP5:QLT7:C3TO:7OKS:OODH\\r\\nDocker Root Dir: /var/lib/docker\\r\\nDebug Mode (client): false\\r\\nDebug Mode (server): false\\r\\nRegistry: https://index.docker.io/v1/\\r\\nWARNING: No memory limit support\\r\\nWARNING: No swap limit support\\r\\nWARNING: No kernel memory limit support\\r\\nWARNING: No oom kill disable support\\r\\nWARNING: No cpu cfs quota support\\r\\nWARNING: No cpu cfs period support\\r\\nInsecure Registries:\\r\\n 127.0.0.0/8\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nWhen module `docker_container` is used, it fails every time with \\r\\n\\r\\n    \\\"Failed to import docker-py - cannot import name Client. Try `pip install docker-py`\\\"\\r\\n\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n  - docker_container:\\r\\n      image: hello-world\\r\\n      name: hello\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nImage is executed.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [docker-registry : docker_container] **************************************\\r\\ntask path: /vagrant/service-playbooks/roles/docker-registry/tasks/registry-server.yml:56\\r\\nUsing module file /home/vagrant/ansible/lib/ansible/modules/core/cloud/docker/docker_container.py\\r\\n<192.168.77.201> ESTABLISH SSH CONNECTION FOR USER: deploy\\r\\n<192.168.77.201> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=deploy -o ConnectTimeout=10 -o ControlPath=/home/vagrant/.ansible/cp/ansible-ssh-%h-%p-%r 192.168.77.201 '/bin/sh -c '\\\"'\\\"'( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484904632.51-163570270155817 `\\\" && echo ansible-tmp-1484904632.51-163570270155817=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1484904632.51-163570270155817 `\\\" ) && sleep 0'\\\"'\\\"''\\r\\n<192.168.77.201> PUT /tmp/tmpeXfDvf TO /home/deploy/.ansible/tmp/ansible-tmp-1484904632.51-163570270155817/docker_container.py\\r\\n<192.168.77.201> SSH: EXEC sftp -b - -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=deploy -o ConnectTimeout=10 -o ControlPath=/home/vagrant/.ansible/cp/ansible-ssh-%h-%p-%r '[192.168.77.201]'\\r\\n<192.168.77.201> ESTABLISH SSH CONNECTION FOR USER: deploy\\r\\n<192.168.77.201> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=deploy -o ConnectTimeout=10 -o ControlPath=/home/vagrant/.ansible/cp/ansible-ssh-%h-%p-%r 192.168.77.201 '/bin/sh -c '\\\"'\\\"'chmod u+x /home/deploy/.ansible/tmp/ansible-tmp-1484904632.51-163570270155817/ /home/deploy/.ansible/tmp/ansible-tmp-1484904632.51-163570270155817/docker_container.py && sleep 0'\\\"'\\\"''\\r\\n<192.168.77.201> ESTABLISH SSH CONNECTION FOR USER: deploy\\r\\n<192.168.77.201> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=deploy -o ConnectTimeout=10 -o ControlPath=/home/vagrant/.ansible/cp/ansible-ssh-%h-%p-%r -tt 192.168.77.201 '/bin/sh -c '\\\"'\\\"'/usr/bin/python /home/deploy/.ansible/tmp/ansible-tmp-1484904632.51-163570270155817/docker_container.py; rm -rf \\\"/home/deploy/.ansible/tmp/ansible-tmp-1484904632.51-163570270155817/\\\" > /dev/null 2>&1 && sleep 0'\\\"'\\\"''\\r\\nfatal: [machine_1]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"api_version\\\": null,\\r\\n            \\\"blkio_weight\\\": null,\\r\\n            \\\"cacert_path\\\": null,\\r\\n            \\\"capabilities\\\": null,\\r\\n            \\\"cert_path\\\": null,\\r\\n            \\\"cleanup\\\": false,\\r\\n            \\\"command\\\": null,\\r\\n            \\\"cpu_period\\\": null,\\r\\n            \\\"cpu_quota\\\": null,\\r\\n            \\\"cpu_shares\\\": null,\\r\\n            \\\"cpuset_cpus\\\": null,\\r\\n            \\\"cpuset_mems\\\": null,\\r\\n            \\\"debug\\\": false,\\r\\n            \\\"detach\\\": true,\\r\\n            \\\"devices\\\": null,\\r\\n            \\\"dns_opts\\\": null,\\r\\n            \\\"dns_search_domains\\\": null,\\r\\n            \\\"dns_servers\\\": null,\\r\\n            \\\"docker_host\\\": null,\\r\\n            \\\"entrypoint\\\": null,\\r\\n            \\\"env\\\": null,\\r\\n            \\\"env_file\\\": null,\\r\\n            \\\"etc_hosts\\\": null,\\r\\n            \\\"exposed_ports\\\": null,\\r\\n            \\\"filter_logger\\\": false,\\r\\n            \\\"force_kill\\\": false,\\r\\n            \\\"groups\\\": null,\\r\\n            \\\"hostname\\\": null,\\r\\n            \\\"ignore_image\\\": false,\\r\\n            \\\"image\\\": \\\"hello-world\\\",\\r\\n            \\\"interactive\\\": false,\\r\\n            \\\"ipc_mode\\\": null,\\r\\n            \\\"keep_volumes\\\": true,\\r\\n            \\\"kernel_memory\\\": null,\\r\\n            \\\"key_path\\\": null,\\r\\n            \\\"kill_signal\\\": null,\\r\\n            \\\"labels\\\": null,\\r\\n            \\\"links\\\": null,\\r\\n            \\\"log_driver\\\": null,\\r\\n            \\\"log_options\\\": null,\\r\\n            \\\"mac_address\\\": null,\\r\\n            \\\"memory\\\": \\\"0\\\",\\r\\n            \\\"memory_reservation\\\": null,\\r\\n            \\\"memory_swap\\\": null,\\r\\n            \\\"memory_swappiness\\\": null,\\r\\n            \\\"name\\\": \\\"hello\\\",\\r\\n            \\\"network_mode\\\": null,\\r\\n            \\\"networks\\\": null,\\r\\n            \\\"oom_killer\\\": null,\\r\\n            \\\"oom_score_adj\\\": null,\\r\\n            \\\"paused\\\": false,\\r\\n            \\\"pid_mode\\\": null,\\r\\n            \\\"privileged\\\": false,\\r\\n            \\\"published_ports\\\": null,\\r\\n            \\\"pull\\\": false,\\r\\n            \\\"purge_networks\\\": false,\\r\\n            \\\"read_only\\\": false,\\r\\n            \\\"recreate\\\": false,\\r\\n            \\\"restart\\\": false,\\r\\n            \\\"restart_policy\\\": null,\\r\\n            \\\"restart_retries\\\": null,\\r\\n            \\\"security_opts\\\": null,\\r\\n            \\\"shm_size\\\": null,\\r\\n            \\\"ssl_version\\\": null,\\r\\n            \\\"state\\\": \\\"started\\\",\\r\\n            \\\"stop_signal\\\": null,\\r\\n            \\\"stop_timeout\\\": null,\\r\\n            \\\"timeout\\\": null,\\r\\n            \\\"tls\\\": null,\\r\\n            \\\"tls_hostname\\\": null,\\r\\n            \\\"tls_verify\\\": null,\\r\\n            \\\"trust_image_content\\\": false,\\r\\n            \\\"tty\\\": false,\\r\\n            \\\"ulimits\\\": null,\\r\\n            \\\"user\\\": null,\\r\\n            \\\"uts\\\": null,\\r\\n            \\\"volume_driver\\\": null,\\r\\n            \\\"volumes\\\": null,\\r\\n            \\\"volumes_from\\\": null\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"docker_container\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"Failed to import docker-py - cannot import name Client. Try `pip install docker-py`\\\"\\r\\n}\\r\\n\\tto retry, use: --limit @/vagrant/service-playbooks/microservice-infrastructure-no-elastic.retry\\r\\n```\\r\\n\", \n    \"component_name\": \"docker_container\", \n    \"component_raw\": \"`docker_container`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20492\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"summary\": \"When module `docker_container` is used, it fails every time with \\n\\n\\n\\n    \\\"Failed to import docker-py - cannot import name Client. Try `pip install docker-py`\\\"\", \n    \"title\": \"Failed to import docker-py for docker_container module\"\n  }, \n  \"20493\": {\n    \"ansible_version\": \"ansible 2.2.1.0\\nconfig file = /home/stephane/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\nHi,\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ninclude_role\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file = /home/stephane/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nNothing special\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nAnsible running from ArchLinux, managing an OpenBSD machine, but the problem is with any managed machine.\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWhen the include_role module is used within an handler, the calling role fails, before knowing if the handler will be called.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\nCreate the simple following role:\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\ncalling-role/tasks/main.yml\\r\\n```yaml\\r\\n---\\r\\n- name: task with notify\\r\\n  debug: msg=\\\"test\\\"\\r\\n```\\r\\n\\r\\ncalling-role/handlers/main.yml\\r\\n```yaml\\r\\n---\\r\\n- name: handler\\r\\n  include_role: name=called-role\\r\\n```\\r\\ncalled-role can be any role, with at least on task.\\r\\n\\r\\nI run this role with this playbook:\\r\\n```yaml\\r\\n---\\r\\n- hosts:\\r\\n    - all\\r\\n  roles:\\r\\n    - calling-role\\r\\n```\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nI expect the playbook to run.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nThe playbook doesn't run, it fails immediately.\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nUsing /home/stephane/.ansible.cfg as config file\\r\\n\\r\\nPLAYBOOK: main.yml *************************************************************\\r\\n1 plays in main.yml\\r\\n\\r\\nPLAY [all] *********************************************************************\\r\\nERROR! Unexpected Exception: 'Task' object has no attribute 'listen'\\r\\nthe full traceback was:\\r\\n\\r\\nTraceback (most recent call last):\\r\\n  File \\\"/usr/bin/ansible-playbook\\\", line 103, in <module>\\r\\n    exit_code = cli.run()\\r\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/cli/playbook.py\\\", line 159, in run\\r\\n    results = pbex.run()\\r\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/executor/playbook_executor.py\\\", line 154, in run\\r\\n    result = self._tqm.run(play=play)\\r\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/executor/task_queue_manager.py\\\", line 248, in run\\r\\n    self._initialize_notified_handlers(new_play)\\r\\n  File \\\"/usr/lib/python2.7/site-packages/ansible/executor/task_queue_manager.py\\\", line 143, in _initialize_notified_handlers\\r\\n    if handler.listen:\\r\\nAttributeError: 'Task' object has no attribute 'listen'\\r\\nzsh: exit 250   ansible-playbook main.yml -vvv\\r\\n```\\r\\n\\r\\nThe problem still exists with the devel branch (216e2c8).\\r\\n\\r\\nLet me know if I can be of any help concerning this issue!\\r\\n\\r\\nSt\\u00e9phane\", \n    \"component_name\": \"include_role\", \n    \"component_raw\": \"include_role\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20493\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/include_role.py\", \n    \"summary\": \"When the include_role module is used within an handler, the calling role fails, before knowing if the handler will be called.\", \n    \"title\": \"include_role doesn't work from handlers\"\n  }, \n  \"20494\": {\n    \"ansible_version\": \"ansible 2.2.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n- template expansion\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nUbuntu 16.04. ansible installed via pip.\\r\\n\\r\\n~~~\\r\\n$ pip list --format=legacy\\r\\nansible (2.2.1.0)\\r\\ncffi (1.9.1)\\r\\nconfigobj (5.0.6)\\r\\ncrit (0.0.1)\\r\\ncryptography (1.7.1)\\r\\ndynagen (0.9.0)\\r\\nenum34 (1.1.6)\\r\\nidna (2.2)\\r\\nipaddr (2.1.11)\\r\\nipaddress (1.0.18)\\r\\nJinja2 (2.9.4)\\r\\nMarkupSafe (0.23)\\r\\nparamiko (2.1.1)\\r\\npip (9.0.1)\\r\\nprotobuf (3.1.0.post1)\\r\\npyasn1 (0.1.9)\\r\\npycparser (2.17)\\r\\npycrypto (2.6.1)\\r\\npython-apt (1.1.0b1)\\r\\nPyYAML (3.12)\\r\\nsetuptools (33.1.1)\\r\\nsix (1.10.0)\\r\\nwheel (0.29.0)\\r\\n~~~\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nWhen one template *imports* another one, and then *includes* another template, it barfs with \\\"KeyError: 'undefined variable: 0'\\\"\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```yaml\\r\\n# test.yml\\r\\n- hosts: localhost\\r\\n  tasks:\\r\\n    - template:\\r\\n        src: foo\\r\\n        dest: /tmp/foo\\r\\n\\r\\n# templates/foo\\r\\n{% import 'qux' as qux with context %}\\r\\nhello world\\r\\n{{ qux.wibble }}\\r\\n{% include 'bar' %}\\r\\n\\r\\n# templates/bar\\r\\nGoodbye\\r\\n\\r\\n# templates/qux\\r\\n{% set wibble = \\\"WIBBLE\\\" %}\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\n/tmp/foo to be created with:\\r\\n\\r\\n~~~\\r\\nhello world\\r\\nWIBBLE\\r\\nGoodbye\\r\\n~~~\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nTASK [template] ****************************************************************\\r\\ntask path: /home/ubuntu/bug/test.yml:3\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"dest\\\": \\\"/tmp/foo\\\",\\r\\n            \\\"src\\\": \\\"foo\\\"\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"template\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"KeyError: 'undefined variable: 0'\\\"\\r\\n}\\r\\n```\\r\\n\\r\\n##### ADDITIONAL INFO\\r\\n\\r\\nIf you change `templates/foo` to this, it works fine:\\r\\n\\r\\n~~~\\r\\nhello world\\r\\n{% include 'bar' %}\\r\\n~~~\\r\\n\\r\\nAnd so does this:\\r\\n\\r\\n~~~\\r\\n{% import 'qux' as qux with context %}\\r\\nhello world\\r\\n{{ qux.wibble }}\\r\\n~~~\\r\\n\\r\\nSo it appears to be something to do with the *combination* of import and include which is causing it to barf.\\r\\n\\r\\nHowever if you remove the \\\"with context\\\", like this:\\r\\n\\r\\n~~~\\r\\n{% import 'qux' as qux  %}\\r\\nhello world\\r\\n{{ qux.wibble }}\\r\\n~~~\\r\\n\\r\\nthen it barfs in a different way:\\r\\n\\r\\n~~~\\r\\nTASK [template] ****************************************************************\\r\\ntask path: /home/ubuntu/bug/test.yml:3\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"dest\\\": \\\"/tmp/foo\\\",\\r\\n            \\\"src\\\": \\\"foo\\\"\\r\\n        },\\r\\n        \\\"module_name\\\": \\\"template\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"AttributeError: 'NoneType' object has no attribute 'add_locals'\\\"\\r\\n}\\r\\n~~~\\r\\n\\r\\nSo there is a potentially separate issue, that 'import ... with context' works, but 'import' by itself does not, in Ansible.\\r\\n\\r\\nThe [difference](http://jinja.pocoo.org/docs/2.9/templates/#import-context-behavior) is that in the latter case, jinja2 will cache the import with the template (since it doesn't depend on any of the dynamic context in that particular expansion of the template)\\r\\n\\r\\nFinally: this appears not to be a bug with jinja2 itself. Using jinja2 API directly runs the test case with no problem:\\r\\n\\r\\n~~~\\r\\n#!/usr/bin/python\\r\\nfrom jinja2 import Environment, FileSystemLoader\\r\\nenv = Environment(\\r\\n    loader=FileSystemLoader('templates'),\\r\\n)\\r\\ntemplate = env.get_template('foo')\\r\\nprint template.render()\\r\\n~~~\\r\\n\\r\\ngives:\\r\\n\\r\\n~~~\\r\\n$ python test.py\\r\\n\\r\\nhello world\\r\\nWIBBLE\\r\\nGoodbye\\r\\n~~~\\r\\n\", \n    \"component_name\": \"template expansion\", \n    \"component_raw\": \"- template expansion\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20494\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"When one template *imports* another one, and then *includes* another template, it barfs with \\\"KeyError: 'undefined variable: 0'\\\"\", \n    \"title\": \"\\\"KeyError: 'undefined variable: 0'\\\" when using {% import %} and {% include %}\"\n  }, \n  \"20496\": {\n    \"ansible_version\": \"ansible 2.2.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nfile module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nnothing special\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nRunning from macOS Sierra 10.12.2\\r\\nOS that is being managed centOS 6.8\\r\\n\\r\\n##### SUMMARY\\r\\nChanging file permission of a directory and its content is failed due to file name parsing issue. The file path is _/opt/as2/As2MetricsService$_$tt__collectStats_closure14.class_. However it was decoded as _/opt/as2/As2MetricsService/usr/bin/python$tt__collectStats_closure14.class_ which results in no such file or directory issue.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nCreate the directory /opt/as2/\\r\\nPlace a file with name _As2MetricsService$_$tt__collectStats_closure14.class_ inside the directory /opt/as2/\\r\\nRun the following task\\r\\n```yaml\\r\\n- name: Update link to uploaded appserver version\\r\\n  file: src=/opt/as2/ dest=/opt/as2/ state=link owner=adrt group=adrt\\r\\n```\\r\\n##### EXPECTED RESULTS\\r\\nChanging the permission of the specified directory and its content without an issue.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nTASK [appserver : Change ownership of everything below /opt/as2/] ****\\r\\nfatal: [192.168.1.182]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"module_stderr\\\": \\\"\\\", \\\"module_stdout\\\": \\\"Traceback (most recent call last):\\\\r\\\\n  File \\\\\\\"/tmp/ansible_K00ffc/ansible_module_file.py\\\\\\\", line 451, in <module>\\\\r\\\\n    main()\\\\r\\\\n  File \\\\\\\"/tmp/ansible_K00ffc/ansible_module_file.py\\\\\\\", line 335, in main\\\\r\\\\n    changed |= recursive_set_attributes(module, to_bytes(file_args['path'], errors='surrogate_or_strict'), follow, file_args)\\\\r\\\\n  File \\\\\\\"/tmp/ansible_K00ffc/ansible_module_file.py\\\\\\\", line 146, in recursive_set_attributes\\\\r\\\\n    changed |= module.set_fs_attributes_if_different(tmp_file_args, changed)\\\\r\\\\n  File \\\\\\\"/tmp/ansible_K00ffc/ansible_modlib.zip/ansible/module_utils/basic.py\\\\\\\", line 1163, in set_fs_attributes_if_different\\\\r\\\\n  File \\\\\\\"/tmp/ansible_K00ffc/ansible_modlib.zip/ansible/module_utils/basic.py\\\\\\\", line 929, in set_owner_if_different\\\\r\\\\n  File \\\\\\\"/tmp/ansible_K00ffc/ansible_modlib.zip/ansible/module_utils/basic.py\\\\\\\", line 842, in user_and_group\\\\r\\\\nOSError: [Errno 2] No such file or directory: '/opt/as2/As2MetricsService/usr/bin/python$tt__collectStats_closure14.class'\\\\r\\\\n\\\", \\\"msg\\\": \\\"MODULE FAILURE\\\"}\\r\\n\\r\\n```\", \n    \"component_name\": \"file\", \n    \"component_raw\": \"file module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20496\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/file.py\", \n    \"summary\": \"Changing file permission of a directory and its content is failed due to file name parsing issue. The file path is _/opt/as2/As2MetricsService$_$tt__collectStats_closure14.class_. However it was decoded as _/opt/as2/As2MetricsService/usr/bin/python$tt__collectStats_closure14.class_ which results in no such file or directory issue.\", \n    \"title\": \"File name parsing issue while changing permission of a directory\"\n  }, \n  \"20497\": {\n    \"ansible_version\": \"ansible 2.2.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\ninventory\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nAt <http://docs.ansible.com/ansible/intro_inventory.html> it says:\\r\\n\\r\\n> Not only is this inventory configurable, but you can also use multiple inventory files at the same time (explained below)\\r\\n\\r\\nBut it's not \\\"explained below\\\" in the rest of the page.\\r\\n\\r\\nI think perhaps it should link to <http://docs.ansible.com/ansible/intro_dynamic_inventory.html#using-inventory-directories-and-multiple-inventory-sources>\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nN/A\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nN/A\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nN/A\", \n    \"component_name\": \"inventory\", \n    \"component_raw\": \"inventory\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20497\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"At <http://docs.ansible.com/ansible/intro_inventory.html> it says:\\n\\n\\n\\n> Not only is this inventory configurable, but you can also use multiple inventory files at the same time (explained below)\\n\\n\\n\\nBut it's not \\\"explained below\\\" in the rest of the page.\\n\\n\\n\\nI think perhaps it should link to <http://docs.ansible.com/ansible/intro_dynamic_inventory.html#using-inventory-directories-and-multiple-inventory-sources>\", \n    \"title\": \"Reference to using multiple inventory files\"\n  }, \n  \"20500\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nknown_hosts\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nmacOS (Mac OS X)\\r\\n\\r\\n##### SUMMARY\\r\\nSubsequent runs of known_hosts fail with \\\"ssh-keygen failed to hash host\\\". The same code works fine in Ansible 2.2 and lower.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nRun the following twice in the same play:\\r\\n```yaml\\r\\n- name: Add github to known_hosts\\r\\n  known_hosts:\\r\\n    path: /Users/{{ ansible_env.USER }}/.ssh/known_hosts\\r\\n    name: \\\"github.com\\\"\\r\\n    key: \\\"github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==\\\"\\r\\n```\\r\\n\\r\\nHere's the failed Travis CI build that prompted me to raise this issue: https://travis-ci.org/danbohea/macsible/jobs/193471258\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nSubsequent runs should just return \\\"OK\\\" as the value doesn't need to be changed.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nfailed: [localhost] (item={u'host': u'github.com', u'key': u'github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ=='}) => {\\\"failed\\\": true, \\\"item\\\": {\\\"host\\\": \\\"github.com\\\", \\\"key\\\": \\\"github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==\\\"}, \\\"msg\\\": \\\"ssh-keygen failed to hash host (rc=1,stdout='|1|/GfvmadSEUS8+g1S/sne3MqCcng=|MNk8u3xkMh1sMBj+G0D5HNlf2LI= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==\\\\n',stderr='')\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"known_hosts\", \n    \"component_raw\": \"known_hosts\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20500\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/known_hosts.py\", \n    \"summary\": \"Subsequent runs of known_hosts fail with \\\"ssh-keygen failed to hash host\\\". The same code works fine in Ansible 2.2 and lower.\", \n    \"title\": \"known_hosts failing on subsequent runs \\\"ssh-keygen failed to hash host\\\"\"\n  }, \n  \"20504\": {\n    \"ansible_version\": \"2.2.1.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwin_firewall_rule\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.2.1.0\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nWindows Server 2012\\r\\n\\r\\n##### SUMMARY\\r\\nWhen the rule already exists, win_firewall_rule fails to verify that isn't changed because of `netsh` output in English. My host is using German language and then `netsh` output is different.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nTry to execute the following task twice on a non-English host:\\r\\n\\r\\n```yaml\\r\\n- name: Firewall rule to allow smtp on TCP port 25\\r\\n  action: win_firewall_rule\\r\\n  args:\\r\\n      name: smtp\\r\\n      enable: yes\\r\\n      state: present\\r\\n      localport: 25\\r\\n      action: allow\\r\\n      direction: In\\r\\n      protocol: TCP\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe task doesn't fail.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nThe task fails.\\r\\n\", \n    \"component_name\": \"win_firewall_rule\", \n    \"component_raw\": \"win_firewall_rule\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20504\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_firewall_rule.ps1\", \n    \"summary\": \"When the rule already exists, win_firewall_rule fails to verify that isn't changed because of `netsh` output in English. My host is using German language and then `netsh` output is different.\", \n    \"title\": \"win_firewall_rule doesn't work on non-English hosts\"\n  }, \n  \"20505\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nto_be_decided\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nAs discussed on IRC, let's declare one module the reference module for Windows and use it in the documentation for new module authors.\\r\\n\\r\\nThe module should have all these features:\\r\\n- must be small in business logic\\r\\n- must support check-mode\\r\\n- must include -validateset\\r\\n- must include -failifempty\\r\\n- must include -default\\r\\n- must include a bool-type parameter\\r\\n- should include a path-type parameter\\r\\n- should include a string-type parameter\\r\\n\\r\\nThe *win_service* module fulfills all requirements (except check-mode support which could be added) for this PR. It also does not have a path-parameter, but that's not as important IMO.\\r\\n\\r\\nThe rewrite of this module and the expected bikeshedding will be done during the review-process in the PR. The PR will also include:\\r\\n- Include plenty of comments to guide the new contributor\\r\\n- Ensure the module has a consistent CodingStyle that we prefer most (but we do not enforce it)\\r\\n- We updated this module as soon as we have better Windows module infrastructure, so that we can point existing maintainers to it\", \n    \"component_name\": \"to_be_decided\", \n    \"component_raw\": \"to_be_decided\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20505\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs_report\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"As discussed on IRC, let's declare one module the reference module for Windows and use it in the documentation for new module authors.\\n\\n\\n\\nThe module should have all these features:\\n\\n- must be small in business logic\\n\\n- must support check-mode\\n\\n- must include -validateset\\n\\n- must include -failifempty\\n\\n- must include -default\\n\\n- must include a bool-type parameter\\n\\n- should include a path-type parameter\\n\\n- should include a string-type parameter\\n\\n\\n\\nThe *win_service* module fulfills all requirements (except check-mode support which could be added) for this PR. It also does not have a path-parameter, but that's not as important IMO.\\n\\n\\n\\nThe rewrite of this module and the expected bikeshedding will be done during the review-process in the PR. The PR will also include:\\n\\n- Include plenty of comments to guide the new contributor\\n\\n- Ensure the module has a consistent CodingStyle that we prefer most (but we do not enforce it)\\n\\n- We updated this module as soon as we have better Windows module infrastructure, so that we can point existing maintainers to it\", \n    \"title\": \"Select a reference Windows module for the documentation\"\n  }, \n  \"20506\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/rsimmons/work/clearcorrect/provisioning/ansible_env/devinfra/build/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ngce_net\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/rsimmons/work/clearcorrect/provisioning/ansible_env/devinfra/build/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n```\\r\\n[defaults]\\r\\nhost_key_checking = False\\r\\n\\r\\n[ssh_connection]\\r\\nssh_args = -F ./ssh.config -o ControlMaster=auto -o ControlPersist=30m -o StrictHostKeyChecking=no -o CheckHostIP=no\\r\\ncontrol_path = ~/.ssh/ansible-%%r@%%h:%%p\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nWhen updating an existing firewall rule an error occurs if the allowed list includes a protocol without a port, e.g. icmp.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n1. Use gce_net to attempt to update an existing firewall rule in a GCE network.\\r\\n2. Include a protocol without a port in the \\\"allowed\\\" attribute:\\r\\n```\\r\\n\\\"allowed\\\": \\\"tcp:1-65535;udp:1-65535;icmp\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nThe firewall rule in GCE would either be updated or left unchanged if no update is necessary.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nAn error occurs in the `sorted_allowed_list` function:\\r\\n\\r\\n```\\r\\n   \\\"msg\\\": \\\"Unexpected response: ('ports'). Detail: Traceback (most recent call last):\\\\n  File \\\\\\\"/tmp/ansible_5Dh1sH/ansible_module_gce_net.py\\\\\\\", line 356, in main\\\\n    if allowed_list and (sorted_allowed_list(allowed_list) != sorted_allowed_list(fw.allowed)):\\\\n  File \\\\\\\"/tmp/ansible_5Dh1sH/ansible_module_gce_net.py\\\\\\\", line 234, in sorted_allowed_list\\\\n    return sorted(allowed_by_protocol, key=lambda y: y['ports'].sort())\\\\n  File \\\\\\\"/tmp/ansible_5Dh1sH/ansible_module_gce_net.py\\\\\\\", line 234, in <lambda>\\\\n    return sorted(allowed_by_protocol, key=lambda y: y['ports'].sort())\\\\nKeyError: 'ports'\\\\n\\\"\\r\\n```\\r\\n\", \n    \"component_name\": \"gce_net\", \n    \"component_raw\": \"gce_net\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20506\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"gce\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/google/gce_net.py\", \n    \"summary\": \"When updating an existing firewall rule an error occurs if the allowed list includes a protocol without a port, e.g. icmp.\", \n    \"title\": \"gce_net error on firewall rule update: Unexpected response: ('ports')\"\n  }, \n  \"20508\": {\n    \"ansible_version\": \"ansible 2.2.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nset_fact\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\n-->\\r\\nRed Hat Enterprise Linux Client release 7.3 (Maipo)\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nIn Ansible 2.2.1.0, if you use set_fact, delegate_to and delegate_facts to set facts on several hosts listed in with_items, only the first host in the list will have the fact set.  In all other versions of Ansible 2.x, the fact will be set on all hosts.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\nCreate a playbook like this:\\r\\n```yaml\\r\\n---\\r\\n\\r\\n- hosts: localhost\\r\\n  tasks:\\r\\n  - name: \\\"Set fact on localhost\\\"\\r\\n    set_fact:\\r\\n      my_test_fact: \\\"Hello\\\"\\r\\n\\r\\n  - name: \\\"Copy fact to other servers\\\"\\r\\n    set_fact:\\r\\n      my_test_fact: \\\"{{ my_test_fact }}\\\"\\r\\n    delegate_to: \\\"{{ item }}\\\"\\r\\n    delegate_facts: True\\r\\n    with_items: \\\"{{ groups['all'] }}\\\"\\r\\n    when: item != \\\"localhost\\\"\\r\\n\\r\\n- hosts: server1\\r\\n  gather_facts: True\\r\\n  tasks:\\r\\n  - name: \\\"Show fact on server1\\\"\\r\\n    debug: var=my_test_fact\\r\\n\\r\\n- hosts: server2\\r\\n  gather_facts: True\\r\\n  tasks:\\r\\n  - name: \\\"Show fact on server2\\\"\\r\\n    debug: var=my_test_fact\\r\\n```\\r\\nI am using a simple inventory file:\\r\\n```\\r\\n[server1]\\r\\n192.168.1.105 ansible_user=admin\\r\\n\\r\\n[server2]\\r\\n192.168.1.106 ansible_user=admin\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nIf I run the playbook with Ansible 2.2.0.0 I get these results:\\r\\n```\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [Set fact on localhost] ***************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [Copy fact to other servers] **********************************************\\r\\nok: [localhost -> 192.168.1.105] => (item=192.168.1.105)\\r\\nok: [localhost -> 192.168.1.106] => (item=192.168.1.106)\\r\\n\\r\\nPLAY [server1] *****************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [192.168.1.105]\\r\\n\\r\\nTASK [Show fact on server1] ****************************************************\\r\\nok: [192.168.1.105] => {\\r\\n    \\\"my_test_fact\\\": \\\"Hello\\\"\\r\\n}\\r\\n\\r\\nPLAY [server2] *****************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [192.168.1.106]\\r\\n\\r\\nTASK [Show fact on server2] ****************************************************\\r\\nok: [192.168.1.106] => {\\r\\n    \\\"my_test_fact\\\": \\\"Hello\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\n192.168.1.105              : ok=2    changed=0    unreachable=0    failed=0   \\r\\n192.168.1.106              : ok=2    changed=0    unreachable=0    failed=0   \\r\\nlocalhost                  : ok=3    changed=0    unreachable=0    failed=0   \\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nIf I run with Ansible 2.2.1.0, the fact is only set for the first host:\\r\\n```\\r\\n\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [Set fact on localhost] ***************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [Copy fact to other servers] **********************************************\\r\\nok: [localhost -> 192.168.1.105] => (item=192.168.1.105)\\r\\nok: [localhost -> 192.168.1.106] => (item=192.168.1.106)\\r\\n\\r\\nPLAY [server1] *****************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [192.168.1.105]\\r\\n\\r\\nTASK [Show fact on server1] ****************************************************\\r\\nok: [192.168.1.105] => {\\r\\n    \\\"my_test_fact\\\": \\\"Hello\\\"\\r\\n}\\r\\n\\r\\nPLAY [server2] *****************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [192.168.1.106]\\r\\n\\r\\nTASK [Show fact on server2] ****************************************************\\r\\nok: [192.168.1.106] => {\\r\\n    \\\"my_test_fact\\\": \\\"VARIABLE IS NOT DEFINED!\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\n192.168.1.105              : ok=2    changed=0    unreachable=0    failed=0   \\r\\n192.168.1.106              : ok=2    changed=0    unreachable=0    failed=0   \\r\\nlocalhost                  : ok=3    changed=0    unreachable=0    failed=0   \\r\\n\\r\\n```\\r\\n\\r\\nThe bug seems to be related to a change to plugins/strategy/__init__.py here: https://github.com/ansible/ansible/commit/2d8ebbfe8cc9332b34ce807b1c30e69507ba36a0\\r\\n\", \n    \"component_name\": \"set_fact\", \n    \"component_raw\": \"set_fact\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20508\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"c:plugins/strategy\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/set_fact.py\", \n    \"summary\": \"In Ansible 2.2.1.0, if you use set_fact, delegate_to and delegate_facts to set facts on several hosts listed in with_items, only the first host in the list will have the fact set.  In all other versions of Ansible 2.x, the fact will be set on all hosts.\", \n    \"title\": \"Using set_fact with delegate_to, delegate_facts and with_items only sets the fact on the first host\"\n  }, \n  \"20512\": {\n    \"ansible_version\": \"2.1.2\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nConfigureRemotingForAnsible.ps1\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.1.2\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n\\r\\nWindows Server 2012\\r\\nWindows Server 2016\\r\\n\\r\\n\\r\\n##### SUMMARY\\r\\nRun this in a powershell console \\r\\n\\r\\n```\\r\\nInvoke-Expression ((New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1'))\\r\\n```\\r\\n\\r\\n\\r\\nThe error is:\\r\\n\\r\\n*New-EventLog : The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.\\r\\nAt line:124 char:47\\r\\n     New-EventLog -LogName Application -Source $EventSource\\r\\n                                                                              ~~~~~~~~~~~~\\r\\n     CategoryInfo          : InvalidData: (:) [New-EventLog], ValidationMetadataException\\r\\n     FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.NewEventLogCommand*\\r\\n\\r\\nAnd points to the problem, $MyInvocation.MyCommand.Name is an empty string when called like this\\r\\n\\r\\n```\\r\\n$EventSource = $MyInvocation.MyCommand.Name\\r\\nIf ($EventSource -eq $Null)\\r\\n{\\r\\n    $EventSource = \\\"Powershell CLI\\\"\\r\\n}\\r\\n```\\r\\n\\r\\nso the above could be easily changed to \\r\\n\\r\\n```\\r\\n$EventSource = $MyInvocation.MyCommand.Name\\r\\nIf ([String]::IsNullOrEmpty($EventSource))\\r\\n{\\r\\n    $EventSource = \\\"Powershell CLI\\\"\\r\\n} \\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"configureremotingforansible.ps1\", \n    \"component_raw\": \"ConfigureRemotingForAnsible.ps1\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20512\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"windows\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Run this in a powershell console \\n\\n\\n\\n```\\n\\nInvoke-Expression ((New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1'))\\n\\n```\\n\\n\\n\\n\\n\\nThe error is:\\n\\n\\n\\n*New-EventLog : The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.\\n\\nAt line:124 char:47\\n\\n     New-EventLog -LogName Application -Source $EventSource\\n\\n                                                                              ~~~~~~~~~~~~\\n\\n     CategoryInfo          : InvalidData: (:) [New-EventLog], ValidationMetadataException\\n\\n     FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.NewEventLogCommand*\\n\\n\\n\\nAnd points to the problem, $MyInvocation.MyCommand.Name is an empty string when called like this\\n\\n\\n\\n```\\n\\n$EventSource = $MyInvocation.MyCommand.Name\\n\\nIf ($EventSource -eq $Null)\\n\\n{\\n\\n    $EventSource = \\\"Powershell CLI\\\"\\n\\n}\\n\\n```\\n\\n\\n\\nso the above could be easily changed to \\n\\n\\n\\n```\\n\\n$EventSource = $MyInvocation.MyCommand.Name\\n\\nIf ([String]::IsNullOrEmpty($EventSource))\\n\\n{\\n\\n    $EventSource = \\\"Powershell CLI\\\"\\n\\n} \\n\\n```\", \n    \"title\": \"ConfigureRemotingForAnsible.ps1 fails when called from github with Invoke-Expression\"\n  }, \n  \"20513\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0.0\\nconfig file = /home/vagrant/src/github.com/openshift/openshift-ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n - Or maybe this is a feature request, since the documentation around action plugins is scarce...\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\n`parsing/mod_args.py`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file = /home/vagrant/src/github.com/openshift/openshift-ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\n\\r\\nIt is possible to write plays with custom actions that are implemented as modules in a role, but if the action is implemented as an action plugin, the ModuleArgsParser doesn't recognize it.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n\\r\\n```console\\r\\n$ tree\\r\\n.\\r\\n\\u251c\\u2500\\u2500 action-plugin-new-syntax.yml\\r\\n\\u251c\\u2500\\u2500 action-plugin-old-syntax.yml\\r\\n\\u251c\\u2500\\u2500 module-new-syntax.yml\\r\\n\\u251c\\u2500\\u2500 module-old-syntax.yml\\r\\n\\u2514\\u2500\\u2500 roles\\r\\n    \\u2514\\u2500\\u2500 myrole\\r\\n        \\u251c\\u2500\\u2500 action_plugins\\r\\n        \\u2502\\u00a0\\u00a0 \\u2514\\u2500\\u2500 myaction.py\\r\\n        \\u2514\\u2500\\u2500 library\\r\\n            \\u2514\\u2500\\u2500 mymodule.py\\r\\n\\r\\n4 directories, 6 files\\r\\n```\\r\\n\\r\\naction-plugin-new-syntax.yml:\\r\\n```yaml\\r\\n---\\r\\n- hosts: all\\r\\n  roles:\\r\\n    - myrole\\r\\n  post_tasks:\\r\\n    - action: myaction\\r\\n```\\r\\n\\r\\naction-plugin-old-syntax.yml:\\r\\n```yaml\\r\\n---\\r\\n- hosts: all\\r\\n  roles:\\r\\n    - myrole\\r\\n  post_tasks:\\r\\n    - myaction:\\r\\n```\\r\\n\\r\\nmodule-new-syntax.yml:\\r\\n```yaml\\r\\n---\\r\\n- hosts: all\\r\\n  roles:\\r\\n    - myrole\\r\\n  post_tasks:\\r\\n    - mymodule:\\r\\n```\\r\\n\\r\\nmodule-old-syntax.yml:\\r\\n```yaml\\r\\n---\\r\\n- hosts: all\\r\\n  roles:\\r\\n    - myrole\\r\\n  post_tasks:\\r\\n    - action: mymodule\\r\\n```\\r\\n\\r\\nmyaction.py:\\r\\n```python\\r\\nfrom ansible.plugins.action import ActionBase\\r\\n\\r\\nclass ActionModule(ActionBase):\\r\\n\\r\\n    def run(self, tmp=None, task_vars=None):\\r\\n        if task_vars is None:\\r\\n            task_vars = dict()\\r\\n\\r\\n        result = super(ActionModule, self).run(tmp, task_vars)\\r\\n\\r\\n        # import ipdb; ipdb.set_trace()\\r\\n\\r\\n        return result\\r\\n```\\r\\n\\r\\nmymodule.py:\\r\\n```python\\r\\nfrom ansible.module_utils.basic import AnsibleModule\\r\\n\\r\\n\\r\\ndef main():\\r\\n    module = AnsibleModule(argument_spec=dict())\\r\\n    module.exit_json(changed=False)\\r\\n\\r\\n\\r\\nif __name__ == '__main__':\\r\\n    main()\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\nI expected all 4 playbooks to work the same (and do basically nothing).\\r\\n\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\nModules can be called with either new or old syntax, action plugins only work with the **old** syntax.\\r\\nThe new syntax gives:\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```console\\r\\n$ ansible-playbook -i hosts.ini /tmp/ansible-example/action-plugin-new-syntax.yml -vvvv\\r\\nUsing /home/vagrant/src/github.com/openshift/openshift-ansible/ansible.cfg as config file\\r\\nERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path.\\r\\n\\r\\nThe error appears to have been in '/tmp/ansible-example/action-plugin-new-syntax.yml': line 6, column 7, but may\\r\\nbe elsewhere in the file depending on the exact syntax problem.\\r\\n\\r\\nThe offending line appears to be:\\r\\n\\r\\n  post_tasks:\\r\\n    - myaction:\\r\\n      ^ here\\r\\n\\r\\n\\r\\nThe error appears to have been in '/tmp/ansible-example/action-plugin-new-syntax.yml': line 6, column 7, but may\\r\\nbe elsewhere in the file depending on the exact syntax problem.\\r\\n\\r\\nThe offending line appears to be:\\r\\n\\r\\n  post_tasks:\\r\\n    - myaction:\\r\\n      ^ here\\r\\n\\r\\n```\\r\\n\\r\\n\\r\\nThis seems to be a limitation in [lib/ansible/parsing/mod_args.py](https://github.com/ansible/ansible/blob/e3c95615b2117ab4a5ebb43f1c96272bc252dbb6/lib/ansible/parsing/mod_args.py#L283-L295)\", \n    \"component_name\": \"parsing/mod_args.py\", \n    \"component_raw\": \"`parsing/mod_args.py`\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20513\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"c:parsing/mod_args\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"It is possible to write plays with custom actions that are implemented as modules in a role, but if the action is implemented as an action plugin, the ModuleArgsParser doesn't recognize it.\", \n    \"title\": \"ModuleArgsParser doesn't recognize action plugins in tasks\"\n  }, \n  \"20520\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel e3c95615b2) last updated 2017/01/20 111803 (GMT -400)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndatabase/mysql/mysql_user\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel e3c95615b2) last updated 2017/01/20 11:18:03 (GMT -400)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nstock\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nHost environment is debian running devel branch; managed OS is ubuntu 16.04.1, mysql 5.7 from percona\\r\\n\\r\\n##### SUMMARY\\r\\nwhen mysql users are defined without a host definition ('user'@'', equivalent to 'user'@'%'), the RE match fails when extracting the existing permissions.\\r\\n\\r\\nthis originally showed up testing an migration of mysql from 5.6 to 5.7. \\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```\\r\\nmysql> drop user 'test'@'';\\r\\nQuery OK, 0 rows affected (0.00 sec)\\r\\n\\r\\nmysql> flush privlieges;\\r\\nQuery OK, 0 rows affected (0.00 sec)\\r\\n\\r\\nmysql> Bye\\r\\n# user does not exist, so nothing to parse. first pass runs ok.\\r\\n$ ansible-playbook test.yml [...]\\r\\nTASK [test grants] \\r\\nchanged: [web1]\\r\\n# second pass has something to chew on\\r\\n$ ansible-playbook test.yml [...]\\r\\nTASK [test grants] \\r\\nfatal: [web1]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"unable to parse the MySQL grant string: GRANT USAGE ON *.* TO 'test'@''\\\"}\\r\\n```\\r\\n\\r\\n```yaml\\r\\n---\\r\\n- hosts: all\\r\\n  tasks:\\r\\n  - name: test grants\\r\\n    mysql_user:\\r\\n      name: \\\"test\\\"\\r\\n      host: ''\\r\\n      priv: 'mysql.*:SELECT'\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nuser is parsed and updated as expected\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nfailure with unable to parse MySQL grant string\\r\\n\\r\\n##### 1 char patch.\\r\\ncan PR if needed, but seems silly for a single character change.\\r\\n\\r\\n```\\r\\nmysql/ $ git diff | cat\\r\\ndiff --git a/lib/ansible/modules/database/mysql/mysql_user.py b/lib/ansible/modules/database/mysql/mysql_user.py\\r\\nindex 286106fe7..bd3a18985 100644\\r\\n--- a/lib/ansible/modules/database/mysql/mysql_user.py\\r\\n+++ b/lib/ansible/modules/database/mysql/mysql_user.py\\r\\n@@ -432,7 +432,7 @@ def privileges_get(cursor, user,host):\\r\\n             return x\\r\\n \\r\\n     for grant in grants:\\r\\n-        res = re.match(\\\"GRANT (.+) ON (.+) TO '.*'@'.+'( IDENTIFIED BY PASSWORD '.+')? ?(.*)\\\", grant[0])\\r\\n+        res = re.match(\\\"GRANT (.+) ON (.+) TO '.*'@'.*'( IDENTIFIED BY PASSWORD '.+')? ?(.*)\\\", grant[0])\\r\\n         if res is None:\\r\\n             raise InvalidPrivsError('unable to parse the MySQL grant string: %s' % grant[0])\\r\\n         privileges = res.group(1).split(\\\", \\\")\\r\\n```\", \n    \"component_name\": \"database/mysql/mysql_user\", \n    \"component_raw\": \"database/mysql/mysql_user\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20520\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/database/mysql/mysql_user.py\", \n    \"summary\": \"when mysql users are defined without a host definition ('user'@'', equivalent to 'user'@'%'), the RE match fails when extracting the existing permissions.\\n\\n\\n\\nthis originally showed up testing an migration of mysql from 5.6 to 5.7.\", \n    \"title\": \"mysql_user fails parsing grant string for empty hosts\"\n  }, \n  \"20521\": {\n    \"ansible_version\": \"SHA e3c95615b2117ab4a5ebb43f1c96272bc252dbb6\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nplugins core AND/OR docker_container module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nSHA: e3c95615b2117ab4a5ebb43f1c96272bc252dbb6\\r\\n\\r\\n##### SUMMARY\\r\\nGetting this in the playbook run output when using `docker_container`:\\r\\n```\\r\\n [WARNING]: Removed restricted key from module data: ansible_docker_container = REDACTED\\r\\n```\\r\\nLooks like it was introduced by this comment by @bcoca https://github.com/ansible/ansible/commit/1880027da19d223819d83dd84325edc795783648\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nRun devel ansible, use docker_container module\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nNo warning displays\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nA warning displays\", \n    \"component_name\": \"plugins core and/or docker_container\", \n    \"component_raw\": \"plugins core AND/OR docker_container module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20521\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"summary\": \"Getting this in the playbook run output when using `docker_container`:\\n\\n```\\n\\n [WARNING]: Removed restricted key from module data: ansible_docker_container = REDACTED\\n\\n```\\n\\nLooks like it was introduced by this comment by @bcoca https://github.com/ansible/ansible/commit/1880027da19d223819d83dd84325edc795783648\", \n    \"title\": \"Warning printed when using docker_container on devel branch\"\n  }, \n  \"20527\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nConfigureRemotingForAnsible.ps1\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nA small fix suggested by a user for running ConfigureRemotingForAnsible.ps1\\r\\n\\r\\nThis fixes #20512\", \n    \"component_name\": \"configureremotingforansible.ps1\", \n    \"component_raw\": \"ConfigureRemotingForAnsible.ps1\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20527\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"docs\", \n      \"windows\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"A small fix suggested by a user for running ConfigureRemotingForAnsible.ps1\\n\\n\\n\\nThis fixes #20512\", \n    \"title\": \"Small fix for running using Invoke-Expression\"\n  }, \n  \"20528\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ngce_net\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nFirewall rules in GCE that have a value for the \\\"allowed\\\" field do not have a dictionary key for 'ports' when the none is specified. An example of this would be the protocol \\\"icmp\\\". This causes the comparison of the firewall rule in YAML and the firewall in GCE to raise an error as described in the issue.\\r\\n\\r\\nThis change removes the addition of a \\\"port\\\" placeholder when the YAML rule is formatted and fixes the sorting problem when a ports dictionary key is not present.\\r\\n\\r\\nFixes #20506 \\r\\n\", \n    \"component_name\": \"gce_net\", \n    \"component_raw\": \"gce_net\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20528\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [], \n    \"module_match\": \"lib/ansible/modules/cloud/google/gce_net.py\", \n    \"summary\": \"Firewall rules in GCE that have a value for the \\\"allowed\\\" field do not have a dictionary key for 'ports' when the none is specified. An example of this would be the protocol \\\"icmp\\\". This causes the comparison of the firewall rule in YAML and the firewall in GCE to raise an error as described in the issue.\\n\\n\\n\\nThis change removes the addition of a \\\"port\\\" placeholder when the YAML rule is formatted and fixes the sorting problem when a ports dictionary key is not present.\\n\\n\\n\\nFixes #20506\", \n    \"title\": \"Fixed issue in gce_net with firewall rules that have protocols that d\\u2026\"\n  }, \n  \"20530\": {\n    \"ansible_version\": \"ansible --version\\nansible 2.2.1.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nansible-vault\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n\\u2192 ansible --version\\r\\nansible 2.2.1.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nI have no unique configuration\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nOS X El Capitan 10.11.6\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nIf the first/only file I encrypt via ansible-vault is a json file (the json credentails downloaded from GCE for a service account), then ansible-playbook will not prompt for a vault password and `--ask-vault-pass` is not required to run a playbook successfully.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nI imagine this could work similar with anything that involves a json file, but here is what I did.\\r\\n\\r\\n1. Download a GCE credentials .json file (I imagine this would work with aws or anything that uses json?).\\r\\n2. Move it to be `group_vars/devboxes/credentials.json`\\r\\n3. Create the `create_vm.yml` playbook below and the `group_vars/devboxes/vars.yml` listed below.\\r\\n4. Run the playbook at least once successfully `ansible-playbook create_vm.yml` before encrypting.\\r\\n    - When I tried this on another machine, it failed until I ran the playbook once with a decrypted creds.json, but then after encrypting the below behavior still occurred)\\r\\n5. `ansible-vault encrypt group_vars/devboxes/credentials.json`\\r\\n6. Run the playbook again the same as in step 4\\r\\n    - Note that `--ask-vault-pass` was not required, but the decryption still occurred.\\r\\n7. (Optional) If you modify the credentials.json file (after decrypting it) and then re-encrypt it, the playbook will fail. So it doesn't seem to be storing a cached file anywhere, it just does not seem to recognize this playbook as requiring a password.\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n# create_vm.yml playbook\\r\\n- hosts: localhost\\r\\n  connection: local\\r\\n  vars_files:\\r\\n    - \\\"group_vars/devboxes/vars.yml\\\"\\r\\n  gather_facts: False\\r\\n  tasks:\\r\\n  - name: \\\"Creating virtual machine\\\"\\r\\n    gce:\\r\\n      instance_names: my-test-instance1\\r\\n      zone: us-central1-a\\r\\n      machine_type: g1-small\\r\\n      image: debian-8\\r\\n      state: present\\r\\n      service_account_email: \\\"{{ gce_service_account_email }}\\\"\\r\\n      credentials_file: \\\"{{ gce_credentials_file }}\\\"\\r\\n      project_id: \\\"{{ gce_project_id }}\\\"\\r\\n    register: gce\\r\\n\\r\\n\\r\\n# group_vars/devboxes/vars.yml\\r\\ndevboxes_gce_project_id: <GCE_PROJECT_ID>\\r\\ndevboxes_gce_service_account_email: <GCE_SERVICE_EMAIL>\\r\\ndevboxes_gce_credentials_file: \\\"{{ playbook_dir }}/group_vars/devboxes/credentials.json\\\"\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nI expected to ansible to give me a warning that a file was not decrypted, and require a password prompt or password file.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nI was not prompted for a password and the play completed successfully.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\u2192 ansible-vault encrypt group_vars/devboxes/creds.json\\r\\nVault password: \\r\\nEncryption successful\\r\\n\\r\\n\\u2192 ansible-playbook create_vm.yml                      \\r\\n\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [Actually creating machine] ***********************************************\\r\\nchanged: [localhost]\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=1    unreachable=0    failed=0   \\r\\n```\\r\\n\", \n    \"component_name\": \"ansible-vault\", \n    \"component_raw\": \"ansible-vault\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20530\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"c:parsing/data_loader\", \n      \"c:parsing/vault/\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"If the first/only file I encrypt via ansible-vault is a json file (the json credentails downloaded from GCE for a service account), then ansible-playbook will not prompt for a vault password and `--ask-vault-pass` is not required to run a playbook successfully.\", \n    \"title\": \"ansible-playbook does not require --ask-vault-pass for single vaulted json file\"\n  }, \n  \"20531\": {\n    \"ansible_version\": \"ansible 2.2.0.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nget_url plugin/library\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nCheck mode for get_url should make sure the URL to fetch exists\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n\\r\\n```\\r\\nRan get_url using variables to construct a URL that did not exist for some hosts\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nExpected check mode to fail on nonexistent URL\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nCheck mode is skipped\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"get_url plugin/library\", \n    \"component_raw\": \"get_url plugin/library\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20531\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"c:module_utils/urls\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Check mode for get_url should make sure the URL to fetch exists\", \n    \"title\": \"get_url should check for URL existence in check mode\"\n  }, \n  \"20532\": {\n    \"ansible_version\": \"ansible-2.2.0.0\", \n    \"body\": \"Add check_mode to get_url that does a HEAD request to make sure the URL exists, but doesn't write the real file\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nget_url\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible-2.2.0.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nFixes #20531 \\r\\nTo make sure the URL exists in check mode, do a HEAD request and write to the temp location, then clean it up and exit without copying to the real destination.\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"get_url\", \n    \"component_raw\": \"get_url\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20532\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"needs_revision\", \n      \"networking\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/basics/get_url.py\", \n    \"summary\": \"Fixes #20531 \\n\\nTo make sure the URL exists in check mode, do a HEAD request and write to the temp location, then clean it up and exit without copying to the real destination.\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"Add check_mode to get_url \"\n  }, \n  \"20535\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\n\\r\\n`imgadm` module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nv2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\n- get rid of changed, rc, stderr, stdout juggling\\r\\n- use get_bin_path() to get 'imgadm' path\\r\\n- move actual implementation to Imgadm class\\r\\n- fix 'changed' for imported images which incorrect reported `false` for freshly imported images\", \n    \"component_name\": \"imgadm\", \n    \"component_raw\": \"`imgadm` module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20535\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"cloud\", \n      \"community_review\", \n      \"module\", \n      \"owner_pr\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/smartos/imgadm.py\", \n    \"summary\": \"- get rid of changed, rc, stderr, stdout juggling\\n\\n- use get_bin_path() to get 'imgadm' path\\n\\n- move actual implementation to Imgadm class\\n\\n- fix 'changed' for imported images which incorrect reported `false` for freshly imported images\", \n    \"title\": \"Rework imgadm module\"\n  }, \n  \"20536\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 61e6e7868c) last updated 2017/01/21 090405 (GMT +700)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\nlib/ansible/parsing/utils/jsonify.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 (devel 61e6e7868c) last updated 2017/01/21 09:04:05 (GMT +700)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nUse `jsonfile` cache plugin with configuration:\\r\\n```\\r\\ngathering = smart\\r\\nfact_caching = jsonfile\\r\\nfact_caching_connection = /tmp/test\\r\\n```\\r\\n\\r\\nThe cache file contains trailing space with lines end with comma (`,`), like this:\\r\\n\\r\\n![json_dump](http://i.imgur.com/Ib6q99N.png)\\r\\n\\r\\n(the `\\u00ac` character represents the end of line)\\r\\n\\r\\nThis PR adds `separators` to handle that trailing space. Also simplifies the unit test.\\r\\n\\r\\nAfter fixed:\\r\\n![fixed](http://i.imgur.com/6eFLB0E.png)\\r\\n\", \n    \"component_name\": \"lib/ansible/parsing/utils/jsonify.py\", \n    \"component_raw\": \"lib/ansible/parsing/utils/jsonify.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20536\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [], \n    \"module_match\": null, \n    \"summary\": \"Use `jsonfile` cache plugin with\", \n    \"title\": \"Fix jsonfile cache plugin adds trailing space at end of lines with commas\"\n  }, \n  \"20537\": {\n    \"ansible_version\": \"Future\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible-galaxy\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nFuture\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nLocal roles may depend on galaxy roles defined in `meta/main.yml`. `ansible-galaxy install -r` does not support this file format, although the value of the `dependencies` key appears to match that in a `requirements.yml` file\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```\\r\\n$ cat meta/main.yml\\r\\n\\r\\ngalaxy_info:\\r\\n  author: ome-devel@lists.openmicroscopy.org.uk\\r\\ndependencies:\\r\\n- role: openmicroscopy.basedeps\\r\\n```\\r\\n\\r\\n```\\r\\n$ ansible-galaxy install -r meta/main.yml`\\r\\n\\r\\n- downloading role 'dependencies', owned by \\r\\n [WARNING]: - dependencies was NOT installed successfully: Role has no field\\r\\nnamed u'owner'\\r\\n\\r\\nERROR! - you can use --ignore-errors to skip failed roles and finish processing the list.\\r\\n```\\r\\nProposed behaviour: Install all roles listed in the `dependencies` section of `meta/main.yml`, in this case `openmicroscopy.basedeps`\\r\\n\\r\\n##### BACKGROUND\\r\\n\\r\\n- [Galaxy dependencies file can be the role meta file](https://github.com/metacloud/molecule/pull/717#issuecomment-273455237)\\r\\n  This is the original motivation for this feature suggestion. When using [molecule](https://github.com/metacloud/molecule) for testing Ansible roles dependencies need to be in a requirements file. If this is a deliberate design decision it would be useful if the docs could be updated with an official description of the `meta/main.yml` file.\\r\\n- [Add ability to automatically download roles when running play](https://github.com/ansible/ansible/issues/12927)\\r\\n  This is a closely related feature request.\", \n    \"component_name\": \"ansible-galaxy\", \n    \"component_raw\": \"ansible-galaxy\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20537\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:galaxy/\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Local roles may depend on galaxy roles defined in `meta/main.yml`. `ansible-galaxy install -r` does not support this file format, although the value of the `dependencies` key appears to match that in a `requirements.yml` file\", \n    \"title\": \"ansible-galaxy should download dependencies in meta/main.yml\"\n  }, \n  \"20539\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nwin_service\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nThis change adds a boolean option to force stop or restart a service.\", \n    \"component_name\": \"win_service\", \n    \"component_raw\": \"win_service\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20539\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [], \n    \"module_match\": \"lib/ansible/modules/windows/win_service.ps1\", \n    \"summary\": \"This change adds a boolean option to force stop or restart a service.\", \n    \"title\": \"win_service: Add option to force stop or restart\"\n  }, \n  \"20542\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 61e6e7868c) last updated 2017/01/21 223104 (GMT +200)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nredhat_subscription\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel 61e6e7868c) last updated 2017/01/21 22:31:04 (GMT +200)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nCurrently it is possible to call the module with an AK but without org_id, which will lead to:\\r\\n```\\r\\nfatal: [vm]: FAILED! => {\\\"changed\\\": false, \\\"cmd\\\": \\\"subscription-manager register --activationkey ak-egolov-test1\\\", \\\"failed\\\": true, \\\"msg\\\": \\\"Error: Must provide --org with activation keys.\\\", \\\"rc\\\": 64, \\\"stderr\\\": \\\"Error: Must provide --org with activation keys.\\\\n\\\", \\\"stdout\\\": \\\"\\\", \\\"stdout_lines\\\": []}\\r\\n```\\r\\n\\r\\nthe docs should be updated to reflect that, and the ak param needs a proper dependency\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n    - name: register system against RHN\\r\\n      redhat_subscription:\\r\\n        state: present\\r\\n        username: \\\"{{ rhsm_username }}\\\"\\r\\n        password: \\\"{{ rhsm_password }}\\\"\\r\\n        activationkey: \\\"{{ rhsm_ak }}\\\"\\r\\n```\\r\\n##### EXPECTED RESULTS\\r\\n```\\r\\nfatal: [vm]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Missing arguments, If registering with an activationkey, must supply Organization ID\\\"}\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nfatal: [vm]: FAILED! => {\\\"changed\\\": false, \\\"cmd\\\": \\\"subscription-manager register --activationkey ak-egolov-test1\\\", \\\"failed\\\": true, \\\"msg\\\": \\\"Error: Must provide --org with activation keys.\\\", \\\"rc\\\": 64, \\\"stderr\\\": \\\"Error: Must provide --org with activation keys.\\\\n\\\", \\\"stdout\\\": \\\"\\\", \\\"stdout_lines\\\": []}\\r\\n```\", \n    \"component_name\": \"redhat_subscription\", \n    \"component_raw\": \"redhat_subscription\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20542\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/redhat_subscription.py\", \n    \"summary\": \"Currently it is possible to call the module with an AK but without org_id, which will lead to:\\n\\n```\\n\\nfatal: [vm]: FAILED! => {\\\"changed\\\": false, \\\"cmd\\\": \\\"subscription-manager register --activationkey ak-egolov-test1\\\", \\\"failed\\\": true, \\\"msg\\\": \\\"Error: Must provide --org with activation keys.\\\", \\\"rc\\\": 64, \\\"stderr\\\": \\\"Error: Must provide --org with activation keys.\\\\n\\\", \\\"stdout\\\": \\\"\\\", \\\"stdout_lines\\\": []}\\n\\n```\\n\\n\\n\\nthe docs should be updated to reflect that, and the ak param needs a proper dependency\", \n    \"title\": \"redhat_subscription: org_id is required when activationkey is used\"\n  }, \n  \"20543\": {\n    \"ansible_version\": \"ansible 2.2.1.0\", \n    \"body\": \"(Copying from https://github.com/ansible/ansible-modules-core/issues/5558 since I don't see it in this repo)\\r\\n<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\ndocker_container\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.1.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nThe single ansible_docker_container key is being scrubbed from the ansible_facts result value, due to the fix for CVE-2016-3096 from issue ansible/ansible#15925. This is due to the return value's fact key having a prefix used for docker connection vars (ansible_docker_).\\r\\n\\r\\nWe probably don't want to add exceptions to the CVE fix, so it seems that the only reasonable fix is a breaking change to docker_container's return value (renaming the fact to docker_container or something else, or not returning as a fact.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nUse the docker_container module in any way on affected versions and look at the output- it returns an empty ansible_facts dict instead of the actual module results.\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nModule return value as documented (including the ansible_docker_container subdict and data).\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nEmpty ansible_facts dictionary.\\r\\n\", \n    \"component_name\": \"docker_container\", \n    \"component_raw\": \"docker_container\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20543\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"summary\": \"The single ansible_docker_container key is being scrubbed from the ansible_facts result value, due to the fix for CVE-2016-3096 from issue ansible/ansible#15925. This is due to the return value's fact key having a prefix used for docker connection vars (ansible_docker_).\\n\\n\\n\\nWe probably don't want to add exceptions to the CVE fix, so it seems that the only reasonable fix is a breaking change to docker_container's return value (renaming the fact to docker_container or something else, or not returning as a fact.\", \n    \"title\": \"docker_container succeeds with empty result\"\n  }, \n  \"20545\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /home/user/confs/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n - Feature Idea\\r\\n(depend the point of view)\\r\\n\\r\\n##### COMPONENT NAME\\r\\n- Template/Vars\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /home/user/confs/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nAccess to {{ var[VAR] }} return var[VAR] without resolution if var[VAR] contains also variable like {{ other_var }}.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nIn _role/defaults/main.yml_\\r\\n```yaml\\r\\ngroup_A_name: \\\"mygroupname\\\"\\r\\n\\r\\nuser_A_groups:\\r\\n  - \\\"{{ group_A_name }}\\\"\\r\\n```\\r\\n\\r\\nIn _role/tasks/main.yml_\\r\\n```yaml\\r\\n- name: Test direct accesss\\r\\n  debug:\\r\\n    msg: \\\"{{ user_A_groups }} is OK\\\"\\r\\n# => return mygroupname\\r\\n\\r\\n- name: Test indirect access\\r\\n  debug:\\r\\n    msg: \\\"{{ vars['user_' ~ arg_user ~ '_groups'] }} fails\\\"\\r\\n  vars:\\r\\n    arg_user: 'A'\\r\\n# => return {{ group_A_name }}\\r\\n```\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nTASK [test : Test direct access] **********************************************\\r\\n\\r\\nok: [host] => {\\r\\n    \\\"msg\\\": \\\"['mygroupname'] is OK\\\"\\r\\n}\\r\\n\\r\\nTASK [test : Test indirect access] *********************************************\\r\\nok: [host] => {\\r\\n    \\\"msg\\\": \\\"['mygroupname'] fails\\\"\\r\\n}\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nTASK [test : Test direct access] **********************************************\\r\\n [WARNING]: Exception in safe_eval() on expr: ['mygroupname'] is OK (invalid expression (['mygroupname'] is OK))\\r\\n\\r\\nok: [host] => {\\r\\n    \\\"msg\\\": \\\"['mygroupname'] is OK\\\"\\r\\n}\\r\\n\\r\\nTASK [test : Test indirect access] *********************************************\\r\\nok: [host] => {\\r\\n    \\\"msg\\\": \\\"['{{ group_A_name }}'] fails\\\"\\r\\n}\\r\\n```\\r\\n\\r\\n##### QUICK & DIRTY SOLUTION\\r\\nIn https://github.com/ansible/ansible/blob/devel/lib/ansible/template/vars.py line 89~90\\r\\nReplace\\r\\n``` py\\r\\n        if isinstance(variable, dict) and varname == \\\"vars\\\" or isinstance(variable, HostVars) or hasattr(variable, '__UNSAFE__'):\\r\\n            return variable\\r\\n```\\r\\nby\\r\\n``` py\\r\\n        if isinstance(variable, dict) and varname == \\\"vars\\\" or isinstance(variable, HostVars) or hasattr(variable, '__UNSAFE__'):\\r\\n            def foobar(obj, item):\\r\\n                return self._templar.template(dict.__getitem__(obj, item))\\r\\n            cls = type('',(dict,), {'__getitem__': foobar }\\r\\n            return cls(variable)\\r\\n```\", \n    \"component_name\": \"template/vars\", \n    \"component_raw\": \"- Template/Vars\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20545\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Access to {{ var[VAR] }} return var[VAR] without resolution if var[VAR] contains also variable like {{ other_var }}.\", \n    \"title\": \"Resolving {{ vars[VAR] }} when vars[VAR] contains {{ other_var }}\"\n  }, \n  \"20546\": {\n    \"ansible_version\": \"ansible 2.1.1.0\", \n    \"body\": \"I'm reissueing this duplicate of https://github.com/ansible/ansible-modules-extras/issues/3442 here as repository `ansible-modules-extras` had been locked.\\r\\n\\r\\n##### ISSUE TYPE\\r\\nBug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nnpm module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.1.1.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n```\\r\\n  vars:\\r\\n    node_branch: '4.x'\\r\\n    node_version: '4.6.2-1nodesource1~trusty1'\\r\\n\\r\\n  tasks:\\r\\n    - name: node | Register NodeSource signing key\\r\\n      become: true\\r\\n      apt_key: url=https://deb.nodesource.com/gpgkey/nodesource.gpg.key state=present\\r\\n\\r\\n    - name: node | Add NodeSource repository\\r\\n      become: true\\r\\n      apt_repository: repo='{{item}}' state=present\\r\\n      with_items:\\r\\n        - deb https://deb.nodesource.com/node_{{node_branch}} trusty main\\r\\n        - deb-src https://deb.nodesource.com/node_{{node_branch}} trusty main\\r\\n\\r\\n    - name: node | Install Node.js\\r\\n      become: true\\r\\n      apt: name='nodejs={{node_version}}' update_cache=yes state=present\\r\\n\\r\\n    - name: node | Install pm2\\r\\n      become: true\\r\\n      npm: name=pm2 global=yes version=2.1.4\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n```\\r\\nnodejs v4.6.2 LTS shipping with npm v2.5.11\\r\\nMac OS X 10.11.6 (local)\\r\\nUbuntu 14.04 LTS (provisioning target)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nIf a module is installed globally the ownership of npm's cache (the `.npm` folder) after provisioning is not correct which causes subsequent errors and strange behaviors due to wrong permissions on that folder.\\r\\n\\r\\nAfter provisioning with Ansible's npm module the npm cache is populated at `/root/.npm` but with ownership `deploy:deploy` where `deploy` is the user that is used for SSH-login on the remote machine.\\r\\n\\r\\nAs global installation of npm modules requires root privileges `become: true` is set and causes invocation via `sudo`. I found out that in these cases Ansible invokes `npm` via `sudo -H ...` which causes `$HOME` to be changed to `/root`. This might cause population of `.npm` folder at `$HOME/.npm` == `/root/.npm` but with ownership of the user defined by `$SUDO_USER` which is still `deploy`.\\r\\nUnfortunately there is no proper documentation on how npm handles installs via sudo, so this is only a guess from my side.\\r\\n\\r\\nNevertheless this can also be reproduced manually via `deploy:~$ sudo -H npm install -g pm2` which causes the same behavior. If the flag `-H` is omitted everything is fine as the `.npm` folder gets populated at `/home/deploy/.npm` with ownership `deploy:deploy` but I do not see any configuration option for Ansible to influence the parameters for the sudo-invocation.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nsee above\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nnpm's cache should be populated at `/home/deploy/.npm` with ownership `deploy:deploy`.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nnpm's cache is populated at `/root/.npm` with ownership `deploy:deploy`.\\r\\n```\\r\\nroot:~# ls -la\\r\\n-rw-------  1 root   root   6893 Nov 11 07:26 .bash_history\\r\\n-rw-r--r--  1 root   root   3106 Feb 20  2014 .bashrc\\r\\ndrwxr-xr-x  3 deploy deploy 4096 Nov 10 21:01 .npm/\\r\\n-rw-r--r--  1 root   root    141 Nov  7 19:55 .profile\\r\\ndrwx------  2 root   root   4096 Jul 29 10:00 .ssh/\\r\\n-rw-------  1 root   root   3787 Nov  9 20:42 .viminfo\\r\\n```\\r\\n\", \n    \"component_name\": \"npm\", \n    \"component_raw\": \"npm module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20546\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"bug\", \n      \"module\", \n      \"waiting_on_maintainer\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/language/npm.py\", \n    \"summary\": \"If a module is installed globally the ownership of npm's cache (the `.npm` folder) after provisioning is not correct which causes subsequent errors and strange behaviors due to wrong permissions on that folder.\\n\\n\\n\\nAfter provisioning with Ansible's npm module the npm cache is populated at `/root/.npm` but with ownership `deploy:deploy` where `deploy` is the user that is used for SSH-login on the remote machine.\\n\\n\\n\\nAs global installation of npm modules requires root privileges `become: true` is set and causes invocation via `sudo`. I found out that in these cases Ansible invokes `npm` via `sudo -H ...` which causes `$HOME` to be changed to `/root`. This might cause population of `.npm` folder at `$HOME/.npm` == `/root/.npm` but with ownership of the user defined by `$SUDO_USER` which is still `deploy`.\\n\\nUnfortunately there is no proper documentation on how npm handles installs via sudo, so this is only a guess from my side.\\n\\n\\n\\nNevertheless this can also be reproduced manually via `deploy:~$ sudo -H npm install -g pm2` which causes the same behavior. If the flag `-H` is omitted everything is fine as the `.npm` folder gets populated at `/home/deploy/.npm` with ownership `deploy:deploy` but I do not see any configuration option for Ansible to influence the parameters for the sudo-invocation.\", \n    \"title\": \".npm cache gets populated at /root with ownership of sudo user\"\n  }, \n  \"20548\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 61e6e7868c) last updated 2017/01/21 223104 (GMT +200)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nredhat_subscription\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel 61e6e7868c) last updated 2017/01/21 22:31:04 (GMT +200)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n* Fail cleanly when a system does not have subscription-manager installed (like a CentOS machine)\\r\\n* Document and enforce the need to pass `org_id` when one wants to use an activation key (Fixes: #20542)\\r\\n\\r\\nbefore 1:\\r\\n```\\r\\nfatal: [vm]: FAILED! => {\\\"changed\\\": false, \\\"cmd\\\": \\\"subscription-manager identity\\\", \\\"failed\\\": true, \\\"msg\\\": \\\"[Errno 2] No such file or directory\\\", \\\"rc\\\": 2}\\r\\n```\\r\\n\\r\\nafter 1:\\r\\n```\\r\\nfatal: [vm]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Could not find subscription-manager. Please ensure it is installed.\\\"}\\r\\n```\\r\\n\\r\\nbefore 2:\\r\\n```\\r\\nfatal: [vm]: FAILED! => {\\\"changed\\\": false, \\\"cmd\\\": \\\"subscription-manager register --activationkey ak-egolov-test1\\\", \\\"failed\\\": true, \\\"msg\\\": \\\"Error: Must provide --org with activation keys.\\\", \\\"rc\\\": 64, \\\"stderr\\\": \\\"Error: Must provide --org with activation keys.\\\\n\\\", \\\"stdout\\\": \\\"\\\", \\\"stdout_lines\\\": []}\\r\\n```\\r\\n\\r\\nafter 2:\\r\\n```\\r\\nfatal: [vm]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Missing arguments, If registering with an activationkey, must supply Organization ID\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"redhat_subscription\", \n    \"component_raw\": \"redhat_subscription\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20548\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"core_review\", \n      \"module\", \n      \"needs_triage\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/redhat_subscription.py\", \n    \"summary\": \"* Fail cleanly when a system does not have subscription-manager installed (like a CentOS machine)\\n\\n* Document and enforce the need to pass `org_id` when one wants to use an activation key (Fixes: #20542)\\n\\n\\n\\nbefore 1:\\n\\n```\\n\\nfatal: [vm]: FAILED! => {\\\"changed\\\": false, \\\"cmd\\\": \\\"subscription-manager identity\\\", \\\"failed\\\": true, \\\"msg\\\": \\\"[Errno 2] No such file or directory\\\", \\\"rc\\\": 2}\\n\\n```\\n\\n\\n\\nafter 1:\\n\\n```\\n\\nfatal: [vm]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Could not find subscription-manager. Please ensure it is installed.\\\"}\\n\\n```\\n\\n\\n\\nbefore 2:\\n\\n```\\n\\nfatal: [vm]: FAILED! => {\\\"changed\\\": false, \\\"cmd\\\": \\\"subscription-manager register --activationkey ak-egolov-test1\\\", \\\"failed\\\": true, \\\"msg\\\": \\\"Error: Must provide --org with activation keys.\\\", \\\"rc\\\": 64, \\\"stderr\\\": \\\"Error: Must provide --org with activation keys.\\\\n\\\", \\\"stdout\\\": \\\"\\\", \\\"stdout_lines\\\": []}\\n\\n```\\n\\n\\n\\nafter 2:\\n\\n```\\n\\nfatal: [vm]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Missing arguments, If registering with an activationkey, must supply Organization ID\\\"}\\n\\n```\", \n    \"title\": \"fixes for redhat_subscription module\"\n  }, \n  \"20549\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\noVirt host module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nAllow creating a host with 'nested virtualization' checkbox enabled, via oVirt's Ansible modules.\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"ovirt host\", \n    \"component_raw\": \"oVirt host module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20549\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/misc/ovirt.py\", \n    \"summary\": \"Allow creating a host with 'nested virtualization' checkbox enabled, via oVirt's Ansible modules.\", \n    \"title\": \"oVirt: allow creating a host with nested virtualization enabled\"\n  }, \n  \"20551\": {\n    \"ansible_version\": \"ansible 2.1.2.0\\nconfig file = /home/pasha/Projects/Ansible.cfg/ansible.cfg\\nconfigured module search path = [modules/]\", \n    \"body\": \"Moved from: https://github.com/ansible/ansible-modules-extras/issues/3338\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`filesystem` module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.1.2.0\\r\\n  config file = /home/pasha/Projects/Ansible.cfg/ansible.cfg\\r\\n  configured module search path = ['modules/']\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nDoes not have sence\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nFedora repos\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nTask:\\r\\n```\\r\\n- name: Create btrfs filesystem\\r\\n  filesystem: fstype=btrfs dev='/dev/mapper/centos-home' opts='--label srv'\\r\\n```\\r\\nwork as expected, but:\\r\\n```\\r\\n- name: Create btrfs filesystem\\r\\n  filesystem: fstype=btrfs dev='/dev/sda3 /dev/sdb' opts='-d single --label srv'\\r\\n```\\r\\nProduce error: \\r\\n```\\r\\n**Device /dev/sda3 /dev/sdb not found.**\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n`Btrfs` (and some other like `zfs` too) allow create filesystems across multiple devices - https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devices\\r\\n\\r\\nSo, it seams reasonable make `dev` parameter the list type or just allow pass any string.\\r\\n\", \n    \"component_name\": \"filesystem\", \n    \"component_raw\": \"`filesystem` module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20551\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/filesystem.py\", \n    \"summary\": \"Task:\\n\\n```\\n\\n- name: Create btrfs filesystem\\n\\n  filesystem: fstype=btrfs dev='/dev/mapper/centos-home' opts='--label srv'\\n\\n```\\n\\nwork as expected, but:\\n\\n```\\n\\n- name: Create btrfs filesystem\\n\\n  filesystem: fstype=btrfs dev='/dev/sda3 /dev/sdb' opts='-d single --label srv'\\n\\n```\\n\\nProduce error: \\n\\n```\\n\\n**Device /dev/sda3 /dev/sdb not found.**\\n\\n```\", \n    \"title\": \"filesystem does not support multiple devices (on btrfs f.e.) #3338\"\n  }, \n  \"20552\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\ntests\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nautomated integration tests for cloudstack\\r\\n\\r\\n/cc @gundalow @mattclay\", \n    \"component_name\": \"tests\", \n    \"component_raw\": \"tests\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20552\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"needs_revision\", \n      \"needs_triage\", \n      \"test\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"automated integration tests for cloudstack\\n\\n\\n\\n/cc @gundalow @mattclay\", \n    \"title\": \"automated integration tests for cloudstack\"\n  }, \n  \"20553\": {\n    \"ansible_version\": \"nsible 2.3.0 (devel 06e30485ea) last updated 2017/01/16 200334 (GMT +000)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [u/usr/share/custom_modules]\\nThis has existed in this module in previous 2.x releases as well.  I confirmed that this is an issue in the latest devel branch as of this writing.\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nwin_acl\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nnsible 2.3.0 (devel 06e30485ea) last updated 2017/01/16 20:03:34 (GMT +000)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = [u'/usr/share/custom_modules']\\r\\n\\r\\nThis has existed in this module in previous 2.x releases as well.  I confirmed that this is an issue in the latest devel branch as of this writing.\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\npipelining=True\\r\\nhost_key_checking = False\\r\\ntimeout = 30\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nOn Windows 2012 only, using the win_acl module on directories where the group **APPLICATION PACKAGE AUTHORITY\\\\ALL APPLICATION PACKAGES** is already set fails with error\\\"\\r\\n\\r\\nThe quick list of dirs where ALL APPLICATION PACKAGES is pre-applied:\\r\\n- c:\\\\Program Files\\r\\n- c:\\\\Program Files (x86)\\r\\n- c:\\\\Windows\\r\\n\\r\\nThis does not occur in Windows 2008 hosts because APPLICATION PACKAGE AUTHORITY\\\\ALL APPLICATION PACKAGES isn't applied on these directories (introduced in 2012, I assume)\\r\\n\\r\\nNote that I have also added some comments to existing [ Issue #15737](https://github.com/ansible/ansible/issues/15737#issuecomment-274369512) and at the bottom.  I did not document them here because I have provided enough info as a comment there. I discovered these bugs together.\\r\\n\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n1. Create directory _C:\\\\Program Files\\\\Test_\\r\\n2. Run the following playbook to set the built in group Users to have FullControl on the directory\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n---\\r\\n- name: Test win_acl\\r\\n  hosts: win2008.mycompany.com:win2012.mycompany.com\\r\\n  gather_facts: false\\r\\n\\r\\n  tasks:\\r\\n    - name: test perms\\r\\n      win_acl:\\r\\n        path: 'C:\\\\Program Files\\\\Test'\\r\\n        user: Users\\r\\n        rights: FullControl\\r\\n        type: allow\\r\\n        state: present\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nI expected that Users has FullControl on C:\\\\Program Files\\\\Test instead of Read (default)\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nPermissions can't be set.\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nan error occured when attempting to present FullControl permission(s) on C:\\\\\\\\Program Files\\\\\\\\Test for Users\\r\\n```\\r\\nThe real error is suppressed because the exception handler prints a generic message and does not pass on the message from the exception object.  If you modify the code to pass on the exception itself, the real message is:\\r\\n```\\r\\n{\\\"changed\\\":false,\\\"msg\\\":\\\"Exception calling \\\\\\\"Translate\\\\\\\" with \\\\\\\"1\\\\\\\" argument(s): \\\\\\\"Some or all identity references could not be translated.\\\\\\\"\\\",\\\"failed\\\":true}\\r\\n```\\r\\n\\r\\nThis is apparently a bug with the Win32 API when trying to translate the fully qualified identity reference _APPLICATION PACKAGE AUTHORITY\\\\ALL APPLICATION PACKAGES_ to a SID.  It seems to work if you translate the shortened _ALL APPLICATION PACKAGES_.\\r\\n\\r\\nIt's been documented in a couple of different blogs\\r\\n- https://github.com/djberg96/win32-security/issues/6\\r\\n- https://tickets.puppetlabs.com/browse/PUP-2985\\r\\n\\r\\n#### Additional Issue - Set-ACL : The security identifier is not allowed to be the owner of this object.\\r\\nI have also found an issue in this module that I have commented separately in [Issue #15737](https://github.com/ansible/ansible/issues/15737#issuecomment-274369512).  There are details posted there  \", \n    \"component_name\": \"win_acl\", \n    \"component_raw\": \"win_acl\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20553\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_acl.ps1\", \n    \"summary\": \"On Windows 2012 only, using the win_acl module on directories where the group **APPLICATION PACKAGE AUTHORITY\\\\ALL APPLICATION PACKAGES** is already set fails with error\\\"\\n\\n\\n\\nThe quick list of dirs where ALL APPLICATION PACKAGES is pre-applied:\\n\\n- c:\\\\Program Files\\n\\n- c:\\\\Program Files (x86)\\n\\n- c:\\\\Windows\\n\\n\\n\\nThis does not occur in Windows 2008 hosts because APPLICATION PACKAGE AUTHORITY\\\\ALL APPLICATION PACKAGES isn't applied on these directories (introduced in 2012, I assume)\\n\\n\\n\\nNote that I have also added some comments to existing [ Issue #15737](https://github.com/ansible/ansible/issues/15737#issuecomment-274369512) and at the bottom.  I did not document them here because I have provided enough info as a comment there. I discovered these bugs together.\", \n    \"title\": \"win_acl - Can't set perms on \\\"C:\\\\Program Files\\\" due to ALL APPLICATION PACKAGES; Set-ACL can't set owner\"\n  }, \n  \"20555\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 06e30485ea) last updated 2017/01/16 200334 (GMT +000)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [u/usr/share/custom_modules]\\nThis has existed in this module in previous 2.x releases as well.  I confirmed that this is an issue in the latest devel branch as of this writing.\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nwin_acl\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel 06e30485ea) last updated 2017/01/16 20:03:34 (GMT +000)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = [u'/usr/share/custom_modules']\\r\\n\\r\\nThis has existed in this module in previous 2.x releases as well.  I confirmed that this is an issue in the latest devel branch as of this writing.\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nFixes Issues #20553 and #15737\\r\\n\\r\\n\\r\\n##### Setting permissions where ALL APPLICATION PACKAGES group applied fails (Windows 2012)\\r\\n\\r\\nThe Security.Principal.NTAccount for APPLICATION PACKAGE AUTHORITY\\\\ALL APPLICATION PACKAGES can't be translated to its SID (Security.Principal.SecurityIdentifier).  This is an issue with the Win32 API and is reproducible using PowerShell and other tools like Sysinternals psgetsid.  This issue and its resolution (workaround) has been documented on several blogs.\\r\\n\\r\\n- https://github.com/djberg96/win32-security/issues/6\\r\\n- https://tickets.puppetlabs.com/browse/PUP-2985\\r\\n\\r\\nThis issue occurs on directories where this built-in account is applied in Windows 2012 such as the following dirs:\\r\\n- c:\\\\Program Files\\r\\n- c:\\\\Program Files (x86)\\r\\n- c:\\\\Windows\\r\\n\\r\\nI went through Microsoft's list of Well-Known SIDS to see if there were other accounts that could not map to their SID using their fully qualified name, but this is the only one that does not map from NTAccount to SecurityIdentifier.  There were some SIDS that didn't exist in my environment so I could not test them.  The fix instantiates a new NTAccount object using the short name in the constructor so the mapping to the SID can be done.\\r\\n\\r\\n##### Error: Set-ACL : The security identifier is not allowed to be the owner of this object.\\r\\n\\r\\nThis issue occurs when the user executing the module from the control server attempts to set permissions using win_acl on the target directory when owned by a group in which the user is not a member.\\r\\n\\r\\nThis issue is partially documented in several blogs, though I dug further and discovered it only seems to manifest itself when using Set-ACL on a dir where another group you're not in owns it.  .\\r\\n\\r\\n- http://stackoverflow.com/questions/6622124/why-does-set-acl-on-the-drive-root-try-to-set-ownership-of-the-object\\r\\n- http://www.mickputley.net/2015/11/set-acl-security-identifier-is-not.html\\r\\n\\r\\nAt first I used the suggested work-around in the code by replacing\\r\\n\\r\\n```\\r\\n$objACL = Get-ACL $path\\r\\n```\\r\\nwith\\r\\n```\\r\\n$objACL = (Get-Item $Path).GetAccessControl('Access')\\r\\n```\\r\\n\\r\\nhowever it seems .NET 4.6.1 apparently nullifies this workaround - after the upgrade to .NET 4.6.1 I started to receive the error again.  This did not occur pre-4.6.1.  To compensate, I opted to create a function where the ACEs could be extracted from the security descriptor and used in Set-ACL.  This avoids the issue by applying only ACEs and not any owner information.\\r\\n\\r\\n\\r\\n##### More Meaningful Exception Messages (not a bug)\\r\\nI took the opportunity to enhance the exception handling so that any errors occurring in PowerShell are passed through the exception message. The generic messages hid the useful information underneath and was only visible when generating the module and keeping it on the remote target boxes with ANSIBLE_KEEP_REMOTE_FILES.\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n**_Sample Task for ALL APPLICATION_PACKAGES issue_**\\r\\n```\\r\\n# Create\\r\\n- name: test perms\\r\\n      win_acl:\\r\\n        path: 'C:\\\\Program Files\\\\Test'\\r\\n        user: Users\\r\\n        rights: FullControl\\r\\n        type: allow\\r\\n        state: present\\r\\n\\r\\n```\\r\\n**Before:**\\r\\n```\\r\\nfatal: [win2012.mycompany.com]: FAILED! => {\\r\\n    \\\"changed\\\": false,\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_acl\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"an error occured when attempting to present FullControl permission(s) on C:\\\\\\\\Program Files\\\\\\\\Test for Users\\\"\\r\\n}\\r\\n```\\r\\n\\r\\nThe existing exception handling hides the error from PowerShell, which is \\r\\n```\\r\\nException calling \\\"Translate\\\" with \\\"1\\\" argument(s): \\\"Some or all identity references could not be translated.\\r\\n```\\r\\n\\r\\n**After:**\\r\\n```\\r\\nchanged: [win2012.mycompany.com] => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_acl\\\"\\r\\n    }\\r\\n}\\r\\n\\r\\nThe specified ACL is set.\\r\\n\\r\\n```\\r\\n\\r\\n_**Sample Task for Set-ACL issue**_\\r\\n**Before:**\\r\\n```\\r\\n# Assign ownership of d:\\\\win_acl_test to a new empty group before running\\r\\ntasks:\\r\\n    - name: test perms\\r\\n      win_acl:\\r\\n        path: 'd:\\\\win_acl_test'\\r\\n        user: Guests\\r\\n        rights: Read\\r\\n        type: allow\\r\\n        state: present\\r\\n\\r\\n#Note that for me this works from Ansible but fails in PowerShell.  Others have reported an error, and I believe this is related.\\r\\n\\r\\nSet-ACL : The security identifier is not allowed to be the owner of this object.\\r\\nAt C:\\\\Users\\\\myuser\\\\AppData\\\\Local\\\\Temp\\\\ansible-tmp-1484854478.89-6843170110905\\\\win_acl.ps1:404 char:13\\r\\n+             Set-ACL $path $objACL\\r\\n+             ~~~~~~~~~~~~~~~~~~~~~\\r\\n    + CategoryInfo          : InvalidOperation: (D:\\\\win_acl_test:String) [Set-Acl], InvalidOperationException\\r\\n    + FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.SetAclCommand\\r\\n\\r\\n{\\\"changed\\\":true}\\r\\n```\\r\\n**After:**\\r\\n```\\r\\n# Copying the ACE's avoids the issue with attempting to set the owner\\r\\nchanged: [win2012.mycompany.com] => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_name\\\": \\\"win_acl\\\"\\r\\n    }\\r\\n}\\r\\n```\\r\\n\", \n    \"component_name\": \"win_acl\", \n    \"component_raw\": \"win_acl\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20555\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"core_review\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_acl.ps1\", \n    \"summary\": \"Fixes Issues #20553 and #15737\\n\\n\\n\\n\\n\\n##### Setting permissions where ALL APPLICATION PACKAGES group applied fails (Windows 2012)\\n\\n\\n\\nThe Security.Principal.NTAccount for APPLICATION PACKAGE AUTHORITY\\\\ALL APPLICATION PACKAGES can't be translated to its SID (Security.Principal.SecurityIdentifier).  This is an issue with the Win32 API and is reproducible using PowerShell and other tools like Sysinternals psgetsid.  This issue and its resolution (workaround) has been documented on several blogs.\\n\\n\\n\\n- https://github.com/djberg96/win32-security/issues/6\\n\\n- https://tickets.puppetlabs.com/browse/PUP-2985\\n\\n\\n\\nThis issue occurs on directories where this built-in account is applied in Windows 2012 such as the following dirs:\\n\\n- c:\\\\Program Files\\n\\n- c:\\\\Program Files (x86)\\n\\n- c:\\\\Windows\\n\\n\\n\\nI went through Microsoft's list of Well-Known SIDS to see if there were other accounts that could not map to their SID using their fully qualified name, but this is the only one that does not map from NTAccount to SecurityIdentifier.  There were some SIDS that didn't exist in my\", \n    \"title\": \"Issue #20553 - win_acl Can't set perms on \\\"C:\\\\Program Files\\\" due to A\\u2026\"\n  }, \n  \"20557\": {\n    \"ansible_version\": \"All versions.\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\n\\r\\nAction plugins.\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\nAll versions.\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThere seem to be no official documentation on how to develop action plugins.\\r\\nThey are briefly mentioned in http://docs.ansible.com/ansible/dev_guide/developing_plugins.html, without any specific information.\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nPlugin development, testing, debugging and supported APIs should be documented.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\nOne needs to resort to reading examples in the source tree, without any documentation, docstrings, statement of purpose of each plugin, and so on. It is unclear what classes and methods are part of the supported API.\\r\\nIt is hard to iterate on plugin development.\", \n    \"component_name\": \"action plugins.\", \n    \"component_raw\": \"Action plugins.\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20557\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:plugins/action\", \n      \"docs_report\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"There seem to be no official documentation on how to develop action plugins.\\n\\nThey are briefly mentioned in http://docs.ansible.com/ansible/dev_guide/developing_plugins.html, without any specific information.\", \n    \"title\": \"Documentation on how to develop action plugins\"\n  }, \n  \"20559\": {\n    \"ansible_version\": \"ansible 2.3.0 (refactor_ios_config_network_connection 784bd58c4a) last updated 2017/01/23 104435 (GMT +200)\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n\\r\\niosxr_config\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (refactor_ios_config_network_connection 784bd58c4a) last updated 2017/01/23 10:44:35 (GMT +200)\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nRefactor iosxr_config to make use of network_connection plugin\", \n    \"component_name\": \"iosxr_config\", \n    \"component_raw\": \"iosxr_config\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20559\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [], \n    \"module_match\": \"lib/ansible/modules/network/iosxr/iosxr_config.py\", \n    \"summary\": \"Refactor iosxr_config to make use of network_connection plugin\", \n    \"title\": \"Refactor iosxr_config to make use of network_connection plugin\"\n  }, \n  \"20563\": {\n    \"ansible_version\": \"ansible 2.3.0 (master 60d6a74d84) last updated 2016/11/18 115140 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n \\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nlib/ansible/modules/utilities/helper/_accelerate.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (master 60d6a74d84) last updated 2016/11/18 11:51:40 (GMT +200)\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nRed Hat Enterprise Linux Server release 6.3 (Santiago)\\r\\n\\r\\n##### SUMMARY\\r\\nLine 182 of _accelerate.py contains the code\\r\\n```\\r\\nint('O22', 8)\\r\\n```\\r\\nwith the letter O instead of the digit 0. Thus, the daemon crashes by throwing the corresponding exception.\\r\\n\\r\\nVersion 2.2.0 of ansible-modules already contained this bug.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nAny play that uses the Accelerated Mode\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\n- name: Test\\r\\n  hosts: testhost\\r\\n  accelerate: True\\r\\n\\r\\n  tasks:\\r\\n    - debug: msg=\\\"Hello, World!\\\"\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nAccelerate daemon gets started in background and debug statement is executed.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTASK [debug] ****************************************************************************************************************************************************************************************\\r\\ntask path: /path/to/test.yml:10\\r\\n<localhost> attempting connection to localhost via the accelerated port 5099\\r\\n<localhost> connection to localhost failed, retrying...\\r\\n<localhost> connection to localhost failed, retrying...\\r\\n<localhost> connection to localhost failed, retrying...\\r\\n<localhost> Could not connect via the accelerated connection, exceeded # of tries\\r\\nUsing module file /path/to/ansible/lib/ansible/modules/utilities/helper/_accelerate.py\\r\\n<localhost> ESTABLISH CONNECTION FOR USER: None on PORT 22 TO localhost\\r\\n<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo $HOME/.ansible/tmp/ansible-tmp-1485179064.17-193399636063625 `\\\" && echo ansible-tmp-1485179064.17-193399636063625=\\\"` echo $HOME/.ansible/tmp/ansible-tmp-1485179064.17-193399636063625 `\\\" ) && sleep 0'\\r\\n<localhost> PUT /tmp/tmp5FqlEW TO /home/yxwytz/.ansible/tmp/ansible-tmp-1485179064.17-193399636063625/_accelerate.py\\r\\n<localhost> EXEC /bin/sh -c 'chmod u+x /home/yxwytz/.ansible/tmp/ansible-tmp-1485179064.17-193399636063625/ /home/yxwytz/.ansible/tmp/ansible-tmp-1485179064.17-193399636063625/_accelerate.py && sleep 0'\\r\\n<localhost> EXEC /bin/sh -c '/usr/bin/python /home/yxwytz/.ansible/tmp/ansible-tmp-1485179064.17-193399636063625/_accelerate.py && sleep 0'\\r\\n<localhost> attempting connection to localhost via the accelerated port 5099\\r\\n<localhost> connection to localhost failed, retrying...\\r\\n<localhost> connection to localhost failed, retrying...\\r\\n<localhost> connection to localhost failed, retrying...\\r\\n<localhost> Could not connect via the accelerated connection, exceeded # of tries\\r\\nfatal: [localhost]: FAILED! => {\\r\\n    \\\"failed\\\": true,\\r\\n    \\\"msg\\\": \\\"Failed to connect to localhost on the accelerated port 5099\\\"\\r\\n}\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n    \"component_raw\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20563\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/helper/_accelerate.py\", \n    \"summary\": \"Line 182 of _accelerate.py contains the code\\n\\n```\\n\\nint('O22', 8)\\n\\n```\\n\\nwith the letter O instead of the digit 0. Thus, the daemon crashes by throwing the corresponding exception.\\n\\n\\n\\nVersion 2.2.0 of ansible-modules already contained this bug.\", \n    \"title\": \"Typo in _accelerate.py lets ssh daemon crash instantaniously\"\n  }, \n  \"20564\": {\n    \"ansible_version\": \"devel\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvmware_guest\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\ndevel\\r\\n\\r\\n##### SUMMARY\\r\\nAdd support for graceful guest shutdown/reboot operations.\\r\\nfixes issue #3491 \", \n    \"component_name\": \"vmware_guest\", \n    \"component_raw\": \"vmware_guest\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20564\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"feature\", \n      \"module\", \n      \"needs_rebase\", \n      \"needs_revision\", \n      \"vmware\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/vmware/vmware_guest.py\", \n    \"summary\": \"Add support for graceful guest shutdown/reboot operations.\\n\\nfixes issue #3491\", \n    \"title\": \"vmware_guest - Add graceful guest shutdown/reboot support\"\n  }, \n  \"20566\": {\n    \"ansible_version\": \"current devel branch\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nvault, crypto components\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\ncurrent devel branch\\r\\n\\r\\n##### SUMMARY\\r\\nThis PR replaces PyCrypto, a largely moribund project written in poorly vetted bespoke C (with multiple outstanding CVEs), with pyca/cryptography.\\r\\n\\r\\npyca/cryptography is implicitly a dependency in many cases through paramiko (2.0+) as well as the new openssl_publickey module, which requires pyOpenSSL 16.0+. Additionally, pyca/cryptography is already presented as an optional dependency for better performance with Vault.\\r\\n\\r\\nThis commit leverages cryptography's padding module, constant time comparisons, fork safety, and block cipher constructs to reduce the amount of code ansible needs to maintain. Otherwise, I have attempted to minimize refactoring to ease review. Future PRs could further simplify several things.\\r\\n\\r\\nWhile the code changes are only moderate, this is a significant dependency change. cryptography leverages OpenSSL/LibreSSL, so users on Linux will need to have the development headers for OpenSSL to be able to successfully install. This is an increased burden over the existing PyCrypto dependency (which only requires a C compiler). There are tentative plans to offer a binary wheel using `manylinux1` in the future, but that is not yet available. On Mac and Windows, binary wheels ship today so users simply need to have an up-to-date pip. Of course, since many users are already doing this to obtain paramiko 2.0+ the burden isn't too high. cryptography is also packaged by every major linux distribution, further reducing the challenge.\\r\\n\\r\\nIf this PR is accepted a future PR could easily remove the optional pyOpenSSL dependency and directly utilize cryptography for the public key module.\\r\\n\\r\\nFull disclosure: I am one of the authors of pyca/cryptography. I strongly believe PyCrypto should no longer be used, but I do have a horse in this race :smile:\", \n    \"component_name\": \"vault crypto components\", \n    \"component_raw\": \"vault, crypto components\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20566\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [], \n    \"module_match\": \"lib/ansible/modules/cloud/amazon/ec2_win_password.py\", \n    \"summary\": \"This PR replaces PyCrypto, a largely moribund project written in poorly vetted bespoke C (with multiple outstanding CVEs), with pyca/cryptography.\\n\\n\\n\\npyca/cryptography is implicitly a dependency in many cases through paramiko (2.0+) as well as the new openssl_publickey module, which requires pyOpenSSL 16.0+. Additionally, pyca/cryptography is already presented as an optional dependency for better performance with Vault.\\n\\n\\n\\nThis commit leverages cryptography's padding module, constant time comparisons, fork safety, and block cipher constructs to reduce the amount of code ansible needs to maintain. Otherwise, I have attempted to minimize refactoring to ease review. Future PRs could further simplify several things.\\n\\n\\n\\nWhile the code changes are only moderate, this is a significant dependency change. cryptography leverages OpenSSL/LibreSSL, so users on Linux will need to have the development headers for OpenSSL to be able to successfully install. This is an increased burden over the existing PyCrypto dependency (which only requires a C compiler). There are tentative plans to offer a binary wheel using `manylinux1` in the future, but that is not yet available. On Mac and Windows, binary wheels ship today so users simply need to have an up-to-date pip. Of course, since many users are already doing this to obtain paramiko 2.0+ the burden isn't too high. cryptography is also packaged by every major linux distribution, further reducing the challenge.\\n\\n\\n\\nIf this PR is accepted a future PR could easily remove the optional pyOpenSSL dependency and directly utilize cryptography for the public key module.\\n\\n\\n\\nFull disclosure: I am one of the authors of pyca/cryptography. I strongly believe PyCrypto should no longer be used, but I do have a horse in this race :smile:\", \n    \"title\": \"Replace PyCrypto with pyca/cryptography\"\n  }, \n  \"20567\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nvars\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\\r\\nfixes #4816 \", \n    \"component_name\": \"vars\", \n    \"component_raw\": \"vars\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20567\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:executor/task_queue_manager\", \n      \"c:utils/vars\", \n      \"feature\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"```\\n\\n\\n\\n```\\n\\nfixes #4816\", \n    \"title\": \"Warn reserved\"\n  }, \n  \"20568\": {\n    \"ansible_version\": \"ansible 2.2.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nshell module with {% raw %} tags\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nN/A\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A (CentOS 7.2 shouldn't be platform specific)\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nThis is quite meta .. but I will try and explain.\\r\\n\\r\\nWe use the ansible shell command to run some commands against docker hosts which uses dockers --format feature that feature relies on GO template engine. Naturally we see conflicting behaviour here due to both jinja2 and go using '{{' as delimeters. AFAIK neither of these tools currently support switching delimeters but I may be wrong as that would be one way we could work around this..\\r\\n\\r\\nWe pass a {% raw %}{% endraw %} wrapped go template to a shell module calling docker like:\\r\\n```\\r\\n  - name: Count running images to check if down scaling is necessary\\r\\n    shell:\\r\\n      \\\"docker ps -a --no-trunc --filter name=^/{{artifact.namespace}}-{{ artifact.name }} --format='{% raw %}{{.ID}},{{.Image}}{% endraw %}' | wc -l\\\"\\r\\n    register: docker_container_count\\r\\n\\r\\n  - name: Debug the count\\r\\n    debug:\\r\\n      msg: \\\"{{ docker_container_count }}\\\" \\r\\n```\\r\\nThe command executes successfully in both Ansible 2.1.1.0 and Ansible 2.2.1.0 \\r\\n**however**\\r\\nThe internal representation 'cmd' key representing the original command was stored using the jinja tags as '{#'  and now it is being stored verbatim like '{{'. This is causing any further usage of this registered variable to fail as jinja is trying to parse the 'cmd' string.\\r\\n\\r\\ndebug output before upgrade (v2.1.1.0):\\r\\n```\\r\\n16:33:28 TASK [microservices : Debug the count] *************************\\r\\n16:33:28 ok: [hostname.company.org] => {\\r\\n16:33:28     \\\"msg\\\": {\\r\\n16:33:28         \\\"changed\\\": true, \\r\\n16:33:28         \\\"cmd\\\": \\\"docker ps -a --no-trunc --filter name=^/edge-server--account-service --format='{#.ID#},{#.Image#}' | wc -l\\\", \\r\\n16:33:28         \\\"delta\\\": \\\"0:00:00.025972\\\", \\r\\n16:33:28         \\\"end\\\": \\\"2017-01-23 16:33:27.970780\\\", \\r\\n16:33:28         \\\"rc\\\": 0, \\r\\n16:33:28         \\\"start\\\": \\\"2017-01-23 16:33:27.944808\\\", \\r\\n16:33:28         \\\"stderr\\\": \\\"\\\", \\r\\n16:33:28         \\\"stdout\\\": \\\"1\\\", \\r\\n16:33:28         \\\"stdout_lines\\\": [\\r\\n16:33:28             \\\"1\\\"\\r\\n16:33:28         ], \\r\\n16:33:28         \\\"warnings\\\": []\\r\\n16:33:28     }\\r\\n16:33:28 }\\r\\n16:33:28 \\r\\n```\\r\\ndebug output after upgrade (v2.2.1.0):\\r\\n```\\r\\n16:07:24 TASK [microservices : Debug the count] ***********************************\\r\\n16:07:24 fatal: [hostname.company.org]: FAILED! => \\r\\n{\\\"failed\\\": true, \\r\\n   \\\"msg\\\": \\\"{\\r\\n     u'cmd': u\\\\\\\"docker ps -a --no-trunc --filter name=^/edge-server--account-service --format='{{.ID}},{{.Image}}' | wc -l\\\\\\\", \\r\\n     u'end': u'2017-01-23 16:07:24.798553', \\r\\n     u'stdout': u'1', \\r\\n     u'changed': True, \\r\\n     u'start': u'2017-01-23 16:07:24.763174', \\r\\n     u'delta': u'0:00:00.035379', \\r\\n     u'stderr': u'', \\r\\n     u'rc': 0, \\r\\n     'stdout_lines': [u'1'], \\r\\n     u'warnings': []}: \\r\\n  template error while templating string: unexpected '.'. String: docker ps -a --no-trunc --filter name=^/edge-server--account-service --format='{{.ID}},{{.Image}}' | wc -l\\\"\\r\\n}\\r\\n16:07:24 \\tto retry, use: --limit @/home/jenkins/workspace/DeploymentFolder/DeployEdgeServer/rolling_deployment.retry\\r\\n16:07:24 \\r\\n```\\r\\n\", \n    \"component_name\": \"shell   with {% raw %} tags\", \n    \"component_raw\": \"shell module with {% raw %} tags\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20568\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"affects_2.2\", \n      \"bug\", \n      \"c:template/templar\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/commands/raw.py\", \n    \"summary\": \"This is quite meta .. but I will try and explain.\\n\\n\\n\\nWe use the ansible shell command to run some commands against docker hosts which uses dockers --format feature that feature relies on GO template engine. Naturally we see conflicting behaviour here due to both jinja2 and go using '{{' as delimeters. AFAIK neither of these tools currently support switching delimeters but I may be wrong as that would be one way we could work around this..\\n\\n\\n\\nWe pass a {% raw %}{% endraw %} wrapped go template to a shell module calling docker like:\\n\\n```\\n\\n  - name: Count running images to check if down scaling is necessary\\n\\n    shell:\\n\\n      \\\"docker ps -a --no-trunc --filter name=^/{{artifact.namespace}}-{{ artifact.name }} --format='{% raw %}{{.ID}},{{.Image}}{% endraw %}' | wc -l\\\"\\n\\n    register: docker_container_count\\n\\n\\n\\n  - name: Debug the count\\n\\n    debug:\\n\\n      msg: \\\"{{ docker_container_count }}\\\" \\n\\n```\\n\\nThe command executes successfully in both Ansible 2.1.1.0 and Ansible 2.2.1.0 \\n\\n**however**\\n\\nThe internal representation 'cmd' key representing the original command was stored using the jinja tags as '{#'  and now it is being stored verbatim like '{{'. This is causing any further usage of this registered variable to fail as jinja is trying to parse the 'cmd' string.\\n\\n\\n\\ndebug output before upgrade (v2.1.1.0):\\n\\n```\\n\\n16:33:28 TASK [microservices : Debug the count] *************************\\n\\n16:33:28 ok: [hostname.company.org] => {\\n\\n16:33:28     \\\"msg\\\": {\\n\\n16:33:28         \\\"changed\\\": true, \\n\\n16:33:28         \\\"cmd\\\": \\\"docker ps -a --no-trunc --filter name=^/edge-server--account-service --format='{#.ID#},{#.Image#}' | wc -l\\\", \\n\\n16:33:28         \\\"delta\\\": \\\"0:00:00.025972\\\", \\n\\n16:33:28         \\\"end\\\": \\\"2017-01-23 16:33:27.970780\\\", \\n\\n16:33:28         \\\"rc\\\": 0, \\n\\n16:33:28         \\\"start\\\": \\\"2017-01-23 16:33:27.944808\\\", \\n\\n16:33:28         \\\"stderr\\\": \\\"\\\", \\n\\n16:33:28         \\\"stdout\\\": \\\"1\\\", \\n\\n16:33:28         \\\"stdout_lines\\\": [\\n\\n16:33:28             \\\"1\\\"\\n\\n16:33:28         ], \\n\\n16:33:28         \\\"warnings\\\": []\\n\\n16:33:28     }\\n\\n16:33:28 }\\n\\n16:33:28 \\n\\n```\\n\\ndebug output after upgrade (v2.2.1.0):\\n\\n```\\n\\n16:07:24 TASK [microservices : Debug the count] ***********************************\\n\\n16:07:24 fatal: [hostname.company.org]: FAILED! => \\n\\n{\\\"failed\\\": true, \\n\\n   \\\"msg\\\": \\\"{\\n\\n     u'cmd': u\\\\\\\"docker ps -a --no-trunc --filter name=^/edge-server--account-service --format='{{.ID}},{{.Image}}' | wc -l\\\\\\\", \\n\\n     u'end': u'2017-01-23 16:07:24.798553', \\n\\n     u'stdout': u'1', \\n\\n     u'changed': True, \\n\\n     u'start': u'2017-01-23 16:07:24.763174', \\n\\n     u'delta': u'0:00:00.035379', \\n\\n     u'stderr': u'', \\n\\n     u'rc': 0, \\n\\n     'stdout_lines': [u'1'], \\n\\n     u'warnings': []}: \\n\\n  template error while templating string: unexpected '.'. String: docker ps -a --no-trunc --filter name=^/edge-server--account-service --format='{{.ID}},{{.Image}}' | wc -l\\\"\\n\\n}\\n\\n16:07:24 \\tto retry, use: --limit @/home/jenkins/workspace/DeploymentFolder/DeployEdgeServer/rolling_deployment.retry\\n\\n16:07:24 \\n\\n```\", \n    \"title\": \"Regression in Ansible 2.2 using raw / endraw jinja tags and GO templates.\"\n  }, \n  \"20569\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /var/lib/awx/jason/management/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nsysctl\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /var/lib/awx/jason/management/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nRed Hat 6 and 7\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nWhen Ansible is reading sysctl files it errors when encountering a comment.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n**Variables**\\r\\n```yaml\\r\\nsysctl:\\r\\n  postgres:\\r\\n    file: \\\"/etc/sysctl.d/99-postgres.conf\\\"\\r\\n    params:\\r\\n      - name: \\\"kernel.sem\\\"\\r\\n        value: \\\"150 4000 100 400\\\"\\r\\n      - name: \\\"kernel.shmall\\\"\\r\\n        value: 4294967296\\r\\n      - name: \\\"kernel.shmmax\\\"\\r\\n        value: 4294967296\\r\\n      - name: \\\"kernel.shmmni\\\"\\r\\n        value: 2048\\r\\n```\\r\\n\\r\\n**Tasks**\\r\\n```yaml\\r\\n---\\r\\n- name: sysctl header\\r\\n  lineinfile:\\r\\n    create: yes\\r\\n    dest: \\\"{{ item.value.file }}\\\"\\r\\n    owner: root\\r\\n    group: root\\r\\n    insertbefore: BOF\\r\\n    line: \\\"{{ ansible_managed }}\\\"\\r\\n  with_dict: '{{ sysctl }}'\\r\\n  when: (item.value.state is defined and item.value.state == 'present') or\\r\\n         item.value.state is not defined\\r\\n  tags: [sysctl]\\r\\n\\r\\n- name: configure sysctl\\r\\n  sysctl:\\r\\n    name: \\\"{{ item.1.name }}\\\"\\r\\n    value: \\\"{{ item.1.value }}\\\"\\r\\n    sysctl_file: \\\"{{ item.0.file }}\\\"\\r\\n    reload: yes\\r\\n  with_subelements:\\r\\n    - \\\"{{ sysctl }}\\\"\\r\\n    - params\\r\\n    - flags:\\r\\n      skip_missing: yes\\r\\n  when: (item.0.state is defined and item.0.state == 'present') or\\r\\n         item.0.state is not defined\\r\\n  tags: [sysctl]\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nThe comment header would be applied to the top of the file and then the sysctl parameters would be applied.\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nWhen Ansible got to the comment in the file it failed.  Removing the comment fixes the issue.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n```\\r\\nTraceback (most recent call last):\\r\\n  File \\\\\\\"/tmp/ansible_skBeie/ansible_module_sysctl.py\\\\\\\", line 371, in <module>\\r\\n    main()\\r\\n  File \\\\\\\"/tmp/ansible_skBeie/ansible_module_sysctl.py\\\\\\\", line 364, in main\\r\\n    result = SysctlModule(module)\\r\\n  File \\\\\\\"/tmp/ansible_skBeie/ansible_module_sysctl.py\\\\\\\", line 124, in __init__\\r\\n    self.process()\\r\\n  File \\\\\\\"/tmp/ansible_skBeie/ansible_module_sysctl.py\\\\\\\", line 144, in process\\r\\n    self.read_sysctl_file()\\r\\n  File \\\\\\\"/tmp/ansible_skBeie/ansible_module_sysctl.py\\\\\\\", line 296, in read_sysctl_file\\r\\n    k, v = line.split('=',1)\\r\\nValueError: need more than 1 value to unpack\\r\\n```\", \n    \"component_name\": \"sysctl\", \n    \"component_raw\": \"sysctl\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20569\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"needs_info\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/sysctl.py\", \n    \"summary\": \"When Ansible is reading sysctl files it errors when encountering a comment.\", \n    \"title\": \"sysctl errors on comments\"\n  }, \n  \"20571\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n\\r\\n - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nfacts\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nfixes #10445\\r\\n\\r\\n\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"facts\", \n    \"component_raw\": \"facts\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20571\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:module_utils/\", \n      \"c:module_utils/facts\", \n      \"needs_revision\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"fixes #10445\\n\\n\\n\\n\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"last ditch debian release data\"\n  }, \n  \"20572\": {\n    \"ansible_version\": \"2.2.1.0\", \n    \"body\": \"\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ntemplate\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n2.2.1.0\\r\\n\\r\\n\\r\\n##### CONFIGURATION\\r\\nDefault file  /etc/ansible/ansible.cfg with ansible\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nUbuntu 16.04 - 4.4.0-57-generic\\r\\n\\r\\n##### SUMMARY\\r\\nTemplate command works correctly if executed from controller node or executed on the node shell but fails when executed during boot process with all playbook on the node itself and executed on local node only.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nsingle task playbook with a template file \\r\\n\\r\\n\\r\\n\\r\\n```\\r\\n---\\r\\n  - block:\\r\\n    - name: Update Properties File\\r\\n      template: src=templates/IntroscopeEPAgent.properties.j2  dest=/var/tmp/IntroscopeEPAgent.properties\\r\\n    become: yes\\r\\n    become_user: root\\r\\n    become_method: sudo\\r\\n```\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nTemplate file available on destination\\r\\n##### ACTUAL RESULTS\\r\\nverbose logs in both cases are given below:\\r\\n\\r\\n\\r\\n`` Failed LOGS when executed in shell at boot time:\\r\\n\\r\\n```\\r\\n\\r\\nJan 23 18:17:56 ans-esmaster01a rc.local[509]: + ansible-playbook -vvvv local.yml --extra-vars=env=thor -f 1\\r\\nJan 23 18:17:56 ans-esmaster01a rc.local[509]: Using /ansible/ansible.cfg as config file\\r\\nJan 23 18:17:56 ans-esmaster01a rc.local[509]:  [WARNING]: provided hosts list is empty, only localhost is available\\r\\nJan 23 18:17:56 ans-esmaster01a rc.local[509]: Loading callback plugin default of type stdout, v2.0 from /usr/lib/python2.7/dist-packages/ansible/plugins/callback/__init__.pyc\\r\\nJan 23 18:17:56 ans-esmaster01a rc.local[509]: PLAYBOOK: local.yml ************************************************************\\r\\nJan 23 18:17:56 ans-esmaster01a rc.local[509]: 1 plays in local.yml\\r\\nJan 23 18:17:56 ans-esmaster01a rc.local[509]: PLAY [Install  Wily setup for ELK] *********************************************\\r\\nJan 23 18:17:56 ans-esmaster01a rc.local[509]: TASK [setup] *******************************************************************\\r\\nJan 23 18:17:56 ans-esmaster01a rc.local[509]: Using module file /usr/lib/python2.7/dist-packages/ansible/modules/core/system/setup.py\\r\\nJan 23 18:17:56 ans-esmaster01a rc.local[509]: <127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: root\\r\\nJan 23 18:17:56 ans-esmaster01a rc.local[509]: <127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo ~/.ansible/tmp/ansible-tmp-1485195476.72-26022585930503 `\\\" && echo ansible-tmp-1485195476.72-26022585930503=\\\"` echo ~/.ansible/tmp/ansible-tmp-1485195476.72-26022585930503 `\\\" ) && sleep 0'\\r\\nJan 23 18:17:56 ans-esmaster01a rc.local[509]: <127.0.0.1> PUT /tmp/tmp6CUh9V TO ~/.ansible/tmp/ansible-tmp-1485195476.72-26022585930503/setup.py\\r\\nJan 23 18:17:56 ans-esmaster01a rc.local[509]: <127.0.0.1> EXEC /bin/sh -c 'chmod u+x '\\\"'\\\"'~/.ansible/tmp/ansible-tmp-1485195476.72-26022585930503/'\\\"'\\\"' '\\\"'\\\"'~/.ansible/tmp/ansible-tmp-1485195476.72-26022585930503/setup.py'\\\"'\\\"' && sleep 0'\\r\\nJan 23 18:17:56 ans-esmaster01a rc.local[509]: <127.0.0.1> EXEC /bin/sh -c '/usr/bin/python '\\\"'\\\"'~/.ansible/tmp/ansible-tmp-1485195476.72-26022585930503/setup.py'\\\"'\\\"'; rm -rf \\\"~/.ansible/tmp/ansible-tmp-1485195476.72-26022585930503/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nJan 23 18:17:56 ans-esmaster01a ansible-setup[3395]: Invoked with filter=* gather_subset=['all'] fact_path=/etc/ansible/facts.d gather_timeout=10\\r\\nJan 23 18:17:56 ans-esmaster01a rc.local[509]: ok: [localhost]\\r\\nJan 23 18:17:56 ans-esmaster01a rc.local[509]: TASK [test/1.0.0 : Update Properties File] *************************************\\r\\nJan 23 18:17:56 ans-esmaster01a rc.local[509]: task path: /ansible/test/1.0.0/tasks/main.yml:3\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]: <127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: root\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]: <127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo ~/.ansible/tmp/ansible-tmp-1485195477.0-90841139958 `\\\" && echo ansible-tmp-1485195477.0-90841139958=\\\"` echo ~/.ansible/tmp/ansible-tmp-1485195477.0-90841139958 `\\\" ) && sleep 0'\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]: Using module file /usr/lib/python2.7/dist-packages/ansible/modules/core/files/stat.py\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]: <127.0.0.1> PUT /tmp/tmpQfw60z TO ~/.ansible/tmp/ansible-tmp-1485195477.0-90841139958/stat.py\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]: <127.0.0.1> EXEC /bin/sh -c 'chmod u+x '\\\"'\\\"'~/.ansible/tmp/ansible-tmp-1485195477.0-90841139958/'\\\"'\\\"' '\\\"'\\\"'~/.ansible/tmp/ansible-tmp-1485195477.0-90841139958/stat.py'\\\"'\\\"' && sleep 0'\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]: <127.0.0.1> EXEC /bin/sh -c '/usr/bin/python '\\\"'\\\"'~/.ansible/tmp/ansible-tmp-1485195477.0-90841139958/stat.py'\\\"'\\\"' && sleep 0'\\r\\nJan 23 18:17:57 ans-esmaster01a ansible-stat[3430]: Invoked with checksum_algorithm=sha1 mime=False get_checksum=True path=/var/tmp/IntroscopeEPAgent.properties checksum_algo=sha1 follow=False get_md5=False\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]: <127.0.0.1> PUT /tmp/tmpU4KurG TO ~/.ansible/tmp/ansible-tmp-1485195477.0-90841139958/source\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]: <127.0.0.1> EXEC /bin/sh -c 'chmod u+x '\\\"'\\\"'~/.ansible/tmp/ansible-tmp-1485195477.0-90841139958/'\\\"'\\\"' '\\\"'\\\"'~/.ansible/tmp/ansible-tmp-1485195477.0-90841139958/source'\\\"'\\\"' && sleep 0'\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]: Using module file /usr/lib/python2.7/dist-packages/ansible/modules/core/files/copy.py\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]: <127.0.0.1> PUT /tmp/tmpCaRClD TO ~/.ansible/tmp/ansible-tmp-1485195477.0-90841139958/copy.py\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]: <127.0.0.1> EXEC /bin/sh -c 'chmod u+x '\\\"'\\\"'~/.ansible/tmp/ansible-tmp-1485195477.0-90841139958/'\\\"'\\\"' '\\\"'\\\"'~/.ansible/tmp/ansible-tmp-1485195477.0-90841139958/copy.py'\\\"'\\\"' && sleep 0'\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]: <127.0.0.1> EXEC /bin/sh -c '/usr/bin/python '\\\"'\\\"'~/.ansible/tmp/ansible-tmp-1485195477.0-90841139958/copy.py'\\\"'\\\"' && sleep 0'\\r\\nJan 23 18:17:57 ans-esmaster01a ansible-copy[3443]: Invoked with src=/root/.ansible/tmp/ansible-tmp-1485195477.0-90841139958/source directory_mode=None force=True remote_src=None unsafe_writes=None selevel=None seuser=None setype=None group=None content=NOT_LOGGING_PARAMETER dest=/var/tmp/IntroscopeEPAgent.properties serole=None original_basename=IntroscopeEPAgent.properties.j2 delimiter=None mode=None regexp=None owner=None follow=True validate=None backup=False\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]: <127.0.0.1> EXEC /bin/sh -c 'rm -f -r '\\\"'\\\"'~/.ansible/tmp/ansible-tmp-1485195477.0-90841139958/'\\\"'\\\"' > /dev/null 2>&1 && sleep 0'\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]: fatal: [localhost]: FAILED! => {\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:     \\\"changed\\\": true,\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:     \\\"failed\\\": true,\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:     \\\"invocation\\\": {\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:         \\\"module_args\\\": {\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:             \\\"backup\\\": false,\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:             \\\"content\\\": null,\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:             \\\"delimiter\\\": null,\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:             \\\"dest\\\": \\\"/var/tmp/IntroscopeEPAgent.properties\\\",\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:             \\\"directory_mode\\\": null,\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:             \\\"follow\\\": true,\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:             \\\"force\\\": true,\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:             \\\"group\\\": null,\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:             \\\"mode\\\": null,\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:             \\\"original_basename\\\": \\\"IntroscopeEPAgent.properties.j2\\\",\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:             \\\"owner\\\": null,\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:             \\\"regexp\\\": null,\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:             \\\"remote_src\\\": null,\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:             \\\"selevel\\\": null,\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:             \\\"serole\\\": null,\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:             \\\"setype\\\": null,\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:             \\\"seuser\\\": null,\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:             \\\"src\\\": \\\"/root/.ansible/tmp/ansible-tmp-1485195477.0-90841139958/source\\\",\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:             \\\"unsafe_writes\\\": null,\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:             \\\"validate\\\": null\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:         }\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:     },\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:     \\\"msg\\\": \\\"Source /root/.ansible/tmp/ansible-tmp-1485195477.0-90841139958/source not found\\\"\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]: }\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]:         to retry, use: --limit @/home/local/local.retry\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]: PLAY RECAP *********************************************************************\\r\\nJan 23 18:17:57 ans-esmaster01a rc.local[509]: localhost                  : ok=1    changed=0    unreachable=0    failed= 1\\r\\n\\r\\n\\r\\n```\\r\\n================================\\r\\n\\r\\nRuns OK when executed on the node as root:\\r\\n\\r\\n```\\r\\nroot@ans-esmaster01a:/ansible# ansible-playbook -vvvv local.yml --extra-vars=env=thor -f 1\\r\\nUsing /ansible/ansible.cfg as config file\\r\\n [WARNING]: provided hosts list is empty, only localhost is available\\r\\n\\r\\nLoading callback plugin default of type stdout, v2.0 from /usr/lib/python2.7/dist-packages/ansible/plugins/callback/__init__.pyc\\r\\n\\r\\nPLAYBOOK: local.yml ************************************************************\\r\\n1 plays in local.yml\\r\\n\\r\\nPLAY [Install  Wily setup for ELK] *********************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/core/system/setup.py\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: root\\r\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo ~/.ansible/tmp/ansible-tmp-1485195606.14-11225926039776 `\\\" && echo ansible-tmp-1485195606.14-11225926039776=\\\"` echo ~/.ansible/tmp/ansible-tmp-1485195606.14-11225926039776 `\\\" ) && sleep 0'\\r\\n<127.0.0.1> PUT /tmp/tmpOuRiH3 TO /root/.ansible/tmp/ansible-tmp-1485195606.14-11225926039776/setup.py\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1485195606.14-11225926039776/ /root/.ansible/tmp/ansible-tmp-1485195606.14-11225926039776/setup.py && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python /root/.ansible/tmp/ansible-tmp-1485195606.14-11225926039776/setup.py; rm -rf \\\"/root/.ansible/tmp/ansible-tmp-1485195606.14-11225926039776/\\\" > /dev/null 2>&1 && sleep 0'\\r\\nok: [localhost]\\r\\n\\r\\nTASK [test/1.0.0 : Update Properties File] *************************************\\r\\ntask path: /ansible/test/1.0.0/tasks/main.yml:3\\r\\n<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: root\\r\\n<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p \\\"` echo ~/.ansible/tmp/ansible-tmp-1485195606.38-148223215695068 `\\\" && echo ansible-tmp-1485195606.38-148223215695068=\\\"` echo ~/.ansible/tmp/ansible-tmp-1485195606.38-148223215695068 `\\\" ) && sleep 0'\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/core/files/stat.py\\r\\n<127.0.0.1> PUT /tmp/tmpW3o_TP TO /root/.ansible/tmp/ansible-tmp-1485195606.38-148223215695068/stat.py\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1485195606.38-148223215695068/ /root/.ansible/tmp/ansible-tmp-1485195606.38-148223215695068/stat.py && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python /root/.ansible/tmp/ansible-tmp-1485195606.38-148223215695068/stat.py && sleep 0'\\r\\n<127.0.0.1> PUT /tmp/tmpXCL5WJ TO /root/.ansible/tmp/ansible-tmp-1485195606.38-148223215695068/source\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1485195606.38-148223215695068/ /root/.ansible/tmp/ansible-tmp-1485195606.38-148223215695068/source && sleep 0'\\r\\nUsing module file /usr/lib/python2.7/dist-packages/ansible/modules/core/files/copy.py\\r\\n<127.0.0.1> PUT /tmp/tmpGD_KQu TO /root/.ansible/tmp/ansible-tmp-1485195606.38-148223215695068/copy.py\\r\\n<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1485195606.38-148223215695068/ /root/.ansible/tmp/ansible-tmp-1485195606.38-148223215695068/copy.py && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python /root/.ansible/tmp/ansible-tmp-1485195606.38-148223215695068/copy.py && sleep 0'\\r\\n<127.0.0.1> EXEC /bin/sh -c 'rm -f -r /root/.ansible/tmp/ansible-tmp-1485195606.38-148223215695068/ > /dev/null 2>&1 && sleep 0'\\r\\nchanged: [localhost] => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"checksum\\\": \\\"f52bff0e86439a5441a94037160acdfc86d4ff55\\\",\\r\\n    \\\"dest\\\": \\\"/var/tmp/IntroscopeEPAgent.properties\\\",\\r\\n    \\\"gid\\\": 0,\\r\\n    \\\"group\\\": \\\"root\\\",\\r\\n    \\\"invocation\\\": {\\r\\n        \\\"module_args\\\": {\\r\\n            \\\"backup\\\": false,\\r\\n            \\\"content\\\": null,\\r\\n            \\\"delimiter\\\": null,\\r\\n            \\\"dest\\\": \\\"/var/tmp/IntroscopeEPAgent.properties\\\",\\r\\n            \\\"directory_mode\\\": null,\\r\\n            \\\"follow\\\": true,\\r\\n            \\\"force\\\": true,\\r\\n            \\\"group\\\": null,\\r\\n            \\\"mode\\\": null,\\r\\n            \\\"original_basename\\\": \\\"IntroscopeEPAgent.properties.j2\\\",\\r\\n            \\\"owner\\\": null,\\r\\n            \\\"regexp\\\": null,\\r\\n            \\\"remote_src\\\": null,\\r\\n            \\\"selevel\\\": null,\\r\\n            \\\"serole\\\": null,\\r\\n            \\\"setype\\\": null,\\r\\n            \\\"seuser\\\": null,\\r\\n            \\\"src\\\": \\\"/root/.ansible/tmp/ansible-tmp-1485195606.38-148223215695068/source\\\",\\r\\n            \\\"unsafe_writes\\\": null,\\r\\n            \\\"validate\\\": null\\r\\n        }\\r\\n    },\\r\\n    \\\"md5sum\\\": \\\"510d02b5e3c468e1a81c71c68809b4e9\\\",\\r\\n    \\\"mode\\\": \\\"0600\\\",\\r\\n    \\\"owner\\\": \\\"root\\\",\\r\\n    \\\"size\\\": 2470,\\r\\n    \\\"src\\\": \\\"/root/.ansible/tmp/ansible-tmp-1485195606.38-148223215695068/source\\\",\\r\\n    \\\"state\\\": \\\"file\\\",\\r\\n    \\\"uid\\\": 0\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=2    changed=1    unreachable=0    failed=0\\r\\n\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"template\", \n    \"component_raw\": \"template\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20572\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/template.py\", \n    \"summary\": \"Template command works correctly if executed from controller node or executed on the node shell but fails when executed during boot process with all playbook on the node itself and executed on local node only.\", \n    \"title\": \"Template command fails during automatic configuration on local node only \"\n  }, \n  \"20573\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n - Feature Idea\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ninfluxdb_retention_policy\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nNone\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nCentos 7.2\\r\\n\\r\\n##### SUMMARY\\r\\nThere is a default policy called \\\"autogen\\\" created as default, but when using a playbook to change the default using the influxdb_retention_policy role, the default stays on \\\"autogen\\\". I've also deleted \\\"autogen\\\" and the default wasn't getting set. Somehow the document says \\\"default\\\" is required and there is no default value. \\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\nVariables used :\\r\\n\\r\\n```\\r\\ninflux_db_telegraf:\\r\\n  - telegraf\\r\\n\\r\\ninflux_rp_telegraf:\\r\\n  - { name: daily, default: true, duration: 7d }\\r\\n  - { name: monthly, default: false, duration: 30d }\\r\\n  - { name: indefinite, default: false, duration: INF }\\r\\n```\\r\\n\\r\\nTask :\\r\\n\\r\\n```\\r\\n- name: Create Retention Policy(s)\\r\\n  influxdb_retention_policy:\\r\\n    hostname: \\\"{{ ansible_fqdn }}\\\"\\r\\n    database_name: \\\"{{ item[0] }}\\\"\\r\\n    port: \\\"{{ influxdb_http_port | default('8086') }}\\\"\\r\\n    policy_name: \\\"{{ item[1].name }}\\\"\\r\\n    duration: \\\"{{ item[1].duration | default('0') }}\\\"\\r\\n    replication: \\\"{{ item[1].replication | default('1') }}\\\"\\r\\n  #connection: local\\r\\n  with_nested:\\r\\n   - \\\"{{ influx_db }}\\\"\\r\\n   - \\\"{{ influx_rp }}\\\"\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n\\r\\nI expected my retention policy to take the \\\"default: True\\\" \\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n\\r\\n```\\r\\nTASK [influxdb/rp : Create Retention Policy(s)] ********************************\\r\\nok: [influx01] => (item=[u'telegraf', {u'default': True, u'duration': u'7d', u'name': u'daily'}])\\r\\nok: [influx01] => (item=[u'telegraf', {u'default': False, u'duration': u'30d', u'name': u'monthly'}])\\r\\nchanged: [influx01] => (item=[u'telegraf', {u'default': False, u'duration': u'INF', u'name': u'indefinite'}])\\r\\n\\r\\n> SHOW RETENTION POLICIES ON \\\"telegraf\\\"\\r\\nname\\t\\tduration\\tshardGroupDuration\\treplicaN\\tdefault\\r\\n----\\t\\t--------\\t------------------\\t--------\\t-------\\r\\nautogen\\t\\t0s\\t\\t168h0m0s\\t\\t1\\t\\ttrue\\r\\ndaily\\t\\t168h0m0s\\t24h0m0s\\t\\t\\t1\\t\\tfalse\\r\\nmonthly\\t\\t720h0m0s\\t24h0m0s\\t\\t\\t1\\t\\tfalse\\r\\nindefinite\\t0s\\t\\t168h0m0s\\t\\t1\\t\\tfalse\\r\\n\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"influxdb_retention_policy\", \n    \"component_raw\": \"influxdb_retention_policy\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20573\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/database/influxdb/influxdb_retention_policy.py\", \n    \"summary\": \"There is a default policy called \\\"autogen\\\" created as default, but when using a playbook to change the default using the influxdb_retention_policy role, the default stays on \\\"autogen\\\". I've also deleted \\\"autogen\\\" and the default wasn't getting set. Somehow the document says \\\"default\\\" is required and there is no default value.\", \n    \"title\": \"influxdb_retention_policy: Setting default doesn't alter retention policy\"\n  }, \n  \"20574\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 9958b215d7) last updated 2017/01/23 173204 (GMT +200)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - New Module Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\naix_lvol.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n\\r\\n```\\r\\nansible 2.3.0 (devel 9958b215d7) last updated 2017/01/23 17:32:04 (GMT +200)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nThis module is adding support to create, change and delete AIX logical volumes. I started from **lvol** module but AIX LVM management is really different. \\r\\n\\r\\nHere a simple playbook using it: \\r\\n\\r\\n```\\r\\n- hosts: adxlpar2\\r\\n  gather_facts: False\\r\\n  tasks:\\r\\n    - name: Create a logical volume of 512M.\\r\\n      aix_lvol: vg=testvg lv=testlv size=512M\\r\\n    - name: Create a logical volume of 512M with disks hdisk1 and hdisk2\\r\\n      aix_lvol: vg=testvg lv=test2lv size=512M pvs=\\\"hdisk1,hdisk2\\\"\\r\\n    - name: Create a logical volume of 512M mirrored.\\r\\n      aix_lvol: vg=testvg lv=test3lv size=512M copies=2\\r\\n    - name: Create a logical volume of 1G with a minimum placement policy.\\r\\n      aix_lvol: vg=testvg lv=test4lv size=1G policy=minimum\\r\\n    - name: Change logical volume size to 1200 MB.\\r\\n      aix_lvol: vg=testvg lv=test4lv size=1200M\\r\\n    - name: delete logical volumes\\r\\n      aix_lvol: vg=testvg lv={{ item }} state=\\\"absent\\\"\\r\\n      with_items:\\r\\n        - \\\"testlv\\\"\\r\\n        - \\\"test2lv\\\"\\r\\n        - \\\"test3lv\\\"\\r\\n        - \\\"test4lv\\\"\\r\\n```\\r\\n\\r\\nAnd the output:\\r\\n\\r\\n```\\r\\nansible-playbook  -i hosts playbook.yml\\r\\n\\r\\nPLAY [adxlpar2] ************************************************************************************************************************************************************\\r\\n\\r\\nTASK [Create a logical volume of 512M.] ************************************************************************************************************************************\\r\\nchanged: [adxlpar2]\\r\\n\\r\\nTASK [Create a logical volume of 512M with disks hdisk1 and hdisk2] ********************************************************************************************************\\r\\nchanged: [adxlpar2]\\r\\n\\r\\nTASK [Create a logical volume of 512M mirrored.] ***************************************************************************************************************************\\r\\nchanged: [adxlpar2]\\r\\n\\r\\nTASK [Create a logical volume of 1G with a minimum placement policy.] ******************************************************************************************************\\r\\nchanged: [adxlpar2]\\r\\n\\r\\nTASK [Change logical volume size to 1200 MB.] ******************************************************************************************************************************\\r\\nchanged: [adxlpar2]\\r\\n\\r\\nTASK [delete logical volumes] **********************************************************************************************************************************************\\r\\nchanged: [adxlpar2] => (item=testlv)\\r\\nchanged: [adxlpar2] => (item=test2lv)\\r\\nchanged: [adxlpar2] => (item=test3lv)\\r\\nchanged: [adxlpar2] => (item=test4lv)\\r\\n\\r\\nPLAY RECAP *****************************************************************************************************************************************************************\\r\\nadxlpar2                   : ok=6    changed=6    unreachable=0    failed=0  \\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"aix_lvol.py\", \n    \"component_raw\": \"aix_lvol.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20574\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/aix_lvol.py\", \n    \"summary\": \"This module is adding support to create, change and delete AIX logical volumes. I started from **lvol** module but AIX LVM management is really different. \\n\\n\\n\\nHere a simple playbook using it: \\n\\n\\n\\n```\\n\\n- hosts: adxlpar2\\n\\n  gather_facts: False\\n\\n  tasks:\\n\\n    - name: Create a logical volume of 512M.\\n\\n      aix_lvol: vg=testvg lv=testlv size=512M\\n\\n    - name: Create a logical volume of 512M with disks hdisk1 and hdisk2\\n\\n      aix_lvol: vg=testvg lv=test2lv size=512M pvs=\\\"hdisk1,hdisk2\\\"\\n\\n    - name: Create a logical volume of 512M mirrored.\\n\\n      aix_lvol: vg=testvg lv=test3lv size=512M copies=2\\n\\n    - name: Create a logical volume of 1G with a minimum placement policy.\\n\\n      aix_lvol: vg=testvg lv=test4lv size=1G policy=minimum\\n\\n    - name: Change logical volume size to 1200 MB.\\n\\n      aix_lvol: vg=testvg lv=test4lv size=1200M\\n\\n    - name: delete logical volumes\\n\\n      aix_lvol: vg=testvg lv={{ item }} state=\\\"absent\\\"\\n\\n      with_items:\\n\\n        - \\\"testlv\\\"\\n\\n        - \\\"test2lv\\\"\\n\\n        - \\\"test3lv\\\"\\n\\n        - \\\"test4lv\\\"\\n\\n```\\n\\n\\n\\nAnd the output:\\n\\n\\n\\n```\\n\\nansible-playbook  -i hosts playbook.yml\\n\\n\\n\\nPLAY [adxlpar2] ************************************************************************************************************************************************************\\n\\n\\n\\nTASK [Create a logical volume of 512M.] ************************************************************************************************************************************\\n\\nchanged: [adxlpar2]\\n\\n\\n\\nTASK [Create a logical volume of 512M with disks hdisk1 and hdisk2] ********************************************************************************************************\\n\\nchanged: [adxlpar2]\\n\\n\\n\\nTASK [Create a logical volume of 512M mirrored.] ***************************************************************************************************************************\\n\\nchanged: [adxlpar2]\\n\\n\\n\\nTASK [Create a logical volume of 1G with a minimum placement policy.] ******************************************************************************************************\\n\\nchanged: [adxlpar2]\\n\\n\\n\\nTASK [Change logical volume size to 1200 MB.] ******************************************************************************************************************************\\n\\nchanged: [adxlpar2]\\n\\n\\n\\nTASK [delete logical volumes] **********************************************************************************************************************************************\\n\\nchanged: [adxlpar2] => (item=testlv)\\n\\nchanged: [adxlpar2] => (item=test2lv)\\n\\nchanged: [adxlpar2] => (item=test3lv)\\n\\nchanged: [adxlpar2] => (item=test4lv)\\n\\n\\n\\nPLAY RECAP *****************************************************************************************************************************************************************\\n\\nadxlpar2                   : ok=6    changed=6    unreachable=0    failed=0  \\n\\n```\", \n    \"title\": \"Added AIX LV module\"\n  }, \n  \"20575\": {\n    \"ansible_version\": \"ansible 2.2.1.0\\nconfig file = /home/dgeo/.ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n  - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\npkgng module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file = /home/dgeo/.ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nRuns `pkg clean` which removes cached package files. Possible values:\\r\\n  * `none` (do not clean, default)\\r\\n  * `obsolete` (clean only obsolete package files (e.g. old versions))\\r\\n  * `all` (clean all package files)\\r\\n\\r\\nNote this is a pure copy of @AMDmi3's original PR to\\r\\nansible-modules-extras#2339, adding @bcoca's suggestion : they should be credited here, I just act for this work not to be lost :)\", \n    \"component_name\": \"pkgng\", \n    \"component_raw\": \"pkgng module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20575\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"feature\", \n      \"module\", \n      \"needs_revision\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/pkgng.py\", \n    \"summary\": \"Runs `pkg clean` which removes cached package files. Possible values:\\n\\n  * `none` (do not clean, default)\\n\\n  * `obsolete` (clean only obsolete package files (e.g. old versions))\\n\\n  * `all` (clean all package files)\\n\\n\\n\\nNote this is a pure copy of @AMDmi3's original PR to\\n\\nansible-modules-extras#2339, adding @bcoca's suggestion : they should be credited here, I just act for this work not to be lost :)\", \n    \"title\": \"Add \\\"clean\\\" option support for pkgng module\"\n  }, \n  \"20576\": {\n    \"ansible_version\": \"ansible 2.3.0 (sysctl_comments_20569 e35734c7d3) last updated 2017/01/23 153132 (GMT -400)\\nconfig file = /home/adrian/.ansible.cfg\\nconfigured module search path = [u/home/adrian/ansible/my-modules u/home/adrian/ansible/lib/modules/]\", \n    \"body\": \"Fixes #20569\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n \\r\\n - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nlib/ansible/modules/system/sysctl.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (sysctl_comments_20569 e35734c7d3) last updated 2017/01/23 15:31:32 (GMT -400)\\r\\n  config file = /home/adrian/.ansible.cfg\\r\\n  configured module search path = [u'/home/adrian/ansible/my-modules', u'/home/adrian/ansible/lib/modules/']\\r\\n\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nFixes #20569 (probably)\\r\\n\\r\\n(module errors if sysctl file uses ';' as comment char instead of  '#').\\r\\n\\r\\n';' is valid comment char based on http://man7.org/linux/man-pages/man5/sysctl.conf.5.html\", \n    \"component_name\": \"lib/ansible/modules/system/sysctl.py\", \n    \"component_raw\": \"lib/ansible/modules/system/sysctl.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20576\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"core_review\", \n      \"module\", \n      \"waiting_on_maintainer\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/sysctl.py\", \n    \"summary\": \"Fixes #20569 (probably)\\n\\n\\n\\n(module errors if sysctl file uses ';' as comment char instead of  '#').\\n\\n\\n\\n';' is valid comment char based on http://man7.org/linux/man-pages/man5/sysctl.conf.5.html\", \n    \"title\": \"Handle ';' as comment char in sysctl files\"\n  }, \n  \"20577\": {\n    \"ansible_version\": \"2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nvyos_config\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nUpdate vyos_config to persistent connections\", \n    \"component_name\": \"vyos_config\", \n    \"component_raw\": \"vyos_config\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20577\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"community_review\", \n      \"feature\", \n      \"in progress\", \n      \"module\", \n      \"networking\", \n      \"owner_pr\", \n      \"test\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/vyos/vyos_command.py\", \n    \"summary\": \"Update vyos_config to persistent connections\", \n    \"title\": \"[WIP] vyos_config 2.3\"\n  }, \n  \"20578\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"\\r\\n\\r\\n##### ISSUE TYPE\\r\\n\\r\\n - Bugfix Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\n\\r\\n`service` module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nv2.3\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nIn https://github.com/ansible/ansible-modules-core/commit/ebcc46fa27de3a62904cd85392b50598271905d2 the `-s` flag was added for `restarted` and `reloaded`. However this is only supported on Solaris >= 11, and not on older versions or the illumos distributions.\\r\\n\\r\\nBefore:\\r\\n```\\r\\nTASK [ensure ssh is restarted] *************************************************\\r\\nfatal: [calafate-gz]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"svcadm: Pattern '-s' doesn't match any ins\\r\\ntances\\\\n\\\"}\\r\\n```\\r\\n\\r\\nAfter:\\r\\n```\\r\\nTASK [ensure ssh is restarted] *************************************************\\r\\nchanged: [calafate-gz] => {\\\"changed\\\": true, \\\"name\\\": \\\"ssh\\\", \\\"state\\\": \\\"started\\\"}\\r\\n```\\r\\n\\r\\nCloses #20102\", \n    \"component_name\": \"service\", \n    \"component_raw\": \"`service` module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20578\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"core_review\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/service.py\", \n    \"summary\": \"In https://github.com/ansible/ansible-modules-core/commit/ebcc46fa27de3a62904cd85392b50598271905d2 the `-s` flag was added for `restarted` and `reloaded`. However this is only supported on Solaris >= 11, and not on older versions or the illumos distributions.\\n\\n\\n\\nBefore:\\n\\n```\\n\\nTASK [ensure ssh is restarted] *************************************************\\n\\nfatal: [calafate-gz]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"svcadm: Pattern '-s' doesn't match any ins\\n\\ntances\\\\n\\\"}\\n\\n```\\n\\n\\n\\nAfter:\\n\\n```\\n\\nTASK [ensure ssh is restarted] *************************************************\\n\\nchanged: [calafate-gz] => {\\\"changed\\\": true, \\\"name\\\": \\\"ssh\\\", \\\"state\\\": \\\"started\\\"}\\n\\n```\\n\\n\\n\\nCloses #20102\", \n    \"title\": \"The '-s' option for restart/refresh is only supported on Oracle Solaris >= 11\"\n  }, \n  \"20579\": {\n    \"ansible_version\": \"ansible 2.0.1.0\\nconfig file = /home/.../ansible.cfg\\nconfigured module search path = Default w/o overrides\\nAnsible\", \n    \"body\": \"_From @edunham on February 29, 2016 21:53_\\n\\n##### Issue Type:\\n- Feature Idea\\n##### Plugin Name:\\n\\ncopy\\n##### Ansible Version:\\n\\n```\\nansible 2.0.1.0\\n  config file = /home/.../ansible.cfg\\n  configured module search path = Default w/o overrides\\n```\\n##### Ansible Configuration:\\n\\n```\\n$ cat ansible.cfg \\n[defaults]\\ninventory = hosts\\nroles_path = roles/\\n```\\n##### Environment:\\n\\nN/A, not platform-specific\\n##### Summary:\\n\\nI have an ansible playbook which uses the `copy` module to upload a 3GB file to managed hosts. This takes a long time, and causes me to wonder whether it's still uploading or got stuck somewhere. It would be nice if the `copy` module had an option for showing a progress indicator while uploading.\\n##### Steps To Reproduce:\\n\\nHow the new feature might be used:\\n\\n```\\n- name: Upload Xcode DMG to the host\\n  copy: \\n      src={{ xcode_dmg }}\\n      dest=/Users/{{ ansible_ssh_user }}\\n      show_progress_bar=True\\n  when: xcode_dl_path.stat.exists == False\\n```\\n##### Expected Results:\\n\\nIt would be nice if the playbook output a progress indicator when the progress bar setting was enabled.\\n##### Actual Results:\\n\\nI read the docs and asked on IRC and daemoniz confirmed that there is not a built-in feature to do this.\\n\\n\\n_Copied from original issue: ansible/ansible-modules-core#3149_\", \n    \"component_name\": \"copy\", \n    \"component_raw\": \":\\ncopy\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20579\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.0\", \n      \"affects_2.1\", \n      \"affects_2.2\", \n      \"affects_2.3\", \n      \"c:utils/display\", \n      \"feature\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/copy.py\", \n    \"summary\": \":\\n\\nI have an ansible playbook which uses the `copy` module to upload a 3GB file to managed hosts. This takes a long time, and causes me to wonder whether it's still uploading or got stuck somewhere. It would be nice if the `copy` module had an option for showing a progress indicator while uploading.\", \n    \"title\": \"It would be nice for `copy` to optionally show a progress bar during upload\"\n  }, \n  \"20580\": {\n    \"ansible_version\": \"ansible 2.2.1.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Idea\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndocker_image\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nansible 2.2.1.0\\r\\n\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nLinux\\r\\n\\r\\n##### SUMMARY\\r\\ndocker_image does not update image if image already exist\\r\\n\\r\\nSame did exist for the (deprecated) docker module with the pull=always flag, see:\\r\\nhttps://github.com/ansible/ansible-modules-core/pull/502\\r\\n\", \n    \"component_name\": \"docker_image\", \n    \"component_raw\": \"docker_image\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20580\", \n    \"issue_type\": \"feature idea\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"cloud\", \n      \"docker\", \n      \"feature\", \n      \"module\", \n      \"needs_triage\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_image.py\", \n    \"summary\": \"docker_image does not update image if image already exist\\n\\n\\n\\nSame did exist for the (deprecated) docker module with the pull=always flag, see:\\n\\nhttps://github.com/ansible/ansible-modules-core/pull/502\", \n    \"title\": \"docker_image pull=always / missing\"\n  }, \n  \"20581\": {\n    \"ansible_version\": \"2.2.1.0\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ndocker_login\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.2.1.0\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nLinux\\r\\n\\r\\n##### SUMMARY\\r\\nUsing `docker_login` to log out does not work.\\r\\n\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nCopy paste from [documentation example](https://docs.ansible.com/ansible/docker_login_module.html):\\r\\n```yaml\\r\\n- name: Log out of DockerHub\\r\\n  docker_login:\\r\\n    state: absent\\r\\n    email: docker@docker.com\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nUser is removed from ~/.docker/config.json\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\n{\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"unsupported parameter for module: state\\\"}\\r\\n```\\r\\n\", \n    \"component_name\": \"docker_login\", \n    \"component_raw\": \"docker_login\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20581\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"cloud\", \n      \"docker\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_login.py\", \n    \"summary\": \"Using `docker_login` to log out does not work.\", \n    \"title\": \"docker_login\"\n  }, \n  \"20582\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nmodule lineinfile\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nDefaults\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nManager host\\u00a0: Archlinux, package ansible-git v2.3.0.28204.61e6e7868c.\\r\\nManaged hosts: Archlinux.\\r\\n\\r\\n##### SUMMARY\\r\\nSame as:\\r\\n* https://github.com/ansible/ansible/issues/15824 on `ansible/ansible`, but it got closed because the issue had to be reported in `ansible/ansible-modules-core` instead\\u00a0;\\r\\n* https://github.com/ansible/ansible-modules-core/issues/3648 on `ansible/ansible-modules-core`, still open, but locked because now issues must be reported in `ansible/ansible` :-D\\r\\n\\r\\nFor consistency, and because that\\u2019s what\\u2019s needed in real life (PAM, SSHD\\u2026), insertbefore must insert before the *first* occurrence of the regexp, not the last!\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n```yaml\\r\\n- name: configure PAM auth\\r\\n  lineinfile:\\r\\n    path: '/etc/pam.d/system-auth'\\r\\n    regexp: '^{{ item }}\\\\s.*ldap'\\r\\n    line: '{{ item }} sufficient pam_ldap.so'\\r\\n    insertbefore: '^{{ item }}\\\\s.*required'\\r\\n  with_items:\\r\\n    - auth\\r\\n    - account\\r\\n    - password\\r\\n```\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n```\\r\\n*auth sufficient pam_ldap.so*\\r\\nauth      required  pam_unix.so     try_first_pass nullok\\r\\nauth      optional  pam_permit.so\\r\\nauth      required  pam_env.so\\r\\n\\r\\naccount sufficient pam_ldap.so\\r\\naccount   required  pam_unix.so\\r\\naccount   optional  pam_permit.so\\r\\naccount   required  pam_time.so\\r\\n\\r\\npassword sufficient pam_ldap.so\\r\\npassword  required  pam_unix.so     try_first_pass nullok sha512 shadow\\r\\npassword  optional  pam_permit.so\\r\\n```\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nauth      required  pam_unix.so     try_first_pass nullok\\r\\nauth      optional  pam_permit.so\\r\\n*auth sufficient pam_ldap.so*\\r\\nauth      required  pam_env.so\\r\\n\\r\\naccount sufficient pam_ldap.so\\r\\naccount   required  pam_unix.so\\r\\naccount   optional  pam_permit.so\\r\\naccount   required  pam_time.so\\r\\n\\r\\npassword sufficient pam_ldap.so\\r\\npassword  required  pam_unix.so     try_first_pass nullok sha512 shadow\\r\\npassword  optional  pam_permit.so\\r\\n```\", \n    \"component_name\": \"lineinfile\", \n    \"component_raw\": \"module lineinfile\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20582\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/lineinfile.py\", \n    \"summary\": \"Same as:\\n\\n* https://github.com/ansible/ansible/issues/15824 on `ansible/ansible`, but it got closed because the issue had to be reported in `ansible/ansible-modules-core` instead;\\n\\n* https://github.com/ansible/ansible-modules-core/issues/3648 on `ansible/ansible-modules-core`, still open, but locked because now issues must be reported in `ansible/ansible` :-D\\n\\n\\n\\nFor consistency, and because thats whats needed in real life (PAM, SSHD), insertbefore must insert before the *first* occurrence of the regexp, not the last!\", \n    \"title\": \"lineinfile module : insertbefore should insert before first match of specified regular expression\"\n  }, \n  \"20583\": {\n    \"ansible_version\": \"ansible 2.2.0\", \n    \"body\": \"##### ISSUE TYPE\\n- Feature Pull Request\\n##### COMPONENT NAME\\n\\nansible-module-extras/cloud/dimensiondata/dimensiondata_firewall.py\\n##### ANSIBLE VERSION\\n\\n```\\nansible 2.2.0\\n```\\n##### SUMMARY\\n\\nThis is Ansible module support for apache-libcloud functions.\\nSpecifically, this code supports Ansible invocations of DimensionData's \\nfirewall functionality.\\n\\nThis is to support a new capability within ansible, so there is no \\\"BEFORE\\\".\\nNote that this routine has an \\\"action verb\\\" which allows multiple different\\nactions to be performed on a firewall.  Below shows the ansible call to\\ncreate a firewall, along with its output.\\n\\n```\\n    - name: Create MCP 2.0 firewall rule\\n      dimensiondata_firewall:\\n        region: \\\"{{dimension_data_region}}\\\"\\n        location: \\\"{{dimension_data_location}}\\\"\\n        network_domain: \\\"{{dimension_data_network_domain}}\\\"\\n        name: firewall_ansible_test\\n        state: enabled\\n        action: ACCEPT_DECISIVELY\\n        ip_version: IPv4\\n        protocol: TCP\\n        source: ANY\\n        source_port: ANY\\n        destination: 168.128.28.100\\n        destination_port: 5555\\n        position: LAST\\n\\n    TASK [Create MCP 2.0 firewall rule] ********************************************\\n    changed: [127.0.0.1] => {\\\"changed\\\": true, \\\"firewall_rule\\\": {\\\"action\\\": \\\"ACCEPT_DECISIVELY\\\", \\\"enabled\\\": \\\"true\\\", \\\"id\\\": \\\"3a456e4d-69e1-4650-b9ba-3d1ce42bdfbb\\\", \\\"ip_version\\\": \\\"IPv4\\\", \\\"location\\\": {\\\"country\\\": \\\"US\\\", \\\"id\\\": \\\"NA12\\\", \\\"name\\\": \\\"US - West - MCP 2.0\\\"}, \\\"name\\\": \\\"firewall_ansible_test\\\", \\\"protocol\\\": \\\"TCP\\\", \\\"status\\\": null}, \\\"msg\\\": \\\"Firewall rule created successfully.\\\"}\\n\\n```\\n###### REQUIRES\\n\\nhttps://github.com/ansible/ansible/pull/17604\\nhttps://github.com/apache/libcloud/pull/858\\n\", \n    \"component_name\": \"ansible- -extras/cloud/dimensiondata/dimensiondata_firewall.py\", \n    \"component_raw\": \"ansible-module-extras/cloud/dimensiondata/dimensiondata_firewall.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20583\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"feature\", \n      \"module\", \n      \"needs_triage\", \n      \"new_module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/dimensiondata/dimensiondata_firewall.py\", \n    \"summary\": \"This is Ansible module support for apache-libcloud functions.\\nSpecifically, this code supports Ansible invocations of DimensionData's \\nfirewall functionality.\\n\\nThis is to support a new capability within ansible, so there is no \\\"BEFORE\\\".\\nNote that this routine has an \\\"action verb\\\" which allows multiple different\\nactions to be performed on a firewall.  Below shows the ansible call to\\ncreate a firewall, along with its output.\\n\\n```\\n    - name: Create MCP 2.0 firewall rule\\n      dimensiondata_firewall:\\n        region: \\\"{{dimension_data_region}}\\\"\\n        location: \\\"{{dimension_data_location}}\\\"\\n        network_domain: \\\"{{dimension_data_network_domain}}\\\"\\n        name: firewall_ansible_test\\n        state: enabled\\n        action: ACCEPT_DECISIVELY\\n        ip_version: IPv4\\n        protocol: TCP\\n        source: ANY\\n        source_port: ANY\\n        destination: 168.128.28.100\\n        destination_port: 5555\\n        position: LAST\\n\\n    TASK [Create MCP 2.0 firewall rule] ********************************************\\n    changed: [127.0.0.1] => {\\\"changed\\\": true, \\\"firewall_rule\\\": {\\\"action\\\": \\\"ACCEPT_DECISIVELY\\\", \\\"enabled\\\": \\\"true\\\", \\\"id\\\": \\\"3a456e4d-69e1-4650-b9ba-3d1ce42bdfbb\\\", \\\"ip_version\\\": \\\"IPv4\\\", \\\"location\\\": {\\\"country\\\": \\\"US\\\", \\\"id\\\": \\\"NA12\\\", \\\"name\\\": \\\"US - West - MCP 2.0\\\"}, \\\"name\\\": \\\"firewall_ansible_test\\\", \\\"protocol\\\": \\\"TCP\\\", \\\"status\\\": null}, \\\"msg\\\": \\\"Firewall rule created successfully.\\\"}\\n\\n```\\n###### REQUIRES\\n\\nhttps://github.com/ansible/ansible/pull/17604\\nhttps://github.com/apache/libcloud/pull/858\", \n    \"title\": \"New dimensiondata firewall\"\n  }, \n  \"20584\": {\n    \"ansible_version\": \"ansible 2.1.2.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - New Module Pull Request\\r\\n\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!---Big Mon Policy -->\\r\\nBig Mon Policy\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.1.2.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nModule representing Big Mon out-of-band policies, similar to merged Big Mon chain (network/bigswitch/bigmon_chain)\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"big mon policy\", \n    \"component_raw\": \"Big Mon Policy\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20584\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"docker\", \n      \"module\", \n      \"needs_triage\", \n      \"networking\", \n      \"new_module\", \n      \"new_plugin\", \n      \"test\"\n    ], \n    \"module_match\": \"lib/ansible/modules/network/bigswitch/bigmon_policy.py\", \n    \"summary\": \"Module representing Big Mon out-of-band policies, similar to merged Big Mon chain (network/bigswitch/bigmon_chain)\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"Add bigmon policy module\"\n  }, \n  \"20589\": {\n    \"ansible_version\": \"ansible 2.2.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ninclude_role\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY / STEPS TO REPRODUCE\\r\\nWhen I include a role from another role, the include statement of the included role is not able to find the file. For example:\\r\\n\\r\\nRole A includes role B\\r\\n\\r\\n```yaml\\r\\n- name: Include other role\\r\\n  include_role:\\r\\n    name: roleB\\r\\n```\\r\\n\\r\\nand role B is split into multiple task files:\\r\\n\\r\\n```yaml\\r\\n- name: Install\\r\\n  include: install.yml\\r\\n\\r\\n- name: Configure\\r\\n  include: configure.yml\\r\\n```\\r\\n\\r\\nWhen role B is directly used from a play everything works fine, but using it from task A failed with '_file not found errors_'.\\r\\n\\r\\nI have been able to 'fix' this issue by using the `role_path` variable:\\r\\n\\r\\n```yaml\\r\\n- name: Install\\r\\n  include: \\\"{{ role_path }}/tasks/install.yml\\\"\\r\\n\\r\\n- name: Configure\\r\\n  include: \\\"{{ role_path }}/tasks/configure.yml\\\"\\r\\n```\\r\\n\\r\\n\", \n    \"component_name\": \"include_role\", \n    \"component_raw\": \"include_role\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20589\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"needs_triage\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/include_role.py\", \n    \"summary\": \"/\", \n    \"title\": \"include_role: Cannot find tasks files of included role\"\n  }, \n  \"20590\": {\n    \"ansible_version\": \"ansible-playbook 2.3.0 (roledeps ff45139e08) last updated 2017/01/24 093832 (GMT +200)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nrole/metadata\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible-playbook 2.3.0 (roledeps ff45139e08) last updated 2017/01/24 09:38:32 (GMT +200)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\nadd new SKIP_ROLE_DEPENDENCIES  configuration variable (boolean, default false):\\r\\nif false: act normally\\r\\nif true: don't load dependencies from metadata.\\r\\nthis can be useful when we have two roles A and B in a playbook.\\r\\nLet's say:\\r\\n- hosts: localhost\\r\\n  roles:\\r\\n    - { role: yum, tags: [\\\"yum\\\",\\\"dnf\\\"] }\\r\\n    - { role: sshd, tags: [\\\"sshd\\\"] }\\r\\nsshd depends on yum (in metadata/main.yml), but you occasionnally want to run sshd without running tasks from yum role (because it would update all packages), and you don't even want to run tasks in yum.\\r\\nThis of course implies tag \\\"sshd\\\" (in the given example) is only in sshd role.\\r\\nIn case of complex playbooks, this might accelerate the run drastically if one want to run a single role/tag.\\r\\n```\\r\\nrewrite from https://github.com/ansible/ansible/pull/20550 (due to some rebase errors on my local repo, sorry for the time lost)\\r\\n\", \n    \"component_name\": \"role/metadata\", \n    \"component_raw\": \"role/metadata\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20590\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:constants\", \n      \"feature\", \n      \"needs_revision\", \n      \"needs_triage\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"```\\n\\nadd new SKIP_ROLE_DEPENDENCIES\", \n    \"title\": \"roledeps\"\n  }, \n  \"20591\": {\n    \"ansible_version\": \"[root@gsljumphost doc_isse] ansible --version\\nansible 2.1.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"\\r\\n##### ISSUE TYPE\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nModule: docker_container\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n[root@gsljumphost doc_isse]# ansible --version\\r\\nansible 2.1.0.0\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nMention any settings you have changed/added/removed in ansible.cfg : None\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nOS : Centos 7\\r\\n\\r\\n##### SUMMARY\\r\\nThe example given for configuring syslog output at https://docs.ansible.com/ansible/docker_container_module.html does not work on latest docker version. The logging option 'syslog-tag' is changed to 'tag' (Ref:  https://docs.docker.com/engine/admin/logging/overview/) \\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nRun the site.yml given below on any server with docker version 1.13/greater\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```\\r\\nroot@gsljumphost doc_isse]# docker --version\\r\\nDocker version 1.13.0, build 49bf474\\r\\n\\r\\n[root@gsljumphost doc_isse]# cat site.yml \\r\\n- hosts:\\r\\n  - all\\r\\n\\r\\n  tasks:\\r\\n    - name: Syslogging output\\r\\n      docker_container:\\r\\n        name: myservice\\r\\n        image: busybox\\r\\n        log_driver: syslog\\r\\n        log_options:\\r\\n          syslog-address: tcp://localhost:514\\r\\n          syslog-facility: daemon\\r\\n          syslog-tag: myservice\\r\\n\\r\\n\\r\\n[root@gsljumphost doc_isse]# ansible-playbook -i \\\"localhost,\\\" -c local site.yml \\r\\n\\r\\nPLAY [all] *********************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [Syslogging output] *******************************************************\\r\\nfatal: [localhost]: FAILED! => {\\\"changed\\\": false, \\\"failed\\\": true, \\\"msg\\\": \\\"Error creating container: 500 Server Error: Internal Server Error (\\\\\\\"unknown log opt 'syslog-tag' for syslog log driver\\\\\\\")\\\"}\\r\\n\\r\\nNO MORE HOSTS LEFT *************************************************************\\r\\n\\tto retry, use: --limit @site.retry\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=0    unreachable=0    failed=1  \\r\\n\\r\\n```\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nContainer should be created successfully and logs from container should have program-name 'myservice'\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nAnsible playbook fails with error: unknown log opt 'syslog-tag' for syslog log driver\\r\\n\", \n    \"component_name\": \"docker_container\", \n    \"component_raw\": \"Module: docker_container\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20591\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.1\", \n      \"cloud\", \n      \"docker\", \n      \"docs_report\", \n      \"module\", \n      \"needs_triage\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/docker/docker_container.py\", \n    \"summary\": \"The example given for configuring syslog output at https://docs.ansible.com/ansible/docker_container_module.html does not work on latest docker version. The logging option 'syslog-tag' is changed to 'tag' (Ref:  https://docs.docker.com/engine/admin/logging/overview/)\", \n    \"title\": \"Non-working example for configuring log driver in ansible module docker_container \"\n  }, \n  \"20592\": {\n    \"ansible_version\": \"2.2.1.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - New Module Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nlogstash_plugin\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\n2.2.1.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n\\r\\nAdd support to logstash_plugin module, inspired by elasticsearch_plugin module. This module permits to manage logstash plugins (add, remove, specific version)\\r\\n\", \n    \"component_name\": \"logstash_plugin\", \n    \"component_raw\": \"logstash_plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20592\", \n    \"issue_type\": \"new module pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"module\", \n      \"needs_revision\", \n      \"new_module\", \n      \"new_plugin\"\n    ], \n    \"module_match\": \"lib/ansible/modules/monitoring/logstash_plugin.py\", \n    \"summary\": \"Add support to logstash_plugin module, inspired by elasticsearch_plugin module. This module permits to manage logstash plugins (add, remove, specific version)\", \n    \"title\": \"Add logstash_plugin to manage logstash plugins\"\n  }, \n  \"20593\": {\n    \"ansible_version\": \"ansible 2.2.1.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nAnsible core\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nansible 2.2.1.0\\r\\n\\r\\n##### CONFIGURATION\\r\\ndeafult, installed from Ansible ppa\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nN/A\\r\\n\\r\\n##### SUMMARY\\r\\nLooks like new version of Ansible 2.2.1 fails in some cases when processing playbooks and templates\\r\\nthat have quotation\\r\\nPrevious version 2.2.0 works fine\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nthis is from Kargo playbook, ansible playbook to install Kubernetes\\r\\nworks with Ansible 2.2.0 and fails with 2.2.1\\r\\n\\r\\n- name: Register docker images info\\r\\n  shell: \\\"{{ docker_bin_dir }}/docker images -q | xargs {{ docker_bin_dir }}/docker inspect -f {% raw %}'{{.RepoTags}},{{.RepoDigests}}'{% endraw %}\\\"\\r\\n  register: docker_images_raw\\r\\n  failed_when: false\\r\\n  when: not download_always_pull|bool\\r\\n\\r\\nthis works for 2.2.1\\r\\n\\r\\n- name: Register docker images info\\r\\n  raw: >-\\r\\n    {{ docker_bin_dir }}/docker images -q | xargs {{ docker_bin_dir }}/docker inspect -f \\\"{{ '{{' }} .RepoTags {{ '}}' }},{{ '{{' }} .RepoDigests {{ '}}' }}\\\"\\r\\n  register: docker_images_raw\\r\\n  failed_when: false\\r\\n  when: not download_always_pull|bool\\r\\n\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nAt least some notes to Release Notes for 2.2.1 changes about quotation\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\nI have automatic installation of Ansible from PPA, but with new version my roles are completely broken\\r\\nand need to be reviewed/refactored.\\r\\nMoreover, 2.2.0 is removed from PPA, so for me it is really disaster and work stopper.\\r\\n\\r\\nCan you please put 2.2.0 back in PPA and PLEASE note in case of such  significant changes. \\r\\n\\r\\nThanks!\", \n    \"component_name\": \"ansible core\", \n    \"component_raw\": \"Ansible core\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20593\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"needs_triage\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"Looks like new version of Ansible 2.2.1 fails in some cases when processing playbooks and templates\\n\\nthat have quotation\\n\\nPrevious version 2.2.0 works fine\", \n    \"title\": \"Ansible 2.2.1 fails on quotations in playbooks and templates, most playbooks broken\"\n  }, \n  \"20594\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 0333fb77d2) last updated 2017/01/24 103912 (GMT +200)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [u/usr/share/ansible]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\n`yum` module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (devel 0333fb77d2) last updated 2017/01/24 10:39:12 (GMT +200)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = [u'/usr/share/ansible']\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nThis pull request will ensure that the downloaded files are always deleted when using `yum` module with urls. Currently, the dowloaded files are still present in `/tmp` (or the temporary directory used on the target machine) when ansible has finished. This can exhaust the disk space or the memory (for tmpfs) of the machine when the ansible playbook is run several times.\\r\\n\\r\\nIt will also prevent errors when using `state=latest` with local rpm or rpm fetched from url, simply ignoring them if they are already installed. Here is the output we get before the fix:\\r\\n\\r\\n\\r\\n```\\r\\nfailed: [test5] (item=[u'http://example.com/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm']) => {\\\"changed\\\": true, \\\"failed\\\": true,\\r\\n\\\"item\\\": [\\\"http://example.com/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm\\\"], \\\"msg\\\": \\\"Error: Nothing to do\\\", \\\"rc\\\": 1,\\r\\n\\\"results\\\": [\\\"Loaded plugins: fastestmirror\\r\\nExamining /var/tmp/yum-root-EevoYD/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm: oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64\\r\\n/var/tmp/yum-root-EevoYD/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm: does not update installed package.\\\"]}\\r\\n```\\r\\n\\r\\nAfter the fix, the update is simply ignored:\\r\\n\\r\\n```\\r\\nok: [test5] => (item=[u'http://example.com/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm']) => {\\\"changed\\\": false,\\r\\n\\\"item\\\": [\\\"http://example.com/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm\\\"], \\\"msg\\\": \\\"\\\", \\\"rc\\\": 0, \\\"results\\\": [\\\"\\\"]}\\r\\n```\\r\\n\\r\\nAnd it still works if the package is not installed:\\r\\n\\r\\n```\\r\\nchanged: [test5] => (item=[u'http://example.com/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm']) =>\\r\\n{\\\"changed\\\": true, \\\"item\\\": [\\\"http://example.com/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm\\\"], \\\"msg\\\": \\\"\\\", \\\"rc\\\": 0,\\r\\n\\\"results\\\": [\\\"Loaded plugins: fastestmirror\\r\\nExamining /tmp/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64roiPxH.rpm: oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64\\r\\nMarking /tmp/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64roiPxH.rpm to be installed\\r\\nResolving Dependencies\\r\\n--> Running transaction check\\r\\n---> Package oracle-instantclient11.2-basic.x86_64 0:11.2.0.4.0-1 will be installed\\r\\n--> Finished Dependency Resolution\\r\\n\\r\\nDependencies Resolved\\r\\n\\r\\n================================================================================\\r\\nPackage\\r\\nArch   Version\\r\\nRepository                                                 Size\\r\\n================================================================================\\r\\nInstalling:\\r\\noracle-instantclient11.2-basic\\r\\nx86_64 11.2.0.4.0-1\\r\\n/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64roiPxH 179 M\\r\\n\\r\\nTransaction Summary\\r\\n================================================================================\\r\\nInstall  1 Package\\r\\n\\r\\nTotal size: 179 M\\r\\nInstalled size: 179 M\\r\\nDownloading packages:\\r\\nRunning transaction check\\r\\nRunning transaction test\\r\\nTransaction test succeeded\\r\\nRunning transaction\\r\\nInstalling : oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64           1/1 \\r\\nVerifying  : oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64           1/1 \\r\\n\\r\\nInstalled:\\r\\noracle-instantclient11.2-basic.x86_64 0:11.2.0.4.0-1                          \\r\\n\\r\\nComplete!\\\"]}\\r\\n```\\r\\n\\r\\nFinally, all the downloaded files are removed up from the `/tmp` directory.\\r\\n\\r\\n##### TODO\\r\\n\\r\\nThis fix might also be needed for `apt` module.\\r\\n\", \n    \"component_name\": \"yum\", \n    \"component_raw\": \"`yum` module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20594\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"core_review\", \n      \"module\", \n      \"needs_triage\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/yum.py\", \n    \"summary\": \"This pull request will ensure that the downloaded files are always deleted when using `yum` module with urls. Currently, the dowloaded files are still present in `/tmp` (or the temporary directory used on the target machine) when ansible has finished. This can exhaust the disk space or the memory (for tmpfs) of the machine when the ansible playbook is run several times.\\n\\n\\n\\nIt will also prevent errors when using `state=latest` with local rpm or rpm fetched from url, simply ignoring them if they are already installed. Here is the output we get before the fix:\\n\\n\\n\\n\\n\\n```\\n\\nfailed: [test5] (item=[u'http://example.com/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm']) => {\\\"changed\\\": true, \\\"failed\\\": true,\\n\\n\\\"item\\\": [\\\"http://example.com/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm\\\"], \\\"msg\\\": \\\"Error: Nothing to do\\\", \\\"rc\\\": 1,\\n\\n\\\"results\\\": [\\\"Loaded plugins: fastestmirror\\n\\nExamining /var/tmp/yum-root-EevoYD/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm: oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64\\n\\n/var/tmp/yum-root-EevoYD/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm: does not update installed package.\\\"]}\\n\\n```\\n\\n\\n\\nAfter the fix, the update is simply ignored:\\n\\n\\n\\n```\\n\\nok: [test5] => (item=[u'http://example.com/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm']) => {\\\"changed\\\": false,\\n\\n\\\"item\\\": [\\\"http://example.com/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm\\\"], \\\"msg\\\": \\\"\\\", \\\"rc\\\": 0, \\\"results\\\": [\\\"\\\"]}\\n\\n```\\n\\n\\n\\nAnd it still works if the package is not installed:\\n\\n\\n\\n```\\n\\nchanged: [test5] => (item=[u'http://example.com/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm']) =>\\n\\n{\\\"changed\\\": true, \\\"item\\\": [\\\"http://example.com/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm\\\"], \\\"msg\\\": \\\"\\\", \\\"rc\\\": 0,\\n\\n\\\"results\\\": [\\\"Loaded plugins: fastestmirror\\n\\nExamining /tmp/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64roiPxH.rpm: oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64\\n\\nMarking /tmp/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64roiPxH.rpm to be installed\\n\\nResolving Dependencies\\n\\n--> Running transaction check\\n\\n---> Package oracle-instantclient11.2-basic.x86_64 0:11.2.0.4.0-1 will be installed\\n\\n--> Finished Dependency Resolution\\n\\n\\n\\nDependencies Resolved\\n\\n\\n\\n================================================================================\\n\\nPackage\\n\\nArch   Version\\n\\nRepository                                                 Size\\n\\n================================================================================\\n\\nInstalling:\\n\\noracle-instantclient11.2-basic\\n\\nx86_64 11.2.0.4.0-1\\n\\n/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64roiPxH 179 M\\n\\n\\n\\nTransaction Summary\\n\\n================================================================================\\n\\nInstall  1 Package\\n\\n\\n\\nTotal size: 179 M\\n\\nInstalled size: 179 M\\n\\nDownloading packages:\\n\\nRunning transaction check\\n\\nRunning transaction test\\n\\nTransaction test succeeded\\n\\nRunning transaction\\n\\nInstalling : oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64           1/1 \\n\\nVerifying  : oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64           1/1 \\n\\n\\n\\nInstalled:\\n\\noracle-instantclient11.2-basic.x86_64 0:11.2.0.4.0-1                          \\n\\n\\n\\nComplete!\\\"]}\\n\\n```\\n\\n\\n\\nFinally, all the downloaded files are removed up from the `/tmp` directory.\\n\\n\\n\\n##### TODO\\n\\n\\n\\nThis fix might also be needed for `apt` module.\", \n    \"title\": \"Clean downloaded rpm files after install\"\n  }, \n  \"20595\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Documentation Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/task/feature -->\\r\\nwin_regedit\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nAll examples use HKCU registry keys, and the documentation does not state what the other possibilities are. From experience I know these:\\r\\n- HKCR: (HKEY_CLASSES_ROOT)\\r\\n- HKCU: (HKEY_CURRENT_USER)\\r\\n- HKLM: (HKEY_LOCAL_MACHINE)\\r\\n\\r\\nAnd I assume:\\r\\n- ~HKUS:~ (HKEY_USERS) ?\\r\\n- HKCC: (HKEY_CURRENT_CONFIG) ?\\r\\n\\r\\nMore variety in examples (and maybe a list of possibilities) is needed here.\", \n    \"component_name\": \"win_regedit\", \n    \"component_raw\": \"win_regedit\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20595\", \n    \"issue_type\": \"Documentation Report\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bot_broken\", \n      \"docs_report\", \n      \"module\", \n      \"windows\"\n    ], \n    \"module_match\": \"lib/ansible/modules/windows/win_regedit.py\", \n    \"summary\": \"All examples use HKCU registry keys, and the documentation does not state what the other possibilities are. From experience I know these:\\n\\n- HKCR: (HKEY_CLASSES_ROOT)\\n\\n- HKCU: (HKEY_CURRENT_USER)\\n\\n- HKLM: (HKEY_LOCAL_MACHINE)\\n\\n\\n\\nAnd I assume:\\n\\n- ~HKUS:~ (HKEY_USERS) ?\\n\\n- HKCC: (HKEY_CURRENT_CONFIG) ?\\n\\n\\n\\nMore variety in examples (and maybe a list of possibilities) is needed here.\", \n    \"title\": \"win_regedit: Example only use HKCU\"\n  }, \n  \"20596\": {\n    \"ansible_version\": \"ansible 2.2.1.0\\nconfig file = /Users/evert/git/ansible-variable-bug/ansible.cfg\\nconfigured module search path = [./library]\", \n    \"body\": \"I have not found a similar issue open already, however I must say I did not verify all 1505.\\r\\nThe problem exists in 2.2.0.0, 2.2.1.0 and when using a checkout of the devel branch.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nwith_items only updates variables once if the type is the same\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file = /Users/evert/git/ansible-variable-bug/ansible.cfg\\r\\n  configured module search path = ['./library']\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\nAnsible.cfg\\r\\n```\\r\\n[defaults]\\r\\nhostfile = hosts\\r\\nroles_path = roles\\r\\nlibrary = ./library\\r\\nretry_files_enabled = False\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\nMacintosh, Ubuntu 14\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nThis is either a bug in Ansible or I don\\u2019t see my error. The example playbook launches a role 2 times, first with testvalue = true, testvalue2=false. Afterwards with testvalue = false, testvalue2 = true. When using or printing out the variables, it prints true - false, true - false twice instead of using the adapted variables.\\r\\n\\r\\nThe values are changed if the type changes. For example by first using a bool testvalue = true and afterwards a string (between quotes) testvalue = \\\"false\\\"\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\nA simplified example can be found here:\\r\\nhttps://github.com/EvertMDC/ansible-variable-bug\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\n```yaml\\r\\n# does not update the variables\\r\\nansible-playbook testbug.yml \\r\\n# does update the variables, first using boolean and afterwards strings to set the values\\r\\nansible-playbook testbug_different_vartype.yml \\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nPrinted variables should reflect those given in the playbook\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\nPrinted variables are not updated if the type remains the same.\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\n#### Not updated, output of testbug.yml\\r\\nYou will see true - false, true - false\\r\\n```\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [role_testbug : Printing out values] **************************************\\r\\nok: [localhost] => (item={u'k': u'testvalue', u'v': u'true'}) => {\\r\\n    \\\"item\\\": {\\r\\n        \\\"k\\\": \\\"testvalue\\\",\\r\\n        \\\"v\\\": \\\"true\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"value true key testvalue\\\"\\r\\n}\\r\\nok: [localhost] => (item={u'k': u'testvalue2', u'v': u'false'}) => {\\r\\n    \\\"item\\\": {\\r\\n        \\\"k\\\": \\\"testvalue2\\\",\\r\\n        \\\"v\\\": \\\"false\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"value false key testvalue2\\\"\\r\\n}\\r\\n\\r\\nTASK [role_testbug : Printing out values] **************************************\\r\\nok: [localhost] => (item={u'k': u'testvalue', u'v': u'true'}) => {\\r\\n    \\\"item\\\": {\\r\\n        \\\"k\\\": \\\"testvalue\\\",\\r\\n        \\\"v\\\": \\\"true\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"value true key testvalue\\\"\\r\\n}\\r\\nok: [localhost] => (item={u'k': u'testvalue2', u'v': u'false'}) => {\\r\\n    \\\"item\\\": {\\r\\n        \\\"k\\\": \\\"testvalue2\\\",\\r\\n        \\\"v\\\": \\\"false\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"value false key testvalue2\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=3    changed=0    unreachable=0    failed=0\\r\\n```\\r\\n#### Updated, output of testbug_different_vartype.yml\\r\\nYou will see true - false, false - true\\r\\n```\\r\\nPLAY [localhost] ***************************************************************\\r\\n\\r\\nTASK [setup] *******************************************************************\\r\\nok: [localhost]\\r\\n\\r\\nTASK [role_testbug : Printing out values] **************************************\\r\\nok: [localhost] => (item={u'k': u'testvalue', u'v': u'true'}) => {\\r\\n    \\\"item\\\": {\\r\\n        \\\"k\\\": \\\"testvalue\\\",\\r\\n        \\\"v\\\": \\\"true\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"value true key testvalue\\\"\\r\\n}\\r\\nok: [localhost] => (item={u'k': u'testvalue2', u'v': u'false'}) => {\\r\\n    \\\"item\\\": {\\r\\n        \\\"k\\\": \\\"testvalue2\\\",\\r\\n        \\\"v\\\": \\\"false\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"value false key testvalue2\\\"\\r\\n}\\r\\n\\r\\nTASK [role_testbug : Printing out values] **************************************\\r\\nok: [localhost] => (item={u'k': u'testvalue', u'v': u'false'}) => {\\r\\n    \\\"item\\\": {\\r\\n        \\\"k\\\": \\\"testvalue\\\",\\r\\n        \\\"v\\\": \\\"false\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"value false key testvalue\\\"\\r\\n}\\r\\nok: [localhost] => (item={u'k': u'testvalue2', u'v': u'true'}) => {\\r\\n    \\\"item\\\": {\\r\\n        \\\"k\\\": \\\"testvalue2\\\",\\r\\n        \\\"v\\\": \\\"true\\\"\\r\\n    },\\r\\n    \\\"msg\\\": \\\"value true key testvalue2\\\"\\r\\n}\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=3    changed=0    unreachable=0    failed=0\\r\\n```\", \n    \"component_name\": \"with_items only updates variables once if the type is the same\", \n    \"component_raw\": \"with_items only updates variables once if the type is the same\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20596\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"needs_triage\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This is either a bug in Ansible or I dont see my error. The example playbook launches a role 2 times, first with testvalue = true, testvalue2=false. Afterwards with testvalue = false, testvalue2 = true. When using or printing out the variables, it prints true - false, true - false twice instead of using the adapted variables.\\n\\n\\n\\nThe values are changed if the type changes. For example by first using a bool testvalue = true and afterwards a string (between quotes) testvalue = \\\"false\\\"\", \n    \"title\": \"Variables not reflecting values in playbook when using with_items\"\n  }, \n  \"20597\": {\n    \"ansible_version\": \"ansible 2.2.1.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\ntemplate_module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.1.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nWhen **Role Includes the Role**, the template module browse the incorrect path looking for a template file\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n\\r\\n```\\r\\n[run with -vvvvv to see the paths]\\r\\n\\r\\nTASK [app_campaigns_manager : Ensure service configuration] ********************\\r\\ntask path: /home/me/ansible/etc/playbooks/roles/app_generic/tasks/service.yml:1\\r\\nlooking for \\\"upstart.conf\\\" at \\\"/home/me/ansible/etc/playbooks/roles/app_campaigns_manager/templates/upstart.conf\\\"\\r\\nlooking for \\\"upstart.conf\\\" at \\\"/home/me/ansible/etc/playbooks/roles/app_campaigns_manager/upstart.conf\\\"\\r\\nlooking for \\\"upstart.conf\\\" at \\\"/home/me/ansible/etc/playbooks/roles/app_generic/tasks/templates/upstart.conf\\\"  <<< TASKS?\\r\\nlooking for \\\"upstart.conf\\\" at \\\"/home/me/ansible/etc/playbooks/roles/app_generic/tasks/upstart.conf\\\"\\r\\nlooking for \\\"upstart.conf\\\" at \\\"/home/me/ansible/etc/playbooks/templates/upstart.conf\\\"\\r\\nlooking for \\\"upstart.conf\\\" at \\\"/home/me/ansible/etc/playbooks/upstart.conf\\\"\\r\\n```\\r\\nThe correct path is:\\r\\n`/home/me/ansible/etc/playbooks/roles/app_generic/templates/upstart.conf`\\r\\n\\r\\n##### Observation\\r\\nThe problem happen, because the playbook include the role that include the role:\\r\\n`playbook -> role: app_campaigns_manager -> role: app_generic`\\r\\n\\r\\n```\\r\\nplaybook.yml\\r\\n(...)\\r\\n roles: app_campaigns_manager \\r\\n\\r\\n\\r\\nroles/app_campaigns_manager/tasks/main.yml\\r\\n(...)\\r\\n- include: ../../app_so1_generic/tasks/main.yml\\r\\n\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nBrowse the proper files :)\\r\\n\\r\\n\\r\\nI know the template_module has 'template_path' and 'template_fullpath', but still it would be nice it the roles would be aware of it's location independent of it's include/execution. \\r\\n\\r\\n---\\r\\nI may take a minute later, to prepare PR, but having rather busy time, so any help appreciated.\", \n    \"component_name\": \"template_module\", \n    \"component_raw\": \"template_module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20597\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"needs_triage\"\n    ], \n    \"module_match\": \"lib/ansible/modules/utilities/logic/include.py\", \n    \"summary\": \"When **Role Includes the Role**, the template module browse the incorrect path looking for a template file\", \n    \"title\": \"template_module lose it's relative path when role include other role\"\n  }, \n  \"20598\": {\n    \"ansible_version\": \"$ ansible --version\\nansible 2.2.0.0\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"We changed the name of the github repo awhile back and I noticed it was out of date in the docs.\\r\\n\\r\\n##### ISSUE TYPE\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncredstash lookup plugin\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n$ ansible --version\\r\\nansible 2.2.0.0\\r\\n  config file =\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nThis change updates the credstash lookup docs to use the new github url for the projects in the Fugue organization. \\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\n\\r\\n<!-- Paste verbatim command output below, e.g. before and after your change -->\\r\\n```\\r\\n\\r\\n```\\r\\n\", \n    \"component_name\": \"credstash lookup plugin\", \n    \"component_raw\": \"credstash lookup plugin\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20598\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"docs\", \n      \"needs_triage\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"This change updates the credstash lookup docs to use the new github url for the projects in the Fugue organization. \\n\\n\\n\\n\\n\\n\\n\\n```\\n\\n\\n\\n```\", \n    \"title\": \"Updating credstash link to the new link\"\n  }, \n  \"20599\": {\n    \"ansible_version\": \"v2.3\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n - Bugfix Pull Request\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nwin_regedit\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nv2.3\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\n<!---\\r\\nIf you are fixing an existing issue, please include \\\"Fixes #nnn\\\" in your\\r\\ncommit message and your description; but you should still explain what\\r\\nthe change does.\\r\\n-->\\r\\nThe following changes have been made:\\r\\n- Added check-mode support\\r\\n- Added diff support\\r\\n- Corrected HCCC to HKCC (according to windows documentation)\\r\\n- Updated documentation, and examples\\r\\n- Added -aliases support to module_utils/powershell.ps1\\r\\n- Renamed `key > value > data` to `path > name > data`\\r\\n- Re-indented code and consistency changes\\r\\n\\r\\nThis fixes ##20595\", \n    \"component_name\": \"win_regedit\", \n    \"component_raw\": \"win_regedit\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20599\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [], \n    \"module_match\": \"lib/ansible/modules/windows/win_regedit.ps1\", \n    \"summary\": \"The following changes have been made:\\n\\n- Added check-mode support\\n\\n- Added diff support\\n\\n- Corrected HCCC to HKCC (according to windows documentation)\\n\\n- Updated documentation, and examples\\n\\n- Added -aliases support to module_utils/powershell.ps1\\n\\n- Renamed `key > value > data` to `path > name > data`\\n\\n- Re-indented code and consistency changes\\n\\n\\n\\nThis fixes ##20595\", \n    \"title\": \"win_regedit: Cleanup, check/diff mode support, HKCC fix\"\n  }, \n  \"20601\": {\n    \"ansible_version\": \"ansible 2.3.0 (devel 5475f3ee64) last updated 2017/01/24 072649 (GMT +000)\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nuser module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0 (devel 5475f3ee64) last updated 2017/01/24 07:26:49 (GMT +000)\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nI have done four changes. The first two are related to and based on [PR 2426 in ansible-modules-core](https://github.com/ansible/ansible-modules-core/pull/2426):\\r\\n1. In exactly the same way as davidmaitland, I added option 'never' to be accepted as expire parameter.\\r\\n2. In slightly different way, I implemented checking current expiry time. The difference is that David was expecting users to provide epoch time with midnight in UTC - any other value caused subsequent runs to return state \\\"changed\\\", even if nothing had been modified. My implementation calculates the value that is expected to be in the shadow file (days since 1.01.1970, in case of Linux), instead of comparing the epoch times themselves. Value returned by the module is still the epoch time, but recalculated to UTC midnight of the provided date.\\r\\n3. I fixed time conversions - the reverse to time.gmtime() is not time.mktime() (which expects local time), but calendar.timegm(), as written in [Python doc](https://docs.python.org/2/library/time.html).\\r\\n4. The implementation of account expiration on FreeBSD was probably buggy. I know that it's a feature PR, not bug PR, however I had to reimplement that functionality anyway. As [FreeBSD pw's manual](https://www.freebsd.org/cgi/man.cgi?pw(8)) says, \\\"-e\\\" parameter (both for useradd and usermod) expects either a date in format \\\"dd-mmm-yy[yy]\\\", or a UNIX timestamp. There is nothing about days since now, like it was currently implemented in the module. Correct implementation was even more simple than on Linux, as the timestamps could be used directly.\\r\\n\\r\\nThe change was tested using playbook presented below. Tests were performed on Debian, CentOS and FreeBSD.\\r\\n```\\r\\n---\\r\\n- hosts: all\\r\\n  tasks:\\r\\n  - name: \\\"create test user\\\"\\r\\n    user:\\r\\n      name: testuser\\r\\n      password: [...]\\r\\n      groups: sudo\\r\\n      append: yes\\r\\n      expires: 1485300600\\r\\n    register: user\\r\\n  - debug:\\r\\n      var: user\\r\\n```\\r\\nBefore the change:\\r\\n```\\r\\nPLAY [all] ****************************************************************************************************************************************************************************************\\r\\n\\r\\nTASK [Gathering Facts] ****************************************************************************************************************************************************************************\\r\\nok: [jessie]\\r\\n\\r\\nTASK [create test user] ****************************************************************************************************************************************************\\r\\nchanged: [jessie]\\r\\n\\r\\nTASK [debug] **************************************************************************************************************************************************************************************\\r\\nok: [jessie] => {\\r\\n    \\\"user\\\": {\\r\\n        \\\"append\\\": true, \\r\\n        \\\"changed\\\": true, \\r\\n        \\\"comment\\\": \\\"\\\", \\r\\n        \\\"group\\\": 1021, \\r\\n        \\\"groups\\\": \\\"sudo\\\", \\r\\n        \\\"home\\\": \\\"/home/testuser\\\", \\r\\n        \\\"move_home\\\": false, \\r\\n        \\\"name\\\": \\\"testuser\\\", \\r\\n        \\\"password\\\": \\\"NOT_LOGGING_PASSWORD\\\", \\r\\n        \\\"shell\\\": \\\"/bin/sh\\\", \\r\\n        \\\"state\\\": \\\"present\\\", \\r\\n        \\\"stderr\\\": \\\"usermod: no changes\\\\n\\\", \\r\\n        \\\"uid\\\": 1021\\r\\n    }\\r\\n}\\r\\n\\r\\nPLAY RECAP ****************************************************************************************************************************************************************************************\\r\\njessie                     : ok=3    changed=1    unreachable=0    failed=0\\r\\n```\\r\\nAfter:\\r\\n```\\r\\nPLAY [all] ****************************************************************************************************************************************************************************************\\r\\n\\r\\nTASK [Gathering Facts] ****************************************************************************************************************************************************************************\\r\\nok: [jessie]\\r\\n\\r\\nTASK [create test user] ***************************************************************************************************************************************************************************\\r\\nok: [jessie]\\r\\n\\r\\nTASK [debug] **************************************************************************************************************************************************************************************\\r\\nok: [jessie] => {\\r\\n    \\\"user\\\": {\\r\\n        \\\"append\\\": true, \\r\\n        \\\"changed\\\": false, \\r\\n        \\\"comment\\\": \\\"\\\", \\r\\n        \\\"expires\\\": 1485216000, \\r\\n        \\\"group\\\": 1021, \\r\\n        \\\"groups\\\": \\\"sudo\\\", \\r\\n        \\\"home\\\": \\\"/home/testuser\\\", \\r\\n        \\\"move_home\\\": false, \\r\\n        \\\"name\\\": \\\"testuser\\\", \\r\\n        \\\"password\\\": \\\"NOT_LOGGING_PASSWORD\\\", \\r\\n        \\\"shell\\\": \\\"/bin/sh\\\", \\r\\n        \\\"state\\\": \\\"present\\\", \\r\\n        \\\"uid\\\": 1021\\r\\n    }\\r\\n}\\r\\n\\r\\nPLAY RECAP ****************************************************************************************************************************************************************************************\\r\\njessie                     : ok=3    changed=0    unreachable=0    failed=0\\r\\n```\\r\\n\\r\\nAs you can see, now the module does not run usermod if there's no need to do that. The UNIX time is rounded to the midnight of the given day (in UTC).\\r\\n\\r\\nI have read the [module checklist](http://docs.ansible.com/ansible/dev_guide/developing_modules.html#module-checklist) and I believe my modifications meet these requirements (except return value documentation, but this module currently doesn't have this at all).\", \n    \"component_name\": \"user\", \n    \"component_raw\": \"user module\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20601\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"core_review\", \n      \"feature\", \n      \"module\"\n    ], \n    \"module_match\": \"lib/ansible/modules/system/user.py\", \n    \"summary\": \"I have done four changes. The first two are related to and based on [PR 2426 in ansible-modules-core](https://github.com/ansible/ansible-modules-core/pull/2426):\\n\\n1. In exactly the same way as davidmaitland, I added option 'never' to be accepted as expire parameter.\\n\\n2. In slightly different way, I implemented checking current expiry time. The difference is that David was expecting users to provide epoch time with midnight in UTC - any other value caused subsequent runs to return state \\\"changed\\\", even if nothing had been modified. My implementation calculates the value that is expected to be in the shadow file (days since 1.01.1970, in case of Linux), instead of comparing the epoch times themselves. Value returned by the module is still the epoch time, but recalculated to UTC midnight of the provided date.\\n\\n3. I fixed time conversions - the reverse to time.gmtime() is not time.mktime() (which expects local time), but calendar.timegm(), as written in [Python doc](https://docs.python.org/2/library/time.html).\\n\\n4. The implementation of account expiration on FreeBSD was probably buggy. I know that it's a feature PR, not bug PR, however I had to reimplement that functionality anyway. As [FreeBSD pw's manual](https://www.freebsd.org/cgi/man.cgi?pw(8)) says, \\\"-e\\\" parameter (both for useradd and usermod) expects either a date in format \\\"dd-mmm-yy[yy]\\\", or a UNIX timestamp. There is nothing about days since now, like it was currently implemented in the module. Correct implementation was even more simple than on Linux, as the timestamps could be used directly.\\n\\n\\n\\nThe change was tested using playbook presented below. Tests were performed on Debian, CentOS and FreeBSD.\\n\\n```\\n\\n---\\n\\n- hosts: all\\n\\n  tasks:\\n\\n  - name: \\\"create test user\\\"\\n\\n    user:\\n\\n      name: testuser\\n\\n      password: [...]\\n\\n      groups: sudo\\n\\n      append: yes\\n\\n      expires: 1485300600\\n\\n    register: user\\n\\n  - debug:\\n\\n      var: user\\n\\n```\\n\\nBefore the change:\\n\\n```\\n\\nPLAY [all] ****************************************************************************************************************************************************************************************\\n\\n\\n\\nTASK [Gathering Facts] ****************************************************************************************************************************************************************************\\n\\nok: [jessie]\\n\\n\\n\\nTASK [create test user] ****************************************************************************************************************************************************\\n\\nchanged: [jessie]\\n\\n\\n\\nTASK [debug] **************************************************************************************************************************************************************************************\\n\\nok: [jessie] => {\\n\\n    \\\"user\\\": {\\n\\n        \\\"append\\\": true, \\n\\n        \\\"changed\\\": true, \\n\\n        \\\"comment\\\": \\\"\\\", \\n\\n        \\\"group\\\": 1021, \\n\\n        \\\"groups\\\": \\\"sudo\\\", \\n\\n        \\\"home\\\": \\\"/home/testuser\\\", \\n\\n        \\\"move_home\\\": false, \\n\\n        \\\"name\\\": \\\"testuser\\\", \\n\\n        \\\"password\\\": \\\"NOT_LOGGING_PASSWORD\\\", \\n\\n        \\\"shell\\\": \\\"/bin/sh\\\", \\n\\n        \\\"state\\\": \\\"present\\\", \\n\\n        \\\"stderr\\\": \\\"usermod: no changes\\\\n\\\", \\n\\n        \\\"uid\\\": 1021\\n\\n    }\\n\\n}\\n\\n\\n\\nPLAY RECAP ****************************************************************************************************************************************************************************************\\n\\njessie                     : ok=3    changed=1    unreachable=0    failed=0\\n\\n```\\n\\nAfter:\\n\\n```\\n\\nPLAY [all] ****************************************************************************************************************************************************************************************\\n\\n\\n\\nTASK [Gathering Facts] ****************************************************************************************************************************************************************************\\n\\nok: [jessie]\\n\\n\\n\\nTASK [create test user] ***************************************************************************************************************************************************************************\\n\\nok: [jessie]\\n\\n\\n\\nTASK [debug] **************************************************************************************************************************************************************************************\\n\\nok: [jessie] => {\\n\\n    \\\"user\\\": {\\n\\n        \\\"append\\\": true, \\n\\n        \\\"changed\\\": false, \\n\\n        \\\"comment\\\": \\\"\\\", \\n\\n        \\\"expires\\\": 1485216000, \\n\\n        \\\"group\\\": 1021, \\n\\n        \\\"groups\\\": \\\"sudo\\\", \\n\\n        \\\"home\\\": \\\"/home/testuser\\\", \\n\\n        \\\"move_home\\\": false, \\n\\n        \\\"name\\\": \\\"testuser\\\", \\n\\n        \\\"password\\\": \\\"NOT_LOGGING_PASSWORD\\\", \\n\\n        \\\"shell\\\": \\\"/bin/sh\\\", \\n\\n        \\\"state\\\": \\\"present\\\", \\n\\n        \\\"uid\\\": 1021\\n\\n    }\\n\\n}\\n\\n\\n\\nPLAY RECAP ****************************************************************************************************************************************************************************************\\n\\njessie                     : ok=3    changed=0    unreachable=0    failed=0\\n\\n```\\n\\n\\n\\nAs you can see, now the module does not run usermod if there's no need to do that. The UNIX time is rounded to the midnight of the given day (in UTC).\\n\\n\\n\\nI have read the [module checklist](http://docs.ansible.com/ansible/dev_guide/developing_modules.html#module-checklist) and I believe my modifications meet these requirements (except return value documentation, but this module currently doesn't have this at all).\", \n    \"title\": \"Improved and fixed the expiration options in system/user module\"\n  }, \n  \"20602\": {\n    \"ansible_version\": \"ansible 2.2.1.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nplugins/callbacks/debug.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.2.1.0\\r\\n```\\r\\n\\r\\n##### CONFIGURATION\\r\\nInside `ansible.cfg`:\\r\\n```\\r\\n[defaults]\\r\\nstdout_callback = debug\\r\\n```\\r\\n##### OS / ENVIRONMENT\\r\\n* Bug **present** on Fedora 23-25 or RedHat 7.3\\r\\n* Bug **not present** on: MacOS 10.12 or Ubuntu\\r\\nBoth tested using Python 2.7\\r\\n\\r\\n##### SUMMARY\\r\\nIt seems that, at least on Fedora, the escaped newlines are not converted to normal newlines by the `debug` stdout callback, this being its main purpose: to make the output more human friendly (old name was `human_long.py`)\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\nTry to run this sample playbook\\r\\n```\\r\\n#!/usr/bin/env ansible-playbook -i localhost, -v\\r\\n---\\r\\n- name: sample playbook\\r\\n  hosts: localhost\\r\\n  gather_facts: no\\r\\n  vars:\\r\\n      ansible_connection: local\\r\\n      base_dir: \\\"{{ base_dir }}\\\"\\r\\n  tasks:\\r\\n\\r\\n    - name: \\\"This is the sample task name\\\"\\r\\n      shell: |\\r\\n         echo \\\"1\\\\n2\\\\n3\\\"\\r\\n         echo \\\"error 1\\\\nerror 2\\\\nerror 3\\\" >&2\\r\\n```\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\nTo see each stdout and stderr line on their own lines (not joined into a single line and separated by `\\\\n`)\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\n```\\r\\nPLAY [sample playbook] *********************************************************\\r\\n\\r\\nTASK [This is the sample task name] ********************************************\\r\\nchanged: [localhost] => {\\r\\n    \\\"changed\\\": true,\\r\\n    \\\"cmd\\\": \\\"echo \\\\\\\"1\\\\\\\\n2\\\\\\\\n3\\\\\\\"\\\\n echo \\\\\\\"error 1\\\\\\\\nerror 2\\\\\\\\nerror 3\\\\\\\" >&2\\\",\\r\\n    \\\"delta\\\": \\\"0:00:00.003724\\\",\\r\\n    \\\"end\\\": \\\"2017-01-24 14:06:31.806755\\\",\\r\\n    \\\"rc\\\": 0,\\r\\n    \\\"start\\\": \\\"2017-01-24 14:06:31.803031\\\",\\r\\n    \\\"warnings\\\": []\\r\\n}\\r\\n\\r\\nSTDOUT:\\r\\n\\r\\n1\\\\n2\\\\n3\\r\\n\\r\\n\\r\\nSTDERR:\\r\\n\\r\\nerror 1\\\\nerror 2\\\\nerror 3\\r\\n\\r\\n\\r\\nPLAY RECAP *********************************************************************\\r\\nlocalhost                  : ok=1    changed=1    unreachable=0    failed=0\\r\\n```\\r\\n\", \n    \"component_name\": \"plugins/callbacks/debug.py\", \n    \"component_raw\": \"plugins/callbacks/debug.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20602\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"needs_triage\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"It seems that, at least on Fedora, the escaped newlines are not converted to normal newlines by the `debug` stdout callback, this being its main purpose: to make the output more human friendly (old name was `human_long.py`)\", \n    \"title\": \"stdout_callback: debug does not always wrap the newlines as expected\"\n  }, \n  \"20605\": {\n    \"ansible_version\": \"Latest devel\", \n    \"body\": \"##### ISSUE TYPE\\r\\n\\r\\n - Docs Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n./lib/ansible/modules/packaging/os/yum.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\nLatest devel\\r\\n\\r\\n##### SUMMARY\\r\\nThis is to address https://github.com/ansible/ansible/issues/19761\", \n    \"component_name\": \"./lib/ansible/modules/packaging/os/yum.py\", \n    \"component_raw\": \"./lib/ansible/modules/packaging/os/yum.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20605\", \n    \"issue_type\": \"docs pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"core_review\", \n      \"docs\", \n      \"module\", \n      \"needs_triage\"\n    ], \n    \"module_match\": \"lib/ansible/modules/packaging/os/yum.py\", \n    \"summary\": \"This is to address https://github.com/ansible/ansible/issues/19761\", \n    \"title\": \"Fixup documentation for the list option in yum module\"\n  }, \n  \"20606\": {\n    \"ansible_version\": \"ansible 2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n`modules/notification/sns.py`\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nAdd sns's `message_attributes` parameter support. This requires accepting other `message_structure` types.\\r\\n\", \n    \"component_name\": \"s/notification/sns.py\", \n    \"component_raw\": \"`modules/notification/sns.py`\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20606\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"community_review\", \n      \"feature\", \n      \"module\", \n      \"needs_triage\"\n    ], \n    \"module_match\": \"lib/ansible/modules/notification/sns.py\", \n    \"summary\": \"Add sns's `message_attributes` parameter support. This requires accepting other `message_structure` types.\", \n    \"title\": \"add message_attributes support to sns.\"\n  }, \n  \"20607\": {\n    \"ansible_version\": \"2.3.0\", \n    \"body\": \"##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\novirt_hosts\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\n2.3.0\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\nThis PR  primarly fixes issue https://github.com/ansible/ansible/issues/20549.\\r\\nIn addition, it add ```reinstall``` state to ```ovirt_hosts``` module, so users can easily reinstall after boot parameters change. Also adds ```override_display``` and making sure we are waiting before running a first poll request to entity state.\", \n    \"component_name\": \"ovirt_hosts\", \n    \"component_raw\": \"ovirt_hosts\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20607\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"c:module_utils/\", \n      \"cloud\", \n      \"community_review\", \n      \"feature\", \n      \"module\", \n      \"needs_triage\", \n      \"owner_pr\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/ovirt/ovirt_hosts.py\", \n    \"summary\": \"This PR  primarly fixes issue https://github.com/ansible/ansible/issues/20549.\\n\\nIn addition, it add ```reinstall``` state to ```ovirt_hosts``` module, so users can easily reinstall after boot parameters change. Also adds ```override_display``` and making sure we are waiting before running a first poll request to entity state.\", \n    \"title\": \"Allow change kernel boot parameters of oVirt hosts\"\n  }, \n  \"20608\": {\n    \"ansible_version\": \"2.2.1 (2.2.1.0-1ppa~xenial)\", \n    \"body\": \"##### ISSUE TYPE\\r\\nBug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nyum module\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n2.2.1 (2.2.1.0-1ppa~xenial)\\r\\n\\r\\n##### CONFIGURATION\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\nubuntu 16.04\\r\\n\\r\\n##### SUMMARY\\r\\nAfter fix this issue [#4318](https://github.com/ansible/ansible-modules-core/issues/4318)\\r\\nthe first packet (in alphabetical order output  of yum check-update),  that requires update, is not updated  -  not correctly parsed output of 'yum check-update'. The first line, which describes a new package and its version is added to the previous one and the package \\\"excluded\\\" from the update.\\r\\n\\r\\nProblematic piece of [code](https://github.com/ansible/ansible-modules-core/blob/59c9a6d3c20e73641c430fdaa3f250c1ff431dcc/packaging/os/yum.py#L804):\\r\\n` # remove incorrect new lines in longer columns in output from yum check-update\\r\\nout=re.sub('\\\\n\\\\W+', ' ', out)`\\r\\n\\r\\nworkaround:\\r\\n this [patch:](https://gist.github.com/saamich/b701c1d45cf877ddc3938c5cb63aec30) work for i686/x86-64 and noarch packages. Rpm package name in \\\"yum check-update\\\" output ends to the architecture name under which the assembled package.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n1) execute \\\"yum check-update\\\" on not updated node(example - NODE) and look first package, which needs to be updated(example PKG-NAME).\\r\\n2) execute ansible on this node \\r\\nansibble NODE -m yum -a 'name=PKG-NAME state=latest'\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\npackage updated\\r\\n\\r\\n##### ACTUAL RESULTS\\r\\npackage not updated\", \n    \"component_name\": \"yum\", \n    \"component_raw\": \"yum module\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20608\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [], \n    \"module_match\": \"lib/ansible/modules/packaging/os/yum.py\", \n    \"summary\": \"After fix this issue [#4318](https://github.com/ansible/ansible-modules-core/issues/4318)\\n\\nthe first packet (in alphabetical order output  of yum check-update),  that requires update, is not updated  -  not correctly parsed output of 'yum check-update'. The first line, which describes a new package and its version is added to the previous one and the package \\\"excluded\\\" from the update.\\n\\n\\n\\nProblematic piece of [code](https://github.com/ansible/ansible-modules-core/blob/59c9a6d3c20e73641c430fdaa3f250c1ff431dcc/packaging/os/yum.py#L804):\\n\\n` # remove incorrect new lines in longer columns in output from yum check-update\\n\\nout=re.sub('\\\\n\\\\W+', ' ', out)`\\n\\n\\n\\nworkaround:\\n\\n this [patch:](https://gist.github.com/saamich/b701c1d45cf877ddc3938c5cb63aec30) work for i686/x86-64 and noarch packages. Rpm package name in \\\"yum check-update\\\" output ends to the architecture name under which the assembled package.\", \n    \"title\": \"yum module not update first package\"\n  }, \n  \"20609\": {\n    \"ansible_version\": \"ansible 2.3.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = [u/usr/share/ansible]\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Feature Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\ncloud/openstack/os_group\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.3.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = [u'/usr/share/ansible']\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\nPreviously, the os_group module did not have any way to specify under\\r\\nwhich domain a group should be created. This meant that a group could\\r\\nonly be created for the default domain. The keystone API supports the\\r\\ndomain_id parameter for group creation[1] as does the shade library[2]\\r\\nso this patch adds the support in the ansible module.\\r\\n\\r\\n[1] http://developer.openstack.org/api-ref/identity/v3/index.html?expanded=create-group-detail#create-group\\r\\n[2] http://docs.openstack.org/infra/shade/usage.html#shade.OperatorCloud.create_group\\r\\n\", \n    \"component_name\": \"cloud/openstack/os_group\", \n    \"component_raw\": \"cloud/openstack/os_group\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20609\", \n    \"issue_type\": \"feature pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"cloud\", \n      \"community_review\", \n      \"feature\", \n      \"module\", \n      \"needs_triage\", \n      \"openstack\"\n    ], \n    \"module_match\": \"lib/ansible/modules/cloud/openstack/os_group.py\", \n    \"summary\": \"Previously, the os_group module did not have any way to specify under\\n\\nwhich domain a group should be created. This meant that a group could\\n\\nonly be created for the default domain. The keystone API supports the\\n\\ndomain_id parameter for group creation[1] as does the shade library[2]\\n\\nso this patch adds the support in the ansible module.\\n\\n\\n\\n[1] http://developer.openstack.org/api-ref/identity/v3/index.html?expanded=create-group-detail#create-group\\n\\n[2] http://docs.openstack.org/infra/shade/usage.html#shade.OperatorCloud.create_group\", \n    \"title\": \"Add domain_id parameter to openstack os_group\"\n  }, \n  \"20610\": {\n    \"ansible_version\": \"ansible 2.2.0.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"##### ISSUE TYPE\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\nansible/lib/ansible/plugins/callback/mail.py\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n```\\r\\nansible 2.2.0.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n  ```\\r\\n\\r\\n##### SUMMARY\\r\\n\\\"None\\\" was being added as a recipient on the email if cc or bcc were unset and defaulting to None. This was throwing the following smtplib exception:\\r\\n```python\\r\\nsmtplib.SMTPRecipientsRefused: {'None': (550, '5.1.1 <None>... User unknown')}\\r\\n```\\r\\n\\r\\nansible-playbook runs were erroring as follows:\\r\\n```python\\r\\n[WARNING]: Failure using method (v2_runner_on_failed) in callback plugin (</usr/lib/python2.7/dist-packages/ansible/plugins/callback/mail.CallbackModule object at 0x7f0d2a139f10>): {'None': (550, '5.1.1 <None>... User unknown')}\\r\\n```\\r\\n\\r\\nThis was fixed by changing the conditional that adds in cc and bcc to the address list to check the cc and bcc variables instead of the b_cc and b_bcc variables that had been transformed to byte strings.\\r\\n\", \n    \"component_name\": \"ansible/lib/ansible/plugins/callback/mail.py\", \n    \"component_raw\": \"ansible/lib/ansible/plugins/callback/mail.py\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20610\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"c:plugins/callback\", \n      \"needs_revision\", \n      \"needs_triage\"\n    ], \n    \"module_match\": null, \n    \"summary\": \"\\\"None\\\" was being added as a recipient on the email if cc or bcc were unset and defaulting to None. This was throwing the following smtplib exception:\\n\\n```python\\n\\nsmtplib.SMTPRecipientsRefused: {'None': (550, '5.1.1 <None>... User unknown')}\\n\\n```\\n\\n\\n\\nansible-playbook runs were erroring as follows:\\n\\n```python\\n\\n[WARNING]: Failure using method (v2_runner_on_failed) in callback plugin (</usr/lib/python2.7/dist-packages/ansible/plugins/callback/mail.CallbackModule object at 0x7f0d2a139f10>): {'None': (550, '5.1.1 <None>... User unknown')}\\n\\n```\\n\\n\\n\\nThis was fixed by changing the conditional that adds in cc and bcc to the address list to check the cc and bcc variables instead of the b_cc and b_bcc variables that had been transformed to byte strings.\", \n    \"title\": \"Fix issue with cc and bcc getting added to mail if unset\"\n  }, \n  \"20613\": {\n    \"ansible_version\": \"Broken version\\nansible 2.2.1.0\\nconfig file = /etc/ansible/ansible.cfg\\nconfigured module search path = Default w/o overrides\\nWorking version\\nansible 2.2.1.0 (detached HEAD fe33c937c4) last updated 2017/01/24 155100 (GMT -400)\\nlib/ansible/modules/core (detached HEAD 48a3ce1223) last updated 2017/01/24 155102 (GMT -400)\\nlib/ansible/modules/extras (detached HEAD 4e720b48ae) last updated 2017/01/24 155102 (GMT -400)\\nconfig file = /home/devon/git/arin/ansible/ansible.cfg\\nconfigured module search path = [library]\", \n    \"body\": \"<!---\\r\\nVerify first that your issue/request is not already reported on GitHub.\\r\\nAlso test if the latest release, and master branch are affected too.\\r\\n-->\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n - Bug Report\\r\\n\\r\\n##### COMPONENT NAME\\r\\nUsing sensu_check, but I fear its not actually caused by the module.\\r\\n\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\nBroken version:\\r\\n```\\r\\nansible 2.2.1.0\\r\\n  config file = /etc/ansible/ansible.cfg\\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\nWorking version:\\r\\n```\\r\\nansible 2.2.1.0 (detached HEAD fe33c937c4) last updated 2017/01/24 15:51:00 (GMT -400)\\r\\n  lib/ansible/modules/core: (detached HEAD 48a3ce1223) last updated 2017/01/24 15:51:02 (GMT -400)\\r\\n  lib/ansible/modules/extras: (detached HEAD 4e720b48ae) last updated 2017/01/24 15:51:02 (GMT -400)\\r\\n  config file = /home/devon/git/arin/ansible/ansible.cfg\\r\\n  configured module search path = ['library']\\r\\n```\\r\\n##### CONFIGURATION\\r\\n<!---\\r\\nMention any settings you have changed/added/removed in ansible.cfg\\r\\n(or using the ANSIBLE_* environment variables).\\r\\n-->\\r\\n```\\r\\n[defaults]\\r\\nroles_path=./roles:./galaxy_roles\\r\\nlibrary         = library\\r\\nansible_managed = Ansible managed: Do NOT edit this file manually!\\r\\nretry_files_enabled = False\\r\\n```\\r\\n```\\r\\n$ export | grep ANSIBLE\\r\\nANSIBLE_VAULT_PASSWORD_FILE=[redacted]\\r\\n```\\r\\n\\r\\n##### OS / ENVIRONMENT\\r\\n<!---\\r\\nMention the OS you are running Ansible from, and the OS you are\\r\\nmanaging, or say \\u201cN/A\\u201d for anything that is not platform-specific.\\r\\n-->\\r\\n\\r\\nOS Running Ansible:\\r\\n```\\r\\n$ cat /etc/lsb-release\\r\\nDISTRIB_ID=Ubuntu\\r\\nDISTRIB_RELEASE=16.10\\r\\nDISTRIB_CODENAME=yakkety\\r\\nDISTRIB_DESCRIPTION=\\\"Ubuntu 16.10\\\"\\r\\n```\\r\\n\\r\\nHost being managed, vagrant+virtualbox:\\r\\n```\\r\\n[vagrant@centos7 ~]$ cat /etc/redhat-release \\r\\nCentOS Linux release 7.3.1611 (Core) \\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Explain the problem briefly -->\\r\\nBackground:\\r\\n\\r\\nIn order to get around this bug:\\r\\nhttps://github.com/ansible/ansible/issues/17892\\r\\n\\r\\nWe've needed to run ansible from a detached HEAD state until a stable release was pushed for 2.2.10.\\r\\n\\r\\nNow that that's happened, we're seeing issues where using variable interpolation / moustaches in keys of dicts in YAML are failing.\\r\\n\\r\\nI'm not sure if there has been a regression since this detached commit to v.2.2.1.0, or if I was somehow unknowingly abusing a bug.\\r\\n\\r\\n##### STEPS TO REPRODUCE\\r\\n<!---\\r\\nFor bugs, show exactly how to reproduce the problem, using a minimal test-case.\\r\\nFor new features, show how the feature would be used.\\r\\n-->\\r\\n\\r\\n<!--- Paste example playbooks or commands between quotes below -->\\r\\nThe task:\\r\\n```yaml\\r\\n  - name: Deploy Sensu-client Checks\\r\\n    sensu_check:\\r\\n      aggregate: \\\"{{ item.value.aggregate | default('false') }}\\\"\\r\\n      command: \\\"{{ item.value.command }}\\\"\\r\\n      custom: \\\"{{ item.value.custom | default(omit) }}\\\"\\r\\n      dependencies: \\\"{{ item.value.dependencies | default(omit) }}\\\"\\r\\n      handle: \\\"{{ item.value.handle | default('true') }}\\\"\\r\\n      handlers: \\\"{{ item.value.handlers | default('default') }}\\\"\\r\\n      interval: \\\"{{ item.value.interval | default(30) }}\\\"\\r\\n      metric: \\\"{{ item.value.metric | default('false') }}\\\"\\r\\n      name: \\\"{{ item.key }}\\\"\\r\\n      occurrences: \\\"{{ item.value.occurrences | default(3) }}\\\"\\r\\n      path: \\\"{{ item.value.path | default('/etc/sensu/conf.d/checks.json') }}\\\"\\r\\n      source: \\\"{{ item.value.source | default(ansible_fqdn) }}\\\"\\r\\n      standalone: \\\"{{ item.value.standalone | default('true') }}\\\"\\r\\n      state: \\\"{{ item.value.state | default('present') }}\\\"\\r\\n      subscribers: \\\"{{ item.value.subscribers | default(['sensu']) }}\\\"\\r\\n      subdue_begin: \\\"{{ item.value.subdue_begin | default(omit) }}\\\"\\r\\n      subdue_end: \\\"{{ item.value.subdue_end | default(omit) }}\\\"\\r\\n      timeout: \\\"{{ item.value.timeout | default(10) }}\\\"\\r\\n    with_dict:\\r\\n      \\\"{{ sensu_base_checks }}\\\"\\r\\n    notify: restart sensu-client\\r\\n    tags:\\r\\n      - monitoring\\r\\n```\\r\\n\\r\\nThe defaults/main.yml:\\r\\n```yaml\\r\\nsensu_base_checks:\\r\\n  \\\"Swap_Usage_on_{{ ansible_fqdn }}\\\":\\r\\n    command: \\\"{{ sensu_plugin_dir }}/check-swap-percent.rb\\\"\\r\\n    handlers:\\r\\n      - 'logstash'\\r\\n      - 'pagerduty'\\r\\n```\\r\\n\\r\\n<!--- You can also paste gist.github.com links for larger files -->\\r\\n\\r\\n##### EXPECTED RESULTS\\r\\n<!--- What did you expect to happen when running the steps above? -->\\r\\nWorking version output:\\r\\n```\\r\\nTASK [Deploy Sensu-client Checks] **********************************************\\r\\nchanged: [centos7.example.dev] => (item={'key': u'Swap_Usage_on_{{ ansible_fqdn }}', 'value': {u'command': u'/opt/sensu/embedded/bin/check-swap-percent.rb', u'handlers': [u'logstash', u'page\\r\\nrduty']}}) => {\\\"changed\\\": true, \\\"gid\\\": 0, \\\"group\\\": \\\"root\\\", \\\"item\\\": {\\\"key\\\": \\\"Swap_Usage_on_{{ ansible_fqdn }}\\\", \\\"value\\\": {\\\"command\\\": \\\"/opt/sensu/embedded/bin/check-swap-percent.rb\\\", \\\"handlers\\r\\n\\\": [\\\"logstash\\\", \\\"pagerduty\\\"]}}, \\\"mode\\\": \\\"0644\\\", \\\"msg\\\": \\\"OK\\\", \\\"name\\\": \\\"Swap_Usage_on_centos7.example.dev\\\", \\\"owner\\\": \\\"root\\\", \\\"path\\\": \\\"/etc/sensu/conf.d/checks.json\\\", \\\"reasons\\\": [\\\"`checks' sect\\r\\nion did not exist\\\", \\\"check was absent and state is `present'\\\", \\\"`command' did not exist or was different\\\", \\\"`handlers' did not exist or was different\\\", \\\"`subscribers' did not exist or was di\\r\\nfferent\\\", \\\"`interval' did not exist or was different\\\", \\\"`timeout' did not exist or was different\\\", \\\"`handle' did not exist or was different\\\", \\\"`standalone' did not exist or was different\\\", \\\"\\r\\n`occurrences' did not exist or was different\\\", \\\"`aggregate' did not exist or was different\\\", \\\"`source' did not exist or was different\\\"], \\\"secontext\\\": \\\"unconfined_u:object_r:etc_t:s0\\\", \\\"size\\\"\\r\\n: 443, \\\"state\\\": \\\"file\\\", \\\"uid\\\": 0}\\r\\n\\r\\n[vagrant@centos7 ~]$ sed 11q /etc/sensu/conf.d/checks.json \\r\\n{\\r\\n  \\\"checks\\\": {\\r\\n    \\\"Swap_Usage_on_centos7.example.dev\\\": {\\r\\n      \\\"handle\\\": true, \\r\\n      \\\"timeout\\\": 10, \\r\\n      \\\"standalone\\\": true, \\r\\n      \\\"interval\\\": 30, \\r\\n      \\\"source\\\": \\\"centos7.example.dev\\\", \\r\\n      \\\"command\\\": \\\"/opt/sensu/embedded/bin/check-swap-percent.rb\\\", \\r\\n```\\r\\n##### ACTUAL RESULTS\\r\\n<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->\\r\\n\\r\\n<!--- Paste verbatim command output between quotes below -->\\r\\nBroken output:\\r\\n```\\r\\nTASK [Deploy Sensu-client Checks] **********************************************\\r\\nchanged: [centos7.example.dev] => (item={'key': u'Swap_Usage_on_{{ ansible_fqdn }}', 'value': {u'command': u'/opt/sensu/embedded/bin/check-swap-percent.rb', u'handlers': [u'logstash', u'page\\r\\nrduty']}}) => {\\\"changed\\\": true, \\\"gid\\\": 0, \\\"group\\\": \\\"root\\\", \\\"item\\\": {\\\"key\\\": \\\"Swap_Usage_on_{{ ansible_fqdn }}\\\", \\\"value\\\": {\\\"command\\\": \\\"/opt/sensu/embedded/bin/check-swap-percent.rb\\\", \\\"handlers\\r\\n\\\": [\\\"logstash\\\", \\\"pagerduty\\\"]}}, \\\"mode\\\": \\\"0644\\\", \\\"msg\\\": \\\"OK\\\", \\\"name\\\": \\\"Swap_Usage_on_{{ ansible_fqdn }}\\\", \\\"owner\\\": \\\"root\\\", \\\"path\\\": \\\"/etc/sensu/conf.d/checks.json\\\", \\\"reasons\\\": [\\\"`checks' secti\\r\\non did not exist\\\", \\\"check was absent and state is `present'\\\", \\\"`command' did not exist or was different\\\", \\\"`handlers' did not exist or was different\\\", \\\"`subscribers' did not exist or was dif\\r\\nferent\\\", \\\"`interval' did not exist or was different\\\", \\\"`timeout' did not exist or was different\\\", \\\"`handle' did not exist or was different\\\", \\\"`standalone' did not exist or was different\\\", \\\"`\\r\\noccurrences' did not exist or was different\\\", \\\"`aggregate' did not exist or was different\\\", \\\"`source' did not exist or was different\\\"], \\\"secontext\\\": \\\"unconfined_u:object_r:etc_t:s0\\\", \\\"size\\\":\\r\\n 442, \\\"state\\\": \\\"file\\\", \\\"uid\\\": 0}\\r\\n\\r\\n[vagrant@centos7 ~]$ sed 11q /etc/sensu/conf.d/checks.json \\r\\n{\\r\\n  \\\"checks\\\": {\\r\\n    \\\"Swap_Usage_on_{{ ansible_fqdn }}\\\": {\\r\\n      \\\"handle\\\": true, \\r\\n      \\\"timeout\\\": 10, \\r\\n      \\\"standalone\\\": true, \\r\\n      \\\"interval\\\": 30, \\r\\n      \\\"source\\\": \\\"centos7.example.dev\\\", \\r\\n      \\\"command\\\": \\\"/opt/sensu/embedded/bin/check-swap-percent.rb\\\", \\r\\n      \\\"occurrences\\\": 3, \\r\\n      \\\"subscribers\\\": [\\r\\n```\\r\\n\", \n    \"component_name\": \"using sensu_check but i fear its not actually caused by the  .\", \n    \"component_raw\": \"Using sensu_check, but I fear its not actually caused by the module.\", \n    \"html_url\": \"https://github.com/ansible/ansible/issues/20613\", \n    \"issue_type\": \"bug report\", \n    \"labels\": [\n      \"affects_2.2\", \n      \"bug\", \n      \"module\", \n      \"needs_triage\"\n    ], \n    \"module_match\": \"lib/ansible/modules/monitoring/sensu_check.py\", \n    \"summary\": \"Background:\\n\\n\\n\\nIn order to get around this bug:\\n\\nhttps://github.com/ansible/ansible/issues/17892\\n\\n\\n\\nWe've needed to run ansible from a detached HEAD state until a stable release was pushed for 2.2.10.\\n\\n\\n\\nNow that that's happened, we're seeing issues where using variable interpolation / moustaches in keys of dicts in YAML are failing.\\n\\n\\n\\nI'm not sure if there has been a regression since this detached commit to v.2.2.1.0, or if I was somehow unknowingly abusing a bug.\", \n    \"title\": \"Unable to interpolate variable when used as the key of a dict object\"\n  }, \n  \"20614\": {\n    \"ansible_version\": \"ansible 2.3.0 (lineinfile-fix-20582 8e14fdcdb2) last updated 2017/01/24 163252 (GMT -400)\\nconfig file =\\nconfigured module search path = Default w/o overrides\", \n    \"body\": \"\\u2026nce of the `before` regex\\r\\n\\r\\n##### ISSUE TYPE\\r\\n<!--- Pick one below and delete the rest: -->\\r\\n\\r\\n - Bugfix Pull Request\\r\\n\\r\\n##### COMPONENT NAME\\r\\n<!--- Name of the module/plugin/module/task -->\\r\\nmodules/files/lineinfile\\r\\n##### ANSIBLE VERSION\\r\\n<!--- Paste verbatim output from \\u201cansible --version\\u201d between quotes below -->\\r\\n```\\r\\nansible 2.3.0 (lineinfile-fix-20582 8e14fdcdb2) last updated 2017/01/24 16:32:52 (GMT -400)\\r\\n  config file = \\r\\n  configured module search path = Default w/o overrides\\r\\n```\\r\\n\\r\\n##### SUMMARY\\r\\n<!--- Describe the change, including rationale and design decisions -->\\r\\n\\r\\nFixes #20582\\r\\n\\r\\nThis change makes the module break out of the loop to find occurrences of the insertbefore/insertafter regex on the first occurrence. If, for example, a file looks like:\\r\\n\\r\\n```\\r\\nRyan\\r\\nBrown\\r\\nBrown\\r\\n```\\r\\nUsing `^Brown$` as the `insertbefore` regular expression will result (currently) inserting a line between the two Brown's rather than before the first Brown.\\r\\n\", \n    \"component_name\": \"s/files/lineinfile\", \n    \"component_raw\": \"modules/files/lineinfile\", \n    \"html_url\": \"https://github.com/ansible/ansible/pull/20614\", \n    \"issue_type\": \"bugfix pull request\", \n    \"labels\": [\n      \"affects_2.3\", \n      \"bug\", \n      \"core_review\", \n      \"module\", \n      \"needs_triage\"\n    ], \n    \"module_match\": \"lib/ansible/modules/files/lineinfile.py\", \n    \"summary\": \"Fixes #20582\\n\\n\\n\\nThis change makes the module break out of the loop to find occurrences of the insertbefore/insertafter regex on the first occurrence. If, for example, a file looks like:\\n\\n\\n\\n```\\n\\nRyan\\n\\nBrown\\n\\nBrown\\n\\n```\\n\\nUsing `^Brown$` as the `insertbefore` regular expression will result (currently) inserting a line between the two Brown's rather than before the first Brown.\", \n    \"title\": \"Break so that insertbefore and insertafter affect the *first* occurre\\u2026\"\n  }\n}\n"
  },
  {
    "path": "tests/fixtures/needs_contributor/0_issue.yml",
    "content": "html_url: https://github.com/ansible/ansible/pull/21313\nnumber: 21313\ngithub_repo: ansible\nsubmitter: mkrizek\ncreated_at: 2016-02-18T17:37:01Z\ntitle: Test\nbody: |\n    test\nevents:\n    - event: labeled\n      label:\n        name: needs_info\n      created_at: 2017-12-10T17:24:02Z\n      id: 1\n      actor:\n        login: mkrizek\n    - event: commented\n      body: |\n          Something something needs_contributor something something\n      created_at: 2018-01-10T17:24:01Z\n      id: 2\n      actor:\n        login: mkrizek\n"
  },
  {
    "path": "tests/fixtures/needs_revision/0_issue.yml",
    "content": "# https://api.github.com/repos/ansible/ansible/pull/21313/events\nhtml_url: https://github.com/ansible/ansible/pull/21313\nnumber: 21313\ngithub_repo: ansible\nsubmitter: tsdmgz\ncreated_at: 2016-02-18T17:37:01Z\n_now: 2017-08-19T00:24:02Z\ntitle: Add dist-upgrade and extra_args to zypper module\nbody: |\n    issue type\n    feature pullrequest\n    component name\n    zypper\n    ansible version\n    2.3\n    summary\n    Adds support for `zypper dist-upgrade` and `--no-allow-vendor-change`. This combination is a recommended method of keeping an openSUSE Tumbleweed system with additional repositories updated.\nevents:\n    - event: commented\n      body: shipit\n      created_at: 2017-02-18T19:03:01Z\n      id: 1\n      actor:\n        login: robinro\n    - event: committed\n      created_at: 2017-05-17T07:17:18Z\n      actor:\n        login: tsdmgz\n      #id: 86df5ab148b8d68d1960c6ca0c5313950b43ccf5\n    - event: committed\n      created_at: 2017-05-17T07:17:18Z\n      actor:\n        login: tsdmgz\n      #id: 6fc462dbb57e4ea215186d45619d1ebc7a85f377\n"
  },
  {
    "path": "tests/fixtures/needs_revision/0_prstatus.json",
    "content": "[\n  {\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/c19a95a315680a3f68b157054aa54c0ecc31ee28\",\n    \"id\": 1453721491,\n    \"state\": \"success\",\n    \"description\": \"Run 32923 status is SUCCESS. \",\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32923/summary\",\n    \"context\": \"Shippable\",\n    \"created_at\": \"2017-08-11T15:20:08Z\",\n    \"updated_at\": \"2017-08-11T15:20:08Z\",\n    \"creator\": {\n      \"login\": \"ansibot\",\n      \"id\": 6585283,\n      \"avatar_url\": \"https://avatars0.githubusercontent.com/u/6585283?v=4\",\n      \"gravatar_id\": \"\",\n      \"url\": \"https://api.github.com/users/ansibot\",\n      \"html_url\": \"https://github.com/ansibot\",\n      \"followers_url\": \"https://api.github.com/users/ansibot/followers\",\n      \"following_url\": \"https://api.github.com/users/ansibot/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/ansibot/gists{/gist_id}\",\n      \"starred_url\": \"https://api.github.com/users/ansibot/starred{/owner}{/repo}\",\n      \"subscriptions_url\": \"https://api.github.com/users/ansibot/subscriptions\",\n      \"organizations_url\": \"https://api.github.com/users/ansibot/orgs\",\n      \"repos_url\": \"https://api.github.com/users/ansibot/repos\",\n      \"events_url\": \"https://api.github.com/users/ansibot/events{/privacy}\",\n      \"received_events_url\": \"https://api.github.com/users/ansibot/received_events\",\n      \"type\": \"User\",\n      \"site_admin\": false\n    }\n  },\n  {\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/c19a95a315680a3f68b157054aa54c0ecc31ee28\",\n    \"id\": 1453693425,\n    \"state\": \"pending\",\n    \"description\": \"Run 32923 status is PROCESSING. \",\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32923/summary\",\n    \"context\": \"Shippable\",\n    \"created_at\": \"2017-08-11T15:11:52Z\",\n    \"updated_at\": \"2017-08-11T15:11:52Z\",\n    \"creator\": {\n      \"login\": \"ansibot\",\n      \"id\": 6585283,\n      \"avatar_url\": \"https://avatars0.githubusercontent.com/u/6585283?v=4\",\n      \"gravatar_id\": \"\",\n      \"url\": \"https://api.github.com/users/ansibot\",\n      \"html_url\": \"https://github.com/ansibot\",\n      \"followers_url\": \"https://api.github.com/users/ansibot/followers\",\n      \"following_url\": \"https://api.github.com/users/ansibot/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/ansibot/gists{/gist_id}\",\n      \"starred_url\": \"https://api.github.com/users/ansibot/starred{/owner}{/repo}\",\n      \"subscriptions_url\": \"https://api.github.com/users/ansibot/subscriptions\",\n      \"organizations_url\": \"https://api.github.com/users/ansibot/orgs\",\n      \"repos_url\": \"https://api.github.com/users/ansibot/repos\",\n      \"events_url\": \"https://api.github.com/users/ansibot/events{/privacy}\",\n      \"received_events_url\": \"https://api.github.com/users/ansibot/received_events\",\n      \"type\": \"User\",\n      \"site_admin\": false\n    }\n  },\n  {\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/c19a95a315680a3f68b157054aa54c0ecc31ee28\",\n    \"id\": 1453655632,\n    \"state\": \"pending\",\n    \"description\": \"Run 32923 status is WAITING. \",\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32923\",\n    \"context\": \"Shippable\",\n    \"created_at\": \"2017-08-11T15:00:47Z\",\n    \"updated_at\": \"2017-08-11T15:00:47Z\",\n    \"creator\": {\n      \"login\": \"ansibot\",\n      \"id\": 6585283,\n      \"avatar_url\": \"https://avatars0.githubusercontent.com/u/6585283?v=4\",\n      \"gravatar_id\": \"\",\n      \"url\": \"https://api.github.com/users/ansibot\",\n      \"html_url\": \"https://github.com/ansibot\",\n      \"followers_url\": \"https://api.github.com/users/ansibot/followers\",\n      \"following_url\": \"https://api.github.com/users/ansibot/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/ansibot/gists{/gist_id}\",\n      \"starred_url\": \"https://api.github.com/users/ansibot/starred{/owner}{/repo}\",\n      \"subscriptions_url\": \"https://api.github.com/users/ansibot/subscriptions\",\n      \"organizations_url\": \"https://api.github.com/users/ansibot/orgs\",\n      \"repos_url\": \"https://api.github.com/users/ansibot/repos\",\n      \"events_url\": \"https://api.github.com/users/ansibot/events{/privacy}\",\n      \"received_events_url\": \"https://api.github.com/users/ansibot/received_events\",\n      \"type\": \"User\",\n      \"site_admin\": false\n    }\n  }\n]\n"
  },
  {
    "path": "tests/fixtures/needs_revision/0_reviews.json",
    "content": "[\n  {\n    \"id\": 21412980,\n    \"user\": {\n      \"login\": \"robinro\",\n      \"id\": 107032,\n      \"avatar_url\": \"https://avatars2.githubusercontent.com/u/107032?v=4\",\n      \"gravatar_id\": \"\",\n      \"url\": \"https://api.github.com/users/robinro\",\n      \"html_url\": \"https://github.com/robinro\",\n      \"followers_url\": \"https://api.github.com/users/robinro/followers\",\n      \"following_url\": \"https://api.github.com/users/robinro/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/robinro/gists{/gist_id}\",\n      \"starred_url\": \"https://api.github.com/users/robinro/starred{/owner}{/repo}\",\n      \"subscriptions_url\": \"https://api.github.com/users/robinro/subscriptions\",\n      \"organizations_url\": \"https://api.github.com/users/robinro/orgs\",\n      \"repos_url\": \"https://api.github.com/users/robinro/repos\",\n      \"events_url\": \"https://api.github.com/users/robinro/events{/privacy}\",\n      \"received_events_url\": \"https://api.github.com/users/robinro/received_events\",\n      \"type\": \"User\",\n      \"site_admin\": false\n    },\n    \"body\": \"\",\n    \"state\": \"COMMENTED\",\n    \"html_url\": \"https://github.com/ansible/ansible/pull/21313#pullrequestreview-21412980\",\n    \"pull_request_url\": \"https://api.github.com/repos/ansible/ansible/pulls/21313\",\n    \"author_association\": \"CONTRIBUTOR\",\n    \"_links\": {\n      \"html\": {\n        \"href\": \"https://github.com/ansible/ansible/pull/21313#pullrequestreview-21412980\"\n      },\n      \"pull_request\": {\n        \"href\": \"https://api.github.com/repos/ansible/ansible/pulls/21313\"\n      }\n    },\n    \"submitted_at\": \"2017-02-12T17:47:26Z\",\n    \"commit_id\": \"04ad35b0073b9e898403f34f6883e5b29471579d\"\n  },\n  {\n    \"id\": 22635752,\n    \"user\": {\n      \"login\": \"robinro\",\n      \"id\": 107032,\n      \"avatar_url\": \"https://avatars2.githubusercontent.com/u/107032?v=4\",\n      \"gravatar_id\": \"\",\n      \"url\": \"https://api.github.com/users/robinro\",\n      \"html_url\": \"https://github.com/robinro\",\n      \"followers_url\": \"https://api.github.com/users/robinro/followers\",\n      \"following_url\": \"https://api.github.com/users/robinro/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/robinro/gists{/gist_id}\",\n      \"starred_url\": \"https://api.github.com/users/robinro/starred{/owner}{/repo}\",\n      \"subscriptions_url\": \"https://api.github.com/users/robinro/subscriptions\",\n      \"organizations_url\": \"https://api.github.com/users/robinro/orgs\",\n      \"repos_url\": \"https://api.github.com/users/robinro/repos\",\n      \"events_url\": \"https://api.github.com/users/robinro/events{/privacy}\",\n      \"received_events_url\": \"https://api.github.com/users/robinro/received_events\",\n      \"type\": \"User\",\n      \"site_admin\": false\n    },\n    \"body\": \"Up to the minor points above this looks good to me. Once these are adjusted this can be merged. Thanks for including the changes!\\r\\n\\r\\nOne could check for inconsistencies more thoroughly (like dist-update together with type or force), but I guess the current state is a very appropriate compromise between covering typical mistakes and having readable code.\",\n    \"state\": \"CHANGES_REQUESTED\",\n    \"html_url\": \"https://github.com/ansible/ansible/pull/21313#pullrequestreview-22635752\",\n    \"pull_request_url\": \"https://api.github.com/repos/ansible/ansible/pulls/21313\",\n    \"author_association\": \"CONTRIBUTOR\",\n    \"_links\": {\n      \"html\": {\n        \"href\": \"https://github.com/ansible/ansible/pull/21313#pullrequestreview-22635752\"\n      },\n      \"pull_request\": {\n        \"href\": \"https://api.github.com/repos/ansible/ansible/pulls/21313\"\n      }\n    },\n    \"submitted_at\": \"2017-02-18T10:52:32Z\",\n    \"commit_id\": \"736f2f55d0dbb39cfdf34574668160dd081758eb\"\n  },\n  {\n    \"id\": 22635864,\n    \"user\": {\n      \"login\": \"robinro\",\n      \"id\": 107032,\n      \"avatar_url\": \"https://avatars2.githubusercontent.com/u/107032?v=4\",\n      \"gravatar_id\": \"\",\n      \"url\": \"https://api.github.com/users/robinro\",\n      \"html_url\": \"https://github.com/robinro\",\n      \"followers_url\": \"https://api.github.com/users/robinro/followers\",\n      \"following_url\": \"https://api.github.com/users/robinro/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/robinro/gists{/gist_id}\",\n      \"starred_url\": \"https://api.github.com/users/robinro/starred{/owner}{/repo}\",\n      \"subscriptions_url\": \"https://api.github.com/users/robinro/subscriptions\",\n      \"organizations_url\": \"https://api.github.com/users/robinro/orgs\",\n      \"repos_url\": \"https://api.github.com/users/robinro/repos\",\n      \"events_url\": \"https://api.github.com/users/robinro/events{/privacy}\",\n      \"received_events_url\": \"https://api.github.com/users/robinro/received_events\",\n      \"type\": \"User\",\n      \"site_admin\": false\n    },\n    \"body\": \"\",\n    \"state\": \"COMMENTED\",\n    \"html_url\": \"https://github.com/ansible/ansible/pull/21313#pullrequestreview-22635864\",\n    \"pull_request_url\": \"https://api.github.com/repos/ansible/ansible/pulls/21313\",\n    \"author_association\": \"CONTRIBUTOR\",\n    \"_links\": {\n      \"html\": {\n        \"href\": \"https://github.com/ansible/ansible/pull/21313#pullrequestreview-22635864\"\n      },\n      \"pull_request\": {\n        \"href\": \"https://api.github.com/repos/ansible/ansible/pulls/21313\"\n      }\n    },\n    \"submitted_at\": \"2017-02-18T10:53:41Z\",\n    \"commit_id\": \"736f2f55d0dbb39cfdf34574668160dd081758eb\"\n  },\n  {\n    \"id\": 38584336,\n    \"user\": {\n      \"login\": \"alxgu\",\n      \"id\": 5547258,\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/5547258?v=4\",\n      \"gravatar_id\": \"\",\n      \"url\": \"https://api.github.com/users/alxgu\",\n      \"html_url\": \"https://github.com/alxgu\",\n      \"followers_url\": \"https://api.github.com/users/alxgu/followers\",\n      \"following_url\": \"https://api.github.com/users/alxgu/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/alxgu/gists{/gist_id}\",\n      \"starred_url\": \"https://api.github.com/users/alxgu/starred{/owner}{/repo}\",\n      \"subscriptions_url\": \"https://api.github.com/users/alxgu/subscriptions\",\n      \"organizations_url\": \"https://api.github.com/users/alxgu/orgs\",\n      \"repos_url\": \"https://api.github.com/users/alxgu/repos\",\n      \"events_url\": \"https://api.github.com/users/alxgu/events{/privacy}\",\n      \"received_events_url\": \"https://api.github.com/users/alxgu/received_events\",\n      \"type\": \"User\",\n      \"site_admin\": false\n    },\n    \"body\": \"\",\n    \"state\": \"COMMENTED\",\n    \"html_url\": \"https://github.com/ansible/ansible/pull/21313#pullrequestreview-38584336\",\n    \"pull_request_url\": \"https://api.github.com/repos/ansible/ansible/pulls/21313\",\n    \"author_association\": \"CONTRIBUTOR\",\n    \"_links\": {\n      \"html\": {\n        \"href\": \"https://github.com/ansible/ansible/pull/21313#pullrequestreview-38584336\"\n      },\n      \"pull_request\": {\n        \"href\": \"https://api.github.com/repos/ansible/ansible/pulls/21313\"\n      }\n    },\n    \"submitted_at\": \"2017-05-17T07:04:32Z\",\n    \"commit_id\": \"bf6f037569bc1abdc6f3d3c9a94cfcc2bb5dc893\"\n  }\n]\n"
  },
  {
    "path": "tests/fixtures/needs_revision/1_issue.yml",
    "content": "# https://api.github.com/repos/ansible/ansible/pull/21313/events\nhtml_url: https://github.com/ansible/ansible/pull/21313\nnumber: 21313\ngithub_repo: ansible\nsubmitter: tsdmgz\ncreated_at: 2016-02-18T17:37:01Z\n_now: 2017-08-19T00:24:02Z\ntitle: Add dist-upgrade and extra_args to zypper module\nbody: |\n    issue type\n    feature pullrequest\n    component name\n    zypper\n    ansible version\n    2.3\n    summary\n    Adds support for `zypper dist-upgrade` and `--no-allow-vendor-change`. This combination is a recommended method of keeping an openSUSE Tumbleweed system with additional repositories updated.\nevents:\n    - event: commented\n      body: needs_revision\n      created_at: 2017-02-18T19:03:01Z\n      id: 1\n      actor:\n        login: mkrizek\n    - event: committed\n      created_at: 2017-05-17T07:17:18Z\n      actor:\n        login: tsdmgz\n      #id: 86df5ab148b8d68d1960c6ca0c5313950b43ccf5\n    - event: commented\n      body: shipit\n      created_at: 2017-02-18T19:03:01Z\n      id: 3\n      actor:\n        login: mkrizek\n"
  },
  {
    "path": "tests/fixtures/needs_revision/1_reviews.json",
    "content": "[\n  {\n    \"id\": 21412980,\n    \"user\": {\n      \"login\": \"robinro\",\n      \"id\": 107032,\n      \"avatar_url\": \"https://avatars2.githubusercontent.com/u/107032?v=4\",\n      \"gravatar_id\": \"\",\n      \"url\": \"https://api.github.com/users/robinro\",\n      \"html_url\": \"https://github.com/robinro\",\n      \"followers_url\": \"https://api.github.com/users/robinro/followers\",\n      \"following_url\": \"https://api.github.com/users/robinro/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/robinro/gists{/gist_id}\",\n      \"starred_url\": \"https://api.github.com/users/robinro/starred{/owner}{/repo}\",\n      \"subscriptions_url\": \"https://api.github.com/users/robinro/subscriptions\",\n      \"organizations_url\": \"https://api.github.com/users/robinro/orgs\",\n      \"repos_url\": \"https://api.github.com/users/robinro/repos\",\n      \"events_url\": \"https://api.github.com/users/robinro/events{/privacy}\",\n      \"received_events_url\": \"https://api.github.com/users/robinro/received_events\",\n      \"type\": \"User\",\n      \"site_admin\": false\n    },\n    \"body\": \"\",\n    \"state\": \"COMMENTED\",\n    \"html_url\": \"https://github.com/ansible/ansible/pull/21313#pullrequestreview-21412980\",\n    \"pull_request_url\": \"https://api.github.com/repos/ansible/ansible/pulls/21313\",\n    \"author_association\": \"CONTRIBUTOR\",\n    \"_links\": {\n      \"html\": {\n        \"href\": \"https://github.com/ansible/ansible/pull/21313#pullrequestreview-21412980\"\n      },\n      \"pull_request\": {\n        \"href\": \"https://api.github.com/repos/ansible/ansible/pulls/21313\"\n      }\n    },\n    \"submitted_at\": \"2017-02-12T17:47:26Z\",\n    \"commit_id\": \"04ad35b0073b9e898403f34f6883e5b29471579d\"\n  },\n  {\n    \"id\": 22635864,\n    \"user\": {\n      \"login\": \"robinro\",\n      \"id\": 107032,\n      \"avatar_url\": \"https://avatars2.githubusercontent.com/u/107032?v=4\",\n      \"gravatar_id\": \"\",\n      \"url\": \"https://api.github.com/users/robinro\",\n      \"html_url\": \"https://github.com/robinro\",\n      \"followers_url\": \"https://api.github.com/users/robinro/followers\",\n      \"following_url\": \"https://api.github.com/users/robinro/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/robinro/gists{/gist_id}\",\n      \"starred_url\": \"https://api.github.com/users/robinro/starred{/owner}{/repo}\",\n      \"subscriptions_url\": \"https://api.github.com/users/robinro/subscriptions\",\n      \"organizations_url\": \"https://api.github.com/users/robinro/orgs\",\n      \"repos_url\": \"https://api.github.com/users/robinro/repos\",\n      \"events_url\": \"https://api.github.com/users/robinro/events{/privacy}\",\n      \"received_events_url\": \"https://api.github.com/users/robinro/received_events\",\n      \"type\": \"User\",\n      \"site_admin\": false\n    },\n    \"body\": \"\",\n    \"state\": \"COMMENTED\",\n    \"html_url\": \"https://github.com/ansible/ansible/pull/21313#pullrequestreview-22635864\",\n    \"pull_request_url\": \"https://api.github.com/repos/ansible/ansible/pulls/21313\",\n    \"author_association\": \"CONTRIBUTOR\",\n    \"_links\": {\n      \"html\": {\n        \"href\": \"https://github.com/ansible/ansible/pull/21313#pullrequestreview-22635864\"\n      },\n      \"pull_request\": {\n        \"href\": \"https://api.github.com/repos/ansible/ansible/pulls/21313\"\n      }\n    },\n    \"submitted_at\": \"2017-02-18T10:53:41Z\",\n    \"commit_id\": \"736f2f55d0dbb39cfdf34574668160dd081758eb\"\n  },\n  {\n    \"id\": 38584336,\n    \"user\": {\n      \"login\": \"alxgu\",\n      \"id\": 5547258,\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/5547258?v=4\",\n      \"gravatar_id\": \"\",\n      \"url\": \"https://api.github.com/users/alxgu\",\n      \"html_url\": \"https://github.com/alxgu\",\n      \"followers_url\": \"https://api.github.com/users/alxgu/followers\",\n      \"following_url\": \"https://api.github.com/users/alxgu/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/alxgu/gists{/gist_id}\",\n      \"starred_url\": \"https://api.github.com/users/alxgu/starred{/owner}{/repo}\",\n      \"subscriptions_url\": \"https://api.github.com/users/alxgu/subscriptions\",\n      \"organizations_url\": \"https://api.github.com/users/alxgu/orgs\",\n      \"repos_url\": \"https://api.github.com/users/alxgu/repos\",\n      \"events_url\": \"https://api.github.com/users/alxgu/events{/privacy}\",\n      \"received_events_url\": \"https://api.github.com/users/alxgu/received_events\",\n      \"type\": \"User\",\n      \"site_admin\": false\n    },\n    \"body\": \"\",\n    \"state\": \"COMMENTED\",\n    \"html_url\": \"https://github.com/ansible/ansible/pull/21313#pullrequestreview-38584336\",\n    \"pull_request_url\": \"https://api.github.com/repos/ansible/ansible/pulls/21313\",\n    \"author_association\": \"CONTRIBUTOR\",\n    \"_links\": {\n      \"html\": {\n        \"href\": \"https://github.com/ansible/ansible/pull/21313#pullrequestreview-38584336\"\n      },\n      \"pull_request\": {\n        \"href\": \"https://api.github.com/repos/ansible/ansible/pulls/21313\"\n      }\n    },\n    \"submitted_at\": \"2017-05-17T07:04:32Z\",\n    \"commit_id\": \"bf6f037569bc1abdc6f3d3c9a94cfcc2bb5dc893\"\n  }\n]\n"
  },
  {
    "path": "tests/fixtures/needs_revision/2_issue.yml",
    "content": "# https://api.github.com/repos/ansible/ansible/pull/21313/events\nhtml_url: https://github.com/ansible/ansible/pull/21313\nnumber: 21313\ngithub_repo: ansible\nsubmitter: tsdmgz\ncreated_at: 2016-02-18T17:37:01Z\n_now: 2017-08-19T00:24:02Z\ntitle: Add dist-upgrade and extra_args to zypper module\nbody: |\n    issue type\n    feature pullrequest\n    component name\n    zypper\n    ansible version\n    2.3\n    summary\n    Adds support for `zypper dist-upgrade` and `--no-allow-vendor-change`. This combination is a recommended method of keeping an openSUSE Tumbleweed system with additional repositories updated.\nevents:\n    - event: commented\n      body: needs_revision\n      created_at: 2017-02-18T19:03:01Z\n      id: 1\n      actor:\n        login: mkrizek\n    - event: commented\n      body: needs_revision\n      created_at: 2017-02-18T19:03:01Z\n      id: 2\n      actor:\n        login: jctanner\n    - event: committed\n      created_at: 2017-05-17T07:17:18Z\n      actor:\n        login: tsdmgz\n      #id: 86df5ab148b8d68d1960c6ca0c5313950b43ccf5\n    - event: commented\n      body: shipit\n      created_at: 2017-02-18T19:03:01Z\n      id: 4\n      actor:\n        login: mkrizek\n"
  },
  {
    "path": "tests/fixtures/rebuild/0_issue.yml",
    "content": "# https://api.github.com/repos/ansible/ansible/issues/68152/events\nhtml_url: https://github.com/ansible/ansible/pull/000\nnumber: 000\ngithub_repo: ansible\nsubmitter: joe\ncreated_at: 2016-07-14T16:24:01Z\n_now: 2017-07-29T19:24:02Z\ntitle: fix the widget\nbody: |\n    issue type\n    feature pullrequest\n    component name\n    widget.py\n    ansible version\n    2.4\n    summary\n    like i said, my widget doesn't work\nevents:\n    - event: commented\n      body: /rebuild\n      created_at: 2018-07-14T17:24:01Z\n      id: 1\n      actor:\n        login: joe\n"
  },
  {
    "path": "tests/fixtures/rebuild/0_prstatus.json",
    "content": "[\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228/summary\",\n    \"description\": \"Run 32228 status is FAILED. \",\n    \"creator\": {\n      \"following_url\": \"https://api.github.com/users/defionscode/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/defionscode/gists{/gist_id}\",\n      \"organizations_url\": \"https://api.github.com/users/defionscode/orgs\",\n      \"url\": \"https://api.github.com/users/defionscode\",\n      \"events_url\": \"https://api.github.com/users/defionscode/events{/privacy}\",\n      \"html_url\": \"https://github.com/defionscode\",\n      \"subscriptions_url\": \"https://api.github.com/users/defionscode/subscriptions\",\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/4664162?v=4\",\n      \"repos_url\": \"https://api.github.com/users/defionscode/repos\",\n      \"received_events_url\": \"https://api.github.com/users/defionscode/received_events\",\n      \"gravatar_id\": \"\",\n      \"starred_url\": \"https://api.github.com/users/defionscode/starred{/owner}{/repo}\",\n      \"site_admin\": false,\n      \"login\": \"defionscode\",\n      \"type\": \"User\",\n      \"id\": 4664162,\n      \"followers_url\": \"https://api.github.com/users/defionscode/followers\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T21:04:56Z\",\n    \"updated_at\": \"2017-08-07T21:04:56Z\",\n    \"state\": \"failed\",\n    \"context\": \"Shippable\",\n    \"id\": 1440728832\n  },\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228/summary\",\n    \"description\": \"Run 32228 status is PROCESSING. \",\n    \"creator\": {\n      \"following_url\": \"https://api.github.com/users/defionscode/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/defionscode/gists{/gist_id}\",\n      \"organizations_url\": \"https://api.github.com/users/defionscode/orgs\",\n      \"url\": \"https://api.github.com/users/defionscode\",\n      \"events_url\": \"https://api.github.com/users/defionscode/events{/privacy}\",\n      \"html_url\": \"https://github.com/defionscode\",\n      \"subscriptions_url\": \"https://api.github.com/users/defionscode/subscriptions\",\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/4664162?v=4\",\n      \"repos_url\": \"https://api.github.com/users/defionscode/repos\",\n      \"received_events_url\": \"https://api.github.com/users/defionscode/received_events\",\n      \"gravatar_id\": \"\",\n      \"starred_url\": \"https://api.github.com/users/defionscode/starred{/owner}{/repo}\",\n      \"site_admin\": false,\n      \"login\": \"defionscode\",\n      \"type\": \"User\",\n      \"id\": 4664162,\n      \"followers_url\": \"https://api.github.com/users/defionscode/followers\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T20:56:31Z\",\n    \"updated_at\": \"2017-08-07T20:56:31Z\",\n    \"state\": \"processing\",\n    \"context\": \"Shippable\",\n    \"id\": 1440702207\n  },\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228\",\n    \"description\": \"Run 32228 status is WAITING. \",\n    \"creator\": {\n      \"following_url\": \"https://api.github.com/users/defionscode/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/defionscode/gists{/gist_id}\",\n      \"organizations_url\": \"https://api.github.com/users/defionscode/orgs\",\n      \"url\": \"https://api.github.com/users/defionscode\",\n      \"events_url\": \"https://api.github.com/users/defionscode/events{/privacy}\",\n      \"html_url\": \"https://github.com/defionscode\",\n      \"subscriptions_url\": \"https://api.github.com/users/defionscode/subscriptions\",\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/4664162?v=4\",\n      \"repos_url\": \"https://api.github.com/users/defionscode/repos\",\n      \"received_events_url\": \"https://api.github.com/users/defionscode/received_events\",\n      \"gravatar_id\": \"\",\n      \"starred_url\": \"https://api.github.com/users/defionscode/starred{/owner}{/repo}\",\n      \"site_admin\": false,\n      \"login\": \"defionscode\",\n      \"type\": \"User\",\n      \"id\": 4664162,\n      \"followers_url\": \"https://api.github.com/users/defionscode/followers\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T18:51:10Z\",\n    \"updated_at\": \"2017-08-07T18:51:10Z\",\n    \"state\": \"pending\",\n    \"context\": \"Shippable\",\n    \"id\": 1440325299\n  }\n]\n"
  },
  {
    "path": "tests/fixtures/rebuild/1_issue.yml",
    "content": "# https://api.github.com/repos/ansible/ansible/issues/68152/events\nhtml_url: https://github.com/ansible/ansible/pull/000\nnumber: 000\ngithub_repo: ansible\nsubmitter: joe\ncreated_at: 2016-07-14T16:24:01Z\n_now: 2017-07-29T19:24:02Z\ntitle: fix the widget\nbody: |\n    issue type\n    feature pullrequest\n    component name\n    widget.py\n    ansible version\n    2.4\n    summary\n    like i said, my widget doesn't work\nevents:\n    - event: commented\n      body: /rebuild_failed\n      created_at: 2018-07-14T17:24:01Z\n      id: 1\n      actor:\n        login: joe\n"
  },
  {
    "path": "tests/fixtures/rebuild/1_prstatus.json",
    "content": "[\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228/summary\",\n    \"description\": \"Run 32228 status is FAILED. \",\n    \"creator\": {\n      \"following_url\": \"https://api.github.com/users/defionscode/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/defionscode/gists{/gist_id}\",\n      \"organizations_url\": \"https://api.github.com/users/defionscode/orgs\",\n      \"url\": \"https://api.github.com/users/defionscode\",\n      \"events_url\": \"https://api.github.com/users/defionscode/events{/privacy}\",\n      \"html_url\": \"https://github.com/defionscode\",\n      \"subscriptions_url\": \"https://api.github.com/users/defionscode/subscriptions\",\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/4664162?v=4\",\n      \"repos_url\": \"https://api.github.com/users/defionscode/repos\",\n      \"received_events_url\": \"https://api.github.com/users/defionscode/received_events\",\n      \"gravatar_id\": \"\",\n      \"starred_url\": \"https://api.github.com/users/defionscode/starred{/owner}{/repo}\",\n      \"site_admin\": false,\n      \"login\": \"defionscode\",\n      \"type\": \"User\",\n      \"id\": 4664162,\n      \"followers_url\": \"https://api.github.com/users/defionscode/followers\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T21:04:56Z\",\n    \"updated_at\": \"2017-08-07T21:04:56Z\",\n    \"state\": \"failed\",\n    \"context\": \"Shippable\",\n    \"id\": 1440728832\n  },\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228/summary\",\n    \"description\": \"Run 32228 status is PROCESSING. \",\n    \"creator\": {\n      \"following_url\": \"https://api.github.com/users/defionscode/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/defionscode/gists{/gist_id}\",\n      \"organizations_url\": \"https://api.github.com/users/defionscode/orgs\",\n      \"url\": \"https://api.github.com/users/defionscode\",\n      \"events_url\": \"https://api.github.com/users/defionscode/events{/privacy}\",\n      \"html_url\": \"https://github.com/defionscode\",\n      \"subscriptions_url\": \"https://api.github.com/users/defionscode/subscriptions\",\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/4664162?v=4\",\n      \"repos_url\": \"https://api.github.com/users/defionscode/repos\",\n      \"received_events_url\": \"https://api.github.com/users/defionscode/received_events\",\n      \"gravatar_id\": \"\",\n      \"starred_url\": \"https://api.github.com/users/defionscode/starred{/owner}{/repo}\",\n      \"site_admin\": false,\n      \"login\": \"defionscode\",\n      \"type\": \"User\",\n      \"id\": 4664162,\n      \"followers_url\": \"https://api.github.com/users/defionscode/followers\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T20:56:31Z\",\n    \"updated_at\": \"2017-08-07T20:56:31Z\",\n    \"state\": \"processing\",\n    \"context\": \"Shippable\",\n    \"id\": 1440702207\n  },\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228\",\n    \"description\": \"Run 32228 status is WAITING. \",\n    \"creator\": {\n      \"following_url\": \"https://api.github.com/users/defionscode/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/defionscode/gists{/gist_id}\",\n      \"organizations_url\": \"https://api.github.com/users/defionscode/orgs\",\n      \"url\": \"https://api.github.com/users/defionscode\",\n      \"events_url\": \"https://api.github.com/users/defionscode/events{/privacy}\",\n      \"html_url\": \"https://github.com/defionscode\",\n      \"subscriptions_url\": \"https://api.github.com/users/defionscode/subscriptions\",\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/4664162?v=4\",\n      \"repos_url\": \"https://api.github.com/users/defionscode/repos\",\n      \"received_events_url\": \"https://api.github.com/users/defionscode/received_events\",\n      \"gravatar_id\": \"\",\n      \"starred_url\": \"https://api.github.com/users/defionscode/starred{/owner}{/repo}\",\n      \"site_admin\": false,\n      \"login\": \"defionscode\",\n      \"type\": \"User\",\n      \"id\": 4664162,\n      \"followers_url\": \"https://api.github.com/users/defionscode/followers\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T18:51:10Z\",\n    \"updated_at\": \"2017-08-07T18:51:10Z\",\n    \"state\": \"pending\",\n    \"context\": \"Shippable\",\n    \"id\": 1440325299\n  }\n]\n"
  },
  {
    "path": "tests/fixtures/rebuild/2_issue.yml",
    "content": "# https://api.github.com/repos/ansible/ansible/issues/68152/events\nhtml_url: https://github.com/ansible/ansible/pull/000\nnumber: 000\ngithub_repo: ansible\nsubmitter: joe\ncreated_at: 2016-07-14T16:24:01Z\n_now: 2017-07-29T19:24:02Z\ntitle: fix the widget\nbody: |\n    issue type\n    feature pullrequest\n    component name\n    widget.py\n    ansible version\n    2.4\n    summary\n    like i said, my widget doesn't work\nevents:\n    - event: commented\n      body: /rebuild\n      created_at: 2018-07-14T17:24:01Z\n      id: 1\n      actor:\n        login: joe\n    - event: commented\n      body: /rebuild_failed\n      created_at: 2018-07-15T17:24:01Z\n      id: 2\n      actor:\n        login: joe\n"
  },
  {
    "path": "tests/fixtures/rebuild/2_prstatus.json",
    "content": "[\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228/summary\",\n    \"description\": \"Run 32228 status is FAILED. \",\n    \"creator\": {\n      \"following_url\": \"https://api.github.com/users/defionscode/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/defionscode/gists{/gist_id}\",\n      \"organizations_url\": \"https://api.github.com/users/defionscode/orgs\",\n      \"url\": \"https://api.github.com/users/defionscode\",\n      \"events_url\": \"https://api.github.com/users/defionscode/events{/privacy}\",\n      \"html_url\": \"https://github.com/defionscode\",\n      \"subscriptions_url\": \"https://api.github.com/users/defionscode/subscriptions\",\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/4664162?v=4\",\n      \"repos_url\": \"https://api.github.com/users/defionscode/repos\",\n      \"received_events_url\": \"https://api.github.com/users/defionscode/received_events\",\n      \"gravatar_id\": \"\",\n      \"starred_url\": \"https://api.github.com/users/defionscode/starred{/owner}{/repo}\",\n      \"site_admin\": false,\n      \"login\": \"defionscode\",\n      \"type\": \"User\",\n      \"id\": 4664162,\n      \"followers_url\": \"https://api.github.com/users/defionscode/followers\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T21:04:56Z\",\n    \"updated_at\": \"2017-08-07T21:04:56Z\",\n    \"state\": \"failed\",\n    \"context\": \"Shippable\",\n    \"id\": 1440728832\n  },\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228/summary\",\n    \"description\": \"Run 32228 status is PROCESSING. \",\n    \"creator\": {\n      \"following_url\": \"https://api.github.com/users/defionscode/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/defionscode/gists{/gist_id}\",\n      \"organizations_url\": \"https://api.github.com/users/defionscode/orgs\",\n      \"url\": \"https://api.github.com/users/defionscode\",\n      \"events_url\": \"https://api.github.com/users/defionscode/events{/privacy}\",\n      \"html_url\": \"https://github.com/defionscode\",\n      \"subscriptions_url\": \"https://api.github.com/users/defionscode/subscriptions\",\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/4664162?v=4\",\n      \"repos_url\": \"https://api.github.com/users/defionscode/repos\",\n      \"received_events_url\": \"https://api.github.com/users/defionscode/received_events\",\n      \"gravatar_id\": \"\",\n      \"starred_url\": \"https://api.github.com/users/defionscode/starred{/owner}{/repo}\",\n      \"site_admin\": false,\n      \"login\": \"defionscode\",\n      \"type\": \"User\",\n      \"id\": 4664162,\n      \"followers_url\": \"https://api.github.com/users/defionscode/followers\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T20:56:31Z\",\n    \"updated_at\": \"2017-08-07T20:56:31Z\",\n    \"state\": \"processing\",\n    \"context\": \"Shippable\",\n    \"id\": 1440702207\n  },\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228\",\n    \"description\": \"Run 32228 status is WAITING. \",\n    \"creator\": {\n      \"following_url\": \"https://api.github.com/users/defionscode/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/defionscode/gists{/gist_id}\",\n      \"organizations_url\": \"https://api.github.com/users/defionscode/orgs\",\n      \"url\": \"https://api.github.com/users/defionscode\",\n      \"events_url\": \"https://api.github.com/users/defionscode/events{/privacy}\",\n      \"html_url\": \"https://github.com/defionscode\",\n      \"subscriptions_url\": \"https://api.github.com/users/defionscode/subscriptions\",\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/4664162?v=4\",\n      \"repos_url\": \"https://api.github.com/users/defionscode/repos\",\n      \"received_events_url\": \"https://api.github.com/users/defionscode/received_events\",\n      \"gravatar_id\": \"\",\n      \"starred_url\": \"https://api.github.com/users/defionscode/starred{/owner}{/repo}\",\n      \"site_admin\": false,\n      \"login\": \"defionscode\",\n      \"type\": \"User\",\n      \"id\": 4664162,\n      \"followers_url\": \"https://api.github.com/users/defionscode/followers\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T18:51:10Z\",\n    \"updated_at\": \"2017-08-07T18:51:10Z\",\n    \"state\": \"pending\",\n    \"context\": \"Shippable\",\n    \"id\": 1440325299\n  }\n]\n"
  },
  {
    "path": "tests/fixtures/rebuild/3_issue.yml",
    "content": "# https://api.github.com/repos/ansible/ansible/issues/68152/events\nhtml_url: https://github.com/ansible/ansible/pull/000\nnumber: 000\ngithub_repo: ansible\nsubmitter: joe\ncreated_at: 2016-07-14T16:24:01Z\n_now: 2017-07-29T19:24:02Z\ntitle: fix the widget\nbody: |\n    issue type\n    feature pullrequest\n    component name\n    widget.py\n    ansible version\n    2.4\n    summary\n    like i said, my widget doesn't work\nevents:\n    - event: commented\n      body: /rebuild_failed\n      created_at: 2018-07-14T17:24:01Z\n      id: 1\n      actor:\n        login: joe\n    - event: commented\n      body: /rebuild\n      created_at: 2018-07-15T17:24:01Z\n      id: 2\n      actor:\n        login: joe\n"
  },
  {
    "path": "tests/fixtures/rebuild/3_prstatus.json",
    "content": "[\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228/summary\",\n    \"description\": \"Run 32228 status is FAILED. \",\n    \"creator\": {\n      \"following_url\": \"https://api.github.com/users/defionscode/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/defionscode/gists{/gist_id}\",\n      \"organizations_url\": \"https://api.github.com/users/defionscode/orgs\",\n      \"url\": \"https://api.github.com/users/defionscode\",\n      \"events_url\": \"https://api.github.com/users/defionscode/events{/privacy}\",\n      \"html_url\": \"https://github.com/defionscode\",\n      \"subscriptions_url\": \"https://api.github.com/users/defionscode/subscriptions\",\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/4664162?v=4\",\n      \"repos_url\": \"https://api.github.com/users/defionscode/repos\",\n      \"received_events_url\": \"https://api.github.com/users/defionscode/received_events\",\n      \"gravatar_id\": \"\",\n      \"starred_url\": \"https://api.github.com/users/defionscode/starred{/owner}{/repo}\",\n      \"site_admin\": false,\n      \"login\": \"defionscode\",\n      \"type\": \"User\",\n      \"id\": 4664162,\n      \"followers_url\": \"https://api.github.com/users/defionscode/followers\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T21:04:56Z\",\n    \"updated_at\": \"2017-08-07T21:04:56Z\",\n    \"state\": \"failed\",\n    \"context\": \"Shippable\",\n    \"id\": 1440728832\n  },\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228/summary\",\n    \"description\": \"Run 32228 status is PROCESSING. \",\n    \"creator\": {\n      \"following_url\": \"https://api.github.com/users/defionscode/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/defionscode/gists{/gist_id}\",\n      \"organizations_url\": \"https://api.github.com/users/defionscode/orgs\",\n      \"url\": \"https://api.github.com/users/defionscode\",\n      \"events_url\": \"https://api.github.com/users/defionscode/events{/privacy}\",\n      \"html_url\": \"https://github.com/defionscode\",\n      \"subscriptions_url\": \"https://api.github.com/users/defionscode/subscriptions\",\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/4664162?v=4\",\n      \"repos_url\": \"https://api.github.com/users/defionscode/repos\",\n      \"received_events_url\": \"https://api.github.com/users/defionscode/received_events\",\n      \"gravatar_id\": \"\",\n      \"starred_url\": \"https://api.github.com/users/defionscode/starred{/owner}{/repo}\",\n      \"site_admin\": false,\n      \"login\": \"defionscode\",\n      \"type\": \"User\",\n      \"id\": 4664162,\n      \"followers_url\": \"https://api.github.com/users/defionscode/followers\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T20:56:31Z\",\n    \"updated_at\": \"2017-08-07T20:56:31Z\",\n    \"state\": \"processing\",\n    \"context\": \"Shippable\",\n    \"id\": 1440702207\n  },\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228\",\n    \"description\": \"Run 32228 status is WAITING. \",\n    \"creator\": {\n      \"following_url\": \"https://api.github.com/users/defionscode/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/defionscode/gists{/gist_id}\",\n      \"organizations_url\": \"https://api.github.com/users/defionscode/orgs\",\n      \"url\": \"https://api.github.com/users/defionscode\",\n      \"events_url\": \"https://api.github.com/users/defionscode/events{/privacy}\",\n      \"html_url\": \"https://github.com/defionscode\",\n      \"subscriptions_url\": \"https://api.github.com/users/defionscode/subscriptions\",\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/4664162?v=4\",\n      \"repos_url\": \"https://api.github.com/users/defionscode/repos\",\n      \"received_events_url\": \"https://api.github.com/users/defionscode/received_events\",\n      \"gravatar_id\": \"\",\n      \"starred_url\": \"https://api.github.com/users/defionscode/starred{/owner}{/repo}\",\n      \"site_admin\": false,\n      \"login\": \"defionscode\",\n      \"type\": \"User\",\n      \"id\": 4664162,\n      \"followers_url\": \"https://api.github.com/users/defionscode/followers\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T18:51:10Z\",\n    \"updated_at\": \"2017-08-07T18:51:10Z\",\n    \"state\": \"pending\",\n    \"context\": \"Shippable\",\n    \"id\": 1440325299\n  }\n]\n"
  },
  {
    "path": "tests/fixtures/rebuild_merge/0_issue.yml",
    "content": "# https://api.github.com/repos/ansible/ansible-modules-extras/issues/2562/events\nhtml_url: https://github.com/ansible/ansible/pull/000\nnumber: 000\ngithub_repo: ansible\nsubmitter: joeschmoe\n#_match:\n#    name: widget\n#    topic: cloud\n#    subtopic: super\n#    fulltopic: cloud/super\n#    repository: core\n#_module_maintainers: [belladonna]\n#_ansible_members: [ansibot, bcoca]\ncreated_at: 2016-07-14T16:24:01Z\n_now: 2017-07-29T19:24:02Z\ntitle: fix the widget\nbody: |\n    issue type\n    feature pullrequest\n    component name\n    widget.py\n    ansible version\n    2.4\n    summary\n    like i said, my widget doesn't work\nevents:\n    - event: commented\n      body: hey, just commenting on my own issue. kthnxbai\n      created_at: 2016-07-14T17:24:01Z\n      id: 1\n      actor:\n        login: joeschmoe\n    - event: commented\n      body: rebuild_merge\n      created_at: 2016-07-15T17:24:01Z\n      id: 2\n      actor:\n        login: superman\n"
  },
  {
    "path": "tests/fixtures/rebuild_merge/0_prstatus.json",
    "content": "[\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228/summary\",\n    \"description\": \"Run 32228 status is SUCCESS. \",\n    \"creator\": {\n      \"following_url\": \"https://api.github.com/users/defionscode/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/defionscode/gists{/gist_id}\",\n      \"organizations_url\": \"https://api.github.com/users/defionscode/orgs\",\n      \"url\": \"https://api.github.com/users/defionscode\",\n      \"events_url\": \"https://api.github.com/users/defionscode/events{/privacy}\",\n      \"html_url\": \"https://github.com/defionscode\",\n      \"subscriptions_url\": \"https://api.github.com/users/defionscode/subscriptions\",\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/4664162?v=4\",\n      \"repos_url\": \"https://api.github.com/users/defionscode/repos\",\n      \"received_events_url\": \"https://api.github.com/users/defionscode/received_events\",\n      \"gravatar_id\": \"\",\n      \"starred_url\": \"https://api.github.com/users/defionscode/starred{/owner}{/repo}\",\n      \"site_admin\": false,\n      \"login\": \"defionscode\",\n      \"type\": \"User\",\n      \"id\": 4664162,\n      \"followers_url\": \"https://api.github.com/users/defionscode/followers\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T21:04:56Z\",\n    \"updated_at\": \"2017-08-07T21:04:56Z\",\n    \"state\": \"success\",\n    \"context\": \"Shippable\",\n    \"id\": 1440728832\n  },\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228/summary\",\n    \"description\": \"Run 32228 status is PROCESSING. \",\n    \"creator\": {\n      \"following_url\": \"https://api.github.com/users/defionscode/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/defionscode/gists{/gist_id}\",\n      \"organizations_url\": \"https://api.github.com/users/defionscode/orgs\",\n      \"url\": \"https://api.github.com/users/defionscode\",\n      \"events_url\": \"https://api.github.com/users/defionscode/events{/privacy}\",\n      \"html_url\": \"https://github.com/defionscode\",\n      \"subscriptions_url\": \"https://api.github.com/users/defionscode/subscriptions\",\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/4664162?v=4\",\n      \"repos_url\": \"https://api.github.com/users/defionscode/repos\",\n      \"received_events_url\": \"https://api.github.com/users/defionscode/received_events\",\n      \"gravatar_id\": \"\",\n      \"starred_url\": \"https://api.github.com/users/defionscode/starred{/owner}{/repo}\",\n      \"site_admin\": false,\n      \"login\": \"defionscode\",\n      \"type\": \"User\",\n      \"id\": 4664162,\n      \"followers_url\": \"https://api.github.com/users/defionscode/followers\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T20:56:31Z\",\n    \"updated_at\": \"2017-08-07T20:56:31Z\",\n    \"state\": \"pending\",\n    \"context\": \"Shippable\",\n    \"id\": 1440702207\n  },\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228\",\n    \"description\": \"Run 32228 status is WAITING. \",\n    \"creator\": {\n      \"following_url\": \"https://api.github.com/users/defionscode/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/defionscode/gists{/gist_id}\",\n      \"organizations_url\": \"https://api.github.com/users/defionscode/orgs\",\n      \"url\": \"https://api.github.com/users/defionscode\",\n      \"events_url\": \"https://api.github.com/users/defionscode/events{/privacy}\",\n      \"html_url\": \"https://github.com/defionscode\",\n      \"subscriptions_url\": \"https://api.github.com/users/defionscode/subscriptions\",\n      \"avatar_url\": \"https://avatars3.githubusercontent.com/u/4664162?v=4\",\n      \"repos_url\": \"https://api.github.com/users/defionscode/repos\",\n      \"received_events_url\": \"https://api.github.com/users/defionscode/received_events\",\n      \"gravatar_id\": \"\",\n      \"starred_url\": \"https://api.github.com/users/defionscode/starred{/owner}{/repo}\",\n      \"site_admin\": false,\n      \"login\": \"defionscode\",\n      \"type\": \"User\",\n      \"id\": 4664162,\n      \"followers_url\": \"https://api.github.com/users/defionscode/followers\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T18:51:10Z\",\n    \"updated_at\": \"2017-08-07T18:51:10Z\",\n    \"state\": \"pending\",\n    \"context\": \"Shippable\",\n    \"id\": 1440325299\n  }\n]\n"
  },
  {
    "path": "tests/fixtures/rebuild_merge/1_issue.yml",
    "content": "# https://api.github.com/repos/ansible/ansible-modules-extras/issues/2562/events\nhtml_url: https://github.com/ansible/ansible/pull/000\nnumber: 000\ngithub_repo: ansible\nsubmitter: joeschmoe\n#_match:\n#    name: widget\n#    topic: cloud\n#    subtopic: super\n#    fulltopic: cloud/super\n#    repository: core\n#_module_maintainers: [belladonna]\n#_ansible_members: [ansibot, bcoca]\ncreated_at: 2016-07-14T16:24:01Z\n_now: 2017-07-29T19:24:02Z\ntitle: fix the widget\nbody: |\n    issue type\n    feature pullrequest\n    component name\n    widget.py\n    ansible version\n    2.4\n    summary\n    like i said, my widget doesn't work\nevents:\n    - event: commented\n      body: hey, just commenting on my own issue. kthnxbai\n      created_at: 2016-07-14T17:24:01Z\n      id: 1\n      actor:\n        login: joeschmoe\n    - event: commented\n      body: rebuild_merge\n      created_at: 2016-07-15T17:24:01Z\n      id: 2\n      actor:\n        login: superman\n"
  },
  {
    "path": "tests/fixtures/rebuild_merge/1_prstatus.json",
    "content": "[\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32229\",\n    \"description\": \"Run 32229 status is WAITING. \",\n    \"creator\": {\n      \"login\": \"defionscode\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-08T18:51:10Z\",\n    \"updated_at\": \"2017-08-08T18:51:10Z\",\n    \"state\": \"pending\",\n    \"context\": \"Shippable\",\n    \"id\": 1440325300\n  },\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228/summary\",\n    \"description\": \"Run 32228 status is SUCCESS. \",\n    \"creator\": {\n      \"login\": \"defionscode\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T21:04:56Z\",\n    \"updated_at\": \"2017-08-07T21:04:56Z\",\n    \"state\": \"success\",\n    \"context\": \"Shippable\",\n    \"id\": 1440728832\n  },\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228/summary\",\n    \"description\": \"Run 32228 status is PROCESSING. \",\n    \"creator\": {\n      \"login\": \"defionscode\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T20:56:31Z\",\n    \"updated_at\": \"2017-08-07T20:56:31Z\",\n    \"state\": \"pending\",\n    \"context\": \"Shippable\",\n    \"id\": 1440702207\n  },\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228\",\n    \"description\": \"Run 32228 status is WAITING. \",\n    \"creator\": {\n      \"login\": \"defionscode\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T18:51:10Z\",\n    \"updated_at\": \"2017-08-07T18:51:10Z\",\n    \"state\": \"pending\",\n    \"context\": \"Shippable\",\n    \"id\": 1440325299\n  }\n]\n"
  },
  {
    "path": "tests/fixtures/rebuild_merge/2_issue.yml",
    "content": "# https://api.github.com/repos/ansible/ansible-modules-extras/issues/2562/events\nhtml_url: https://github.com/ansible/ansible/pull/000\nnumber: 000\ngithub_repo: ansible\nsubmitter: joeschmoe\n#_match:\n#    name: widget\n#    topic: cloud\n#    subtopic: super\n#    fulltopic: cloud/super\n#    repository: core\n#_module_maintainers: [belladonna]\n#_ansible_members: [ansibot, bcoca]\ncreated_at: 2016-07-14T16:24:01Z\n_now: 2017-07-29T19:24:02Z\ntitle: fix the widget\nbody: |\n    issue type\n    feature pullrequest\n    component name\n    widget.py\n    ansible version\n    2.4\n    summary\n    like i said, my widget doesn't work\nevents:\n    - event: commented\n      body: hey, just commenting on my own issue. kthnxbai\n      created_at: 2016-07-14T17:24:01Z\n      id: 1\n      actor:\n        login: joeschmoe\n    - event: commented\n      body: rebuild_merge\n      created_at: 2017-08-09T18:51:10Z\n      id: 2\n      actor:\n        login: superman\n"
  },
  {
    "path": "tests/fixtures/rebuild_merge/2_prstatus.json",
    "content": "[\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32229\",\n    \"description\": \"Run 32229 status is WAITING. \",\n    \"creator\": {\n      \"login\": \"defionscode\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-08T18:51:10Z\",\n    \"updated_at\": \"2017-08-08T18:51:10Z\",\n    \"state\": \"success\",\n    \"context\": \"Shippable\",\n    \"id\": 1440325300\n  },\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228/summary\",\n    \"description\": \"Run 32228 status is SUCCESS. \",\n    \"creator\": {\n      \"login\": \"defionscode\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T21:04:56Z\",\n    \"updated_at\": \"2017-08-07T21:04:56Z\",\n    \"state\": \"success\",\n    \"context\": \"Shippable\",\n    \"id\": 1440728832\n  },\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228/summary\",\n    \"description\": \"Run 32228 status is PROCESSING. \",\n    \"creator\": {\n      \"login\": \"defionscode\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T20:56:31Z\",\n    \"updated_at\": \"2017-08-07T20:56:31Z\",\n    \"state\": \"pending\",\n    \"context\": \"Shippable\",\n    \"id\": 1440702207\n  },\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228\",\n    \"description\": \"Run 32228 status is WAITING. \",\n    \"creator\": {\n      \"login\": \"defionscode\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T18:51:10Z\",\n    \"updated_at\": \"2017-08-07T18:51:10Z\",\n    \"state\": \"pending\",\n    \"context\": \"Shippable\",\n    \"id\": 1440325299\n  }\n]\n"
  },
  {
    "path": "tests/fixtures/rebuild_merge/3_issue.yml",
    "content": "# https://api.github.com/repos/ansible/ansible-modules-extras/issues/2562/events\nhtml_url: https://github.com/ansible/ansible/pull/000\nnumber: 000\ngithub_repo: ansible\nsubmitter: joeschmoe\n#_match:\n#    name: widget\n#    topic: cloud\n#    subtopic: super\n#    fulltopic: cloud/super\n#    repository: core\n#_module_maintainers: [belladonna]\n#_ansible_members: [ansibot, bcoca]\ncreated_at: 2016-07-14T16:24:01Z\n_now: 2017-07-29T19:24:02Z\ntitle: fix the widget\nbody: |\n    issue type\n    feature pullrequest\n    component name\n    widget.py\n    ansible version\n    2.4\n    summary\n    like i said, my widget doesn't work\nevents:\n    - event: commented\n      body: hey, just commenting on my own issue. kthnxbai\n      created_at: 2016-07-14T17:24:01Z\n      id: 1\n      actor:\n        login: joeschmoe\n    - event: commented\n      body: rebuild_merge\n      created_at: 2017-08-09T18:51:10Z\n      id: 2\n      actor:\n        login: superman\n    - event: committed\n      created_at: 2017-08-10T18:51:10Z\n      id: 3\n      actor:\n        login: joeschmoe\n"
  },
  {
    "path": "tests/fixtures/rebuild_merge/3_prstatus.json",
    "content": "[\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32229\",\n    \"description\": \"Run 32229 status is WAITING. \",\n    \"creator\": {\n      \"login\": \"defionscode\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-08T18:51:10Z\",\n    \"updated_at\": \"2017-08-08T18:51:10Z\",\n    \"state\": \"success\",\n    \"context\": \"Shippable\",\n    \"id\": 1440325300\n  },\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228/summary\",\n    \"description\": \"Run 32228 status is SUCCESS. \",\n    \"creator\": {\n      \"login\": \"defionscode\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T21:04:56Z\",\n    \"updated_at\": \"2017-08-07T21:04:56Z\",\n    \"state\": \"success\",\n    \"context\": \"Shippable\",\n    \"id\": 1440728832\n  },\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228/summary\",\n    \"description\": \"Run 32228 status is PROCESSING. \",\n    \"creator\": {\n      \"login\": \"defionscode\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T20:56:31Z\",\n    \"updated_at\": \"2017-08-07T20:56:31Z\",\n    \"state\": \"pending\",\n    \"context\": \"Shippable\",\n    \"id\": 1440702207\n  },\n  {\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32228\",\n    \"description\": \"Run 32228 status is WAITING. \",\n    \"creator\": {\n      \"login\": \"defionscode\"\n    },\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/02929db43f7d5ffd40511a31f536c315598fb2fb\",\n    \"created_at\": \"2017-08-07T18:51:10Z\",\n    \"updated_at\": \"2017-08-07T18:51:10Z\",\n    \"state\": \"pending\",\n    \"context\": \"Shippable\",\n    \"id\": 1440325299\n  }\n]\n"
  },
  {
    "path": "tests/fixtures/shipit/0_issue.yml",
    "content": "# https://api.github.com/repos/ansible/ansible/issues/21620/events\nhtml_url: https://github.com/ansible/ansible/pull/21620\nnumber: 21620\ngithub_repo: ansible\nsubmitter: mscherer\ncreated_at: 2016-02-18T17:37:01Z\n_now: 2017-08-19T00:24:02Z\ntitle: Add support for LVM to filesystem module\nbody: |\n    issue type\n    feature pullrequest\n    component name\n    filesystem\n    ansible version\n    2.4\n    summary\n    While using LVM2_member is not very userfriendly, I do have another patch for that. But I am not sure where to mention the list of supported FS, should it go in the description of fstype ?\nevents: []\n"
  },
  {
    "path": "tests/fixtures/shipit/0_prstatus.json",
    "content": "[\n  {\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/c19a95a315680a3f68b157054aa54c0ecc31ee28\",\n    \"id\": 1453721491,\n    \"state\": \"success\",\n    \"description\": \"Run 32923 status is SUCCESS. \",\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32923/summary\",\n    \"context\": \"Shippable\",\n    \"created_at\": \"2017-08-11T15:20:08Z\",\n    \"updated_at\": \"2017-08-11T15:20:08Z\",\n    \"creator\": {\n      \"login\": \"ansibot\",\n      \"id\": 6585283,\n      \"avatar_url\": \"https://avatars0.githubusercontent.com/u/6585283?v=4\",\n      \"gravatar_id\": \"\",\n      \"url\": \"https://api.github.com/users/ansibot\",\n      \"html_url\": \"https://github.com/ansibot\",\n      \"followers_url\": \"https://api.github.com/users/ansibot/followers\",\n      \"following_url\": \"https://api.github.com/users/ansibot/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/ansibot/gists{/gist_id}\",\n      \"starred_url\": \"https://api.github.com/users/ansibot/starred{/owner}{/repo}\",\n      \"subscriptions_url\": \"https://api.github.com/users/ansibot/subscriptions\",\n      \"organizations_url\": \"https://api.github.com/users/ansibot/orgs\",\n      \"repos_url\": \"https://api.github.com/users/ansibot/repos\",\n      \"events_url\": \"https://api.github.com/users/ansibot/events{/privacy}\",\n      \"received_events_url\": \"https://api.github.com/users/ansibot/received_events\",\n      \"type\": \"User\",\n      \"site_admin\": false\n    }\n  },\n  {\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/c19a95a315680a3f68b157054aa54c0ecc31ee28\",\n    \"id\": 1453693425,\n    \"state\": \"pending\",\n    \"description\": \"Run 32923 status is PROCESSING. \",\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32923/summary\",\n    \"context\": \"Shippable\",\n    \"created_at\": \"2017-08-11T15:11:52Z\",\n    \"updated_at\": \"2017-08-11T15:11:52Z\",\n    \"creator\": {\n      \"login\": \"ansibot\",\n      \"id\": 6585283,\n      \"avatar_url\": \"https://avatars0.githubusercontent.com/u/6585283?v=4\",\n      \"gravatar_id\": \"\",\n      \"url\": \"https://api.github.com/users/ansibot\",\n      \"html_url\": \"https://github.com/ansibot\",\n      \"followers_url\": \"https://api.github.com/users/ansibot/followers\",\n      \"following_url\": \"https://api.github.com/users/ansibot/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/ansibot/gists{/gist_id}\",\n      \"starred_url\": \"https://api.github.com/users/ansibot/starred{/owner}{/repo}\",\n      \"subscriptions_url\": \"https://api.github.com/users/ansibot/subscriptions\",\n      \"organizations_url\": \"https://api.github.com/users/ansibot/orgs\",\n      \"repos_url\": \"https://api.github.com/users/ansibot/repos\",\n      \"events_url\": \"https://api.github.com/users/ansibot/events{/privacy}\",\n      \"received_events_url\": \"https://api.github.com/users/ansibot/received_events\",\n      \"type\": \"User\",\n      \"site_admin\": false\n    }\n  },\n  {\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/c19a95a315680a3f68b157054aa54c0ecc31ee28\",\n    \"id\": 1453655632,\n    \"state\": \"pending\",\n    \"description\": \"Run 32923 status is WAITING. \",\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32923\",\n    \"context\": \"Shippable\",\n    \"created_at\": \"2017-08-11T15:00:47Z\",\n    \"updated_at\": \"2017-08-11T15:00:47Z\",\n    \"creator\": {\n      \"login\": \"ansibot\",\n      \"id\": 6585283,\n      \"avatar_url\": \"https://avatars0.githubusercontent.com/u/6585283?v=4\",\n      \"gravatar_id\": \"\",\n      \"url\": \"https://api.github.com/users/ansibot\",\n      \"html_url\": \"https://github.com/ansibot\",\n      \"followers_url\": \"https://api.github.com/users/ansibot/followers\",\n      \"following_url\": \"https://api.github.com/users/ansibot/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/ansibot/gists{/gist_id}\",\n      \"starred_url\": \"https://api.github.com/users/ansibot/starred{/owner}{/repo}\",\n      \"subscriptions_url\": \"https://api.github.com/users/ansibot/subscriptions\",\n      \"organizations_url\": \"https://api.github.com/users/ansibot/orgs\",\n      \"repos_url\": \"https://api.github.com/users/ansibot/repos\",\n      \"events_url\": \"https://api.github.com/users/ansibot/events{/privacy}\",\n      \"received_events_url\": \"https://api.github.com/users/ansibot/received_events\",\n      \"type\": \"User\",\n      \"site_admin\": false\n    }\n  }\n]\n"
  },
  {
    "path": "tests/fixtures/shipit/1_issue.yml",
    "content": "# https://api.github.com/repos/ansible/ansible/issues/21620/events\nhtml_url: https://github.com/ansible/ansible/pull/21620\nnumber: 21620\ngithub_repo: ansible\nsubmitter: mscherer\ncreated_at: 2016-02-18T17:37:01Z\n_now: 2017-08-19T00:24:02Z\ntitle: Add support for LVM to filesystem module\nbody: |\n    issue type\n    feature pullrequest\n    component name\n    filesystem\n    ansible version\n    2.4\n    summary\n    While using LVM2_member is not very userfriendly, I do have another patch for that. But I am not sure where to mention the list of supported FS, should it go in the description of fstype ?\nevents:\n    - event: commented\n      body: shipit\n      created_at: 2017-08-12T12:27:01Z\n      id: 1\n      actor:\n        login: LinusU\n"
  },
  {
    "path": "tests/fixtures/shipit/1_prstatus.json",
    "content": "[\n  {\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/c19a95a315680a3f68b157054aa54c0ecc31ee28\",\n    \"id\": 1453721491,\n    \"state\": \"success\",\n    \"description\": \"Run 32923 status is SUCCESS. \",\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32923/summary\",\n    \"context\": \"Shippable\",\n    \"created_at\": \"2017-08-11T15:20:08Z\",\n    \"updated_at\": \"2017-08-11T15:20:08Z\",\n    \"creator\": {\n      \"login\": \"ansibot\",\n      \"id\": 6585283,\n      \"avatar_url\": \"https://avatars0.githubusercontent.com/u/6585283?v=4\",\n      \"gravatar_id\": \"\",\n      \"url\": \"https://api.github.com/users/ansibot\",\n      \"html_url\": \"https://github.com/ansibot\",\n      \"followers_url\": \"https://api.github.com/users/ansibot/followers\",\n      \"following_url\": \"https://api.github.com/users/ansibot/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/ansibot/gists{/gist_id}\",\n      \"starred_url\": \"https://api.github.com/users/ansibot/starred{/owner}{/repo}\",\n      \"subscriptions_url\": \"https://api.github.com/users/ansibot/subscriptions\",\n      \"organizations_url\": \"https://api.github.com/users/ansibot/orgs\",\n      \"repos_url\": \"https://api.github.com/users/ansibot/repos\",\n      \"events_url\": \"https://api.github.com/users/ansibot/events{/privacy}\",\n      \"received_events_url\": \"https://api.github.com/users/ansibot/received_events\",\n      \"type\": \"User\",\n      \"site_admin\": false\n    }\n  },\n  {\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/c19a95a315680a3f68b157054aa54c0ecc31ee28\",\n    \"id\": 1453693425,\n    \"state\": \"pending\",\n    \"description\": \"Run 32923 status is PROCESSING. \",\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32923/summary\",\n    \"context\": \"Shippable\",\n    \"created_at\": \"2017-08-11T15:11:52Z\",\n    \"updated_at\": \"2017-08-11T15:11:52Z\",\n    \"creator\": {\n      \"login\": \"ansibot\",\n      \"id\": 6585283,\n      \"avatar_url\": \"https://avatars0.githubusercontent.com/u/6585283?v=4\",\n      \"gravatar_id\": \"\",\n      \"url\": \"https://api.github.com/users/ansibot\",\n      \"html_url\": \"https://github.com/ansibot\",\n      \"followers_url\": \"https://api.github.com/users/ansibot/followers\",\n      \"following_url\": \"https://api.github.com/users/ansibot/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/ansibot/gists{/gist_id}\",\n      \"starred_url\": \"https://api.github.com/users/ansibot/starred{/owner}{/repo}\",\n      \"subscriptions_url\": \"https://api.github.com/users/ansibot/subscriptions\",\n      \"organizations_url\": \"https://api.github.com/users/ansibot/orgs\",\n      \"repos_url\": \"https://api.github.com/users/ansibot/repos\",\n      \"events_url\": \"https://api.github.com/users/ansibot/events{/privacy}\",\n      \"received_events_url\": \"https://api.github.com/users/ansibot/received_events\",\n      \"type\": \"User\",\n      \"site_admin\": false\n    }\n  },\n  {\n    \"url\": \"https://api.github.com/repos/ansible/ansible/statuses/c19a95a315680a3f68b157054aa54c0ecc31ee28\",\n    \"id\": 1453655632,\n    \"state\": \"pending\",\n    \"description\": \"Run 32923 status is WAITING. \",\n    \"target_url\": \"https://app.shippable.com/github/ansible/ansible/runs/32923\",\n    \"context\": \"Shippable\",\n    \"created_at\": \"2017-08-11T15:00:47Z\",\n    \"updated_at\": \"2017-08-11T15:00:47Z\",\n    \"creator\": {\n      \"login\": \"ansibot\",\n      \"id\": 6585283,\n      \"avatar_url\": \"https://avatars0.githubusercontent.com/u/6585283?v=4\",\n      \"gravatar_id\": \"\",\n      \"url\": \"https://api.github.com/users/ansibot\",\n      \"html_url\": \"https://github.com/ansibot\",\n      \"followers_url\": \"https://api.github.com/users/ansibot/followers\",\n      \"following_url\": \"https://api.github.com/users/ansibot/following{/other_user}\",\n      \"gists_url\": \"https://api.github.com/users/ansibot/gists{/gist_id}\",\n      \"starred_url\": \"https://api.github.com/users/ansibot/starred{/owner}{/repo}\",\n      \"subscriptions_url\": \"https://api.github.com/users/ansibot/subscriptions\",\n      \"organizations_url\": \"https://api.github.com/users/ansibot/orgs\",\n      \"repos_url\": \"https://api.github.com/users/ansibot/repos\",\n      \"events_url\": \"https://api.github.com/users/ansibot/events{/privacy}\",\n      \"received_events_url\": \"https://api.github.com/users/ansibot/received_events\",\n      \"type\": \"User\",\n      \"site_admin\": false\n    }\n  }\n]\n"
  },
  {
    "path": "tests/fixtures/shipit/2_issue.yml",
    "content": "html_url: https://github.com/ansible/ansible/pull/123\nnumber: 123\ngithub_repo: ansible\nsubmitter: ElsA\ncreated_at: 2016-02-18T17:37:01Z\n_now: 2017-08-19T00:24:02Z\ntitle: a great PR\nbody: |\n    issue type\n    feature pullrequest\n    component name\n    foo\n    ansible version\n    2.7\n    summary\n    a great summary\nevents: []\n"
  },
  {
    "path": "tests/fixtures/shipit/2_prstatus.json",
    "content": "[]\n"
  },
  {
    "path": "tests/manual/group_errors.py",
    "content": "#!/usr/bin/env python\n\n\nimport json\nfrom fuzzywuzzy import fuzz\nfrom pprint import pprint\n\n\ndef get_matches(errors, pattern):\n    return [x for x in errors if x['component'] == pattern]\n\n\nwith open('component_errors.json', 'rb') as f:\n    errors = json.loads(f.read())\n\nGROUPS = []\n\nfor error in errors:\n\n    component = error['component']\n    print(f'checking: {component}')\n\n    for idg,group in enumerate(GROUPS):\n\n        if all(fuzz.ratio(component, gcomponent) > 50 for gcomponent in group):\n            group.append(component)\n            group = sorted(group)\n            break\n\n    else:\n        GROUPS.append([component])\n\nGROUPS.sort(key=len)\nfor group in GROUPS:\n    print('')\n    print('############################')\n    pprint(sorted(group))\n    print('----------------------------')\n\n    '''\n    for x in group:\n        matches = get_matches(errors, x)\n        if not matches:\n            continue\n        matches = [m for m in matches if len(m['result']) > 0]\n        if matches:\n\n            print('---------------------')\n            print('## {}'.format(x))\n            pprint(matches)\n    '''\n\nimport epdb; epdb.st()\n"
  },
  {
    "path": "tests/manual/matching_test.py",
    "content": "#!/usr/bin/env python\n\n\nimport json\nimport glob\nimport logging\nimport os\nimport sys\nimport tempfile\n\nimport ansibullbot.constants as C\n\nfrom ansibullbot.utils.systemtools import run_command\nfrom ansibullbot.utils.component_tools import AnsibleComponentMatcher\nfrom ansibullbot.utils.file_tools import FileIndexer\nfrom ansibullbot.utils.gh_gql_client import GithubGraphQLClient\nfrom ansibullbot.utils.moduletools import ModuleIndexer\nfrom ansibullbot.plugins.component_matching import get_component_match_facts\n\nfrom pprint import pprint\n\n\nLABELS = []\nCACHEDIR = os.path.expanduser('~/.ansibullbot/cache')\nFIXTUREDIR = 'tests/fixtures/component_data'\nMATCH_MAP = {}\n\nMETATAR = 'tests/fixtures/issuemeta/metafiles-2017-11-02.tar.gz'\n\n\nclass IssueWrapperMock:\n    def __init__(self, meta):\n        self.meta = meta\n\n    def is_issue(self):\n        return self.meta.get('is_issue', False)\n\n    def is_pullrequest(self):\n        return self.meta.get('is_pullrequest', False)\n\n    @property\n    def html_url(self):\n        return self.meta.get('html_url')\n\n    @property\n    def title(self):\n        return self.meta.get('title')\n\n    @property\n    def body(self):\n        body = '\\n'.join(['\\n'.join(x) for x in self.meta['template_data'].items()])\n        return body\n\n    @property\n    def template_data(self):\n        return self.meta.get('template_data', {})\n\n\ndef extract_metafiles():\n    # make tempdir\n    # extract files to tempdir\n    # return list of json files in tempdir\n    tarfile = os.path.abspath(METATAR)\n    tdir = tempfile.mkdtemp()\n    cmd = f'cd {tdir} ; tar xzvf {tarfile}'\n    (rc, so, se) = run_command(cmd)\n    metafiles = glob.glob(f'{tdir}/metafiles/*.json')\n    metafiles= sorted(set(metafiles))\n    return metafiles\n\n\ndef clean_metafiles(filenames):\n    for x in filenames:\n        os.remove(x)\n\n\ndef load_expected():\n    fn = os.path.join(FIXTUREDIR, 'component_expected_results.json')\n    with open(fn, 'rb') as f:\n        fdata = json.loads(f.read())\n    return fdata\n\n\ndef save_expected(data):\n    fn = os.path.join(FIXTUREDIR, 'component_expected_results.json')\n    with open(fn, 'wb') as f:\n        f.write(json.dumps(data, indent=2, sort_keys=True))\n\n\ndef load_match_map():\n    fn = os.path.join(FIXTUREDIR, 'component_match_map.json')\n    with open(fn, 'rb') as f:\n        data = json.loads(f.read())\n    return data\n\ndef save_match_map(data):\n    fn = os.path.join(FIXTUREDIR, 'component_match_map.json')\n    with open(fn, 'wb') as f:\n        f.write(json.dumps(data, indent=2, sort_keys=True))\n\ndef load_skip():\n    fn = os.path.join(FIXTUREDIR, 'component_skip.json')\n    with open(fn, 'rb') as f:\n        data = json.loads(f.read())\n    return data\n\n\ndef save_skip(data):\n    fn = os.path.join(FIXTUREDIR, 'component_skip.json')\n    with open(fn, 'wb') as f:\n        f.write(json.dumps(data, indent=2, sort_keys=True))\n\n\ndef set_logger():\n    logging.level = logging.DEBUG\n\n    logFormatter = \\\n        logging.Formatter(\"%(asctime)s %(levelname)s %(message)s\")\n    rootLogger = logging.getLogger()\n    rootLogger.setLevel(logging.DEBUG)\n    consoleHandler = logging.StreamHandler()\n    consoleHandler.setFormatter(logFormatter)\n    rootLogger.addHandler(consoleHandler)\n\n\ndef main():\n\n    set_logger()\n\n    METAFILES = extract_metafiles()\n\n    SKIP = load_skip()\n    EXPECTED = load_expected()\n    MATCH_MAP = load_match_map()\n\n    ERRORS = []\n    ERRORS_COMPONENTS = []\n\n    start_at = None\n    if len(sys.argv) == 2:\n        start_at = int(sys.argv[1])\n\n    FI = FileIndexer(checkoutdir=CACHEDIR)\n    with open('/tmp/files.json', 'wb') as f:\n        f.write(json.dumps(FI.files, indent=2))\n    GQLC = GithubGraphQLClient(C.DEFAULT_GITHUB_TOKEN)\n    MI = ModuleIndexer(cachedir=CACHEDIR, gh_client=GQLC, blames=False, commits=False)\n\n    CM = AnsibleComponentMatcher(cachedir=CACHEDIR)\n\n    for k,v in MI.modules.items():\n        if k in MATCH_MAP:\n            MATCH_MAP.pop(k, None)\n        kname = v.get('name')\n        if kname not in MATCH_MAP:\n            MATCH_MAP[kname] = v.get('repo_filename')\n        if kname + ' module' not in MATCH_MAP:\n            MATCH_MAP[kname + ' module'] = v.get('repo_filename')\n        if kname + 'module: ' + kname not in MATCH_MAP:\n            MATCH_MAP['module: ' + kname] = v.get('repo_filename')\n        if kname + 'module ' + kname not in MATCH_MAP:\n            MATCH_MAP['module ' + kname] = v.get('repo_filename')\n\n        # /modules/remote_management/foreman/katello.py\n        pname = k.replace('lib/ansible', '')\n        if pname not in MATCH_MAP:\n            MATCH_MAP[pname] = v.get('repo_filename')\n\n        # ansible/modules/packaging/os/rpm_key.py\n        pname = k.replace('lib/', '/')\n        if pname not in MATCH_MAP:\n            MATCH_MAP[pname] = v.get('repo_filename')\n\n        # /ansible/modules/packaging/os/rpm_key.py\n        pname = k.replace('lib/', '')\n        if pname not in MATCH_MAP:\n            MATCH_MAP[pname] = v.get('repo_filename')\n\n        # ansible/lib/ansible/modules/monitoring/monit.py\n        pname = 'ansible/' + k\n        if pname not in MATCH_MAP:\n            MATCH_MAP[pname] = v.get('repo_filename')\n\n        # network/f5/bigip_gtm_wide_ip\n        pname = k.replace('lib/ansible/modules/', '')\n        pname = pname.replace('.py', '')\n        pname = pname.replace('.ps1', '')\n        if pname not in MATCH_MAP:\n            MATCH_MAP[pname] = v.get('repo_filename')\n\n        # network/f5/bigip_gtm_wide_ip.py\n        pname = k.replace('lib/ansible/modules/', '')\n        if pname not in MATCH_MAP:\n            MATCH_MAP[pname] = v.get('repo_filename')\n\n        # modules/packaging/os/pkgng.py\n        pname = k.replace('lib/ansible/', '')\n        if pname not in MATCH_MAP:\n            MATCH_MAP[pname] = v.get('repo_filename')\n\n    save_match_map(MATCH_MAP)\n\n    total = len(METAFILES)\n    for IDMF,MF in enumerate(METAFILES):\n\n        if start_at and IDMF < start_at:\n            continue\n\n        with open(MF, 'rb') as f:\n            meta = json.loads(f.read())\n\n        if not meta.get('is_issue'):\n            continue\n\n        component = meta.get('template_data', {}).get('component_raw')\n\n        #if component != 'Module `synchronize`':\n        #if component != 'Module: include_role':\n        #    continue\n\n        if component:\n            print(f'------------------------------------------ {total}|{IDMF}')\n            print(meta['html_url'])\n            print(meta['title'])\n            print(component)\n\n            hurl = meta['html_url']\n            if hurl in SKIP:\n                continue\n\n            # bad template or bad template parsing\n            if len(component) > 100:\n                continue\n\n            iw = IssueWrapperMock(meta)\n            if 'module' not in iw.body.lower() and 'module' not in iw.title.lower():\n                continue\n\n            expected_fns = []\n\n            # OLD METHOD\n            if hurl not in EXPECTED and component not in MATCH_MAP:\n                cmf = get_component_match_facts(iw, meta, FI, MI, LABELS)\n                expected_fns = cmf.get('module_match')\n                if not isinstance(expected_fns, list):\n                    expected_fns = [expected_fns]\n                expected_fns = [x['repo_filename'] for x in expected_fns if x]\n                if 'component_matches' in cmf:\n                    expected_fns = [x['filename'] for x in cmf['component_matches']]\n                expected_fns = sorted(set(expected_fns))\n\n            # NEW METHOD\n            cmr = CM.match_components(iw.title, iw.body, iw.template_data.get('component_raw'))\n            cmr_fns = [x['repo_filename'] for x in cmr if x]\n            cmr_fns = sorted(set(cmr_fns))\n\n            # VALIDATE FROM EXPECTED IF KNOWN\n            if hurl in EXPECTED:\n                if EXPECTED[hurl] and not isinstance(EXPECTED[hurl], list):\n                    expected_fns = [EXPECTED[hurl]]\n                elif EXPECTED[hurl]:\n                    expected_fns = EXPECTED[hurl]\n                else:\n                    expected_fns = []\n\n            # USE THE CACHED MAP\n            if component in MATCH_MAP:\n                expected_fns = MATCH_MAP[component]\n                if not isinstance(expected_fns, list):\n                    expected_fns = [expected_fns]\n            elif component.lower() in MATCH_MAP:\n                expected_fns = MATCH_MAP[component.lower()]\n                if not isinstance(expected_fns, list):\n                    expected_fns = [expected_fns]\n            elif component.startswith(':\\n') and component.endswith(' module'):\n                mapkey = component.lstrip(':\\n')\n                if mapkey in MATCH_MAP:\n                    expected_fns = MATCH_MAP[mapkey]\n                    if not isinstance(expected_fns, list):\n                        expected_fns = [expected_fns]\n\n            # OLD CODE USED ACTION PLUGINS INSTEAD OF MODULES\n            if expected_fns != cmr_fns and hurl not in EXPECTED:\n                if len(expected_fns) == 1 and len(cmr_fns) == 1 and 'plugins/action' in expected_fns[0]:\n                    e_bn = os.path.basename(expected_fns[0])\n                    c_bn = os.path.basename(cmr_fns[0])\n                    if e_bn == c_bn:\n                        MATCH_MAP[component] = cmr_fns\n                        save_match_map(MATCH_MAP)\n                        continue\n\n            # DOCS URLS\n            if expected_fns != cmr_fns and hurl not in EXPECTED:\n                if len(cmr_fns) == 1 and 'lib/ansible/modules' in cmr_fns[0]:\n                    c_bn = os.path.basename(cmr_fns[0])\n                    if f'docs.ansible.com/ansible/latest/{c_bn}_module.html' in component:\n                        MATCH_MAP[component] = cmr_fns\n                        save_match_map(MATCH_MAP)\n                        continue\n                    elif CM.strategy in ['search_by_regex_urls']:\n                        MATCH_MAP[component] = cmr_fns\n                        save_match_map(MATCH_MAP)\n                        continue\n\n            # NXOS ISSUES HAVE NXOS_VERSION HEADER\n            if '- nxos' in component:\n                if len(cmr_fns) == 1:\n                    if os.path.basename(cmr_fns[0]).replace('.py', '') in component:\n                        MATCH_MAP[component] = cmr_fns\n                        save_match_map(MATCH_MAP)\n                        continue\n                #import epdb; epdb.st()\n\n            # ODDBALL MODULE COMPONENTS\n            if len(cmr_fns) == 1 and 'lib/ansible/modules' in cmr_fns[0]:\n                bn = os.path.basename(cmr_fns[0])\n                bn = bn.replace('.py', '')\n                bn = bn.replace('.ps1', '')\n                if (bn in component or bn.lstrip('_') in component) and 'module' in component.lower():\n                    MATCH_MAP[component] = cmr_fns\n                    save_match_map(MATCH_MAP)\n                    continue\n                elif component == '- ' + bn:\n                    MATCH_MAP[component] = cmr_fns\n                    save_match_map(MATCH_MAP)\n                    continue\n                elif component == bn + '.py' or component == bn + '.ps1':\n                    MATCH_MAP[component] = cmr_fns\n                    save_match_map(MATCH_MAP)\n                    continue\n                elif component == '_' + bn + '.py' or component == '_' + bn + '.ps1':\n                    MATCH_MAP[component] = cmr_fns\n                    save_match_map(MATCH_MAP)\n                    continue\n                elif component == ':\\n' + bn or component == ':\\n' + bn.lstrip('_'):\n                    MATCH_MAP[component] = cmr_fns\n                    save_match_map(MATCH_MAP)\n                    continue\n\n            # 'multiple modules', etc ...\n            if component in CM.KEYWORDS or component.lower() in CM.KEYWORDS:\n                if component in CM.KEYWORDS and CM.KEYWORDS[component] is None and not cmr_fns:\n                    MATCH_MAP[component] = cmr_fns\n                    save_match_map(MATCH_MAP)\n                    continue\n                elif component.lower() in CM.KEYWORDS and CM.KEYWORDS[component.lower()] is None and not cmr_fns:\n                    MATCH_MAP[component] = cmr_fns\n                    save_match_map(MATCH_MAP)\n                    continue\n                elif len(cmr_fns) == 1 and cmr_fns[0] == CM.KEYWORDS.get(component):\n                    MATCH_MAP[component] = cmr_fns\n                    save_match_map(MATCH_MAP)\n                    continue\n                elif len(cmr_fns) == 1 and cmr_fns[0] == CM.KEYWORDS.get(component.lower()):\n                    MATCH_MAP[component] = cmr_fns\n                    save_match_map(MATCH_MAP)\n                    continue\n\n            if component.lstrip('-').strip() in CM.KEYWORDS and len(cmr_fns) == 1:\n                cname = component.lstrip('-').strip()\n                if CM.KEYWORDS[cname] == cmr_fns[0]:\n                    MATCH_MAP[component] = cmr_fns\n                    save_match_map(MATCH_MAP)\n                    continue\n\n            if component.endswith(' lookup') and len(cmr_fns) == 1 and 'lib/ansible/plugins/lookup' in cmr_fns[0]:\n                MATCH_MAP[component] = cmr_fns\n                save_match_map(MATCH_MAP)\n                continue\n\n            if component.endswith(' inventory script') and len(cmr_fns) == 1 and 'contrib/inventory' in cmr_fns[0]:\n                MATCH_MAP[component] = cmr_fns\n                save_match_map(MATCH_MAP)\n                continue\n\n            if component.startswith('ansible/lib') and len(cmr_fns) == 1:\n                fn = cmr_fns[0]\n                if 'ansible/' + fn == component:\n                    MATCH_MAP[component] = cmr_fns\n                    save_match_map(MATCH_MAP)\n                    continue\n\n            if component.endswith(' inventory plugin') and len(cmr_fns) == 1:\n                fn = cmr_fns[0]\n                if fn.startswith('lib/ansible/plugins/inventory'):\n                    MATCH_MAP[component] = cmr_fns\n                    save_match_map(MATCH_MAP)\n                    continue\n\n            if component == 'ec2.py' and cmr_fns and 'contrib/inventory/ec2.py' in cmr_fns:\n                MATCH_MAP[component] = cmr_fns\n                save_match_map(MATCH_MAP)\n                continue\n\n            if len(expected_fns) == 1 and len(cmr_fns) == 1:\n                if os.path.basename(expected_fns[0]) == os.path.basename(cmr_fns[0]):\n                    MATCH_MAP[component] = cmr_fns\n                    save_match_map(MATCH_MAP)\n                    continue\n\n            # COMPARE AND RECORD\n            if expected_fns != cmr_fns and hurl not in EXPECTED:\n\n                if component in MATCH_MAP or component.lower() in MATCH_MAP:\n                    if component.lower() in MATCH_MAP:\n                        mmc = MATCH_MAP[component.lower()]\n                    else:\n                        mmc = MATCH_MAP[component]\n                    if not isinstance(mmc, list):\n                        mmc == [mmc]\n                    if mmc == cmr_fns:\n                        EXPECTED[iw.html_url] = cmr_fns\n                        save_expected(EXPECTED)\n                        continue\n\n                print('## COMPONENT ...')\n                print(component)\n                print('## EXPECTED ...')\n                pprint(expected_fns)\n                print('## RESULT ...')\n                pprint(cmr_fns)\n                print('## STRATEGIES ..')\n                pprint(CM.strategy)\n                pprint(CM.strategies)\n\n                print('--------------------------------')\n                res = raw_input('Is the result correct? (y/n/s/d): ')\n                if res.lower() in ['y', 'yes']:\n                    MATCH_MAP[component] = cmr_fns\n                    EXPECTED[iw.html_url] = cmr_fns\n                    save_expected(EXPECTED)\n                    continue\n                elif res.lower() in ['s', 'skip']:\n                    SKIP.append(hurl)\n                    save_skip(SKIP)\n                    continue\n                elif res.lower() in ['d', 'debug']:\n                    import epdb; epdb.st()\n\n                ERRORS.append(iw.html_url)\n                ERRORS_COMPONENTS.append(\n                    {\n                        'url': iw.html_url,\n                        'component': component,\n                        'component_raw': iw.template_data.get('component_raw'),\n                        'result': cmr_fns,\n                        'expected': expected_fns,\n                        'strategy': CM.strategy,\n                        'strategies': CM.strategies\n                    }\n                )\n\n            else:\n\n                if component not in MATCH_MAP:\n                    MATCH_MAP[component] = cmr_fns\n                    save_match_map(MATCH_MAP)\n\n                if hurl not in EXPECTED:\n                    EXPECTED[hurl] = cmr_fns\n                    save_expected(EXPECTED)\n\n            continue\n\n\n    pprint(ERRORS)\n    fn = os.path.join(FIXTUREDIR, 'component_errors.json')\n    with open(fn, 'wb') as f:\n        f.write(json.dumps(ERRORS_COMPONENTS, indent=2, sort_keys=True))\n\n    clean_metafiles(METAFILES)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "tests/unit/__init__.py",
    "content": ""
  },
  {
    "path": "tests/unit/decorators/__init__.py",
    "content": ""
  },
  {
    "path": "tests/unit/decorators/test_github.py",
    "content": "from unittest.mock import patch\n\nfrom ansibullbot.utils.github import get_rate_limit\n\n\nclass RequestsResponseMock:\n    url = None\n    cache = None\n    def __init__(self, url):\n        self.url = url\n        self.cache = {}\n    def json(self):\n        result = self.cache.get(self.url, {})\n        return result\n\n\ndef SleepMock(duration):\n    pass\n\n\n@patch('ansibullbot.utils.github.C.DEFAULT_GITHUB_USERNAME', 'bob')\n@patch('ansibullbot.utils.github.C.DEFAULT_GITHUB_PASSWORD', '12345')\n@patch('ansibullbot.utils.github.C.DEFAULT_GITHUB_TOKEN', 'abcde12345')\n@patch('ansibullbot.utils.github.C.DEFAULT_GITHUB_URL', None)\n@patch('ansibullbot.utils.github.time.sleep', SleepMock)\n@patch('ansibullbot.utils.github.requests.get')\ndef test_get_rate_limit(mock_requests_get):\n\n    '''Basic check of get_rate_limit api'''\n\n    url = 'https://api.github.com/rate_limit'\n    rr = RequestsResponseMock(url)\n    rr.cache[url] = {\n        'resources': {\n            'core': {\n                'limit': 5000,\n                'remaining': 5000,\n                'reset': None\n            }\n        }\n    }\n    mock_requests_get.return_value = rr\n\n    limit = get_rate_limit()\n\n    assert isinstance(limit, dict)\n    assert 'resources' in limit\n    assert 'core' in limit['resources']\n    assert 'limit' in limit['resources']['core']\n    assert 'remaining' in limit['resources']['core']\n    assert 'reset' in limit['resources']['core']\n    assert limit['resources']['core']['limit'] == 5000\n    assert limit['resources']['core']['remaining'] == 5000\n"
  },
  {
    "path": "tests/unit/parsers/__init__.py",
    "content": ""
  },
  {
    "path": "tests/unit/parsers/metadata_1.yml",
    "content": "files: \n  $modules/cloud/amazon/:\n    notify:\n    - willthames\n  $modules/cloud/amazon/aws_api_gateway.py: mikedlr willthames\n  $modules/cloud/amazon/aws_kms.py: willthames\n  $modules/cloud/amazon/cloudformation.py: jsmartin ryansb tedder\n  $modules/cloud/amazon/cloudformation_facts.py: jmenga\n  $modules/cloud/amazon/cloudfront_facts.py: willthames wilvk\n  $modules/cloud/amazon/cloudtrail.py: $team_ansible shepdelacreme tedder\n  $modules/cloud/amazon/cloudwatchevent_rule.py: jsdalton\n  $modules/cloud/amazon/dynamodb_table.py: loia\n  $modules/cloud/amazon/dynamodb_ttl.py: tedder\n  $modules/cloud/amazon/ec2.py: $team_ansible lwade tgerla\n  $modules/cloud/amazon/ec2_ami.py: Constantin07 gunzy83 scicoin-project willthames\n  $modules/cloud/amazon/ec2_ami_copy.py: amir343\n  $modules/cloud/amazon/ec2_ami_find.py: tombamford\n  $modules/cloud/amazon/ec2_asg.py: $team_ansible garethr\n  $modules/cloud/amazon/ec2_asg_facts.py: wimnat\n  $modules/cloud/amazon/ec2_customer_gateway.py: MichaelBaydoun michaelbaydoun\n  $modules/cloud/amazon/ec2_eip.py: rickmendes\n  $modules/cloud/amazon/ec2_elb.py: jarv\n  $modules/cloud/amazon/ec2_elb_facts.py: mjschultz nand0p\n  $modules/cloud/amazon/ec2_elb_lb.py: jsdalton\n  $modules/cloud/amazon/ec2_eni.py: wimnat\n  $modules/cloud/amazon/ec2_eni_facts.py: wimnat\n  $modules/cloud/amazon/ec2_facts.py: roadmapper silviud\n  $modules/cloud/amazon/ec2_group.py: adq $team_ansible\n  $modules/cloud/amazon/ec2_group_facts.py: Sodki willthames\n  $modules/cloud/amazon/ec2_instance_facts.py: willthames\n  $modules/cloud/amazon/ec2_key.py: $team_ansible zbal\n  $modules/cloud/amazon/ec2_lc.py: $team_ansible garethr\n  $modules/cloud/amazon/ec2_lc_facts.py: psykotox willthames\n  $modules/cloud/amazon/ec2_lc_find.py: fiunchinho\n  $modules/cloud/amazon/ec2_metric_alarm.py: $team_ansible zeekin\n  $modules/cloud/amazon/ec2_scaling_policy.py: zeekin\n  $modules/cloud/amazon/ec2_snapshot.py: willthames\n  $modules/cloud/amazon/ec2_snapshot_facts.py: wimnat\n  $modules/cloud/amazon/ec2_tag.py: $team_ansible lwade\n  $modules/cloud/amazon/ec2_vol.py: $team_ansible lwade\n  $modules/cloud/amazon/ec2_vol_facts.py: wimnat\n  $modules/cloud/amazon/ec2_vpc_dhcp_options.py: joelthompson\n  $modules/cloud/amazon/ec2_vpc_dhcp_options_facts.py: naslanidis\n  $modules/cloud/amazon/ec2_vpc_endpoint.py: Etherdaemon willthames\n  $modules/cloud/amazon/ec2_vpc_endpoint_facts.py: Etherdaemon willthames\n  $modules/cloud/amazon/ec2_vpc_igw.py:\n    ignored: erydo\n    maintainers: willthames\n  $modules/cloud/amazon/ec2_vpc_igw_facts.py: naslanidis willthames\n  $modules/cloud/amazon/ec2_vpc_nacl.py: mmochan\n  $modules/cloud/amazon/ec2_vpc_nacl_facts.py: brandond\n  $modules/cloud/amazon/ec2_vpc_nat_gateway.py: Etherdaemon jonhadfield linuxdynasty\n  $modules/cloud/amazon/ec2_vpc_nat_gateway_facts.py: Etherdaemon willthames\n  $modules/cloud/amazon/ec2_vpc_net.py: $team_ansible defionscode\n  $modules/cloud/amazon/ec2_vpc_net_facts.py: whiter wimnat\n  $modules/cloud/amazon/ec2_vpc_peer.py: mmochan\n  $modules/cloud/amazon/ec2_vpc_peering_facts.py: Etherdaemon willthames\n  $modules/cloud/amazon/ec2_vpc_route_table.py:\n    ignored: erydo\n    maintainers: wimnat\n  $modules/cloud/amazon/ec2_vpc_route_table_facts.py: wimnat\n  $modules/cloud/amazon/ec2_vpc_subnet.py:\n    ignored: erydo\n    maintainers: brandond willthames\n  $modules/cloud/amazon/ec2_vpc_subnet_facts.py: wimnat\n  $modules/cloud/amazon/ec2_vpc_vgw.py: naslanidis\n  $modules/cloud/amazon/ec2_vpc_vgw_facts.py: naslanidis willthames\n  $modules/cloud/amazon/ec2_win_password.py: rickmendes\n  $modules/cloud/amazon/ecs_cluster.py: simplesteph\n  $modules/cloud/amazon/ecs_ecr.py: leedm777 willthames\n  $modules/cloud/amazon/ecs_service.py: java1guy kaczynskid simplesteph zacblazic\n  $modules/cloud/amazon/ecs_service_facts.py: java1guy kaczynskid simplesteph\n  $modules/cloud/amazon/ecs_task.py: simplesteph\n  $modules/cloud/amazon/ecs_taskdefinition.py: simplesteph\n  $modules/cloud/amazon/efs.py: akazakov ryansydnor\n  $modules/cloud/amazon/efs_facts.py: ryansydnor\n  $modules/cloud/amazon/elasticache.py: alachaum jsdalton\n  $modules/cloud/amazon/elasticache_parameter_group.py: s-hertel\n  $modules/cloud/amazon/elasticache_snapshot.py: s-hertel\n  $modules/cloud/amazon/elasticache_subnet_group.py: timmahoney\n  $modules/cloud/amazon/elb_application_lb.py: wimnat\n  $modules/cloud/amazon/elb_target_group.py: wimnat\n  $modules/cloud/amazon/elb_target_group_facts.py: willthames wimnat\n  $modules/cloud/amazon/execute_lambda.py: ryansb\n  $modules/cloud/amazon/iam.py: $team_ansible defionscode seiffert\n  $modules/cloud/amazon/iam_cert.py: $team_ansible\n  $modules/cloud/amazon/iam_cert_facts.py: Lujeni willthames\n  $modules/cloud/amazon/iam_group.py: willthames\n  $modules/cloud/amazon/iam_managed_policy.py: dkhenry willthames\n  $modules/cloud/amazon/iam_mfa_device_facts.py: pwnall\n  $modules/cloud/amazon/iam_policy.py: $team_ansible defionscode\n  $modules/cloud/amazon/iam_role.py: wimnat\n  $modules/cloud/amazon/iam_server_certificate_facts.py: linuxdynasty\n  $modules/cloud/amazon/kinesis_stream.py: linuxdynasty\n  $modules/cloud/amazon/lambda.py: steynovich\n  $modules/cloud/amazon/lambda_alias.py: pjodouin ryansb\n  $modules/cloud/amazon/lambda_event.py: pjodouin ryansb\n  $modules/cloud/amazon/lambda_facts.py: pjodouin\n  $modules/cloud/amazon/lightsail.py: nickball willthames\n  $modules/cloud/amazon/rds.py: bpennypacker willthames\n  $modules/cloud/amazon/rds_param_group.py: scottanderson42 tastychutney\n  $modules/cloud/amazon/rds_subnet_group.py: scottanderson42 tastychutney\n  $modules/cloud/amazon/redshift.py: j-carl\n  $modules/cloud/amazon/redshift_subnet_group.py: j-carl\n  $modules/cloud/amazon/route53.py: bpennypacker\n  $modules/cloud/amazon/route53_facts.py: Etherdaemon\n  $modules/cloud/amazon/route53_health_check.py: willthames zimbatm\n  $modules/cloud/amazon/route53_zone.py: minichate\n  $modules/cloud/amazon/s3.py: $team_ansible lwade\n  $modules/cloud/amazon/s3_bucket.py: wimnat\n  $modules/cloud/amazon/s3_lifecycle.py: wimnat\n  $modules/cloud/amazon/s3_logging.py: wimnat\n  $modules/cloud/amazon/s3_sync.py: tedder\n  $modules/cloud/amazon/s3_website.py: wimnat\n  $modules/cloud/amazon/sns.py: mjschultz willthames\n  $modules/cloud/amazon/sns_topic.py: joelthompson nand0p\n  $modules/cloud/amazon/sqs_queue.py: loia nadirollo nand0p\n  $modules/cloud/amazon/sts_assume_role.py: bekelchik\n  $modules/cloud/amazon/sts_session_token.py: pwnall\n  $modules/cloud/atomic/: krsacme\n  $modules/cloud/azure/azure.py: jwhitbeck\n  $modules/cloud/azure/azure_rm_deployment.py: devigned lmazuel obsoleted\n  $modules/cloud/azure/azure_rm_networkinterface.py: $team_azure\n  $modules/cloud/azure/azure_rm_networkinterface_facts.py: $team_azure\n  $modules/cloud/azure/azure_rm_publicipaddress.py: $team_azure\n  $modules/cloud/azure/azure_rm_publicipaddress_facts.py: $team_azure\n  $modules/cloud/azure/azure_rm_resourcegroup.py: $team_azure\n  $modules/cloud/azure/azure_rm_resourcegroup_facts.py: $team_azure\n  $modules/cloud/azure/azure_rm_securitygroup.py: $team_azure\n  $modules/cloud/azure/azure_rm_securitygroup_facts.py: $team_azure\n  $modules/cloud/azure/azure_rm_storageaccount.py: $team_azure\n  $modules/cloud/azure/azure_rm_storageaccount_facts.py: $team_azure\n  $modules/cloud/azure/azure_rm_storageblob.py: $team_azure\n  $modules/cloud/azure/azure_rm_subnet.py: $team_azure\n  $modules/cloud/azure/azure_rm_virtualmachine.py: $team_azure\n  $modules/cloud/azure/azure_rm_virtualmachineimage_facts.py: $team_azure\n  $modules/cloud/azure/azure_rm_virtualnetwork.py: $team_azure\n  $modules/cloud/azure/azure_rm_virtualnetwork_facts.py: $team_azure\n  $modules/cloud/centurylink/: clc-runner\n  $modules/cloud/cloudscale/cloudscale_server.py: gaudenz\n  $modules/cloud/cloudstack/cs_account.py: resmo\n  $modules/cloud/cloudstack/cs_affinitygroup.py: resmo\n  $modules/cloud/cloudstack/cs_cluster.py: resmo\n  $modules/cloud/cloudstack/cs_configuration.py: resmo\n  $modules/cloud/cloudstack/cs_domain.py: resmo\n  $modules/cloud/cloudstack/cs_facts.py: resmo\n  $modules/cloud/cloudstack/cs_firewall.py: resmo\n  $modules/cloud/cloudstack/cs_host.py: resmo\n  $modules/cloud/cloudstack/cs_instance.py: resmo\n  $modules/cloud/cloudstack/cs_instance_facts.py: resmo\n  $modules/cloud/cloudstack/cs_instance_nic.py: marcaurele resmo\n  $modules/cloud/cloudstack/cs_instancegroup.py: resmo\n  $modules/cloud/cloudstack/cs_ip_address.py: dazworrall resmo\n  $modules/cloud/cloudstack/cs_iso.py: resmo\n  $modules/cloud/cloudstack/cs_loadbalancer_rule.py: dazworrall resmo\n  $modules/cloud/cloudstack/cs_loadbalancer_rule_member.py: dazworrall resmo\n  $modules/cloud/cloudstack/cs_network.py: resmo\n  $modules/cloud/cloudstack/cs_network_acl.py: resmo\n  $modules/cloud/cloudstack/cs_network_acl_rule.py: resmo\n  $modules/cloud/cloudstack/cs_nic.py: resmo\n  $modules/cloud/cloudstack/cs_pod.py: resmo\n  $modules/cloud/cloudstack/cs_portforward.py: resmo\n  $modules/cloud/cloudstack/cs_project.py: resmo\n  $modules/cloud/cloudstack/cs_region.py: resmo\n  $modules/cloud/cloudstack/cs_resourcelimit.py: resmo\n  $modules/cloud/cloudstack/cs_role.py: resmo\n  $modules/cloud/cloudstack/cs_router.py: resmo\n  $modules/cloud/cloudstack/cs_securitygroup.py: resmo\n  $modules/cloud/cloudstack/cs_securitygroup_rule.py: resmo\n  $modules/cloud/cloudstack/cs_snapshot_policy.py: resmo\n  $modules/cloud/cloudstack/cs_sshkeypair.py: resmo\n  $modules/cloud/cloudstack/cs_staticnat.py: resmo\n  $modules/cloud/cloudstack/cs_template.py: resmo\n  $modules/cloud/cloudstack/cs_user.py: resmo\n  $modules/cloud/cloudstack/cs_vmsnapshot.py: resmo\n  $modules/cloud/cloudstack/cs_volume.py: jeffersongirao resmo\n  $modules/cloud/cloudstack/cs_vpc.py: resmo\n  $modules/cloud/cloudstack/cs_vpn_gateway.py: resmo\n  $modules/cloud/cloudstack/cs_zone.py: resmo\n  $modules/cloud/cloudstack/cs_zone_facts.py: resmo\n  $modules/cloud/digital_ocean/digital_ocean.py: alukovenko zbal\n  $modules/cloud/digital_ocean/digital_ocean_block_storage.py: bondanthony\n  $modules/cloud/digital_ocean/digital_ocean_domain.py: alukovenko mgregson\n  $modules/cloud/digital_ocean/digital_ocean_sshkey.py: alukovenko mgregson\n  $modules/cloud/digital_ocean/digital_ocean_tag.py: kontrafiktion\n  $modules/cloud/dimensiondata/dimensiondata_network.py: aimonb tintoy\n  $modules/cloud/docker/docker_container.py: ThomasSteinbach $team_ansible cove dusdanig jctanner joshuaconner kassiansun softzilla zfil\n  $modules/cloud/docker/docker_image.py: $team_ansible jctanner softzilla\n  $modules/cloud/docker/docker_image_facts.py: $team_ansible jctanner\n  $modules/cloud/docker/docker_login.py: jctanner olsaki\n  $modules/cloud/docker/docker_network.py: keitwb olsaki\n  $modules/cloud/docker/docker_secret.py:\n  $modules/cloud/docker/docker_service.py: $team_ansible\n  $modules/cloud/google/gc_storage.py: supertom\n  $modules/cloud/google/gcdns_record.py: walbert947\n  $modules/cloud/google/gcdns_zone.py: walbert947\n  $modules/cloud/google/gce.py: erjohnso supertom\n  $modules/cloud/google/gce_eip.py: erjohnso supertom\n  $modules/cloud/google/gce_img.py: supertom\n  $modules/cloud/google/gce_instance_template.py: GwenaelPellenArkeup erjohnso\n  $modules/cloud/google/gce_lb.py: erjohnso\n  $modules/cloud/google/gce_mig.py: erjohnso supertom\n  $modules/cloud/google/gce_net.py: erjohnso supertom\n  $modules/cloud/google/gce_pd.py: erjohnso\n  $modules/cloud/google/gce_snapshot.py: erjohnso robwagner33\n  $modules/cloud/google/gce_tag.py: supertom\n  $modules/cloud/google/gcp_backend_service.py: erjohnso supertom\n  $modules/cloud/google/gcp_forwarding_rule.py: erjohnso supertom\n  $modules/cloud/google/gcp_healthcheck.py: erjohnso supertom\n  $modules/cloud/google/gcp_target_proxy.py: erjohnso supertom\n  $modules/cloud/google/gcp_url_map.py: erjohnso supertom\n  $modules/cloud/google/gcpubsub.py: erjohnso supertom\n  $modules/cloud/google/gcpubsub_facts.py: erjohnso supertom\n  $modules/cloud/google/gcspanner.py: supertom\n  $modules/cloud/linode/linode.py: intheclouddan rwaweber zbal\n  $modules/cloud/lxc/lxc_container.py: cloudnull\n  $modules/cloud/lxd/: hnakamur\n  $modules/cloud/misc/helm.py: flaper87\n  $modules/cloud/misc/ovirt.py:\n    ignored: vincentvdk\n    maintainers: joshainglis karmab\n  $modules/cloud/misc/proxmox.py: UnderGreen\n  $modules/cloud/misc/proxmox_kvm.py: helldorado\n  $modules/cloud/misc/proxmox_template.py: UnderGreen\n  $modules/cloud/misc/rhevm.py: TimothyVandenbrande\n  $modules/cloud/misc/serverless.py: ryansb\n  $modules/cloud/misc/virt.py: $team_ansible\n  $modules/cloud/misc/virt_net.py: drybjed\n  $modules/cloud/misc/virt_pool.py: drybjed\n  $modules/cloud/misc/xenserver_facts.py: andyhky\n  $modules/cloud/openstack/os_auth.py: $team_openstack\n  $modules/cloud/openstack/os_client_config.py: $team_openstack\n  $modules/cloud/openstack/os_flavor_facts.py: $team_openstack\n  $modules/cloud/openstack/os_floating_ip.py: $team_openstack\n  $modules/cloud/openstack/os_group.py: $team_openstack\n  $modules/cloud/openstack/os_image.py: $team_openstack\n  $modules/cloud/openstack/os_image_facts.py: dagnello\n  $modules/cloud/openstack/os_ironic.py: $team_openstack\n  $modules/cloud/openstack/os_ironic_inspect.py: $team_openstack\n  $modules/cloud/openstack/os_ironic_node.py: $team_openstack\n  $modules/cloud/openstack/os_keypair.py: $team_openstack\n  $modules/cloud/openstack/os_keystone_domain.py: $team_openstack\n  $modules/cloud/openstack/os_keystone_domain_facts.py: $team_openstack\n  $modules/cloud/openstack/os_keystone_role.py: $team_openstack\n  $modules/cloud/openstack/os_keystone_service.py: SamYaple\n  $modules/cloud/openstack/os_network.py: $team_openstack\n  $modules/cloud/openstack/os_networks_facts.py: dagnello\n  $modules/cloud/openstack/os_nova_flavor.py: $team_openstack\n  $modules/cloud/openstack/os_nova_host_aggregate.py: $team_openstack\n  $modules/cloud/openstack/os_object.py: $team_openstack\n  $modules/cloud/openstack/os_port.py: dagnello\n  $modules/cloud/openstack/os_port_facts.py: $team_openstack\n  $modules/cloud/openstack/os_project.py: agireud\n  $modules/cloud/openstack/os_project_facts.py: $team_openstack\n  $modules/cloud/openstack/os_quota.py: $team_openstack\n  $modules/cloud/openstack/os_recordset.py: $team_openstack\n  $modules/cloud/openstack/os_router.py: $team_openstack\n  $modules/cloud/openstack/os_security_group.py: $team_openstack\n  $modules/cloud/openstack/os_security_group_rule.py: $team_openstack\n  $modules/cloud/openstack/os_server.py: $team_openstack\n  $modules/cloud/openstack/os_server_actions.py: $team_openstack\n  $modules/cloud/openstack/os_server_facts.py: $team_openstack\n  $modules/cloud/openstack/os_server_group.py: kong\n  $modules/cloud/openstack/os_server_volume.py: $team_openstack\n  $modules/cloud/openstack/os_stack.py: $team_openstack\n  $modules/cloud/openstack/os_subnet.py: $team_openstack\n  $modules/cloud/openstack/os_subnets_facts.py: dagnello\n  $modules/cloud/openstack/os_user.py: $team_openstack\n  $modules/cloud/openstack/os_user_facts.py: $team_openstack\n  $modules/cloud/openstack/os_user_group.py: $team_openstack\n  $modules/cloud/openstack/os_user_role.py: $team_openstack\n  $modules/cloud/openstack/os_volume.py: $team_openstack\n  $modules/cloud/openstack/os_zone.py: $team_openstack\n  $modules/cloud/ovh/ovh_ip_loadbalancing_backend.py: pascalheraud\n  $modules/cloud/ovirt/: machacekondra\n  $modules/cloud/packet/:\n  $modules/cloud/profitbricks/: baldwinSPC\n  $modules/cloud/pubnub/pubnub_blocks.py: parfeon pubnub\n  $modules/cloud/rackspace/rax.py: j2sol sivel\n  $modules/cloud/rackspace/rax_cbs.py: claco sivel\n  $modules/cloud/rackspace/rax_cbs_attachments.py: claco sivel\n  $modules/cloud/rackspace/rax_cdb.py: jails\n  $modules/cloud/rackspace/rax_cdb_database.py: jails\n  $modules/cloud/rackspace/rax_cdb_user.py: jails\n  $modules/cloud/rackspace/rax_clb.py: claco sivel\n  $modules/cloud/rackspace/rax_clb_nodes.py: neuroid\n  $modules/cloud/rackspace/rax_clb_ssl.py: smashwilson\n  $modules/cloud/rackspace/rax_dns.py: sivel\n  $modules/cloud/rackspace/rax_dns_record.py: sivel\n  $modules/cloud/rackspace/rax_facts.py: sivel\n  $modules/cloud/rackspace/rax_files.py: angstwad sivel\n  $modules/cloud/rackspace/rax_files_objects.py: angstwad sivel\n  $modules/cloud/rackspace/rax_identity.py: claco sivel\n  $modules/cloud/rackspace/rax_keypair.py: sivel\n  $modules/cloud/rackspace/rax_meta.py: sivel\n  $modules/cloud/rackspace/rax_mon_alarm.py: smashwilson\n  $modules/cloud/rackspace/rax_mon_check.py: smashwilson\n  $modules/cloud/rackspace/rax_mon_entity.py: smashwilson\n  $modules/cloud/rackspace/rax_mon_notification.py: smashwilson\n  $modules/cloud/rackspace/rax_mon_notification_plan.py: smashwilson\n  $modules/cloud/rackspace/rax_network.py: claco j2sol\n  $modules/cloud/rackspace/rax_queue.py: claco sivel\n  $modules/cloud/rackspace/rax_scaling_group.py: sivel\n  $modules/cloud/rackspace/rax_scaling_policy.py: sivel\n  $modules/cloud/smartos/imgadm.py: jasperla\n  $modules/cloud/smartos/smartos_image_facts.py: xen0l\n  $modules/cloud/smartos/vmadm.py: jasperla\n  $modules/cloud/softlayer/sl_vm.py: mcltn\n  $modules/cloud/univention/: 2-B\n  $modules/cloud/vmware/vca_fw.py: privateip\n  $modules/cloud/vmware/vca_nat.py: privateip\n  $modules/cloud/vmware/vca_vapp.py: privateip\n  $modules/cloud/vmware/vmware_cluster.py: $team_ansible jcpowermac\n  $modules/cloud/vmware/vmware_datacenter.py: $team_ansible jcpowermac kamsz\n  $modules/cloud/vmware/vmware_dns_config.py: $team_ansible jcpowermac\n  $modules/cloud/vmware/vmware_dvs_host.py: $team_ansible jcpowermac\n  $modules/cloud/vmware/vmware_dvs_portgroup.py: $team_ansible jcpowermac\n  $modules/cloud/vmware/vmware_dvswitch.py: $team_ansible jcpowermac\n  $modules/cloud/vmware/vmware_guest.py: $team_vmware\n  $modules/cloud/vmware/vmware_guest_facts.py: nerzhul\n  $modules/cloud/vmware/vmware_guest_find.py: $team_vmware\n  $modules/cloud/vmware/vmware_guest_snapshot.py: jctanner nerzhul\n  $modules/cloud/vmware/vmware_host.py: $team_ansible jcpowermac mtnbikenc\n  $modules/cloud/vmware/vmware_local_user_manager.py: $team_ansible\n  $modules/cloud/vmware/vmware_maintenancemode.py: $team_ansible\n  $modules/cloud/vmware/vmware_migrate_vmk.py: $team_ansible jcpowermac mtnbikenc\n  $modules/cloud/vmware/vmware_portgroup.py: $team_ansible jcpowermac mtnbikenc\n  $modules/cloud/vmware/vmware_resource_pool.py: dav1x\n  $modules/cloud/vmware/vmware_target_canonical_facts.py: $team_ansible\n  $modules/cloud/vmware/vmware_vm_facts.py: $team_ansible jcpowermac\n  $modules/cloud/vmware/vmware_vm_shell.py: chrrrles ritzk\n  $modules/cloud/vmware/vmware_vm_vss_dvs_migrate.py: $team_ansible jcpowermac\n  $modules/cloud/vmware/vmware_vmkernel.py: $team_ansible jcpowermac mtnbikenc\n  $modules/cloud/vmware/vmware_vmkernel_ip_config.py: $team_ansible jcpowermac mtnbikenc\n  $modules/cloud/vmware/vmware_vmotion.py: $team_ansible bedecarroll\n  $modules/cloud/vmware/vmware_vsan_cluster.py: $team_ansible mtnbikenc\n  $modules/cloud/vmware/vmware_vswitch.py: akasurde jcpowermac mtnbikenc\n  $modules/cloud/vmware/vsphere_copy.py: dagwieers\n  $modules/cloud/vmware/vsphere_guest.py: $team_ansible rhoop\n  $modules/cloud/webfaction/: quentinsf\n  $modules/clustering/consul.py: sgargan\n  $modules/clustering/consul_acl.py: sgargan\n  $modules/clustering/consul_kv.py: sgargan\n  $modules/clustering/consul_session.py: sgargan\n  $modules/clustering/kubernetes.py: erjohnso supertom\n  $modules/clustering/pacemaker_cluster.py:\n  $modules/clustering/znode.py: treyperry\n  $modules/commands/command.py: $team_ansible\n  $modules/commands/expect.py: sivel\n  $modules/commands/raw.py: $team_ansible\n  $modules/commands/script.py: $team_ansible\n  $modules/commands/shell.py: $team_ansible\n  $modules/crypto/: Spredzy\n  $modules/database/influxdb/: kamsz\n  $modules/database/misc/elasticsearch_plugin.py: ThePixelDeveloper\n  $modules/database/misc/kibana_plugin.py: barryib\n  $modules/database/misc/redis.py: slok\n  $modules/database/misc/riak.py: drewkerrigan jsmartin\n  $modules/database/mongodb/mongodb_parameter.py: nerzhul\n  $modules/database/mongodb/mongodb_user.py: elliotttf lujeni\n  $modules/database/mssql/mssql_db.py: Jmainguy vedit\n  $modules/database/mysql/mysql_db.py: $team_ansible\n  $modules/database/mysql/mysql_replication.py: banyek\n  $modules/database/mysql/mysql_user.py: Jmainguy\n  $modules/database/mysql/mysql_variables.py: banyek\n  $modules/database/postgresql/postgresql_db.py: $team_ansible matburt\n  $modules/database/postgresql/postgresql_ext.py: dschep matburt\n  $modules/database/postgresql/postgresql_lang.py: jensdepuydt matburt\n  $modules/database/postgresql/postgresql_privs.py: b6d matburt\n  $modules/database/postgresql/postgresql_schema.py:\n  $modules/database/postgresql/postgresql_user.py: $team_ansible matburt nerzhul\n  $modules/database/proxysql/: bmildren\n  $modules/database/vertica/: dareko\n  $modules/files/acl.py: $team_ansible astorije bcoca\n  $modules/files/archive.py: bendoh\n  $modules/files/assemble.py: $team_ansible sfromm\n  $modules/files/blockinfile.py: yaegashi\n  $modules/files/copy.py: $team_ansible\n  $modules/files/fetch.py: $team_ansible\n  $modules/files/file.py: $team_ansible\n  $modules/files/find.py: $team_ansible\n  $modules/files/ini_file.py: jpmens noseka1\n  $modules/files/iso_extract.py: dagwieers jhoekx ribbons\n  $modules/files/lineinfile.py: ahtik $team_ansible dhozac\n  $modules/files/patch.py: jirutka luisperlaz\n  $modules/files/replace.py: EvanK\n  $modules/files/stat.py: bpennypacker\n  $modules/files/synchronize.py: $team_ansible tima\n  $modules/files/tempfile.py:\n  $modules/files/template.py: $team_ansible\n  $modules/files/unarchive.py: dagwieers pileofrogs\n  $modules/files/xattr.py: $team_ansible bcoca\n  $modules/identity/ipa/ipa_dnsrecord.py: Nosmoht akasurde\n  $modules/identity/ipa/ipa_group.py: Nosmoht\n  $modules/identity/ipa/ipa_hbacrule.py: Nosmoht\n  $modules/identity/ipa/ipa_host.py: Nosmoht\n  $modules/identity/ipa/ipa_hostgroup.py: Nosmoht\n  $modules/identity/ipa/ipa_role.py: Nosmoht\n  $modules/identity/ipa/ipa_sudocmd.py: Nosmoht\n  $modules/identity/ipa/ipa_sudocmdgroup.py: Nosmoht\n  $modules/identity/ipa/ipa_sudorule.py: Nosmoht\n  $modules/identity/ipa/ipa_user.py: Nosmoht\n  $modules/identity/opendj/opendj_backendprop.py: dj-wasabi\n  $modules/inventory/add_host.py: $team_ansible\n  $modules/inventory/group_by.py: $team_ansible jhoekx\n  $modules/messaging/rabbitmq_binding.py: $team_rabbitmq\n  $modules/messaging/rabbitmq_exchange.py: $team_rabbitmq\n  $modules/messaging/rabbitmq_parameter.py: $team_rabbitmq\n  $modules/messaging/rabbitmq_plugin.py: $team_rabbitmq\n  $modules/messaging/rabbitmq_policy.py: retr0h\n  $modules/messaging/rabbitmq_queue.py: $team_rabbitmq\n  $modules/messaging/rabbitmq_user.py: $team_rabbitmq\n  $modules/messaging/rabbitmq_vhost.py: choffman\n  $modules/monitoring/airbrake_deployment.py: bpennypacker\n  $modules/monitoring/bigpanda.py: hkariti\n  $modules/monitoring/boundary_meter.py: ccollicutt\n  $modules/monitoring/circonus_annotation.py: NickatEpic\n  $modules/monitoring/datadog_event.py:\n    ignored: arturaz\n    maintainers: n0ts\n  $modules/monitoring/datadog_monitor.py: skornehl\n  $modules/monitoring/honeybadger_deployment.py: stympy\n  $modules/monitoring/icinga2_feature.py: nerzhul\n  $modules/monitoring/librato_annotation.py: sedward\n  $modules/monitoring/logentries.py: ivanvanderbyl\n  $modules/monitoring/logicmonitor.py: ethanculler woz5999\n  $modules/monitoring/logicmonitor_facts.py: ethanculler woz5999\n  $modules/monitoring/logstash_plugin.py: nerzhul\n  $modules/monitoring/monit.py: brian-brazil dstoflet\n  $modules/monitoring/nagios.py: tbielawa\n  $modules/monitoring/newrelic_deployment.py: mcodd\n  $modules/monitoring/pagerduty.py: suprememoocow thaumos\n  $modules/monitoring/pagerduty_alert.py:\n  $modules/monitoring/pingdom.py: thaumos\n  $modules/monitoring/rollbar_deployment.py: kavu\n  $modules/monitoring/sensu_check.py: andsens\n  $modules/monitoring/sensu_silence.py: smbambling\n  $modules/monitoring/sensu_subscription.py: andsens\n  $modules/monitoring/stackdriver.py: bwhaley\n  $modules/monitoring/statusio_maintenance.py: bhcopeland\n  $modules/monitoring/uptimerobot.py: nate-kingsley\n  $modules/monitoring/zabbix_group.py: cove eikef harrisongu\n  $modules/monitoring/zabbix_host.py: cove eikef harrisongu\n  $modules/monitoring/zabbix_hostmacro.py: cave eikef\n  $modules/monitoring/zabbix_maintenance.py: abulimov eikef\n  $modules/monitoring/zabbix_screen.py: cove eikef harrisongu\n  $modules/net_tools/basics/get_url.py: jpmens\n  $modules/net_tools/basics/slurp.py: $team_ansible\n  $modules/net_tools/basics/uri.py: $team_ansible\n  $modules/net_tools/cloudflare_dns.py: mgruener\n  $modules/net_tools/dnsimple.py: drcapulet\n  $modules/net_tools/dnsmadeeasy.py: briceburg\n  $modules/net_tools/exoscale/: resmo\n  $modules/net_tools/haproxy.py: ravibhure\n  $modules/net_tools/ipify_facts.py: resmo\n  $modules/net_tools/ipinfoio_facts.py: akostyuk\n  $modules/net_tools/ldap/: jtyr\n  $modules/net_tools/lldp.py: andyhky\n  $modules/net_tools/nmcli.py: alcamie101\n  $modules/net_tools/nsupdate.py: nerzhul\n  $modules/net_tools/omapi_host.py: nerzhul\n  $modules/net_tools/snmp_facts.py: ogenstad\n  $modules/network/a10/: ericchou1 mischapeters\n  $modules/network/aos/: dgarros jeremyschulman\n  $modules/network/asa/asa_acl.py: gundalow ogenstad\n  $modules/network/asa/asa_command.py: gundalow ogenstad privateip\n  $modules/network/asa/asa_config.py: gundalow ogenstad privateip\n  $modules/network/avi/: $team_avi\n  $modules/network/bigswitch/: jayakody tedelhourani vuile\n  $modules/network/citrix/netscaler.py: $team_ansible\n  $modules/network/cloudengine/: QijunPan\n  $modules/network/cumulus/nclu.py: $team_cumulus\n  $modules/network/dellos10/: skg-net\n  $modules/network/dellos6/: abirami-n skg-net\n  $modules/network/dellos9/: dhivyap skg-net\n  $modules/network/eos/eos_banner.py: privateip trishnaguha\n  $modules/network/eos/eos_command.py: privateip trishnaguha\n  $modules/network/eos/eos_config.py: privateip trishnaguha\n  $modules/network/eos/eos_eapi.py: privateip trishnaguha\n  $modules/network/eos/eos_facts.py: privateip trishnaguha\n  $modules/network/eos/eos_system.py: privateip trishnaguha\n  $modules/network/eos/eos_user.py: privateip trishnaguha\n  $modules/network/eos/eos_vlan.py: privateip rcarrillocruz trishnaguha\n  $modules/network/eos/eos_vrf.py: privateip rcarrillocruz trishnaguha\n  $modules/network/f5/bigip_command.py: caphrim007\n  $modules/network/f5/bigip_config.py: caphrim007\n  $modules/network/f5/bigip_device_dns.py: caphrim007\n  $modules/network/f5/bigip_device_ntp.py: caphrim007\n  $modules/network/f5/bigip_device_sshd.py: caphrim007\n  $modules/network/f5/bigip_facts.py: caphrim007\n  $modules/network/f5/bigip_gtm_datacenter.py: caphrim007\n  $modules/network/f5/bigip_gtm_facts.py: caphrim007\n  $modules/network/f5/bigip_gtm_pool.py: caphrim007\n  $modules/network/f5/bigip_gtm_virtual_server.py: caphrim007 perzizzle\n  $modules/network/f5/bigip_gtm_wide_ip.py: caphrim007\n  $modules/network/f5/bigip_hostname.py: caphrim007 mryanlam\n  $modules/network/f5/bigip_iapp_service.py: caphrim007\n  $modules/network/f5/bigip_iapp_template.py: caphrim007\n  $modules/network/f5/bigip_irule.py: caphrim007\n  $modules/network/f5/bigip_monitor_http.py: caphrim007 srvg\n  $modules/network/f5/bigip_monitor_tcp.py: caphrim007 srvg\n  $modules/network/f5/bigip_node.py: caphrim007\n  $modules/network/f5/bigip_pool.py: caphrim007 wojtek0806\n  $modules/network/f5/bigip_pool_member.py: caphrim007\n  $modules/network/f5/bigip_provision.py: caphrim007\n  $modules/network/f5/bigip_qkview.py: caphrim007\n  $modules/network/f5/bigip_routedomain.py: caphrim007\n  $modules/network/f5/bigip_selfip.py: caphrim007\n  $modules/network/f5/bigip_snat_pool.py: caphrim007\n  $modules/network/f5/bigip_snmp.py: caphrim007\n  $modules/network/f5/bigip_snmp_trap.py: caphrim007\n  $modules/network/f5/bigip_ssl_certificate.py: caphrim007\n  $modules/network/f5/bigip_sys_db.py: caphrim007\n  $modules/network/f5/bigip_sys_global.py: caphrim007\n  $modules/network/f5/bigip_user.py: caphrim007 wojtek0806\n  $modules/network/f5/bigip_virtual_address.py: caphrim007\n  $modules/network/f5/bigip_virtual_server.py: Etienne-Carriere caphrim007\n  $modules/network/f5/bigip_vlan.py: caphrim007\n  $modules/network/fortios/: bjolivot\n  $modules/network/illumos/: xen0l\n  $modules/network/interface/: $team_networking\n  $modules/network/ios/: privateip rcarrillocruz\n  $modules/network/iosxr/: privateip rcarrillocruz\n  $modules/network/junos/junos_banner.py: Qalthos ganeshrn\n  $modules/network/junos/junos_command.py: Qalthos ganeshrn privateip\n  $modules/network/junos/junos_config.py: Qalthos ganeshrn privateip\n  $modules/network/junos/junos_facts.py: Qalthos ganeshrn qalthos\n  $modules/network/junos/junos_interface.py: Qalthos ganeshrn\n  $modules/network/junos/junos_logging.py: Qalthos ganeshrn\n  $modules/network/junos/junos_netconf.py: Qalthos ganeshrn privateip\n  $modules/network/junos/junos_package.py: Qalthos ganeshrn privateip\n  $modules/network/junos/junos_rpc.py: Qalthos ganeshrn privateip\n  $modules/network/junos/junos_static_route.py: Qalthos ganeshrn\n  $modules/network/junos/junos_system.py: Qalthos ganeshrn\n  $modules/network/junos/junos_user.py: Qalthos ganeshrn privateip\n  $modules/network/junos/junos_vlan.py: Qalthos ganeshrn\n  $modules/network/layer2/: $team_networking\n  $modules/network/layer3/: $team_networking\n  $modules/network/lenovo/: dkasberg\n  $modules/network/netconf/netconf_config.py: ganeshrn lpenz userlerueda\n  $modules/network/netscaler/: $team_netscaler\n  $modules/network/netvisor/: $team_netvisor\n  $modules/network/nxos/: $team_nxos\n  $modules/network/openswitch/: $team_openswitch\n  $modules/network/ordnance/: alexanderturner djh00t\n  $modules/network/ovs/openvswitch_bridge.py:\n    ignored: stygstra\n    maintainers: privateip rcarrillocruz\n  $modules/network/ovs/openvswitch_db.py: privateip rcarrillocruz\n  $modules/network/ovs/openvswitch_port.py:\n    ignored: stygstra\n    maintainers: privateip rcarrillocruz\n  $modules/network/panos/panos_address.py: itdependsnetworks ivanbojer jtschichold\n  $modules/network/panos/panos_admin.py: ivanbojer jtschichold\n  $modules/network/panos/panos_admpwd.py: ivanbojer jtschichold\n  $modules/network/panos/panos_cert_gen_ssh.py: ivanbojer jtschichold\n  $modules/network/panos/panos_check.py: ivanbojer jtschichold\n  $modules/network/panos/panos_commit.py: ivanbojer jtschichold\n  $modules/network/panos/panos_dag.py: ivanbojer jtschichold\n  $modules/network/panos/panos_import.py: ivanbojer jtschichold\n  $modules/network/panos/panos_interface.py: ivanbojer jtschichold\n  $modules/network/panos/panos_lic.py: ivanbojer jtschichold\n  $modules/network/panos/panos_loadcfg.py: ivanbojer jtschichold\n  $modules/network/panos/panos_mgtconfig.py: ivanbojer jtschichold\n  $modules/network/panos/panos_nat_policy.py: ivanbojer jtschichold\n  $modules/network/panos/panos_pg.py: ivanbojer jtschichold\n  $modules/network/panos/panos_restart.py: ivanbojer jtschichold\n  $modules/network/panos/panos_security_policy.py: ivanbojer jtschichold\n  $modules/network/panos/panos_service.py: ivanbojer jtschichold\n  $modules/network/routing/net_static_route.py: $team_networking\n  $modules/network/sros/: $team_openswitch\n  $modules/network/system/: $team_networking\n  $modules/network/vyos/vyos_banner.py: Qalthos\n  $modules/network/vyos/vyos_command.py: Qalthos qalthos\n  $modules/network/vyos/vyos_config.py: Qalthos qalthos\n  $modules/network/vyos/vyos_facts.py: Qalthos qalthos\n  $modules/network/vyos/vyos_linkagg.py: Qalthos rcarrillocruz\n  $modules/network/vyos/vyos_static_route.py: Qalthos\n  $modules/network/vyos/vyos_system.py: Qalthos qalthos\n  $modules/network/vyos/vyos_user.py: Qalthos\n  $modules/notification/campfire.py: fabulops\n  $modules/notification/catapult.py: Jmainguy\n  $modules/notification/cisco_spark.py:\n  $modules/notification/flowdock.py: mcodd\n  $modules/notification/grove.py: zimbatm\n  $modules/notification/hall.py: bkimble\n  $modules/notification/hipchat.py: pb8226 shirou\n  $modules/notification/irc.py: jpmens sivel\n  $modules/notification/jabber.py: bcoca\n  $modules/notification/mail.py: dagwieers\n  $modules/notification/mattermost.py: bjolivot\n  $modules/notification/mqtt.py: jpmens\n  $modules/notification/nexmo.py: sivel\n  $modules/notification/osx_say.py: $team_ansible\n  $modules/notification/pushbullet.py: willybarro\n  $modules/notification/pushover.py: weaselkeeper\n  $modules/notification/rocketchat.py:\n    ignored: ramondelafuente\n    maintainers: Deepakkothandan\n  $modules/notification/sendgrid.py: makaimc\n  $modules/notification/slack.py: ramondelafuente\n  $modules/notification/telegram.py: tyouxa\n  $modules/notification/twilio.py: makaimc\n  $modules/notification/typetalk.py: tksmd\n  $modules/packaging/language/bower.py: mwarkentin\n  $modules/packaging/language/bundler.py: thoiberg\n  $modules/packaging/language/composer.py: dmtrs resmo\n  $modules/packaging/language/cpanm.py:\n  $modules/packaging/language/easy_install.py: mattupstate\n  $modules/packaging/language/gem.py: $team_ansible\n  $modules/packaging/language/maven_artifact.py: chrisisbeef\n  $modules/packaging/language/npm.py:\n    ignored: chrishoffman\n    maintainers: shane-walker\n  $modules/packaging/language/pear.py:\n  $modules/packaging/language/pip.py: mattupstate\n  $modules/packaging/os/apk.py: kbrebanov tdtrask\n  $modules/packaging/os/apt.py: $team_ansible mgwilliams\n  $modules/packaging/os/apt_key.py: jvantuyl\n  $modules/packaging/os/apt_repository.py: $team_ansible sashka\n  $modules/packaging/os/apt_rpm.py: evgkrsk\n  $modules/packaging/os/dnf.py: DJMuggs berenddeschouwer ignatenkobrain\n  $modules/packaging/os/dpkg_selections.py: brian-brazil\n  $modules/packaging/os/homebrew.py: andrew-d danieljaouen indrajitr\n  $modules/packaging/os/homebrew_cask.py: danieljaouen enriclluelles indrajitr\n  $modules/packaging/os/homebrew_tap.py: danieljaouen indrajitr\n  $modules/packaging/os/layman.py: jirutka\n  $modules/packaging/os/macports.py: jcftang\n  $modules/packaging/os/openbsd_pkg.py: eest\n  $modules/packaging/os/opkg.py: skinp\n  $modules/packaging/os/package.py: $team_ansible\n  $modules/packaging/os/pacman.py: elasticdog indrajitr\n  $modules/packaging/os/pkg5.py: mavit\n  $modules/packaging/os/pkg5_publisher.py: mavit\n  $modules/packaging/os/pkgin.py: L2G jasperla szinck troy2914\n  $modules/packaging/os/pkgng.py:\n    ignored: bleader\n    maintainers: JoergFiedler\n  $modules/packaging/os/pkgutil.py: dermute\n  $modules/packaging/os/portage.py:\n    ignored: sayap\n    maintainers: wltjr\n  $modules/packaging/os/portinstall.py: berenddeboer\n  $modules/packaging/os/pulp_repo.py: sysadmind\n  $modules/packaging/os/redhat_subscription.py: alikins barnabycourt\n  $modules/packaging/os/rhn_channel.py: alikins vincentvdk\n  $modules/packaging/os/rhn_register.py: $team_rhn\n  $modules/packaging/os/rpm_key.py: hacosta\n  $modules/packaging/os/slackpkg.py: KimNorgaard\n  $modules/packaging/os/sorcery.py: vaygr\n  $modules/packaging/os/svr4pkg.py: brontitall\n  $modules/packaging/os/swdepot.py: melodous\n  $modules/packaging/os/swupd.py: albertomurillo\n  $modules/packaging/os/urpmi.py: pmakowski\n  $modules/packaging/os/xbps.py: dinoocch the-maldridge\n  $modules/packaging/os/yum.py: $team_ansible berenddeschouwer verm666\n  $modules/packaging/os/yum_repository.py: jtyr\n  $modules/packaging/os/zypper.py:\n    ignored: dirtyharrycallahan\n    maintainers: AnderEnder alxgu andytom robinro\n  $modules/packaging/os/zypper_repository.py: matze robinro\n  $modules/remote_management/foreman/: ehelms\n  $modules/remote_management/hpilo/: dagwieers haad\n  $modules/remote_management/imc/imc_xml.py: dagwieers\n  $modules/remote_management/ipmi/: cloudnull\n  $modules/remote_management/stacki/stacki_host.py: bbyhuy bsanders\n  $modules/remote_management/wakeonlan.py: dagwieers\n  $modules/source_control/bzr.py: andreparames\n  $modules/source_control/git.py: $team_ansible robinro\n  $modules/source_control/git_config.py: djmattyg007\n  $modules/source_control/github_deploy_key.py: bincyber\n  $modules/source_control/github_hooks.py: pcgentry\n  $modules/source_control/github_issue.py: akasurde\n  $modules/source_control/github_key.py:\n    ignored: erydo\n  $modules/source_control/github_release.py: adrianmoisey\n  $modules/source_control/gitlab_group.py: dj-wasabi\n  $modules/source_control/gitlab_project.py: dj-wasabi\n  $modules/source_control/gitlab_user.py: dj-wasabi\n  $modules/source_control/hg.py: yeukhon\n  $modules/source_control/subversion.py: dsummersl\n  $modules/storage/infinidat/: GR360RY vmalloc\n  $modules/storage/netapp/: $team_netapp\n  $modules/storage/purestorage/purefa_host.py: sdodsley\n  $modules/storage/zfs/zfs.py: johanwiren\n  $modules/storage/zfs/zfs_facts.py: xen0l\n  $modules/storage/zfs/zpool_facts.py: xen0l\n  $modules/system/aix_inittab.py: molekuul\n  $modules/system/aix_lvol.py: adejoux\n  $modules/system/alternatives.py: DavidWittman mulby\n  $modules/system/at.py: $team_ansible\n  $modules/system/authorized_key.py: $team_ansible\n  $modules/system/awall.py: tdtrask\n  $modules/system/beadm.py: xen0l\n  $modules/system/capabilities.py: natefoo\n  $modules/system/cron.py: EvanK dsummersl lberruti\n  $modules/system/cronvar.py: dougluce\n  $modules/system/crypttab.py: groks\n  $modules/system/dconf.py: azaghal\n  $modules/system/debconf.py: bcoca\n  $modules/system/facter.py: $team_ansible\n  $modules/system/filesystem.py: abulimov\n  $modules/system/firewalld.py: maxamillion\n  $modules/system/gconftool2.py: akasurde kevensen\n  $modules/system/getent.py: bcoca\n  $modules/system/gluster_volume.py: rosmo\n  $modules/system/group.py: $team_ansible sfromm\n  $modules/system/hostname.py: alikins saito-hideki\n  $modules/system/iptables.py: LinusU\n  $modules/system/java_cert.py:\n  $modules/system/kernel_blacklist.py: matze\n  $modules/system/known_hosts.py: mcv21\n  $modules/system/locale_gen.py: AugustusKling\n  $modules/system/lvg.py: abulimov\n  $modules/system/lvol.py: abulimov jhoekx\n  $modules/system/make.py: LinusU\n  $modules/system/modprobe.py:\n    ignored: stygstra\n  $modules/system/mount.py: $team_ansible\n  $modules/system/ohai.py: $team_ansible\n  $modules/system/open_iscsi.py: srvg\n  $modules/system/openwrt_init.py: agaffney\n  $modules/system/osx_defaults.py:\n    ignored: frenck\n    maintainers: $team_ansible\n  $modules/system/pam_limits.py:\n    ignored: usawa\n    maintainers: $team_ansible\n  $modules/system/pamd.py: kevensen\n  $modules/system/parted.py: ColOfAbRiX\n  $modules/system/ping.py: $team_ansible\n  $modules/system/puppet.py: emonty nibalizer\n  $modules/system/runit.py: jsumners\n  $modules/system/seboolean.py: $team_ansible sfromm\n  $modules/system/sefcontext.py: dagwieers\n  $modules/system/selinux.py: goozbach\n  $modules/system/selinux_permissive.py: mscherer\n  $modules/system/seport.py: dankeder\n  $modules/system/service.py: $team_ansible\n  $modules/system/setup.py: $team_ansible\n  $modules/system/solaris_zone.py: pmarkham\n  $modules/system/svc.py: bcoca\n  $modules/system/sysctl.py: akasurde davixx\n  $modules/system/systemd.py: $team_ansible\n  $modules/system/timezone.py: jasperla tmshn\n  $modules/system/ufw.py: ahtik ovcharenko pyykkis\n  $modules/system/user.py: $team_ansible sfromm\n  $modules/utilities/helper/meta.py: $team_ansible\n  $modules/utilities/logic/assert.py: $team_ansible\n  $modules/utilities/logic/async_status.py: $team_ansible\n  $modules/utilities/logic/async_wrapper.py: $team_ansible\n  $modules/utilities/logic/debug.py: dagwieers\n  $modules/utilities/logic/fail.py: dagwieers\n  $modules/utilities/logic/include.py: $team_ansible\n  $modules/utilities/logic/include_role.py: $team_ansible\n  $modules/utilities/logic/include_vars.py: $team_ansible linuxdynasty\n  $modules/utilities/logic/pause.py: tbielawa\n  $modules/utilities/logic/set_fact.py: dagwieers\n  $modules/utilities/logic/set_stats.py: bcoca\n  $modules/utilities/logic/wait_for.py: AnderEnder gregswift jarv jhoekx\n  $modules/utilities/logic/wait_for_connection.py: dagwieers\n  $modules/web_infrastructure/ansible_tower/: $team_tower\n  $modules/web_infrastructure/apache2_mod_proxy.py: oboukili\n  $modules/web_infrastructure/apache2_module.py: berendt n0trax robinro\n  $modules/web_infrastructure/deploy_helper.py: ramondelafuente\n  $modules/web_infrastructure/django_manage.py: scottanderson42 tastychutney\n  $modules/web_infrastructure/ejabberd_user.py: privateip\n  $modules/web_infrastructure/gunicorn.py: agmezr\n  $modules/web_infrastructure/htpasswd.py: $team_ansible\n  $modules/web_infrastructure/jboss.py: jhoekx\n  $modules/web_infrastructure/jenkins_job.py: sermilrod\n  $modules/web_infrastructure/jenkins_plugin.py: jtyr\n  $modules/web_infrastructure/jenkins_script.py: hogarthj\n  $modules/web_infrastructure/jira.py: Slezhuk tarka\n  $modules/web_infrastructure/letsencrypt.py: mgruener\n  $modules/web_infrastructure/nginx_status_facts.py: resmo\n  $modules/web_infrastructure/rundeck_acl_policy.py:\n  $modules/web_infrastructure/rundeck_project.py: nerzhul\n  $modules/web_infrastructure/supervisorctl.py: inetfuture mattupstate\n  $modules/web_infrastructure/taiga_issue.py: lekum\n  $modules/windows/async_status.ps1: $team_windows\n  $modules/windows/async_wrapper.ps1: $team_windows\n  $modules/windows/setup.ps1: $team_ansible\n  $modules/windows/slurp.ps1: $team_ansible\n  $modules/windows/win_acl.ps1: schwartzmx trondhindenes\n  $modules/windows/win_acl.py: h0nIg schwartzmx trondhindenes\n  $modules/windows/win_acl_inheritance.ps1: $team_windows\n  $modules/windows/win_acl_inheritance.py: h0nIg\n  $modules/windows/win_chocolatey.ps1: nitzmahone smadam813\n  $modules/windows/win_chocolatey.py: elventear nitzmahone petemounce smadam813 trondhindenes\n  $modules/windows/win_command.ps1: $team_windows\n  $modules/windows/win_command.py: $team_windows\n  $modules/windows/win_copy.ps1: jhawkesworth\n  $modules/windows/win_copy.py: jhawkesworth\n  $modules/windows/win_defrag.ps1: $team_windows\n  $modules/windows/win_defrag.py: $team_windows\n  $modules/windows/win_disk_image.ps1: $team_windows\n  $modules/windows/win_disk_image.py: nitzmahone\n  $modules/windows/win_dns_client.ps1: $team_windows\n  $modules/windows/win_dns_client.py: nitzmahone\n  $modules/windows/win_domain.ps1: $team_windows\n  $modules/windows/win_domain.py: nitzmahone\n  $modules/windows/win_domain_controller.ps1: $team_windows\n  $modules/windows/win_domain_controller.py: nitzmahone\n  $modules/windows/win_domain_membership.ps1: $team_windows\n  $modules/windows/win_domain_membership.py: nitzmahone\n  $modules/windows/win_dotnet_ngen.ps1: petemounce\n  $modules/windows/win_dotnet_ngen.py: petemounce\n  $modules/windows/win_dsc.ps1: trondhindenes\n  $modules/windows/win_dsc.py: trondhindenes\n  $modules/windows/win_environment.ps1: jhawkesworth\n  $modules/windows/win_environment.py: jhawkesworth\n  $modules/windows/win_feature.ps1: trondhindenes\n  $modules/windows/win_feature.py: angstwad trondhindenes\n  $modules/windows/win_file.ps1: jhawkesworth\n  $modules/windows/win_file.py: jhawkesworth\n  $modules/windows/win_file_version.ps1: SamLiu79\n  $modules/windows/win_file_version.py: SamLiu79\n  $modules/windows/win_find.ps1: jborean93\n  $modules/windows/win_find.py: jborean93\n  $modules/windows/win_firewall.ps1: if-meaton\n  $modules/windows/win_firewall.py: if-meaton\n  $modules/windows/win_firewall_rule.ps1: TimothyVandenbrande ar7z1\n  $modules/windows/win_firewall_rule.py: TimothyVandenbrande ar7z1\n  $modules/windows/win_get_url.ps1: jhawkesworth\n  $modules/windows/win_get_url.py: angstwad jhawkesworth\n  $modules/windows/win_group.ps1: chrishoffman\n  $modules/windows/win_group.py: chrishoffman\n  $modules/windows/win_iis_virtualdirectory.ps1: $team_ansible\n  $modules/windows/win_iis_virtualdirectory.py: $team_ansible\n  $modules/windows/win_iis_webapplication.ps1: $team_windows\n  $modules/windows/win_iis_webapplication.py: $team_windows\n  $modules/windows/win_iis_webapppool.ps1: $team_windows\n  $modules/windows/win_iis_webapppool.py: $team_windows\n  $modules/windows/win_iis_webbinding.ps1: $team_windows\n  $modules/windows/win_iis_webbinding.py: $team_windows\n  $modules/windows/win_iis_website.ps1: $team_windows\n  $modules/windows/win_iis_website.py: $team_windows\n  $modules/windows/win_lineinfile.ps1: brianlloyd\n  $modules/windows/win_lineinfile.py: brianlloyd\n  $modules/windows/win_msg.ps1: $team_windows\n  $modules/windows/win_msg.py: $team_windows\n  $modules/windows/win_msi.ps1: sivel\n  $modules/windows/win_msi.py: sivel\n  $modules/windows/win_nssm.ps1: smadam813\n  $modules/windows/win_nssm.py: georgefrank h0nIg smadam813\n  $modules/windows/win_owner.ps1: jborean93\n  $modules/windows/win_owner.py: h0nIg jborean93\n  $modules/windows/win_package.ps1: trondhindenes\n  $modules/windows/win_package.py: trondhindenes\n  $modules/windows/win_path.ps1: $team_windows\n  $modules/windows/win_path.py: nitzmahone\n  $modules/windows/win_ping.ps1: nitzmahone\n  $modules/windows/win_ping.py: cchurch nitzmahone\n  $modules/windows/win_psexec.ps1: dagwieers\n  $modules/windows/win_psexec.py: dagwieers\n  $modules/windows/win_psmodule.ps1: $team_windows\n  $modules/windows/win_psmodule.py: $team_windows\n  $modules/windows/win_reboot.py: nitzmahone\n  $modules/windows/win_reg_stat.ps1: jborean93\n  $modules/windows/win_reg_stat.py: jborean93\n  $modules/windows/win_regedit.ps1: joshludwig smadam813\n  $modules/windows/win_regedit.py: joshludwig smadam813\n  $modules/windows/win_region.ps1: jborean93\n  $modules/windows/win_region.py: jborean93\n  $modules/windows/win_regmerge.ps1: jhawkesworth\n  $modules/windows/win_regmerge.py: jhawkesworth\n  $modules/windows/win_robocopy.ps1: blakfeld\n  $modules/windows/win_robocopy.py: blakfeld\n  $modules/windows/win_route.ps1: $team_windows\n  $modules/windows/win_route.py: $team_windows\n  $modules/windows/win_say.ps1: jhawkesworth\n  $modules/windows/win_say.py: jhawkesworth\n  $modules/windows/win_scheduled_task.ps1: petemounce\n  $modules/windows/win_scheduled_task.py: petemounce\n  $modules/windows/win_service.ps1: chrishoffman\n  $modules/windows/win_service.py: chrishoffman\n  $modules/windows/win_share.ps1: jborean93\n  $modules/windows/win_share.py: daBONDi h0nIg jborean93\n  $modules/windows/win_shell.ps1: $team_windows\n  $modules/windows/win_shell.py: nitzmahone\n  $modules/windows/win_shortcut.ps1: dagwieers\n  $modules/windows/win_shortcut.py: dagwieers\n  $modules/windows/win_stat.ps1: nitzmahone\n  $modules/windows/win_stat.py: cchurch nitzmahone\n  $modules/windows/win_tempfile.ps1: dagwieers\n  $modules/windows/win_tempfile.py: dagwieers\n  $modules/windows/win_template.py: jhawkesworth\n  $modules/windows/win_timezone.ps1: schwartzmx\n  $modules/windows/win_timezone.py: schwartzmx\n  $modules/windows/win_unzip.ps1: schwartzmx\n  $modules/windows/win_unzip.py: schwartzmx\n  $modules/windows/win_updates.ps1: nitzmahone\n  $modules/windows/win_updates.py: nitzmahone\n  $modules/windows/win_uri.ps1: blakfeld\n  $modules/windows/win_uri.py: blakfeld dagwieers\n  $modules/windows/win_user.ps1: nitzmahone\n  $modules/windows/win_user.py: angstwad cchurch nitzmahone\n  $modules/windows/win_wakeonlan.ps1: $team_windows\n  $modules/windows/win_wakeonlan.py: $team_windows\n  $modules/windows/win_webpicmd.ps1: petemounce\n  $modules/windows/win_webpicmd.py: petemounce\n  contrib/inventory:\n    keywords:\n    - dynamic inventory script\n    - dynamic inventory\n    - inventory script\n  contrib/inventory/openstack.py:\n    keywords:\n    - openstack dynamic inventory script\n  lib/ansible/inventory:\n    keywords:\n    - core inventory\n    - inventory\n    - inventory parsing\n  lib/ansible/playbook/handler.py:\n    keywords:\n    - handlers\n  lib/ansible/playbook/role:\n    keywords:\n    - roles path\n    - roles_path\n    - role\n    - role path\n  lib/ansible/playbook/role/include.py:\n    keywords:\n    - include role\n    - include_role\n    - role include\n  lib/ansible/playbook/role/requirement.py:\n    keywords:\n    - role dependencies\n    - role dep\n    - role dependency\n  lib/ansible/template:\n    keywords:\n    - jinja\n    - jinja2\n  test/sanity/validate-modules:\n    keywords:\n    - validate-modules\nmacros: \n  modules: lib/ansible/modules\n  team_ansible: []\n  team_avi: ericsysmin grastogi23 khaltore\n  team_azure: haroldwongms nitzmahone tstringer\n  team_cumulus: isharacomix jrrivers privateip\n  team_netapp: hulquest lmprice timuster\n  team_netscaler: chiradeep giorgos-nikolopoulos\n  team_netvisor: Qalthos amitsi gundalow privateip\n  team_networking: Qalthos ganeshrn gundalow privateip rcarrillocruz trishnaguha\n  team_nxos: GGabriele jedelman8 mikewiebe privateip rahushen rcarrillocruz trishnaguha\n  team_openstack: emonty j2sol juliakreger rcarrillocruz shrews thingee\n  team_openswitch: Qalthos gundalow privateip\n  team_rabbitmq: chrishoffman manuel-sousa romanek-adam\n  team_rhn: alikins barnabycourt flossware vritant\n  team_tower: ghjm jlaska matburt wwitzel3\n  team_vmware: dagwieers dav1x jctanner nerzhul\n  team_windows: dagwieers jborean93 jhawkesworth"
  },
  {
    "path": "tests/unit/parsers/test_bot_metadata_parser.py",
    "content": "import os\nimport shutil\nimport unittest\n\nfrom ansibullbot.utils.botmetadata import BotMetadataParser\n\nEXAMPLE1 = \"\"\"\n---\nmacros:\n    team_ansible:\n        - larry\n        - curly\n        - moe\n    team_cloud:\n        - bob\n        - sally\n    team_cloud_aws:\n        - jeff\n    team_galaxy:\n        - steven\n    team_oneline: one line at a time\n    modules: lib/ansible/modules\nfiles:\n    lib/ansible/cli/galaxy/:\n        maintainers: $team_ansible $team_galaxy\n        reviewers: jimbob\n        ignored: nobody\n        labels: cli galaxy\n\n    lib/ansible/parsing/vault/: &VAULT\n        maintainers: $team_ansible jeff\n        reviewers: jimbob\n        ignored: nobody\n        labels: parsing vault\n        keywords: [\"vault encrypt\", \"vault decrypt\"]\n\n    lib/ansible/cli/vault.py:\n        <<: *VAULT\n\n    lib/ansible/foobar/:\n        maintainers: $team_ansible jeff\n        reviewers: jimbob\n        ignored: nobody\n        labels:\n            - foo\n            - bar\n    # using macro for the key and maintainers\n    $modules/x/y: $team_galaxy\n\n    packaging/:\n\"\"\"\n\nEXAMPLE_ANCHORS = \"\"\"\n---\nmacros:\n    team_foo:\n        - larry\n        - curly\n        - moe\n    modules: lib/ansible/modules\nfiles:\n    $modules/topdir/: &topdir\n        labels: topdir\n    $modules/topdir/topfile:\n        <<: *topdir\n    docs/foo/bar: *topdir\n    test/foo/bar: *topdir\n\"\"\"\n\n\n\nclass TestBotMetaIndexerBase(unittest.TestCase):\n    def setUp(self):\n        cache = '/tmp/testcache'\n        if os.path.isdir(cache):\n            shutil.rmtree(cache)\n        os.makedirs(cache)\n\n\nclass TestBotMetadataParserProperties(TestBotMetaIndexerBase):\n    def runTest(self):\n        assert hasattr(BotMetadataParser, 'parse_yaml')\n\n\nclass TestBotMetadataParserEx1(TestBotMetaIndexerBase):\n    def runTest(self):\n        data = BotMetadataParser.parse_yaml(EXAMPLE1)\n\n        assert 'macros' in data\n        assert 'files' in data\n        assert 'lib/ansible/cli/galaxy' in data['files']\n        assert 'lib/ansible/cli/vault.py' in data['files']\n        assert 'lib/ansible/parsing/vault' in data['files']\n        assert 'lib/ansible/foobar' in data['files']\n\n        self.assertEqual(\n            data['files']['lib/ansible/foobar']['labels'],\n            ['ansible', 'bar', 'foo', 'foobar', 'lib']\n        )\n\n        self.assertEqual(\n            data['files']['lib/ansible/cli/vault.py']['maintainers'],\n            ['larry', 'curly', 'moe', 'jeff'],\n        )\n\n        # double-macro\n        assert 'lib/ansible/modules/x/y' in data['files']\n        assert 'maintainers' in data['files']['lib/ansible/modules/x/y']\n        self.assertEqual(\n            data['files']['lib/ansible/modules/x/y']['maintainers'],\n            ['steven']\n        )\n\n        assert 'team_oneline' in data['macros']\n        assert isinstance(data['macros']['team_oneline'], list)\n        self.assertEqual(\n            data['macros']['team_oneline'],\n            ['one', 'line', 'at', 'a', 'time']\n        )\n\n        self.assertEqual(dict, type(data['files']['packaging']))\n\n\nclass TestBotMetadataParserFileExample1(TestBotMetaIndexerBase):\n    def runTest(self):\n        fn = 'metadata_1.yml'\n        fn = os.path.join(os.path.dirname(__file__), fn)\n        with open(fn, 'rb') as f:\n            data = f.read()\n\n        pdata = BotMetadataParser.parse_yaml(data)\n\n\nclass TestBotMetadataPropagation(TestBotMetaIndexerBase):\n    \"\"\"Check that:\n    - labels are inherited\n    - support keyword is inherited when not set\n    \"\"\"\n    def test_keywords(self):\n        LABELS_SUPPORT_PROPAGATION = \"\"\"\n        macros:\n          module_utils: lib/ansible/module_utils\n        files:\n          $module_utils/network/:\n              support: network\n              labels: networking\n          $module_utils/network/fw:\n              labels: firewall\n          $module_utils/network/fw/sub:\n              support: core\n              labels: [fwsub]\n          $module_utils/network/fw/sub/childA:\n          $module_utils/network/fw/sub/childB:\n              support: another_level\n              labels: labelB\n          $module_utils/network/iwfu.py:\n              support: community\n              labels: firewall\n          $module_utils/other:\n              labels: thing\n        \"\"\"\n\n        data = BotMetadataParser.parse_yaml(LABELS_SUPPORT_PROPAGATION)\n\n        assert 'macros' in data\n        assert 'files' in data\n\n        self.assertEqual({'lib/ansible/module_utils/network',\n                              'lib/ansible/module_utils/network/fw',\n                              'lib/ansible/module_utils/network/fw/sub',\n                              'lib/ansible/module_utils/network/fw/sub/childA',\n                              'lib/ansible/module_utils/network/fw/sub/childB',\n                              'lib/ansible/module_utils/network/iwfu.py',\n                              'lib/ansible/module_utils/other'},\n                         set(data['files'].keys()))\n\n        #### 'labels' key\n        self.assertEqual(\n            set(data['files']['lib/ansible/module_utils/network']['labels']),\n            {'lib', 'ansible', 'module_utils', 'network', 'networking'}\n        )\n\n        self.assertEqual(\n            set(data['files']['lib/ansible/module_utils/network/fw']['labels']),\n            {'lib', 'ansible', 'module_utils', 'network', 'networking', 'fw', 'firewall'}\n        )\n\n        self.assertEqual(\n            set(data['files']['lib/ansible/module_utils/network/fw/sub']['labels']),\n            {'lib', 'ansible', 'module_utils', 'network', 'networking', 'fw', 'firewall', 'sub', 'fwsub'}\n        )\n\n        self.assertEqual(\n            set(data['files']['lib/ansible/module_utils/network/fw/sub/childA']['labels']),\n            {'lib', 'ansible', 'module_utils', 'network', 'networking', 'fw', 'firewall', 'sub', 'fwsub', 'childA'}\n        )\n\n        self.assertEqual(\n            set(data['files']['lib/ansible/module_utils/network/fw/sub/childB']['labels']),\n            {'lib', 'ansible', 'module_utils', 'network', 'networking', 'fw', 'firewall', 'sub', 'fwsub', 'childB', 'labelB'}\n        )\n\n        self.assertEqual(\n            set(data['files']['lib/ansible/module_utils/network/iwfu.py']['labels']),\n            {'lib', 'ansible', 'module_utils', 'network', 'networking', 'iwfu', 'firewall'}\n        )\n\n        #### 'support' key\n        self.assertEqual(\n            data['files']['lib/ansible/module_utils/network']['support'], ['network']\n        )\n\n        # subpath: support key is inherited\n        self.assertEqual(\n            data['files']['lib/ansible/module_utils/network/fw']['support'], ['network']\n        )\n\n        # subpath: support key is overridden\n        self.assertEqual(\n            data['files']['lib/ansible/module_utils/network/iwfu.py']['support'], ['community']\n        )\n\n        # subpath: support key is overridden\n        self.assertEqual(\n            data['files']['lib/ansible/module_utils/network/fw/sub']['support'], ['core']\n        )\n\n        # subpath: support key is inherited\n        self.assertEqual(\n            data['files']['lib/ansible/module_utils/network/fw/sub/childA']['support'], ['core']\n        )\n\n        # subpath: support key is overridden\n        self.assertEqual(\n            data['files']['lib/ansible/module_utils/network/fw/sub/childB']['support'], ['another_level']\n        )\n\n        # default value for support isn't set by botmeta\n        self.assertNotIn('support', data['files']['lib/ansible/module_utils/other'])\n\n\nclass TestBotMetadataParserAnchors(TestBotMetaIndexerBase):\n    def runTest(self):\n        data = BotMetadataParser.parse_yaml(EXAMPLE_ANCHORS)\n\n        # shortcuts\n        topdir = 'lib/ansible/modules/topdir'\n        dfile = 'docs/foo/bar'\n        mfile = 'lib/ansible/modules/topdir/topfile'\n\n        # labels should be automatic from the path(s)\n        assert 'docs' in data['files'][dfile]['labels']\n\n        # children should inherit from their parent anchors\n        assert 'topdir' in data['files'][dfile]['labels']\n        assert 'topdir' in data['files'][dfile]['labels']\n\n        # we do not want pointers merging all data into the anchor\n        assert 'docs' not in data['files'][topdir]['labels']\n        assert 'docs' not in data['files'][mfile]['labels']\n"
  },
  {
    "path": "tests/unit/triagers/__init__.py",
    "content": ""
  },
  {
    "path": "tests/unit/triagers/plugins/__init__.py",
    "content": ""
  },
  {
    "path": "tests/unit/triagers/plugins/test_automerge.py",
    "content": "import unittest\n\nfrom ansibullbot.plugins.shipit import get_automerge_facts\n\n\nclass HistoryWrapperMock:\n    history = None\n    def __init__(self):\n        self.history = []\n\n\nclass IssueWrapperMock:\n    _is_pullrequest = False\n    _pr_files = []\n    _wip = False\n    _history = None\n    _submitter = 'bob'\n\n    def __init__(self, org, repo, number):\n        self._history = HistoryWrapperMock()\n        self.org = org\n        self.repo = repo\n        self.number = number\n\n    def is_pullrequest(self):\n        return self._is_pullrequest\n\n    def add_comment(self, user, body):\n        payload = {'actor': user, 'event': 'commented', 'body': body}\n        self.history.history.append(payload)\n\n    def add_file(self, filename, content):\n        mf = MockFile(filename, content=content)\n        self._pr_files.append(mf)\n\n    @property\n    def wip(self):\n        return self._wip\n\n    @property\n    def files(self):\n        return [x.filename for x in self._pr_files]\n\n    @property\n    def history(self):\n        return self._history\n\n    @property\n    def submitter(self):\n        return self._submitter\n\n    @property\n    def html_url(self):\n        if self.is_pullrequest():\n            return 'https://github.com/%s/%s/pulls/%s' % (self.org, self.repo, self.number)\n        else:\n            return 'https://github.com/%s/%s/issues/%s' % (self.org, self.repo, self.number)\n\n\nclass MockFile:\n    def __init__(self, name, content=''):\n        self.filename = name\n        self.content = content\n\n\nclass TestAutomergeFacts(unittest.TestCase):\n\n    def test_automerge_if_shipit(self):\n        # if shipit and other tests pass, automerge should be True\n        IW = IssueWrapperMock('ansible', 'ansible', 1)\n        IW._is_pullrequest = True\n        IW.add_comment('jane', 'shipit')\n        meta = {\n            'ci_stale': False,\n            'ci_state': 'success',\n            'has_ci': True,\n            'is_new_directory': False,\n            'is_module': True,\n            'is_module_util': False,\n            'is_new_module': False,\n            'is_needs_info': False,\n            'is_needs_rebase': False,\n            'is_needs_revision': False,\n            'is_backport': False,\n            'mergeable': True,\n            'merge_commits': False,\n            'has_commit_mention': False,\n            'shipit': True,\n            'supershipit': True,\n            'component_matches': [\n                {\n                    'repo_filename': 'foo',\n                    'supershipit': ['jane', 'doe'],\n                    'support': 'community'\n                }\n            ],\n        }\n        meta['module_match'] = meta['component_matches'][:]\n        amfacts = get_automerge_facts(IW, meta)\n        assert amfacts['automerge']\n        assert 'automerge_status' in amfacts\n\n    def test_not_automerge_if_not_shipit(self):\n        # if not shipit, automerge should be False\n        IW = IssueWrapperMock('ansible', 'ansible', 1)\n        IW._is_pullrequest = True\n        IW.add_comment('jane', 'shipit')\n        meta = {\n            'ci_stale': False,\n            'ci_state': 'success',\n            'has_ci': True,\n            'is_new_directory': False,\n            'is_module': True,\n            'is_module_util': False,\n            'is_new_module': False,\n            'is_needs_info': False,\n            'is_needs_rebase': False,\n            'is_needs_revision': False,\n            'is_backport': False,\n            'mergeable': True,\n            'merge_commits': False,\n            'has_commit_mention': False,\n            'shipit': False,\n            'supershipit': False,\n            'component_matches': [\n                {\n                    'repo_filename': 'foo',\n                    'supershipit': ['jane', 'doe'],\n                    'support': 'community'\n                }\n            ],\n        }\n        meta['module_match'] = meta['component_matches'][:]\n        amfacts = get_automerge_facts(IW, meta)\n        assert not amfacts['automerge']\n        assert 'automerge_status' in amfacts\n"
  },
  {
    "path": "tests/unit/triagers/plugins/test_docs_info.py",
    "content": "import pytest\n\nfrom ansibullbot.plugins.docs_info import get_docs_facts\nfrom tests.utils.issue_mock import IssueMock\n\ndatafiles = (\n    {\n        'id': 'docs_only: docs/docsite/ changes',\n        'path': 'tests/fixtures/docs_info/0_issue.yml',\n        'expected_result': {'is_docs_only': True}\n    },\n    {\n        'id': 'docs_only: .py changes - DOCUMENTATION',\n        'path': 'tests/fixtures/docs_info/1_issue.yml',\n        'expected_result': {'is_docs_only': True}\n    },\n    {\n        'id': 'docs_only: .py changes - EXAMPLES',\n        'path': 'tests/fixtures/docs_info/4_issue.yml',\n        'expected_result': {'is_docs_only': True}\n    },\n    {\n        'id': 'docs_only: multiple changes - DOCUMENTATION & docs/docsite',\n        'path': 'tests/fixtures/docs_info/5_issue.yml',\n        'expected_result': {'is_docs_only': True}\n    },\n    {\n        'id': 'docs_only: .py changes - non-doc/examples',\n        'path': 'tests/fixtures/docs_info/2_issue.yml',\n        'expected_result': {'is_docs_only': False}\n    },\n    {\n        'id': 'docs_only: non-doc/.py changes',\n        'path': 'tests/fixtures/docs_info/3_issue.yml',\n        'expected_result': {'is_docs_only': False}\n    },\n)\n\ndef datafile_id(datafile):\n    return datafile['id']\n\n@pytest.fixture(params=datafiles, ids=datafile_id)\ndef iw_fixture(request):\n    iw_param = {\n        'issue': IssueMock(request.param['path']),\n        'expects': request.param['expected_result']\n    }\n    return iw_param\n\ndef test_docs_facts(iw_fixture):\n    iw = iw_fixture['issue']\n    expects = iw_fixture['expects']\n\n    facts = get_docs_facts(iw)\n    for key, val in expects.items():\n        assert facts[key] == val\n"
  },
  {
    "path": "tests/unit/triagers/plugins/test_needs_contributor.py",
    "content": "from ansibullbot.plugins.needs_contributor import get_needs_contributor_facts\n\n\ndef test_needs_contributor_command():\n    events = [\n        {'event': 'labeled', 'label': 'needs_info', 'actor': 'mkrizek'},\n        {'event': 'commented', 'body': 'Something something needs_contributor something something\\n', 'actor': 'mkrizek'},\n    ]\n\n    facts = get_needs_contributor_facts(events, ['ansibot'])\n    assert facts['is_needs_contributor']\n\n\ndef test_not_needs_contributor_command():\n    events = [\n        {'event': 'commented', 'body': 'Something something !needs_contributor something something\\n','actor': 'mkrizek'},\n    ]\n\n    facts = get_needs_contributor_facts(events, ['ansibot'])\n    assert not facts['is_needs_contributor']\n\n\ndef test_waiting_on_contributor_label():\n    events = [\n        {'event': 'labeled', 'label': 'waiting_on_contributor', 'actor': 'mkrizek'},\n    ]\n\n    facts = get_needs_contributor_facts(events, ['ansibot'])\n    assert facts['is_needs_contributor']\n"
  },
  {
    "path": "tests/unit/triagers/plugins/test_needs_info.py",
    "content": "import datetime\nimport tempfile\nimport unittest\n\nfrom unittest import mock\n\nfrom ansibullbot.historywrapper import HistoryWrapper\nfrom ansibullbot.plugins import needs_info\n\n\nclass TestNeedsInfoTimeoutFacts(unittest.TestCase):\n    def setUp(self):\n        self.meta = {\n            'is_needs_info': True,\n        }\n        self.statusfile = 'tests/fixtures/needs_info/0_prstatus.json'\n        datetime_patcher = mock.patch.object(needs_info.datetime,\n                                             'datetime',\n                                             mock.Mock(wraps=datetime.datetime))\n        mocked_datetime = datetime_patcher.start()\n        mocked_datetime.now.return_value = datetime.datetime(2018, 3, 14, 12, 18, 49, 666470, tzinfo=datetime.timezone.utc)\n        self.addCleanup(datetime_patcher.stop)\n        self.cachedir = tempfile.mkdtemp(prefix='ansibot_tests_')\n\n    def test_warn(self):\n        events = [{\n            'actor': 'mkrizek',\n            'created_at': datetime.datetime(2018, 2, 10, 17, 24, 2, tzinfo=datetime.timezone.utc),\n            'event': 'labeled',\n            'label': 'needs_info',\n        }]\n        history = HistoryWrapper(events, ['needs_info'], datetime.datetime.now(), cachedir=self.cachedir, usecache=False)\n        facts = needs_info.needs_info_timeout_facts(history, self.meta)\n        assert facts['needs_info_action'] == 'warn'\n\n    def test_close(self):\n        events = [\n            {\n                'actor': 'mkrizek',\n                'created_at': datetime.datetime(2017, 12, 10, 17, 24, 2, tzinfo=datetime.timezone.utc),\n                'event': 'labeled',\n                'label': 'needs_info',\n            },\n            {\n                'actor': 'ansibot',\n                'body': '<!--- boilerplate: needs_info_base --->\\n',\n                'created_at': datetime.datetime(2018, 1, 10, 17, 24, 1, tzinfo=datetime.timezone.utc),\n                'event': 'commented',\n            },\n        ]\n        history = HistoryWrapper(events, ['needs_info'], datetime.datetime.now(), cachedir=self.cachedir, usecache=False)\n        facts = needs_info.needs_info_timeout_facts(history, self.meta)\n        assert facts['needs_info_action'] == 'close'\n\n    def test_no_action(self):\n        events = [\n            {\n                'actor': 'mkrizek',\n                'created_at': datetime.datetime(2018, 2, 10, 17, 24, 2, tzinfo=datetime.timezone.utc),\n                'event': 'labeled',\n                'label': 'bug',\n            }\n        ]\n        history = HistoryWrapper(events, ['bug'], datetime.datetime.now(), cachedir=self.cachedir, usecache=False)\n        facts = needs_info.needs_info_timeout_facts(history, self.meta)\n        assert facts['needs_info_action'] is None\n\n    def test_close_1(self):\n        events = [\n            {\n                'actor': 'mkrizek',\n                'created_at': datetime.datetime(2017, 8, 16, 17, 24, 2, tzinfo=datetime.timezone.utc),\n                'event': 'labeled',\n                'label': 'needs_info',\n            },\n            {\n                'actor': 'ansibot',\n                'body': '<!--- boilerplate: needs_info_base --->\\n',\n                'created_at': datetime.datetime(2018, 1, 31, 17, 24, 1, tzinfo=datetime.timezone.utc),\n                'event': 'commented',\n            },\n        ]\n        history = HistoryWrapper(events, ['needs_info'], datetime.datetime.now(), cachedir=self.cachedir, usecache=False)\n        facts = needs_info.needs_info_timeout_facts(history, self.meta)\n        assert facts['needs_info_action'] == 'close'\n\n    def test_too_quick_close(self):\n        events = [\n            {\n                'actor': 'ansibot',\n                'body': '<!--- boilerplate: needs_info_base --->\\n',\n                'created_at': datetime.datetime(2016, 2, 18, 18, 45, 1, tzinfo=datetime.timezone.utc),\n                'event': 'commented',\n            },\n            {\n                'actor': 'ansibot',\n                'body': '<!--- boilerplate: needs_info_base --->\\n',\n                'created_at': datetime.datetime(2016, 2, 18, 18, 48, 1, tzinfo=datetime.timezone.utc),\n                'event': 'commented',\n            },\n        ]\n        history = HistoryWrapper(events, [], datetime.datetime.now(), cachedir=self.cachedir, usecache=False)\n        facts = needs_info.needs_info_timeout_facts(history, self.meta)\n        assert facts['needs_info_action'] is None\n\n    def test_too_quick_close2(self):\n        events = [\n            {\n                'actor': 'ansibot',\n                'body': '<!--- boilerplate: needs_info_base --->\\n',\n                'created_at': datetime.datetime(2017, 3, 21, 18, 45, 1, tzinfo=datetime.timezone.utc),\n                'event': 'commented',\n            },\n            {\n                'actor': 'mkrizek',\n                'body': 'Information provided.\\n',\n                'created_at': datetime.datetime(2017, 3, 22, 18, 45, 1, tzinfo=datetime.timezone.utc),\n                'event': 'commented',\n            },\n            {\n                'actor': 'ansibot',\n                'created_at': datetime.datetime(2017, 3, 22, 18, 46, 1, tzinfo=datetime.timezone.utc),\n                'event': 'unlabeled',\n                'label': 'needs_info',\n            },\n            {\n                'actor': 'debugger',\n                'body': 'More info needed.\\n',\n                'created_at': datetime.datetime(2017, 3, 23, 18, 45, 1, tzinfo=datetime.timezone.utc),\n                'event': 'commented',\n            },\n            {\n                'actor': 'ansibot',\n                'created_at': datetime.datetime(2017, 3, 23, 18, 46, 1, tzinfo=datetime.timezone.utc),\n                'event': 'labeled',\n                'label': 'needs_info',\n            },\n        ]\n        history = HistoryWrapper(events, ['needs_info'], datetime.datetime.now(), cachedir=self.cachedir, usecache=False)\n        facts = needs_info.needs_info_timeout_facts(history, self.meta)\n        assert facts['needs_info_action'] == 'warn'\n\n    def test_warn_template(self):\n        events = [\n            {\n                'actor': 'ansibot',\n                'created_at': datetime.datetime(2018, 2, 10, 17, 24, 2, tzinfo=datetime.timezone.utc),\n                'event': 'labeled',\n                'label': 'needs_info',\n            },\n            {\n                'actor': 'ansibot',\n                'created_at': datetime.datetime(2018, 2, 10, 17, 24, 2, tzinfo=datetime.timezone.utc),\n                'event': 'labeled',\n                'label': 'needs_template',\n            },\n            {\n                'actor': 'ansibot',\n                'body': '<!--- boilerplate: issue_missing_data --->\\n',\n                'created_at': datetime.datetime(2018, 1, 10, 17, 24, 1, tzinfo=datetime.timezone.utc),\n                'event': 'commented',\n            },\n        ]\n        history = HistoryWrapper(events, ['needs_info', 'needs_template'], datetime.datetime.now(), cachedir=self.cachedir, usecache=False)\n        facts = needs_info.needs_info_timeout_facts(history, self.meta)\n        assert facts['needs_info_action'] == 'warn'\n"
  },
  {
    "path": "tests/unit/triagers/plugins/test_needs_revision.py",
    "content": "import datetime\nimport json\nfrom unittest import TestCase, mock\n\nimport github\n\nfrom tests.utils.helpers import get_issue\nfrom ansibullbot.plugins.needs_revision import _changes_requested_by, get_needs_revision_facts, _get_review_state\nfrom ansibullbot.issuewrapper import IssueWrapper\n\n\nclass CIMock:\n    def __init__(self):\n        self.state = None\n\n    def get_last_full_run_date(*args, **kwargs):\n        return None\n\n\nclass TestNeedsRevisionFacts(TestCase):\n\n    def setUp(self):\n        self.meta = {\n            'is_new_module': False,\n            'module_match': {\n                'namespace': 'zypper',\n                'maintainers': ['robinro'],\n            }\n        }\n\n    #@unittest.skip('disabled')\n    def test_shipit_overrides_changes_requested_github_review(self):\n        \"\"\"\n        Ansibot should ignore CHANGES_REQUESTED Github review when the author of the\n        CHANGES_REQUESTED review used the shipit command.\n        \"\"\"\n        datafile = 'tests/fixtures/needs_revision/0_issue.yml'\n        statusfile = 'tests/fixtures/needs_revision/0_prstatus.json'\n        with mock.patch.multiple(IssueWrapper,\n                                mergeable_state=mock.PropertyMock(return_value='clean')):\n            with get_issue(datafile, statusfile) as iw:\n                iw._merge_commits = []\n                iw._committer_emails = ['tsdmgz@domain.example']\n\n                pullrequest = mock.Mock(spec_set=github.PullRequest.PullRequest)\n                pullrequest.head.repo.__return_value__ = True\n                iw._pr = pullrequest\n\n                with open('tests/fixtures/needs_revision/0_reviews.json') as reviews:\n                    iw._pr_reviews = json.load(reviews)\n                    iw._history.merge_reviews(iw.reviews)\n\n                self.meta['component_maintainers'] = ['robinro']\n                facts = get_needs_revision_facts(iw, self.meta, CIMock(), ['bcoca'], ['ansibot'])\n\n                self.assertFalse(facts['is_needs_revision'])\n                self.assertFalse(facts['stale_reviews'])\n\n    def test_shipit_removes_needs_revision(self):\n        \"\"\"\n        Ansibot should remove needs_revision if the same user that set it gave shipit afterwards.\n        https://github.com/ansible/ansibullbot/issues/994\n        \"\"\"\n        datafile = 'tests/fixtures/needs_revision/1_issue.yml'\n        statusfile = 'tests/fixtures/needs_revision/0_prstatus.json'\n        with mock.patch.multiple(IssueWrapper,\n                                mergeable_state=mock.PropertyMock(return_value='clean')):\n            with get_issue(datafile, statusfile) as iw:\n                iw._merge_commits = []\n                iw._committer_emails = ['tsdmgz@domain.example']\n\n                pullrequest = mock.Mock(spec_set=github.PullRequest.PullRequest)\n                pullrequest.head.repo.__return_value__ = True\n                iw._pr = pullrequest\n\n                with open('tests/fixtures/needs_revision/1_reviews.json') as reviews:\n                    iw._pr_reviews = json.load(reviews)\n                    iw._history.merge_reviews(iw.reviews)\n\n                self.meta['component_maintainers'] = ['mkrizek']\n                facts = get_needs_revision_facts(iw, self.meta, CIMock(), ['bcoca'], ['ansibot'])\n\n                self.assertFalse(facts['is_needs_revision'])\n\n    def test_shipit_removes_needs_revision_multiple_users(self):\n        \"\"\"\n        Ansibot should remove needs_revision if the same user that set it gave shipit afterwards.\n        https://github.com/ansible/ansibullbot/issues/994\n        \"\"\"\n        datafile = 'tests/fixtures/needs_revision/2_issue.yml'\n        statusfile = 'tests/fixtures/needs_revision/0_prstatus.json'\n        with mock.patch.multiple(IssueWrapper,\n                                mergeable_state=mock.PropertyMock(return_value='clean')):\n            with get_issue(datafile, statusfile) as iw:\n                iw._merge_commits = []\n                iw._committer_emails = ['tsdmgz@domain.example']\n\n                pullrequest = mock.Mock(spec_set=github.PullRequest.PullRequest)\n                pullrequest.head.repo.__return_value__ = True\n                iw._pr = pullrequest\n\n                with open('tests/fixtures/needs_revision/1_reviews.json') as reviews:\n                    iw._pr_reviews = json.load(reviews)\n                    iw._history.merge_reviews(iw.reviews)\n\n                self.meta['component_maintainers'] = ['mkrizek', 'jctanner']\n                facts = get_needs_revision_facts(iw, self.meta, CIMock(), ['bcoca'], ['ansibot'])\n\n                self.assertTrue(facts['is_needs_revision'])\n\n\nclass TestReviewMethods(TestCase):\n    def test_reviews(self):\n        \"\"\"Check that:\n        - COMMENTED review aren't ignored (reviewer0)\n        - a COMMENTED review doesn't override an older CHANGES_REQUESTED review (reviewer1)\n        - a COMMENTED review overrides an older APPROVED review (reviewer2)\n        - a CHANGES_REQUESTED review overrides an older APPROVED review (reviewer3)\n        \"\"\"\n        reviews = [\n            # oldest first\n            {'user': {'login': 'reviewer0'}, 'submitted_at': '2017-01-01T00:00:00Z', 'state': 'COMMENTED'},\n\n            {'user': {'login': 'reviewer1'}, 'submitted_at': '2017-02-01T00:00:00Z', 'state': 'COMMENTED'},\n            {'user': {'login': 'reviewer1'}, 'submitted_at': '2017-02-02T00:00:00Z', 'state': 'CHANGES_REQUESTED'},\n            {'user': {'login': 'reviewer1'}, 'submitted_at': '2017-02-03T00:00:00Z', 'state': 'COMMENTED'},\n\n            {'user': {'login': 'reviewer2'}, 'submitted_at': '2017-03-01T00:00:00Z', 'state': 'CHANGES_REQUESTED'},\n            {'user': {'login': 'reviewer2'}, 'submitted_at': '2017-03-02T00:00:00Z', 'state': 'APPROVED'},\n            {'user': {'login': 'reviewer2'}, 'submitted_at': '2017-03-03T00:00:00Z', 'state': 'COMMENTED'},\n\n            {'user': {'login': 'reviewer3'}, 'submitted_at': '2017-04-02T00:00:00Z', 'state': 'APPROVED'},\n            {'user': {'login': 'reviewer3'}, 'submitted_at': '2017-04-03T00:00:00Z', 'state': 'CHANGES_REQUESTED'},\n\n            {'user': {'login': 'reviewer4'}, 'submitted_at': '2017-05-01T00:00:00Z', 'state': 'CHANGES_REQUESTED'},\n        ]\n        for review in reviews:\n            review['commit_id'] = '569597fac8175e6c63cbb415080ce42f9992a0c9'\n        submitter = 'submitter'\n\n        filtered = _get_review_state(reviews, submitter)\n\n        self.assertEqual(filtered['reviewer0']['state'], 'COMMENTED')\n        self.assertEqual(filtered['reviewer1']['state'], 'CHANGES_REQUESTED')\n        self.assertEqual(filtered['reviewer2']['state'], 'COMMENTED')\n        self.assertEqual(filtered['reviewer3']['state'], 'CHANGES_REQUESTED')\n        self.assertEqual(filtered['reviewer4']['state'], 'CHANGES_REQUESTED')\n\n        shipits = {\n            'reviewer1': self.make_time('2017-02-04T00:00:00Z'),  # newer, overrides CHANGES_REQUESTED review\n            'reviewer3': self.make_time('2017-04-01T00:00:00Z'),  # older, doesn't override CHANGES_REQUESTED review\n        }\n\n        last_commit = 'dce73fdee311d5e74a7d59fd301320943f69d49f'\n        requested_by = _changes_requested_by(filtered, shipits, last_commit, ready_for_review=None)\n        self.assertEqual(sorted(requested_by), ['reviewer3', 'reviewer4'])\n\n    def test_review_older_than_ready_for_review(self):\n        \"\"\"Check that:\n        - CHANGES_REQUESTED review older than ready_for_review comment wrote by submitter\n        => review is ignored\n        \"\"\"\n        reviews = [\n            # oldest first\n            {'user': {'login': 'reviewer0'}, 'submitted_at': '2017-01-01T00:00:00Z', 'state': 'CHANGES_REQUESTED',\n             'commit_id': '569597fac8175e6c63cbb415080ce42f9992a0c9'},\n        ]\n        submitter = 'submitter'\n\n        filtered = _get_review_state(reviews, submitter)\n\n        self.assertEqual(filtered['reviewer0']['state'], 'CHANGES_REQUESTED')\n\n        shipits = {}\n        last_commit = 'dce73fdee311d5e74a7d59fd301320943f69d49f'\n        ready_for_review = self.make_time('2017-02-02T00:00:00Z')\n\n        requested_by = _changes_requested_by(filtered, shipits, last_commit, ready_for_review)\n        self.assertFalse(requested_by)  # CHANGES_REQUESTED review ignored\n\n    def test_ready_for_review_older_than_review(self):\n        \"\"\"Check that:\n        - CHANGES_REQUESTED review younger than ready_for_review comment wrote by submitter\n        => review isn't ignored\n        \"\"\"\n        reviews = [\n            # oldest first\n            {'user': {'login': 'reviewer0'}, 'submitted_at': '2017-02-02T00:00:00Z', 'state': 'CHANGES_REQUESTED',\n             'commit_id': '569597fac8175e6c63cbb415080ce42f9992a0c9'},\n        ]\n        submitter = 'submitter'\n\n        filtered = _get_review_state(reviews, submitter)\n\n        self.assertEqual(filtered['reviewer0']['state'], 'CHANGES_REQUESTED')\n\n        shipits = {}\n        last_commit = 'dce73fdee311d5e74a7d59fd301320943f69d49f'\n        ready_for_review = self.make_time('2017-01-01T00:00:00Z')\n\n        requested_by = _changes_requested_by(filtered, shipits, last_commit, ready_for_review)\n        self.assertEqual(requested_by, ['reviewer0'])  # HANGES_REQUESTED review isn't ignored\n\n    def test_review_older_than_ready_for_review_PR_not_updated(self):\n        \"\"\"Check that:\n        - CHANGES_REQUESTED review older than ready_for_review comment wrote by submitter\n        - but submitter didn't update the pull request\n        => review isn't ignored\n        \"\"\"\n        last_commit = 'dce73fdee311d5e74a7d59fd301320943f69d49f'\n        reviews = [\n            # oldest first\n            {'user': {'login': 'reviewer0'}, 'submitted_at': '2017-01-01T00:00:00Z', 'state': 'CHANGES_REQUESTED',\n             'commit_id': last_commit},\n        ]\n        submitter = 'submitter'\n\n        filtered = _get_review_state(reviews, submitter)\n\n        self.assertEqual(filtered['reviewer0']['state'], 'CHANGES_REQUESTED')\n\n        shipits = {}\n        ready_for_review = self.make_time('2017-02-02T00:00:00Z')\n\n        requested_by = _changes_requested_by(filtered, shipits, last_commit, ready_for_review)\n        self.assertEqual(requested_by, ['reviewer0'])  # HANGES_REQUESTED review isn't ignored\n\n    @staticmethod\n    def make_time(data):\n        return datetime.datetime.strptime(data, '%Y-%m-%dT%H:%M:%SZ').replace(tzinfo=datetime.timezone.utc)\n"
  },
  {
    "path": "tests/unit/triagers/plugins/test_notifications.py",
    "content": "import pytest\n\nfrom ansibullbot.plugins.notifications import get_notification_facts\nfrom tests.utils.helpers import get_issue\nfrom tests.utils.repo_mock import RepoMock\n\n\n@pytest.fixture\ndef meta():\n    return {\n        'component_maintainers': ['target_user'],\n        'component_notifiers': ['another_user'],\n    }\n\n\n@pytest.fixture\ndef statusfile():\n    return 'tests/fixtures/needs_contributor/0_prstatus.json'\n\n\n@pytest.fixture\ndef iw(meta, statusfile):\n    datafile = 'tests/fixtures/needs_contributor/0_issue.yml'\n    with get_issue(datafile, statusfile) as iw:\n        iw._assignees = []\n        iw._merge_commits = []\n        iw.repo = RepoMock(meta['component_maintainers'] + meta['component_notifiers'])\n        return iw\n\n\ndef test_notify_authors(iw, meta):\n    facts = get_notification_facts(iw, meta)\n\n    expected_assign_users = ['target_user']\n    expected_notify_users = ['another_user']  # , u'target_user']\n    assert sorted(facts['to_assign']) == expected_assign_users\n    assert sorted(facts['to_notify']) == expected_notify_users\n"
  },
  {
    "path": "tests/unit/triagers/plugins/test_rebuild.py",
    "content": "import pytest\n\nfrom ansibullbot.plugins.ci_rebuild import get_rebuild_command_facts\n\nfrom tests.utils.helpers import get_issue\n\n\n@pytest.mark.xfail(reason=\"With shippable support removed, ci/azp.py needs a mock\")\ndef test_rebuild_command():\n    \"\"\"Test ran and failed. /rebuild command issued.\"\"\"\n    datafile = 'tests/fixtures/rebuild/0_issue.yml'\n    statusfile = 'tests/fixtures/rebuild/0_prstatus.json'\n    with get_issue(datafile, statusfile) as iw:\n        meta = {\n            'is_pullrequest': True,\n            'is_needs_revision': False,\n            'is_needs_rebase': False,\n            'needs_rebuild': False,\n            'ci_run_number': 0,\n        }\n        rbfacts = get_rebuild_command_facts(iw, meta, None)\n        assert rbfacts['needs_rebuild']\n        assert rbfacts['needs_rebuild_all']\n        assert not rbfacts['needs_rebuild_failed']\n\n\n@pytest.mark.xfail(reason=\"With shippable support removed, ci/azp.py needs a mock\")\ndef test_rebuild_failed_command():\n    \"\"\"Test ran and failed. /rebuild_failed command issued.\"\"\"\n    datafile = 'tests/fixtures/rebuild/1_issue.yml'\n    statusfile = 'tests/fixtures/rebuild/1_prstatus.json'\n    with get_issue(datafile, statusfile) as iw:\n        meta = {\n            'is_pullrequest': True,\n            'is_needs_revision': False,\n            'is_needs_rebase': False,\n            'needs_rebuild': False,\n            'ci_run_number': 0,\n        }\n        rbfacts = get_rebuild_command_facts(iw, meta, None)\n        assert rbfacts['needs_rebuild']\n        assert rbfacts['needs_rebuild_failed']\n        assert not rbfacts['needs_rebuild_all']\n\n\n@pytest.mark.xfail(reason=\"With shippable support removed, ci/azp.py needs a mock\")\ndef test_rebuild_and_rebuild_failed_commands():\n    \"\"\"Test ran and failed. /rebuild and /rebuild_failed commands issued, in that order.\"\"\"\n    datafile = 'tests/fixtures/rebuild/2_issue.yml'\n    statusfile = 'tests/fixtures/rebuild/2_prstatus.json'\n    with get_issue(datafile, statusfile) as iw:\n        meta = {\n            'is_pullrequest': True,\n            'is_needs_revision': False,\n            'is_needs_rebase': False,\n            'needs_rebuild': False,\n            'ci_run_number': 0,\n        }\n        rbfacts = get_rebuild_command_facts(iw, meta, None)\n        assert rbfacts['needs_rebuild']\n        assert rbfacts['needs_rebuild_failed']\n        assert not rbfacts['needs_rebuild_all']\n\n\n@pytest.mark.xfail(reason=\"With shippable support removed, ci/azp.py needs a mock\")\ndef test_rebuild_failed_and_rebuild_commands():\n    \"\"\"Test ran and failed. /rebuild_failed and /rebuild commands issued, in that order.\"\"\"\n    datafile = 'tests/fixtures/rebuild/3_issue.yml'\n    statusfile = 'tests/fixtures/rebuild/3_prstatus.json'\n    with get_issue(datafile, statusfile) as iw:\n        meta = {\n            'is_pullrequest': True,\n            'is_needs_revision': False,\n            'is_needs_rebase': False,\n            'needs_rebuild': False,\n            'ci_run_number': 0,\n        }\n        rbfacts = get_rebuild_command_facts(iw, meta, None)\n        assert rbfacts['needs_rebuild']\n        assert rbfacts['needs_rebuild_all']\n        assert not rbfacts['needs_rebuild_failed']\n"
  },
  {
    "path": "tests/unit/triagers/plugins/test_rebuild_merge.py",
    "content": "import pytest\n\nfrom ansibullbot.plugins.ci_rebuild import get_rebuild_merge_facts\nfrom tests.utils.helpers import get_issue\n\n\n@pytest.mark.xfail(reason=\"With shippable support removed, ci/azp.py needs a mock\")\ndef test0():\n    \"\"\"command issued, test ran, time to merge\"\"\"\n    datafile = 'tests/fixtures/rebuild_merge/0_issue.yml'\n    statusfile = 'tests/fixtures/rebuild_merge/0_prstatus.json'\n    with get_issue(datafile, statusfile) as iw:\n        meta = {\n            'is_pullrequest': True,\n            'is_needs_revision': False,\n            'is_needs_rebase': False,\n            'needs_rebuild': False,\n            'ci_run_number': 0,\n        }\n        rbfacts = get_rebuild_merge_facts(iw, meta, ['superman'], None)\n        assert not rbfacts['needs_rebuild']\n        assert not rbfacts['needs_rebuild_all']\n        assert rbfacts['admin_merge']\n\n\n@pytest.mark.xfail(reason=\"With shippable support removed, ci/azp.py needs a mock\")\ndef test1():\n    \"\"\"new test is in progress, do not rebuild and do not merge\"\"\"\n    datafile = 'tests/fixtures/rebuild_merge/1_issue.yml'\n    statusfile = 'tests/fixtures/rebuild_merge/1_prstatus.json'\n    with get_issue(datafile, statusfile) as iw:\n        meta = {\n            'is_pullrequest': True,\n            'is_needs_revision': False,\n            'is_needs_rebase': False,\n            'needs_rebuild': False,\n            'ci_run_number': 0\n        }\n        rbfacts = get_rebuild_merge_facts(iw, meta, ['superman'], None)\n        assert not rbfacts['needs_rebuild']\n        assert not rbfacts['needs_rebuild_all']\n        assert not rbfacts['admin_merge']\n\n\n@pytest.mark.xfail(reason=\"With shippable support removed, ci/azp.py needs a mock\")\ndef test2():\n    \"\"\"command given, time to rebuild but not merge\"\"\"\n    datafile = 'tests/fixtures/rebuild_merge/2_issue.yml'\n    statusfile = 'tests/fixtures/rebuild_merge/2_prstatus.json'\n    with get_issue(datafile, statusfile) as iw:\n        meta = {\n            'is_pullrequest': True,\n            'is_needs_revision': False,\n            'is_needs_rebase': False,\n            'needs_rebuild': False,\n            'ci_run_number': 0\n        }\n        rbfacts = get_rebuild_merge_facts(iw, meta, ['superman'], None)\n        assert rbfacts['needs_rebuild']\n        assert rbfacts['needs_rebuild_all']\n        assert not rbfacts['admin_merge']\n\n\ndef test3():\n    \"\"\"command given, new commit created, do not rebuild or merge\"\"\"\n    datafile = 'tests/fixtures/rebuild_merge/3_issue.yml'\n    statusfile = 'tests/fixtures/rebuild_merge/3_prstatus.json'\n    with get_issue(datafile, statusfile) as iw:\n        meta = {\n            'is_pullrequest': True,\n            'is_needs_revision': False,\n            'is_needs_rebase': False,\n            'needs_rebuild': False,\n            'ci_run_number': 0\n        }\n        rbfacts = get_rebuild_merge_facts(iw, meta, ['superman'], None)\n        assert not rbfacts['needs_rebuild']\n        assert not rbfacts['needs_rebuild_all']\n        assert not rbfacts['admin_merge']\n"
  },
  {
    "path": "tests/unit/triagers/plugins/test_shipit.py",
    "content": "import copy\nimport shutil\nimport tempfile\nimport unittest\n\nfrom collections import namedtuple\n\nimport pytest\n\nfrom tests.utils.issue_mock import IssueMock\nfrom tests.utils.helpers import get_issue\nfrom ansibullbot.plugins.component_matching import get_component_match_facts\nfrom ansibullbot.plugins.shipit import get_automerge_facts\nfrom ansibullbot.plugins.shipit import get_shipit_facts\nfrom ansibullbot.plugins.shipit import is_approval\nfrom ansibullbot.issuewrapper import IssueWrapper\n\n\nclass ComponentMatcherMock:\n\n    strategies = []\n    expected_results = []\n\n    def match(self, issuewrapper):\n        return self.expected_results\n\n\nclass HistoryWrapperMock:\n    history = None\n    def __init__(self):\n        self.history = []\n\n\nclass IssueWrapperMock:\n    _is_pullrequest = False\n    _pr_files = []\n    pr_files = []\n    _wip = False\n    _history = None\n    _submitter = 'bob'\n\n    def __init__(self, org, repo, number):\n        self._history = HistoryWrapperMock()\n        self.org = org\n        self.repo = repo\n        self.number = number\n\n    def is_pullrequest(self):\n        return self._is_pullrequest\n\n    def add_comment(self, user, body):\n        payload = {'actor': user, 'event': 'commented', 'body': body}\n        self.history.history.append(payload)\n\n    def add_file(self, filename, content):\n        mf = MockFile(filename, content=content)\n        self._pr_files.append(mf)\n\n    @property\n    def wip(self):\n        return self._wip\n\n    @property\n    def files(self):\n        return [x.filename for x in self._pr_files]\n\n    @property\n    def history(self):\n        return self._history\n\n    @property\n    def submitter(self):\n        return self._submitter\n\n    @property\n    def html_url(self):\n        if self.is_pullrequest():\n            return 'https://github.com/%s/%s/pulls/%s' % (self.org, self.repo, self.number)\n        else:\n            return 'https://github.com/%s/%s/issues/%s' % (self.org, self.repo, self.number)\n\n\nclass GitRepoWrapperMock:\n    files = []\n\n    def existed(self, filename):\n        return True\n\n\nclass MockFile:\n    def __init__(self, name, content=''):\n        self.filename = name\n        self.content = content\n        self.additions = 0\n        self.deletions = 0\n        self.status = None\n\n\nclass MockRepo:\n    def __init__(self, repo_path):\n        self.repo_path = repo_path\n\n    def get_pullrequest(self, issueid):\n        return namedtuple('PullRequest', ['draft', 'get_reviews'])(draft=False, get_reviews=lambda: [])\n\n\nclass GithubWrapperMock:\n    def get_request(self, url):\n        return []\n\n\nclass TestSuperShipit(unittest.TestCase):\n\n    def test_supershipit_shipit_facts(self):\n        # a supershipit should count from a supershipiteer\n        IW = IssueWrapperMock('ansible', 'ansible', 1)\n        IW.pr_files = [\n            MockFile('foo'),\n        ]\n        IW._is_pullrequest = True\n        IW.add_comment('jane', 'shipit')\n        meta = {\n            'is_module_util': False,\n            'is_new_module': False,\n            'is_needs_rebase': False,\n            'is_needs_revision': False,\n            'component_matches': [\n                {'repo_filename': 'foo', 'supershipit': ['jane', 'doe']}\n            ]\n        }\n        sfacts = get_shipit_facts(IW, meta, {})\n        assert sfacts['shipit']\n        assert sfacts['supershipit']\n        assert sfacts['shipit_actors'] == []\n        assert sfacts['shipit_actors_other'] == ['jane']\n\n    def test_supershipit_shipit_on_all_files(self):\n        # count all the supershipits\n        IW = IssueWrapperMock('ansible', 'ansible', 1)\n        IW.pr_files = [\n            MockFile('foo'),\n            MockFile('bar'),\n        ]\n        IW._is_pullrequest = True\n        IW.add_comment('jane', 'shipit')\n        IW.add_comment('doe', 'shipit')\n        meta = {\n            'is_module_util': False,\n            'is_new_module': False,\n            'is_needs_rebase': False,\n            'is_needs_revision': False,\n            'component_matches': [\n                {'repo_filename': 'foo', 'supershipit': ['jane']},\n                {'repo_filename': 'bar', 'supershipit': ['doe']}\n            ]\n        }\n        sfacts = get_shipit_facts(IW, meta, {})\n        assert sfacts['shipit']\n        assert sfacts['supershipit']\n        assert sfacts['shipit_actors'] == []\n        assert sfacts['shipit_actors_other'] == ['jane', 'doe']\n\n    def test_supershipit_shipit_not_all_files(self):\n        # make sure there is supershipit for all files\n        IW = IssueWrapperMock('ansible', 'ansible', 1)\n        IW.pr_files = [\n            MockFile('foo'),\n            MockFile('bar'),\n        ]\n        IW._is_pullrequest = True\n        IW.add_comment('jane', 'shipit')\n        meta = {\n            'is_module_util': False,\n            'is_new_module': False,\n            'is_needs_rebase': False,\n            'is_needs_revision': False,\n            'component_matches': [\n                {'repo_filename': 'foo', 'supershipit': ['jane']},\n                {'repo_filename': 'bar', 'supershipit': ['doe']}\n            ]\n        }\n        sfacts = get_shipit_facts(IW, meta, {})\n        assert not sfacts['shipit']\n        assert not sfacts['supershipit']\n        assert sfacts['shipit_actors_other'] == ['jane']\n        assert not sfacts['shipit_actors']\n\n    def test_maintainer_is_not_supershipit(self):\n        # a maintainer should not be auto-added as a shipiteer\n        IW = IssueWrapperMock('ansible', 'ansible', 1)\n        IW.pr_files = [\n            MockFile('foo'),\n        ]\n        IW._is_pullrequest = True\n        IW.add_comment('janetainer', 'shipit')\n        meta = {\n            'is_module_util': False,\n            'is_new_module': False,\n            'is_needs_rebase': False,\n            'is_needs_revision': False,\n            'component_maintainers': ['janetainer'],\n            'component_matches': [\n                {'repo_filename': 'foo', 'maintainers': ['janetainer']}\n            ]\n        }\n        sfacts = get_shipit_facts(IW, meta, {})\n        assert not sfacts['shipit']\n        assert not sfacts['supershipit']\n        assert sfacts['shipit_actors'] == ['janetainer']\n        assert not sfacts['shipit_actors_other']\n        assert sfacts['shipit_count_maintainer'] == 1\n        assert sfacts['shipit_actors'] == ['janetainer']\n\n    def test_core_is_not_supershipit(self):\n        # a core team member should not be auto-added as a shipiteer\n        IW = IssueWrapperMock('ansible', 'ansible', 1)\n        IW.pr_files = [\n            MockFile('foo'),\n        ]\n        IW._is_pullrequest = True\n        IW.add_comment('coreperson', 'shipit')\n        meta = {\n            'is_module_util': False,\n            'is_new_module': False,\n            'is_needs_rebase': False,\n            'is_needs_revision': False,\n            'component_matches': [\n                {'repo_filename': 'foo', 'supershipit': ['jane', 'doe']}\n            ]\n        }\n        sfacts = get_shipit_facts(IW, meta, {}, maintainer_team=['coreperson'])\n        assert not sfacts['supershipit']\n        assert not sfacts['shipit']\n        assert not sfacts['supershipit']\n        assert not sfacts['shipit_actors_other']\n        assert sfacts['shipit_actors'] == ['coreperson']\n\n    @pytest.mark.skip(reason=\"automerge is disabled now\")\n    def test_automerge_community_only(self):\n        # automerge should only be allowed if the support is 100% community\n        IW = IssueWrapperMock('ansible', 'ansible', 1)\n        IW.pr_files = [\n            MockFile('foo'),\n        ]\n        IW._is_pullrequest = True\n        meta1 = {\n            'is_module_util': False,\n            'is_new_module': False,\n            'is_needs_rebase': False,\n            'is_needs_revision': False,\n            'is_backport': False,\n            'merge_commits': False,\n            'has_commit_mention': False,\n            'is_needs_info': False,\n            'has_ci': True,\n            'mergeable': True,\n            'ci_stale': False,\n            'ci_state': 'success',\n            'shipit': True,\n            'supershipit': True,\n            'component_matches': [\n                {'repo_filename': 'bar', 'supershipit': ['jane', 'doe'], 'support': 'core'},\n                {'repo_filename': 'foo', 'supershipit': ['jane', 'doe'], 'support': 'community'},\n            ]\n        }\n        meta2 = copy.deepcopy(meta1)\n\n        afacts1 = get_automerge_facts(IW, meta1.copy())\n        afacts2 = get_automerge_facts(IW, meta2.copy())\n\n        assert afacts1['automerge'] == False\n        assert afacts2['automerge'] == True\n\n    def test_supershipit_changelogs(self):\n        # a supershipit should count from a supershipiteer\n        # https://github.com/ansible/ansibullbot/issues/1147\n        IW = IssueWrapperMock('ansible', 'ansible', 1)\n        IW.pr_files = [\n            MockFile('foo'),\n            MockFile('changelogs/fragments/000-foo-change.yml'),\n        ]\n        IW._is_pullrequest = True\n        IW.add_comment('jane', 'shipit')\n        meta = {\n            'is_module_util': False,\n            'is_new_module': False,\n            'is_needs_rebase': False,\n            'is_needs_revision': False,\n            'component_matches': [\n                {'repo_filename': 'foo', 'supershipit': ['jane', 'doe']},\n                {'repo_filename': 'changelogs/fragments/000-foo-change.yml'}\n            ]\n        }\n        sfacts = get_shipit_facts(IW, meta, {})\n\n        # don't let the plugin modify the meta\n        assert len(meta['component_matches']) == 2\n\n        assert sfacts['shipit']\n        assert sfacts['supershipit']\n        assert sfacts['shipit_actors'] == []\n        assert sfacts['shipit_actors_other'] == ['jane']\n\n    def test_supershipit_deletion_from_sanity_ignore(self):\n        '''supershipit should work when lines are deleted from ignore files'''\n        IW = IssueWrapperMock('ansible', 'ansible', 1)\n        IW.pr_files = [\n            MockFile('foo'),\n            MockFile('changelogs/fragments/000-foo-change.yml'),\n            MockFile('test/sanity/validate-modules/ignore.txt'),\n        ]\n        IW.pr_files[-1].additions = 0\n        IW.pr_files[-1].deletions = 1\n        IW._is_pullrequest = True\n        IW.add_comment('jane', 'shipit')\n        meta = {\n            'is_module_util': False,\n            'is_new_module': False,\n            'is_needs_rebase': False,\n            'is_needs_revision': False,\n            'component_matches': [\n                {'repo_filename': 'foo', 'supershipit': ['jane', 'doe']},\n                {'repo_filename': 'changelogs/fragments/000-foo-change.yml'},\n                {'repo_filename': 'test/sanity/validate-modules/ignore.txt'}\n            ]\n        }\n        sfacts = get_shipit_facts(IW, meta, {})\n\n        # don't let the plugin modify the meta\n        assert len(meta['component_matches']) == 3\n\n        assert sfacts['shipit']\n        assert sfacts['supershipit']\n        assert sfacts['shipit_actors'] == []\n        assert sfacts['shipit_actors_other'] == ['jane']\n\n    def test_supershipit_addition_to_sanity_ignore(self):\n        '''supershipit should work when lines are deleted from ignore files'''\n        IW = IssueWrapperMock('ansible', 'ansible', 1)\n        IW.pr_files = [\n            MockFile('foo'),\n            MockFile('changelogs/fragments/000-foo-change.yml'),\n            MockFile('test/sanity/validate-modules/ignore.txt'),\n        ]\n        IW.pr_files[-1].additions = 1\n        IW.pr_files[-1].deletions = 0\n        IW._is_pullrequest = True\n        IW.add_comment('jane', 'shipit')\n        meta = {\n            'is_module_util': False,\n            'is_new_module': False,\n            'is_needs_rebase': False,\n            'is_needs_revision': False,\n            'component_matches': [\n                {'repo_filename': 'foo', 'supershipit': ['jane', 'doe']},\n                {'repo_filename': 'changelogs/fragments/000-foo-change.yml'},\n                {'repo_filename': 'test/sanity/validate-modules/ignore.txt'}\n            ]\n        }\n        sfacts = get_shipit_facts(IW, meta, {})\n\n        # don't let the plugin modify the meta\n        assert len(meta['component_matches']) == 3\n\n        assert not sfacts['shipit']\n        assert not sfacts['supershipit']\n\n\nclass TestShipitRebuildMerge(unittest.TestCase):\n\n    def test_shipit_with_core_rebuild_merge(self):\n        # a rebuild_merge should also be a shipit\n        IW = IssueWrapperMock('ansible', 'ansible', 1)\n        IW._is_pullrequest = True\n        IW.add_file('foo', '')\n        IW.add_comment('jane', 'shipit')\n        IW.add_comment('x', 'rebuild_merge')\n        meta = {\n            'is_module_util': False,\n            'is_new_module': False,\n            'is_needs_rebase': False,\n            'is_needs_revision': False,\n            'component_maintainers': ['jane', 'doe'],\n            'component_matches': [\n                {'repo_filename': 'foo', 'maintainers': ['jane', 'doe']}\n            ]\n        }\n        maintainer_team = ['x']\n        sfacts = get_shipit_facts(IW, meta, {}, maintainer_team=maintainer_team)\n\n        assert sfacts['shipit']\n        assert not sfacts['supershipit']\n        assert not sfacts['supershipit_actors']\n        assert sfacts['shipit_actors'] == ['jane', 'x']\n        assert not sfacts['shipit_actors_other']\n        assert sfacts['shipit_count_ansible'] == 1\n        assert sfacts['shipit_count_maintainer'] == 1\n        assert sfacts['shipit_count_other'] == 0\n        assert sfacts['shipit_count_vtotal'] == 2\n\n    def test_shipit_with_noncore_rebuild_merge(self):\n        # a !core rebuild_merge should not be a shipit?\n        IW = IssueWrapperMock('ansible', 'ansible', 1)\n        IW._is_pullrequest = True\n        IW.add_file('foo', '')\n        IW.add_comment('jane', 'shipit')\n        IW.add_comment('z', 'rebuild_merge')\n        meta = {\n            'is_module_util': False,\n            'is_new_module': False,\n            'is_needs_rebase': False,\n            'is_needs_revision': False,\n            'component_maintainers': ['jane', 'doe'],\n            'component_matches': [\n                {'repo_filename': 'foo', 'maintainers': ['jane', 'doe']}\n            ]\n        }\n        maintainer_team = ['x']\n        sfacts = get_shipit_facts(IW, meta, {}, maintainer_team=maintainer_team)\n\n        assert not sfacts['shipit']\n        assert not sfacts['supershipit']\n        assert not sfacts['supershipit_actors']\n        assert sfacts['shipit_actors'] == ['jane']\n        assert sfacts['shipit_actors_other'] == ['z']\n        assert sfacts['shipit_count_ansible'] == 0\n        assert sfacts['shipit_count_maintainer'] == 1\n        assert sfacts['shipit_count_other'] == 1\n        assert sfacts['shipit_count_vtotal'] == 2\n\n\nclass TestShipitFacts(unittest.TestCase):\n\n    def setUp(self):\n        self.meta = {\n            'is_new_module': False,\n            'module_match': {\n                'namespace': 'system',\n                'maintainers': ['abulimov'],\n            },\n            'is_needs_revision': False,  # always set by needs_revision plugin (get_needs_revision_facts)\n            'is_needs_rebase': False,\n            'is_module_util': False,\n        }\n\n    def test_submitter_is_maintainer(self):\n        \"\"\"\n        Submitter is a namespace maintainer: approval must be automatically\n        added\n        \"\"\"\n        datafile = 'tests/fixtures/shipit/0_issue.yml'\n        statusfile = 'tests/fixtures/shipit/0_prstatus.json'\n        with get_issue(datafile, statusfile) as iw:\n            _meta = self.meta.copy()\n            _meta['component_maintainers'] = []\n            _meta['component_namespace_maintainers'] = ['LinusU', 'mscherer']\n\n            facts = get_shipit_facts(iw, _meta, {}, maintainer_team=['bcoca'], botnames=['ansibot'])\n\n            self.assertEqual(iw.submitter, 'mscherer')\n            self.assertEqual(['LinusU', 'mscherer'], facts['community_usernames'])\n            self.assertEqual(['mscherer'], facts['shipit_actors'])\n            self.assertEqual(facts['shipit_count_ansible'], 0)     # bcoca\n            self.assertEqual(facts['shipit_count_maintainer'], 0)  # abulimov\n            self.assertEqual(facts['shipit_count_community'], 1)   # LinusU, mscherer\n            self.assertFalse(facts['shipit'])\n\n    def test_submitter_is_maintainer_team_and_maintainer(self):\n        \"\"\"\n        Submitter is a namespace maintainer *and* a core team member: approval\n        must be automatically added\n        https://github.com/ansible/ansible/pull/21620\n        \"\"\"\n        datafile = 'tests/fixtures/shipit/1_issue.yml'\n        statusfile = 'tests/fixtures/shipit/1_prstatus.json'\n        with get_issue(datafile, statusfile) as iw:\n            _meta = self.meta.copy()\n            _meta['component_maintainers'] = []\n            _meta['component_namespace_maintainers'] = ['LinusU']\n\n            facts = get_shipit_facts(iw, _meta, {}, maintainer_team=['bcoca', 'mscherer'], botnames=['ansibot'])\n\n            self.assertEqual(iw.submitter, 'mscherer')\n            self.assertEqual(['LinusU'], facts['community_usernames'])\n            self.assertEqual(['LinusU', 'mscherer'], facts['shipit_actors'])\n            self.assertEqual(facts['shipit_count_ansible'], 1)     # bcoca, mscherer\n            self.assertEqual(facts['shipit_count_maintainer'], 0)  # abulimov\n            self.assertEqual(facts['shipit_count_community'], 1)   # LinusU\n            self.assertTrue(facts['shipit'])\n\n    def needs_rebase_or_revision_prevent_shipit(self, meta):\n        datafile = 'tests/fixtures/shipit/1_issue.yml'\n        statusfile = 'tests/fixtures/shipit/1_prstatus.json'\n        with get_issue(datafile, statusfile) as iw:\n            facts = get_shipit_facts(iw, meta, {}, maintainer_team=['bcoca', 'mscherer'], botnames=['ansibot'])\n\n            self.assertEqual(iw.submitter, 'mscherer')\n            self.assertFalse(facts['community_usernames'])\n            self.assertFalse(facts['shipit_actors'])\n            self.assertEqual(facts['shipit_count_ansible'], 0)\n            self.assertEqual(facts['shipit_count_maintainer'], 0)\n            self.assertEqual(facts['shipit_count_community'], 0)\n            self.assertFalse(facts['shipit'])\n\n    def test_needs_rebase_prevent_shipit(self):\n        \"\"\"\n        needs_rebase label prevents shipit label to be added\n        \"\"\"\n        meta = copy.deepcopy(self.meta)\n        meta['is_needs_rebase'] = True\n        self.needs_rebase_or_revision_prevent_shipit(meta)\n\n    def test_needs_revision_prevent_shipit(self):\n        \"\"\"\n        needs_revision label prevents shipit label to be added\n        \"\"\"\n        meta = copy.deepcopy(self.meta)\n        meta['is_needs_revision'] = True\n        self.needs_rebase_or_revision_prevent_shipit(meta)\n\n\nclass TestIsApproval(unittest.TestCase):\n\n    def test_is_approval(self):\n        self.assertTrue(is_approval('shipit'))\n        self.assertTrue(is_approval('+1'))\n        self.assertTrue(is_approval('LGTM'))\n\n        self.assertTrue(is_approval(' shipit '))\n        self.assertTrue(is_approval(\"\\tshipit\\t\"))\n        self.assertTrue(is_approval(\"\\tshipit\\n\"))\n        self.assertTrue(is_approval('Hey, LGTM !'))\n\n        self.assertFalse(is_approval(':+1:'))\n        self.assertFalse(is_approval('lgtm'))\n        self.assertFalse(is_approval('Shipit'))\n        self.assertFalse(is_approval('shipit!'))\n\n        self.assertFalse(is_approval('shipits'))\n        self.assertFalse(is_approval('LGTM.'))\n        self.assertFalse(is_approval('Looks good to me'))\n\n\nclass TestOwnerPR(unittest.TestCase):\n\n    def setUp(self):\n        self.meta = {\n            'is_needs_revision': False,  # always set by needs_revision plugin (get_needs_revision_facts)\n            'is_needs_rebase': False,\n        }\n\n    def test_owner_pr_submitter_is_maintainer_one_module_utils_file_updated(self):\n        \"\"\"\n        Submitter is a maintainer: ensure owner_pr is set (only one file below module_utils updated)\n        \"\"\"\n        botmeta_files = {'lib/ansible/module_utils/foo/bar.py': {'maintainers': ['ElsA', 'Oliver']}}\n        datafile = 'tests/fixtures/shipit/2_issue.yml'\n        statusfile = 'tests/fixtures/shipit/2_prstatus.json'\n        with get_issue(datafile, statusfile) as iw:\n            iw._pr_files = [MockFile('lib/ansible/module_utils/foo/bar.py')]\n            # need to give the wrapper a list of known files to compare against\n            iw.gitrepo = GitRepoWrapperMock()\n            iw.gitrepo.files.append('lib/ansible/modules/foo/bar.py')\n\n            # predefine what the matcher is going to return\n            CM = ComponentMatcherMock()\n            CM.expected_results = [\n                {\n                    'repo_filename': 'lib/ansible/module_utils/foo/bar.py',\n                    'labels': [],\n                    'support': None,\n                    'maintainers': ['ElsA', 'Oliver'],\n                    'notify': ['ElsA', 'Oliver'],\n                    'ignore': [],\n                }\n            ]\n\n            meta = self.meta.copy()\n            iw._commits = []\n            meta.update(get_component_match_facts(iw, CM, []))\n            facts = get_shipit_facts(iw, meta, botmeta_files, maintainer_team=['bcoca', 'mscherer'], botnames=['ansibot'])\n\n            self.assertEqual(iw.submitter, 'ElsA')\n            self.assertTrue(facts['owner_pr'])\n\n    def test_owner_pr_submitter_is_maintainer_one_modules_file_updated(self):\n        \"\"\"\n        Submitter is a maintainer: ensure owner_pr is set (only one file below modules updated)\n        \"\"\"\n        botmeta_files = {'lib/ansible/modules/foo/bar.py': {'maintainers': ['ElsA', 'mscherer']}}\n        CM = ComponentMatcherMock()\n        CM.expected_results = [\n            {\n                'repo_filename': 'lib/ansible/modules/foo/bar.py',\n                'labels': [],\n                'support': None,\n                'maintainers': ['ElsA', 'mscherer'],\n                'notify': ['ElsA', 'mscherer'],\n                'ignore': [],\n            }\n        ]\n\n        meta = self.meta.copy()\n\n        datafile = 'tests/fixtures/shipit/0_issue.yml'\n        statusfile = 'tests/fixtures/shipit/0_prstatus.json'\n        with get_issue(datafile, statusfile) as iw:\n            iw._pr_files = [MockFile('lib/ansible/modules/foo/bar.py')]\n            iw.gitrepo = GitRepoWrapperMock()\n            iw.gitrepo.files.append('lib/ansible/modules/foo/bar.py')\n\n            meta.update(get_component_match_facts(iw, CM, []))\n            facts = get_shipit_facts(iw, meta, botmeta_files, maintainer_team=['bcoca'], botnames=['ansibot'])\n\n        self.assertEqual(iw.submitter, 'mscherer')\n        self.assertTrue(facts['owner_pr'])\n\n    @pytest.mark.skip(reason=\"FIXME\")\n    def test_owner_pr_submitter_is_maintainer_new_module(self):\n        \"\"\"\n        Submitter is a maintainer: pull request adds a new module: ensure owner_pr is False\n        \"\"\"\n        botmeta_files = {'lib/ansible/modules/foo/bar.py': {'maintainers': ['ElsA', 'mscherer']}}\n        CM = ComponentMatcherMock()\n        CM.expected_results = [\n            {\n                'repo_filename': 'lib/ansible/modules/foo/bar.py',\n                'labels': [],\n                'support': None,\n                'maintainers': ['ElsA', 'mscherer'],\n                'notify': ['ElsA', 'mscherer'],\n                'ignore': [],\n            }\n        ]\n\n        meta = self.meta.copy()\n\n        datafile = 'tests/fixtures/shipit/0_issue.yml'\n        statusfile = 'tests/fixtures/shipit/0_prstatus.json'\n        with get_issue(datafile, statusfile) as iw:\n            iw.pr_files = [MockFile('lib/ansible/modules/foo/bar.py')]\n            iw.gitrepo = GitRepoWrapperMock()\n\n            meta.update(get_component_match_facts(iw, CM, []))\n            facts = get_shipit_facts(iw, meta, botmeta_files, maintainer_team=['bcoca'], botnames=['ansibot'])\n\n        self.assertEqual(iw.submitter, 'mscherer')\n        self.assertFalse(facts['owner_pr'])\n\n    def test_owner_pr_submitter_is_not_maintainer_of_all_updated_files(self):\n        \"\"\"\n        PR updates 2 files below module_utils, submitter is a maintainer from only one: ensure owner_pr isn't set\n        \"\"\"\n        botmeta_files = {\n            'lib/ansible/module_utils/foo/bar.py': {'maintainers': ['ElsA', 'Oliver']},\n            'lib/ansible/module_utils/baz/bar.py': {'maintainers': ['TiTi', 'ZaZa']},\n        }\n        CM = ComponentMatcherMock()\n        CM.expected_results = [\n            {\n                'repo_filename': 'lib/ansible/module_utils/foo/bar.py',\n                'labels': [],\n                'support': None,\n                'maintainers': ['ElsA', 'Oliver'],\n                'notify': ['ElsA', 'Oliver'],\n                'ignore': [],\n            },\n            {\n                'repo_filename': 'lib/ansible/modules/baz/bar.py',\n                'labels': [],\n                'support': None,\n                'maintainers': ['TiTi', 'ZaZa'],\n                'notify': ['TiTi', 'ZaZa'],\n                'ignore': [],\n            }\n        ]\n\n        issue = IssueMock('/dev/null')\n        issue.user.login = 'ElsA'\n        issue.html_url = 'https://github.com/ansible/ansible/pull/123'\n        cachedir = tempfile.mkdtemp()\n        gh = GithubWrapperMock()\n        iw = IssueWrapper(cachedir=cachedir, issue=issue, github=gh)\n        iw._pr_files = [\n            MockFile('lib/ansible/module_utils/foo/bar.py'),\n            MockFile('lib/ansible/module_utils/baz/bar.py')\n        ]\n        iw.gitrepo = GitRepoWrapperMock()\n        iw.repo = MockRepo(repo_path='ansible/ansible')\n\n        meta = self.meta.copy()\n        iw._commits = []\n        meta.update(get_component_match_facts(iw, CM, []))\n        facts = get_shipit_facts(iw, meta, botmeta_files, maintainer_team=['bcoca', 'mscherer'], botnames=['ansibot'])\n        shutil.rmtree(cachedir)\n\n        self.assertEqual(iw.submitter, 'ElsA')\n        self.assertFalse(facts['owner_pr'])\n\n    def test_owner_pr_module_utils_and_modules_updated_submitter_maintainer_1(self):\n        \"\"\"\n        PR updates 2 files (one below modules, the other below module_utils),\n        submitter is a maintainer from both, check that owner_pr is set.\n        Submitter is maintainer from module file.\n        \"\"\"\n        botmeta_files = {\n            'lib/ansible/modules/foo/bar.py': {'maintainers': ['ElsA', 'mscherer']},\n            'lib/ansible/module_utils/baz/bar.py': {'maintainers': ['TiTi', 'ZaZa']},\n        }\n        CM = ComponentMatcherMock()\n        CM.expected_results = [\n            {\n                'repo_filename': 'lib/ansible/module_utils/foo/bar.py',\n                'labels': [],\n                'support': None,\n                'maintainers': ['ElsA', 'mscherer'],\n                'notify': ['ElsA', 'mscherer'],\n                'ignore': [],\n            },\n            {\n                'repo_filename': 'lib/ansible/modules/baz/bar.py',\n                'labels': [],\n                'support': None,\n                'maintainers': ['TiTi', 'ZaZa'],\n                'notify': ['TiTi', 'ZaZa'],\n                'ignore': [],\n            }\n        ]\n\n        meta = self.meta.copy()\n\n        datafile = 'tests/fixtures/shipit/0_issue.yml'\n        statusfile = 'tests/fixtures/shipit/0_prstatus.json'\n        with get_issue(datafile, statusfile) as iw:\n            iw._pr_files = [\n                MockFile('lib/ansible/modules/foo/bar.py'),\n                MockFile('lib/ansible/module_utils/baz/bar.py')\n            ]\n            iw.gitrepo = GitRepoWrapperMock()\n            iw.gitrepo.files = ['lib/ansible/modules/foo/bar.py', 'lib/ansible/module_utils/baz/bar.py']\n\n            iw._commits = []\n            meta.update(get_component_match_facts(iw, CM, []))\n            facts = get_shipit_facts(iw, meta, botmeta_files, maintainer_team=['bcoca', 'mscherer'], botnames=['ansibot'])\n\n        self.assertEqual(iw.submitter, 'mscherer')\n        self.assertFalse(facts['owner_pr'])\n\n    @pytest.mark.skip(reason=\"FIXME\")\n    def test_owner_pr_module_utils_and_modules_updated_submitter_maintainer_2(self):\n        \"\"\"\n        PR updates 2 files (one below modules, the other below module_utils),\n        submitter is a maintainer from both, check that owner_pr is set.\n        Submitter is maintainer from module_utils file.\n        \"\"\"\n        botmeta_files = {\n            'lib/ansible/modules/foo/bar.py': {'maintainers': ['ElsA', 'ZaZa']},\n            'lib/ansible/module_utils/baz/bar.py': {'maintainers': ['TiTi', 'mscherer']},\n        }\n        CM = ComponentMatcherMock()\n        CM.expected_results = [\n            {\n                'repo_filename': 'lib/ansible/module_utils/foo/bar.py',\n                'labels': [],\n                'support': None,\n                'maintainers': ['ElsA', 'mscherer'],\n                'notify': ['ElsA', 'mscherer'],\n                'ignore': [],\n            },\n            {\n                'repo_filename': 'lib/ansible/modules/baz/bar.py',\n                'labels': [],\n                'support': None,\n                'maintainers': ['TiTi', 'ZaZa'],\n                'notify': ['TiTi', 'ZaZa'],\n                'ignore': [],\n            }\n        ]\n\n        meta = self.meta.copy()\n\n        datafile = 'tests/fixtures/shipit/0_issue.yml'\n        statusfile = 'tests/fixtures/shipit/0_prstatus.json'\n        with get_issue(datafile, statusfile) as iw:\n            iw.pr_files = [\n                MockFile('lib/ansible/modules/foo/bar.py'),\n                MockFile('lib/ansible/module_utils/baz/bar.py')\n            ]\n            meta.update(get_component_match_facts(iw, CM, []))\n            facts = get_shipit_facts(iw, meta, botmeta_files, maintainer_team=['bcoca'], botnames=['ansibot'])\n\n        self.assertEqual(iw.submitter, 'mscherer')\n        self.assertFalse(facts['owner_pr'])\n\n    def test_owner_pr_submitter_is_maintainer_one_module_file_updated_changelog(self):\n        \"\"\"\n        Submitter is a maintainer: ensure owner_pr is set even if changelog fragment is present\n        \"\"\"\n        botmeta_files = {'lib/ansible/modules/foo/bar.py': {'maintainers': ['ElsA', 'Oliver']}}\n        datafile = 'tests/fixtures/shipit/2_issue.yml'\n        statusfile = 'tests/fixtures/shipit/2_prstatus.json'\n        with get_issue(datafile, statusfile) as iw:\n            iw._pr_files = [\n                MockFile('lib/ansible/modules/foo/bar.py'),\n                MockFile('changelogs/fragments/00000-fragment.yaml')\n            ]\n            # need to give the wrapper a list of known files to compare against\n            iw.gitrepo = GitRepoWrapperMock()\n            iw.gitrepo.files.append('lib/ansible/modules/foo/bar.py')\n\n            # predefine what the matcher is going to return\n            CM = ComponentMatcherMock()\n            CM.expected_results = [\n                {\n                    'repo_filename': 'lib/ansible/modules/foo/bar.py',\n                    'labels': [],\n                    'support': None,\n                    'maintainers': ['ElsA', 'Oliver'],\n                    'notify': ['ElsA', 'Oliver'],\n                    'ignore': [],\n                }\n            ]\n\n            meta = self.meta.copy()\n            iw._commits = []\n            meta.update(get_component_match_facts(iw, CM, []))\n            facts = get_shipit_facts(iw, meta, botmeta_files, maintainer_team=['bcoca', 'mscherer'], botnames=['ansibot'])\n\n            self.assertEqual(iw.submitter, 'ElsA')\n            self.assertTrue(facts['owner_pr'])\n\n\nclass TestAutomergeFacts(unittest.TestCase):\n\n    def test_automerge_changelog_fragment(self):\n        iw = IssueWrapperMock('ansible', 'ansible', 1)\n        iw._is_pullrequest = True\n        iw.pr_files = [\n            MockFile('lib/ansible/modules/foo/bar.py'),\n            MockFile('changelogs/fragments/00000-fragment.yaml')\n        ]\n        meta = {\n            'is_module_util': False,\n            'is_new_module': False,\n            'is_needs_rebase': False,\n            'is_needs_revision': False,\n            'is_backport': False,\n            'merge_commits': False,\n            'has_commit_mention': False,\n            'is_needs_info': False,\n            'has_ci': True,\n            'mergeable': True,\n            'ci_stale': False,\n            'ci_state': 'success',\n            'shipit': True,\n            'supershipit': False,\n            'is_new_directory': False,\n            'is_module': True,\n            'module_match': {\n                'namespace': 'foo',\n                'maintainers': ['ghuser1'],\n            },\n        }\n\n        afacts = get_automerge_facts(iw, meta)\n\n        self.assertTrue(afacts['automerge'])\n\n    def test_automerge_deletion_from_ignore(self):\n        iw = IssueWrapperMock('ansible', 'ansible', 1)\n        iw._is_pullrequest = True\n        mfile = MockFile('test/sanity/validate-modules/ignore.txt')\n        mfile.deletions = 1\n        iw.pr_files = [mfile]\n        meta = {\n            'is_module_util': False,\n            'is_new_module': False,\n            'is_needs_rebase': False,\n            'is_needs_revision': False,\n            'is_backport': False,\n            'merge_commits': False,\n            'has_commit_mention': False,\n            'is_needs_info': False,\n            'has_ci': True,\n            'mergeable': True,\n            'ci_stale': False,\n            'ci_state': 'success',\n            'shipit': True,\n            'supershipit': False,\n            'is_new_directory': False,\n            'is_module': True,\n            'module_match': {\n                'namespace': 'foo',\n                'maintainers': ['ghuser1'],\n            },\n        }\n\n        afacts = get_automerge_facts(iw, meta)\n\n        self.assertTrue(afacts['automerge'])\n\n    def test_automerge_addition_to_ignore(self):\n        iw = IssueWrapperMock('ansible', 'ansible', 1)\n        iw._is_pullrequest = True\n        mfile = MockFile('test/sanity/validate-modules/ignore.txt')\n        mfile.additions = 1\n        mfile.status = 'added'\n        iw.pr_files = [mfile]\n        meta = {\n            'is_module_util': False,\n            'is_new_module': False,\n            'is_needs_rebase': False,\n            'is_needs_revision': False,\n            'is_backport': False,\n            'merge_commits': False,\n            'has_commit_mention': False,\n            'is_needs_info': False,\n            'has_ci': True,\n            'mergeable': True,\n            'ci_stale': False,\n            'ci_state': 'success',\n            'shipit': True,\n            'supershipit': False,\n            'is_new_directory': False,\n            'is_module': True,\n            'module_match': {\n                'namespace': 'foo',\n                'maintainers': ['ghuser1'],\n            },\n            'component_matches': [\n                {\n                    'repo_filename': 'test/sanity/validate-modules/ignore.txt',\n                    'support': 'core'\n                }\n            ]\n        }\n\n        afacts = get_automerge_facts(iw, meta)\n\n        self.assertFalse(afacts['automerge'])\n"
  },
  {
    "path": "tests/unit/utils/__init__.py",
    "content": ""
  },
  {
    "path": "tests/unit/utils/test_component_tools.py",
    "content": "import shutil\nimport tempfile\nfrom unittest import TestCase\n\nimport pytest\n\nfrom ansibullbot.utils.component_tools import AnsibleComponentMatcher as ComponentMatcher\nfrom ansibullbot.utils.component_tools import make_prefixes\nfrom ansibullbot.utils.git_tools import GitRepoWrapper\nfrom ansibullbot.utils.systemtools import run_command\n\n\nclass TestMakePrefixes(TestCase):\n\n    def test_simple_path_is_split_correctly(self):\n        fp = 'lib/ansible/foo/bar'\n        prefixes = make_prefixes(fp)\n        assert len(prefixes) == len(fp)\n        assert fp in prefixes\n        assert prefixes[0] == fp\n        assert prefixes[-1] == 'l'\n\n\nclass GitShallowRepo(GitRepoWrapper):\n    \"\"\"Perform a shallow copy\"\"\"\n\n    def create_checkout(self):\n        \"\"\"checkout ansible\"\"\"\n        cmd = \"git clone --depth=1 --single-branch %s %s\" % (self.repo, self.checkoutdir)\n        (rc, so, se) = run_command(cmd)\n        if rc:\n            raise Exception(f\"Fail to execute '{cmd}: {rc} ({so}, {se})'\")\n\n    def update_checkout(self):\n        return False\n\n\nclass TestComponentMatcher(TestCase):\n\n    @classmethod\n    def setUpClass(cls):\n        \"\"\"Init the matcher\"\"\"\n        cachedir = tempfile.mkdtemp()\n        gitrepo = GitShallowRepo(cachedir=cachedir, repo='https://github.com/ansible/ansible')\n        gitrepo.update()\n\n        cls.component_matcher = ComponentMatcher(email_cache={}, gitrepo=gitrepo)\n\n    @classmethod\n    def tearDownClass(cls):\n        \"\"\"suppress temp dir\"\"\"\n        shutil.rmtree(cls.component_matcher.gitrepo.checkoutdir)\n\n    @pytest.mark.skip(reason=\"FIXME\")    \n    def test_get_meta_for_file_wildcard(self):\n        self.component_matcher.botmeta = {\n            'files': {\n                'lib/ansible/plugins/action/junos': {\n                    'maintainers': ['gundalow'],\n                    'labels': ['networking'],\n                }\n            }\n        }\n        result = self.component_matcher.get_meta_for_file('lib/ansible/plugins/action/junos_config.py')\n        self.assertEqual(result['labels'], ['networking'])\n        self.assertEqual(result['maintainers'], ['gundalow'])\n\n    @pytest.mark.skip(reason=\"FIXME\")    \n    def test_get_meta_for_file_wildcard_multiple(self):\n        self.component_matcher.botmeta = {\n            'files': {\n                'lib/ansible/plugins/action/junos_config.py': {\n                    'maintainers': ['privateip'],\n                    'labels': ['config'],\n                    'notified': ['jctanner'],\n                },\n                'lib/ansible/plugins/action/junos': {\n                    'maintainers': ['gundalow'],\n                    'labels': ['networking'],\n                    'notified': ['mkrizek'],\n                }\n            }\n        }\n        result = self.component_matcher.get_meta_for_file('lib/ansible/plugins/action/junos_config.py')\n\n        assert sorted(result['notify']) == sorted(['gundalow', 'mkrizek', 'jctanner', 'privateip'])\n        assert sorted(result['labels']) == sorted(['networking', 'config'])\n        assert sorted(result['maintainers']) == sorted(['gundalow', 'privateip'])\n\n    @pytest.mark.skip(reason=\"FIXME\")    \n    def test_get_meta_for_file_pyfile(self):\n        self.component_matcher.botmeta = {\n            'files': {\n                'lib/ansible/modules/packaging/os/yum.py': {\n                    'ignored': ['verm666'],  # 'verm666' is also listed as an author of yum module\n                    'maintainers': ['maxamillion', 'verm666'],\n                }\n            }\n        }\n        result = self.component_matcher.get_meta_for_file('lib/ansible/modules/packaging/os/yum.py')\n        assert sorted(result['maintainers']) == sorted([\n            'Akasurde',\n            'ansible',\n            'berenddeschouwer',\n            'kustodian',\n            'maxamillion',\n        ])\n        assert sorted(result['notify']) == sorted([\n            'Akasurde',\n            'ansible',\n            'berenddeschouwer',\n            # u'kustodian',  added in botmeta, not authors, to be merged later\n            'maxamillion',\n        ])\n\n    def test_get_meta_support_core_from_module(self):\n        self.component_matcher.botmeta = {\n            'files': {\n                'lib/ansible/modules/packaging/os/yum.py': {\n                    'ignored': ['verm666'],  # 'verm666' is also listed as an author of yum module\n                    'maintainers': ['maxamillion', 'verm666'],\n                }\n            }\n        }\n        result = self.component_matcher.get_meta_for_file('lib/ansible/modules/packaging/os/yum.py')\n        assert result['support'] == 'core'\n\n    def test_get_meta_support_core_filter_plugin(self):\n        self.component_matcher.botmeta = {\n            'files': {\n                'lib/ansible/plugins/filter/': {\n                    'support': 'community',\n                    'supported_by': 'community',\n                },\n                'lib/ansible/plugins/filter/core.py': {\n                    'support': 'core',\n                    'supported_by': 'core'\n                },\n            }\n        }\n        result = self.component_matcher.get_meta_for_file('lib/ansible/plugins/filter/core.py')\n        assert result['support'] == 'core'\n\n    def test_get_meta_support_new_filter_plugin(self):\n        self.component_matcher.botmeta = {\n            'files': {\n                'lib/ansible/plugins/filter/': {\n                    'support': 'community',\n                    'supported_by': 'community',\n                },\n                'lib/ansible/plugins/filter/core.py': {\n                    'support': 'core',\n                    'supported_by': 'core'\n                },\n            }\n        }\n        result = self.component_matcher.get_meta_for_file('lib/ansible/plugins/filter/new.py')\n        assert result['support'] == 'community'\n\n    @pytest.mark.skip(reason=\"FIXME\")\n    def test_get_meta_for_file_powershell(self):\n        self.component_matcher.botmeta = {\n            'files': {\n                'lib/ansible/modules/windows/win_ping.py': {\n                    'maintainers': ['jborean93'],\n                    'labels': ['windoez'],\n                }\n            }\n        }\n        result = self.component_matcher.get_meta_for_file('lib/ansible/modules/windows/win_ping.ps1')\n        assert result['labels'] == ['windoez']\n        #import epdb; epdb.st()\n        #expected_maintainers = sorted([u'cchurch', u'jborean93'])\n        expected_maintainers = sorted(['jborean93'])\n        assert sorted(result['maintainers']) == expected_maintainers\n\n    def test_reduce_filepaths(self):\n\n        filepaths = ['commands/command.py', 'lib/ansible/modules/commands/command.py']\n        reduced = self.component_matcher.reduce_filepaths(filepaths)\n        self.assertEqual(reduced, ['lib/ansible/modules/commands/command.py'])\n\n    @pytest.mark.skip(reason=\"FIXME\")\n    def test_search_by_filepath(self):\n\n        COMPONENTS = {\n            '/usr/lib/python2.7/site-packages/ansible/modules/core/packaging/os/rhn_register.py': [\n                'lib/ansible/modules/packaging/os/rhn_register.py',\n                'lib/ansible/modules/packaging/os/rhn_register.py'\n            ],\n            'module/network/ios/ios_facts': [\n                'lib/ansible/modules/network/ios/ios_facts.py',\n                'lib/ansible/modules/network/ios/ios_facts.py'\n            ],\n            # Doesn't work, lib/ansible/modules/network/nso/nso_query.py is\n            # found\n            #'json_query': [\n            #    'lib/ansible/plugins/filter/json_query.py',\n            #    'lib/ansible/plugins/filter/json_query.py'\n            #],\n            'module_common.py': [\n                'lib/ansible/executor/module_common.py',\n                'lib/ansible/executor/module_common.py'\n            ],\n            '/network/dellos6/dellos6_config': [\n                'lib/ansible/modules/network/dellos6/dellos6_config.py',\n                'lib/ansible/modules/network/dellos6/dellos6_config.py'\n            ],\n            'module_utils/vmware': [\n                'lib/ansible/module_utils/vmware.py',\n                'lib/ansible/module_utils/vmware.py'\n            ],\n            '`azure_rm.py`': [\n                'contrib/inventory/azure_rm.py',\n                'contrib/inventory/azure_rm.py'\n            ],\n            'vmware_inventory': [\n                'contrib/inventory/vmware_inventory.py',\n                'contrib/inventory/vmware_inventory.py'\n            ],\n            'skippy': [\n                'lib/ansible/plugins/callback/skippy.py',\n                'lib/ansible/plugins/callback/skippy.py'\n            ],\n            'azure_rm_common': [\n                'lib/ansible/module_utils/azure_rm_common.py',\n                'lib/ansible/module_utils/azure_rm_common.py'\n            ],\n            'junit': [\n                'lib/ansible/plugins/callback/junit.py',\n                'lib/ansible/plugins/callback/junit.py'\n            ],\n            '`plugins/strategy/__init__.py`': [\n                'lib/ansible/plugins/strategy/__init__.py',\n                'lib/ansible/plugins/strategy/__init__.py'\n            ],\n            '- jabber.py': [\n                #'lib/ansible/plugins/callback/jabber.py',\n                #'lib/ansible/plugins/callback/jabber.py'\n                'lib/ansible/modules/notification/jabber.py',\n                'lib/ansible/modules/notification/jabber.py',\n            ],\n            '- ios_config.py': [\n                #'lib/ansible/plugins/action/ios_config.py',\n                #'lib/ansible/plugins/action/ios_config.py'\n                'lib/ansible/modules/network/ios/ios_config.py',\n                'lib/ansible/modules/network/ios/ios_config.py',\n            ],\n            # Unable to follow symlink ? Besides a new file exists: test/sanity/pylint/config/ansible-test\n            #'ansible-test': [\n            #    'test/runner/ansible-test',\n            #    'test/runner/ansible-test'\n            #],\n            'inventory manager': [\n                None,\n                'lib/ansible/inventory/manager.py'\n            ],\n            # Doesn't work\n            #'ansible/hacking/test-module': [\n            #    'hacking/test-module',\n            #    'hacking/test-module'\n            #],\n            '- ansible-connection': [\n                'bin/ansible-connection',\n                'bin/ansible-connection'\n            ],\n            # Doesn't work\n            #'`validate-modules`': [\n            #    'test/sanity/validate-modules/validate-modules',\n            #    'test/sanity/validate-modules/validate-modules'\n            #],\n            '`modules/cloud/docker/docker_container.py`': [\n                'lib/ansible/modules/cloud/docker/docker_container.py',\n                'lib/ansible/modules/cloud/docker/docker_container.py'\n            ],\n            'packaging/language/maven_artifact': [\n                'lib/ansible/modules/packaging/language/maven_artifact.py',\n                'lib/ansible/modules/packaging/language/maven_artifact.py'\n            ],\n            '`lib/ansible/executor/module_common.py`': [\n                'lib/ansible/executor/module_common.py',\n                'lib/ansible/executor/module_common.py'\n            ],\n        }\n\n        for k,v in COMPONENTS.items():\n            COMPONENT = k\n            EXPECTED = v\n\n            res = self.component_matcher.search_by_filepath(COMPONENT)\n            if EXPECTED[0] is None and not res:\n                pass\n            else:\n                self.assertEqual([EXPECTED[0]], res)\n\n            res = self.component_matcher.search_by_filepath(COMPONENT, partial=True)\n            if EXPECTED[1] is None and not res:\n                pass\n            else:\n                self.assertEqual([EXPECTED[1]], res)\n\n    @pytest.mark.skip(reason=\"FIXME\")\n    def test_search_by_filepath_with_context(self):\n\n        COMPONENTS = {\n            'ec2.py': [\n                #{'context': None, 'expected': ['contrib/inventory/ec2.py']},\n                {'context': 'contrib/inventory', 'expected': ['contrib/inventory/ec2.py']},\n                {'context': 'lib/ansible/modules', 'expected': ['lib/ansible/modules/cloud/amazon/ec2.py']},\n            ],\n            'netapp_e_storagepool storage module': [\n                {'context': 'lib/ansible/modules', 'partial': False, 'expected': []},\n                {'context': 'lib/ansible/modules', 'partial': True, 'expected': ['lib/ansible/modules/storage/netapp/netapp_e_storagepool.py']},\n            ],\n            'ansible/files/modules/archive.py': [\n                {'context': None, 'partial': True, 'expected': ['lib/ansible/modules/files/archive.py']}\n            ],\n            # Doesn't work\n            #'lib/ansible/modules/cloud/amazon': [\n            #    {u'context': None, 'partial': False, 'expected': ['lib/ansible/modules/cloud/amazon']},\n            #    {u'context': None, 'partial': True, 'expected': ['lib/ansible/modules/cloud/amazon']}\n            #],\n            #'modules/network/f5': [\n            #    {u'context': None, 'partial': False, 'expected': ['lib/ansible/modules/network/f5']},\n            #    {u'context': None, 'partial': True, 'expected': ['lib/ansible/modules/network/f5']}\n            #],\n            #'modules/network/iosxr': [\n            #    {u'context': None, 'partial': False, 'expected': ['lib/ansible/modules/network/iosxr']},\n            #    {u'context': None, 'partial': True, 'expected': ['lib/ansible/modules/network/iosxr']}\n            #]\n        }\n\n        '''\n        COMPONENTS = {\n            'netapp_e_storagepool storage module': [\n                {'context': 'lib/ansible/modules', 'partial': False, 'expected': ['lib/ansible/modules/storage/netapp/netapp_e_storagepool.py']},\n                {'context': 'lib/ansible/modules', 'partial': True, 'expected': ['lib/ansible/modules/storage/netapp/netapp_e_storagepool.py']},\n            ],\n        }\n        '''\n\n        for k,v in COMPONENTS.items():\n            COMPONENT = k\n            for v2 in v:\n                CONTEXT = v2.get('context')\n                PARTIAL = v2.get('partial')\n                EXPECTED = v2.get('expected')\n                res = self.component_matcher.search_by_filepath(COMPONENT, context=CONTEXT, partial=PARTIAL)\n                assert EXPECTED == res\n\n    @pytest.mark.skip(reason=\"FIXME\")\n    def test_search_by_regex_module_globs(self):\n\n        COMPONENTS = {\n            'All AWS modules': 'lib/ansible/modules/cloud/amazon',\n            'ec2_* modules': 'lib/ansible/modules/cloud/amazon',\n            'GCP ansible modules': 'lib/ansible/modules/cloud/google',\n            'BigIP modules': 'lib/ansible/modules/network/f5',\n            'NXOS modules': 'lib/ansible/modules/network/nxos',\n            'azurerm modules': 'lib/ansible/modules/cloud/azure',\n            'ansiballz/ziploader for modules': [],\n            'dellos*_* network modules': [],\n            #u'elasticache modules': [\n            #    u'lib/ansible/modules/cloud/amazon/elasticache.py',\n            #    u'lib/ansible/modules/cloud/amazon/elasticache_info.py',\n            #    u'lib/ansible/modules/cloud/amazon/elasticache_parameter_group.py',\n            #    u'lib/ansible/modules/cloud/amazon/elasticache_snapshot.py',\n            #    u'lib/ansible/modules/cloud/amazon/elasticache_subnet_group.py',\n            #],\n            'All FreeIPA Modules': [],\n            'All modules': [],\n            'All Cisco IOS Modules': [],\n            'All EC2 based modules, possibly more.': 'lib/ansible/modules/cloud/amazon',\n        }\n\n        for COMPONENT,EXPECTED in COMPONENTS.items():\n            if not isinstance(EXPECTED, list):\n                EXPECTED = [EXPECTED]\n            res = self.component_matcher.search_by_regex_module_globs(COMPONENT)\n\n            self.assertEqual(EXPECTED, res)\n\n    def test_search_by_keywords(self):\n\n        COMPONENTS = {\n            #'inventory script': [u'lib/ansible/plugins/inventory/script.py'] #ix2390 https://github.com/ansible/ansible/issues/24545\n            'inventory script': ['contrib/inventory']  # ix2390 https://github.com/ansible/ansible/issues/24545\n        }\n\n        for k,v in COMPONENTS.items():\n            COMPONENT = k\n            EXPECTED = v\n            res = self.component_matcher.search_by_keywords(COMPONENT)\n            self.assertEqual(EXPECTED, res)\n\n    @pytest.mark.skip(reason=\"FIXME\")\n    def test_search_by_regex_modules(self):\n\n        COMPONENTS = {\n            'Module: include_role': ['lib/ansible/modules/utilities/logic/include_role.py'],\n            'module: include_role': ['lib/ansible/modules/utilities/logic/include_role.py'],\n            'module include_role': ['lib/ansible/modules/utilities/logic/include_role.py'],\n            #'ec2_asg (AWS EC2 auto scaling groups)': ['lib/ansible/modules/cloud/amazon/ec2_asg.py'],\n            'junos_command (but not only !)': ['lib/ansible/modules/network/junos/junos_command.py'],\n            'tower_job_list module but I believe that also the other tower_* module have the same error':\n                ['lib/ansible/modules/web_infrastructure/ansible_tower/tower_job_list.py'],\n            #'F5 bigip (bigip_selfip)': [u'lib/ansible/modules/network/f5/bigip_selfip.py'],\n            #u'ansible_modules_vsphere_guest': [\n            #    #u'lib/ansible/modules/cloud/vmware/_vsphere_guest.py'\n            #    u'lib/ansible/modules/cloud/vmware/vsphere_copy.py'\n            #    u'lib/ansible/modules/cloud/vmware/vsphere_file.py',\n            #],\n            'shell-module': ['lib/ansible/modules/commands/shell.py'],\n            'the docker_volume command': ['lib/ansible/modules/cloud/docker/docker_volume.py'],\n            'Azure Inventory Script - azure_rm.py': [],\n            ':\\n`at` module': ['lib/ansible/modules/system/at.py'],\n            ':\\n`rax` module': ['lib/ansible/modules/cloud/rackspace/rax.py'],\n            '`apt_key` module': ['lib/ansible/modules/packaging/os/apt_key.py'],\n            '`apt` module': ['lib/ansible/modules/packaging/os/apt.py'],\n            '`ecs_service` module': ['lib/ansible/modules/cloud/amazon/ecs_service.py'],\n            '`meta` module': ['lib/ansible/modules/utilities/helper/meta.py'],\n            #'`meta` module': [u'lib/ansible/modules/utilities/helper/meta.py'],\n            '`mysql_user` module': ['lib/ansible/modules/database/mysql/mysql_user.py'],\n            #u'`s3` module': [u'lib/ansible/modules/cloud/amazon/_s3.py'],\n            '`user` module': ['lib/ansible/modules/system/user.py'],\n            'the \"user\" module': ['lib/ansible/modules/system/user.py'],\n            '`ansible_module_ec2_ami_copy.py`': ['lib/ansible/modules/cloud/amazon/ec2_ami_copy.py'],\n            'module: `include_vars `': ['lib/ansible/modules/utilities/logic/include_vars.py'],\n            'rabbitmq_plugin  module': ['lib/ansible/modules/messaging/rabbitmq/rabbitmq_plugin.py'],\n            #'F5 bigip (bigip_selfip)': [u'lib/ansible/modules/network/f5/bigip_selfip.py'],\n            #u'module: `vsphere_guest`': [u'lib/ansible/modules/cloud/vmware/_vsphere_guest.py'],\n            #u'module: `vsphere_guest`': [\n            #    u'lib/ansible/modules/cloud/vmware/vsphere_copy.py'\n            #    u'lib/ansible/modules/cloud/vmware/vsphere_file.py',\n            #],\n            'Add to vmware_guest module, Clone to Virtual Machine task': [\n                'lib/ansible/modules/cloud/vmware/vmware_guest.py'\n            ],\n            'Jinja2 includes in ansible template module': [\n                'lib/ansible/modules/files/template.py'\n            ],\n            ': ec2_vpc_route_table module': [\n                'lib/ansible/modules/cloud/amazon/ec2_vpc_route_table.py'\n            ],\n            'copy shell  modules': [\n                'lib/ansible/modules/files/copy.py',\n                'lib/ansible/modules/commands/shell.py'\n            ],\n            #u':\\ndocker.py': [\n            #    u'lib/ansible/modules/cloud/docker/_docker.py'\n            #],\n            #u': s3 module': [\n            #    u'lib/ansible/modules/cloud/amazon/_s3.py'\n            #],\n            'The new ldap_attr module.': [\n                'lib/ansible/modules/net_tools/ldap/_ldap_attr.py'\n            ],\n            '- Ansible Core/Cisco ios_command module': [\n                'lib/ansible/modules/network/ios/ios_command.py'\n            ]\n        }\n\n        #COMPONENTS = {\n        #    '- Ansible Core/Cisco ios_command module': [\n        #        'lib/ansible/modules/network/ios/ios_command.py'\n        #    ]\n        #}\n\n        for COMPONENT,EXPECTED in COMPONENTS.items():\n            res = self.component_matcher.search_by_regex_modules(COMPONENT)\n            self.assertEqual(EXPECTED, res)\n\n    # FIXME\n    # [2873] ec2_asg (AWS EC2 auto scaling groups)\n    # [2998] junos_command (but not only !)\n    # [3531] lib/ansible/modules/storage/netapp/sf_volume-manager.py\n    # [3739] tower_job_list module but I believe that also the other tower_* module have the same error\n    # [4039] netapp_e_storagepool storage module\n    # [4774] azure_rm_deployment (although azure_rm_common seems to be at work here)\n\n\nclass TestComponentMatcherInheritance(TestCase):\n\n    @classmethod\n    def setUpClass(cls):\n        \"\"\"Init the matcher\"\"\"\n        cachedir = tempfile.mkdtemp()\n        gitrepo = GitShallowRepo(cachedir=cachedir, repo='https://github.com/ansible/ansible')\n        gitrepo.update()\n\n        cls.component_matcher = ComponentMatcher(email_cache={}, gitrepo=gitrepo, use_galaxy=False)\n\n    @classmethod\n    def tearDownClass(cls):\n        \"\"\"suppress temp dir\"\"\"\n        shutil.rmtree(cls.component_matcher.gitrepo.checkoutdir)\n\n    def test_get_meta_for_known_file(self):\n        self.component_matcher.botmeta = {\n            'files': {\n                'foo': {\n                    'ignored': ['foo_ignored'],\n                    'supershipit': ['foo_supershipit'],\n                    'maintainers': ['foo_maintainer'],\n                },\n                'foo/bar': {\n                    'ignored': ['bar_ignored'],\n                    'supershipit': ['bar_supershipit'],\n                    'maintainers': ['bar_maintainer'],\n                },\n                'foo/bar/baz.py': {\n                    'ignored': ['baz_ignored'],\n                    'supershipit': ['baz_supershipit'],\n                    'maintainers': ['baz_maintainer'],\n                    'support': 'community'\n                },\n            }\n        }\n\n        # send in a file that is known\n        result = self.component_matcher.get_meta_for_file('foo/bar/baz.py')\n\n        # make sure everything inherited\n        keys = ['ignored', 'maintainer', 'supershipit']\n        names = ['bar', 'baz', 'foo']\n        for key in keys:\n            expected = [x + '_' + key for x in names]\n\n            if key == 'ignored':\n                key = 'ignore'\n            if key == 'maintainer':\n                key = 'maintainers'\n\n            assert sorted(result[key]) == sorted(expected)\n\n        # make sure the support level is preserved\n        assert result['support'] == 'community'\n\n    def test_get_meta_for_unknown_extension(self):\n        self.component_matcher.botmeta = {\n            'files': {\n                'foo': {\n                    'ignored': ['foo_ignored'],\n                    'supershipit': ['foo_supershipit'],\n                    'maintainers': ['foo_maintainer'],\n                },\n                'foo/bar': {\n                    'ignored': ['bar_ignored'],\n                    'supershipit': ['bar_supershipit'],\n                    'maintainers': ['bar_maintainer'],\n                },\n                'foo/bar/baz': {\n                    'ignored': ['baz_ignored'],\n                    'supershipit': ['baz_supershipit'],\n                    'maintainers': ['baz_maintainer'],\n                    'support': 'community'\n                },\n            }\n        }\n\n        # send in a file that matches a prefix, but has an unknown extension\n        result = self.component_matcher.get_meta_for_file('foo/bar/baz.psx')\n\n        # make sure everything inherited\n        keys = ['ignored', 'maintainer', 'supershipit']\n        names = ['bar', 'baz', 'foo']\n        for key in keys:\n            expected = [x + '_' + key for x in names]\n\n            if key == 'ignored':\n                key = 'ignore'\n            if key == 'maintainer':\n                key = 'maintainers'\n\n            assert sorted(result[key]) == sorted(expected)\n\n        # make sure the support level is applied\n        assert result['support'] == 'community'\n\n    def test_get_meta_support_inheritance(self):\n        self.component_matcher.botmeta = {\n            'files': {\n                'foo': {\n                    'ignored': ['foo_ignored'],\n                    'supershipit': ['foo_supershipit'],\n                    'maintainers': ['foo_maintainer'],\n                },\n                'foo/bar': {\n                    'ignored': ['bar_ignored'],\n                    'supershipit': ['bar_supershipit'],\n                    'maintainers': ['bar_maintainer'],\n                },\n                'foo/bar/baz': {\n                    'ignored': ['baz_ignored'],\n                    'supershipit': ['baz_supershipit'],\n                    'maintainers': ['baz_maintainer'],\n                    'support': 'core'\n                },\n            }\n        }\n\n        # send in a file that matches a prefix, but has an unknown extension\n        result = self.component_matcher.get_meta_for_file('foo/bar/baz.psx')\n\n        # make sure the support level is applied\n        assert result['support'] == 'core'\n"
  },
  {
    "path": "tests/unit/utils/test_extractors_pr_number.py",
    "content": "import pytest\n\nfrom ansibullbot.utils.extractors import extract_pr_number_from_comment\n\n\n@pytest.mark.parametrize('test_input,expected', [\n    ('resolved_by_pr 5136', 5136),\n    ('resolved_by_pr: 5136', 5136),\n    ('resolved_by_pr #5136', 5136),\n    ('resolved_by_pr: #5136', 5136),\n    ('resolved_by_pr https://github.com/ansible/ansible/issues/5136', 5136),\n    ('resolved_by_pr: https://github.com/ansible/ansible/issues/5136', 5136),\n    ('resolved_by_pr:', None),\n    ('resolved_by_pr', None),\n    ('resolved_by_pr XXXX', None),\n    ('resolved_by_pr: XXXX', None),\n    ('resolved_by_pr https://github.com/ansible/ansible/issues/', None),\n    ('resolved_by_pr: https://github.com/ansible/ansible/issues/', None),\n    ('resolved_by_pr https://github.com/ansible/ansible/issues/X', None),\n    ('resolved_by_pr: https://github.com/ansible/ansible/issues/X', None),\n])\ndef test_extract_pr_number_from_comment(test_input, expected):\n    assert extract_pr_number_from_comment(test_input) == expected\n"
  },
  {
    "path": "tests/unit/utils/test_githubid_extractor.py",
    "content": "import unittest\n\nfrom ansibullbot.utils.extractors import ModuleExtractor\n\n\nclass TestGitHubIdExtractor(unittest.TestCase):\n    def test_extract(self):\n        ME = ModuleExtractor('')\n        authors = [\n            (None, []),  # Testing for None, which should return an empty list,\n            ('#- \"Hai Cao <t-haicao@microsoft.com>\"', []),  # Commented out author line should return an empty list\n            ('First-Name Last (@k0-mIg)', ['k0-mIg']),  # expected format\n            ('Ansible Core Team', ['ansible']),  # special case\n            ('Ansible core Team', ['ansible']),  # special case\n            ('First Last (@firstlast) 2016, Another Last (@another) 2014', ['firstlast', 'another']),  # multiple ids\n            ('First Last @ Corp Team (@first-corp, @corp-team, @user)',['first-corp', 'corp-team', 'user']),  # multiple ids\n            ('First Last @github', ['github']),  # without parentheses\n            ('First Last (github)', ['github']),  # without at sign\n            ('First Last (github.com/Github)', ['Github']),  # prefixed\n        ]\n\n        for line, githubids in authors:\n            self.assertEqual(set(githubids), set(ME.extract_github_id(line)))\n\n    def test_notfound(self):\n        ME = ModuleExtractor('')\n        authors = [\n            'firstname lastname',\n            'First Last (name@domain.example)',\n        ]\n\n        for line in authors:\n            self.assertFalse(ME.extract_github_id(line))\n\n    def test_extract_email(self):\n        ME = ModuleExtractor(\n            '',\n            email_cache={\n                'first@last.example': 'github',\n                'last@domain.example': 'github2',\n            }\n        )\n\n        authors = [\n            ('First-Name Last (first@last.example)', ['github']),  # known email\n            ('First-Name Last <first@last.example>', ['github']),  # known email\n            ('First-Name Last (first@last.example), Surname Name (last@domain.example)', ['github', 'github2']),  # known emails\n            ('First-Name Last <first@last.example>, Surname Name <last@domain.example>', ['github', 'github2'])\n        ]\n\n        for line, githubids in authors:\n            self.assertEqual(set(githubids), set(ME.extract_github_id(line)))\n"
  },
  {
    "path": "tests/unit/utils/test_sqlite_tools.py",
    "content": "import os\nimport tempfile\n\nfrom unittest import mock\n\nfrom ansibullbot.utils.sqlite_utils import AnsibullbotDatabase\n\n\ndef test_db_file_endswith_version():\n\n    with tempfile.TemporaryDirectory() as cachedir:\n        unc = 'sqlite:///' + cachedir + '/test.db'\n\n        with mock.patch('ansibullbot.utils.sqlite_utils.C.DEFAULT_DATABASE_UNC', unc):\n\n            ADB = AnsibullbotDatabase(cachedir=cachedir)\n\n            print(ADB.unc)\n            assert ADB.unc.endswith('_' + ADB.VERSION)\n\n\ndef test_db_file_corrupted():\n\n    with tempfile.TemporaryDirectory() as cachedir:\n        unc = 'sqlite:///' + cachedir + '/test.db'\n\n        with mock.patch('ansibullbot.utils.sqlite_utils.C.DEFAULT_DATABASE_UNC', unc):\n\n            # create the initial file\n            ADB1 = AnsibullbotDatabase(cachedir=cachedir)\n            unc_file = ADB1.unc\n            unc_file = unc_file.replace('sqlite:///', '')\n            with open(unc_file, 'w') as f:\n                f.write('NULLNULLNULLNULL')\n\n            # now try to init again\n            ADB2 = AnsibullbotDatabase(cachedir=cachedir)\n\n            assert os.path.exists(ADB2.dbfile)\n\n\ndef test_set_and_get_rate_limit():\n\n    with tempfile.TemporaryDirectory() as cachedir:\n        unc = 'sqlite:///' + cachedir + '/test.db'\n\n        with mock.patch('ansibullbot.utils.sqlite_utils.C.DEFAULT_DATABASE_UNC', unc):\n\n            ADB = AnsibullbotDatabase(cachedir=cachedir)\n\n            rl = {\n                'resources': {\n                    'core': {\n                        'limit': 5000,\n                        'remaining': 5000\n                    }\n                }\n            }\n\n            ADB.set_rate_limit(username='bob', token='abcd1234', rawjson=rl)\n            remaining = ADB.get_rate_limit_remaining(username='bob', token='abcd1234')\n            rl2 = ADB.get_rate_limit_rawjson(username='bob', token='abcd1234')\n            counter = ADB.get_rate_limit_query_counter(username='bob', token='abcd1234')\n\n            assert remaining == 5000\n            assert rl == rl2\n            assert counter == 2\n"
  },
  {
    "path": "tests/unit/utils/test_template_extractor.py",
    "content": "import unittest\nfrom ansibullbot.utils.extractors import extract_template_data\n\n\nclass TestTemplateExtraction(unittest.TestCase):\n    def test_0(self):\n        body = [\n            '#### ONE',\n            'section one',\n            '#### TWO',\n            'section two',\n            '#### THREE',\n            'section three'\n        ]\n        body = '\\r\\n'.join(body)\n        issue_class = 'issue'\n        sections = ['ONE', 'TWO', 'THREE']\n        tdata = extract_template_data(\n            body, issue_class=issue_class, sections=sections\n        )\n        assert tdata.get('one') == 'section one'\n        assert tdata.get('two') == 'section two'\n        assert tdata.get('three') == 'section three'\n\n    def test_1(self):\n        body = [\n            '#### ISSUE TYPE',\n            '- Bug Report',\n            '#### COMPONENT NAME',\n            'widget module',\n            '#### ANSIBLE VERSION',\n            '1.9.x'\n            '#### SUMMARY',\n            'the widget module does not work for me!!!'\n        ]\n        body = '\\r\\n'.join(body)\n        issue_class = 'issue'\n        sections = ['ISSUE TYPE', 'COMPONENT NAME', 'ANSIBLE VERSION', 'SUMMARY']\n        tdata = extract_template_data(\n            body, issue_class=issue_class, sections=sections\n        )\n        assert tdata.get('ansible version') == '1.9.x'\n        assert tdata.get('issue type') == 'bug report'\n        assert tdata.get('component name') == 'widget'\n        assert tdata.get('component_raw') == 'widget module'\n        assert tdata.get('summary') == 'the widget module does not work for me!!!'\n\n    def test_2(self):\n        body = [\n            '*** issue type ***:',\n            '- Bug Report',\n            '*** component name ***:',\n            'widget module',\n            '*** ansible version ***:',\n            '1.9.x'\n            '*** summary ***:',\n            'the widget module does not work for me!!!'\n        ]\n        body = '\\r\\n'.join(body)\n        issue_class = 'issue'\n        sections = ['ISSUE TYPE', 'COMPONENT NAME', 'ANSIBLE VERSION', 'SUMMARY']\n        tdata = extract_template_data(\n            body, issue_class=issue_class, sections=sections\n        )\n        assert tdata.get('ansible version') == '1.9.x'\n        assert tdata.get('issue type') == 'bug report'\n        assert tdata.get('component name') == 'widget'\n        assert tdata.get('component_raw') == 'widget module'\n        assert tdata.get('summary') == 'the widget module does not work for me!!!'\n\n    # https://github.com/ansible/ansibullbot/issues/359\n    def test_3(self):\n        body = [\n            '#### ISSUE TYPE',\n            '- Bug Report',\n            '#### COMPONENT NAME',\n            'widget, thingamajig',\n            '#### ANSIBLE VERSION',\n            '1.9.x'\n            '#### SUMMARY',\n            'the widget AND thingamig modules are broken!!!'\n        ]\n        body = '\\r\\n'.join(body)\n        issue_class = 'issue'\n        sections = ['ISSUE TYPE', 'COMPONENT NAME', 'ANSIBLE VERSION', 'SUMMARY']\n        tdata = extract_template_data(\n            body, issue_class=issue_class, sections=sections\n        )\n        assert tdata.get('ansible version') == '1.9.x'\n        assert tdata.get('issue type') == 'bug report'\n        assert tdata.get('component name') == 'widget'\n        assert tdata.get('component_raw') == 'widget, thingamajig'\n        assert tdata.get('summary') == 'the widget AND thingamig modules are broken!!!'\n\n    # https://github.com/ansible/ansibullbot/issues/385\n    def test_4(self):\n        body = [\n            '#### ISSUE TYPE',\n            '- Feature Idea',\n            '#### COMPONENT NAME',\n            'Modules openssl_privatekey and openssl_publickey',\n            '#### ANSIBLE VERSION',\n            '```',\n            'ansible 2.2.1.0',\n            '  config file = /home/kellerfuchs/hashbang/admin-tools/ansible.cfg',\n            '  configured module search path = Default w/o overrides',\n            '```',\n            '#### SUMMARY',\n            'the widget AND thingamig modules are broken!!!'\n        ]\n        body = '\\r\\n'.join(body)\n        issue_class = 'issue'\n        sections = ['ISSUE TYPE', 'COMPONENT NAME', 'ANSIBLE VERSION', 'SUMMARY']\n        tdata = extract_template_data(\n            body, issue_class=issue_class, sections=sections\n        )\n\n        #import epdb; epdb.st()\n        assert tdata.get('ansible version').split('\\n')[0] == 'ansible 2.2.1.0'\n        assert tdata.get('issue type') == 'feature idea'\n        assert tdata.get('component name') == 'openssl_privatekey'\n        assert tdata.get('component_raw') == 'Modules openssl_privatekey and openssl_publickey'\n        assert tdata.get('summary') == 'the widget AND thingamig modules are broken!!!'\n\n\n    # Test optional Markdown header syntax\n    def test_5(self):\n        body = [\n            '#### ISSUE TYPE ####',\n            '- Bug Report',\n            '#### COMPONENT NAME ####',\n            'widget, thingamajig',\n            '#### ANSIBLE VERSION ####',\n            '1.9.x'\n            '#### SUMMARY ####',\n            'the widget AND thingamig modules are broken!!!'\n        ]\n        body = '\\r\\n'.join(body)\n        issue_class = 'issue'\n        sections = ['ISSUE TYPE', 'COMPONENT NAME', 'ANSIBLE VERSION', 'SUMMARY']\n        tdata = extract_template_data(\n            body, issue_class=issue_class, sections=sections\n        )\n        assert tdata.get('ansible version') == '1.9.x'\n        assert tdata.get('issue type') == 'bug report'\n        assert tdata.get('component name') == 'widget'\n        assert tdata.get('component_raw') == 'widget, thingamajig'\n        assert tdata.get('summary') == 'the widget AND thingamig modules are broken!!!'\n"
  },
  {
    "path": "tests/unit/utils/test_template_extractor_simple.py",
    "content": "import unittest\nfrom ansibullbot.utils.extractors import extract_template_data\n\n\nclass TestTemplateExtractionSimple(unittest.TestCase):\n\n    def test_generic_template_with_no_input_sections(self):\n\n        # https://github.com/ansible/ansibullbot/issues/1163\n\n        body = [\n            '<!--- Verify first that your feature was not already discussed on GitHub -->',\n            '<!--- Complete *all* sections as described, this form is processed automatically -->',\n            '',\n            '##### SUMMARY',\n            '<!--- Describe the new feature/improvement briefly below -->',\n            'I was using vcenter_license to apply a license to ESXi hosts. Since the last commit on Jan 10, 2019, that module only supports licensing a vCenter. Add support for ESXi licensing',\n            '##### ISSUE TYPE',\n            '- Feature Idea',\n            '',\n            '##### COMPONENT NAME',\n            'vcenter_license ',\n            'or ',\n            'vmware_host',\n            '',\n            '##### ADDITIONAL INFORMATION',\n            '<!--- Describe how the feature would be used, why it is needed and what it would solve -->',\n            '',\n            '<!--- Paste example playbooks or commands between quotes below -->',\n            '```yaml',\n            '',\n            '```',\n            '',\n            '<!--- HINT: You can also paste gist.github.com links for larger files -->',\n            ''\n        ]\n        body = '\\r\\n'.join(body)\n        tdata = extract_template_data(body)\n\n        assert 'component name' in tdata\n        assert tdata['component name'] == 'vcenter_license'\n        assert 'component_raw' in tdata\n        assert tdata['component_raw'] == 'vcenter_license\\nor\\nvmware_host'\n        assert 'issue type' in tdata\n        assert tdata['issue type'] == 'feature idea'\n        assert 'summary' in tdata\n        assert 'additional information' in tdata\n"
  },
  {
    "path": "tests/unit/utils/test_time_tools.py",
    "content": "import pytest\n\nfrom unittest import TestCase\nfrom ansibullbot.utils.timetools import strip_time_safely\n\n\nclass TestTimeStrip(TestCase):\n\n    def test_strip_one(self):\n        ts = '2017-06-01T17:54:00Z'\n        to = strip_time_safely(ts)\n        assert to.year == 2017\n        assert to.month == 6\n        assert to.day == 1\n\n    def test_strip_two(self):\n        ts = '2017-06-01T17:54:00.000'\n        to = strip_time_safely(ts)\n        assert to.year == 2017\n        assert to.month == 6\n        assert to.day == 1\n\n    def test_strip_three(self):\n        ts = '2017-06-01T17:54:00Z'\n        to = strip_time_safely(ts)\n        assert to.year == 2017\n        assert to.month == 6\n        assert to.day == 1\n\n    def test_strip_four(self):\n        ts = '2017-06-01T17:54:00ZDSFSDFDFSDFS'\n        with pytest.raises(Exception):\n            to = strip_time_safely(ts)\n"
  },
  {
    "path": "tests/unit/wrappers/__init__.py",
    "content": ""
  },
  {
    "path": "tests/unit/wrappers/test_history_wrapper.py",
    "content": "import datetime\nimport tempfile\n\nimport pytest\n\nfrom ansibullbot.historywrapper import HistoryWrapper\n\n\ndef test_get_component_commands():\n    events = [\n        {\n            'id': 1,\n            'actor': 'jimi-c',\n            'body': '!component =lib/ansible/unicorns',\n            'event': 'commented',\n            'created_at': datetime.datetime.utcnow(),\n        }\n    ]\n\n    cachedir = tempfile.mkdtemp()\n    hw = HistoryWrapper(events, [], datetime.datetime.utcnow(), cachedir=cachedir, usecache=False)\n    hw.BOTNAMES = []\n\n    events = hw._find_events_by_actor('commented', None)\n    ccommands = hw.get_component_commands()\n\n    assert len(events) > 0\n    assert len(ccommands) > 0\n\n\ndef test_get_no_component_commands():\n    events = [\n        {\n            'id': 1,\n            'actor': 'jimi-c',\n            'body': 'unicorns are awesome',\n            'event': 'commented',\n            'created_at': datetime.datetime.utcnow(),\n        }\n    ]\n\n    cachedir = tempfile.mkdtemp()\n    hw = HistoryWrapper(events, [], datetime.datetime.utcnow(), cachedir=cachedir, usecache=False)\n    hw.BOTNAMES = []\n\n    events = hw._find_events_by_actor('commented', None)\n    ccommands = hw.get_component_commands()\n\n    assert len(events) == 1\n    assert len(ccommands) == 0\n\n\n@pytest.mark.skip(reason=\"FIXME\")\ndef test_ignore_events_without_dates_on_last_methods():\n    \"\"\"With the addition of timeline events, we have a lot\n    of missing keys that we would normally get from the \n    events endpoint. This test asserts that the historywrapper\n    filters those timeline events out when the necessary\n    keys are missing.\"\"\"\n\n    events = [\n        {'event': 'labeled', 'created_at': datetime.datetime.utcnow(), 'actor': 'bcoca', 'label': 'needs_info'},\n        {'event': 'labeled', 'created_at': datetime.datetime.utcnow(), 'actor': 'bcoca', 'label': 'needs_info'},\n\n        {'event': 'comment', 'created_at': datetime.datetime.utcnow(), 'actor': 'ansibot', 'body': 'foobar\\n<!--- boilerplate: needs_info --->'},\n        {'event': 'comment', 'actor': 'ansibot', 'body': 'foobar\\n<!--- boilerplate: needs_info --->'},\n        {'event': 'labeled', 'created_at': datetime.datetime.utcnow(), 'actor': 'ansibot', 'label': 'needs_info'},\n        {'event': 'labeled', 'actor': 'ansibot', 'label': 'needs_info'},\n        {'event': 'comment', 'created_at': datetime.datetime.utcnow(), 'actor': 'jimi-c', 'body': 'unicorns are awesome'},\n        {'event': 'comment', 'actor': 'jimi-c', 'body': 'unicorns are awesome'},\n        {'event': 'unlabeled', 'created_at': datetime.datetime.utcnow(), 'actor': 'ansibot', 'label': 'needs_info'},\n        {'event': 'unlabeled', 'actor': 'ansibot', 'label': 'needs_info'},\n    ]\n\n    cachedir = tempfile.mkdtemp()\n    hw = HistoryWrapper(events, [], datetime.datetime.utcnow(), cachedir=cachedir, usecache=False)\n    hw.BOTNAMES = ['ansibot']\n\n    res = []\n    res.append(hw.label_last_applied('needs_info'))\n    res.append(hw.label_last_removed('needs_info'))\n    res.append(hw.last_date_for_boilerplate('needs_info'))\n    res.append(hw.was_labeled('needs_info'))\n    res.append(hw.was_unlabeled('needs_info'))\n\n    assert not [x for x in res if x is None]\n"
  },
  {
    "path": "tests/utils/__init__.py",
    "content": ""
  },
  {
    "path": "tests/utils/componentmocks.py",
    "content": "import datetime\nimport json\nimport os\nimport shutil\nimport subprocess\nimport tempfile\nimport uuid\n\nfrom unittest.mock import patch\nfrom urllib.parse import urlparse\n\n# reaction\n#   * content '+1'\n#   * id\n#   * node_id\n#   * user\n#       * url\n#       * login\n\n# timeline\n#   commented\n#       * actor\n#       * author_association\n#       * body\n#       * created_at\n#       * event\n#       * html_url\n#       * id\n#       * issue_url\n#       * node_id\n#       * updated_at\n#       * url\n#       * user\n#   committed\n#       * author\n#       * comitter\n#       * event\n#       * html_url\n#       * message\n#       * node_id\n#       * parents\n#       * sha\n#       * tree\n#       * url\n#       * verification\n#   cross-referenced\n#       * source\n#           issue\n#               raw_data\n#           type: issue|?\n#       * created_at\n#       * updated_at\n#       * actor\n#       * event\n#   head_ref_force_pushed\n#       * actor\n#       * commit_id\n#       * commit_url\n#       * created_at\n#       * event\n#       * id\n#       * node_id\n#       * url\n#   labeled\n#       * actor\n#       * commit_id\n#       * commit_url\n#       * created_at\n#       * event\n#       * id\n#       * label\n#       * node_id\n#       * url\n#   mentioned\n#       * actor\n#       * commit_id\n#       * commit_url\n#       * created_at\n#       * event\n#       * id\n#       * label\n#       * node_id\n#       * url\n#   reviewed\n#       * _links\n#       * author_association\n#       * body\n#       * commit_id\n#       * event\n#       * html_url\n#       * id\n#       * node_id\n#       * pull_request_url\n#       * state\n#       * submitted_at\n#       * user\n#   subscribed\n#       * commit_id\n#       * commit_url\n#       * url\n#       * created_at\n#       * actor\n#       * id\n#       * node_id\n#       * event\n#   unlabeled\n#       * actor\n#       * commit_id\n#       * commit_url\n#       * created_at\n#       * event\n#       * id\n#       * label\n#       * node_id\n#       * url\n\n\ndef get_timestamp():\n    return datetime.datetime.now(datetime.timezone.utc).isoformat().split('.')[0] + 'Z'\n\n\ndef get_custom_timestamp(months=-1, days=-1):\n    today = datetime.datetime.today()\n    td = (months * 30) + (days)\n    newts = today - datetime.timedelta(days=(-1 * td))\n    rts = newts.isoformat().split('.')[0] + 'Z'\n    return rts\n\n\ndef unquote(string):\n\n    # 'support%3Acore' -> support:core\n\n    if '%3A' not in string:\n        return string\n\n    res = urlparse(string)\n\n    if hasattr(res, 'path'):\n        res = res.path\n\n    return res\n\n\nclass IssueDatabase:\n\n    eventids = set()\n    issues = []\n\n    teams = {\n        'ansible-commit': ['jack', 'jill'],\n        'ansible-community': ['bob', 'billy'],\n    }\n\n    def __init__(self, cachedir):\n        self.cachedir = cachedir\n        if not os.path.exists(self.cachedir):\n            os.makedirs(self.cachedir)\n        self.debug = False\n        self.eventids = set()\n        self.issues = []\n\n        self.load_cache()\n\n    def load_cache(self):\n        cachefile = os.path.join(self.cachedir, 'issuedb.json')\n        if not os.path.exists(cachefile):\n            return\n\n        with open(cachefile) as f:\n            cachedata = json.loads(f.read())\n\n        self.issues = cachedata['issues'][:]\n        self.eventids = set(cachedata['eventids'][:])\n\n        print('### ISSUEDB CACHE LOADED %s' % cachefile)\n\n    def save_cache(self):\n        cachefile = os.path.join(self.cachedir, 'issuedb.json')\n        with open(cachefile, 'w') as f:\n            f.write(json.dumps({\n                'issues': self.issues[:],\n                'eventids': list(self.eventids)\n            }))\n\n        print('### ISSUEDB CACHE SAVED %s' % cachefile)\n\n\n    def get_url(self, url, method=None, headers=None, data=None):\n\n        # workaround for changing object refs\n        self.load_cache()\n\n        if self.debug:\n            print('#########################################')\n            print('# issuedb %s' % id(self))\n            print('# %s' % method or 'GET')\n            print('# %s' % url)\n            print('# %s' % headers)\n            print('# %s' % data)\n            print('#########################################')\n        else:\n            print('# %s %s' % (method or 'GET', url))\n\n        rheaders = {\n            'Date': datetime.datetime.now().isoformat(),\n            'ETag': str(uuid.uuid4()),\n            'Last-Modified': datetime.datetime.now().isoformat()\n        }\n        rdata = None\n\n        parts = url.split('/')\n\n        if method == 'PUT':\n\n            if parts[-1] == 'merge':\n                org = parts[4]\n                repo = parts[5]\n                number = int(parts[7])\n                rdata = self.merge_pull(org=org, repo=repo, number=number, data=data)\n            else:\n                import epdb; epdb.st()\n\n        elif method == 'POST':\n            if url.endswith('/graphql'):\n                rdata = self.graphql_response(data)\n            elif parts[-1] == 'comments':\n                org = parts[4]\n                repo = parts[5]\n                number = int(parts[7])\n                #import epdb; epdb.st()\n                jdata = json.loads(data)\n                self.add_issue_comment(jdata['body'], org=org, repo=repo, number=number)\n                rdata = {}\n            elif parts[-1] == 'labels':\n                org = parts[4]\n                repo = parts[5]\n                number = int(parts[7])\n                labels = json.loads(data)\n                for label in labels:\n                    self.add_issue_label(label, org=org, repo=repo, number=number)\n                rdata = {}\n            else:\n                import epdb; epdb.st()\n\n        elif method == 'DELETE':\n            if parts[-2] == 'labels':\n                org = parts[4]\n                repo = parts[5]\n                number = int(parts[7])\n                lname = parts[-1]\n                self.remove_issue_label(lname, org=org, repo=repo, number=number)\n                rdata = {}\n            else:\n                import epdb; epdb.st()\n\n        else:\n            if 'api.shippable.com' in url:\n                rdata = self.shippable_response(url)\n            elif url.endswith('repos/ansible/ansible'):\n                rdata = self._get_repo('ansible/ansible')\n            elif url.endswith('repos/ansible/ansible-azp'):\n                rdata = self._get_repo('ansible/ansible-azp')\n            elif url.endswith('repos/ansible/ansible/labels'):\n                rdata = []\n\n            elif parts[-2] == 'issues':\n                org = parts[-4]\n                repo = parts[-3]\n                number = int(parts[-1])\n                issue = self.get_issue(org=org, repo=repo, number=number)\n                rdata = self.get_raw_data(issue)\n\n            elif parts[-2] == 'pulls':\n                org = parts[-4]\n                repo = parts[-3]\n                number = int(parts[-1])\n                issue = self.get_issue(org=org, repo=repo, number=number)\n                rdata = self.get_raw_data(issue, schema='pull')\n                #import epdb; epdb.st()\n\n            elif parts[-2] == 'comments':\n                org = parts[-4]\n                repo = parts[-3]\n                commentid = int(parts[-1])\n                rdata = self.get_comment(org=org, repo=repo, commentid=commentid)\n\n            elif parts[-1] in ['comments']:\n                org = parts[4]\n                repo = parts[5]\n                number = int(parts[-2])\n                issue = self.get_issue(org=org, repo=repo, number=number)\n                comments = issue.get('comments', [])[:]\n                rdata = []\n                for comment in comments:\n                    data = comment.copy()\n                    data['updated_at'] = data['created_at']\n                    rdata.append(data)\n\n            elif parts[-1] in ['events']:\n                org = parts[4]\n                repo = parts[5]\n                number = int(parts[-2])\n                issue = self.get_issue(org=org, repo=repo, number=number)\n                events = issue.get('events', [])[:]\n                rdata = []\n                for event in events:\n                    data = event.copy()\n                    data['updated_at'] = data['created_at']\n                    rdata.append(data)\n\n            elif parts[-1] in ['timeline']:\n                org = parts[4]\n                repo = parts[5]\n                number = int(parts[-2])\n                issue = self.get_issue(org=org, repo=repo, number=number)\n                events = issue.get('timeline', [])[:]\n                rdata = []\n                for event in events:\n                    data = event.copy()\n                    #data['updated_at'] = data['created_at']\n                    rdata.append(data)\n\n                #import epdb; epdb.st()\n                #rdata = []\n\n            elif parts[-1] in ['reactions']:\n                org = parts[4]\n                repo = parts[5]\n                number = int(parts[-2])\n                rdata = self.get_issue_property('reactions', org=org, repo=repo, number=number)\n\n            elif parts[-1] == 'assignees':\n                rdata = []\n\n            elif parts[-1] == 'members':\n                rdata = []\n                rdata = self._get_members()\n\n            elif parts[-1] == 'teams':\n                rdata = self._get_teams()\n\n            elif parts[-2] == 'events':\n                number = int(parts[-1])\n                for issue in self.issues:\n                    for event in issue['events']:\n                        if event['id'] == number:\n                            rdata = event.copy()\n                            break\n                if rdata:\n\n                    for k,v in rdata.items():\n                        if k.endswith('_at') and isinstance(v, datetime.datetime):\n                            rdata[k] = v.isoformat().split('.')[0] + 'Z'\n\n            elif parts[-2] == 'orgs':\n                org = parts[-1]\n                rdata = {\n                    'id': 1000,\n                    'node_id': 1000,\n                    'updated_at': get_timestamp(),\n                    'url': url.replace(':443', ''),\n                    'name': org.title(),\n                    'login': org,\n                    'members_url': 'https://api.github.com/orgs/%s/members{/member}' % org\n                }\n\n\n            elif parts[-2] == 'assignees':\n                login = parts[-1]\n                rdata = {\n                    'id': 1000,\n                    'node_id': 1000,\n                    'login': login,\n                    'url': 'https://api.github.com/users/%s' % login,\n                    'type': 'User',\n                    'site_admin': False\n                }\n\n            elif parts[-1] == 'reviews':\n                rdata = []\n\n            elif parts[-1] == 'commits':\n                org = parts[4]\n                repo = parts[5]\n                number = int(parts[-2])\n                rdata = self.get_commits(org=org, repo=repo, number=number)\n\n            elif parts[-2] == 'commits':\n                org = parts[4]\n                repo = parts[5]\n                chash = parts[-1]\n\n                # ansible/ansible/commits/xxxx\n                # ansible/ansible/git/commits/xxxx\n\n                if parts[-3] != 'git':\n                    rdata = self.get_commit(org=org, repo=repo, chash=chash)\n                else:\n                    rdata = self.get_git_commit(org=org, repo=repo, chash=chash)\n                    #import epdb; epdb.st()\n\n            elif parts[-1] == 'files':\n                org = parts[4]\n                repo = parts[5]\n                number = int(parts[-2])\n                rdata = self.get_files(org=org, repo=repo, number=number)\n\n            elif parts[6] == 'contents':\n                # https://api.github.com:443/repos/profleonard/ansible/contents/shippable.yml\n                org = parts[4]\n                repo = parts[5]\n                filename = '/'.join(parts[7:])\n                rdata = self.get_file_conent(org=org, repo=repo, filename=filename)\n\n            elif parts[-2] == 'statuses':\n                # https://api.github.com/repos/ansible/ansible/statuses/1f45467df45e7d7a874073f0f4ae21f9c27bebd9\n                org = parts[4]\n                repo = parts[5]\n                sid = parts[-1]\n                rdata = self.get_pull_statuses(org, repo, sid)\n\n            elif parts[-1] == 'file_map':\n                rdata = {}\n\n            elif parts[-2] == 'collections' and parts[-1] == 'list':\n                rdata = {}\n\n        # pause if we don't know how to handle this url+method yet\n        if rdata is None:\n            import epdb; epdb.st()\n            return None\n\n        #if 'labels' in parts and not rdata:\n        #    import epdb; epdb.st()\n\n        if self.debug:\n            print('# %s' % rdata)\n\n        return rheaders,rdata\n\n    def merge_pull(self, org=None, repo=None, number=None, data=None, login=None):\n        ix = self._get_issue_index(org=org, repo=repo, number=number, itype='pull')\n\n        ts = get_timestamp()\n        self.issues[ix]['updated_at'] = ts\n        self.issues[ix]['merged_at'] = ts\n        self.issues[ix]['closed_at'] = ts\n        self.issues[ix]['state'] = 'closed'\n        self.issues[ix]['merged'] = True\n\n        user = {\n            'login': (login or 'ansibot'),\n            'url': 'https://api.github.com/users/%s' % (login or 'ansibot')\n        }\n        self.issues[ix]['closed_by'] = user.copy()\n        self.issues[ix]['merged_by'] = user.copy()\n\n        eid = self._get_new_event_id()\n        event = {\n            'event': 'closed',\n            'actor': user.copy(),\n            'id': eid, \n            'url': 'https://api.github.com/repos/%s/%s/issues/events/%s' % (org, repo, eid),\n            'commit_id': None,\n            'commit_url': None,\n            'created_at': ts\n        }\n        self.issues[ix]['events'].append(event)\n\n        # if resp[0] != 200 or u'successfully merged' not in resp[2]\n        return [None, 'successfully merged']\n\n    def get_pull_statuses(self, org, repo, sid):\n        statuses = []\n        sdata = {\n            'url': 'https://api.github.com/repos/ansible/ansible/statuses/JSTATUS_1',\n            'id': 'JSTATUS_1',\n            'node_id': 'NODEJSTATUS1',\n            'state': 'success',\n            'description': 'Run 1 status is SUCCESS. ',\n            'target_url': 'https://app.shippable.com/github/ansible/ansible/runs/1/summary',\n            'context': 'Shippable',\n            'created_at': get_timestamp(),\n            'updated_at': get_timestamp(),\n            'creator': {\n                'login': 'ansibot'\n            }\n        }\n        statuses.append(sdata)\n        #import epdb; epdb.st()\n        return statuses\n\n    def shippable_response(self, url):\n        # https://api.shippable.com/runs?projectIds=573f79d02a8192902e20e34b&isPullRequest=True --> []\n        if 'api.shippable.com/runs' in url:\n            return []\n\n        return {}\n\n    def graphql_response(self, data):\n\n        # id, url, number, state, createdAt, updatedAt, repository, nameWithOwner\n\n        # query, repository, owner, ansible, issues, states, OPEN, first 100\n        #   id, url, number, state, createdAt, updatedAt, repository/nameWithOwner\n\n        indata = data\n        indata = indata.replace('\\\\n', ' ')\n        indata = indata.replace('\\\\' , ' ')\n        indata = indata.replace('(', ' ')\n        indata = indata.replace(')', ' ')\n        indata = indata.replace('{', ' ')\n        indata = indata.replace('}', ' ')\n        indata = indata.replace('\"', ' ')\n        indata = indata.replace(',', ' ')\n        indata = indata.replace(':', ' ')\n        words = [x.strip() for x in indata.split() if x.strip()]\n\n        rq = {}\n        for idw,word in enumerate(words):\n            if word in ['owner', 'name', 'number']:\n                if word not in rq:\n                    rq[word] = words[idw+1]\n                continue\n            if word == 'pullRequest':\n                rq['pullRequest'] = True\n\n        if 'issue' in words or 'pullRequest' in words:\n            resp = {\n                'data': {\n                    'repository': {\n                    }\n                }\n            }\n\n            known_pulls = [x['number'] for x in self.issues if x['itype'] == 'pull']\n\n            # if querying PRs and the number is not a PR, return None\n            okey = 'issue'\n            if rq.get('pullRequest') and rq['number'] not in known_pulls:\n                okey = 'pullRequest'\n                resp['data']['repository'][okey] = None \n                return resp\n\n            resp['data']['repository'][okey] = {\n                'id': 'xxxxxx',\n                'state': 'open',\n                'number': rq['number'],\n                'createdAt': get_timestamp(), \n                'updatedAt': get_timestamp(),\n                'repository': {'nameWithOwner': rq['owner'] + '/' + rq['name']},\n                'url': 'https://github.com/%s/%s/%s/%s' % (rq['owner'], rq['name'], okey, rq['number'])\n            }\n\n        elif 'pullRequest' in words:\n            resp = None\n\n        elif 'issues' in words or 'pullRequests' in words:\n\n            if 'issues' in words:\n                tkey = 'issues'\n            else:\n                tkey = 'pullRequests'\n\n            resp = {\n                'data': {\n                    'repository': {\n                        tkey: {\n                            'edges': [],\n                            'pageInfo': {\n                                'endCursor': 'abc1234',\n                                'startCursor': 'abc1234',\n                                'hasNextPage': False,\n                                'hasPreviousPage': False\n                            }\n                        }\n                    }\n                }\n            }\n\n            edges = []\n            for idx,x in enumerate(self.issues):\n                if tkey == 'pullRequests' and not x['itype'] == 'pull':\n                    continue\n                edge = {\n                    'node': {\n                        'createdAt': x['created_at'],\n                        'updatedAt': x['updated_at'],\n                        'id': idx,\n                        'number': x['number'],\n                        'state': x['state'].upper(),\n                        'url': x['html_url']\n                    }\n                }\n                edges.append(edge)\n\n            resp['data']['repository'][tkey]['edges'] = edges\n\n        else:\n            print(words)\n            import epdb; epdb.st()\n\n        return resp\n\n    def _get_members(self):\n        data = []\n        members = set()\n        for k,v in self.teams.items():\n            for member in v:\n                members.add(member)\n\n        members = sorted(list(members))\n\n        for idm,member in enumerate(members):\n            data.append({\n                'avatar_url': '',\n                'bio': '',\n                'blog': '',\n                'company': '',\n                'created_at': get_timestamp(),\n                'updated_at': get_timestamp(),\n                'email': 'foo@bar.com',\n                'events_url': 'https://api.github.com/users/%s/events{/privacy}' % member,\n                'followers': 0,\n                'followers_url': 'https://api.github.com/users/%s/followers' % member,\n                'following_url': 'https://api.github.com/users/%s/following{/other_user}' % member,\n                'gists_url': 'https://api.github.com/users/%s/gists{/gist_id}' % member,\n                'gravator\"id': '',\n                'hireable': None,\n                'html_url': 'https://github.com/%s' % member,\n                'id': idm,\n                'location': '',\n                'login': member,\n                'name': member,\n                'node_id': 'NODEM%s' % idm,\n                'organizations_url': 'https://api.github.com/users/%s/orgs' % member,\n                'public_gists': 0,\n                'public_repos': 0,\n                'received_events_url': 'https://api.github.com/users/%s/received_events' % member,\n                'repos_url': 'https://api.github.com/users/%s/repos' % member,\n                'site_admin': False,\n                'starred_url': 'https://api.github.com/users/%s{/owner}{/repo}' % member,\n                'subscriptions_url': 'https://api.github.com/users/%s/subscription' % member,\n                'type': 'User',\n                'url': 'https://api.github.com/users/%s' % member\n            })\n\n        return data\n\n    def _get_teams(self):\n        rdata = []\n        keys = sorted(list(self.teams.keys()))\n        for idk,k in enumerate(keys):\n            v = self.teams[k]\n            team = {\n                'created_at': get_timestamp(),\n                'updated_at': get_timestamp(),\n                'description': '',\n                'id': idk,\n                'members_count': len(v),\n                'members_url': 'https://api.github.com/teams/%s/members{/member}' % idk,\n                'name': k,\n                'node_id': 'NODET%s' % idk,\n                'organization': {},\n                'permission': 'pull',\n                'privacy': 'secret',\n                'repos_count': 1,\n                'repositories_url': 'https://api.github.com/teams/%s/repos' % idk,\n                'slug': '',\n                'url': 'https://api.github.com/teams/%s' % idk\n            }\n            rdata.append(team)\n        return rdata\n\n    def _get_repo(self, repo):\n        ds = {\n            'id': 3638964,\n            'node_id': 'MDEwOlJlcG9zaXRvcnkzNjM4OTY0',\n            'name': 'ansible',\n            'full_name': 'ansible/ansible',\n            'owner': {\n                'url': 'https://api.github.com/users/ansible',\n                'login': 'ansible'\n            },\n            'organization': {\n                'url': 'https://api.github.com/orgs/ansible',\n                'login': 'ansible'\n            },\n            'description': '',\n            'url': 'https://api.github.com/repos/ansible/ansible',\n            'created_at': get_timestamp(),\n            'updated_at': get_timestamp(),\n        }\n        return ds\n\n    def _get_new_issue_id(self):\n        if len(self.issues) == 0:\n            thisid = 1\n        else:\n            thisid = len(list(self.issues)) + 1\n        return thisid\n\n    def _get_new_event_id(self):\n        if len(self.eventids) == 0:\n            thisid = 1\n        else:\n            thisid = list(self.eventids)[-1] + 1\n        self.eventids.add(thisid)\n        return thisid\n\n    def _get_issue_index(self, org=None, repo=None, number=None, itype=None):\n        for idx, x in enumerate(self.issues):\n            if org and x['org'] != org:\n                continue\n            if repo and x['repo'] != repo:\n                continue\n            if number and x['number'] != number:\n                continue\n            if itype and x['itype'] != itype:\n                continue\n\n            return idx\n\n        return None\n\n\n    def get_issue(self, org=None, repo=None, number=None, itype=None):\n        ix = self._get_issue_index(org=org, repo=repo, number=number, itype=itype)\n        if ix is None:\n            return None\n\n        return self.issues[ix].copy()\n\n    def get_issue_property(self, property_name, org=None, repo=None, number=None, itype=None):\n        ix = self._get_issue_index(org=org, repo=repo, number=number, itype=itype)\n        data = self.issues[ix].get(property_name)\n\n        return data\n\n    def get_raw_data(self, issue, schema='issue'):\n        org = issue['url'].split('/')[4]\n        repo = issue['url'].split('/')[5]\n\n        if issue['itype'].startswith('pull'):\n            html_url = 'https://github.com/%s/%s/pull/%s' % (org, repo, issue['number'])\n        else:\n            html_url = 'https://github.com/%s/%s/issues/%s' % (org, repo, issue['number'])\n\n        rdata = {\n            'id': issue.get('id'),\n            'node_id': issue.get('node_id') or 'NODEI%s' % issue.get('id'),\n            'repository_url': 'https://api.github.com/repos/%s/%s' % (org, repo),\n            'labels_url': 'https://api.github.com/repos/%s/%s/issues/%s/labels{/name}' % (org, repo, issue['number']),\n            'comments_url': 'https://api.github.com/repos/%s/%s/issues/%s/events' % (org, repo, issue['number']),\n            'events_url': 'https://api.github.com/repos/%s/%s/issues/%s/events' % (org, repo, issue['number']),\n            'assignee': None,\n            'assignees': [],\n            'state': issue['state'],\n            'title': issue['title'],\n            'body': issue['body'],\n            'comments': len(issue['comments']),\n            'locked': False,\n            'number': issue['number'],\n            'url': issue['url'],\n            'html_url': html_url,\n            'user': {\n                'url': 'https://api.github.com/users/%s' % issue['user']['login'],\n                'login': issue['user']['login']\n            },\n            'labels': list(issue['labels']),\n            'created_at': issue['created_at'],\n            'updated_at': issue['updated_at'],\n            'closed_at': None,\n            'closed_by': None,\n            'author_association': \"NONE\"\n        }\n\n        if schema.lower() in ['pull', 'pullrequest']:\n\n            rdata['url'] = rdata['url'].replace('issues', 'pull')\n            rdata['statuses_url'] = 'https://api.github.com/repos/%s/%s/statuses/PSTATUS_%s' % (issue['org'], issue['repo'], rdata['id'])\n            rdata['commits_url'] = rdata['url'] + '/commits'\n            rdata['comments_url'] = rdata['url'] + '/comments'\n            rdata['review_comments_url'] = rdata['url'] + '/comments'\n            rdata['review_comment_url'] = rdata['url'] + '/comments{/number}'\n            rdata['diff_url'] = rdata['url'] + '.diff'\n            rdata['merged_at'] = None\n            rdata['merge_commit_sha'] = None\n            rdata['merged'] = False\n            rdata['merged_by'] = None\n            rdata['mergeable'] = True\n            rdata['mergeable_state'] = \"clean\"\n            rdata['rebaseable'] = None\n            rdata['requested_reviewers'] = []\n            rdata['requested_teams'] = []\n            rdata['review_comments'] = 0\n            rdata['milestone'] = None\n            rdata['head'] = {}\n            rdata['base'] = {}\n            rdata['_links'] = {}\n            rdata['maintainer_can_modify'] = False\n            # FIXME KeyError rdata['commits'] = len(issue['commits'])\n            rdata['additions'] = 1\n            rdata['deletions'] = 1\n            rdata['changed_files'] = 1\n\n            rdata['head'] = {\n                'label': None,\n                'ref': None,\n                'sha': 'sha1234567890',\n                'user': rdata['user'].copy(),\n                'repo': {\n                    'id': None,\n                    'node_id': 'NODER%s' % (rdata['user']['login'] + repo),\n                    'name': repo,\n                    'full_name': rdata['user']['login'] + '/' + repo,\n                    'url': 'https://api.github.com/repos/%s/%s' % (rdata['user']['login'], repo),\n                    'html_url': 'https://github.com/%s/%s' % (rdata['user']['login'], repo)\n                }\n            }\n\n            rdata['base'] = {\n                'label': '%s:devel' % repo,\n                'ref': 'devel',\n                'sha': 'sha1234567890',\n                'user': rdata['user'].copy(),\n                'repo': {\n                    'id': None,\n                    'node_id': 'NODER%s' % (org + repo),\n                    'full_name': org + '/' + repo,\n                    'url': 'https://api.github.com/repos/%s/%s' % (org, repo),\n                }\n            }\n\n        return rdata\n\n    def get_comment(self, org=None, repo=None, commentid=None):\n        for issue in self.issues:\n            if org and issue['org'] != org:\n                continue\n            if repo and issue['repo'] != repo:\n                continue\n\n            for comment in issue['comments']:\n                if comment['id'] == commentid:\n                    return comment.copy()\n\n    def get_commits(self, org=None, repo=None, number=None):\n        ix = self._get_issue_index(org=org, repo=repo, number=number)\n        issue = self.issues[ix]\n        return issue.get('commits', [])\n\n    def get_commit(self, org=None, repo=None, chash=None):\n        for issue in self.issues:\n            if org and issue['org'] != org:\n                continue\n            if repo and issue['repo'] != repo:\n                continue\n\n            if 'commits' not in issue:\n                continue\n\n            for commit in issue['commits']:\n                if commit['sha'] == chash:\n                    return commit.copy()\n\n        #import epdb; epdb.st()\n        return None\n\n    def get_git_commit(self, org=None, repo=None, chash=None):\n\n        # git commits have a slightly different schema from other commits\n        # https://api.github.com/repos/ansible/ansible/git/commits/7e22c7482e85cc98e14c4cdbc8b8ffb543917425\n\n        thiscommit = self.get_commit(org=org, repo=repo, chash=chash)\n        if thiscommit is None:\n            return None\n\n        for k,v in thiscommit['commit'].items():\n            if isinstance(v, dict):\n                thiscommit[k] = v.copy()\n            else:\n                thiscommit[k] = v\n        thiscommit.pop('commit', None)\n        thiscommit.pop('comments_url', None)\n\n        return thiscommit\n\n    def get_files(self, org=None, repo=None, number=None):\n        ix = self._get_issue_index(org=org, repo=repo, number=number)\n        issue = self.issues[ix]\n        return issue.get('files', [])\n\n    def get_file_conent(self, org=None, repo=None, filename=None):\n        if filename != 'travis.yml':\n            fdata = {\n                'name': os.path.basename(filename), \n                'path': filename,\n                'sha': 'sha0003030303',\n                'url': 'https://api.github.com/repos/%s/%s/contents/%s?ref=devel' % (org, repo, filename),\n                'type': 'file',\n                'content': '',\n                'encoding': 'base64',\n            }\n        else:\n            fdata = {\n                'message': 'Not Found',\n                'documentation_url': 'https://developer.github.com/v3/repos/contents/#get-contents'\n            }\n        return fdata\n\n\n    def set_issue_body(self, body, org=None, repo=None, number=None):\n        ix = self._get_issue_index(org=org, repo=repo, nunmber=number)\n        self.issues[ix]['body'] = body\n        self.save_cache()\n\n    def set_issue_title(self, title, org=None, repo=None, number=None):\n        ix = self._get_issue_index(org=org, repo=repo, number=number)\n        self.issues[ix]['title'] = title\n        self.save_cache()\n\n    def add_reaction(self, reaction, login=None, created_at=None, org=None, repo=None, number=None):\n        reaction = unquote(reaction)\n        ix = self._get_issue_index(org=org, repo=repo, number=number)\n        event = {\n            'content': reaction,\n            'created_at': created_at or get_timestamp(),\n            'id': self._get_new_event_id(),\n            'user': {\n                'login': login or 'ansibot',\n                'url': 'https://api.github.com/users/%s' % login or 'ansibot'\n            }\n        }\n        event['node_id'] = 'NODER%s' % event['id']\n        self.issues[ix]['reactions'].append(event)\n        self.issues[ix]['updated_at'] = event['created_at']\n\n    def add_issue_label(self, label, login=None, created_at=None, org=None, repo=None, number=None):\n        label = unquote(label)\n        ix = self._get_issue_index(org=org, repo=repo, number=number)\n        if label not in [x['name'] for x in self.issues[ix]['labels']]:\n\n            ldata = {\n                'name': label,\n                'url': 'https://api.github.com/repos/%s/%s/labels/%s' % (org, repo, label)\n            }\n\n            self.issues[ix]['labels'].append(ldata)\n            print('# added %s label to %s' % (label, self.issues[ix]['number']))\n\n            event = {}\n            event['id'] = self._get_new_event_id()\n            event['node_id'] = 'NODE' + str(event['id'])\n            event['url'] = 'https://api.github.com/repos/%s/%s/issues/events/%s' % (org, repo, event['id'])\n            event['event'] = 'labeled'\n            event['label'] = ldata\n            event['actor'] = {\n                'url': 'https://api.github.com/users/%s' % login or 'ansibot',\n                'html_url': 'https://github.com/%s' % login or 'ansibot',\n                'login': login or 'ansibot'\n            }\n            event['created_at'] = created_at or get_timestamp()\n            self.issues[ix]['events'].append(event)\n            self.issues[ix]['timeline'].append(event)\n            self.issues[ix]['updated_at'] = event['created_at']\n\n        self.save_cache()\n\n    def add_issue_comment(self, comment, login=None, created_at=None, org=None, repo=None, number=None):\n\n        # comments do not get added to events!!!\n\n        if login is None:\n            login = 'ansibot'\n\n        ix = self._get_issue_index(org=org, repo=repo, number=number)\n        thiscomment = {\n            'id': self._get_new_event_id(),\n            'body': comment,\n            'user': {\n                'url': 'https://api.github.com/users/%s' % login,\n                'html_url': 'https://github.com/%s' % login,\n                'login': login or 'ansibot'\n            },\n            'created_at': created_at or get_timestamp()\n        }\n        thiscomment['node_id'] = 'NODE' + str(thiscomment['id'])\n        thiscomment['url'] = 'https://api.github.com/repos/%s/%s/issues/comments/%s' % (org, repo, thiscomment['id'])\n        self.issues[ix]['comments'].append(thiscomment)\n        self.issues[ix]['updated_at'] = thiscomment['created_at']\n\n\n        tl = {\n            'author_association': 'MEMBER',\n            'actor': thiscomment['user'].copy(),\n            'user': thiscomment['user'].copy(),\n            'body': comment,\n            'created_at': thiscomment['created_at'],\n            'updated_at': thiscomment['created_at'],\n            'url': thiscomment['url'],\n            'id': thiscomment['id'],\n            'node_id': thiscomment['node_id'],\n            'issue_url': self.issues[ix]['url'],\n            'event': 'commented'\n        }\n        self.issues[ix]['timeline'].append(tl)\n\n        if self.debug:\n            print('comment added to issue %s' % self.issues[ix]['number'])\n\n        self.save_cache()\n\n\n    def remove_issue_label(self, label, login=None, created_at=None, org=None, repo=None, number=None):\n        label = unquote(label)\n        ix = self._get_issue_index(org=org, repo=repo, number=number)\n        if label in [x['name'] for x in self.issues[ix]['labels']]:\n\n            ldata = {\n                'name': label,\n                'url': 'https://api.github.com/repos/%s/%s/labels/%s' % (org, repo, label)\n            }\n\n            self.issues[ix]['labels'].remove(ldata)\n            print('# added %s label to %s' % (label, self.issues[ix]['number']))\n\n            event = {}\n            event['id'] = self._get_new_event_id()\n            event['node_id'] = 'NODE' + str(event['id'])\n            event['url'] = 'https://api.github.com/repos/%s/%s/issues/events/%s' % (org, repo, event['id'])\n            event['event'] = 'unlabeled'\n            event['label'] = ldata\n            event['actor'] = {'login': login or 'ansibot'}\n            event['created_at'] = created_at or get_timestamp()\n            self.issues[ix]['events'].append(event)\n            self.issues[ix]['timeline'].append(event)\n            self.issues[ix]['updated_at'] = event['created_at']\n\n            if self.debug:\n                print('removed %s label from issue %s' % (label, self.issues[ix]['number']))\n\n        self.save_cache()\n\n    def add_cross_reference(self, login=None, created_at=None, org=None, repo=None, number=None, reference=None):\n        assert isinstance(number, int)\n        assert isinstance(reference, int)\n        src_ix = self._get_issue_index(org=org, repo=repo, number=number)\n        dst_ix = self._get_issue_index(org=org, repo=repo, number=reference)\n\n        #src_issue = self.issues[src_ix]\n        dst_issue = self.issues[dst_ix]\n\n        #src_raw = self.get_raw_data(src_issue)\n        dst_raw = self.get_raw_data(dst_issue)\n\n        cr_event = {\n            'actor': dst_raw['user'],\n            'event': 'cross-referenced',\n            'created_at': get_timestamp(),\n            'updated_at': get_timestamp(),\n            'source': {\n                'type': 'issue',\n                'issue': dst_raw\n            }\n        }\n\n        #dst_issue\n        #import epdb; epdb.st()\n        self.issues[src_ix]['timeline'].append(cr_event)\n\n        self.save_cache()\n\n    def add_issue_file(\n                self,\n                filename,\n                org=None,\n                repo=None,\n                number=None,\n                patch='',\n                commit_hash=None,\n                additions=0,\n                changes=0,\n                deletions=0,\n                sha=None,\n                status=None,\n                created_at=None\n            ):\n\n        ix = self._get_issue_index(org=org, repo=repo, number=number)\n        if ix is None:\n            import epdb; epdb.st()\n        issue = self.issues[ix]\n\n        if commit_hash is None:\n            commit_hash = 'cHASH0001'\n        if sha is None:\n            sha = 'cSHA0001'\n        fdata = {\n            'additions': additions,\n            'deletions': deletions,\n            'changes': changes,\n            'filename': filename,\n            'patch': patch,\n            'status': status,\n            'sha': sha,\n            'blob_url': 'https://github.com/%s/%s/blob/%s/%s' % (issue['org'], issue['repo'], commit_hash, filename),\n            'raw_url': 'https://github.com/%s/%s/blob/%s/%s' % (issue['org'], issue['repo'], commit_hash, filename),\n            'contents_url': 'https://github.com/%s/%s/contents/%s?ref=%s' % (issue['org'], issue['repo'], filename, commit_hash),\n        }\n\n        self.issues[ix]['files'].append(fdata)\n\n    def _get_empty_stub(self):\n        stub = {\n            'itype': 'issue',\n            'node_id': None,\n            'id': None,\n            'state': 'open',\n            'number': None,\n            'user': {'login': None},\n            'created_by': {'login': None},\n            'created_at': None,\n            'updated_at': None,\n            'body': '',\n            'title': '',\n            'labels': [],\n            'assignees': [],\n            'comments': [],\n            'events': [],\n            'timeline': [],\n            'reactions': []\n        }\n        return stub.copy()\n\n    def add_issue(\n                self,\n                itype=None,\n                org='ansible',\n                repo='ansible',\n                number=None,\n                login=None,\n                title=None,\n                body=None,\n                created_at=None,\n                updated_at=None,\n                labels=None,\n                assignees=None,\n                commits=None,\n                files=None\n            ):\n\n        thisissue = self._get_empty_stub()\n        thisissue['id'] = self._get_new_issue_id()\n\n        if itype:\n            thisissue['itype'] = itype\n\n        if org:\n            thisissue['org'] = org\n        else:\n            thisissue['org'] = 'ansible'\n\n        if repo:\n            thisissue['repo'] = repo\n        else:\n            thisissue['repo'] = 'ansible'\n\n        if number is not None:\n            thisissue['number'] = number\n        else:\n            if len(self.issues) == 0:\n                thisissue['number'] = 1\n            else:\n                thisissue['number'] = [x for x in self.issues if x['org'] == thisissue['org'] and x['repo'] == thisissue['repo']][-1]['number'] + 1\n\n        thisissue['created_at'] = created_at or get_timestamp()\n        thisissue['updated_at'] = updated_at or get_timestamp()\n\n        if login:\n            thisissue['user']['login'] = login\n            thisissue['user']['url'] = 'https://api.github.com/users/%s' % login\n            thisissue['created_by']['login'] = login\n        else:\n            thisissue['user']['login'] = 'jimbob'\n            thisissue['user']['url'] = 'https://api.github.com/users/jimbob'\n            thisissue['created_by']['login'] = 'jimbob'\n\n        if assignees:\n            thisissue['assignees'] = assignees\n\n        if title:\n            thisissue['title'] = title\n\n        if body:\n            thisissue['body'] = body\n\n        if labels:\n            thisissue['labels'] = labels\n\n        if assignees:\n            thisissue['assignees'] = assignees\n\n        url = 'https://api.github.com/repos/%s/%s' % (org, repo)\n        if itype and itype.startswith('pull'):\n            url += '/pulls/'\n        else:\n            url += '/issues/'\n        url += str(thisissue['number'])\n        thisissue['url'] = url\n\n        thisissue['html_url'] = url.replace('api.github.com/repos', 'github.com')\n\n        if commits:\n            thisissue['commits'] = commits\n        elif itype and itype.startswith('pull'):\n            thisissue['commits'] = [\n                {\n                    'sha': 'd7e6a2eae2633a353e16f951a2c6a78c09db6953',\n                    'node_id': None,\n                    'commit': {\n                        'author': {\n                            'name': thisissue['user']['login'],\n                            'email': '%s@noreply.github.com' % thisissue['user']['login'],\n                            'date': thisissue['created_at'],\n                        },\n                        'committer': {\n                            'name': thisissue['user']['login'],\n                            'email': '%s@noreply.github.com' % thisissue['user']['login'],\n                            'date': thisissue['created_at'],\n                        },\n                        'message': 'test commit',\n                        'tree': {\n                            'sha': '25d360965b12b923aa7cc23c5db202ca25b17d9f',\n                            'url': 'https://api.github.com/repos/%s/%s/git/trees/25d360965b12b923aa7cc23c5db202ca25b17d9f' % (org, repo),\n                        },\n                        'url': 'https://api.github.com/repos/%s/%s/git/commits/d7e6a2eae2633a353e16f951a2c6a78c09db6953' % (org, repo),\n                        'comment_count': 0,\n                    },\n                    'url': 'https://api.github.com/repos/%s/%s/commits/d7e6a2eae2633a353e16f951a2c6a78c09db6953' % (org, repo),\n                    'html_url': 'https://github.com/%s/%s/commit/d7e6a2eae2633a353e16f951a2c6a78c09db6953' % (org, repo),\n                    'comments_url': 'https://api.github.com/repos/%s/%s/commits/d7e6a2eae2633a353e16f951a2c6a78c09db6953/comments' % (org, repo),\n                    'verification': {\n                        'verified': False,\n                        'reason': 'unsigned',\n                        'signature': None,\n                        'payload': None,\n                    },\n                    'author': thisissue['user'].copy(),\n                    'committer': thisissue['user'].copy(),\n                    'parents': [\n                        {\n                            'sha': '7e22c7482e85cc98e14c4cdbc8b8ffb543917425',\n                            'url': 'https://api.github.com/repos/%s/%s/commits/7e22c7482e85cc98e14c4cdbc8b8ffb543917425' % (org, repo),\n                            'html_url': 'https://github.com/%s/%s/commit/7e22c7482e85cc98e14c4cdbc8b8ffb543917425' % (org, repo),\n                        }\n                    ]\n                }\n            ]\n\n        if files:\n            thisissue['files'] = files\n        elif itype and itype.startswith('pull'):\n            thisissue['files'] = [\n                {\n                    'sha': '45b134231ef0f9c2a37c7896ea6f439d15982469',\n                    'filename': 'lib/ansible/modules/foo/bar.py',\n                    'status': 'added',\n                    'additions': 317,\n                    'deletions': 0,\n                    'changes': 317,\n                    'blob_url': 'https://github.com/%s/%s/blob/d7e6a2eae2633a353e16f951a2c6a78c09db6953/lib/ansible/modules/foo/bar.py' % (org, repo),\n                    'raw_url': 'https://github.com/%s/%s/blob/d7e6a2eae2633a353e16f951a2c6a78c09db6953/lib/ansible/modules/foo/bar.py' % (org, repo),\n                    'contents_url': 'https://api.github.com/repos/%s/%s/contents/lib/ansible/modules/foo/bar.py?ref=d7e6a2eae2633a353e16f951a2c6a78c09db6953' % (org, repo),\n                    'patch': ''\n                }\n            ]\n\n        self.issues.append(thisissue)\n\n        self.save_cache()\n\n\nclass MockRequests:\n\n    def __init__(self, issuedb):\n        self.issuedb = issuedb\n\n    def get(self, url, headers=None, data=None):\n        return MockRequestsResponse(url, inheaders=headers, indata=data, method='GET', issuedb=self.issuedb)\n\n    def post(self, url, headers=None, data=None):\n        return MockRequestsResponse(url, inheaders=headers, indata=data, method='POST', issuedb=self.issuedb)\n\n    def Session(self):\n        return MockRequestsSession(self.issuedb)\n\n\n\nclass MockRequestsSession:\n    def __init__(self, issuedb):\n        self.issuedb = issuedb\n\n    def get(self, url, allow_redirects=False, data=None, headers=None, timeout=None, verify=True):\n        return MockRequestsResponse(url, inheaders=headers, indata=data, session=self, issuedb=self.issuedb)\n\n    def post(self, url, allow_redirects=False, data=None, headers=None, timeout=None, verify=True):\n        return MockRequestsResponse(url, inheaders=headers, indata=data, method='POST', issuedb=self.issuedb)\n\n    def delete(self, url, allow_redirects=False, data=None, headers=None, timeout=None, verify=True):\n        return MockRequestsResponse(url, inheaders=headers, indata=data, method='DELETE', issuedb=self.issuedb)\n\n    def put(self, url, allow_redirects=False, data=None, headers=None, timeout=None, verify=True):\n        # data: {\"merge_method\": \"squash\"}\n        return MockRequestsResponse(url, inheaders=headers, indata=data, method='PUT', issuedb=self.issuedb)\n\n\nclass MockRequestsResponse:\n\n    def __init__(self, url, inheaders=None, indata=None, method='GET', issuedb=None, session=None):\n        self.issuedb = issuedb\n        self.session = session\n        self.method = method\n        self.url = url\n        self.inheaders = inheaders\n        self.indata = indata\n        self.rheaders, self.rdata = \\\n            self.issuedb.get_url(\n                self.url,\n                headers=self.inheaders,\n                data=indata,\n                method=method\n            )\n\n    @property\n    def ok(self):\n        return True\n\n    @property\n    def text(self):\n        try:\n            raw = json.dumps(self.json())\n        except Exception as e:\n            print(e)\n            import epdb; epdb.st()\n        return raw\n\n    @property\n    def headers(self):\n        return self.rheaders\n\n    @property\n    def status_code(self):\n        return 200\n\n    def json(self):\n        return self.rdata\n\n\nclass BotMockManager:\n\n    mocks = []\n    issuedb = None\n    cachedir = None\n    mr = None\n    mrs = None\n\n    def __init__(self):\n        #self.mocks = []\n        print('### STARTING MOCK MANAGER!!!')\n        self.issuedb = None\n        self.cachedir = None\n\n    def __enter__(self):\n\n        # make a cachedir\n        self.cachedir = tempfile.mkdtemp(prefix='ansibot.test.idem.')\n\n        # create the issuedb\n        self.issuedb = IssueDatabase(self.cachedir)\n\n        # force sqlite to use the cachedir\n        unc = 'sqlite:///' + self.cachedir + '/test.db'\n        unc_mock = patch('ansibullbot.utils.sqlite_utils.C.DEFAULT_DATABASE_UNC', unc)\n        self.mocks.append(unc_mock)\n\n        # pre-create\n        if not os.path.exists(self.cachedir):\n            os.makedirs(self.cachedir)\n\n        # cache a copy of ansible for all tests to use\n        if not os.path.exists('/tmp/ansible.checkout'):\n            p = subprocess.Popen('git clone https://github.com/ansible/ansible /tmp/ansible.checkout', shell=True)\n            p.communicate()\n\n        # copy the cached checkout to the cachedir for the bot to use\n        if os.path.exists('/tmp/ansible.checkout'):\n            p = subprocess.Popen(\n                'cp -Rp /tmp/ansible.checkout %s' % os.path.join(self.cachedir, 'ansible.checkout'),\n                shell=True\n            )\n            p.communicate()\n\n        # MOCK ALL THE THINGS!\n        self.mr = MockRequests(self.issuedb)\n        self.mrs = MockRequestsSession(self.issuedb)\n\n        self.mocks.append(patch('ansibullbot.utils.github.C.DEFAULT_RATELIMIT', False))\n        self.mocks.append(patch('ansibullbot.utils.github.C.DEFAULT_GITHUB_USERNAME', 'ansibot'))\n        self.mocks.append(patch('ansibullbot.utils.github.C.DEFAULT_GITHUB_TOKEN', 'abc1234'))\n        self.mocks.append(patch('github.Requester.requests', self.mr))\n        self.mocks.append(patch('ansibullbot.utils.github.requests', self.mr))\n        self.mocks.append(patch('ansibullbot.utils.gh_gql_client.requests', self.mr))\n        self.mocks.append(patch('ansibullbot.ghapiwrapper.requests', self.mr))\n\n        for _m in self.mocks:\n            _m.start()\n\n        return self\n\n    def __exit__(self, type, value, traceback):\n\n        for _m in self.mocks:\n            _m.stop()\n\n        if self.cachedir and os.path.exists(self.cachedir):\n            shutil.rmtree(self.cachedir)\n"
  },
  {
    "path": "tests/utils/helpers.py",
    "content": "from contextlib import contextmanager\nimport shutil\nimport tempfile\n\nfrom tests.utils.issue_mock import IssueMock\nfrom tests.utils.repo_mock import RepoMock\nfrom ansibullbot.issuewrapper import IssueWrapper\nfrom ansibullbot.historywrapper import HistoryWrapper\n\n@contextmanager\ndef get_issue(datafile, statusfile):\n    cachedir = tempfile.mkdtemp(prefix='ansibot_tests_')\n\n    try:\n        issue = IssueMock(datafile)\n        issue.html_url = issue.html_url.replace('issues', 'pull')\n        repo = RepoMock()\n        repo.repo_path = 'ansible/ansible'\n\n        iw = IssueWrapper(repo=repo, cachedir=cachedir, issue=issue)\n\n        # disable this completely\n        iw.load_update_fetch_files = lambda: []\n        # hook in here to avoid github api calls\n        iw._events = iw._parse_events(issue.events)\n        iw._commits = issue.commits\n\n        # pre-create history to avoid github api calls\n        history = HistoryWrapper(iw.events, iw.labels, iw.updated_at, cachedir=cachedir, usecache=False)\n        iw._history = history\n\n        if issue.commits:\n            iw._history.merge_commits(issue.commits)\n\n        yield iw\n\n    finally:\n        shutil.rmtree(cachedir)\n"
  },
  {
    "path": "tests/utils/issue_mock.py",
    "content": "from operator import attrgetter\nimport yaml\n\n\nclass ActorMock:\n    id = None\n    login = None\n\n\nclass CommitterMock:\n    def __init__(self, date=None, login=None):\n        self.date = date\n        self.login = login\n\n\nclass CommitBottomMock:\n    def __init__(self, committer_date=None, committer_login=None, message=\"\"):\n        self.committer = CommitterMock(date=committer_date, login=committer_login)\n        self.message = message\n\n\nclass CommitMock:\n    def __init__(self, **kwargs):\n        self.commit = CommitBottomMock(**kwargs)\n        self.committer = self.commit.committer\n        self.sha = None\n        self.files = None\n\n\nclass CommitFileMock:\n    def __init__(self, filename=\"\", status=\"\", patch=\"\", src_filepath=\"\"):\n        self.filename = filename\n        self.status = status\n        self.patch = patch\n        self.src_filepath = src_filepath\n\n    @property\n    def raw_data(self):\n        return self\n\n    @property\n    def file_content(self):\n        with open(self.src_filepath) as content:\n            return content.read()\n\n\nclass LabelMock:\n    name = None\n\n\nclass RequesterMock:\n    rdata = \"{}\"\n\n    def requestJson(self, method, url, headers=None):\n        return (200, \"foo\", self.rdata)\n\n\nclass IssueMock:\n    \"\"\"Mocks a pygithub object with data from a yaml file\"\"\"\n\n    def __init__(self, datafile):\n        self.calls = []\n        self.ydata = None\n        self.load_data(datafile)\n\n    @property\n    def commits(self):\n        for x in self.events:\n            if not x['event'] == 'committed':\n                continue\n            commit = CommitMock(\n                committer_date=x['created_at'],\n                committer_login=x['actor']['login']\n            )\n            for file in x.get('files', []):\n                cfile = CommitFileMock(\n                    filename=file['filename'],\n                    status=file['status'],\n                    patch=file['patch'],\n                    src_filepath=file['src_filepath']\n                )\n                if isinstance(commit, list):\n                    commit.files.append(cfile)\n                else:\n                    commit.files = [cfile]\n\n            self._commits.append(commit)\n        return self._commits\n\n    @property\n    def comments(self):\n        return self.get_events()\n\n    @property\n    def labels(self):\n        for ev in self.events:\n            if ev['event'] == 'labeled' or ev['event'] == 'unlabeled':\n                label = LabelMock()\n                label.name = ev['label']['name']\n                if ev['event'] == 'labeled':\n                    current = [x.name for x in self._labels if x.name == label.name]\n                    if not current:\n                        self._labels.append(label)\n                #elif ev['event'] == 'unlabeled':\n                #    current = [x.name for x in self.labels if x.name == label.name]\n                #    if current:\n                #        for idx, x in enumerate(self.labels):\n                #            if x.name == label.name:\n                #                del self._labels[idx]\n                #                break\n        return self._labels\n\n    def load_data(self, datafile):\n        fdata = None\n        with open(datafile, 'rb') as f:\n            fdata = f.read()\n        if fdata:\n            self.ydata = yaml.safe_load(fdata)\n        else:\n            self.ydata = {}\n\n        self.assignee = None\n        self.body = self.ydata.get('body', '')\n        self.closed_at = None\n        self.closed_by = None\n        self.comments_url = None\n        self.created_at = self.ydata.get('created_at')\n        self.events = self.ydata.get('events', [])\n        self._commits = []\n        self.events_url = None\n        self.files = None\n        self.html_url = self.ydata.get(\n            'html_url',\n            'https://github.com/ansible/ansible-modules-core/issues/1'\n        )\n        self.id = int(self.ydata.get('number', 1))\n        self._labels = []\n        self.labels_url = None\n        self.milestone = None\n        self.number = int(self.ydata.get('number', 1))\n        self.pull_request = None\n        self.repository = None\n        self.reactions = []\n        self.state = self.ydata.get('state', 'open')\n        self.title = self.ydata.get('title', '')\n        self.updated_at = None\n        self.url = 'https://api.github.com/repos/ansible/ansible/issues/%s' % self.id\n        self.user = ActorMock()\n        self.user.login = self.ydata.get('submitter', \"nobody\")\n        self._identity = self.number\n\n        # need to mock this for reactions fetching\n        self._requester = RequesterMock()\n\n    def add_to_labels(self, *labels):\n        self.calls.append(('add_to_labels', labels))\n\n    def create_comment(self, body):\n        self.calls.append(('create_comment', body))\n\n    def edit(self, title=None, body=None, assignee=None, state=None, milestone=None, labels=None):\n        self.calls.append(('edit', title, body, assignee, state, milestone, labels))\n\n    def get_events(self):\n        self.calls.append('get_events')\n        return self.events\n\n    def get_labels(self):\n        self.calls.append('get_labels')\n\n    def get_pullrequest(self):\n        self.calls.append('get_pullrequest')\n\n    def remove_from_labels(self, label):\n        self.calls.append(('remove_from_labels', label))\n\n    def set_labels(self, *labels):\n        self.calls.append(('set_labels', labels))\n\n    def is_pullrequest(self):\n        return 'pull' in self.html_url\n\n    @property\n    def pr_files(self):\n        # simulate getting PR files from the tip of the HEAD\n        files = []\n        sorted_commits = sorted(\n            self.commits,\n            key=attrgetter('commit.committer.date'),\n            reverse=True\n        )\n        for commit in sorted_commits:\n            for file in commit.files:\n                if file.filename not in [f.filename for f in files]:\n                    files.append(file)\n\n        return files\n"
  },
  {
    "path": "tests/utils/repo_mock.py",
    "content": "from collections import namedtuple\n\n\nclass SubRepo:\n    def __init__(self, assignees=None):\n        self.assignees = assignees or []\n\n    def has_in_assignees(self, user):\n        return user in self.assignees\n\n\nclass RepoMock:\n    issues = {}\n\n    def __init__(self, assignees=None):\n        self.repo = SubRepo(assignees)\n\n    def get_issue(self, issueid):\n        return self.issues.get(issueid, None)\n\n    def get_pullrequest(self, issueid):\n        return namedtuple('PullRequest', ['draft'])(draft=False)\n\n    def get_issues(self):\n        return [issues[x] for x in issues.keys()]\n\n    def has_in_assignees(self, login):\n        return True\n"
  },
  {
    "path": "tox.ini",
    "content": "[tox]\nminversion = 3.6.0\nenvlist = python\nskipdist = True\nskip_missing_interpreters = True\n\n[testenv]\nusedevelop = False\nskip_install = True\npassenv = *\nsetenv =\n    PYTHONDONTWRITEBYTECODE=1\ndeps =\n    -r test-requirements.txt\ncommands =\n    pytest {posargs}\n\n[testenv:report-coverage]\ndeps =\n    codecov\ncommands =\n    codecov --token=272fc7a8-bd55-4e0c-af2f-7d475d0f3c0a -r ansible/ansibullbot -f ci_output/codecoverage/pytest-cov.xml -X gcov\n"
  },
  {
    "path": "triage_ansible.py",
    "content": "#!/usr/bin/env python\n#\n# This file is part of Ansible\n#\n# Ansible is free software: you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# Ansible is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with Ansible. If not, see <http://www.gnu.org/licenses/>.\n\nfrom __future__ import print_function\n\nimport logging\nimport sys\n\nfrom ansibullbot.ansibletriager import AnsibleTriager\nfrom ansibullbot.utils.sentry import initialize_sentry\n\n\ndef handle_exception(exc_type, exc_value, exc_traceback):\n    if issubclass(exc_type, KeyboardInterrupt):\n        sys.__excepthook__(exc_type, exc_value, exc_traceback)\n        return\n    logging.error(\"Uncaught exception\", exc_info=(exc_type, exc_value, exc_traceback))\n\n\nsys.excepthook = handle_exception\n\n\ndef main():\n    initialize_sentry()\n\n    # Run the triager ...\n    AnsibleTriager(args=sys.argv[1:]).start()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "triage_ansible_mp.py",
    "content": "#!/usr/bin/env python\n#\n# This file is part of Ansible\n#\n# Ansible is free software: you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# Ansible is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with Ansible. If not, see <http://www.gnu.org/licenses/>.\n\nfrom __future__ import print_function\n\nimport datetime\nimport json\nimport os\nimport sys\nimport tempfile\n\nfrom itertools import zip_longest\nfrom multiprocessing import Process\n\nfrom logzero import logger\nfrom ansibullbot.ansibletriager import AnsibleTriager\n\n\ndef run_triage_worker(numbers):\n    thispid = os.getpid()\n    logger.info('%s started with %s numbers' % (str(thispid), len(numbers)))\n    tfh,tfn = tempfile.mkstemp(suffix='.json')\n    #logger.info('%s %s' % (thispid, tfh))\n    logger.info('%s %s' % (thispid, tfn))\n\n    with open(tfn, 'w') as f:\n        f.write(json.dumps(numbers))\n\n    args = sys.argv[1:]\n    args.append('--id=%s' % tfn)\n    logger.info(args)\n\n    triager = AnsibleTriager(args=args, update_checkouts=False)\n    triager.run()\n\n    os.remove(tfn)\n    return (tfn)\n\n\ndef grouper(n, iterable, padvalue=None):\n    return zip_longest(*[iter(iterable)]*n, fillvalue=padvalue)\n\n\ndef main():\n\n    workercount = 8\n\n    ts1 = datetime.datetime.now()\n\n    # Run the triager ...\n    #AnsibleTriage(args=sys.argv[1:]).start()\n\n    # init just creates all the tools ...\n    parent = AnsibleTriager(args=sys.argv[1:])\n\n    # collect_repos() gets all the issues to be triaged ...\n    parent.collect_repos()\n\n    # get the issue numbers\n    numbers = parent.repos['ansible/ansible']['issues'].numbers[:]\n\n    # make a range of numbers for each worker\n    chunks = grouper(int(len(numbers) / (workercount - 1)), numbers)\n    chunks = list(chunks)\n\n    # start each worker with it's numbers\n    pids = []\n    for chunk in chunks:\n        p = Process(target=run_triage_worker, args=(chunk,))\n        pids.append(p)\n    [x.start() for x in pids]\n    [x.join() for x in pids]\n\n    ts2 = datetime.datetime.now()\n    td = (ts2 - ts1).total_seconds()\n    logger.info('COMPLETED MP TRIAGE IN %s SECONDS' % td)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  }
]